From 3db83c5559a08092206ed43226441057f2e65c79 Mon Sep 17 00:00:00 2001 From: ShineShao Date: Thu, 1 Aug 2024 09:01:59 +0800 Subject: [PATCH 01/20] ci: add action --- .github/ISSUE_TEMPLATE/bug_report.md | 46 ++++++++++++++++++++++++++++ .github/workflows/build-demos.yml | 37 ++++++++++++++++++++++ .github/workflows/install.yml | 32 +++++++++++++++++++ .github/workflows/relese.yml | 43 ++++++++++++++++++++++++++ 4 files changed, 158 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/workflows/build-demos.yml create mode 100644 .github/workflows/install.yml create mode 100644 .github/workflows/relese.yml diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..dc8a447 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,46 @@ +--- +name: Bug report +about: 创建报告以帮助我们改进( Create a report to help us improve) +title: '' +labels: '' +assignees: '' +--- + +**bug 描述(Describe the bug)** + +对bug是什么的清晰简洁的描述。 (A clear and concise description of what the bug is.) + +**复现(To Reproduce)** + +再现步骤(Steps to reproduce the behavior): + +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**预期行为(Expected behavior)** + +对你期望发生的事情的清晰简洁的描述。 (A clear and concise description of what you expected to happen.) + +**截图(Screenshots)** + +如果适用,请添加屏幕截图以帮助解释您的问题。 (If applicable, add screenshots to help explain your problem.) + +**PC 请填写以下信息 (please complete the following information):** + +- OS: [e.g. iOS] +- Browser [e.g. chrome, safari] +- Version [e.g. 22] + +**mobile 请填写以下信息 (please complete the following information):** + +- Device: [e.g. iPhone6] +- OS: [e.g. iOS8.1] +- Browser [e.g. stock browser, safari] +- Version [e.g. 22] + +**附加上下文(Additional context)** + +在此处添加有关该问题的任何其他上下文。 (Add any other context about the problem here.) + diff --git a/.github/workflows/build-demos.yml b/.github/workflows/build-demos.yml new file mode 100644 index 0000000..70cc03c --- /dev/null +++ b/.github/workflows/build-demos.yml @@ -0,0 +1,37 @@ +name: build-demos + +on: + push: + branches: ["master", "develop"] + pull_request: + branches: ["master"] + +jobs: + build: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [16.x, 18.x, 20.x, 21.x, 22.x] + + steps: + - uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + - uses: pnpm/action-setup@v3 + with: + version: 8 + + - name: Build react-demo + working-directory: ./examples/react-app + run: | + pnpm install + pnpm run build + + - name: Build vue-demo + working-directory: ./examples/vue-app + run: | + pnpm install + pnpm run build diff --git a/.github/workflows/install.yml b/.github/workflows/install.yml new file mode 100644 index 0000000..cfa4b4d --- /dev/null +++ b/.github/workflows/install.yml @@ -0,0 +1,32 @@ +# 整个流程的名字 +name: install dependencies +# 触发时机,在 tag 被 push 操作触发 +on: + push: + branches: ["master", "develop"] + pull_request: + branches: ["master"] + +# 任务,定义个changelog 的任务 +jobs: + changelog: + name: install dependencies + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + # 设置 Node + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 18 + cache: npm + registry-url: https://registry.npmjs.org + # 安装依赖 + - uses: pnpm/action-setup@v3 + with: + version: 8 + + - name: Install dependencies + run: pnpm install + diff --git a/.github/workflows/relese.yml b/.github/workflows/relese.yml new file mode 100644 index 0000000..0b79d5f --- /dev/null +++ b/.github/workflows/relese.yml @@ -0,0 +1,43 @@ +# 整个流程的名字 +name: Release +# 触发时机,在 tag 被 push 操作触发 +on: + push: + tags: + - "v*" +# 任务,定义个changelog 的任务 +jobs: + changelog: + name: Release + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + # # 设置 pnpm + # - name: Setup PNPM + # uses: pnpm/action-setup@v2 + # with: + # version: 8 + # 设置 Node + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 18 + cache: npm + registry-url: https://registry.npmjs.org + # 安装依赖 + - uses: pnpm/action-setup@v3 + with: + version: 8 + + - name: Install dependencies + run: pnpm install + # # 打包 + # - name: Build Packages + # run: pnpm run build + # 发布npm 发布前执行了prepublishOnly + - name: Publish npm + run: npm publish + env: + # 这里需要几个 Token 变量 + # NPM_TOKEN 需要在 npm 网站生成 + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} From 35761b2fa296d38e1681a344acb18456dd33bda8 Mon Sep 17 00:00:00 2001 From: ShineShao Date: Thu, 1 Aug 2024 09:03:30 +0800 Subject: [PATCH 02/20] ci: update branch --- .github/workflows/build-demos.yml | 4 ++-- .github/workflows/install.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-demos.yml b/.github/workflows/build-demos.yml index 70cc03c..4b00605 100644 --- a/.github/workflows/build-demos.yml +++ b/.github/workflows/build-demos.yml @@ -2,9 +2,9 @@ name: build-demos on: push: - branches: ["master", "develop"] + branches: ["main", "develop"] pull_request: - branches: ["master"] + branches: ["main"] jobs: build: diff --git a/.github/workflows/install.yml b/.github/workflows/install.yml index cfa4b4d..adc2fa6 100644 --- a/.github/workflows/install.yml +++ b/.github/workflows/install.yml @@ -3,9 +3,9 @@ name: install dependencies # 触发时机,在 tag 被 push 操作触发 on: push: - branches: ["master", "develop"] + branches: ["main", "develop"] pull_request: - branches: ["master"] + branches: ["main"] # 任务,定义个changelog 的任务 jobs: From 145c91853c0b9b91bed309027305ece0f0caa2e9 Mon Sep 17 00:00:00 2001 From: ShineShao Date: Thu, 1 Aug 2024 09:05:52 +0800 Subject: [PATCH 03/20] chore: update dist ignore --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index fee95f6..3258ab8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ node_modules/ -dist/ +examples/**/dist/ build/ .cache # misc From b9ded4af6bfc6d210394d903a2023e72128f9d1a Mon Sep 17 00:00:00 2001 From: ShineShao Date: Thu, 1 Aug 2024 09:06:35 +0800 Subject: [PATCH 04/20] feat:hls init and version 0.1.0-beta.1 --- CHANGELOG.md | 3 + LICENSE | 33 +++ README.md | 51 ++++- dist/decoder.wasm | Bin 0 -> 1533219 bytes dist/decoder.worker.js | 8 + dist/index.esm.js | 8 + dist/index.js | 8 + dist/index.umd.js | 60 +++++ dist/types/index.d.ts | 509 +++++++++++++++++++++++++++++++++++++++++ package.json | 46 ++++ 10 files changed, 725 insertions(+), 1 deletion(-) create mode 100644 CHANGELOG.md create mode 100644 LICENSE create mode 100644 dist/decoder.wasm create mode 100644 dist/decoder.worker.js create mode 100644 dist/index.esm.js create mode 100644 dist/index.js create mode 100644 dist/index.umd.js create mode 100644 dist/types/index.d.ts create mode 100644 package.json diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..4b8b2d3 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,3 @@ +## v0.1.0 + +- 支持hls h264/h265直播播放 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a9407ef --- /dev/null +++ b/LICENSE @@ -0,0 +1,33 @@ + + +https://github.com/numberwolf/h265web.js/blob/master/LICENSE-Free_CN.MD + + +Copyright (c) 2017 Dailymotion (http://www.dailymotion.com) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +src/remux/mp4-generator.js and src/demux/exp-golomb.ts implementation in this project +are derived from the HLS library for video.js (https://github.com/videojs/videojs-contrib-hls) + +That work is also covered by the Apache 2 License, following copyright: +Copyright (c) 2013-2015 Brightcove + + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/README.md b/README.md index b29d28a..4a4ab9a 100644 --- a/README.md +++ b/README.md @@ -1 +1,50 @@ -# EZUIKit-hls \ No newline at end of file +## @ezuikit/player-hls + +## 安装 + +```bash +# npm +npm install @ezuikit/player-hls + +# yarn +npm add @ezuikit/player-hls + +# pnpm +pnpm add @ezuikit/player-hls +``` + +### 支持 script 引入 + +```html + + +``` + +## 使用 + +```ts +// 推荐 +import HLSPlayer from '@ezuikit/player-hls'; + +// 默认自动播放 +const player = new HLSPlayer({ + id: 'app', + url: 'https://open.ys7.com/v3/openlive/E71992743_1_1.m3u8', + staticPath: "/" // decoder静态资源文件夹 +}); + +// 不会立即生效 +// 1. 需要等待静态资源加载完成(js, wasm) +// 2. 需要视频返回并且有视频帧 +player.play(); // + +// 暂停 +player.pause(); +``` + + +注意: 暂不提供CDN地址,decoder静态资源需要放置在自己的服务器下(node_modules/@ezuikit/player-hls/dist 下 decoder.wasm 和 decoder.worker.js 文件, 这两个文件需要在同一个文件夹下) + +注意: 暂不提供CDN地址,decoder静态资源需要放置在自己的服务器下(node_modules/@ezuikit/player-hls/dist 下 decoder.wasm 和 decoder.worker.js 文件, 这两个文件需要在同一个文件夹下) + +注意: 暂不提供CDN地址,decoder静态资源需要放置在自己的服务器下(node_modules/@ezuikit/player-hls/dist 下 decoder.wasm 和 decoder.worker.js 文件, 这两个文件需要在同一个文件夹下) diff --git a/dist/decoder.wasm b/dist/decoder.wasm new file mode 100644 index 0000000000000000000000000000000000000000..5c0c2fa1cbf025dafadc4d515ea8077c6fd0c661 GIT binary patch literal 1533219 zcmd?SdB7Cao$p<1cUMxWoYA?-EcXS2{_<9-?b_woMp>C>I@A>TR%_TcHfV9Gdgr@Pa~m+h6k?^0T9 z7dYdoO@&gYf@9jGB49UV|0XBvTjNeV;EprCI^fFGbe!=HwcKg$v<`?| z`qK}b?jESt4=}wQ$j4a^6EzG32kOZK+ylmY)AT$eI}q?y3Lbbs&>d*Xrc)`He&B($ z=1`ML8W){RH{-RB9XJpz+(|Y7mV!1?1d|X=n+9zMXvobCD%%TZ0MdBe6=dG@X$G)q zJR?*C%rt%XqnF$MG*bjp4ge|B)EG|!zc~Uo&>MQ{L_=kaAjAxhhYVRXR6$3f9AdaDysdV6YUp)$=qKQAGn6rK zS`rBbPP+k9LPNq3-_yi5)A$&G!4wGL&H?&nzyRhQAi|5L0OScAZ<$~7C+@R~Bb|8Af9$^Bp5yl0XZK(2_se~!j{DV=iTm$4@jw2e^ou>l zP1tMS{U$o$@2OFw#*~S>@8MK`PX#scA5-?6I?<`B^Jv`eKi_xC)N#H0IZa)6kDIvn zeiNqb`KzfD_ZheM#Jwl{>bJV*=w5Tctvz<1I&s`S`~HVBRClt0PyLUHQ*~$Dp8Jj4 zd*6Nbox1Nndrok=RIM?ffp#rt=JS z_b>L?Z|d$-ZCipTU61*Fe>HKR-KScd3>pCDl!@wp+%G5Y{;NNT^Zh1Hoa7|_O@nS2 z)C|Kg+9-^Zm}3}jlKMrbxKT0wlW&J1MPXPhZdQzAO3;E{97oA_If)!U^8Gk=!)h32 zn^pZN3VZ&>NgQuT@!Mhar%}}9Cu%PYecFxOBq|2&zbKBYMLvqY45_!^QuRYGttRQ9G(n)E&~c2IM&Vbf9Y@s&!Q>E^KtZMIP=mU@6M2E}7c0P1 zt;P(=kjw??pjk*%OXiA#|4XIn(hwE=ee-#Lg@Grk`iDP;b=qIz-9P$q<;@u?nx}N} zUvJ}U55pz{KeRRQQe*u}LCI5(|6hI}Gr0Fk4r~j*+y5Rq$#pzO_spkr)CG0*?Kpvs z?N6uX1{K>E1Ii>*?I8|mz%Mplxj8C4T1(A*@-$IDH|CVTVxBkT>t3*ohSdd zyZnX+OM(3}+IOJh(0PBMRj9iDfi!-xS!@pcfGH3-@bg2ScAagdnv?b??410bV=OYY zX@#vQ#^E4zdn_2-;j&Z3VhbYm_e*W)9ELx_GR00@D8zVlSS0>%wWJXvTtb;I>=eeU z82Tf&t5%EAUtn^I&K90Gcrg0H{mZ|MV;McV#?2f8B#y?5%`5fwCm+<|7pN>j4-D<0!apsH!rf>aAR~-Lq==cF%ZTF_#n8_&mt3UC=@K68kJ3Ud{ zJ*qoNozVMtHyVxo&O*#_5W2r|9LD`nX(yUx+L$5i{*Q&csm@rtUjsKc`mMo1kjn3C_aq;1^RSPIPYRZcLf@Kla>j z>clBOrS2|!?f%<|Q=GTDEBj5H`h$JSSvB@sGPnbj)^Rl`4Z#(~B=ZX6`uXh)?!-ccT7VomFir=)wyX@+`VTyOP#jlxS zE}U0wi?;YBQ@jhsFWTDM?x03qv9-6|!CBe8@wjn&?z6|9QzlNBI_?+0-eMB#Jveer;Y<> z&fVSJ17anDs|l0nX3we4((aAFc7t(_Gi12u_uTyX?gX~?b`So>CnxT+hjSmp_}Wb( zG^jn%xxae@FfA~a{tt9-`nAUd&4gc1nKE&osm_Dll|6pD&kq!V_wL!dr?X^GwR63v zKE2MJgOW~3uPL}|P&DH^u9Lg*WA#RJ-+j9V587npUypjWYsjYG`r9A<_imR z_eS?7_hxsYdy9LkyU1Pa-sax!-r+8B?{x2S?{=5E_qg}E_qq4G54aDy54p?Shuufq zN8QKV$K5B~C*7yqr`>1VXWixQbMEu*3+@W{MfWB5Wp}0fiuDN}cRz4HbU$)Gc0X}Hbw6`IcfWAgx?j5M+&=Fh?_lo`Z-#fMcbIp$ zH`6=9JJLJKo8=wt9pfGA&GwG-j`vRRPV`RlPWDdm=6I)ir+KG)XLx6NXL)CPbG>uC zbG`Gt^Suka3%!fHi@i&{OTEjydER{Qa_X;z?*(s#_oDZb_p-Ord&PUzd(B(rz3#o?z3Hv?-tyk|-tpFW z?|L72A9^2oAA6s8pL(BppL<_;YrQYMbzYx;kbkg$h(E(W)IZEW+@I+m;UDQA<bD{ki@*{<;2n{`vj|{)PTU z{>A&7yGyQ zxBGYaOZ+?iyZpQTrT#tsz5adv{r&^~gZ@MQGXG)zKjJ^i_hbI!{uBO_{!{+b{xklw z{&N30|9Srfe}(^||C0Z*ztVrjf7O4@U**5ulC>a-}c|}*ZA-H@A>chANU{o zANe2qpZK5ppZTBrU-)bNFa33XUvN-xaBxU4BRDiTEI2%v85|KD9UK!J8_W)l3yu#? z3r-Kt2+j=73eFDZ2ImCl21f-)2ImFm2Nwhv2A2i%g89Ma!4<)R;L6~t;OgL-;M(B2 z;QHW(;Ktyl;O1aqa7%D&uqap@+!ov(+z~7Z?hNhOOPYurwF93&QKdh2ibtRpB+^4dG4Ut>NNuNqARyWq5sfOL#|kb$D%fV|a78D7-Da zGrT)o8a^047CsZ+8{Qu-3m*xe2%idGIMQ zr3DAKSOr5j2&mToHDTv}MVrF3g)QE74M zHq*{o(V5Zhr8`PXN_Up-;&?aTOKIo)=z{3H=-lX>Xl`_NbWiEt(tV}-OAnMDEIm|O zR(iPfNa@kiW2MJSPn4cC?OYUH7(G>by7Wxx+0t^3&++|y>C4h*rO!*BmOd$cT>7Z= zVd;g^iqeavmr5^}R+e5Vy;^#$w5s%a>5bBxrPZakO6y8}(c01%rMFA(l-88qExpI_ zeZD^^ebT%*x+J4m(jYYuY6GX;PN5m8RbLEhm{X6 z&nzENKC*mNc~<%8@-gLO%d^YJm5(o|Q{8;(%@)HAkezM*3Q{|`2&uq~1v)|bB^73=#=l@90FO*l5Uo5{gpy!v% zE6cBxUoF2jpyyTXo?kD&QGRoSo>zZk&u^9AF2D0fdR|k0xBOoD{Q*6HQ2wy|QTgNY zCj)x^wB7S(<@q4~-9t507WYN5n_QN5!+^qvK=ZW8>NJ zaq;o-3Gs>XN%6_?De;{6)cCac^!SYU%=oPM?09Z`PJC{BUVMIhL409+QG9WHNqlL1 zSv)VEA736{5if|ZjIWBXj<1QYjjxNZk8g-?jBko>ju*za#J9$a;>Gc8@$K;)@sjw? z_^$Zwcxil3d~bYTe1H5v{9yc0yexh=ek6W0ek^`GejL+wnW`krn$lt8!v8t2(20Y~|$SnCfA* z*_Bh0W2=YPj;qW`W>;s{POO}k9A7=Mc2ec^)`wNol*CMQ*ouFa{Om7H8Xrgm!O z?BtZ{v9;4GbCWsM*|pOv=Om|AkE@+gIX5}2dVKB7%6ZA@)e~xGRnAY&sGe9myK+Ht zX7!}n+=~4>r*dI(R`ulC`IU>4xz#zf3o4f+=TuLvU0As^Ik$RR?UKs8#lFa!oR? zdVcMy%C*V->IJo{E7v8LS1+txQ@K95qIyy7+KT!2}Rn<#tH&t#< zuC88IyScJ3xu!a=c1z{fSEJ+qtucUFidDt9M~s@K=eAXX zm8X-3tM}BNtvr)FQoXmfyz*@FX!X9@a~1pdLS=dKSoQweiGr@ zL9)8Kvi5o9!{n{%E442wA0=;BU#+dJe4M;feXaIo<&$JhbyaO$<g%<>KnC#lFyU(t8dm0PQFM!sIIOZlGwi)$=c+@>RYwLk}s2ws&Cg0Pu3+LSKq14O!}&y zRM*swNDiugT79>6WO8uzv+8@bqmo0apI6_n%}Qoezo>ptJ32YEy0-dZ?U>}S>X+4z zYR4vrSJzcPuFXznR{Lt7)Q(Gzs2)`Nw03-QWcA?MXSEZOqpFA0KCgXITU$FZy*Irt zy)9jm-k#o_KAAq1KAk?3KASF2pG%)lUr1M^FQzZ0FQ+ThSJGG0*V0w#>**Wmo9XKG zt@Q2mopeq5Zu(yOe)>WBVfs<}ar#O6Y5H0EdHO}VHvKYPm-f{UsvlfGq&}m5X#KGI z;q{sIBkD)ikE+kAA6-ADer$bq{kZz^^%LqR)=#RRTtB5gr+#YvwEF4w7t=H9XV%ZE zpIx6@Kc{|f{k;15^$Y43)-S4GT)(7#Y5lVLy!!n5<@GD-3+h+auc}{Nzovd|{kr<~ z^&9Fp)^DocTwhqfrG9IDQGId!w)*Y$JL*g7ch>K!-(6o?zo&k0{l5DB^#|$?)*q@b zt3O(A7mtuL=XSAV|#LVZR3#rjM2m+LF*uhd_yzgAyW zf4%-j{muI7`djt4>+jUp)ZeXtnZ8$lzy3k}!}>?{kL#b*KdpaO|GfT1eQo{A`nq~w zIH7T3I_G8kaV{OfPH9Ys_z4-ngQ% zpmAm6s>aogYZ})!u4`Q1xS?@lBU*rD91C0k84>guG z9&S9+c(k#i@mk}t#*2+rjmH}=HC}H#(RjJ>M&n8I_f$iFPn*AI8v1+I{4H;+Y`occ zuJKA^b>sQQtBtoBFPOixn`bu9YOZO#+xVdIQRCyrCyh@VpEW*je9>6j__DFC(bqhv zd2sWP=8Wc{&BL2Bn@2Q{Y#!B|)jYa+O!L_0?B;RJy;^&2X3QG$QHXmv(Yd+k3r1?bi$>vkd zr<>0-pKCtfe4)9b`C{{>=F82M%~zVQHeYM5YQEllqxoiYb@QF(n&!LB_nPlFKWKi~ z{HXbH^U$uDU59s_*>zUerCrx|-OzPo*G*kFcP;F?rR&zNMO}-#ZtHrw>$$FT2OTx& z+Cg&%9X#mjL0@)%(fwKXg6?a&*LEM;J*WGe?vuJN=)SOfdG~YO&v(Dj{Z99q?svPN z?%wyw?kBpR>VCZY)_+%V{D*Y&5HT;Wik!(Gl$?>kPO zPHH(r9dAtL_ROvPcI z)ABmCdviw>z06I^+a_*oYM8Q^=F{GxPW}{)=kC^ylP}jX3vQ2kT#ds(17tJ$+i^2D^VCEhOlr5{0t{uH zX8btwdMU3fl}YGz)=_i~Qz?o_X$f zW~5P8%7S|Aw8DJij}k{CGXRt(vqXayxDNB*ZAS-Te)Eg3u03G8gy!vORvgk3R)RPy zaJ!JZlX?muHmopwXLEnpE{SWIwE+Jtg=>a8B2!xI3C*Qtr+dV;A&jN23uas@qHgZ~ zh}xwJ{$b2^p!8h*ibC=h5ck z8Gm=+G;YPa@Lahk2Ewdt#-GL0eww)X1n?Z@&i08%n-(GAP=-9#5olpf19ah!$v5pO z2-_l7NI$JozV3uKm-{>En(kZWvCgiXmv3ATcUHRIT=dQO^ZdNIJ(aZ7llb5)OU}tE z6Cfw_DDagPCbbIrLF0cCOt-jH3FyqHhneng4_gbzh)zD_M+k^OHlu`|rj4;qM%j>_ zIQOywDDZY3!jS^L#BN0fM}_$BT+gs^hmX9;ZRYE01;F8D!Hz>1gkf#2tn3X=HL%J#l=M z3w=7Z>1mj^z{Suon4N~S7@!b_YLwddcm$H65~$zCA%_Jnti(MY`AKKInL8uJp@eNuOOqxTrX zFmI;Y@&z1RBWQFYByKL0`t>0WaH>p}1Etts%?AoNId^_+!5`&qZ)&0vq1dz*tg|`f z`l-1ah;pWx*)AG1cmF{>T6$6ZHA^)zFxrT%Dpm^aNRN>1j&S{?ObEN@oWSy&Z#=C-szL4@YY@FB-as{}1e zuw%(Eg_{Kj^!OUGYK?D2?cpXK&^Z5+xYFpH?JAZj_E4&N!ZNCW!A%NrXXgF0p{A}g z|02Y*QVC&VwK?3`4Rda|oX2`(1xy2`r2@K>XDRY%!1Ur|9SB-p!gP2Wuo2XE4Q5+` zSjU4F#vs?wYw4c=q!Y)s1Y~-`l)6cIC^%p}M4f*Ag(ix*`|Eiv3{mDE@Kc6M^-R6& zlF-1md{NK^m81;#zw3|#tPY3dEd#2|J&#H4NT0#W!)&iX3*9CS#Q{bHJXr@zE3`zr zCo|}=W8{ZehGJCxZ8KIC|H|H>Idb9YqBYJ;p8tJ@`?^hM=^>6~@AK zJh$KUJFs|nVsTp8QHp9nSC!1ify1XnnR`|T1nDjKmli1;8J&z62N^L?B_q~G9MFx# zXYZIU;OsX(Sk8PG>m-1p!TF7=yxd7w;J=z71}%(>!RK!*bGtIULV}lm7wu!16i=>= zUZ_peI2=>~lI_>$}0manJWKUOB_C zx>`yY`GFBE*NoOFz%N?v8Q?8g)y|s#`6o-#ujs+C zPQM;hCCQb57&|?;0wso~T%MZ&PAc2##*AB=WbRnksy7n>c%Y@N(MFhKTei|a(bFSr z)H1dmk5pQQG1Hc3&9AAG+VNIQ)y&($#t}w}VDsS)#6(ft${HkzgVz)IW3nK3cJ2wK zu6+JmHv>7b3}0#aa{uXmBsxKsnbYx-52L?JI~!AqY3>-#42=Wj{eH^l$YDN0dJhKs zaRSgr(DJ1Ye9|kb%dgK2f`S(AkTeGe3A8_7mIIs(&7ahg$HRXKb2`6!6AKFxB~1>)a?-=7sM!-# zwAQE!u<7^oKQB$4(!S(WCGE@MU%gCqcleYzH3N0hzW@(tPA5Lq^*o4yE5-^#-F#CuoNg@sfGzV(-u67t4ci`hpp=7W+=LFsTi&ErI4^Ty`g{-d zF&e5%Ir`uck6_)p;(qgG#a%FJH7NIRb9iQ2%e|=O_o_UYWIUx|-fmV%2Dc?(Wa2T- zf;tcbrhjEB>#LH5>E)<4V-y%@zDwpCy|-=R(G@j~@TuDTZbB4Qw7L*xlk&qgH~JRs zN6Q^0=w+c454tW!CKPU2=4ei&Pn`Um(_kC0n10&b$%d%6 zAND&Yh>r@!wA_Et=ybk~$bd_WwKM)|9RCYWvyFRv$dBgC2Tzsr^`$>q{KaW$e{-cf z`%jtDmJI@9raAI0Ej;ZG##zNof;FIuF>H>O;fCre;+&ye~jLs~)lb{CXaunRN< zMBthp=?htfY`q3TD_{t?>6h-THJ|{<(MaH2J^{fB*!JU}8t*(Kt)d|?2oDabdafg# zfjAgp9!XS3K?oa-ppBWcRAT#MbMa$uLH7>J)kmfe))*$ot&M(n(4HIX$8|7?GY4 z_W=6n{EQR8EZno6UZ;mv;MO=OC3wM0zeiJiZ^GA~>uXEM{iQ@pkpck2ne(?|sSVwv zTWY*=bxqmeyzc~{Nl$TGfvu|>2FnoE_-w%N;uVs~5mFf-Naw4a-gLAWCi91Rd*z{g z83TJ}fPO(hqaO4?m>)1Xf8CMe5#$GvF9{~00Q&l-iMI?SJw=N>l0YY4GMx<7)$f}E=FV1bAJ8HZ-4loJnzB#q@i${ zEX%i>Hhs6q%mw+ubL|N7ZF=$DoO}c!{U#Z=DqxmFYCuHwwn4-gk`6KLTWAVEBjLz@ z13>;%zQj?^PD9cw3!R~0bkI9Xn-&u3&W>nVNU$;rF2MRP4G(j*4TSub!L9KVb9r-1D4+y^oREqiX1t-CjzyqW7w5bNJK^qwo%PsjDN7mp_7oSVu!}{WB1-??zu(pUt z5ze3lomh)uJMtSSECD{i=}f5rYAK0Gwex-Mh;c!%8KO)rBap`}ufW!UXb8+uRRba0 z$MO8YElMUAm#vJ@(ij+DIuA*tywss^&{Jg4JiWXGn0~&ZWE5Y%yks!e z{%~hS$#Od*7lVJ__>VAuzKRFoRiSBl3Ek;tAy2}IW31|x*sLk_;tb+Nq7w2=RCPhQ zM=nk-)^&DNt}Mt`Ep~c)N|4I|iB8_P*a3B1x?IxWj|jUo5Df4VXD<@yC8Lj|d0lxP zu(t_cP^`+1w<6Gtx$HdbGE5aI^=vWHZb+iwh}pQYDP)06LU0k0y8T|u2jVC04sDTr zB!rL=4)f(6L5`IDXyX@IOc=32??}2Bnf)VM1cET3>EBo_ZP-9{kdYxagKR_*Q9~sxLE!^Zhnc;J3F?BTRFyw2WLd(73oP zuH6}?&HJ+SJyMX291e#_e`lr)P&~JE%hrh9bPMKF`UrJ1lGdh=@`iCm2tPV^r)=$v zj^iU_PuJT6SWgPw@T}GA2-bBcwFS#DO4QBQeP2mjb*u>uae#2lCP-Xhfn{8Nc+Rl= z*y+ZZ<3Q6qV+z#+4&er-{XSP|O{=F09^50k1B=a?!Of0RbVyR}qrTJ(n4gp@!d1r)!-tptJJ?&xlsGysiFxAN|%O*tM*IEoDx6Rb+7 zhjH&$eYCbM-^!OPmUxldvGuQEQuz2p*Le0lQ!CN)7~gS!1r zn-{P0t%AcQ$p?^rYhfn?cx&|o3_+IHaGT-)KOZdX=w-zHYP0#(?f5wQs^ATfEMn+{4UAMnga0mZDR1BqKwPm5Fa#d77pVWl^X>cEQxZ zg;foq*i&$3kV_jGo4I0CATO*TH?7uep z&@@|0$p;jq9t+?ci*wWkru+2ru1zR<`*9)A(G~jCI+C|A>t_jOqDP~gOnh}-!HuL& z7F39&I;0j$0PcGoQe$pLdFNMvCd@BxyCUaXU)or(a);XCaOdI*aM8e5NUbKba7*{n z$|!GX#Hd!v3UM^%2=>MplQMwUJ#P#YDHEQE@FuLtJwtAUa!bdfRAH_q;P)qs^M-k= z7JEO!<>$WG!Ie{vpqoA=M0EXCx+_5_njE!27DKM5a_EY-WYw5wQ$wbOqR_3BXr!h# z<-ntZO&$UofE2`I)7&-GI3PH3{np`Mmkgll*5#Wg$(#1-awn{ z0jU%suEFZXu%jqSP!6-D7rN33lv-|b@`j;?9EY(76P3*ETcJr;dLws|j}X$0RFdd{ zW%*h!R2`AR{IR+K|94Wp&Yhe;ZxY4oj3?5F#S9%+4^m839)@zX4`MnDT3)^>(PGSCfb44*0+|Y zO3OJd??O|>E!~?U5s=n09=IhM<^9l}-pc9r_HnJuU=8FNl+L0wzvjh@OjwMw?zZo9pbZ65I zjl;B68n3ohfH|T9%n@x-Z9j+T)@6>aiI^v_&R13LmqThCMaq{9B#N|~nm#rbwM;im zSxOFjYRI2e$zE2I^m!;qLvT4$k|eXp2F^i&fL_C9L%D~}C1?^$Wj!^ny2VpoK3zp#P2l_WPs(^Y;up*k*w(MRU$17acyOVh6~aZT_UZ-A&xh6Coe-UEHeIRtY!i(qcO6CvjiwBn^> zW4NUV1|6_BwAn)zN8y?$9+elVoMARNtI4ZCMB3^X zhe2Z|)-@mk^1n;k5vML;IIE%Dm3%@cr2lT8p)pV_vSL$|M@Kxgg3E-;hTNQ{vOwUa zOH-W%XlS^)kvE0nO|nLQnENBvRb>wRCH;g?qRzV0odgGv_Co?V5_}61O!#$>T#fJR zAZ0uS670jdjwZI-mXf? z&&Jr|{?DdkgA`+mAkZalzw)+G5_Ff3i`o#9Ob8;y2Die`e072y%Gx11%Tyxll3-d(Z^3QrMGIbUXsw_!NYvjEg7FVe^h+u`+5 zaz3uw_IW2iW6Gs-8Q+SNAe7;1J^lOssOU|q236kcU{>|{`M1f}CpdSE&(EK5xEa@K zWsH@duSNe5^X1=F0O2FkGIDhhmFdLh zU&Ie*Kj39$89-YNx{DLmv%t;?Et*K6lrK10LTV}^Yx(ULK5#CMePV0pf2mbYi7K~o z@9#wVPDv;r@{M#c=-x2DL3w+a_(Z=_5kGWDB^x8un+Yb9STNX<$``(HtK~e3B&4BK z1ZIR;4s-%Cx8qb@X$o(HakGj`BS*6Z20%Ywb_zqOfLn{I_04G3#z1R?3Ft!Xqx!Y@ zNogWqXr~i6XT16IO5j0dTfwLnq6w52kAB>! zHHK{MG}f2;`3I*2y>zj)(;Qg3wo}?>3kI5ZD+}yT&1cRbP6`xnN~9|JRjbJvq%UC! zJz1lbt{Q6RW`*ETN(DW%EtoG^sqwc!X<0mXlom;CB^s<0kh9Cg{Ce2QE-Wd&Lj5H#xk9IP>hZ9&0T2gwa5fWB(wt^}b0`dn zs}YTM5`KM7-(ZNl=85KxF^+?<;gZFN<#e{cxj=_;fz0U+=;6ZOKmR@#GHXE|?XSsh ztQ#OB*G?W|RgJ=8zQ{61TV3VB{yiYtKuuVge~Z)dFmHT%8F+7J*T|2G@;QegF0n&`- z018KPKmtY>U+Bg~@`cR2cZD_ZyPz1DiAeI|2kplxAOqNi}OUyH%cBRccaOWSaW*rz)8wZAlSd}Ct zmJ6PKId_eU7Q~pT0iDWgYLg$AOJ0x`P|B#u0RckmpR~ObIR-{1L*^S8W}Kyr=J)wH zMrR7A9Rq{Aoa%_lW%8u1Bk9oS!yY*$CF#Q~6&b2D+P4sWHm(@#_>k^QleQ1B+UM45*fz@7vpc% z3s!pxhw($1H>Q7-3EH{iZKy-30ER8WN0X7kQt-IJD2OUL>ajDJuPH~55Dk@PLQ$m3 zWKoPatwNNa!cFo#j{Y;BpY-!bLiEDJh_y)qwMe`NtyE9h6uf*$JLZj4Qi40bHs+1` z$84WwJ&lz29Un zHo*qfG6k26i9rIaNA4YD8rN*o#8rr`wYHoMh>?*K6DI4Xl%1s-BgEx4oJXK+(nwu` zsLMb^4+ev6EV}-fjO2^rJ)1~#1}=S2)XR0 zraVOYhuQ`>4#o?mBkU^cFlZGRlyr9Trn1yN2=s9b$n3;Nx$56~Jj&&f`StV6Y%1fF z<@ur(3-6S$w(k;7x~?JcQBPY)2HL z5$tsck;xfmBDU%dZ7Jn%FwD{qU-S5AL6VgDv36}KAmBZ7%^ZEccC(!jLQs(VTHT35 z4c&%X=!r=|DwBz7)P9eEeonm_+X!mf8BA! zMh*cYwE7SABN*ICcol}fM1f9C1WPNI%#%ZDwauHz30@Y@vADxmUAq~{k~dyoPas&% zjpNxK>l38FSoD_P?`q;Y%#QBfO zP^g^$Oo{xYrFhZJ7gLej9Qbd_BeZ+8BRjLq{rl~G4s>nqW3sZ6q=X~V!Z4V8K{RMg z3mWW%b1^UPl@<2xaXfL{lDd{cIC;??o^g83Mv*Z8q_%y_9e8V)y`wTezsoGuadH*% zbYVw$k~BpeKj69rGiS=4w!j)l2;og-$sr;NUV+8mc}VWF6B|ZH#~It;W~Cp2CqRN8 zEO3CM^1C&EL5ZS9Gr5wVec@Uqe9%}gc2y3ae3C`PBtjCrNlOU34w3rly)iL`- zlz1a7))6yeyg}A_WGpDij&l=a?7x>;v%r9GU-I%klj560FPa`|@4*66(MYX`ozfP& z3YL}F*UV+5<&IIq|^V=X5xH&I3w|c^F#0D!p^`gq+KFG5T^NXs$(*Yb`fLcyehz|u`o;0f1*}B z$7rW4rN@!df^D5O@6A18EBXW)ynAni?=Okkb!n_O3?3itAyq)3er`I z1QEMJzD>UP(|0QAMew*>o3RHgMbOvBjx&}9n!rFZIA)UChGSV@obD!H6b&iBMcI7% zcJhd}X+_ey1N}|AbY?qE2YLBSR$h7eJiepU>|iuarvFUgYzj-7x5&Jayks)-HuqQ>f6_ zs4Z@}>A{NuF@*RYZJ z7qUy1q`Vhc*ED|2cgx1$EM{R%C@v?X1wZsHcC-RGXJxlH#wV_}2@^=V?)$7d&5C$- z+NCT`mnCD}Fc9<3gnSP@%Z^l(tQ5c|hKiuVY)RqB7AR1I$Z2mIby&8_rE9j~&No|> z%u;7+GC3~E(Gq3R$YrO}z*0FB5onYKLzkiR+J1z23>7Ue%RZ@)3d7Le$Asdv`l>pdQ}&MUgi=t%B3cD6}4mBl?uRP(QKF&$)OlV=bs$M zrDRgDng83f*O5PuW4mO>c8NL4Z_&y>1^U9DE_Xzb7An~)AldZK<>L0GI7ccw3t;sa z)h?oj`Rv77W6r9SVZt!DO^2GD9Ke+3nb4wrv_tZPZqhxJOMH998^oJ1W_68`Mzbm{_IJ%Ka*OR-S_9{(5gBL^o$h6Q8iK4Lf@|8q2W?zU$<0UXg^U&v#|t$~$#X#l}2&@ZYd zi_9Vru!b{A6N5RR7PP<%DARmIe$!c61Y}nEfPFKYrZp7MmJq|p1@VA_1z-YP^h|qC zU%H`VWTtw@sKQF#6XsAgDiE2_>i?%}xKou#J@)i52Bc zaL|BptJotk+`${c-@`+fsw0JF&c^q63{WzH>J<|b{PAu9%k_SH73PT*J!c^GEi?9a z!O9WdE`l?3fUuwO+KLt!V}+8zo78hLe~oouC5{(Ah-FX~=JB^UL0R#q4USqPWi~hp z1|t$02f4e!M#y{sjEp1|M87Dsk%*TMl$bX{y zxG#E}j^xo9pb@tM(u&+F`3vz`zE`j|gtux%6nXQkql*tL-@)ujU^HayWzHexLRXOl zS0lx7GNN3WyWEo5<{(=8Hrs((ry%_^8R~_u6p`7F3?>-~JJ*UDq_rC`9x;Jc@}`(U zRFE|eX)CY>t*7k40;<`bm>%v_Y#@=9VQ}rB4aP1zP`1xZ(efBxhVjvN8*+dthFUN` zSb(Y7QO1UBtdBP4eUJZ}lR5Vc$JT5M%kYn&L9ig^jf%EOYwZ?c|p?2!dIu1u(c zcqtR*FwxLv>HXmRh4aucq8m<$ar2pzgpdYC$b*GH>kaTh4Z(tIgsOoU#du?!f&3QN z1iYexkU437`loSxgWJw=ReDqh1I)rD;d~n-*Unfc-L>TdqeK=L+^o5^RzCm*4hR5= zvi!0O$XdVh7jwf{(o`JKZ=C0r?~x!oP`P10HO(V)ig)E%fL+~@v1`XaN)%DPDbP`A7%o=d;!0ajZ$WN|aIetY zzD{xHKWRr@V1fEWtv)sYpuT`(uzE*;*LxloQQT>HMls3Iu~><5)4+)QBY8ze({#z# zG~nUCWP*Bgf3!Bfn6oi*>CM^pTlu4PM)x+KNA;&jlBDCIP!l$KtiYQr6k`!pQ*XF4 zk^}}}^#L7Pwv_%bdp{{=P8G7OS4nPoLMW3jp!eegFPt98kwgg;r3CEjz8FWP6`(s&SFGVMZ!Sq^s#ER| z*eIjU*``>6cE_mLRc>b?^ix6~K6)YCAbr@*eaocK=P+-XvbQoc%Ush1%BQUzrA9xP?He_! z>S|i5K2ze}SZ;g{BpJa$<#qm~?k80XETLu~M#hJWpt3n?Pq=0S4#xkGT=L7bNt(tnknHrj8AYhH3P zjDDn{;T*Ph*u6vaEJG@b!HbEEN(J4@j#xg@B9mhJXPX$K)M)@Ek$#W5R1!82aINx? zMpqVhR7x--~Zg!Y2NSh(Ibg$_hHmXs z4|32}{>n$FG3pnzKGjrJ41u{|^3%+8@}Qn*&*0b@h<;~2XJr$+GiW(qczIP3wesUg zo&la{PQIAZOrTb2CfHSJCJ7^|cUXQ_d*`3*jnTPIe2r^fgu}3CV~p}J#=tpRqRzR#ZGY$$P#YAig|1z*NWVfzpXaJ$n5MzFs-PTvNqtJ6N`81r~tGG zwvgBSC`K8Pe|Epb$c9p+YI&e!)ANiupM9zp``WU+wjCvb%`nix`Mz20tFTRB9+a^g zOW>@fGjBUSG&yYpE~5s6YH!79o%XDQsTpP7Q)X5Z_&8%+@}eHBE2vN+-ef+tIp0J_ z?a_!k`_TfM3oT%g%=|&PQ49JWGmG~OSqyfJBW*-m+ePi)db%)o4DK12^#g@xamAX` z1*rkQWp5hlwKNhUVPO%85l%@tpoEpYG)U2!d6)GvJDC@~B3dR@&GJ_;fRpB0>rYHf z6Zzq@&2D)e)uL%YLB#gLD!CV^rw8do2g5)_Rn}_&|8T@m$&J}V{6V)@v#*a*8niIf zF?xe0&6^xZLHCOcet@|rve|%!v&;e(;-&wz`;@WjBI7;tN|_D2g^jMLyS0PgqrE+5%>#DYCIBfiOJE|NzLgZ6*$2!$ z7L;lgtqSQ<3mWZdsP&^f#Mts^M?z~75gH`V_YZQ1|KcDcEuyIA$>$>ewr# z+(uR>jaS6U(i$%mVY+(@&KaF470Puz-Q8TJyCdq2SSdeo))=uA@%spG40uxx41l2~ zZQtgw@Y`B7w#n^JNj$liN)da;v6DU{?r8;)K4v4z9FU~4a6YZ|75u|Bza zI$(h4Io1jDkY`!HAXl*hS^8YrY7V^0%1p-~#W0Q7eg+%@CM#gP&zxc>r7maM3vH>G zrBn9Te__&J%e__;gcR~G*pT~knNfOPp%*i@i#Ev|BCgo1>p)rvOsMdM*J4|X9Kz0n zhzI3sp@7qb}5PbcuBlnmNuuu7^p+f5O2X>hi0 zSevnFa&v~)iYB$pLNP|csdm8mS&iu(mVGnrBTk#)wfmdNvudUdk2zHe2Sa7+B>3e7Fl)a|pc2kxNQyD znEdX1c+1$p3ntDwAgcXOymXJAuJ~(3mXr8|K^rROp)|a!48K%| z@s+Y|rI?IXwqB@q<{!Qy+zy3s5QoWT&A;RK8#%p4Ql@l6ACO6T%{5^ljSpym$B~eW z-0uczh8PAcS;J+VV}8=zb75s1W!4SK_S1BiooS)1)J#kHKEkHi6c^0|sO%Clu3)=; zU}<~et&%dNCNDlj4q}ceYp3p+=TN#A@6&kYgE<89KGB&ak&IqV@`xE;bELl3B%r*| zy~B8GHCo9vqPn?1ro{_<_3lyol-cVC!wFk7mMOfOc(TrbzacJLt^}PygA+B~fOV$5-qKqZz=Ev~Bhb39S|v zkif&5>Y(;Wl=6PvqGynhb)=pf!$jy_y;_uYDa!S>JsE(>Nt!AS<%UkviQ+_Zk~G9_ zIOFH2>5Qx`jOKtU!^Xo}5+LT~dk{})ZV&qRNi; zY73ke@LcGXE7Iw10E|DzU0`R5P4YPM9B4_)^f>%`XFTT378n~ei<#$X;}+MJ@uB;) z-4%GYbatcf^&3%Hz^5Ubw{f;n0PquKwm<+);Thy>Sfu6WHFm4!3~g$D_`!N*zhQ!~ zlhy{|j`Hr+z;zrKWSCSTZir+N-ZyMzgKV>RRL0+UU9f<(sjk2}-mHQ_tuc6cCB{<0 zhng@U1zfwmIL{htdcZN>0+MKFhDc+nP-suwIPqUXpAC2i7&o{ctq7cjE`V<5>-o(Q zz1dgW&j;*U|58|TStqL9?ca1`Z0)ej`3uJxTRmj#w+@>zBmS%Q+7SSdFTrxJ{d!@C7Eh7B&_#s|AdHrhA4ag-eHc|+O(3wZD5~NBiF$W7)>%ef8-sY zaFyE6SY@|AZwGM?958yRPW4nV-A&q=cVD`BW)@vB@9>NHTGOVINt}<(7+;=oHe;YL z#_=o{d})~sHOKI_JFN)aDG#P<+AS|lp$FbHyFXujeSpmUK5vJXUW-jpX@6djov%5o zB+QT#Gs;zoe6fpT<^bq)@nW_pWZu-49^vB0L*V5LcnznRgl^$OOuU<3!eWmtbNc$0&EyhiVf%K6Q84dO52d%E3<);BS*nANHy%x*?lhBrx+ z(hCR42y-5^WERj*AoLU0luMI|H^1RVp6PXF^aPHxIKO2kbUPZ}V**w$djx&FWNH}; zv`lIspBs^QvTLOlm(9cmpkc?gyoj_yeUMR`z7`CUWh}GMkK?j(Pt}6WqMVFqULLfA zE!AL1lawiC`j1G4YZC0ltehx%b=uLZSnTBEy!4_$EiH6}iSn(tW0YS0%yAx@@Qxpp zm`UQ^eCzbXZumr8(5E*>$caal>D3)_=zlUKJ(7*l=Kjo!Tx1Rh-lg)ai&&G*LfaX- zWgn)xDs%B?G}?0M4|*~|rJb(4p%SMm=iOH6yIn2bY%q&l6)dBrFq`-+9U$&$PXg&d z3k?|sr$s_zkY%e`>^0!6rY?y|kG6+9KWs-kPNqsCXFi|~E#ei}wRinDy!`Pufhs+s z%SZzQUf#Kuw7`FZ^OM$qap(spF)ty^GMP$`MaBP8-X=`KSJ3M&$P)u49Lb|;euNaW z-4&NlK=E3iALbCVQE~8qCo=QIycK%FSoii5H0h-`b`!kyYTE$ZzKw<}91wy?wyjDR zffiY@;S?3ay-G${mcGxstFYw?)bWADmaL81%F~h}e#-|&Vl2bR5SnbAixATd4>MK% zl}>Q7sklwcL`bwOrgz#hDww1qHGD=ex>q>W@U-ZPcoH=r-;_1iZjYDm0j*Ut|MWu1 zn3mh(%i*0udyFs(D%2jZ!#OsInAtZzix)|Is@%BEbPr2GTOG_$nA09ilZM^Sx<##v zp8;bVWSBN-K0Umf1=urJ-1^+_%!`N$N($m-Q3s-3_PQJ_yEw+>cSG(bE z87+p_HORj3zS>{!p$+R*rR_{T7%iX`HXmx2q6LDs^M?jy1oZ2RK%j+f04xsrRp9nW z3oauwq-EHi(6zH2Di`Nsp?HAXLyU z6*+jtyWUsK{+K9@rTUIA@N~MJD%}uRI9t+cB zj5osL%2Uq4b-%kdga$q zi|I96omsd1(2J-pJJG2=LNjEhy5vUko1(d4al#l_LdIV{eK}vogM&Gmo_P^L{=lh} zr2S2`UqxVhF6WPOQ_-2Ju5|PZb0|^2wr9Pw#C8iYp%{o^0XcZ@2@s+6lWAS865c8N zKBULBqGT}){-BMPv*t!0;o9QdYH2vG!&H-TzyV`|f*_#~h-D)lhTu>Mo+0y` zhv{a%pHw{G>7a=+|5f<5Vh3RfH*yBR8x%!#>r*D9z|pHNR8U?vjBp zt2tgz4hACRUF31Gd3wu_sWh6cmgf3Ki?88_ixl&4=Z3RWuxVBji5%0=*T9AY8*TMd|)TWBUCBhh*0Jp$-^` zL9JevVYf0EOj(F6O00S!grzIglv#A3!HFVq?g`)WtE5|5vPNtOHQfAIgh4U!BX*6c zo1b{z1|qGWBC+Bx+sALE1loDo!Gj+MFk$?}`tb)+YX&xkWx1ICeGO7b$*($IN|)`F zT}DO99FmG~g1pjaFHgf+gX73R`Tvu>cY(6(D(ijMV?S%} zs@hdu-CgPGBx`T_+}jbNeY`m&0z%IwLV^K9kYhZ9I|gIOxi`0}hJ$pvGZ@~ayMRsz z2pBMEP!6;RCSs7Ncn!xW9pn+722B(tlI9_Vr%^<5M9BU9zd6_1Yt^Hxy1P1bpa@-i zt-0oVey{m`-~1+|8ySSNB+_$&Qz(+WMC>A4C-(HJN6QQGq>w6-O}tbQiz$B&#ZZ^J zhD^p(wgop`j~)90cAOhU?(P2;KOr*fAM7A@zf*oq+%4r-6iwzQPDaIJ3j|Kc3d2pRbtIbq`JtNqb&* z9Hh!9m?)ChKHzbnhHXZ|-!#%hq%dQGH~jUKb3Klx!N+^rzf(X(k0O%1j_ z!Z6XMf2NDMZcR{wZcWgDZp|pTOt)?!G2NPduISeAUr+!Pj;PK%-SP?uk~xd6p5sVQ zd?j&n*fYC^wnU*Z-YnnK&<@9Y>4&HsbdIi?R*ezA_KpO+X4zU|gXd?driREyc8;zg zEj7vxJH&+_76+rhYe!ZS?xn#^I(9p-ItodFCi02!=v+(2#%H1~cC~OjCMv==j58fz zFc-)=@u`qOn^zK4Jz4J{D_d;_)3m^!Ze$-p5X4t>!W%dVJ<;qcLovJd>8z_IsoDLs z)OtG2wur;4zP#Kt1MzY*DP~)Hd6YVT{du36F?$FDo<&cG5XM9nqqh~c(+`%$YO;sd z*SMRG%$)Vg#;R4)Sh=Vq$KycBR~->i6tADfXwdlu_|b4esfa0~0?L|vDWE2ew(u4}G?30i z{HQz8jEphjsnwx%YsH4ZJZim#Z!|2f*ZKRz^QB$JmRK$TfsM4=E^6nAm|c!dv7YjTHfIG;wTvfj5bp4fm0+@WA%Xn1mFG7@6{-|LKCTvgnnEuAI zb(%8`E2gb}xIY3x5$gfVBa4|Z|E=|M^9^W@?*LEO-3oG8aT=ZL{idpCjJjv3hA@qi)=CWxuah;`9(M; zNEP!2O#RhmK?oBveEKtVQOE!@7!lsh!*S_#J=-mtilAfVXLP%jbEg z!*sWIja*FaQbuYa&gyNspD|ZWNvqQtr;K731;FjRHStFlpzbMR5t6s&CqNy~Q3C0J zfb-)iKmx=AVyTE{Kyc9}R=+3Eg^0Yp&m5wHvM@M{U6a zcmK4pkeKw()=KaJ*l;f$bZ$>V*#KA#$H913+aDlH3FYVR)yX$?4446Id;2}a)pgiQ zfI(YE8=LO%gYDjnftkZ!)^Fmz_<6%|)Pay%kK-Dx%C~w4m`^Dy1VZ_o8L~6xcTIJE zD~2g}0>12=wU(VToeCY!83Wa86~djkBr=#lSi=!iu?r$xC&}(J53JbTMsGp0 z81&*xx@>f+^K4j-mQX8+byjQ(yid~Ij@p4`SR$>k$x3j-672mb?P`A$m>s!UlGjh! z2EFrlH6PCe=He$HIwxuAj0?=x>;CBwBjGrw)DuBcSa=KiB{`we5z==8G97_T6v8i^ z8@1()Cygez<>ACPwolJ?Pomq*jh4K$>;qRO?sZdcL@7Yjl`|N@h0As+BxHc_Nb+5v zH<=>g*uA{h3fuR1+!GR2>u+P2j=>VUp0$ zx=I!>0h?H}x0#OCG!znc4y4FS!AY)@M_RQv%c<2wgJ5nLHfT5vJb)`PezTxZux=B5 zL{gZS4Bqup?Rq`yH99wzvXy3E8v_~$7?+@$gt<8aWbis|uN=|&aeMu7d-W1o*Pon= z%!=bUeCZpAX@DwNU-^L2`ZP;RO&?MGZgoS0l<&FwC<_L%YXtHf5gVlYyW9uA0RW4- ze$;e)_#MC`Yi{~EGm=DI@(k?4G-muVYsviH=~FG7Nyu7zrY!!oXAL6xG4aI71C&CN zKc8Nx+yq(5Y*_QMxKG1WL613JC(JPKy;i`ay@~*330^KLzd(G@9ncsv`zNr8Z~rl;W>|4e!iyjq z?nUyBiMCO#W>45`)t|=?;p1A+iyPUN)OJM5;okUWiIb3jX6@DKZ10B6(k$7&6yHQ6 z24W|Y7_`CSxvTi)tXbpS=ttO~kce0UyLn>rud0L!pO`!p8%KD>UkkV&!ikjan5xk! zIXOLQn^Y5lT@ar}>rwaGQx9q@|F!nVHrZaa)oAz9=18a87#$m**hGb5gUoM_suvQr zS%e*VKwX0W{`Qvc#4txT%pp~Toq{6==OUp~nedYOxGUZlu}eYiBH?|euvhy9o!lH}2t>h1%v zj`7sp&GEdu@vg44LeNf0fPeEA8Uy!lFIDro57QlYyRXI$_l0Vv=G{H-Y9ZKARp;3l zDvRPrmJ~nYiyQnh<%3Z`S|HQ!0dM^V*o9As6mY#gFD-m*|C`O*xy&1E1A2xU29JzA zWV*KBlk~is?0N2mgK}=|g~PO3mCK-n%)a}B2f$U$m_$M)-13Dy0eqyvyFc;nQMFai zdb}Pv^pgvN3H=yT^lo z6yt$f94%#eXp}5ReHNCfKn#J#jV;>+)2$~xDSEB6dq4T4=vVY>vZlT2oCIInzy#** zh@ZBg2hbMLZ3%?~25UNz<4mb@d?LdQKBLW8U@aMG%W^a^iF4$8e zU4U2gR8Y_LS7W{3oI+BsyI--4Jc_7iO13GrYFfSD(9M7ZJZd433JjT!2O{@|UyI$> ze}knqyqqBeft18~3%X>;2NZO`0C6&`_##<;D5~bhlp0}d_^Dv%7njuV8Sstr)ShnP0xA6wY6zuBxEOM8?i#+LkOd=Q_rYA0F*%onc}u<2i&-H+o1P+zKi^0 z&4~3G`GE(nU*JxfTR>dod-fO{XBf0K(e#ChX!pL3A&&7mEWBu7*b7i`-(sx9nO)~7 zyB_03{33#l77PrXGo@T|8;7|Fvpg! zYFli!+>6lTOQX`|tKa|yHgt*t7tILr%qKxRFGY|{c5A1E*s7~;_~rO<;Ya7)+}U=R z-x?4~Yz1>tk>sdZBguS^W%;Tp-~zN<0T=Y)ZK(`L%IUN9z6C{-)`D*csw!Dd;#3_) zca%*+o%g16F^jBqx`wZ>K#QU;@=v5Gc!F1ovR!C`SW)j+H!~(ap;8Rl^Qc!6;Z*@y z!fs<&#MnP%V#0dBw=rdFHi8kxSDd+gMV(# ziV%>4-n@Dw=AYDQ5w#cDK8|yyOjSyEQElu@-W2=Lr5Zj80PyIuCY}2_H%2 zDBCq{`{cNp0=KgK1+v!v9(+wkdq}tbAnmnC%rXueqNPpBe_3WBxN0c=tWubU#?)Sg-jqCnj zg(0U)5E9n3=6;EzJO(e6f<)ClYL|!sa4lH?o012`H{^7roYw&4ZViI~sgx zr9O>#B-;J@zx4ZZ_lLhM<&|wH<&&kIx%Z2Rdwr_*I zx&MI;=rrdI)AvaqxZ$B!Io>EH$y%-YNT`Tygr+{=6N%SbDOd)*Y-u(;JZDd2Gr#f#Cq4I zM*tf5hp^l&+ML35l!x0M-j&aB}|ZZ zvgn4xsC-EY|IlMQR=5BTB%Yc|8)Vy$M1`if1rxECusj!3S`m0qwavZ>DdgFi?Cy`q zvWOZbVTtJ51=`yoB@^9M%VHffYY5vgar?YS<&F_*)jHPBHrYwJ&@b(C*g#2tRM!_y zVMLlDMwidcXeeQ4)Wg|2MU&&)#6jtE8;Z=tFtqpQf8To~`Z>BsnC5I#?=>9DJHjlG zXZjdfWUo4ha88vh690y^+)XWVHrZ@-N~;WQ2b1g-yhG3UTBB^AVyDylT_IlTH_vz9 z(-i$Jy&=V;{W~W?m{UdM6a_UC%Y#z`X2DX4bb<4pmdo%`(G3DwGj>s;y3mEcC&rV! z0A(={PfXoWStzm^%AVAH6B4(RUn6llc=-4`AUWBP#EGBhR1S0&Q5Vrffdu)M!|itV zwh}eP^IsL4mgBpPxFf~A_>5P?c}58cSWlt!AQ-}PO%L}&>VB3-B$G=4;9c&$kXElv z5>4}25M8u|1sKHcspwwx&zw3mfoc1!digb^YkgBid=1|*fl4;x&-P)sg1nd=x3i2Y zfJ)x)UF=8eV*48Vu?WuAT_jOZ0Sfzyx2v1xl`Bbubhg;mC%_}m>WTLqmeq*2oc98$ zl6)#QN_LwDdlV(}wG7aThErVtn>?zn8Y#nV%5ZV+NoSq30QVzVz05rILZ|x>9mP3A z??8*tREBPoAdLxIIDwZz%nNj+i~UTNvXVP&q3^j#GiU(j3tM}FtQXk*K1M&Bu2wc; zFOt=rcSms}vr9PTcn#c1_-EHIn=8|(J;%IQylpMSv;aCYf$1CFBY&;m7Ll{u1Gb?x zf8<@4Zxm!v&^#hqr)jncKgh5`|v`7p|jcL}Z zsq{Ya@hgDqpC66(FbD*W_!`=Em07P0t`Ix1NJc5vV zT7!toe9_7A@~?VHD=GIpTWXr%b$U>ciJQ~QuJe8 z#1)%-bP>P^?rZ0y57!5y=ciX>qkFO&ZUMGOZ_y$)&xtPSqu&y|UQR~7zLI>&3sneb z@+T%QP^ylLLpjb#E|)!^p&cE6i5F*Q%-*tDm@@AX<_hkSW4_?&xa%`9bPAl~iuQrL zM|B?h5`Tb-2Bg}uSQ{7l9;mBipw$a~a|EI!^q3mnts}q<=^Xe=c)o^cff^Riy)+E% z76mOZ@{0T+G>Y=M7yOyH#-M_@Mw0DWq#x7F`8~ZJZ)Gy5z^C#k0+34f>djb`u7o43&w z(}zGD2=)_TloU9F(Cj>VL#y#M2XuKrG%N=mQ@=XTKegfP%()+WmD+IKI=kd;3Od^xxKew$DzP?xvzk~p;evAHb{aV31sH= z=L-G7w$Iw@PbL6FDM#!2gXiD!72Y1ZuSK&`&xzBqQedg)c~a+TNwlWYX=C}>p(Df% zcQ;TZBTd+NHQfJvtCp{jN_3pfZ@e1rFU^A~bOZsKt;tNrwdrzryF!n6qV=K*}-M$ zR>3H?OQwj^2ALz6NeIEs^5Ol2{Ab0zB%IoL7+AY)l{sW#6jeDr=PebWJ)wYat%EQo z1*L|?7;5sN@F#U+?eP7haUopIh9DrcRzJ8uG^(!3V6nGYBnnBt+MD-Ti$*6!KOEQAF;*_0l^WXjN*mIl5;47_Ag{ z+G_f;qE{NG1VtxScegBWR5flD_kIiC2JFNwW1m zZqlf)1reK5&IXXCFU;-#rlqDtp`~s}OHECtrM9Zf4MzmdvZ0bT*K>lC@NR!hPhCpP zHPv+2R<4~d@xp>dEW}K}$_sHd1JDv}E>fZ`+V8F5_i*^VSrC15qMK)anN6?HbYu8< zL-<_?zYoJS+{5x85|EJ}CknMfG=zDcppsYc19N*3KUh#+2-Tlr0Pvr?^3q1Hm z1bKUZy-5Z$MkDnR)!FLm!*{vkPCK@p?qy$9#a`WJAn}EmcySIw6OhOn8*8-FB#k3f zy$h@+aOz+X(p$g`Wt#`2Z#Up2JCrU&#_%K}0yjM9fFLHvz*+(W)?wmLu?d(*P)4mn z$X_}Bka$0dSNOz-2{`#epNi9riSM?+aM)AvSu|}X8@Zh&aF%LJShFh1bagp!2+$TMAZkd8HGk(0N33@-o_tE|U*0o3f`Sm)d0F zo3d9x>^g2lfz5-`KqA$pV#h#G#B2jr5n`C1^h>3l6=>}cNO)i9UGCxE6Cl_gm38$q zA`;=-dA}HXAdq}~6QbR-jF{S%=Vo4IyAUly{OR2%whB~;c<=|SSOc+{ehL%6`TM;YcF(fk{6z`f^d($QZ z!#Q_40zF&X*7Bext4NKpm)eI-^sbAAz7={DNFA8v>1Fsm9DbQ^=w*o>1^Rkp_0k6`U859$lAWH`aswYB3mJ)<22a2Z+SU`)0EQ!Mk!0xg zo;>0Gibhq^1fs86@WxfvfDXSp?R4H%OGY>lKpq?}`XmFYuZjDK2UAX@C3L{L)^NXj z-#hM$=G@=BK)NYCBKjUycr7!JInO2;hJ;i4ZsshxBcdYk4|@fwvP~F zIqEvd0~9I|sKUaeH9}i%Vb++Q0lvAy?~YXuft7X$7kIQ2I8)?BMbFu}KA+abM;Op3 z{T3&oA$p454p%oR8qKi9=7Xv=&s5O14)Lp&QA^ITU=-)2N zz#aBvt$h2&V(6xOO)$z=>yF>IjQ$+P46pl!4>ab;KmZhG-qtSkLX?t10ErAyfJ1pR zD+j_r>Xg@~4E0 zm#`N?V7C^)dVWnefR1O3(qhYf9DTu)J_rbE_oo4O`Q#FrO5`1j7MDqdTd1bJEWr;h zJ4}5^MiDDgOn?DSknV_`pV7z&rQYM(GY&Zn2#Miv5rk_~?IqMoL~>R@^hI@Xbrlz7 zVN$rnUJ1iGfvPq;L!w+ao0!eE38xzwjW6f~()ROHXmcau#*7!!4y2GC)I@wPqJrUF z2R!W}7N$=-jNEf8v!V@(u5&vKH!oqXIk#5ccbZR9iu7qdSwurNFH@o<k1Dx{OJs}l;X;ExyXzW56+O(a)v&(2HRv-+9uypnm{RHPtrh7 z%?`GbS;A8{+oYKqoKfo9a~(l(HDb*W78Np0Dw7msdYSMq8lcsisb%(scd#hanQFGn zmo)GG00wgiLiGrEg^P#glmBlg4j2n66X*dio1hWb#-DHRPP{iXDfcEMp)|yH!nT;0 zSuhJ*46r3E2CLTcJ?Ramv-WN5`lkgSJuMjZ2>`K|)#w`lq<@@_s_E)Q4mf(xBBGs8 zpyQ;C!{5sNySJ=&+?_8K6D=r&BAl7Z25^tH$n2d<6Q_<;-=&M^SgK}fY!-A?_qCN3 zdP({bRtarM6bUExCu9T6_Ciptci1A*FbIoC(=u;L+4K?HbRU=Ua?1}B0%7%zp`<)P zCJl3<*eRLcQ-D^W0E+7e*mBD%S92qZut>>*tvt?k zA*?a;WFjM8Tj;YgwZA=^L2xk=F4qwDB6cYYdVU!xnQ5-2qhO$?#%gU!wJk^W>~HIl z?7^rrnJ`95}s_9THaY)B(* z)O0RT?f5aG-O$eR&Wm#`$Cax+I--!z-ZHeI9nmES3$*KOv|9|-lWXA@aZFa(h= zwSAdQssY1c4-6lEKyYx_!vXLO(T?cV2x@ zR>BsZq=lppsqzH7iOu3~$zbN8my z%JDab45z(ciH%mE0lXR0mAb~`o6?erh`Q{UskBe50@e`xdT)bb;s^w1IRHt+8Hh$9 zYW;DWQ5%bn0Yn5o9x85;$!dNR&C?FGMh_&Xjb(;u;knuAmvwRdNru6S9*HZEBjGb3 zn}H_&E*>;lK}wil*0z9d6dyCvCn^ac=pjY$Q$_|!17*O{J6U#lIbl+VBPPK_?f=^5 zj)WtOGy`nRV?7b6fq?@&*(QaXZb$=nGg6j*iNj{UH-z5>NncvN39tFHj}J4+%KT9H zeK7nU<<}i$wbXCrN5WP{{B2A>p+pxeH@U$t*wzA+kBpiGwkb`%J5c8LNd$+K>WV240ic8*D-LAWAj?;n?%ESCp!~j%tD4=dqwu&%bI${%@DD z%V~=R;MP;f1KxYfl40dsq$@1g)aQH`mcEMyoYhD6#Wg{&!o?E-R(vQ@{LgjyTtPai z6;^Ik7ev_ZF_3*UEJwrvoHIrVk>Itp1Q+~3AY!)B>Q%lQt+#=SFL=9=J=i=l6- zIP0;;)MX;>o$)jIJM&C=(v`G31``Vb79Iv}3~s~kgMy<6QG=_h61*M_-?4dGe#N;| zxx1DBZlB-a8&jgvkA&}cgkRL|mVT@9-%5T17&XA|9N>V2Xp%%h1=T;x59c5*<%cD~ zx-GrWg%sUAr<-`SuK^SAXq3)crgdCI&f|wYsC3G^+-rZG0eYRXiBp;E_?)faLSgOl zo_VE@450bJ6U8P=9x3enx@4p)FzgaMJy(h9^F6UBC2If+pxc3aLx*p(RbHVK%*;vw z-$2Qy;sJXC0LvtUU97Y;tj+%lbn8rm1!gy}s`S9V636GZ!Q?d*Sp@DA*`&Z7ToAa^ z*xlBjDvd-`@xm{=(Q7e>?@81q+6ci{y*ymr(YWQnNXSXw#mkunwp~wU2nK~Mj;h_` zZ+R6+SNgl+G#cWfa}ejIqriJHm!L+N$Ym3r+>=iXVF7cK=a>}F8e_am=~XPu*PSXLZB&!LpxJLCWQDvKh@f` zdlKDYyLeHoG)>?Y5b9z5SV?NZZrh|W`p&N7+CiO53>E_kJrH7v z=qSXsej6YKN?G%e^L!7yMzfdD!^43-VFolhh2_tFZxFq@!MAPnka-t^aya?V^+hyF4JL^MB`ummD}D2MsXuyF8P#IjoF`F27hoZf(T%I)Mu(xbaS z2VI&vyUU3itkgN3)p?1p^-Ff|YvjJ%oaf&xy^P#- zsfA&3U;Bq>-hJ#h{yCnrDZvC3a~fR@#e41%ij1Gn@-X51GBk5Hb>}quDs06F z)$$*&ugxm$C~2KvNC?5i?bLmwckQ7sMZ?L@C4+R&KSnq`F>`zBcq_^KnVra#`})yO z{y|gdq+T@+x*wyjq?rcBd+I^# zsplq~eAqJt@4TDsEqBj*6K{gM#64W=eF*mxK!wg2^oC}TVJ1!e4pFhL17eCN*`wP4 zXe^^kSM7AQ^V1bmBwSwO+HTbC99Dzv6Vop8TihRuCfv(vR|0y1IovLQGC!=Ob7M+e zJyqnL8oKgW!3)!m3lV|W9wVV|@)Y2Vtd0YKR*C!O$HWbltjtVJLwAMX3Z-eH*cTGh zTBL5_a2?Bovs)s4qsOLpO>}yg2x6s^E?PN%kuy46;L`HLjv3mZ1*2l6C<YbmmSTF8h?~8j6lqi_dGN1rpiv(IRps9NdpU$`T2sv~z}`c&t@^8D1Hjm?Ubr8ej=uYI!55b2 zH?Gsd%@i?d-XtK}Wos?X%dmzKVCFbpEWAUb;&UrQM zUo=Q;FJ+!h-q{cRwsurvGe$^QXK6xqL?}vqy(Q5@4X7u+jm{tRxa+avyUV@1Qe-MaBf z?vuYvl?v>sr9L!bJLbe)zg0?oAMaB$n)E)>piUn@6eB)mbk0OHtJA0LFc7*$EfH@2 zcI|Hnv%!2kMS}rL^D$w)R40YEMOkHo3_?J0Lv?ob@jza$q}*Sp5ki-6@S@Jf-X;lF zzuno%M4qPU3_tVI30dEau=5l=`84D=f!lO7$aXXfFn*rQREy2i5h1qs?cxAn;!XS7!zFS^Gzr40;DXLtHs1SRK5HHyP>>-eV;%#clztj` zkmt*U2v(OLZGRL-zrZbkIQNCV*g#oyMy{bS`|b}ukuo&%B|##wpfr$W}Y5x^|p z?H^$>LO$Y~Aix4R?8qcdvaQn(`Y8Pj#hZ#=cwwGU$c z@I8_`oU;XT$CiTUaw7lt+rHVO^hNXrV;ABi17ZOBWmD-6HHf*Oo*!z=%$}1l;1{ym zO&VE1a*8YfMY22HZH2PtPa6rN0&S|o$w8>@KCfxv=^FR4+Y(%lUhfsNiW<)>fYl4Y z96=tan3>l7Hi`R>h#d%ha!*hsh+L{Q3Ma)H>P$JQP}v`D!Q@FDFBv4~Mr7AuG>eP? z$^L~hkou!!N4n>ugDak~^CTiu5_EUZ@rQs6Z0|7JlZby5o{!>;g$}_4}2hq43KTz$UJWH-E2%3OR7`Y5;O8LgBXfG|2hqXz2~oK z-!OU0pxgU*Y5b5}xVe+k2cI#clvH~P>8yXBAmMiKjRGe4FAx*JHg9SPvB<5ofwC%;U+$$mn2*fc*mro(F5 z&O8|*%P<}rj>6SVl#7)?R#Xpc0GJH7F)Q8x6r|RJGBN7!T9|I#_^JTHVwcRs)!6c{ zM5hI#}{}9o%xGF?Un#-DK?m&%^ zKz!gu7}oeOmL!bBY3o>@ceOdnOX^%enWp7fcu0}v2rlgVL@;9i@W>;7VewLMyH|%e zo~*4EB=HFTFkuxEL5$Vb^0#F}Y@<$rYiNbHavV3w8&NVVMbnh&II`q$)CK14WcUaNRpKRXzuZ+ey7J<30h0KNO^ z(T;r=zrg~-MQ*2i&le%=;?c+#S?b+*8|D7eM$2#qejx2p>-jp#%G0n7s7uz8=E1ko z8n(fL(#BV<4Rik%9!kC_1CNHmMo45|r|bD=RX>mJ^GX6!9P4-3M0?nTcLe{$KWZ4> z5xmZ(iYCfBQ6UEW0goik1C&RnbVyWd0L&?VIxk;q^&vt1F%TRF6}Dp3H35+g0tC?& zb}mtElDG?cQ!@)RfX3ssyz{_pC1_49zT}ul-IynJ>94o-cCSmSO#>lm*hPcM)tpK_gn30;n0t|w`TEsetR$(zC_XgB`TP| z9)0?M*K3p<$R^(yvK)Q-FEBrox3f&8&ai#E1D$%eI2FcWrfd4LiX;*!Awc}sV)$lY zN4d^_4PJG^9ipRbf>Mzq&PB2X4Kp8U?iE6Ui^Jk3X=Z+e}T}UKD659Jw;mpT>0!y=9L2unMo=uh;w_9ws1QoZ#j=uhM__vP0> z#Qk|+iCtnwoqKiQwl4n}?_Mtchf)JIGCC&UBN||S>Ol&C$a50eW_W_NNQo|;)OqN> zbh`1t0HNnRbdmgN9T>NjdwZ`vkL&6?9n;b=cj-^-&&6}n5GMJk{)AJyY}7r7iw$sv zkr^ga874<7yr`{V29=w6rJ%Me%{Gh{xJqH^h~iH6h6dP;=# z;VUKxHD(Bu46-@j7<2T2NxYUhYH3nh*JZ71ui;I}?dRhtX)Kl_1$Ho~c5ZaD_^Y-Q zzN1j<@KJjN?+nEJpai!z5czM6_r$MIJNzUBt9^IycsRJY;~euI;ae4DTky!6T2vdbyW_e5|v*|ICcYuI|0yqi&y|3TtM!KYuB_>6%rAwP0XDdDM7P&Q&bbOMHz?|<)_i+ z`+f}G1ieTlE8oCxrLG0_Xh@jOPq8mmbKne;nsKfM(lp$JZFzV=eODP7f(#sw-eZ0fdo zQpD}we;3`8%;%%r$^P^p(e8|2C~gGwGGe(|)3C#3NpcYgE@57nS^Nxbpdzih6!H>B zuu@Rel%~2-R@jKzjUCg!areMQOs*~)5h|js(R43k~2vgnzir$2t5cCi|ltXCrb6vFDp;>xhdM*{wdU9xMXWfV82ChPVY z15%bn#YmYH5JZ!rvQqVg($Gp3BP@obcm@d4=j2L;QRaa$;*xKbK@SDQEGF3m!H^F# zYLw{T8?J}Cvqm{2cXsQ10o|Mqx^|WjDa(|xno*HRLkIc+0b+TW{Y2dhd*9COni^$% zlbvY zMNDh+3iM-fzhp>-!#pwJ13+YL3uKOoMC>BRNY;_pDxk1bvryC*tTNU+({Nx^V}6)zDIs~9_pW6qK;A}F zjZ6Eu`^hT+cNWpuoxFJ$lWCp^{B61ijZx7a*wk8-1{_7Y*U-a7ZbWPXc5vVX!oNnCN*9LJ!4YIKy2JlQ>^ z(hgUWp1Mp$>?7UN(5+T$TDePO)O1(m-Up;E>C`xN{RL5+7FC9}XN7K! zQ`rY1_rc{V!wuD847__$Wk6rc{VLILuHg4O9|xgd!~-@$+;ovAA`7(A3Q+{OX24H7 z9e7WEnJI047@QDG`iOpoL5b6?7fSk=C4rx@`?w_~?i2Rgc3T0#pQfhw0*lGdusLJ7 z|5D#p1Yo&Q-M0;+RC)P_fUxottxU{~ZJO9JKDnj0WeeeH(=GbnC{ZgQ2W|J{xv|Y- zT}umpHtBy;Q{nq>Gula|46|(Jf8py_qPek=M!nVKtCgX~8yFRLuuk%rph0i7b;mn8 zGfhj~ebRnw?yvOQg;_V;Ux!ckhEMm|Cqmyg+~0&xe;Yo1%0A&?-f({xKK*_8^lAHq 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�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

*75{hIf~S8C+>5I`ZgPH; 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%0DJCcyx5^TC3zfCF%R$p;&S%SHqax#Csumoc( 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⁡TXiOY&% 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%0D5wohB2O%k$frMDo@WXww~X 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 literal 0 HcmV?d00001 diff --git a/dist/decoder.worker.js b/dist/decoder.worker.js new file mode 100644 index 0000000..e229e81 --- /dev/null +++ b/dist/decoder.worker.js @@ -0,0 +1,8 @@ +/* +* +* DecoderWorker.js v0.1.0-beta.1 +* Copyright (c) 2024-8-1 Ezviz-OpenBiz +* . +* +*/ +!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";var e={DEFAULT_SAMPLERATE:44100,DEFAULT_CHANNEL:1,H264AUD:[0,0,0,1,9,224],H265AUD:[0,0,0,1,70,1,80],DEF_AAC:"aac",DEF_MP3:"mp3",DEF_H265:"h265",DEF_HEVC:"hevc",DEF_H264:"h264",DEF_AVC:"avc",CODEC_OFFSET_TABLE:["hevc","h265","avc","h264","aac","mp3"]};function r(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var t={exports:{}};!function(e,r){function t(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var d,f,p=(f="undefined"!=typeof document?null==(d=document.currentScript)?void 0:d.src:void 0,function(e){var r,t=function(){var r=dr.value;r in e||Object.defineProperty(e,r,{configurable:!0,get:function(){q("Access to module property ('"+r+"') is no longer possible via the module constructor argument; Instead, use the result of the module constructor.")}})};void 0===e&&(e={});var n,i,d=Object.assign({},e),p=new Promise((function(e,r){n=e,i=r}));["_malloc","_free","_memory","_registerWasmPlayer","_setCodecType","_exitWasmPlayer","_initDecoder","_decodeCodecContext","_destroy","_demuxTsStream","_getPacket","_getVLCLen","_getVLC","_getVPSLen","_getVPS","_getSPSLen","_getSPS","_getPPSLen","_getPPS","_getSEILen","_getSEI","___indirect_function_table","_ff_h264_cabac_tables","onRuntimeInitialized"].forEach((function(e){Object.getOwnPropertyDescriptor(p,e)||Object.defineProperty(p,e,{get:function(){return q("You are getting "+e+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")},set:function(){return q("You are setting "+e+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})}));var m="object"==("undefined"==typeof window?"undefined":u(window)),h="function"==typeof importScripts,g="object"==("undefined"==typeof process?"undefined":u(process))&&"object"==u(process.versions)&&"string"==typeof process.versions.node,v=!m&&!g&&!h;if(d.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)");var E,y,w,b=Object.assign({},d),_="./this.program",S="";if(v){if("object"==("undefined"==typeof process?"undefined":u(process))||"object"==("undefined"==typeof window?"undefined":u(window))||"function"==typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)")}else{if(!m&&!h)throw new Error("environment detection error");if(h?S=self.location.href:"undefined"!=typeof document&&document.currentScript&&(S=document.currentScript.src),f&&(S=f),S=S.startsWith("blob:")?"":S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1),"object"!=("undefined"==typeof window?"undefined":u(window))&&"function"!=typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");E=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},h&&(w=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),y=function(e,r,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=function(){200==n.status||0==n.status&&n.response?r(n.response):t()},n.onerror=t,n.send(null)}}var O,T,k,A=d.print||console.log.bind(console),M=d.printErr||console.error.bind(console);Object.assign(d,b),b=null,O="fetchSettings",Object.getOwnPropertyDescriptor(d,O)&&q("`Module."+O+"` was supplied but `"+O+"` not included in INCOMING_MODULE_JS_API"),d.arguments&&d.arguments,ie("arguments","arguments_"),d.thisProgram&&(_=d.thisProgram),ie("thisProgram","thisProgram"),d.quit&&d.quit,ie("quit","quit_"),L(void 0===d.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),L(void 0===d.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),L(void 0===d.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),L(void 0===d.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),L(void 0===d.read,"Module.read option was removed (modify read_ in JS)"),L(void 0===d.readAsync,"Module.readAsync option was removed (modify readAsync in JS)"),L(void 0===d.readBinary,"Module.readBinary option was removed (modify readBinary in JS)"),L(void 0===d.setWindowTitle,"Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)"),L(void 0===d.TOTAL_MEMORY,"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),ie("asm","wasmExports"),ie("read","read_"),ie("readAsync","readAsync"),ie("readBinary","readBinary"),ie("setWindowTitle","setWindowTitle"),L(!g,"node environment detected but not enabled at build time. Add `node` to `-sENVIRONMENT` to enable."),L(!v,"shell environment detected but not enabled at build time. Add `shell` to `-sENVIRONMENT` to enable."),d.wasmBinary&&(T=d.wasmBinary),ie("wasmBinary","wasmBinary"),"object"!=("undefined"==typeof WebAssembly?"undefined":u(WebAssembly))&&M("no native wasm support detected");var P,F,C,D,x,I=!1;function L(e,r){e||q("Assertion failed"+(r?": "+r:""))}function N(){var e=k.buffer;d.HEAP8=P=new Int8Array(e),d.HEAP16=C=new Int16Array(e),d.HEAPU8=F=new Uint8Array(e),d.HEAPU16=new Uint16Array(e),d.HEAP32=D=new Int32Array(e),d.HEAPU32=x=new Uint32Array(e),d.HEAPF32=new Float32Array(e),d.HEAPF64=new Float64Array(e)}function R(){if(!I){var e=ir();0==e&&(e+=4);var r=x[e>>2],t=x[e+4>>2];34821223==r&&2310721022==t||q("Stack overflow! Stack cookie has been overwritten at "+le(e)+", expected hex dwords 0x89BACDFE and 0x2135467, but received "+le(t)+" "+le(r)),1668509029!=x[0]&&q("Runtime error: The application has corrupted its heap memory area (address zero)!")}}L(!d.STACK_SIZE,"STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time"),L("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&null!=Int32Array.prototype.subarray&&null!=Int32Array.prototype.set,"JS engine does not provide full typed array support"),L(!d.wasmMemory,"Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally"),L(!d.INITIAL_MEMORY,"Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically"),function(){var e=new Int16Array(1),r=new Int8Array(e.buffer);if(e[0]=25459,115!==r[0]||99!==r[1])throw"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)"}();var U=[],B=[],j=[],$=!1;L(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),L(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),L(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),L(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var W=0,H=null,z=null,V={};function G(e){for(var r=e;;){if(!V[e])return e;e=r+Math.random()}}function Y(e){var r;W++,null==(r=d.monitorRunDependencies)||r.call(d,W),e?(L(!V[e]),V[e]=1,null===H&&"undefined"!=typeof setInterval&&(H=setInterval((function(){if(I)return clearInterval(H),void(H=null);var e=!1;for(var r in V)e||(e=!0,M("still waiting on run dependencies:")),M("dependency: "+r);e&&M("(end of list)")}),1e4))):M("warning: run dependency added without ID")}function Q(e){var r;if(W--,null==(r=d.monitorRunDependencies)||r.call(d,W),e?(L(V[e]),delete V[e]):M("warning: run dependency removed without ID"),0==W&&(null!==H&&(clearInterval(H),H=null),z)){var t=z;z=null,t()}}function q(e){var r;null==(r=d.onAbort)||r.call(d,e),M(e="Aborted("+e+")"),I=!0;var t=new WebAssembly.RuntimeError(e);throw i(t),t}var K,X,J,Z=function(e){return e.startsWith("data:application/octet-stream;base64,")},ee=function(e){return e.startsWith("file://")};function re(e,r){return function(){for(var t=arguments.length,n=new Array(t),o=0;o0;)e.shift()(d)};d.noExitRuntime;var le=function(e){return L("number"==typeof e),"0x"+(e>>>=0).toString(16).padStart(8,"0")},de=function(e){var r;(r=de).shown||(r.shown={}),de.shown[e]||(de.shown[e]=1,M(e))};function fe(){L(null!=xe.varargs);var e=D[+xe.varargs>>2];return xe.varargs+=4,e}var pe=fe,me={isAbs:function(e){return"/"===e.charAt(0)},splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,r){for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:function(e){var r=me.isAbs(e),t="/"===e.substr(-1);return(e=me.normalizeArray(e.split("/").filter((function(e){return!!e})),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:function(e){var r=me.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:function(e){if("/"===e)return"/";var r=(e=(e=me.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===r?e:e.substr(r+1)},join:function(){for(var e=arguments.length,r=new Array(e),t=0;t { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")}())(e)},ge={resolve:function(){for(var e=arguments.length,r=new Array(e),t=0;t=-1&&!o;i--){var a=i>=0?r[i]:Ce.cwd();if("string"!=typeof a)throw new TypeError("Arguments to path.resolve must be strings");if(!a)return"";n=a+"/"+n,o=me.isAbs(a)}return(o?"/":"")+(n=me.normalizeArray(n.split("/").filter((function(e){return!!e})),!o).join("/"))||"."},relative:function(e,r){var t=function(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)};e=ge.resolve(e).substr(1),r=ge.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),i=Math.min(n.length,o.length),a=i,s=0;s=n);)++o;if(o-r>16&&e.buffer&&ve)return ve.decode(e.subarray(r,o));for(var i="";r>10,56320|1023&c)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i},ye=[],we=function(e){for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r},be=function(e,r,t,n){if(L("string"==typeof e,"stringToUTF8Array expects a string (got "+(void 0===e?"undefined":u(e))+")"),!(n>0))return 0;for(var o=t,i=t+n-1,a=0;a=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a)),s<=127){if(t>=i)break;r[t++]=s}else if(s<=2047){if(t+1>=i)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=i)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=i)break;s>1114111&&de("Invalid Unicode code point "+le(s)+" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF)."),r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o};function _e(e,r,t){var n=we(e)+1,o=new Array(n),i=be(e,o,0,o.length);return o.length=i,o}var Se,Oe={ttys:[],init:function(){},shutdown:function(){},register:function(e,r){Oe.ttys[e]={input:[],output:[],ops:r},Ce.registerDevice(e,Oe.stream_ops)},stream_ops:{open:function(e){var r=Oe.ttys[e.node.rdev];if(!r)throw new Ce.ErrnoError(43);e.tty=r,e.seekable=!1},close:function(e){e.tty.ops.fsync(e.tty)},fsync:function(e){e.tty.ops.fsync(e.tty)},read:function(e,r,t,n,o){if(!e.tty||!e.tty.ops.get_char)throw new Ce.ErrnoError(60);for(var i=0,a=0;a0&&(A(Ee(e.output,0)),e.output=[])},ioctl_tcgets:function(e){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets:function(e,r,t){return 0},ioctl_tiocgwinsz:function(e){return[24,80]}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(M(Ee(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},fsync:function(e){e.output&&e.output.length>0&&(M(Ee(e.output,0)),e.output=[])}}},Te=function(e){q("internal error: mmapAlloc called but `emscripten_builtin_memalign` native symbol not exported")},ke={ops_table:null,mount:function(e){return ke.createNode(null,"/",16895,0)},createNode:function(e,r,t,n){var o;if(Ce.isBlkdev(t)||Ce.isFIFO(t))throw new Ce.ErrnoError(63);(o=ke).ops_table||(o.ops_table={dir:{node:{getattr:ke.node_ops.getattr,setattr:ke.node_ops.setattr,lookup:ke.node_ops.lookup,mknod:ke.node_ops.mknod,rename:ke.node_ops.rename,unlink:ke.node_ops.unlink,rmdir:ke.node_ops.rmdir,readdir:ke.node_ops.readdir,symlink:ke.node_ops.symlink},stream:{llseek:ke.stream_ops.llseek}},file:{node:{getattr:ke.node_ops.getattr,setattr:ke.node_ops.setattr},stream:{llseek:ke.stream_ops.llseek,read:ke.stream_ops.read,write:ke.stream_ops.write,allocate:ke.stream_ops.allocate,mmap:ke.stream_ops.mmap,msync:ke.stream_ops.msync}},link:{node:{getattr:ke.node_ops.getattr,setattr:ke.node_ops.setattr,readlink:ke.node_ops.readlink},stream:{}},chrdev:{node:{getattr:ke.node_ops.getattr,setattr:ke.node_ops.setattr},stream:Ce.chrdev_stream_ops}});var i=Ce.createNode(e,r,t,n);return Ce.isDir(i.mode)?(i.node_ops=ke.ops_table.dir.node,i.stream_ops=ke.ops_table.dir.stream,i.contents={}):Ce.isFile(i.mode)?(i.node_ops=ke.ops_table.file.node,i.stream_ops=ke.ops_table.file.stream,i.usedBytes=0,i.contents=null):Ce.isLink(i.mode)?(i.node_ops=ke.ops_table.link.node,i.stream_ops=ke.ops_table.link.stream):Ce.isChrdev(i.mode)&&(i.node_ops=ke.ops_table.chrdev.node,i.stream_ops=ke.ops_table.chrdev.stream),i.timestamp=Date.now(),e&&(e.contents[r]=i,e.timestamp=i.timestamp),i},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r)if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}},node_ops:{getattr:function(e){var r={};return r.dev=Ce.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,Ce.isDir(e.mode)?r.size=4096:Ce.isFile(e.mode)?r.size=e.usedBytes:Ce.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&ke.resizeFileStorage(e,r.size)},lookup:function(e,r){throw Ce.genericErrors[44]},mknod:function(e,r,t,n){return ke.createNode(e,r,t,n)},rename:function(e,r,t){if(Ce.isDir(e.mode)){var n;try{n=Ce.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new Ce.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=Ce.lookupNode(e,r);for(var n in t.contents)throw new Ce.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){for(var r,t=[".",".."],n=l(Object.keys(e.contents));!(r=n()).done;){var o=r.value;t.push(o)}return t},symlink:function(e,r,t){var n=ke.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!Ce.isLink(e.mode))throw new Ce.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var i=e.node.contents;if(o>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-o,n);if(L(a>=0),a>8&&i.subarray)r.set(i.subarray(o,o+a),t);else for(var s=0;s0||t+r8)throw new Ce.ErrnoError(32);for(var t=e.split("/").filter((function(e){return!!e})),n=Ce.root,o="/",i=0;i40)throw new Ce.ErrnoError(32)}}return{path:o,node:n}},getPath:function(e){for(var r;;){if(Ce.isRoot(e)){var t=e.mount.mountpoint;return r?"/"!==t[t.length-1]?t+"/"+r:t+r:t}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:function(e,r){for(var t=0,n=0;n>>0)%Ce.nameTable.length},hashAddNode:function(e){var r=Ce.hashName(e.parent.id,e.name);e.name_next=Ce.nameTable[r],Ce.nameTable[r]=e},hashRemoveNode:function(e){var r=Ce.hashName(e.parent.id,e.name);if(Ce.nameTable[r]===e)Ce.nameTable[r]=e.name_next;else for(var t=Ce.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:function(e,r){var t=Ce.mayLookup(e);if(t)throw new Ce.ErrnoError(t);for(var n=Ce.hashName(e.id,r),o=Ce.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===e.id&&i===r)return o}return Ce.lookup(e,r)},createNode:function(e,r,t,n){L("object"==(void 0===e?"undefined":u(e)));var o=new Ce.FSNode(e,r,t,n);return Ce.hashAddNode(o),o},destroyNode:function(e){Ce.hashRemoveNode(e)},isRoot:function(e){return e===e.parent},isMountpoint:function(e){return!!e.mounted},isFile:function(e){return 32768==(61440&e)},isDir:function(e){return 16384==(61440&e)},isLink:function(e){return 40960==(61440&e)},isChrdev:function(e){return 8192==(61440&e)},isBlkdev:function(e){return 24576==(61440&e)},isFIFO:function(e){return 4096==(61440&e)},isSocket:function(e){return!(49152&~e)},flagsToPermissionString:function(e){var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:function(e,r){return Ce.ignorePermissions||(!r.includes("r")||292&e.mode)&&(!r.includes("w")||146&e.mode)&&(!r.includes("x")||73&e.mode)?0:2},mayLookup:function(e){if(!Ce.isDir(e.mode))return 54;var r=Ce.nodePermissions(e,"x");return r||(e.node_ops.lookup?0:2)},mayCreate:function(e,r){try{return Ce.lookupNode(e,r),20}catch(e){}return Ce.nodePermissions(e,"wx")},mayDelete:function(e,r,t){var n;try{n=Ce.lookupNode(e,r)}catch(e){return e.errno}var o=Ce.nodePermissions(e,"wx");if(o)return o;if(t){if(!Ce.isDir(n.mode))return 54;if(Ce.isRoot(n)||Ce.getPath(n)===Ce.cwd())return 10}else if(Ce.isDir(n.mode))return 31;return 0},mayOpen:function(e,r){return e?Ce.isLink(e.mode)?32:Ce.isDir(e.mode)&&("r"!==Ce.flagsToPermissionString(r)||512&r)?31:Ce.nodePermissions(e,Ce.flagsToPermissionString(r)):44},MAX_OPEN_FDS:4096,nextfd:function(){for(var e=0;e<=Ce.MAX_OPEN_FDS;e++)if(!Ce.streams[e])return e;throw new Ce.ErrnoError(33)},getStreamChecked:function(e){var r=Ce.getStream(e);if(!r)throw new Ce.ErrnoError(8);return r},getStream:function(e){return Ce.streams[e]},createStream:function(e,r){return void 0===r&&(r=-1),e=Object.assign(new Ce.FSStream,e),-1==r&&(r=Ce.nextfd()),e.fd=r,Ce.streams[r]=e,e},closeStream:function(e){Ce.streams[e]=null},dupStream:function(e,r){var t,n;void 0===r&&(r=-1);var o=Ce.createStream(e,r);return null==(n=o.stream_ops)||null==(t=n.dup)||t.call(n,o),o},chrdev_stream_ops:{open:function(e){var r=Ce.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,null==e.stream_ops.open||e.stream_ops.open.call(e.stream_ops,e)},llseek:function(){throw new Ce.ErrnoError(70)}},major:function(e){return e>>8},minor:function(e){return 255&e},makedev:function(e,r){return e<<8|r},registerDevice:function(e,r){Ce.devices[e]={stream_ops:r}},getDevice:function(e){return Ce.devices[e]},getMounts:function(e){for(var r=[],t=[e];t.length;){var n,o=t.pop();r.push(o),(n=t).push.apply(n,[].concat(o.mounts))}return r},syncfs:function(e,r){"function"==typeof e&&(r=e,e=!1),Ce.syncFSRequests++,Ce.syncFSRequests>1&&M("warning: "+Ce.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=Ce.getMounts(Ce.root.mount),n=0;function o(e){return L(Ce.syncFSRequests>0),Ce.syncFSRequests--,r(e)}function i(e){if(e)return i.errored?void 0:(i.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach((function(r){if(!r.type.syncfs)return i(null);r.type.syncfs(r,e,i)}))},mount:function(e,r,t){if("string"==typeof e)throw e;var n,o="/"===t,i=!t;if(o&&Ce.root)throw new Ce.ErrnoError(10);if(!o&&!i){var a=Ce.lookupPath(t,{follow_mount:!1});if(t=a.path,n=a.node,Ce.isMountpoint(n))throw new Ce.ErrnoError(10);if(!Ce.isDir(n.mode))throw new Ce.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?Ce.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:function(e){var r=Ce.lookupPath(e,{follow_mount:!1});if(!Ce.isMountpoint(r.node))throw new Ce.ErrnoError(28);var t=r.node,n=t.mounted,o=Ce.getMounts(n);Object.keys(Ce.nameTable).forEach((function(e){for(var r=Ce.nameTable[e];r;){var t=r.name_next;o.includes(r.mount)&&Ce.destroyNode(r),r=t}})),t.mounted=null;var i=t.mount.mounts.indexOf(n);L(-1!==i),t.mount.mounts.splice(i,1)},lookup:function(e,r){return e.node_ops.lookup(e,r)},mknod:function(e,r,t){var n=Ce.lookupPath(e,{parent:!0}).node,o=me.basename(e);if(!o||"."===o||".."===o)throw new Ce.ErrnoError(28);var i=Ce.mayCreate(n,o);if(i)throw new Ce.ErrnoError(i);if(!n.node_ops.mknod)throw new Ce.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:function(e,r){return r=void 0!==r?r:438,r&=4095,r|=32768,Ce.mknod(e,r,0)},mkdir:function(e,r){return r=void 0!==r?r:511,r&=1023,r|=16384,Ce.mknod(e,r,0)},mkdirTree:function(e,r){for(var t=e.split("/"),n="",o=0;o=0),n<0||o<0)throw new Ce.ErrnoError(28);if(Ce.isClosed(e))throw new Ce.ErrnoError(8);if(1==(2097155&e.flags))throw new Ce.ErrnoError(8);if(Ce.isDir(e.node.mode))throw new Ce.ErrnoError(31);if(!e.stream_ops.read)throw new Ce.ErrnoError(28);var i=void 0!==o;if(i){if(!e.seekable)throw new Ce.ErrnoError(70)}else o=e.position;var a=e.stream_ops.read(e,r,t,n,o);return i||(e.position+=a),a},write:function(e,r,t,n,o,i){if(L(t>=0),n<0||o<0)throw new Ce.ErrnoError(28);if(Ce.isClosed(e))throw new Ce.ErrnoError(8);if(!(2097155&e.flags))throw new Ce.ErrnoError(8);if(Ce.isDir(e.node.mode))throw new Ce.ErrnoError(31);if(!e.stream_ops.write)throw new Ce.ErrnoError(28);e.seekable&&1024&e.flags&&Ce.llseek(e,0,2);var a=void 0!==o;if(a){if(!e.seekable)throw new Ce.ErrnoError(70)}else o=e.position;var s=e.stream_ops.write(e,r,t,n,o,i);return a||(e.position+=s),s},allocate:function(e,r,t){if(Ce.isClosed(e))throw new Ce.ErrnoError(8);if(r<0||t<=0)throw new Ce.ErrnoError(28);if(!(2097155&e.flags))throw new Ce.ErrnoError(8);if(!Ce.isFile(e.node.mode)&&!Ce.isDir(e.node.mode))throw new Ce.ErrnoError(43);if(!e.stream_ops.allocate)throw new Ce.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap:function(e,r,t,n,o){if(2&n&&!(2&o)&&2!=(2097155&e.flags))throw new Ce.ErrnoError(2);if(1==(2097155&e.flags))throw new Ce.ErrnoError(2);if(!e.stream_ops.mmap)throw new Ce.ErrnoError(43);return e.stream_ops.mmap(e,r,t,n,o)},msync:function(e,r,t,n,o){return L(t>=0),e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0},ioctl:function(e,r,t){if(!e.stream_ops.ioctl)throw new Ce.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile:function(e,r){if(void 0===r&&(r={}),r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw new Error('Invalid encoding type "'+r.encoding+'"');var t,n=Ce.open(e,r.flags),o=Ce.stat(e).size,i=new Uint8Array(o);return Ce.read(n,i,0,o,0),"utf8"===r.encoding?t=Ee(i,0):"binary"===r.encoding&&(t=i),Ce.close(n),t},writeFile:function(e,r,t){void 0===t&&(t={}),t.flags=t.flags||577;var n=Ce.open(e,t.flags,t.mode);if("string"==typeof r){var o=new Uint8Array(we(r)+1),i=be(r,o,0,o.length);Ce.write(n,o,0,i,void 0,t.canOwn)}else{if(!ArrayBuffer.isView(r))throw new Error("Unsupported data type");Ce.write(n,r,0,r.byteLength,void 0,t.canOwn)}Ce.close(n)},cwd:function(){return Ce.currentPath},chdir:function(e){var r=Ce.lookupPath(e,{follow:!0});if(null===r.node)throw new Ce.ErrnoError(44);if(!Ce.isDir(r.node.mode))throw new Ce.ErrnoError(54);var t=Ce.nodePermissions(r.node,"x");if(t)throw new Ce.ErrnoError(t);Ce.currentPath=r.path},createDefaultDirectories:function(){Ce.mkdir("/tmp"),Ce.mkdir("/home"),Ce.mkdir("/home/web_user")},createDefaultDevices:function(){Ce.mkdir("/dev"),Ce.registerDevice(Ce.makedev(1,3),{read:function(){return 0},write:function(e,r,t,n,o){return n}}),Ce.mkdev("/dev/null",Ce.makedev(1,3)),Oe.register(Ce.makedev(5,0),Oe.default_tty_ops),Oe.register(Ce.makedev(6,0),Oe.default_tty1_ops),Ce.mkdev("/dev/tty",Ce.makedev(5,0)),Ce.mkdev("/dev/tty1",Ce.makedev(6,0));var e=new Uint8Array(1024),r=0,t=function(){return 0===r&&(r=he(e).byteLength),e[--r]};Ce.createDevice("/dev","random",t),Ce.createDevice("/dev","urandom",t),Ce.mkdir("/dev/shm"),Ce.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){Ce.mkdir("/proc");var e=Ce.mkdir("/proc/self");Ce.mkdir("/proc/self/fd"),Ce.mount({mount:function(){var r=Ce.createNode(e,"fd",16895,73);return r.node_ops={lookup:function(e,r){var t=+r,n=Ce.getStreamChecked(t),o={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return n.path}}};return o.parent=o,o}},r}},{},"/proc/self/fd")},createStandardStreams:function(){d.stdin?Ce.createDevice("/dev","stdin",d.stdin):Ce.symlink("/dev/tty","/dev/stdin"),d.stdout?Ce.createDevice("/dev","stdout",null,d.stdout):Ce.symlink("/dev/tty","/dev/stdout"),d.stderr?Ce.createDevice("/dev","stderr",null,d.stderr):Ce.symlink("/dev/tty1","/dev/stderr");var e=Ce.open("/dev/stdin",0),r=Ce.open("/dev/stdout",1),t=Ce.open("/dev/stderr",1);L(0===e.fd,"invalid handle for stdin ("+e.fd+")"),L(1===r.fd,"invalid handle for stdout ("+r.fd+")"),L(2===t.fd,"invalid handle for stderr ("+t.fd+")")},staticInit:function(){[44].forEach((function(e){Ce.genericErrors[e]=new Ce.ErrnoError(e),Ce.genericErrors[e].stack=""})),Ce.nameTable=new Array(4096),Ce.mount(ke,{},"/"),Ce.createDefaultDirectories(),Ce.createDefaultDevices(),Ce.createSpecialDirectories(),Ce.filesystems={MEMFS:ke}},init:function(e,r,t){L(!Ce.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"),Ce.init.initialized=!0,d.stdin=e||d.stdin,d.stdout=r||d.stdout,d.stderr=t||d.stderr,Ce.createStandardStreams()},quit:function(){Ce.init.initialized=!1,tr(0);for(var e=0;ethis.length-1||e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},r.setDataGetter=function(e){this.getter=e},r.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",t,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+t+". Status: "+e.status);var r,n=Number(e.getResponseHeader("Content-length")),o=(r=e.getResponseHeader("Accept-Ranges"))&&"bytes"===r,i=(r=e.getResponseHeader("Content-Encoding"))&&"gzip"===r,a=1048576;o||(a=n);var s=this;s.setDataGetter((function(e){var r=e*a,o=(e+1)*a-1;if(o=Math.min(o,n-1),void 0===s.chunks[e]&&(s.chunks[e]=function(e,r){if(e>r)throw new Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==a&&o.setRequestHeader("Range","bytes="+e+"-"+r),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):_e(o.responseText||"")}(r,o)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!i&&n||(a=n=1,n=this.getter(0).length,a=n,A("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=a,this.lengthKnown=!0},o(e,[{key:"length",get:function(){return this.lengthKnown||this.cacheLength(),this._length}},{key:"chunkSize",get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}]),e}();if("undefined"!=typeof XMLHttpRequest){if(!h)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var s={isDevice:!1,contents:new a}}else s={isDevice:!1,url:t};var u=Ce.createFile(e,r,s,n,i);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};function l(e,r,t,n,o){var i=e.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(L(a>=0),i.slice)for(var s=0;s>2]=n.dev,D[t+4>>2]=n.mode,x[t+8>>2]=n.nlink,D[t+12>>2]=n.uid,D[t+16>>2]=n.gid,D[t+20>>2]=n.rdev,J=[n.size>>>0,(X=n.size,+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[t+24>>2]=J[0],D[t+28>>2]=J[1],D[t+32>>2]=4096,D[t+36>>2]=n.blocks;var o=n.atime.getTime(),i=n.mtime.getTime(),a=n.ctime.getTime();return J=[Math.floor(o/1e3)>>>0,(X=Math.floor(o/1e3),+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[t+40>>2]=J[0],D[t+44>>2]=J[1],x[t+48>>2]=o%1e3*1e3,J=[Math.floor(i/1e3)>>>0,(X=Math.floor(i/1e3),+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[t+56>>2]=J[0],D[t+60>>2]=J[1],x[t+64>>2]=i%1e3*1e3,J=[Math.floor(a/1e3)>>>0,(X=Math.floor(a/1e3),+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[t+72>>2]=J[0],D[t+76>>2]=J[1],x[t+80>>2]=a%1e3*1e3,J=[n.ino>>>0,(X=n.ino,+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[t+88>>2]=J[0],D[t+92>>2]=J[1],0},doMsync:function(e,r,t,n,o){if(!Ce.isFile(r.node.mode))throw new Ce.ErrnoError(43);if(2&n)return 0;var i=F.slice(e,e+t);Ce.msync(r,i,o,t,n)},getStreamFromFD:function(e){return Ce.getStreamChecked(e)},varargs:void 0,getStr:function(e){return De(e)}},Ie=function(e,r){return L(e==e>>>0||e==(0|e)),L(r===(0|r)),r+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*r:NaN},Le=[0,31,60,91,121,152,182,213,244,274,305,335],Ne=[0,31,59,90,120,151,181,212,243,273,304,334],Re=function(e){var r;return((r=e.getFullYear())%4!=0||r%100==0&&r%400!=0?Ne:Le)[e.getMonth()]+e.getDate()-1},Ue=function(e,r,t){return L("number"==typeof t,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),be(e,F,r,t)};Se=function(){return performance.now()};var Be,je,$e=function(e){var r=k.buffer,t=(e-r.byteLength+65535)/65536;try{return k.grow(t),N(),1}catch(t){M("growMemory: Attempted to grow heap from "+r.byteLength+" bytes to "+e+" bytes, but got error: "+t)}},We={},He=function(){if(!He.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==("undefined"==typeof navigator?"undefined":u(navigator))&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:_||"./this.program"};for(var r in We)void 0===We[r]?delete e[r]:e[r]=We[r];var t=[];for(var r in e)t.push(r+"="+e[r]);He.strings=t}return He.strings},ze=function(e){return sr(e)},Ve=function(e,r,t,n,o){var i={string:function(e){var r=0;return null!=e&&0!==e&&(r=function(e){var r=we(e)+1,t=ze(r);return Ue(e,t,r),t}(e)),r},array:function(e){var r,t,n=ze(e.length);return t=n,L((r=e).length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)"),P.set(r,t),n}},a=function(e){var r=d["_"+e];return L(r,"Cannot call unknown function "+e+", make sure it is exported"),r}(e),s=[],u=0;if(L("array"!==r,'Return type should not be "array".'),n)for(var c=0;c>7)},Ye=function(e,r){var t;if(L(!r.includes("j"),"i64 not permitted in function signatures when WASM_BIGINT is disabled"),"function"==typeof WebAssembly.Function)return new WebAssembly.Function(function(e){L(!e.includes("j"),"i64 not permitted in function signatures when WASM_BIGINT is disabled");for(var r={i:"i32",j:"i64",f:"f32",d:"f64",e:"externref",p:"i32"},t={parameters:[],results:"v"==e[0]?[]:[r[e[0]]]},n=1;n=Qe.length&&(Qe.length=e+1),Qe[e]=r=Be.get(e)),L(Be.get(e)==r,"JavaScript-side Wasm function table mirror is out of date!"),r},Ke=function(e){return je||(je=new WeakMap,function(e,r){if(je)for(var t=e;t>1]=2,0}return-28}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_openat:function(e,r,t,n){xe.varargs=n;try{r=xe.getStr(r),r=xe.calculateAt(e,r);var o=n?fe():0;return Ce.open(r,t,o).fd}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return-e.errno}},_abort_js:function(){q("native code called abort()")},_emscripten_get_now_is_monotonic:function(){return 1},_emscripten_memcpy_js:function(e,r,t){return F.copyWithin(e,r,r+t)},_gmtime_js:function(e,r,t){var n=Ie(e,r),o=new Date(1e3*n);D[t>>2]=o.getUTCSeconds(),D[t+4>>2]=o.getUTCMinutes(),D[t+8>>2]=o.getUTCHours(),D[t+12>>2]=o.getUTCDate(),D[t+16>>2]=o.getUTCMonth(),D[t+20>>2]=o.getUTCFullYear()-1900,D[t+24>>2]=o.getUTCDay();var i=Date.UTC(o.getUTCFullYear(),0,1,0,0,0,0),a=(o.getTime()-i)/864e5|0;D[t+28>>2]=a},_localtime_js:function(e,r,t){var n=Ie(e,r),o=new Date(1e3*n);D[t>>2]=o.getSeconds(),D[t+4>>2]=o.getMinutes(),D[t+8>>2]=o.getHours(),D[t+12>>2]=o.getDate(),D[t+16>>2]=o.getMonth(),D[t+20>>2]=o.getFullYear()-1900,D[t+24>>2]=o.getDay();var i=0|Re(o);D[t+28>>2]=i,D[t+36>>2]=-60*o.getTimezoneOffset();var a=new Date(o.getFullYear(),0,1),s=new Date(o.getFullYear(),6,1).getTimezoneOffset(),u=a.getTimezoneOffset(),c=0|(s!=u&&o.getTimezoneOffset()==Math.min(u,s));D[t+32>>2]=c},_mktime_js:function(e){var r,t=function(){var r=new Date(D[e+20>>2]+1900,D[e+16>>2],D[e+12>>2],D[e+8>>2],D[e+4>>2],D[e>>2],0),t=D[e+32>>2],n=r.getTimezoneOffset(),o=new Date(r.getFullYear(),0,1),i=new Date(r.getFullYear(),6,1).getTimezoneOffset(),a=o.getTimezoneOffset(),s=Math.min(a,i);if(t<0)D[e+32>>2]=Number(i!=a&&s==n);else if(t>0!=(s==n)){var u=Math.max(a,i),c=t>0?s:u;r.setTime(r.getTime()+6e4*(c-n))}D[e+24>>2]=r.getDay();var l=0|Re(r);D[e+28>>2]=l,D[e>>2]=r.getSeconds(),D[e+4>>2]=r.getMinutes(),D[e+8>>2]=r.getHours(),D[e+12>>2]=r.getDate(),D[e+16>>2]=r.getMonth(),D[e+20>>2]=r.getYear();var d=r.getTime();return isNaN(d)?-1:d/1e3}();return X=t,r=+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0,nr(r),t>>>0},_tzset_js:function(e,r,t,n){var o=(new Date).getFullYear(),i=new Date(o,0,1),a=new Date(o,6,1),s=i.getTimezoneOffset(),u=a.getTimezoneOffset(),c=Math.max(s,u);x[e>>2]=60*c,D[r>>2]=Number(s!=u);var l=function(e){return e.toLocaleTimeString(void 0,{hour12:!1,timeZoneName:"short"}).split(" ")[1]},d=l(i),f=l(a);L(d),L(f),L(we(d)<=16,"timezone name truncated to fit in TZNAME_MAX ("+d+")"),L(we(f)<=16,"timezone name truncated to fit in TZNAME_MAX ("+f+")"),u>>=0)>r);var t=2147483648;if(e>t)return M("Cannot enlarge memory, requested "+e+" bytes, but the limit is "+t+" bytes!"),!1;for(var n,o,i=1;i<=4;i*=2){var a=r*(1+.2/i);a=Math.min(a,e+100663296);var s=Math.min(t,(n=Math.max(e,a))+((o=65536)-n%o)%o);if($e(s))return!0}return M("Failed to grow the heap from "+r+" bytes to "+s+" bytes, not enough memory!"),!1},environ_get:function(e,r){var t=0;return He().forEach((function(n,o){var i=r+t;x[e+4*o>>2]=i,function(e,r){for(var t=0;t>2]=t.length;var n=0;return t.forEach((function(e){return n+=e.length+1})),x[r>>2]=n,0},fd_close:function(e){try{var r=xe.getStreamFromFD(e);return Ce.close(r),0}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return e.errno}},fd_fdstat_get:function(e,r){try{var t=xe.getStreamFromFD(e),n=t.tty?2:Ce.isDir(t.mode)?3:Ce.isLink(t.mode)?7:4;return P[r]=n,C[r+2>>1]=0,J=[0,(X=0,+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[r+8>>2]=J[0],D[r+12>>2]=J[1],J=[0,(X=0,+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[r+16>>2]=J[0],D[r+20>>2]=J[1],0}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return e.errno}},fd_read:function(e,r,t,n){try{var o=function(e,r,t,n){for(var o=0,i=0;i>2],s=x[r+4>>2];r+=8;var u=Ce.read(e,P,a,s,n);if(u<0)return-1;if(o+=u,u>2]=o,0}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return e.errno}},fd_seek:function(e,r,t,n,o){var i=Ie(r,t);try{if(isNaN(i))return 61;var a=xe.getStreamFromFD(e);return Ce.llseek(a,i,n),J=[a.position>>>0,(X=a.position,+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[o>>2]=J[0],D[o+4>>2]=J[1],a.getdents&&0===i&&0===n&&(a.getdents=null),0}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return e.errno}},fd_write:function(e,r,t,n){try{var o=function(e,r,t,n){for(var o=0,i=0;i>2],s=x[r+4>>2];r+=8;var u=Ce.write(e,P,a,s,n);if(u<0)return-1;o+=u}return o}(xe.getStreamFromFD(e),r,t);return x[n>>2]=o,0}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return e.errno}}},er=function(){var e={env:Ze,wasi_snapshot_preview1:Ze};function r(e,r){var t;return er=e.exports,L(k=er.memory,"memory not found in wasm exports"),N(),L(Be=er.__indirect_function_table,"table not found in wasm exports"),t=er.__wasm_call_ctors,B.unshift(t),Q("wasm-instantiate"),er}Y("wasm-instantiate");var t,n,o,a,s=d;if(d.instantiateWasm)try{return d.instantiateWasm(e,r)}catch(e){M("Module.instantiateWasm callback failed with error: "+e),i(e)}return K||(K=te()),(t=T,n=K,o=e,a=function(e){L(d===s,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),s=null,r(e.instance)},t||"function"!=typeof WebAssembly.instantiateStreaming||Z(n)||"function"!=typeof fetch?oe(n,o,a):fetch(n,{credentials:"same-origin"}).then((function(e){return WebAssembly.instantiateStreaming(e,o).then(a,(function(e){return M("wasm streaming compile failed: "+e),M("falling back to ArrayBuffer instantiation"),oe(n,o,a)}))}))).catch(i),{}}();d._malloc=re("malloc",1),d._free=re("free",1),d._registerWasmPlayer=re("registerWasmPlayer",0),d._setCodecType=re("setCodecType",4),d._exitWasmPlayer=re("exitWasmPlayer",1),d._initDecoder=re("initDecoder",1),d._decodeCodecContext=re("decodeCodecContext",5),d._destroy=re("destroy",1),d._demuxTsStream=re("demuxTsStream",3),d._getPacket=re("getPacket",0),d._getVLCLen=re("getVLCLen",0),d._getVLC=re("getVLC",0),d._getVPSLen=re("getVPSLen",0),d._getVPS=re("getVPS",0),d._getSPSLen=re("getSPSLen",0),d._getSPS=re("getSPS",0),d._getPPSLen=re("getPPSLen",0),d._getPPS=re("getPPS",0),d._getSEILen=re("getSEILen",0),d._getSEI=re("getSEI",0);var rr,tr=re("fflush",1),nr=re("_emscripten_tempret_set",1),or=function(){return(or=er.emscripten_stack_init)()},ir=function(){return(ir=er.emscripten_stack_get_end)()},ar=function(e){return(ar=er._emscripten_stack_restore)(e)},sr=function(e){return(sr=er._emscripten_stack_alloc)(e)},ur=function(){return(ur=er.emscripten_stack_get_current)()};function cr(){var e;or(),L(!(3&(e=ir()))),0==e&&(e+=4),x[e>>2]=34821223,x[e+4>>2]=2310721022,x[0]=1668509029}function lr(){function e(){rr||(rr=!0,d.calledRun=!0,I||(L(!$),$=!0,R(),d.noFSInit||Ce.init.initialized||Ce.init(),Ce.ignorePermissions=!1,ce(B),n(d),d.onRuntimeInitialized&&d.onRuntimeInitialized(),L(!d._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),function(){if(R(),d.postRun)for("function"==typeof d.postRun&&(d.postRun=[d.postRun]);d.postRun.length;)e=d.postRun.shift(),j.unshift(e);var e;ce(j)}()))}W>0||(cr(),function(){if(d.preRun)for("function"==typeof d.preRun&&(d.preRun=[d.preRun]);d.preRun.length;)e=d.preRun.shift(),U.unshift(e);var e;ce(U)}(),W>0||(d.setStatus?(d.setStatus("Running..."),setTimeout((function(){setTimeout((function(){d.setStatus("")}),1),e()}),1)):e(),R()))}if(d.dynCall_jiji=re("dynCall_jiji",5),d.dynCall_iiiiij=re("dynCall_iiiiij",7),d.dynCall_jiiij=re("dynCall_jiiij",6),d._ff_h264_cabac_tables=113148,d.run=lr,d.ccall=Ve,d.cwrap=function(e,r,t,n){return function(){for(var n=arguments.length,o=new Array(n),i=0;i0;)d.preInit.pop()();lr(),r=p;for(var dr,fr=l(Object.keys(d));!(dr=fr()).done;)t();return r});"object"===u(r)&&"object"===u(e)&&(e.exports=p)}(t,t.exports);var n,o,i,a,s=r(t.exports),u="wasmLoading",c="wasmLoaded",l="wasmFailed",d="registerWasmPlayer",f="videoCallback",p="decodeCodecContext",m="destroy",h="demuxTsStream",g="demuxCoreReceive",v="readPacket",E="readPacketEnd",y="mediaInfo",w=function(e,r){return{cmd:e,data:r}},b=(n="undefined"!=typeof self?self:window,o={navigator:void 0!==n.navigator?n.navigator:{userAgent:""},infoMap:{engine:["WebKit","Trident","Gecko","Presto"],browser:["Safari","Chrome","Edge","IE","Firefox","Firefox Focus","Chromium","Opera","Vivaldi","Yandex","Arora","Lunascape","QupZilla","Coc Coc","Kindle","Iceweasel","Konqueror","Iceape","SeaMonkey","Epiphany","360","360SE","360EE","UC","QQBrowser","QQ","Baidu","Maxthon","Sogou","LBBROWSER","2345Explorer","TheWorld","XiaoMi","Quark","Qiyu","Wechat","Taobao","Alipay","Weibo","Douban","Suning","iQiYi"],os:["Windows","Linux","Mac OS","Android","Ubuntu","FreeBSD","Debian","iOS","Windows Phone","BlackBerry","MeeGo","Symbian","Chrome OS","WebOS"],device:["Mobile","Tablet","iPad"]}},i={getMatchMap:function(e){return{Trident:e.indexOf("Trident")>-1||e.indexOf("NET CLR")>-1,Presto:e.indexOf("Presto")>-1,WebKit:e.indexOf("AppleWebKit")>-1,Gecko:e.indexOf("Gecko/")>-1,Safari:e.indexOf("Safari")>-1,Chrome:e.indexOf("Chrome")>-1||e.indexOf("CriOS")>-1,IE:e.indexOf("MSIE")>-1||e.indexOf("Trident")>-1,Edge:e.indexOf("Edge")>-1,Firefox:e.indexOf("Firefox")>-1||e.indexOf("FxiOS")>-1,"Firefox Focus":e.indexOf("Focus")>-1,Chromium:e.indexOf("Chromium")>-1,Opera:e.indexOf("Opera")>-1||e.indexOf("OPR")>-1,Vivaldi:e.indexOf("Vivaldi")>-1,Yandex:e.indexOf("YaBrowser")>-1,Arora:e.indexOf("Arora")>-1,Lunascape:e.indexOf("Lunascape")>-1,QupZilla:e.indexOf("QupZilla")>-1,"Coc Coc":e.indexOf("coc_coc_browser")>-1,Kindle:e.indexOf("Kindle")>-1||e.indexOf("Silk/")>-1,Iceweasel:e.indexOf("Iceweasel")>-1,Konqueror:e.indexOf("Konqueror")>-1,Iceape:e.indexOf("Iceape")>-1,SeaMonkey:e.indexOf("SeaMonkey")>-1,Epiphany:e.indexOf("Epiphany")>-1,360:e.indexOf("QihooBrowser")>-1||e.indexOf("QHBrowser")>-1,"360EE":e.indexOf("360EE")>-1,"360SE":e.indexOf("360SE")>-1,UC:e.indexOf("UC")>-1||e.indexOf(" UBrowser")>-1,QQBrowser:e.indexOf("QQBrowser")>-1,QQ:e.indexOf("QQ/")>-1,Baidu:e.indexOf("Baidu")>-1||e.indexOf("BIDUBrowser")>-1,Maxthon:e.indexOf("Maxthon")>-1,Sogou:e.indexOf("MetaSr")>-1||e.indexOf("Sogou")>-1,LBBROWSER:e.indexOf("LBBROWSER")>-1,"2345Explorer":e.indexOf("2345Explorer")>-1,TheWorld:e.indexOf("TheWorld")>-1,XiaoMi:e.indexOf("MiuiBrowser")>-1,Quark:e.indexOf("Quark")>-1,Qiyu:e.indexOf("Qiyu")>-1,Wechat:e.indexOf("MicroMessenger")>-1,Taobao:e.indexOf("AliApp(TB")>-1,Alipay:e.indexOf("AliApp(AP")>-1,Weibo:e.indexOf("Weibo")>-1,Douban:e.indexOf("com.douban.frodo")>-1,Suning:e.indexOf("SNEBUY-APP")>-1,iQiYi:e.indexOf("IqiyiApp")>-1,Windows:e.indexOf("Windows")>-1,Linux:e.indexOf("Linux")>-1||e.indexOf("X11")>-1,"Mac OS":e.indexOf("Macintosh")>-1,Android:e.indexOf("Android")>-1||e.indexOf("Adr")>-1,Ubuntu:e.indexOf("Ubuntu")>-1,FreeBSD:e.indexOf("FreeBSD")>-1,Debian:e.indexOf("Debian")>-1,"Windows Phone":e.indexOf("IEMobile")>-1||e.indexOf("Windows Phone")>-1,BlackBerry:e.indexOf("BlackBerry")>-1||e.indexOf("RIM")>-1,MeeGo:e.indexOf("MeeGo")>-1,Symbian:e.indexOf("Symbian")>-1,iOS:e.indexOf("like Mac OS X")>-1,"Chrome OS":e.indexOf("CrOS")>-1,WebOS:e.indexOf("hpwOS")>-1,Mobile:e.indexOf("Mobi")>-1||e.indexOf("iPh")>-1||e.indexOf("480")>-1,Tablet:e.indexOf("Tablet")>-1||e.indexOf("Nexus 7")>-1,iPad:e.indexOf("iPad")>-1}},matchInfoMap:function(e){var r,t=(null==(r=o.navigator)?void 0:r.userAgent)||"",n=i.getMatchMap(t);for(var a in o.infoMap)for(var s=0;s36&&n.showModalDialog?s=!0:+u>45&&(s=t("type","application/vnd.chromium.remoting-viewer"))}if(a.Baidu&&a.Opera&&(a.Baidu=!1),a.Mobile&&(a.Mobile=!r.includes("iPad")),s&&(t("type","application/gameplugin")||o.navigator&&void 0===o.navigator.connection.saveData?a["360SE"]=!0:a["360EE"]=!0),a.IE||a.Edge)switch(window.screenTop-window.screenY){case 71:case 74:case 99:case 75:case 105:break;case 102:a["360EE"]=!0;break;case 104:a["360SE"]=!0}var c={Safari:function(){return r.replace(/^.*Version\/([\d.]+).*$/,"$1")},Chrome:function(){return r.replace(/^.*Chrome\/([\d.]+).*$/,"$1").replace(/^.*CriOS\/([\d.]+).*$/,"$1")},IE:function(){return r.replace(/^.*MSIE ([\d.]+).*$/,"$1").replace(/^.*rv:([\d.]+).*$/,"$1")},Edge:function(){return r.replace(/^.*Edge\/([\d.]+).*$/,"$1")},Firefox:function(){return r.replace(/^.*Firefox\/([\d.]+).*$/,"$1").replace(/^.*FxiOS\/([\d.]+).*$/,"$1")},"Firefox Focus":function(){return r.replace(/^.*Focus\/([\d.]+).*$/,"$1")},Chromium:function(){return r.replace(/^.*Chromium\/([\d.]+).*$/,"$1")},Opera:function(){return r.replace(/^.*Opera\/([\d.]+).*$/,"$1").replace(/^.*OPR\/([\d.]+).*$/,"$1")},Vivaldi:function(){return r.replace(/^.*Vivaldi\/([\d.]+).*$/,"$1")},Yandex:function(){return r.replace(/^.*YaBrowser\/([\d.]+).*$/,"$1")},Arora:function(){return r.replace(/^.*Arora\/([\d.]+).*$/,"$1")},Lunascape:function(){return r.replace(/^.*Lunascape[\/\s]([\d.]+).*$/,"$1")},QupZilla:function(){return r.replace(/^.*QupZilla[\/\s]([\d.]+).*$/,"$1")},"Coc Coc":function(){return r.replace(/^.*coc_coc_browser\/([\d.]+).*$/,"$1")},Kindle:function(){return r.replace(/^.*Version\/([\d.]+).*$/,"$1")},Iceweasel:function(){return r.replace(/^.*Iceweasel\/([\d.]+).*$/,"$1")},Konqueror:function(){return r.replace(/^.*Konqueror\/([\d.]+).*$/,"$1")},Iceape:function(){return r.replace(/^.*Iceape\/([\d.]+).*$/,"$1")},SeaMonkey:function(){return r.replace(/^.*SeaMonkey\/([\d.]+).*$/,"$1")},Epiphany:function(){return r.replace(/^.*Epiphany\/([\d.]+).*$/,"$1")},360:function(){return r.replace(/^.*QihooBrowser\/([\d.]+).*$/,"$1")},"360SE":function(){return{63:"10.0",55:"9.1",45:"8.1",42:"8.0",31:"7.0",21:"6.3"}[+r.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},"360EE":function(){return{69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[+r.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},Maxthon:function(){return r.replace(/^.*Maxthon\/([\d.]+).*$/,"$1")},QQBrowser:function(){return r.replace(/^.*QQBrowser\/([\d.]+).*$/,"$1")},QQ:function(){return r.replace(/^.*QQ\/([\d.]+).*$/,"$1")},Baidu:function(){return r.replace(/^.*BIDUBrowser[\s\/]([\d.]+).*$/,"$1")},UC:function(){return r.replace(/^.*UC?Browser\/([\d.]+).*$/,"$1")},Sogou:function(){return r.replace(/^.*SE ([\d.X]+).*$/,"$1").replace(/^.*SogouMobileBrowser\/([\d.]+).*$/,"$1")},LBBROWSER:function(){return{57:"6.5",49:"6.0",46:"5.9",42:"5.3",39:"5.2",34:"5.0",29:"4.5",21:"4.0"}[+navigator.userAgent.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},"2345Explorer":function(){return r.replace(/^.*2345Explorer\/([\d.]+).*$/,"$1")},TheWorld:function(){return r.replace(/^.*TheWorld ([\d.]+).*$/,"$1")},XiaoMi:function(){return r.replace(/^.*MiuiBrowser\/([\d.]+).*$/,"$1")},Quark:function(){return r.replace(/^.*Quark\/([\d.]+).*$/,"$1")},Qiyu:function(){return r.replace(/^.*Qiyu\/([\d.]+).*$/,"$1")},Wechat:function(){return r.replace(/^.*MicroMessenger\/([\d.]+).*$/,"$1")},Taobao:function(){return r.replace(/^.*AliApp\(TB\/([\d.]+).*$/,"$1")},Alipay:function(){return r.replace(/^.*AliApp\(AP\/([\d.]+).*$/,"$1")},Weibo:function(){return r.replace(/^.*weibo__([\d.]+).*$/,"$1")},Douban:function(){return r.replace(/^.*com.douban.frodo\/([\d.]+).*$/,"$1")},Suning:function(){return r.replace(/^.*SNEBUY-APP([\d.]+).*$/,"$1")},iQiYi:function(){return r.replace(/^.*IqiyiVersion\/([\d.]+).*$/,"$1")}};return e.browserVersion="",c[e.browser]&&(e.browserVersion=c[e.browser](),e.browserVersion==r&&(e.browserVersion="")),"Edge"==e.browser&&(e.engine="EdgeHTML"),"Chrome"==e.browser&&parseInt(e.browserVersion)>27&&(e.engine="Blink"),"Opera"==e.browser&&parseInt(e.browserVersion)>12&&(e.engine="Blink"),"Yandex"==e.browser&&(e.engine="Blink"),e.browser+" (version: "+e.browserVersion+"; kernel: "+e.engine+")"}},a={DeviceInfoObj:function(e){var r,t=function(r){var t;null==(t=e.info)||t.forEach((function(e){e.toLowerCase()===r.toLowerCase()&&(s[r]=a[r])}))};e=e||{domain:""};var a={deviceType:i.getDeviceType(),OS:i.getOS(),OSVersion:i.getOSVersion(),sh:n.screen.height,sw:n.screen.width,lang:i.getLanguage(),netWork:i.getNetwork(),orientation:i.getOrientationStatu(),browserInfo:i.getBrowserInfo(),fingerprint:i.createFingerprint(e.domain),userAgent:null==(r=o.navigator)?void 0:r.userAgent};if(!e.info||0===e.info.length)return a;var s={};for(var u in a)t(u);return s}},{getDeviceInfo:function(e){return a.DeviceInfoObj(e)}}),_=function(){function e(){}return e.add=function(r,t){e.queues.push({url:r,data:t})},e.fire=function(){if(e.queues&&0!==e.queues.length){e.isStop=!1;var r=e.queues[0];r.url&&e.api.report(r.data),e.queues.splice(0,1),e.fire()}else e.isStop=!0},e}();_.isStop=!0,_.queues=[];var S=function(){function e(e){this.url=e}var r=e.prototype;return r.report=function(e){this.checkUrl(this.url)&&this.sendInfo(e)},r.sendInfo=function(e){navigator.sendBeacon?this.sendBeacon(this.url,e):this.sendImage(this.url,e)},r.sendImage=function(e,r){var t=this.changeJSON2Query(r),n=new Image;n.onload=n.onerror=function(){n=null},n.src=e+"?"+t+"&random="+Math.random()},r.sendBeacon=function(e,r){try{navigator.sendBeacon(e,this.formatParamsByURLSearchParams(r))}catch(e){}},r.formatParamsByURLSearchParams=function(e){var r=new URLSearchParams;for(var t in e)"object"==typeof e[t]&&(e[t]=JSON.stringify(e[t])),r.append(t,e[t]);return r},r.changeJSON2Query=function(e){var r="";for(var t in e){""!=r&&(r+="&");var n=e[t];r+=t+"="+encodeURIComponent("object"==typeof n?JSON.stringify(n):n)}return r},r.checkUrl=function(e){return!!e&&/^[hH][tT][tT][pP]([sS]?):\/\//.test(e)},e}();function O(){return O=Object.assign||function(e){for(var r=1;r0&&(r._free(l),l=null),{};var d=r.HEAPU8.subarray(l,l+c);s.sps=new Uint8Array(c),null==(n=s.sps)||n.set(d,0);var f=r.cwrap("getPPSLen","number",[])(),p=r.cwrap("getPPS","number",[])(),m=r.HEAPU8.subarray(p,p+f);s.pps=new Uint8Array(f),null==(o=s.pps)||o.set(m,0);var h=r.cwrap("getSEILen","number",[])(),g=r.cwrap("getSEI","number",[])(),v=r.HEAPU8.subarray(g,g+h);s.sei=new Uint8Array(h),null==(i=s.sei)||i.set(v,0);var E=r.cwrap("getVLCLen","number",[])(),y=r.cwrap("getVLC","number",[])(),w=r.HEAPU8.subarray(y,y+E);if(u.vlc=new Uint8Array(E),null==(a=u.vlc)||a.set(w,0),(null==t?void 0:t.vCodec)===e.DEF_HEVC||(null==t?void 0:t.vCodec)===e.DEF_H265){var b,_=r.cwrap("getVPSLen","number",[])(),S=r.cwrap("getVPS","number",[])(),O=r.HEAPU8.subarray(S,S+_);s.vps=new Uint8Array(_),null==(b=s.vps)||b.set(O,0),r._free(O),O=null}try{r._free(l)}catch(e){k.send("worker",{name:"readPacket",free:"spsPtr"})}l=null;try{r._free(d)}catch(e){k.send("worker",{name:"readPacket",free:"spsSubPtr"})}d=null;try{r._free(m)}catch(e){k.send("worker",{name:"readPacket",free:"ppsSubPtr"})}m=null;try{r._free(v)}catch(e){k.send("worker",{name:"readPacket",free:"seiSubPtr"})}v=null;try{r._free(w)}catch(e){k.send("worker",{name:"readPacket",free:"vlcSubPtr"})}return w=null,{nalu:s,vlc:u}};function F(){return F=Object.assign||function(e){for(var r=1;r0?r:e.DEFAULT_SAMPLERATE,sampleChannel:t>=0?t:e.DEFAULT_CHANNEL}:{sampleRate:0,sampleChannel:0,audioNone:!0})))}),"viiddddiiiii"),t._setCodecType(n,0,o,i),t.cwrap("initDecoder","number",["number"])(n);break;case p:var u=s.data,c=u.nalBuf,l=u.pts,b=u.flushDecoder,_=t._malloc(c.length);t.HEAP8.set(c,_);var S=parseInt(1e3*l+"");t._decodeCodecContext(n,_,c.length,S,b),t._free(_),_=null;break;case h:var O=s.data,T=O.buff;O.tsUrl,function(e,r,t,n){null!=M&&(e._free(M),M=null),M=e._malloc(r.length),e.HEAP8.set(r,M);try{var o=e.cwrap("demuxTsStream","number",["number","number","number"])(M,r.length,t);e._free(M),M=null,o>=0&&postMessage(w(g))}catch(e){k.send("worker",{name:"demuxTsStream",msg:e})}}(t,T,n);break;case v:!function(e,r){for(;;){var t=e.cwrap("getPacket","number",[])(),n=e.HEAPU32[t/4],o=e.HEAPU32[t/4+1],i=e.HEAPF64[t/8+1],a=e.HEAPF64[t/8+1+1],s=e.HEAPU32[t/4+1+1+2+2],u=e.HEAPU32[t/4+1+1+2+2+1],c=e.HEAPU8.subarray(u,u+o),l=null,d=[0,1].includes(n);if(d)try{l=P(e,r)}catch(e){}if(!d||o<=0)break;var f=a>0?a:i;f<0||0===t||(self.postMessage(w(v,{type:n,size:o,ptime:i,dtime:a,keyframe:s,data:Array.from(c),pts:f,layer:l})),c=null,l=null,t=null)}postMessage(w(E))}(t,a);break;case m:null!==o&&t.removeFunction(o),o=null,null!==i&&t.removeFunction(i),i=null,t.cwrap("destroy","number",["number"])(n),self.close()}}})).catch((function(e){self.postMessage(w(l,{data:e}))}))})); diff --git a/dist/index.esm.js b/dist/index.esm.js new file mode 100644 index 0000000..d717b34 --- /dev/null +++ b/dist/index.esm.js @@ -0,0 +1,8 @@ +/* +* +* HlsPlayer.js v0.1.0-beta.1 +* Copyright (c) 2024-8-1 Ezviz-OpenBiz +* . +* +*/ +import e,{Video as t}from"@ezuikit/player-base";import i from"@ezuikit/utils-collect";import n from"hls.js";import{addVc as s,getStaticPath as r}from"@ezuikit/utils-tools";import o from"@ezuikit/utils-logger";import{merge as a}from"lodash-es";import l from"eventemitter3";var u=1,h=2,c=3,d="aac",p="h265",f="hevc",m="m3u8",v="hls",g=0,y=1,_=600,T=400,w=30,P=40,C=!1,x=44100,S=20,L="ONCE",b="SWAP",R=0,D=265,E=1001,k=1002,M=1003;var A,I=function(){return window.WebAssembly&&"object"==("undefined"==typeof WebAssembly?"undefined":(e=WebAssembly)&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e);var e};function B(){return(new Date).getTime()}var F=window.AudioContext||(null==(A=window)?void 0:A.webkitAudioContext),N=function(){function e(e){var t=this;this.options={sampleRate:e.sampleRate||x,appendType:e.appendType||g,playMode:e.playMode||b,isLive:e.isLive},this.logger=null==e?void 0:e.logger,this.sourceChannel=-1,this.audioCtx=new F({latencyHint:"interactive",sampleRate:e.sampleRate}),this.gainNode=null,this.sourceList=[],this.startStatus=!1,this.sampleQueue=[],this.nextBuffer=null,this.playTimestamp=0,this.playStartTime=0,this.durationMs=-1,this.volume=e.volume||0,this.onLoadCache=null,this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList[0].onended=function(){t.swapSource(0,1)},this.sourceList[1].onended=function(){t.swapSource(1,0)},this.gainNode=this.audioCtx.createGain(),this.gainNode.gain.value=this.volume,this.gainNode.connect(this.audioCtx.destination),this.runNextBuffer()}var t=e.prototype;return t.resetStartParam=function(){this.playTimestamp=0,this.playStartTime=0},t.setOnLoadCache=function(e){this.onLoadCache=e},t.setDurationMs=function(e){void 0===e&&(e=-1),this.durationMs=e},t.setVolume=function(e){void 0===e&&(e=0),this.volume=e,this.gainNode.gain.value=e},t.getAlignVPTS=function(){return this.playTimestamp+(B()-this.playStartTime)/1e3},t.swapSource=function(e,t){if(void 0===e&&(e=-1),void 0===t&&(t=-1),!this.startStatus)return null;if(e<0||e>=this.sourceList.length)return null;if(t<0||t>=this.sourceList.length)return null;try{this.sourceChannel===e&&null!==this.sourceList[e]&&(this.sourceList[e].disconnect(this.gainNode),this.sourceList[e]=null)}catch(t){this.logger.error("[DEFINE ERROR] this audioCore disconnect source Index:"+e+" error happened!",t)}(this.sourceChannel=t,-2===this.decodeSample(t,e)&&this.options.isLive)&&(this.getAlignVPTS()>=this.durationMs/1e3-.04?this.pause():null==this||this.onLoadCache());return null},t.addSample=function(e){return void 0===e&&(e=null),!(null==e||!e||void 0===e)&&(0===this.sampleQueue.length&&(this.seekPos=null==e?void 0:e.pts),this.sampleQueue.push(e),!0)},t.runNextBuffer=function(){var e=this;window.setInterval((function(){if(!(null!=e.nextBuffer||e.sampleQueue.length=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){s.swapSource(e,t)}),0===this.sampleQueue.length)return this.options.isLive?(this.sourceList[e].connect(this.gainNode),this.sourceList[e].startState||null==(n=this.sourceList[e])||null==(i=n.start)||i.call(n),this.sourceList[e].onended=function(){s.swapSource(e,t)},this.sourceList[e].stop(),0):-2;if(this.sourceList[e].buffer)return this.swapSource(e,t),0;if(null==this.nextBuffer||this.nextBuffer.data.length<1){var r,o,a=this.sourceList[e];return a.connect(this.gainNode),(null==a?void 0:a.startState)||null==(o=this.sourceList[e])||null==(r=o.start)||r.call(o),a.startState=!0,a.stop(),1}var l=this.nextBuffer.data.buffer;this.playTimestamp=this.nextBuffer.pts,this.playStartTime=B();try{this.audioCtx.decodeAudioData(l,(function(t){var i,n;null!==s.sourceList[e]&&(s.sourceList[e].buffer=t,s.sourceList[e].connect(s.gainNode),s.sourceList[e].startState||null==(n=s.sourceList[e])||null==(i=n.start)||i.call(n),s.sourceList[e].startState=!0)}),(function(e){s.logger.error("Error audioCore with decoding audio data",e)}))}catch(e){return this.nextBuffer=null,this.logger.log("decodeAudioData error",e),-3}return this.nextBuffer=null,0},t.decodeWholeSamples=function(e){var t=this;if(void 0===e&&(e=-1),this.sourceChannel=e,e<0||e>=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){}),0===this.sampleQueue.length)return-2;for(var i=null,n=null,s=0;s",e)}},e}(),O=function(){function e(e){this.limit=e.limit||200,this.logger=null==e?void 0:e.logger,this.yuvCache=[]}var t=e.prototype;return t.appendCacheByCacheYuv=function(e){return this.yuvCache.push(e),this.yuvCache.length>=this.limit?(this.shiftYuv(),h):u},t.getState=function(){return this.yuvCache.length<=0?c:this.yuvCache.length>=this.limit?h:u},t.cleanPipeline=function(){this.yuvCache=[],this.yuvCache.length=0},t.shiftYuv=function(){return this.yuvCache.length<=0?null:this.yuvCache.shift()},e}(),U=function(){function e(e,t,i,n,s,r){this.pts=e,this.width=t,this.height=i,this.imageBufferY=n,this.imageBufferB=s,this.imageBufferR=r}return e.prototype.setYuv=function(e,t,i,n,s,r){this.pts=e,this.width=t,this.height=i,this.imageBufferY=n,this.imageBufferB=s,this.imageBufferR=r},e}(),$=function(){function e(e){this.gl=e,this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)}var t=e.prototype;return t.bind=function(e,t,i){var n=this.gl;n.activeTexture([n.TEXTURE0,n.TEXTURE1,n.TEXTURE2][e]),n.bindTexture(n.TEXTURE_2D,this.texture),n.uniform1i(n.getUniformLocation(t,i),e)},t.fill=function(e,t,i){var n=this.gl;n.bindTexture(n.TEXTURE_2D,this.texture),n.texImage2D(n.TEXTURE_2D,0,n.LUMINANCE,e,t,0,n.LUMINANCE,n.UNSIGNED_BYTE,i)},e}(),W=function(){function e(e,t){this.gl=null,this.gl=e.getContext("webgl")||e.getContext("experimental-webgl"),this.program=this.gl.createProgram();var i=["attribute highp vec4 aVertexPosition;","attribute vec2 aTextureCoord;","varying highp vec2 vTextureCoord;","void main(void) {"," gl_Position = aVertexPosition;"," vTextureCoord = aTextureCoord;","}"].join("\n"),n=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(n,i),this.gl.compileShader(n);var s=["precision highp float;","varying lowp vec2 vTextureCoord;","uniform sampler2D YTexture;","uniform sampler2D UTexture;","uniform sampler2D VTexture;","const mat4 YUV2RGB = mat4","("," 1.1643828125, 0, 1.59602734375, -.87078515625,"," 1.1643828125, -.39176171875, -.81296875, .52959375,"," 1.1643828125, 2.017234375, 0, -1.081390625,"," 0, 0, 0, 1",");","void main(void) {"," gl_FragColor = vec4( texture2D(YTexture, vTextureCoord).x, texture2D(UTexture, vTextureCoord).x, texture2D(VTexture, vTextureCoord).x, 1) * YUV2RGB;","}"].join("\n"),r=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(r,s),this.gl.compileShader(r),this.gl.attachShader(this.program,n),this.gl.attachShader(this.program,r),this.gl.linkProgram(this.program),this.gl.useProgram(this.program),this.gl.getProgramParameter(this.program,this.gl.LINK_STATUS);var o=this.gl.getAttribLocation(this.program,"aVertexPosition");this.gl.enableVertexAttribArray(o);var a=this.gl.getAttribLocation(this.program,"aTextureCoord");this.gl.enableVertexAttribArray(a),this.verticesBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.verticesBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(o,3,this.gl.FLOAT,!1,0,0),this.texCoordBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texCoordBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(a,2,this.gl.FLOAT,!1,0,0),this.gl.y=new $(this.gl),this.gl.u=new $(this.gl),this.gl.v=new $(this.gl),this.gl.y.bind(0,this.program,"YTexture"),this.gl.u.bind(1,this.program,"UTexture"),this.gl.v.bind(2,this.program,"VTexture")}var t=e.prototype;return t.renderFrame=function(e,t,i,n,s){this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.y.fill(n,s,e),this.gl.u.fill(n>>1,s>>1,t),this.gl.v.fill(n>>1,s>>1,i),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4)},t.destroyContext=function(){try{this.gl.deleteProgram(this.program),this.gl.deleteBuffer(this.verticesBuffer),this.gl.deleteBuffer(this.texCoordBuffer),this.gl.deleteTexture(this.gl.y.texture),this.gl.deleteTexture(this.gl.u.texture),this.gl.deleteTexture(this.gl.v.texture),this.gl=null,this.program=null,this.verticesBuffer=null,this.texCoordBuffer=null}catch(e){}},e}(),V=function(e,t){return{cmd:e,data:t}},j="wasmLoading",Y="wasmLoaded",H="wasmFailed",X="videoCallback",Q="decodeCodecContext",z="destroy",G="demuxTsStream",J="demuxCoreReceive",q="readPacket",K="readPacketEnd",Z="mediaInfo",ee="ezui-hls",te={width:600,height:400,volume:0,retry:20,autoPlay:!0,staticPath:"",isLive:!0,loggerOptions:{name:"HLS",level:"INFO",showTime:!0}},ie={disableContextmenu:!0},ne=function(){function e(e){void 0===e&&(e={}),this.options=Object.assign({},ie,e),this.logger=this.options.logger,this.event=this.options.event,this._classVideo=ee+"-video",this._$container=document.getElementById(this.options.id),this._render()}var i=e.prototype;return i._render=function(){var e,i;if("video"===this.options.nodeName)this.$video=new t(this._$container,this.options).$video;else{var n;if(this.$video=document.createElement(this.options.nodeName),this._$container.innerHTML="",this._$container.appendChild(this.$video),this.options.disableContextmenu)null==(n=this.$video)||n.addEventListener("contextmenu",(function(e){return e.preventDefault(),!1}));this.$video.classList.add(this._classVideo),this.$video.style.cssText+="object-fit: contain; z-index:1;"}null==(i=this.event)||null==(e=i.emit)||e.call(i,"rendered")},i._isVideo=function(){return"VIDEO"===this.$video.nodeName},i.destroy=function(){if(this.$video&&this._$container&&this.$video){try{this._$container.removeChild(this.$video)}catch(e){}this.$video=null}},e}();function se(e,t,i){return t&&function(e,t){for(var i=0;i=1&&(null==(i=e)||null==(t=i.onLoadCacheFinished)||t.call(i),window.clearInterval(e.cacheInterval),e.cacheInterval=null,e.isCaching===k&&e.play(e.playParams),e.isCaching=E)}),40))}},i._playFunc=function(){var e=!1;if(B()-this.calculateStartTime>=this.frameTime-this.preCostTime){e=!0;var t=!0;if(this.calculateStartTime=B(),this.options.audioNone)this.playFrameYUV(t);else{this.fix_poc_err_skip>0&&(this.fix_poc_err_skip--,t=!1);var i=this.videoPTS-this.audio.getAlignVPTS();if(i>0)return void(this.playParams.seekEvent&&!this.options.audioNone&&this.audio.setVolume(0));if(t){if(!(t=-1*i<=1*this.frameTimeSec)){for(var n=parseInt(i/this.frameTimeSec+""),s=0;s",e,n,i),n>=i&&(t.playFrameYUV(!0),i+=1)}),this.frameTime||5)}else(this.videoPTS>=this.playParams.seekPos&&!this.isNewSeek||0===this.playParams.seekPos||0===this.playParams.seekPos)&&(this.frameTime=1e3/this.options.fps,this.frameTimeSec=this.frameTime/1e3,this.options.audioNone||this.audio.play(),this._volume=this.options.audioNone?0:this.audio.volume,this.loop=window.setInterval((function(){var e=B();t._playFunc(),t.preCostTime=B()-e}),this.frameTime||5));return this.setVolume(this._volume),Promise.resolve()},i.stop=function(){this.destroy(),this.stream=new Uint8Array},i.destroy=function(){return void 0!==this.gl&&null!==this.gl&&(this.gl.destroyContext(),this.gl=null),this.endAudio(),this.cacheLoop&&window.clearInterval(this.cacheLoop),this.cacheLoop=null,this.loop&&window.clearInterval(this.loop),this.loop=null,this.pause(),this.decoderWorker.postMessage(V(z)),this.stream=null,this.frameList=null,this.durationMs=-1,this.videoPTS=0,this.isPlaying=!1,this.$video.remove(),!0},i.nextNalu=function(e){if(void 0===e&&(e=1),this.stream.length<=4)return!1;for(var t=-1,i=0;i=this.stream.length){if(-1===t)return!1;var n=this.stream.subarray(t);return this.stream=new Uint8Array,n}var s="0 0 1"===this.stream.slice(0,3).join(" "),r="0 0 0 1"===this.stream.slice(0,4).join(" ");if(s||r){if(-1===t)t=i;else{if(e<=1){var o=this.stream.subarray(t,i);return this.stream=this.stream.subarray(i),o}e-=1}i+=3}}return!1},i.playFrameYUV=function(e){void 0===e&&(e=!1);var t=this.cacheYuvBuf.shiftYuv();if(!t)return this.noCacheFrame+=1,e&&!this.playParams.seekEvent&&this.loadCache(),!1;this.noCacheFrame=0;var i=t.pts;return this.videoPTS=i,this.drawImage(t.width,t.height,t.imageBufferY,t.imageBufferB,t.imageBufferR),t=null,e&&!this.playParams.seekEvent&&this.isPlaying&&this.loadCache(),!0},i.drawImage=function(e,t,i,n,s){this.$video.width===e&&this.$video.height===t||(this.$video.width=e,this.$video.height=t),this.isCheckDisplay||this.checkDisplaySize(e,t);var r=e*t,o=e/2*(t/2),a=new Uint8Array(r+2*o);a.set(i,0),a.set(n,r),a.set(s,r+o),this.gl.renderFrame(i,n,s,e,t),a=null},i.checkDisplaySize=function(e,t){var i,n=e/(null==(i=this.options)?void 0:i.width)>t/this.options.height,s=+(this.options.width/e).toFixed(2),r=+(this.options.height/t).toFixed(2),o=n?s:r,a=this.options.fixed,l=a?this.options.width:parseInt(e*o+""),u=a?this.options.height:parseInt(t*o+"");return this.$video.style.maxWidth="100%",this.$video.style.maxHeight="100%",this.options.width/this.options.height>=1&&l/u>=1?this.$video.style.width="100%":this.$video.style.height="100%",this.isCheckDisplay=!0,[l,u]},i._onWorkerMessage=function(){var e=this;this.decoderWorker.onmessage=function(t){var i=t.data;if(i.cmd===X){var n=i.data,s=n.ptsSec,r=n.strideY,o=n.height;n.width;var a=n.bufY,l=n.bufU,u=n.bufV,h=new U(s,r,o,a,l,u);e.cacheYuvBuf.appendCacheByCacheYuv(h),h=null}}},i.initVideoAndAudio=function(){this.$video.width=this.options.width,this.$video.height=this.options.height,this.gl=new W(this.$video,{preserveDrawingBuffer:!1}),this.options.audioNone||(this.audio=new N({logger:this.logger,sampleRate:this.options.sampleRate,appendType:this.options.appendHevcType,volume:this.options.volume,isLive:this.options.isLive})),this.isPlayLoadingFinish=1},se(t,[{key:"volume",get:function(){var e;return(null==(e=this.audio)?void 0:e.volume)||this._volume},set:function(e){this.setVolume(e)}}]),t}(ne),le=[/#EXT-X-PROGRAM-DATE-TIME.+\n/g],ue={lineDelimiter:/\r?\n/,extensionHeader:"#EXTM3U",tagPrefix:"#EXT",segmentPrefix:"#EXTINF",segmentParse:/^#EXTINF: *([0-9.]+)(, *(.+?)?)?$/,tagParse:/^#EXT-X-([A-Z-]+)(:(.+))?$/,version:"VERSION",allowCache:"ALLOW-CACHE",combined:"COMBINED",endList:"ENDLIST",targetDuration:"TARGETDURATION",mediaSequence:"MEDIA-SEQUENCE",discontinuity:"DISCONTINUITY",streamInf:"STREAM-INF",isComment:function(e){return e&&"#"===e[0]&&!e.startsWith(ue.tagPrefix)},isBlank:function(e){return""===e},canStrip:function(e){return ue.isBlank(e)||ue.isComment(e)},defaultMinDur:99999},he=function(){function e(e){this._retry=10,this.logger=null==e?void 0:e.logger,this.initState=!0,this.controller=new AbortController,this._slices=[],this._type=v,this._preURI="",this.duration=-1,this.onTransportStream=null,this.onFinished=null}var t=e.prototype;return t.destroy=function(){this.initState=!1},t.fetchM3u8=function(e){var t=this,i=this;if(this.initState){var n=function(t){return new Promise((function(i,n){var s=new XMLHttpRequest;s.open("GET",t),s.onload=function(){this.status>=200&&this.status<300&&(t!==this.responseURL?(e=this.responseURL,i(this.responseURL)):i(""))},s.onreadystatechange=function(){4===s.readyState&&200===s.status&&i(s.responseText)},s.onerror=function(){n(new Error("Network error."))},s.send()}))};n(e).then((function(s){if(t._retry=10,i._uriParse(e)){var r=i._m3u8Parse(s);if("number"==typeof r&&r>=0)var o=setTimeout((function(){i.fetchM3u8(e),clearTimeout(o)}),200*r)}return n=null,s})).catch((function(s){if(t.logger.error("[M3u8Base] fetch m3u8 url Error ==> ",s),n=null,t._retry>=1)var r=setTimeout((function(){i.fetchM3u8(e),clearTimeout(r)}),500);t._retry--}))}},t._uriParse=function(e){this._preURI="";var t=e.split("://"),i=null,n=null;if(t.length<1)return this.logger.log("HLS URI ERROR : "+e),!1;t.length>1?(i=t[0],n=t[1].split("/"),this._preURI=i+"://"):n=t[0].split("/");for(var s=0;sc&&(s=c);var d,p=n[o+=1],f=null;if(p.includes("http"))f=p;else{if("/"===p[0]){var v=this._preURI.split("//"),g=v[v.length-1].split("/");this._preURI=v[0]+"//"+g[0]}f=this._preURI+p}if(!this._slices.includes(f))this._slices.push(f),null==this||null==(d=this.onTransportStream)||d.call(this,f,c)}}}this._slices.length>500&&(this._slices=this._slices.slice(-500));var y={type:this._type,duration:-1};return null==this||null==(t=this.onFinished)||t.call(this,y),s},t._readTag=function(e){var t=ue.tagParse.exec(e);return null!==t?{key:t[1],value:t[3]}:null},e}(),ce=function(){function e(e){this.sampleRate=e.sampleRate,this.frameDurMs=Math.floor(1024e3/this.sampleRate),this.frameDurSec=this.frameDurMs/1e3}var t=e.prototype;return t.updateOptions=function(e){this.sampleRate=e.sampleRate,this.frameDurMs=1024e3/this.sampleRate,this.frameDurSec=this.frameDurMs/1e3},t._getPktLen=function(e,t,i){return((3&e)<<11)+(t<<3)+((224&i)>>5)},t.sliceAACFrames=function(e,t){for(var i=[],n=e,s=0;s>4==15){var r=this._getPktLen(t[s+3],t[s+4],t[s+5]);if(r<=0)continue;var o=t.subarray(s,s+r),a=new Uint8Array(r);a.set(o,0),i.push({ptime:n,data:a}),n+=this.frameDurSec,s+=r}else s+=1;return i},e}(),de="M3U8",pe="TS",fe="FETCH",me=function(){function e(){}return e.init=function(t){e.collect=new i(t)},e.send=function(t,i){var n,s;null==(s=e.collect)||null==(n=s.send)||n.call(s,{action:t,logInfo:i})},e.updateParams=function(t){e.collect.updateExtendsInfo(t)},e}();function ve(e,t,i){return t&&function(e,t){for(var i=0;i ",e),s=null})).catch((function(n){var s,r,o,a;t.logger.error("[MpegTsDemux] demuxerTsInit ERROR fetch ERROR ==> ",n),null==(r=t.event)||null==(s=r.emit)||s.call(r,pe,{data:n}),null==(a=t.event)||null==(o=a.emit)||o.call(a,fe,{data:n,type:pe}),null==i||i.onDemuxedFailed(n,e),me.send(100,{url:e,msg:"fetch error"})}))},t._demuxCore=function(e,t){e.length<=0||this.decoderWorker.postMessage(V(G,{buff:e,tsUrl:t}))},t.readMediaInfo=function(){return this.mediaInfo},t.readAudioNone=function(){var e;return null==(e=this.mediaInfo)?void 0:e.audioNone},t.isHEVC=function(){return this.mediaInfo.vCodec===f||this.mediaInfo.vCodec===p},t.destroy=function(){this.controller&&this.controller.abort(),this.controller=null,this.mediaInfo=null,this.aacDec=null},t._onWorkerMessage=function(){var e=this;e.logger.log("[demuxer] register _onWorkerMessage"),e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case Z:var n,s;if(e.mediaInfo=i.data,e.mediaInfo)null==(s=e.event)||null==(n=s.emit)||n.call(s,"mediaInfo",e.mediaInfo);break;case J:var r;if(e.mediaInfo.vCodec)null==e.aacDec?e.aacDec=new ce(e.mediaInfo):e.aacDec.updateOptions(e.mediaInfo),null==e||null==(r=e.onDemuxed)||r.call(e)}}))},ve(e,[{key:"vCodec",get:function(){return this.mediaInfo.vCodec}}]),e}(),_e=function(){function e(e,t,i,n){this.pts=e,this.dts=e,this.isKey=t,this.data=i,this.video=n}return e.prototype.setFrame=function(e,t,i,n){this.pts=e,this.isKey=t,this.data=i,this.video=n},e}(),Te=function(){function e(e){this.logger=null==e?void 0:e.logger,this.event=null==e?void 0:e.event,this.decoderWorker=e.decoderWorker,this.m3u8Base=new he(e),this.mpegTsDemux=new ye(e),this.tsList=[],this._startTime=0,this._aStartTime=0,this.lockWait={state:!1,lockMember:{dur:0}},this._timerFeed=null,this.seekPos=-1,this.vPreFramePTS=0,this.aPreFramePTS=0,this.audioNone=!1,this.isHevcParam=!1,this.vCodec="",this.aCodec=null,this.aChannel=0,this.durationMs=-1,this.fps=-1,this.sampleRate=-1,this.size={width:-1,height:-1},this.mediaInfo=null,this._onWorkerMessage(),this.onReadyOBJ=null,this.onFinished=null,this.onDemuxed=null,this.onSamples=null,this.onCacheProcess=null}var t=e.prototype;return t.getCachePTS=function(){return Math.max(this.vPreFramePTS,this.aPreFramePTS)},t.demux=function(e){var t=this,i=this;this.vPreFramePTS=0,this.aPreFramePTS=0,this.m3u8Base.onTransportStream=function(e,t){i.tsList.push({streamURI:e,streamDur:t}),i.lockWait.state=!1},this.m3u8Base.onFinished=function(e){var t;e.type===m?i.durationMs=1e3*e.duration:i.durationMs=-1,null==i||null==(t=i.onFinished)||t.call(i,i.onReadyOBJ,e)},this.mpegTsDemux.onDemuxedFailed=function(e,n){t.logger.error("[M3u8] onDemuxedFailed: ",e,n),i.lockWait.state=!1},this.mpegTsDemux.onDemuxed=function(){var e;t.logger.log("[M3u8] onDemuxed"),null==i.mediaInfo&&(i.mediaInfo=i.mpegTsDemux.readMediaInfo(),t.logger.log("[M3u8] mediaInfo: ",i.mediaInfo),i.isHevcParam=i.mpegTsDemux.isHEVC(),i.vCodec=i.mpegTsDemux.vCodec,i.aCodec=i.mediaInfo.aCodec,i.aChannel=i.mediaInfo.sampleChannel,i.fps=i.mediaInfo.fps,i.sampleRate=i.mediaInfo.sampleRate,(null===i.aCodec||""===i.aCodec||i.aChannel<=0)&&(i.audioNone=!0),i.mediaInfo.width>0&&i.mediaInfo.height>0&&(t.size.width=t.mediaInfo.width,t.size.height=t.mediaInfo.height)),null==i||null==(e=i.onDemuxed)||e.call(i,i.onReadyOBJ),i.mpegTsDemux&&t.decoderWorker.postMessage(V(q))},this.mpegTsDemux.onReady=function(){i._fetchM3u8AndIntervalTs(e)},this._timerTsWasm=window.setInterval((function(){1===Ae.__HLS_WASM_DecoderState__&&(i._fetchM3u8AndIntervalTs(e),window.clearInterval(i._timerTsWasm),i._timerTsWasm=null)}),500)},t._fetchM3u8AndIntervalTs=function(e){var t=this,i=this;this.logger.log("[M3u8] start fetch m3u8 url"),i.m3u8Base.fetchM3u8(e),i._timerFeed=window.setInterval((function(){if(i.tsList.length>0&&!i.lockWait.state)try{var e=i.tsList.shift();if(null!=e){var n=e.streamURI,s=e.streamDur;i.lockWait.state=!0,i.lockWait.lockMember.dur=+s,i.mpegTsDemux.demuxURL(n)}else t.logger.error("[M3u8] onTsReady need wait ")}catch(e){var r,o,a,l;t.logger.error("[M3u8] onTsReady ERROR:",e),null==(o=t.event)||null==(r=o.emit)||r.call(o,de,{data:e}),null==(l=t.event)||null==(a=l.emit)||a.call(l,fe,{data:e,type:de}),i.lockWait.state=!1}}),50)},t.destroy=function(){var e;this.m3u8Base&&(null==(e=this.m3u8Base)||e.destroy(),this.m3u8Base=null);this._timerFeed&&(window.clearInterval(this._timerFeed),this._timerFeed=null),this.mpegTsDemux&&(this.mpegTsDemux.destroy(),this.mpegTsDemux=null)},t.bindReady=function(e){this.onReadyOBJ=e},t.getACodec=function(){return this.aCodec},t.getVCodec=function(){return this.vCodec},t.getDurationMs=function(){return this.durationMs},t.getFPS=function(){return this.fps},t.getSampleRate=function(){return this.sampleRate},t.getSampleChannel=function(){return this.aChannel},t.getSize=function(){return this.size},t._onWorkerMessage=function(){this.logger.log("[M3U8] register _onWorkerMessage");var e=this;e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case q:var n,s=i.data,r=s.type,o=s.pts,a=s.ptime,l=s.keyframe,u=s.data,h=s.layer;if(u=new Uint8Array(u),1===r&&e.mpegTsDemux.mediaInfo.aCodec===d&&(u=e.mpegTsDemux.aacDec.sliceAACFrames(a,u)),0===r){var c=function(e){var t=e.nalu,i=e.vlc.vlc;null==t.vps&&(t.vps=new Uint8Array);var n=new Uint8Array(t.vps.length+t.sps.length+t.pps.length+t.sei.length+i.length);return n.set(t.vps,0),n.set(t.sps,t.vps.length),n.set(t.pps,t.vps.length+t.sps.length),n.set(t.sei,t.vps.length+t.sps.length+t.pps.length),n.set(i,t.vps.length+t.sps.length+t.pps.length+t.sei.length),n}(h),p=o,f=new _e(p,1===l,c,!0);e.vPreFramePTS=p,null==e||e.onSamples(e.onReadyOBJ,f)}else if(1===r){var m;if("aac"===(null==(m=e.mediaInfo)?void 0:m.aCodec)){for(var v=u,g=0;g0&&(e.$video.volume=e._options.volume)}),1e3)})),e.event.emit("parsed")}))}))}else if(this.$video.canPlayType("application/vnd.apple.mpegurl")){this.logger.log("Browser support application/vnd.apple.mpegurl : ",this.$video.canPlayType("application/vnd.apple.mpegurl")),this.$video.src=this._options.url;var i=!1;this.$video.addEventListener("canplay",(function(){!i&&e._options.autoPlay&&setTimeout((function(){e.$video.play().then((function(){e.logger.log("autoPlay video!"),setTimeout((function(){e._options.volume>0&&e.setVolume(e._options.volume)}),1e3),i=!0}))}),200)}))}else this.logger.warn("Browser not support hls")},i.isPlayingState=function(){return!this.$video.paused},i.play=function(){if(this.isPlayingState())return Promise.resolve();if(this._options.isLive&&(this.$video.buffered.length>=1&&this.$video.buffered.end(0)>1)){var e=this.$video.buffered.end(0)-1;this.$video.currentTime=e}return this.$video.play()},i.pause=function(){this.$video.pause()},i.setVolume=function(e){this.$video.muted&&(this.$video.muted=!1),this._volume=+(e||0),0===this._volume&&(this.$video.muted=!0),this.$video.volume=this._volume},i.destroy=function(){this.$video&&this.$video.pause(),this._hls&&(this._hls.destroy(),this._hls=null),e.prototype.destroy.call(this)},i._onEvent=function(){var e;(e=this).$video&&(e.$video.addEventListener("canplay",(function(){e.event.emit("canplay")})),e.$video.addEventListener("loadeddata",(function(){e.event.emit("loadeddata")})),e.$video.addEventListener("volumechange",(function(){e.event.emit("volumechange",{data:e.$video.volume})})),e.$video.addEventListener("waiting",(function(){e.event.emit("waiting")})),e.$video.addEventListener("timeupdate",(function(){var t;null==(t=e.event)||t.emit("timeupdate")})),e.$video.addEventListener("seeking",(function(){e.event.emit("seeking",{data:e.$video.currentTime})})),e.$video.addEventListener("seeked",(function(){e.event.emit("seeked")})),e.$video.addEventListener("abort",(function(){e.event.emit("abort")})),e.$video.addEventListener("error",(function(){var t;null==(t=e.event)||t.emit("error",{data:e.$video.error})})),e.$video.addEventListener("ended",(function(){e.event.emit("ended")})))},we(t,[{key:"volume",get:function(){return this._volume},set:function(e){this.setVolume(e)}}]),t}(ne);var Se="wasm_loaded",Le="wasm_failed",be="init";function Re(e,t){return Re=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Re(e,t)}var De=function(e){function t(t){var i;return void 0===t&&(t={}),i=e.call(this,t)||this,t.url=s(null==t?void 0:t.url,["h264","h265"]),function(e,t){if(((null==t?void 0:t.volume)||0)>1?e._volume=1:((null==t?void 0:t.volume)||0)<=0?e._volume=0:e._volume=+((null==t?void 0:t.volume)||0),t.volume=e._volume,e.options=a({},te,t),"string"!=typeof e.options.id)throw new Error("id is required!");e.logger=o(e.options.loggerOptions),e.event=new l,e.logger.log("HlsPlayer version: ",Ae.version),e.logger.log("HlsPlayer options: ",e.options),e.options.logger=e.logger}(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(i),t),i._containerClassName=ee+"-container",i._render(),i}!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Re(e,t)}(t,e);var i=t.prototype;return i._render=function(){this.$container.classList.add(this._containerClassName)},i.destroy=function(){this.$container&&(this.$container.classList.remove(this._containerClassName),this.$container.innerHTML="",this.$container=null)},t}(e);function Ee(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e=!0),this.playParam={durationMs:0,fps:0,sampleRate:0,size:{width:0,height:0},audioNone:e,videoCodec:R},!I())throw new Error("Browser not support WebAssembly!");this._onWorkerMessage()},i.play=function(){if(me.send(1,{name:"play"}),null===this.player)return Promise.resolve();if(this.playParam.videoCodec===R){var e={seekPos:0,isLive:this.options.isLive,accurateSeek:!0,seekEvent:!1,realPlay:!0};return this.player.play(e)}return this.player.play()},i.pause=function(){return me.send(1,{name:"pause"}),null!==this.player&&(this.player.pause(),!0)},i.destroy=function(){var t,i;return me.send(1,{name:"destroy"}),void 0!==this.player&&null!==this.player&&(this.playParam.videoCodec===R&&this._m3u8Obj&&(this._m3u8Obj.destroy(),this._m3u8Obj=null),this.player.destroy(),this._decoderWorker&&(this._decoderWorker.postMessage(V(z)),this._decoderWorker.terminate(),this._decoderWorker=null),this.logger.log("destroy"),null==(i=this.event)||null==(t=i.emit)||t.call(i,"destroy"),this.player=null,e.prototype.destroy.call(this),!0)},i.isPlaying=function(){return null!==this.player&&this.player.isPlayingState()},i.setVolume=function(e){var t;(e=+e)>1||e<0?this.logger.warn("volume volume value 0.0 ~ 1.0!"):((t=this).player||(t.event.emit("playerIsNull"),t.logger.warn("Player instance does not exist!"),0))&&(this.player.setVolume(e),this.event.emit("volumeChange",{data:e}))},i.getVersion=function(){return me.send(1,{name:"getVersion"}),"0.1.0-beta.1"},i._m3u8Entry=function(){var e=this;this._m3u8Obj=new Te({logger:this.logger,decoderWorker:this._decoderWorker,event:this.event}),this._m3u8Obj.bindReady(this),this._m3u8Obj.onFinished=function(e,t){},this._m3u8Obj.onCacheProcess=function(t){e.options.isLive||null==e.onCacheProcess||e.onCacheProcess.call(e,t)},this._m3u8Obj.onDemuxed=this._checkPlayer.bind(this),this._m3u8Obj.onSamples=this._hlsOnSamples.bind(this),this._m3u8Obj.demux(this.url)},i._checkPlayer=function(e,t){var i=this;if(null==i.player){var n,s,r;if(!(null==i||null==(n=i._m3u8Obj)?void 0:n.isHevcParam)||t)return null==i||null==(r=i._m3u8Obj)||null==(s=r.destroy)||s.call(r),i._m3u8Obj=null,this._decoderWorker.terminate(),this._decoderWorker=null,void(i.player=new xe(ke({},this.options,{event:this.event,logger:this.logger})));var o=i._m3u8Obj.getACodec(),a=i._m3u8Obj.getFPS(),l=i._m3u8Obj.getSampleRate(),u=i._m3u8Obj.getSize(),h=!1;h=i._m3u8Obj.getSampleChannel()<=0||""===o,i._softPlayer(0,a,l,u,h)}},i._hlsOnSamples=function(e,t){var i,n,s,r=this;if(t.video)null==(s=r.player)||null==(n=s.appendHevcFrame)||n.call(s,t);else if(!(null==(i=r._m3u8Obj)?void 0:i.audioNone)){var o,a;null==(a=r.player)||null==(o=a.appendAACFrame)||o.call(a,t)}},i._onWorkerMessage=function(){var e=this,i=this;this._decoderWorker.onmessage=function(n){var s=n.data;switch(s.cmd){case j:t.__HLS_WASM_DecoderState__=0;break;case Y:t.__HLS_WASM_DecoderState__=1,e.logger.log("Wasm already init over!"),i.event.emit(Se),i._decoderWorker.postMessage(V("registerWasmPlayer")),i._m3u8Entry();break;case H:t.__HLS_WASM_DecoderState__=-1,e.logger.error("Wasm init failed!",s),i.event.emit(Le,s),me.send("wasm",{name:"wasm loading failed"}),i._checkPlayer(!0)}}},i._softPlayer=function(e,t,i,n,s,r){var o,a,l=this;void 0===s&&(s=!1),void 0===r&&(r=null);var u,h=this;(this.playParam.durationMs=e,this.playParam.fps=t,this.playParam.sampleRate=i,this.playParam.size=n,this.playParam.audioNone=s,this.playParam.videoCodec=r||R,this.logger.log("this.playParam: ",this.playParam),this.logger.log("start init soft player"),this.player=new ae(ke({},h.options,{sampleRate:i,fps:t,appendHevcType:y,fixed:!1,id:this.options.id,audioNone:s,videoCodec:r,logger:this.logger,event:this.event,decoderWorker:this._decoderWorker})),this.player.onPlayingTime=function(e){var t;null==h||null==(t=h.onPlayTime)||t.call(h,e)},this.player.onPlayingFinish=function(){var e,t;(l.pause(),null!=l.onPlayFinish)&&(null==(t=l)||null==(e=t.onPlayFinish)||e.call(t))},this.player.onLoadCache=function(){var e,t;null==(t=l)||null==(e=t.onLoadCache)||e.call(t)},this.player.onLoadCacheFinished=function(){var e,t;null==(t=l)||null==(e=t.onLoadCacheFinished)||e.call(t)},null==(o=h.player)||o.setDurationMs(e),null==(a=h.player)||a.setFrameRate(t),null!=h.onReadyShowDone)&&(null==h||null==(u=h.onReadyShowDone)||u.call(h));this.event.emit("parsed"),this.player&&this.options.autoPlay&&this.play()},t.supportType=function(e){if(me.send(1,{name:"supportType",options:e}),"hls"===e.type)return!0;if(e.url){var t=e.url;t.startsWith("http://")||t.startsWith("https://")||(t=/^\/\//.test(t)?"http:"+t:location.origin+location.pathname+t);try{return/\.m3u8$/i.test(new URL(t).pathname)}catch(e){}}return!1},Ee(t,[{key:"volume",get:function(){return this.player?this.player.volume:this.options.volume},set:function(e){e=+e,this.setVolume(e)}}]),t}(De);Ae.__HLS_WASM_DecoderState__=0,Ae.version="0.1.0-beta.1";export{Ae as default}; diff --git a/dist/index.js b/dist/index.js new file mode 100644 index 0000000..ac400c5 --- /dev/null +++ b/dist/index.js @@ -0,0 +1,8 @@ +/* +* +* HlsPlayer.js v0.1.0-beta.1 +* Copyright (c) 2024-8-1 Ezviz-OpenBiz +* . +* +*/ +"use strict";var e=require("@ezuikit/player-base"),t=require("@ezuikit/utils-collect"),i=require("hls.js"),n=require("@ezuikit/utils-tools"),s=require("@ezuikit/utils-logger"),r=require("lodash-es"),o=require("eventemitter3"),a=1,l=2,u=3,h="aac",c="h265",d="hevc",p="m3u8",f="hls",m=0,v=1,g=600,y=400,_=30,T=40,P=!1,w=44100,C=20,x="ONCE",S="SWAP",L=0,b=265,R=1001,D=1002,E=1003;var k,M=function(){return window.WebAssembly&&"object"==("undefined"==typeof WebAssembly?"undefined":(e=WebAssembly)&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e);var e};function A(){return(new Date).getTime()}var I=window.AudioContext||(null==(k=window)?void 0:k.webkitAudioContext),B=function(){function e(e){var t=this;this.options={sampleRate:e.sampleRate||w,appendType:e.appendType||m,playMode:e.playMode||S,isLive:e.isLive},this.logger=null==e?void 0:e.logger,this.sourceChannel=-1,this.audioCtx=new I({latencyHint:"interactive",sampleRate:e.sampleRate}),this.gainNode=null,this.sourceList=[],this.startStatus=!1,this.sampleQueue=[],this.nextBuffer=null,this.playTimestamp=0,this.playStartTime=0,this.durationMs=-1,this.volume=e.volume||0,this.onLoadCache=null,this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList[0].onended=function(){t.swapSource(0,1)},this.sourceList[1].onended=function(){t.swapSource(1,0)},this.gainNode=this.audioCtx.createGain(),this.gainNode.gain.value=this.volume,this.gainNode.connect(this.audioCtx.destination),this.runNextBuffer()}var t=e.prototype;return t.resetStartParam=function(){this.playTimestamp=0,this.playStartTime=0},t.setOnLoadCache=function(e){this.onLoadCache=e},t.setDurationMs=function(e){void 0===e&&(e=-1),this.durationMs=e},t.setVolume=function(e){void 0===e&&(e=0),this.volume=e,this.gainNode.gain.value=e},t.getAlignVPTS=function(){return this.playTimestamp+(A()-this.playStartTime)/1e3},t.swapSource=function(e,t){if(void 0===e&&(e=-1),void 0===t&&(t=-1),!this.startStatus)return null;if(e<0||e>=this.sourceList.length)return null;if(t<0||t>=this.sourceList.length)return null;try{this.sourceChannel===e&&null!==this.sourceList[e]&&(this.sourceList[e].disconnect(this.gainNode),this.sourceList[e]=null)}catch(t){this.logger.error("[DEFINE ERROR] this audioCore disconnect source Index:"+e+" error happened!",t)}(this.sourceChannel=t,-2===this.decodeSample(t,e)&&this.options.isLive)&&(this.getAlignVPTS()>=this.durationMs/1e3-.04?this.pause():null==this||this.onLoadCache());return null},t.addSample=function(e){return void 0===e&&(e=null),!(null==e||!e||void 0===e)&&(0===this.sampleQueue.length&&(this.seekPos=null==e?void 0:e.pts),this.sampleQueue.push(e),!0)},t.runNextBuffer=function(){var e=this;window.setInterval((function(){if(!(null!=e.nextBuffer||e.sampleQueue.length=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){s.swapSource(e,t)}),0===this.sampleQueue.length)return this.options.isLive?(this.sourceList[e].connect(this.gainNode),this.sourceList[e].startState||null==(n=this.sourceList[e])||null==(i=n.start)||i.call(n),this.sourceList[e].onended=function(){s.swapSource(e,t)},this.sourceList[e].stop(),0):-2;if(this.sourceList[e].buffer)return this.swapSource(e,t),0;if(null==this.nextBuffer||this.nextBuffer.data.length<1){var r,o,a=this.sourceList[e];return a.connect(this.gainNode),(null==a?void 0:a.startState)||null==(o=this.sourceList[e])||null==(r=o.start)||r.call(o),a.startState=!0,a.stop(),1}var l=this.nextBuffer.data.buffer;this.playTimestamp=this.nextBuffer.pts,this.playStartTime=A();try{this.audioCtx.decodeAudioData(l,(function(t){var i,n;null!==s.sourceList[e]&&(s.sourceList[e].buffer=t,s.sourceList[e].connect(s.gainNode),s.sourceList[e].startState||null==(n=s.sourceList[e])||null==(i=n.start)||i.call(n),s.sourceList[e].startState=!0)}),(function(e){s.logger.error("Error audioCore with decoding audio data",e)}))}catch(e){return this.nextBuffer=null,this.logger.log("decodeAudioData error",e),-3}return this.nextBuffer=null,0},t.decodeWholeSamples=function(e){var t=this;if(void 0===e&&(e=-1),this.sourceChannel=e,e<0||e>=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){}),0===this.sampleQueue.length)return-2;for(var i=null,n=null,s=0;s",e)}},e}(),F=function(){function e(e){this.limit=e.limit||200,this.logger=null==e?void 0:e.logger,this.yuvCache=[]}var t=e.prototype;return t.appendCacheByCacheYuv=function(e){return this.yuvCache.push(e),this.yuvCache.length>=this.limit?(this.shiftYuv(),l):a},t.getState=function(){return this.yuvCache.length<=0?u:this.yuvCache.length>=this.limit?l:a},t.cleanPipeline=function(){this.yuvCache=[],this.yuvCache.length=0},t.shiftYuv=function(){return this.yuvCache.length<=0?null:this.yuvCache.shift()},e}(),N=function(){function e(e,t,i,n,s,r){this.pts=e,this.width=t,this.height=i,this.imageBufferY=n,this.imageBufferB=s,this.imageBufferR=r}return e.prototype.setYuv=function(e,t,i,n,s,r){this.pts=e,this.width=t,this.height=i,this.imageBufferY=n,this.imageBufferB=s,this.imageBufferR=r},e}(),O=function(){function e(e){this.gl=e,this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)}var t=e.prototype;return t.bind=function(e,t,i){var n=this.gl;n.activeTexture([n.TEXTURE0,n.TEXTURE1,n.TEXTURE2][e]),n.bindTexture(n.TEXTURE_2D,this.texture),n.uniform1i(n.getUniformLocation(t,i),e)},t.fill=function(e,t,i){var n=this.gl;n.bindTexture(n.TEXTURE_2D,this.texture),n.texImage2D(n.TEXTURE_2D,0,n.LUMINANCE,e,t,0,n.LUMINANCE,n.UNSIGNED_BYTE,i)},e}(),U=function(){function e(e,t){this.gl=null,this.gl=e.getContext("webgl")||e.getContext("experimental-webgl"),this.program=this.gl.createProgram();var i=["attribute highp vec4 aVertexPosition;","attribute vec2 aTextureCoord;","varying highp vec2 vTextureCoord;","void main(void) {"," gl_Position = aVertexPosition;"," vTextureCoord = aTextureCoord;","}"].join("\n"),n=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(n,i),this.gl.compileShader(n);var s=["precision highp float;","varying lowp vec2 vTextureCoord;","uniform sampler2D YTexture;","uniform sampler2D UTexture;","uniform sampler2D VTexture;","const mat4 YUV2RGB = mat4","("," 1.1643828125, 0, 1.59602734375, -.87078515625,"," 1.1643828125, -.39176171875, -.81296875, .52959375,"," 1.1643828125, 2.017234375, 0, -1.081390625,"," 0, 0, 0, 1",");","void main(void) {"," gl_FragColor = vec4( texture2D(YTexture, vTextureCoord).x, texture2D(UTexture, vTextureCoord).x, texture2D(VTexture, vTextureCoord).x, 1) * YUV2RGB;","}"].join("\n"),r=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(r,s),this.gl.compileShader(r),this.gl.attachShader(this.program,n),this.gl.attachShader(this.program,r),this.gl.linkProgram(this.program),this.gl.useProgram(this.program),this.gl.getProgramParameter(this.program,this.gl.LINK_STATUS);var o=this.gl.getAttribLocation(this.program,"aVertexPosition");this.gl.enableVertexAttribArray(o);var a=this.gl.getAttribLocation(this.program,"aTextureCoord");this.gl.enableVertexAttribArray(a),this.verticesBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.verticesBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(o,3,this.gl.FLOAT,!1,0,0),this.texCoordBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texCoordBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(a,2,this.gl.FLOAT,!1,0,0),this.gl.y=new O(this.gl),this.gl.u=new O(this.gl),this.gl.v=new O(this.gl),this.gl.y.bind(0,this.program,"YTexture"),this.gl.u.bind(1,this.program,"UTexture"),this.gl.v.bind(2,this.program,"VTexture")}var t=e.prototype;return t.renderFrame=function(e,t,i,n,s){this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.y.fill(n,s,e),this.gl.u.fill(n>>1,s>>1,t),this.gl.v.fill(n>>1,s>>1,i),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4)},t.destroyContext=function(){try{this.gl.deleteProgram(this.program),this.gl.deleteBuffer(this.verticesBuffer),this.gl.deleteBuffer(this.texCoordBuffer),this.gl.deleteTexture(this.gl.y.texture),this.gl.deleteTexture(this.gl.u.texture),this.gl.deleteTexture(this.gl.v.texture),this.gl=null,this.program=null,this.verticesBuffer=null,this.texCoordBuffer=null}catch(e){}},e}(),$=function(e,t){return{cmd:e,data:t}},W="wasmLoading",V="wasmLoaded",j="wasmFailed",Y="videoCallback",H="decodeCodecContext",X="destroy",Q="demuxTsStream",z="demuxCoreReceive",q="readPacket",G="readPacketEnd",J="mediaInfo",K="ezui-hls",Z={width:600,height:400,volume:0,retry:20,autoPlay:!0,staticPath:"",isLive:!0,loggerOptions:{name:"HLS",level:"INFO",showTime:!0}},ee={disableContextmenu:!0},te=function(){function t(e){void 0===e&&(e={}),this.options=Object.assign({},ee,e),this.logger=this.options.logger,this.event=this.options.event,this._classVideo=K+"-video",this._$container=document.getElementById(this.options.id),this._render()}var i=t.prototype;return i._render=function(){var t,i;if("video"===this.options.nodeName)this.$video=new e.Video(this._$container,this.options).$video;else{var n;if(this.$video=document.createElement(this.options.nodeName),this._$container.innerHTML="",this._$container.appendChild(this.$video),this.options.disableContextmenu)null==(n=this.$video)||n.addEventListener("contextmenu",(function(e){return e.preventDefault(),!1}));this.$video.classList.add(this._classVideo),this.$video.style.cssText+="object-fit: contain; z-index:1;"}null==(i=this.event)||null==(t=i.emit)||t.call(i,"rendered")},i._isVideo=function(){return"VIDEO"===this.$video.nodeName},i.destroy=function(){if(this.$video&&this._$container&&this.$video){try{this._$container.removeChild(this.$video)}catch(e){}this.$video=null}},t}();function ie(e,t,i){return t&&function(e,t){for(var i=0;i=1&&(null==(i=e)||null==(t=i.onLoadCacheFinished)||t.call(i),window.clearInterval(e.cacheInterval),e.cacheInterval=null,e.isCaching===D&&e.play(e.playParams),e.isCaching=R)}),40))}},i._playFunc=function(){var e=!1;if(A()-this.calculateStartTime>=this.frameTime-this.preCostTime){e=!0;var t=!0;if(this.calculateStartTime=A(),this.options.audioNone)this.playFrameYUV(t);else{this.fix_poc_err_skip>0&&(this.fix_poc_err_skip--,t=!1);var i=this.videoPTS-this.audio.getAlignVPTS();if(i>0)return void(this.playParams.seekEvent&&!this.options.audioNone&&this.audio.setVolume(0));if(t){if(!(t=-1*i<=1*this.frameTimeSec)){for(var n=parseInt(i/this.frameTimeSec+""),s=0;s",e,n,i),n>=i&&(t.playFrameYUV(!0),i+=1)}),this.frameTime||5)}else(this.videoPTS>=this.playParams.seekPos&&!this.isNewSeek||0===this.playParams.seekPos||0===this.playParams.seekPos)&&(this.frameTime=1e3/this.options.fps,this.frameTimeSec=this.frameTime/1e3,this.options.audioNone||this.audio.play(),this._volume=this.options.audioNone?0:this.audio.volume,this.loop=window.setInterval((function(){var e=A();t._playFunc(),t.preCostTime=A()-e}),this.frameTime||5));return this.setVolume(this._volume),Promise.resolve()},i.stop=function(){this.destroy(),this.stream=new Uint8Array},i.destroy=function(){return void 0!==this.gl&&null!==this.gl&&(this.gl.destroyContext(),this.gl=null),this.endAudio(),this.cacheLoop&&window.clearInterval(this.cacheLoop),this.cacheLoop=null,this.loop&&window.clearInterval(this.loop),this.loop=null,this.pause(),this.decoderWorker.postMessage($(X)),this.stream=null,this.frameList=null,this.durationMs=-1,this.videoPTS=0,this.isPlaying=!1,this.$video.remove(),!0},i.nextNalu=function(e){if(void 0===e&&(e=1),this.stream.length<=4)return!1;for(var t=-1,i=0;i=this.stream.length){if(-1===t)return!1;var n=this.stream.subarray(t);return this.stream=new Uint8Array,n}var s="0 0 1"===this.stream.slice(0,3).join(" "),r="0 0 0 1"===this.stream.slice(0,4).join(" ");if(s||r){if(-1===t)t=i;else{if(e<=1){var o=this.stream.subarray(t,i);return this.stream=this.stream.subarray(i),o}e-=1}i+=3}}return!1},i.playFrameYUV=function(e){void 0===e&&(e=!1);var t=this.cacheYuvBuf.shiftYuv();if(!t)return this.noCacheFrame+=1,e&&!this.playParams.seekEvent&&this.loadCache(),!1;this.noCacheFrame=0;var i=t.pts;return this.videoPTS=i,this.drawImage(t.width,t.height,t.imageBufferY,t.imageBufferB,t.imageBufferR),t=null,e&&!this.playParams.seekEvent&&this.isPlaying&&this.loadCache(),!0},i.drawImage=function(e,t,i,n,s){this.$video.width===e&&this.$video.height===t||(this.$video.width=e,this.$video.height=t),this.isCheckDisplay||this.checkDisplaySize(e,t);var r=e*t,o=e/2*(t/2),a=new Uint8Array(r+2*o);a.set(i,0),a.set(n,r),a.set(s,r+o),this.gl.renderFrame(i,n,s,e,t),a=null},i.checkDisplaySize=function(e,t){var i,n=e/(null==(i=this.options)?void 0:i.width)>t/this.options.height,s=+(this.options.width/e).toFixed(2),r=+(this.options.height/t).toFixed(2),o=n?s:r,a=this.options.fixed,l=a?this.options.width:parseInt(e*o+""),u=a?this.options.height:parseInt(t*o+"");return this.$video.style.maxWidth="100%",this.$video.style.maxHeight="100%",this.options.width/this.options.height>=1&&l/u>=1?this.$video.style.width="100%":this.$video.style.height="100%",this.isCheckDisplay=!0,[l,u]},i._onWorkerMessage=function(){var e=this;this.decoderWorker.onmessage=function(t){var i=t.data;if(i.cmd===Y){var n=i.data,s=n.ptsSec,r=n.strideY,o=n.height;n.width;var a=n.bufY,l=n.bufU,u=n.bufV,h=new N(s,r,o,a,l,u);e.cacheYuvBuf.appendCacheByCacheYuv(h),h=null}}},i.initVideoAndAudio=function(){this.$video.width=this.options.width,this.$video.height=this.options.height,this.gl=new U(this.$video,{preserveDrawingBuffer:!1}),this.options.audioNone||(this.audio=new B({logger:this.logger,sampleRate:this.options.sampleRate,appendType:this.options.appendHevcType,volume:this.options.volume,isLive:this.options.isLive})),this.isPlayLoadingFinish=1},ie(t,[{key:"volume",get:function(){var e;return(null==(e=this.audio)?void 0:e.volume)||this._volume},set:function(e){this.setVolume(e)}}]),t}(te),oe=[/#EXT-X-PROGRAM-DATE-TIME.+\n/g],ae={lineDelimiter:/\r?\n/,extensionHeader:"#EXTM3U",tagPrefix:"#EXT",segmentPrefix:"#EXTINF",segmentParse:/^#EXTINF: *([0-9.]+)(, *(.+?)?)?$/,tagParse:/^#EXT-X-([A-Z-]+)(:(.+))?$/,version:"VERSION",allowCache:"ALLOW-CACHE",combined:"COMBINED",endList:"ENDLIST",targetDuration:"TARGETDURATION",mediaSequence:"MEDIA-SEQUENCE",discontinuity:"DISCONTINUITY",streamInf:"STREAM-INF",isComment:function(e){return e&&"#"===e[0]&&!e.startsWith(ae.tagPrefix)},isBlank:function(e){return""===e},canStrip:function(e){return ae.isBlank(e)||ae.isComment(e)},defaultMinDur:99999},le=function(){function e(e){this._retry=10,this.logger=null==e?void 0:e.logger,this.initState=!0,this.controller=new AbortController,this._slices=[],this._type=f,this._preURI="",this.duration=-1,this.onTransportStream=null,this.onFinished=null}var t=e.prototype;return t.destroy=function(){this.initState=!1},t.fetchM3u8=function(e){var t=this,i=this;if(this.initState){var n=function(t){return new Promise((function(i,n){var s=new XMLHttpRequest;s.open("GET",t),s.onload=function(){this.status>=200&&this.status<300&&(t!==this.responseURL?(e=this.responseURL,i(this.responseURL)):i(""))},s.onreadystatechange=function(){4===s.readyState&&200===s.status&&i(s.responseText)},s.onerror=function(){n(new Error("Network error."))},s.send()}))};n(e).then((function(s){if(t._retry=10,i._uriParse(e)){var r=i._m3u8Parse(s);if("number"==typeof r&&r>=0)var o=setTimeout((function(){i.fetchM3u8(e),clearTimeout(o)}),200*r)}return n=null,s})).catch((function(s){if(t.logger.error("[M3u8Base] fetch m3u8 url Error ==> ",s),n=null,t._retry>=1)var r=setTimeout((function(){i.fetchM3u8(e),clearTimeout(r)}),500);t._retry--}))}},t._uriParse=function(e){this._preURI="";var t=e.split("://"),i=null,n=null;if(t.length<1)return this.logger.log("HLS URI ERROR : "+e),!1;t.length>1?(i=t[0],n=t[1].split("/"),this._preURI=i+"://"):n=t[0].split("/");for(var s=0;sc&&(s=c);var d,f=n[o+=1],m=null;if(f.includes("http"))m=f;else{if("/"===f[0]){var v=this._preURI.split("//"),g=v[v.length-1].split("/");this._preURI=v[0]+"//"+g[0]}m=this._preURI+f}if(!this._slices.includes(m))this._slices.push(m),null==this||null==(d=this.onTransportStream)||d.call(this,m,c)}}}this._slices.length>500&&(this._slices=this._slices.slice(-500));var y={type:this._type,duration:-1};return null==this||null==(t=this.onFinished)||t.call(this,y),s},t._readTag=function(e){var t=ae.tagParse.exec(e);return null!==t?{key:t[1],value:t[3]}:null},e}(),ue=function(){function e(e){this.sampleRate=e.sampleRate,this.frameDurMs=Math.floor(1024e3/this.sampleRate),this.frameDurSec=this.frameDurMs/1e3}var t=e.prototype;return t.updateOptions=function(e){this.sampleRate=e.sampleRate,this.frameDurMs=1024e3/this.sampleRate,this.frameDurSec=this.frameDurMs/1e3},t._getPktLen=function(e,t,i){return((3&e)<<11)+(t<<3)+((224&i)>>5)},t.sliceAACFrames=function(e,t){for(var i=[],n=e,s=0;s>4==15){var r=this._getPktLen(t[s+3],t[s+4],t[s+5]);if(r<=0)continue;var o=t.subarray(s,s+r),a=new Uint8Array(r);a.set(o,0),i.push({ptime:n,data:a}),n+=this.frameDurSec,s+=r}else s+=1;return i},e}(),he="M3U8",ce="TS",de="FETCH",pe=function(){function e(){}return e.init=function(i){e.collect=new t(i)},e.send=function(t,i){var n,s;null==(s=e.collect)||null==(n=s.send)||n.call(s,{action:t,logInfo:i})},e.updateParams=function(t){e.collect.updateExtendsInfo(t)},e}();function fe(e,t,i){return t&&function(e,t){for(var i=0;i ",e),s=null})).catch((function(n){var s,r,o,a;t.logger.error("[MpegTsDemux] demuxerTsInit ERROR fetch ERROR ==> ",n),null==(r=t.event)||null==(s=r.emit)||s.call(r,ce,{data:n}),null==(a=t.event)||null==(o=a.emit)||o.call(a,de,{data:n,type:ce}),null==i||i.onDemuxedFailed(n,e),pe.send(100,{url:e,msg:"fetch error"})}))},t._demuxCore=function(e,t){e.length<=0||this.decoderWorker.postMessage($(Q,{buff:e,tsUrl:t}))},t.readMediaInfo=function(){return this.mediaInfo},t.readAudioNone=function(){var e;return null==(e=this.mediaInfo)?void 0:e.audioNone},t.isHEVC=function(){return this.mediaInfo.vCodec===d||this.mediaInfo.vCodec===c},t.destroy=function(){this.controller&&this.controller.abort(),this.controller=null,this.mediaInfo=null,this.aacDec=null},t._onWorkerMessage=function(){var e=this;e.logger.log("[demuxer] register _onWorkerMessage"),e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case J:var n,s;if(e.mediaInfo=i.data,e.mediaInfo)null==(s=e.event)||null==(n=s.emit)||n.call(s,"mediaInfo",e.mediaInfo);break;case z:var r;if(e.mediaInfo.vCodec)null==e.aacDec?e.aacDec=new ue(e.mediaInfo):e.aacDec.updateOptions(e.mediaInfo),null==e||null==(r=e.onDemuxed)||r.call(e)}}))},fe(e,[{key:"vCodec",get:function(){return this.mediaInfo.vCodec}}]),e}(),ge=function(){function e(e,t,i,n){this.pts=e,this.dts=e,this.isKey=t,this.data=i,this.video=n}return e.prototype.setFrame=function(e,t,i,n){this.pts=e,this.isKey=t,this.data=i,this.video=n},e}(),ye=function(){function e(e){this.logger=null==e?void 0:e.logger,this.event=null==e?void 0:e.event,this.decoderWorker=e.decoderWorker,this.m3u8Base=new le(e),this.mpegTsDemux=new ve(e),this.tsList=[],this._startTime=0,this._aStartTime=0,this.lockWait={state:!1,lockMember:{dur:0}},this._timerFeed=null,this.seekPos=-1,this.vPreFramePTS=0,this.aPreFramePTS=0,this.audioNone=!1,this.isHevcParam=!1,this.vCodec="",this.aCodec=null,this.aChannel=0,this.durationMs=-1,this.fps=-1,this.sampleRate=-1,this.size={width:-1,height:-1},this.mediaInfo=null,this._onWorkerMessage(),this.onReadyOBJ=null,this.onFinished=null,this.onDemuxed=null,this.onSamples=null,this.onCacheProcess=null}var t=e.prototype;return t.getCachePTS=function(){return Math.max(this.vPreFramePTS,this.aPreFramePTS)},t.demux=function(e){var t=this,i=this;this.vPreFramePTS=0,this.aPreFramePTS=0,this.m3u8Base.onTransportStream=function(e,t){i.tsList.push({streamURI:e,streamDur:t}),i.lockWait.state=!1},this.m3u8Base.onFinished=function(e){var t;e.type===p?i.durationMs=1e3*e.duration:i.durationMs=-1,null==i||null==(t=i.onFinished)||t.call(i,i.onReadyOBJ,e)},this.mpegTsDemux.onDemuxedFailed=function(e,n){t.logger.error("[M3u8] onDemuxedFailed: ",e,n),i.lockWait.state=!1},this.mpegTsDemux.onDemuxed=function(){var e;t.logger.log("[M3u8] onDemuxed"),null==i.mediaInfo&&(i.mediaInfo=i.mpegTsDemux.readMediaInfo(),t.logger.log("[M3u8] mediaInfo: ",i.mediaInfo),i.isHevcParam=i.mpegTsDemux.isHEVC(),i.vCodec=i.mpegTsDemux.vCodec,i.aCodec=i.mediaInfo.aCodec,i.aChannel=i.mediaInfo.sampleChannel,i.fps=i.mediaInfo.fps,i.sampleRate=i.mediaInfo.sampleRate,(null===i.aCodec||""===i.aCodec||i.aChannel<=0)&&(i.audioNone=!0),i.mediaInfo.width>0&&i.mediaInfo.height>0&&(t.size.width=t.mediaInfo.width,t.size.height=t.mediaInfo.height)),null==i||null==(e=i.onDemuxed)||e.call(i,i.onReadyOBJ),i.mpegTsDemux&&t.decoderWorker.postMessage($(q))},this.mpegTsDemux.onReady=function(){i._fetchM3u8AndIntervalTs(e)},this._timerTsWasm=window.setInterval((function(){1===ke.__HLS_WASM_DecoderState__&&(i._fetchM3u8AndIntervalTs(e),window.clearInterval(i._timerTsWasm),i._timerTsWasm=null)}),500)},t._fetchM3u8AndIntervalTs=function(e){var t=this,i=this;this.logger.log("[M3u8] start fetch m3u8 url"),i.m3u8Base.fetchM3u8(e),i._timerFeed=window.setInterval((function(){if(i.tsList.length>0&&!i.lockWait.state)try{var e=i.tsList.shift();if(null!=e){var n=e.streamURI,s=e.streamDur;i.lockWait.state=!0,i.lockWait.lockMember.dur=+s,i.mpegTsDemux.demuxURL(n)}else t.logger.error("[M3u8] onTsReady need wait ")}catch(e){var r,o,a,l;t.logger.error("[M3u8] onTsReady ERROR:",e),null==(o=t.event)||null==(r=o.emit)||r.call(o,he,{data:e}),null==(l=t.event)||null==(a=l.emit)||a.call(l,de,{data:e,type:he}),i.lockWait.state=!1}}),50)},t.destroy=function(){var e;this.m3u8Base&&(null==(e=this.m3u8Base)||e.destroy(),this.m3u8Base=null);this._timerFeed&&(window.clearInterval(this._timerFeed),this._timerFeed=null),this.mpegTsDemux&&(this.mpegTsDemux.destroy(),this.mpegTsDemux=null)},t.bindReady=function(e){this.onReadyOBJ=e},t.getACodec=function(){return this.aCodec},t.getVCodec=function(){return this.vCodec},t.getDurationMs=function(){return this.durationMs},t.getFPS=function(){return this.fps},t.getSampleRate=function(){return this.sampleRate},t.getSampleChannel=function(){return this.aChannel},t.getSize=function(){return this.size},t._onWorkerMessage=function(){this.logger.log("[M3U8] register _onWorkerMessage");var e=this;e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case q:var n,s=i.data,r=s.type,o=s.pts,a=s.ptime,l=s.keyframe,u=s.data,c=s.layer;if(u=new Uint8Array(u),1===r&&e.mpegTsDemux.mediaInfo.aCodec===h&&(u=e.mpegTsDemux.aacDec.sliceAACFrames(a,u)),0===r){var d=function(e){var t=e.nalu,i=e.vlc.vlc;null==t.vps&&(t.vps=new Uint8Array);var n=new Uint8Array(t.vps.length+t.sps.length+t.pps.length+t.sei.length+i.length);return n.set(t.vps,0),n.set(t.sps,t.vps.length),n.set(t.pps,t.vps.length+t.sps.length),n.set(t.sei,t.vps.length+t.sps.length+t.pps.length),n.set(i,t.vps.length+t.sps.length+t.pps.length+t.sei.length),n}(c),p=o,f=new ge(p,1===l,d,!0);e.vPreFramePTS=p,null==e||e.onSamples(e.onReadyOBJ,f)}else if(1===r){var m;if("aac"===(null==(m=e.mediaInfo)?void 0:m.aCodec)){for(var v=u,g=0;g0&&(e.$video.volume=e._options.volume)}),1e3)})),e.event.emit("parsed")}))}))}else if(this.$video.canPlayType("application/vnd.apple.mpegurl")){this.logger.log("Browser support application/vnd.apple.mpegurl : ",this.$video.canPlayType("application/vnd.apple.mpegurl")),this.$video.src=this._options.url;var n=!1;this.$video.addEventListener("canplay",(function(){!n&&e._options.autoPlay&&setTimeout((function(){e.$video.play().then((function(){e.logger.log("autoPlay video!"),setTimeout((function(){e._options.volume>0&&e.setVolume(e._options.volume)}),1e3),n=!0}))}),200)}))}else this.logger.warn("Browser not support hls")},n.isPlayingState=function(){return!this.$video.paused},n.play=function(){if(this.isPlayingState())return Promise.resolve();if(this._options.isLive&&(this.$video.buffered.length>=1&&this.$video.buffered.end(0)>1)){var e=this.$video.buffered.end(0)-1;this.$video.currentTime=e}return this.$video.play()},n.pause=function(){this.$video.pause()},n.setVolume=function(e){this.$video.muted&&(this.$video.muted=!1),this._volume=+(e||0),0===this._volume&&(this.$video.muted=!0),this.$video.volume=this._volume},n.destroy=function(){this.$video&&this.$video.pause(),this._hls&&(this._hls.destroy(),this._hls=null),e.prototype.destroy.call(this)},n._onEvent=function(){var e;(e=this).$video&&(e.$video.addEventListener("canplay",(function(){e.event.emit("canplay")})),e.$video.addEventListener("loadeddata",(function(){e.event.emit("loadeddata")})),e.$video.addEventListener("volumechange",(function(){e.event.emit("volumechange",{data:e.$video.volume})})),e.$video.addEventListener("waiting",(function(){e.event.emit("waiting")})),e.$video.addEventListener("timeupdate",(function(){var t;null==(t=e.event)||t.emit("timeupdate")})),e.$video.addEventListener("seeking",(function(){e.event.emit("seeking",{data:e.$video.currentTime})})),e.$video.addEventListener("seeked",(function(){e.event.emit("seeked")})),e.$video.addEventListener("abort",(function(){e.event.emit("abort")})),e.$video.addEventListener("error",(function(){var t;null==(t=e.event)||t.emit("error",{data:e.$video.error})})),e.$video.addEventListener("ended",(function(){e.event.emit("ended")})))},_e(t,[{key:"volume",get:function(){return this._volume},set:function(e){this.setVolume(e)}}]),t}(te);var Ce="wasm_loaded",xe="wasm_failed",Se="init";function Le(e,t){return Le=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Le(e,t)}var be=function(e){function t(t){var i;return void 0===t&&(t={}),i=e.call(this,t)||this,t.url=n.addVc(null==t?void 0:t.url,["h264","h265"]),function(e,t){if(((null==t?void 0:t.volume)||0)>1?e._volume=1:((null==t?void 0:t.volume)||0)<=0?e._volume=0:e._volume=+((null==t?void 0:t.volume)||0),t.volume=e._volume,e.options=r.merge({},Z,t),"string"!=typeof e.options.id)throw new Error("id is required!");e.logger=s(e.options.loggerOptions),e.event=new o,e.logger.log("HlsPlayer version: ",ke.version),e.logger.log("HlsPlayer options: ",e.options),e.options.logger=e.logger}(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(i),t),i._containerClassName=K+"-container",i._render(),i}!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Le(e,t)}(t,e);var i=t.prototype;return i._render=function(){this.$container.classList.add(this._containerClassName)},i.destroy=function(){this.$container&&(this.$container.classList.remove(this._containerClassName),this.$container.innerHTML="",this.$container=null)},t}(e);function Re(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e=!0),this.playParam={durationMs:0,fps:0,sampleRate:0,size:{width:0,height:0},audioNone:e,videoCodec:L},!M())throw new Error("Browser not support WebAssembly!");this._onWorkerMessage()},i.play=function(){if(pe.send(1,{name:"play"}),null===this.player)return Promise.resolve();if(this.playParam.videoCodec===L){var e={seekPos:0,isLive:this.options.isLive,accurateSeek:!0,seekEvent:!1,realPlay:!0};return this.player.play(e)}return this.player.play()},i.pause=function(){return pe.send(1,{name:"pause"}),null!==this.player&&(this.player.pause(),!0)},i.destroy=function(){var t,i;return pe.send(1,{name:"destroy"}),void 0!==this.player&&null!==this.player&&(this.playParam.videoCodec===L&&this._m3u8Obj&&(this._m3u8Obj.destroy(),this._m3u8Obj=null),this.player.destroy(),this._decoderWorker&&(this._decoderWorker.postMessage($(X)),this._decoderWorker.terminate(),this._decoderWorker=null),this.logger.log("destroy"),null==(i=this.event)||null==(t=i.emit)||t.call(i,"destroy"),this.player=null,e.prototype.destroy.call(this),!0)},i.isPlaying=function(){return null!==this.player&&this.player.isPlayingState()},i.setVolume=function(e){var t;(e=+e)>1||e<0?this.logger.warn("volume volume value 0.0 ~ 1.0!"):((t=this).player||(t.event.emit("playerIsNull"),t.logger.warn("Player instance does not exist!"),0))&&(this.player.setVolume(e),this.event.emit("volumeChange",{data:e}))},i.getVersion=function(){return pe.send(1,{name:"getVersion"}),"0.1.0-beta.1"},i._m3u8Entry=function(){var e=this;this._m3u8Obj=new ye({logger:this.logger,decoderWorker:this._decoderWorker,event:this.event}),this._m3u8Obj.bindReady(this),this._m3u8Obj.onFinished=function(e,t){},this._m3u8Obj.onCacheProcess=function(t){e.options.isLive||null==e.onCacheProcess||e.onCacheProcess.call(e,t)},this._m3u8Obj.onDemuxed=this._checkPlayer.bind(this),this._m3u8Obj.onSamples=this._hlsOnSamples.bind(this),this._m3u8Obj.demux(this.url)},i._checkPlayer=function(e,t){var i=this;if(null==i.player){var n,s,r;if(!(null==i||null==(n=i._m3u8Obj)?void 0:n.isHevcParam)||t)return null==i||null==(r=i._m3u8Obj)||null==(s=r.destroy)||s.call(r),i._m3u8Obj=null,this._decoderWorker.terminate(),this._decoderWorker=null,void(i.player=new we(De({},this.options,{event:this.event,logger:this.logger})));var o=i._m3u8Obj.getACodec(),a=i._m3u8Obj.getFPS(),l=i._m3u8Obj.getSampleRate(),u=i._m3u8Obj.getSize(),h=!1;h=i._m3u8Obj.getSampleChannel()<=0||""===o,i._softPlayer(0,a,l,u,h)}},i._hlsOnSamples=function(e,t){var i,n,s,r=this;if(t.video)null==(s=r.player)||null==(n=s.appendHevcFrame)||n.call(s,t);else if(!(null==(i=r._m3u8Obj)?void 0:i.audioNone)){var o,a;null==(a=r.player)||null==(o=a.appendAACFrame)||o.call(a,t)}},i._onWorkerMessage=function(){var e=this,i=this;this._decoderWorker.onmessage=function(n){var s=n.data;switch(s.cmd){case W:t.__HLS_WASM_DecoderState__=0;break;case V:t.__HLS_WASM_DecoderState__=1,e.logger.log("Wasm already init over!"),i.event.emit(Ce),i._decoderWorker.postMessage($("registerWasmPlayer")),i._m3u8Entry();break;case j:t.__HLS_WASM_DecoderState__=-1,e.logger.error("Wasm init failed!",s),i.event.emit(xe,s),pe.send("wasm",{name:"wasm loading failed"}),i._checkPlayer(!0)}}},i._softPlayer=function(e,t,i,n,s,r){var o,a,l=this;void 0===s&&(s=!1),void 0===r&&(r=null);var u,h=this;(this.playParam.durationMs=e,this.playParam.fps=t,this.playParam.sampleRate=i,this.playParam.size=n,this.playParam.audioNone=s,this.playParam.videoCodec=r||L,this.logger.log("this.playParam: ",this.playParam),this.logger.log("start init soft player"),this.player=new re(De({},h.options,{sampleRate:i,fps:t,appendHevcType:v,fixed:!1,id:this.options.id,audioNone:s,videoCodec:r,logger:this.logger,event:this.event,decoderWorker:this._decoderWorker})),this.player.onPlayingTime=function(e){var t;null==h||null==(t=h.onPlayTime)||t.call(h,e)},this.player.onPlayingFinish=function(){var e,t;(l.pause(),null!=l.onPlayFinish)&&(null==(t=l)||null==(e=t.onPlayFinish)||e.call(t))},this.player.onLoadCache=function(){var e,t;null==(t=l)||null==(e=t.onLoadCache)||e.call(t)},this.player.onLoadCacheFinished=function(){var e,t;null==(t=l)||null==(e=t.onLoadCacheFinished)||e.call(t)},null==(o=h.player)||o.setDurationMs(e),null==(a=h.player)||a.setFrameRate(t),null!=h.onReadyShowDone)&&(null==h||null==(u=h.onReadyShowDone)||u.call(h));this.event.emit("parsed"),this.player&&this.options.autoPlay&&this.play()},t.supportType=function(e){if(pe.send(1,{name:"supportType",options:e}),"hls"===e.type)return!0;if(e.url){var t=e.url;t.startsWith("http://")||t.startsWith("https://")||(t=/^\/\//.test(t)?"http:"+t:location.origin+location.pathname+t);try{return/\.m3u8$/i.test(new URL(t).pathname)}catch(e){}}return!1},Re(t,[{key:"volume",get:function(){return this.player?this.player.volume:this.options.volume},set:function(e){e=+e,this.setVolume(e)}}]),t}(be);ke.__HLS_WASM_DecoderState__=0,ke.version="0.1.0-beta.1",module.exports=ke; diff --git a/dist/index.umd.js b/dist/index.umd.js new file mode 100644 index 0000000..1d738f6 --- /dev/null +++ b/dist/index.umd.js @@ -0,0 +1,60 @@ +/* +* +* HlsPlayer.js v0.1.0-beta.1 +* Copyright (c) 2024-8-1 Ezviz-OpenBiz +* . +* +*/ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).HlsPlayer=t()}(this,(function(){"use strict";var e=1,t=2,i=3,r="aac",s="h265",n="hevc",a="m3u8",o="hls",l=0,h=1,c=600,d=400,u=30,f=40,g=!1,m=44100,p=20,v="ONCE",y="SWAP",T=0,E=265,S=1001,b=1002,L=1003;var w,A=function(){return window.WebAssembly&&"object"==("undefined"==typeof WebAssembly?"undefined":(e=WebAssembly)&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e);var e};function R(){return(new Date).getTime()}var k=window.AudioContext||(null==(w=window)?void 0:w.webkitAudioContext),_=function(){function e(e){var t=this;this.options={sampleRate:e.sampleRate||m,appendType:e.appendType||l,playMode:e.playMode||y,isLive:e.isLive},this.logger=null==e?void 0:e.logger,this.sourceChannel=-1,this.audioCtx=new k({latencyHint:"interactive",sampleRate:e.sampleRate}),this.gainNode=null,this.sourceList=[],this.startStatus=!1,this.sampleQueue=[],this.nextBuffer=null,this.playTimestamp=0,this.playStartTime=0,this.durationMs=-1,this.volume=e.volume||0,this.onLoadCache=null,this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList[0].onended=function(){t.swapSource(0,1)},this.sourceList[1].onended=function(){t.swapSource(1,0)},this.gainNode=this.audioCtx.createGain(),this.gainNode.gain.value=this.volume,this.gainNode.connect(this.audioCtx.destination),this.runNextBuffer()}var t=e.prototype;return t.resetStartParam=function(){this.playTimestamp=0,this.playStartTime=0},t.setOnLoadCache=function(e){this.onLoadCache=e},t.setDurationMs=function(e){void 0===e&&(e=-1),this.durationMs=e},t.setVolume=function(e){void 0===e&&(e=0),this.volume=e,this.gainNode.gain.value=e},t.getAlignVPTS=function(){return this.playTimestamp+(R()-this.playStartTime)/1e3},t.swapSource=function(e,t){if(void 0===e&&(e=-1),void 0===t&&(t=-1),!this.startStatus)return null;if(e<0||e>=this.sourceList.length)return null;if(t<0||t>=this.sourceList.length)return null;try{this.sourceChannel===e&&null!==this.sourceList[e]&&(this.sourceList[e].disconnect(this.gainNode),this.sourceList[e]=null)}catch(t){this.logger.error("[DEFINE ERROR] this audioCore disconnect source Index:"+e+" error happened!",t)}(this.sourceChannel=t,-2===this.decodeSample(t,e)&&this.options.isLive)&&(this.getAlignVPTS()>=this.durationMs/1e3-.04?this.pause():null==this||this.onLoadCache());return null},t.addSample=function(e){return void 0===e&&(e=null),!(null==e||!e||void 0===e)&&(0===this.sampleQueue.length&&(this.seekPos=null==e?void 0:e.pts),this.sampleQueue.push(e),!0)},t.runNextBuffer=function(){var e=this;window.setInterval((function(){if(!(null!=e.nextBuffer||e.sampleQueue.length=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){s.swapSource(e,t)}),0===this.sampleQueue.length)return this.options.isLive?(this.sourceList[e].connect(this.gainNode),this.sourceList[e].startState||null==(r=this.sourceList[e])||null==(i=r.start)||i.call(r),this.sourceList[e].onended=function(){s.swapSource(e,t)},this.sourceList[e].stop(),0):-2;if(this.sourceList[e].buffer)return this.swapSource(e,t),0;if(null==this.nextBuffer||this.nextBuffer.data.length<1){var n,a,o=this.sourceList[e];return o.connect(this.gainNode),(null==o?void 0:o.startState)||null==(a=this.sourceList[e])||null==(n=a.start)||n.call(a),o.startState=!0,o.stop(),1}var l=this.nextBuffer.data.buffer;this.playTimestamp=this.nextBuffer.pts,this.playStartTime=R();try{this.audioCtx.decodeAudioData(l,(function(t){var i,r;null!==s.sourceList[e]&&(s.sourceList[e].buffer=t,s.sourceList[e].connect(s.gainNode),s.sourceList[e].startState||null==(r=s.sourceList[e])||null==(i=r.start)||i.call(r),s.sourceList[e].startState=!0)}),(function(e){s.logger.error("Error audioCore with decoding audio data",e)}))}catch(e){return this.nextBuffer=null,this.logger.log("decodeAudioData error",e),-3}return this.nextBuffer=null,0},t.decodeWholeSamples=function(e){var t=this;if(void 0===e&&(e=-1),this.sourceChannel=e,e<0||e>=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){}),0===this.sampleQueue.length)return-2;for(var i=null,r=null,s=0;s",e)}},e}(),D=function(){function r(e){this.limit=e.limit||200,this.logger=null==e?void 0:e.logger,this.yuvCache=[]}var s=r.prototype;return s.appendCacheByCacheYuv=function(i){return this.yuvCache.push(i),this.yuvCache.length>=this.limit?(this.shiftYuv(),t):e},s.getState=function(){return this.yuvCache.length<=0?i:this.yuvCache.length>=this.limit?t:e},s.cleanPipeline=function(){this.yuvCache=[],this.yuvCache.length=0},s.shiftYuv=function(){return this.yuvCache.length<=0?null:this.yuvCache.shift()},r}(),x=function(){function e(e,t,i,r,s,n){this.pts=e,this.width=t,this.height=i,this.imageBufferY=r,this.imageBufferB=s,this.imageBufferR=n}return e.prototype.setYuv=function(e,t,i,r,s,n){this.pts=e,this.width=t,this.height=i,this.imageBufferY=r,this.imageBufferB=s,this.imageBufferR=n},e}(),C=function(){function e(e){this.gl=e,this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)}var t=e.prototype;return t.bind=function(e,t,i){var r=this.gl;r.activeTexture([r.TEXTURE0,r.TEXTURE1,r.TEXTURE2][e]),r.bindTexture(r.TEXTURE_2D,this.texture),r.uniform1i(r.getUniformLocation(t,i),e)},t.fill=function(e,t,i){var r=this.gl;r.bindTexture(r.TEXTURE_2D,this.texture),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e,t,0,r.LUMINANCE,r.UNSIGNED_BYTE,i)},e}(),I=function(){function e(e,t){this.gl=null,this.gl=e.getContext("webgl")||e.getContext("experimental-webgl"),this.program=this.gl.createProgram();var i=["attribute highp vec4 aVertexPosition;","attribute vec2 aTextureCoord;","varying highp vec2 vTextureCoord;","void main(void) {"," gl_Position = aVertexPosition;"," vTextureCoord = aTextureCoord;","}"].join("\n"),r=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(r,i),this.gl.compileShader(r);var s=["precision highp float;","varying lowp vec2 vTextureCoord;","uniform sampler2D YTexture;","uniform sampler2D UTexture;","uniform sampler2D VTexture;","const mat4 YUV2RGB = mat4","("," 1.1643828125, 0, 1.59602734375, -.87078515625,"," 1.1643828125, -.39176171875, -.81296875, .52959375,"," 1.1643828125, 2.017234375, 0, -1.081390625,"," 0, 0, 0, 1",");","void main(void) {"," gl_FragColor = vec4( texture2D(YTexture, vTextureCoord).x, texture2D(UTexture, vTextureCoord).x, texture2D(VTexture, vTextureCoord).x, 1) * YUV2RGB;","}"].join("\n"),n=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(n,s),this.gl.compileShader(n),this.gl.attachShader(this.program,r),this.gl.attachShader(this.program,n),this.gl.linkProgram(this.program),this.gl.useProgram(this.program),this.gl.getProgramParameter(this.program,this.gl.LINK_STATUS);var a=this.gl.getAttribLocation(this.program,"aVertexPosition");this.gl.enableVertexAttribArray(a);var o=this.gl.getAttribLocation(this.program,"aTextureCoord");this.gl.enableVertexAttribArray(o),this.verticesBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.verticesBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(a,3,this.gl.FLOAT,!1,0,0),this.texCoordBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texCoordBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(o,2,this.gl.FLOAT,!1,0,0),this.gl.y=new C(this.gl),this.gl.u=new C(this.gl),this.gl.v=new C(this.gl),this.gl.y.bind(0,this.program,"YTexture"),this.gl.u.bind(1,this.program,"UTexture"),this.gl.v.bind(2,this.program,"VTexture")}var t=e.prototype;return t.renderFrame=function(e,t,i,r,s){this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.y.fill(r,s,e),this.gl.u.fill(r>>1,s>>1,t),this.gl.v.fill(r>>1,s>>1,i),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4)},t.destroyContext=function(){try{this.gl.deleteProgram(this.program),this.gl.deleteBuffer(this.verticesBuffer),this.gl.deleteBuffer(this.texCoordBuffer),this.gl.deleteTexture(this.gl.y.texture),this.gl.deleteTexture(this.gl.u.texture),this.gl.deleteTexture(this.gl.v.texture),this.gl=null,this.program=null,this.verticesBuffer=null,this.texCoordBuffer=null}catch(e){}},e}(),P=function(e,t){return{cmd:e,data:t}},O="wasmLoading",M="wasmLoaded",F="wasmFailed",N="videoCallback",U="decodeCodecContext",B="destroy",$="demuxTsStream",G="demuxCoreReceive",K="readPacket",V="readPacketEnd",H="mediaInfo",j={info:"",log:"background: #4096ff; color: #FFF;",warn:"background: yellow; color: #FFF;",error:"background: red; color: #FFF;"},W=function(){function e(e){void 0===e&&(e={}),this._options={level:"INFO",showTime:!1},this._levelNum=3,this.info=this._loggerFactory("info",this._levelNum>=3),this.log=this._loggerFactory("log",this._levelNum>=2),this.warn=this._loggerFactory("warn",this._levelNum>=1),this.error=this._loggerFactory("error",this._levelNum>=0),this.setOptions(e)}var t=e.prototype;return t.setOptions=function(e){var t;this._options=Object.assign({},this._options,e),this._levelNum=this._matchLevel(null!=(t=this._options.level)?t:"INFO"),this.info=this._loggerFactory("info",this._levelNum>=3),this.log=this._loggerFactory("log",this._levelNum>=2),this.warn=this._loggerFactory("warn",this._levelNum>=1),this.error=this._loggerFactory("error",this._levelNum>=0)},t._matchLevel=function(e){var t=3;switch(e){case"INFO":t=3;break;case"LOG":t=2;break;case"WARN":t=1;break;case"ERROR":t=0}return t},t._loggerFactory=function(t,i){var r=console[t];if(i&&r){var s,n=this._options.name?"%c["+this._options.name+"]%c %c["+t.toUpperCase()+"]":"%c["+t.toUpperCase()+"]",a=[this._options.name?"background: green;color: #fff":null,this._options.name?"":null,j[t]].filter((function(e){return null!=e}));return(s=r).bind.apply(s,[].concat([console,n],a))}return e.noop},t.getOptions=function(){return this._options},t.getVersion=function(){return"1.0.1"},e}();function Y(e){return(e=+e)<10&&(e="0"+e),e+""}W.noop=function(){};var q=["info","log","warn","error"];function z(e){var t=new W(e);return new Proxy(t,{get:function(e,t){if(q.includes(t)){var i;if(null==(i=e._options)?void 0:i.showTime){var r=(n=(s=new Date(Date.now())).getFullYear(),a=s.getMonth()+1,o=s.getDate(),l=s.getHours(),h=s.getMinutes(),c=s.getSeconds(),d=s.getMilliseconds(),n+"/"+Y(a)+"/"+Y(o)+" "+Y(l)+":"+Y(h)+":"+Y(c)+":"+d);return e[t].bind(console,"["+r+"]")}return e[t].bind(console)}var s,n,a,o,l,h,c,d;return Reflect.get(e,t)}})}var X="object"==typeof global&&global&&global.Object===Object&&global,Q="object"==typeof self&&self&&self.Object===Object&&self,J=X||Q||Function("return this")(),Z=J.Symbol,ee=Object.prototype,te=ee.hasOwnProperty,ie=ee.toString,re=Z?Z.toStringTag:void 0;var se=Object.prototype.toString;var ne="[object Null]",ae="[object Undefined]",oe=Z?Z.toStringTag:void 0;function le(e){return null==e?void 0===e?ae:ne:oe&&oe in Object(e)?function(e){var t=te.call(e,re),i=e[re];try{e[re]=void 0;var r=!0}catch(e){}var s=ie.call(e);return r&&(t?e[re]=i:delete e[re]),s}(e):function(e){return se.call(e)}(e)}function he(e){return null!=e&&"object"==typeof e}var ce=Array.isArray;function de(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function ue(e){return e}var fe="[object AsyncFunction]",ge="[object Function]",me="[object GeneratorFunction]",pe="[object Proxy]";function ve(e){if(!de(e))return!1;var t=le(e);return t==ge||t==me||t==fe||t==pe}var ye,Te=J["__core-js_shared__"],Ee=(ye=/[^.]+$/.exec(Te&&Te.keys&&Te.keys.IE_PROTO||""))?"Symbol(src)_1."+ye:"";var Se=Function.prototype.toString;var be=/^\[object .+?Constructor\]$/,Le=Function.prototype,we=Object.prototype,Ae=Le.toString,Re=we.hasOwnProperty,ke=RegExp("^"+Ae.call(Re).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function _e(e){return!(!de(e)||(t=e,Ee&&Ee in t))&&(ve(e)?ke:be).test(function(e){if(null!=e){try{return Se.call(e)}catch(e){}try{return e+""}catch(e){}}return""}(e));var t}function De(e,t){var i=function(e,t){return null==e?void 0:e[t]}(e,t);return _e(i)?i:void 0}var xe=Object.create,Ce=function(){function e(){}return function(t){if(!de(t))return{};if(xe)return xe(t);e.prototype=t;var i=new e;return e.prototype=void 0,i}}();var Ie=Date.now;var Pe,Oe,Me,Fe=function(){try{var e=De(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),Ne=Fe?function(e,t){return Fe(e,"toString",{configurable:!0,enumerable:!1,value:(i=t,function(){return i}),writable:!0});var i}:ue,Ue=(Pe=Ne,Oe=0,Me=0,function(){var e=Ie(),t=16-(e-Me);if(Me=e,t>0){if(++Oe>=800)return arguments[0]}else Oe=0;return Pe.apply(void 0,arguments)}),Be=9007199254740991,$e=/^(?:0|[1-9]\d*)$/;function Ge(e,t){var i=typeof e;return!!(t=null==t?Be:t)&&("number"==i||"symbol"!=i&&$e.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=qe}function Xe(e){return null!=e&&ze(e.length)&&!ve(e)}var Qe=Object.prototype;function Je(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||Qe)}function Ze(e){return he(e)&&"[object Arguments]"==le(e)}var et=Object.prototype,tt=et.hasOwnProperty,it=et.propertyIsEnumerable,rt=Ze(function(){return arguments}())?Ze:function(e){return he(e)&&tt.call(e,"callee")&&!it.call(e,"callee")};var st="object"==typeof exports&&exports&&!exports.nodeType&&exports,nt=st&&"object"==typeof module&&module&&!module.nodeType&&module,at=nt&&nt.exports===st?J.Buffer:void 0,ot=(at?at.isBuffer:void 0)||function(){return!1},lt={};lt["[object Float32Array]"]=lt["[object Float64Array]"]=lt["[object Int8Array]"]=lt["[object Int16Array]"]=lt["[object Int32Array]"]=lt["[object Uint8Array]"]=lt["[object Uint8ClampedArray]"]=lt["[object Uint16Array]"]=lt["[object Uint32Array]"]=!0,lt["[object Arguments]"]=lt["[object Array]"]=lt["[object ArrayBuffer]"]=lt["[object Boolean]"]=lt["[object DataView]"]=lt["[object Date]"]=lt["[object Error]"]=lt["[object Function]"]=lt["[object Map]"]=lt["[object Number]"]=lt["[object Object]"]=lt["[object RegExp]"]=lt["[object Set]"]=lt["[object String]"]=lt["[object WeakMap]"]=!1;var ht="object"==typeof exports&&exports&&!exports.nodeType&&exports,ct=ht&&"object"==typeof module&&module&&!module.nodeType&&module,dt=ct&&ct.exports===ht&&X.process,ut=function(){try{var e=ct&&ct.require&&ct.require("util").types;return e||dt&&dt.binding&&dt.binding("util")}catch(e){}}(),ft=ut&&ut.isTypedArray,gt=ft?function(e){return function(t){return e(t)}}(ft):function(e){return he(e)&&ze(e.length)&&!!lt[le(e)]};function mt(e,t){var i=ce(e),r=!i&&rt(e),s=!i&&!r&&ot(e),n=!i&&!r&&!s&>(e),a=i||r||s||n,o=a?function(e,t){for(var i=-1,r=Array(e);++i-1},At.prototype.set=function(e,t){var i=this.__data__,r=Lt(i,e);return r<0?(++this.size,i.push([e,t])):i[r][1]=t,this};var Rt=De(J,"Map");function kt(e,t){var i,r,s=e.__data__;return("string"==(r=typeof(i=t))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==i:null===i)?s["string"==typeof t?"string":"hash"]:s.map}function _t(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t1?t[r-1]:void 0,n=r>2?t[2]:void 0;for(s=qt.length>3&&"function"==typeof s?(r--,s):void 0,n&&function(e,t,i){if(!de(i))return!1;var r=typeof t;return!!("number"==r?Xe(i)&&Ge(t,i.length):"string"==r&&t in i)&&Ve(i[t],e)}(t[0],t[1],n)&&(s=r<3?void 0:s,r=1),e=Object(e);++i{if("undefined"==typeof document)return!1;const e=ti[0],t={};for(const i of ti){const r=i?.[1];if(r in document){for(const[r,s]of i.entries())t[e[r]]=s;return t}}return!1})(),ri={change:ii.fullscreenchange,error:ii.fullscreenerror};let si={request:(e=document.documentElement,t)=>new Promise(((i,r)=>{const s=()=>{si.off("change",s),i()};si.on("change",s);const n=e[ii.requestFullscreen](t);n instanceof Promise&&n.then(s).catch(r)})),exit:()=>new Promise(((e,t)=>{if(!si.isFullscreen)return void e();const i=()=>{si.off("change",i),e()};si.on("change",i);const r=document[ii.exitFullscreen]();r instanceof Promise&&r.then(i).catch(t)})),toggle:(e,t)=>si.isFullscreen?si.exit():si.request(e,t),onchange(e){si.on("change",e)},onerror(e){si.on("error",e)},on(e,t){const i=ri[e];i&&document.addEventListener(i,t,!1)},off(e,t){const i=ri[e];i&&document.removeEventListener(i,t,!1)},raw:ii};Object.defineProperties(si,{isFullscreen:{get:()=>Boolean(document[ii.fullscreenElement])},element:{enumerable:!0,get:()=>document[ii.fullscreenElement]??void 0},isEnabled:{enumerable:!0,get:()=>Boolean(document[ii.fullscreenEnabled])}}),ii||(si={isEnabled:!1});var ni=si,ai={exports:{}};!function(e,t){function i(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}!function(r,s){var n="function",a="undefined",o="object",l="string",h="major",c="model",d="name",u="type",f="vendor",g="version",m="architecture",p="console",v="mobile",y="tablet",T="smarttv",E="wearable",S="embedded",b="Amazon",L="Apple",w="ASUS",A="BlackBerry",R="Browser",k="Chrome",_="Firefox",D="Google",x="Huawei",C="LG",I="Microsoft",P="Motorola",O="Opera",M="Samsung",F="Sharp",N="Sony",U="Xiaomi",B="Zebra",$="Facebook",G="Chromium OS",K="Mac OS",V=function(e){for(var t={},i=0;i0?2===h.length?i(h[1])==n?this[h[0]]=h[1].call(this,d):this[h[0]]=h[1]:3===h.length?i(h[1])!==n||h[1].exec&&h[1].test?this[h[0]]=d?d.replace(h[1],h[2]):s:this[h[0]]=d?h[1].call(this,d,h[2]):s:4===h.length&&(this[h[0]]=d?h[3].call(this,d.replace(h[1],h[2])):s):this[h]=d||s;u+=2}},q=function(e,t){for(var r in t)if(i(t[r])===o&&t[r].length>0){for(var n=0;n2&&(e[c]="iPad",e[u]=y),e},this.getEngine=function(){var e={};return e[d]=s,e[g]=s,Y.call(e,S,L.engine),e},this.getOS=function(){var e={};return e[d]=s,e[g]=s,Y.call(e,S,L.os),w&&!e[d]&&b&&"Unknown"!=b.platform&&(e[d]=b.platform.replace(/chrome os/i,G).replace(/macos/i,K)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return S},this.setUA=function(e){return S=(void 0===e?"undefined":i(e))===l&&e.length>500?W(e,500):e,this},this.setUA(S),this};Q.VERSION="1.0.37",Q.BROWSER=V([d,g,h]),Q.CPU=V([m]),Q.DEVICE=V([c,f,u,p,v,T,y,E,S]),Q.ENGINE=Q.OS=V([d,g]),i(t)!==a?(i(e)!==a&&e.exports&&(t=e.exports=Q),t.UAParser=Q):(void 0===r?"undefined":i(r))!==a&&(r.UAParser=Q);var J=(void 0===r?"undefined":i(r))!==a&&(r.jQuery||r.Zepto);if(J&&!J.ua){var Z=new Q;J.ua=Z.getResult(),J.ua.get=function(){return Z.getUA()},J.ua.set=function(e){Z.setUA(e);var t=Z.getResult();for(var i in t)J.ua[i]=t[i]}}}("object"===("undefined"==typeof window?"undefined":i(window))?window:Qt)}(ai,ai.exports);var oi,li,hi,ci,di=Jt(ai.exports),ui=(oi="undefined"!=typeof self?self:window,li={navigator:void 0!==oi.navigator?oi.navigator:{userAgent:""},infoMap:{engine:["WebKit","Trident","Gecko","Presto"],browser:["Safari","Chrome","Edge","IE","Firefox","Firefox Focus","Chromium","Opera","Vivaldi","Yandex","Arora","Lunascape","QupZilla","Coc Coc","Kindle","Iceweasel","Konqueror","Iceape","SeaMonkey","Epiphany","360","360SE","360EE","UC","QQBrowser","QQ","Baidu","Maxthon","Sogou","LBBROWSER","2345Explorer","TheWorld","XiaoMi","Quark","Qiyu","Wechat","Taobao","Alipay","Weibo","Douban","Suning","iQiYi"],os:["Windows","Linux","Mac OS","Android","Ubuntu","FreeBSD","Debian","iOS","Windows Phone","BlackBerry","MeeGo","Symbian","Chrome OS","WebOS"],device:["Mobile","Tablet","iPad"]}},hi={getMatchMap:function(e){return{Trident:e.indexOf("Trident")>-1||e.indexOf("NET CLR")>-1,Presto:e.indexOf("Presto")>-1,WebKit:e.indexOf("AppleWebKit")>-1,Gecko:e.indexOf("Gecko/")>-1,Safari:e.indexOf("Safari")>-1,Chrome:e.indexOf("Chrome")>-1||e.indexOf("CriOS")>-1,IE:e.indexOf("MSIE")>-1||e.indexOf("Trident")>-1,Edge:e.indexOf("Edge")>-1,Firefox:e.indexOf("Firefox")>-1||e.indexOf("FxiOS")>-1,"Firefox Focus":e.indexOf("Focus")>-1,Chromium:e.indexOf("Chromium")>-1,Opera:e.indexOf("Opera")>-1||e.indexOf("OPR")>-1,Vivaldi:e.indexOf("Vivaldi")>-1,Yandex:e.indexOf("YaBrowser")>-1,Arora:e.indexOf("Arora")>-1,Lunascape:e.indexOf("Lunascape")>-1,QupZilla:e.indexOf("QupZilla")>-1,"Coc Coc":e.indexOf("coc_coc_browser")>-1,Kindle:e.indexOf("Kindle")>-1||e.indexOf("Silk/")>-1,Iceweasel:e.indexOf("Iceweasel")>-1,Konqueror:e.indexOf("Konqueror")>-1,Iceape:e.indexOf("Iceape")>-1,SeaMonkey:e.indexOf("SeaMonkey")>-1,Epiphany:e.indexOf("Epiphany")>-1,360:e.indexOf("QihooBrowser")>-1||e.indexOf("QHBrowser")>-1,"360EE":e.indexOf("360EE")>-1,"360SE":e.indexOf("360SE")>-1,UC:e.indexOf("UC")>-1||e.indexOf(" UBrowser")>-1,QQBrowser:e.indexOf("QQBrowser")>-1,QQ:e.indexOf("QQ/")>-1,Baidu:e.indexOf("Baidu")>-1||e.indexOf("BIDUBrowser")>-1,Maxthon:e.indexOf("Maxthon")>-1,Sogou:e.indexOf("MetaSr")>-1||e.indexOf("Sogou")>-1,LBBROWSER:e.indexOf("LBBROWSER")>-1,"2345Explorer":e.indexOf("2345Explorer")>-1,TheWorld:e.indexOf("TheWorld")>-1,XiaoMi:e.indexOf("MiuiBrowser")>-1,Quark:e.indexOf("Quark")>-1,Qiyu:e.indexOf("Qiyu")>-1,Wechat:e.indexOf("MicroMessenger")>-1,Taobao:e.indexOf("AliApp(TB")>-1,Alipay:e.indexOf("AliApp(AP")>-1,Weibo:e.indexOf("Weibo")>-1,Douban:e.indexOf("com.douban.frodo")>-1,Suning:e.indexOf("SNEBUY-APP")>-1,iQiYi:e.indexOf("IqiyiApp")>-1,Windows:e.indexOf("Windows")>-1,Linux:e.indexOf("Linux")>-1||e.indexOf("X11")>-1,"Mac OS":e.indexOf("Macintosh")>-1,Android:e.indexOf("Android")>-1||e.indexOf("Adr")>-1,Ubuntu:e.indexOf("Ubuntu")>-1,FreeBSD:e.indexOf("FreeBSD")>-1,Debian:e.indexOf("Debian")>-1,"Windows Phone":e.indexOf("IEMobile")>-1||e.indexOf("Windows Phone")>-1,BlackBerry:e.indexOf("BlackBerry")>-1||e.indexOf("RIM")>-1,MeeGo:e.indexOf("MeeGo")>-1,Symbian:e.indexOf("Symbian")>-1,iOS:e.indexOf("like Mac OS X")>-1,"Chrome OS":e.indexOf("CrOS")>-1,WebOS:e.indexOf("hpwOS")>-1,Mobile:e.indexOf("Mobi")>-1||e.indexOf("iPh")>-1||e.indexOf("480")>-1,Tablet:e.indexOf("Tablet")>-1||e.indexOf("Nexus 7")>-1,iPad:e.indexOf("iPad")>-1}},matchInfoMap:function(e){var t,i=(null==(t=li.navigator)?void 0:t.userAgent)||"",r=hi.getMatchMap(i);for(var s in li.infoMap)for(var n=0;n36&&oi.showModalDialog?s=!0:+n>45&&(s=i("type","application/vnd.chromium.remoting-viewer"))}if(r.Baidu&&r.Opera&&(r.Baidu=!1),r.Mobile&&(r.Mobile=!t.includes("iPad")),s&&(i("type","application/gameplugin")||li.navigator&&void 0===li.navigator.connection.saveData?r["360SE"]=!0:r["360EE"]=!0),r.IE||r.Edge)switch(window.screenTop-window.screenY){case 71:case 74:case 99:case 75:case 105:break;case 102:r["360EE"]=!0;break;case 104:r["360SE"]=!0}var a={Safari:function(){return t.replace(/^.*Version\/([\d.]+).*$/,"$1")},Chrome:function(){return t.replace(/^.*Chrome\/([\d.]+).*$/,"$1").replace(/^.*CriOS\/([\d.]+).*$/,"$1")},IE:function(){return t.replace(/^.*MSIE ([\d.]+).*$/,"$1").replace(/^.*rv:([\d.]+).*$/,"$1")},Edge:function(){return t.replace(/^.*Edge\/([\d.]+).*$/,"$1")},Firefox:function(){return t.replace(/^.*Firefox\/([\d.]+).*$/,"$1").replace(/^.*FxiOS\/([\d.]+).*$/,"$1")},"Firefox Focus":function(){return t.replace(/^.*Focus\/([\d.]+).*$/,"$1")},Chromium:function(){return t.replace(/^.*Chromium\/([\d.]+).*$/,"$1")},Opera:function(){return t.replace(/^.*Opera\/([\d.]+).*$/,"$1").replace(/^.*OPR\/([\d.]+).*$/,"$1")},Vivaldi:function(){return t.replace(/^.*Vivaldi\/([\d.]+).*$/,"$1")},Yandex:function(){return t.replace(/^.*YaBrowser\/([\d.]+).*$/,"$1")},Arora:function(){return t.replace(/^.*Arora\/([\d.]+).*$/,"$1")},Lunascape:function(){return t.replace(/^.*Lunascape[\/\s]([\d.]+).*$/,"$1")},QupZilla:function(){return t.replace(/^.*QupZilla[\/\s]([\d.]+).*$/,"$1")},"Coc Coc":function(){return t.replace(/^.*coc_coc_browser\/([\d.]+).*$/,"$1")},Kindle:function(){return t.replace(/^.*Version\/([\d.]+).*$/,"$1")},Iceweasel:function(){return t.replace(/^.*Iceweasel\/([\d.]+).*$/,"$1")},Konqueror:function(){return t.replace(/^.*Konqueror\/([\d.]+).*$/,"$1")},Iceape:function(){return t.replace(/^.*Iceape\/([\d.]+).*$/,"$1")},SeaMonkey:function(){return t.replace(/^.*SeaMonkey\/([\d.]+).*$/,"$1")},Epiphany:function(){return t.replace(/^.*Epiphany\/([\d.]+).*$/,"$1")},360:function(){return t.replace(/^.*QihooBrowser\/([\d.]+).*$/,"$1")},"360SE":function(){return{63:"10.0",55:"9.1",45:"8.1",42:"8.0",31:"7.0",21:"6.3"}[+t.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},"360EE":function(){return{69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[+t.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},Maxthon:function(){return t.replace(/^.*Maxthon\/([\d.]+).*$/,"$1")},QQBrowser:function(){return t.replace(/^.*QQBrowser\/([\d.]+).*$/,"$1")},QQ:function(){return t.replace(/^.*QQ\/([\d.]+).*$/,"$1")},Baidu:function(){return t.replace(/^.*BIDUBrowser[\s\/]([\d.]+).*$/,"$1")},UC:function(){return t.replace(/^.*UC?Browser\/([\d.]+).*$/,"$1")},Sogou:function(){return t.replace(/^.*SE ([\d.X]+).*$/,"$1").replace(/^.*SogouMobileBrowser\/([\d.]+).*$/,"$1")},LBBROWSER:function(){return{57:"6.5",49:"6.0",46:"5.9",42:"5.3",39:"5.2",34:"5.0",29:"4.5",21:"4.0"}[+navigator.userAgent.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},"2345Explorer":function(){return t.replace(/^.*2345Explorer\/([\d.]+).*$/,"$1")},TheWorld:function(){return t.replace(/^.*TheWorld ([\d.]+).*$/,"$1")},XiaoMi:function(){return t.replace(/^.*MiuiBrowser\/([\d.]+).*$/,"$1")},Quark:function(){return t.replace(/^.*Quark\/([\d.]+).*$/,"$1")},Qiyu:function(){return t.replace(/^.*Qiyu\/([\d.]+).*$/,"$1")},Wechat:function(){return t.replace(/^.*MicroMessenger\/([\d.]+).*$/,"$1")},Taobao:function(){return t.replace(/^.*AliApp\(TB\/([\d.]+).*$/,"$1")},Alipay:function(){return t.replace(/^.*AliApp\(AP\/([\d.]+).*$/,"$1")},Weibo:function(){return t.replace(/^.*weibo__([\d.]+).*$/,"$1")},Douban:function(){return t.replace(/^.*com.douban.frodo\/([\d.]+).*$/,"$1")},Suning:function(){return t.replace(/^.*SNEBUY-APP([\d.]+).*$/,"$1")},iQiYi:function(){return t.replace(/^.*IqiyiVersion\/([\d.]+).*$/,"$1")}};return e.browserVersion="",a[e.browser]&&(e.browserVersion=a[e.browser](),e.browserVersion==t&&(e.browserVersion="")),"Edge"==e.browser&&(e.engine="EdgeHTML"),"Chrome"==e.browser&&parseInt(e.browserVersion)>27&&(e.engine="Blink"),"Opera"==e.browser&&parseInt(e.browserVersion)>12&&(e.engine="Blink"),"Yandex"==e.browser&&(e.engine="Blink"),e.browser+" (version: "+e.browserVersion+"; kernel: "+e.engine+")"}},ci={DeviceInfoObj:function(e){var t,i=function(t){var i;null==(i=e.info)||i.forEach((function(e){e.toLowerCase()===t.toLowerCase()&&(s[t]=r[t])}))};e=e||{domain:""};var r={deviceType:hi.getDeviceType(),OS:hi.getOS(),OSVersion:hi.getOSVersion(),sh:oi.screen.height,sw:oi.screen.width,lang:hi.getLanguage(),netWork:hi.getNetwork(),orientation:hi.getOrientationStatu(),browserInfo:hi.getBrowserInfo(),fingerprint:hi.createFingerprint(e.domain),userAgent:null==(t=li.navigator)?void 0:t.userAgent};if(!e.info||0===e.info.length)return r;var s={};for(var n in r)i(n);return s}},{getDeviceInfo:function(e){return ci.DeviceInfoObj(e)}}),fi=function(){function e(){}return e.add=function(t,i){e.queues.push({url:t,data:i})},e.fire=function(){if(e.queues&&0!==e.queues.length){e.isStop=!1;var t=e.queues[0];t.url&&e.api.report(t.data),e.queues.splice(0,1),e.fire()}else e.isStop=!0},e}();fi.isStop=!0,fi.queues=[];var gi=function(){function e(e){this.url=e}var t=e.prototype;return t.report=function(e){this.checkUrl(this.url)&&this.sendInfo(e)},t.sendInfo=function(e){navigator.sendBeacon?this.sendBeacon(this.url,e):this.sendImage(this.url,e)},t.sendImage=function(e,t){var i=this.changeJSON2Query(t),r=new Image;r.onload=r.onerror=function(){r=null},r.src=e+"?"+i+"&random="+Math.random()},t.sendBeacon=function(e,t){try{navigator.sendBeacon(e,this.formatParamsByURLSearchParams(t))}catch(e){}},t.formatParamsByURLSearchParams=function(e){var t=new URLSearchParams;for(var i in e)"object"==typeof e[i]&&(e[i]=JSON.stringify(e[i])),t.append(i,e[i]);return t},t.changeJSON2Query=function(e){var t="";for(var i in e){""!=t&&(t+="&");var r=e[i];t+=i+"="+encodeURIComponent("object"==typeof r?JSON.stringify(r):r)}return t},t.checkUrl=function(e){return!!e&&/^[hH][tT][tT][pP]([sS]?):\/\//.test(e)},e}();function mi(){return mi=Object.assign||function(e){for(var t=1;t0&&t>0))throw new Error("width value "+e+" or height value "+t+" unqualified!");this.width=e,this.height=t},i.play=function(e){throw new Error("Method play not implemented.")},i.pause=function(){throw new Error("Method pause not implemented.")},i.fullscreen=function(){var e,t,i,r;return null==(t=this.logger)||null==(e=t.log)||e.call(t,"[fullscreen]"),null==(r=this.event)||null==(i=r.emit)||i.call(r,"fullscreen"),Ti.send(1,{name:"fullscreen"}),ni.isEnabled&&!this.isMobile?ni.request(this.$container):(this.logger.warn("Not support fullscreen"),Promise.resolve())},i.exitFullscreen=function(){var e,t,i,r;return null==(t=this.logger)||null==(e=t.log)||e.call(t,"[exitFullscreen]"),null==(r=this.event)||null==(i=r.emit)||i.call(r,"exitFullscreen"),Ti.send(1,{name:"exitFullscreen"}),ni.isEnabled&&!this.isMobile?ni.exit():(this.logger.warn("Not support exitFullscreen"),Promise.resolve())},i.setVolume=function(e){throw new Error("Method setVolume not implemented.")},i.resize=function(e,t){Ti.send(1,{name:"resize"});try{var i,r,s,n;this._checkSize(e,t),this.$container.style.width=e+"px",this.$container.style.height=t+"px",null==(r=this.logger)||null==(i=r.log)||i.call(r,"[resize] width: "+e+", height: "+t),null==(n=this.event)||null==(s=n.emit)||s.call(n,"resize",{data:{width:e,height:t}})}catch(e){}},i.destroy=function(){var e,t=this;this.browser&&(this.browser=null),ni.isEnabled&&this._screenfullChange&&(null==ni||null==(e=ni.off)||e.call(ni,"change",this._screenfullChange),this._screenfullChange=null),this.logger&&(this.logger=null),this.event&&setTimeout((function(){t.event.removeAllListeners(),t.event=null}),100)},i.setLogger=function(e){Ti.send(1,{name:"setLogger"}),this.options=zt(this.options,{loggerOptions:e}),this.logger.setOptions(this.options.loggerOptions)},i.getVersion=function(){throw new Error("Method getVersion not implemented.")},i.getOptions=function(){return Ti.send(1,{name:"getOptions"}),this.options},t.supportType=function(e){return!1},t}(ei),bi=function(){function e(e,t){if(this._$container=e,"string"==typeof e&&(this._$container=document.getElementById(e)),!this._$container)throw new Error("VideoCanvas create fail!");this._options=t,this._createDom()}return e.prototype._createDom=function(){var e,t,i,r,s,n,a=this;this.$video||(this.$video=document.createElement("video"),this._options.autoPlay&&(this.$video.muted=!(null==(e=window)?void 0:e.___HUMAN_TOUCH_SCREEN___),this.$video.autoplay=!0,"object"==((s=null==(t=window)?void 0:t.WeixinJSBridge)&&"undefined"!=typeof Symbol&&s.constructor===Symbol?"symbol":typeof s)&&"function"==typeof(null==(r=window)||null==(i=r.WeixinJSBridge)?void 0:i.invoke)&&document.addEventListener("WeixinJSBridgeReady",(function(){a.$video.play(),a.$video.pause()}),!1),this.$video.addEventListener("loadeddata",(function(){setTimeout((function(){a.$video.play()}),10)}))),this.$video.volume=+this._options.volume||0,this.$video.controls=!!this._options.controls,this.$video.preload=this._options.preload||"auto",this.$video.disablePictureInPicture=!0,this.$video.setAttribute("playsInline","true"),this.$video.setAttribute("webkit-playsinline","true"),this.$video.setAttribute("controlsList",this._options.controlsList||""),(this._options.isMobile&&navigator.userAgent.includes("MQQBrowser")||navigator.userAgent.includes("QQTheme"))&&(this.$video.setAttribute("x5-video-player-type","h5"),this.$video.setAttribute("x5-video-player-fullscreen","false"),this.$video.setAttribute("x5-video-orientation","portraint")),this._options.loop&&this.$video.setAttribute("loop","true"),this.$video.style.cssText+="width: 100%; height: 100%; object-fit: contain; position: absolute; z-index: 1; outline: none;",this._$container.innerHTML="",this._$container.appendChild(this.$video),this._options.disableContextmenu&&(null==(n=this.$video)||n.addEventListener("contextmenu",(function(e){return e.preventDefault(),!1}))))},e}(),Li="ezui-hls",wi={width:600,height:400,volume:0,retry:20,autoPlay:!0,staticPath:"",isLive:!0,loggerOptions:{name:"HLS",level:"INFO",showTime:!0}},Ai={disableContextmenu:!0},Ri=function(){function e(e){void 0===e&&(e={}),this.options=Object.assign({},Ai,e),this.logger=this.options.logger,this.event=this.options.event,this._classVideo=Li+"-video",this._$container=document.getElementById(this.options.id),this._render()}var t=e.prototype;return t._render=function(){var e,t;if("video"===this.options.nodeName)this.$video=new bi(this._$container,this.options).$video;else{var i;if(this.$video=document.createElement(this.options.nodeName),this._$container.innerHTML="",this._$container.appendChild(this.$video),this.options.disableContextmenu)null==(i=this.$video)||i.addEventListener("contextmenu",(function(e){return e.preventDefault(),!1}));this.$video.classList.add(this._classVideo),this.$video.style.cssText+="object-fit: contain; z-index:1;"}null==(t=this.event)||null==(e=t.emit)||e.call(t,"rendered")},t._isVideo=function(){return"VIDEO"===this.$video.nodeName},t.destroy=function(){if(this.$video&&this._$container&&this.$video){try{this._$container.removeChild(this.$video)}catch(e){}this.$video=null}},e}();function ki(e,t,i){return t&&function(e,t){for(var i=0;i=1&&(null==(i=e)||null==(t=i.onLoadCacheFinished)||t.call(i),window.clearInterval(e.cacheInterval),e.cacheInterval=null,e.isCaching===b&&e.play(e.playParams),e.isCaching=S)}),40))}},r._playFunc=function(){var e=!1;if(R()-this.calculateStartTime>=this.frameTime-this.preCostTime){e=!0;var t=!0;if(this.calculateStartTime=R(),this.options.audioNone)this.playFrameYUV(t);else{this.fix_poc_err_skip>0&&(this.fix_poc_err_skip--,t=!1);var i=this.videoPTS-this.audio.getAlignVPTS();if(i>0)return void(this.playParams.seekEvent&&!this.options.audioNone&&this.audio.setVolume(0));if(t){if(!(t=-1*i<=1*this.frameTimeSec)){for(var r=parseInt(i/this.frameTimeSec+""),s=0;s",e,r,i),r>=i&&(t.playFrameYUV(!0),i+=1)}),this.frameTime||5)}else(this.videoPTS>=this.playParams.seekPos&&!this.isNewSeek||0===this.playParams.seekPos||0===this.playParams.seekPos)&&(this.frameTime=1e3/this.options.fps,this.frameTimeSec=this.frameTime/1e3,this.options.audioNone||this.audio.play(),this._volume=this.options.audioNone?0:this.audio.volume,this.loop=window.setInterval((function(){var e=R();t._playFunc(),t.preCostTime=R()-e}),this.frameTime||5));return this.setVolume(this._volume),Promise.resolve()},r.stop=function(){this.destroy(),this.stream=new Uint8Array},r.destroy=function(){return void 0!==this.gl&&null!==this.gl&&(this.gl.destroyContext(),this.gl=null),this.endAudio(),this.cacheLoop&&window.clearInterval(this.cacheLoop),this.cacheLoop=null,this.loop&&window.clearInterval(this.loop),this.loop=null,this.pause(),this.decoderWorker.postMessage(P(B)),this.stream=null,this.frameList=null,this.durationMs=-1,this.videoPTS=0,this.isPlaying=!1,this.$video.remove(),!0},r.nextNalu=function(e){if(void 0===e&&(e=1),this.stream.length<=4)return!1;for(var t=-1,i=0;i=this.stream.length){if(-1===t)return!1;var r=this.stream.subarray(t);return this.stream=new Uint8Array,r}var s="0 0 1"===this.stream.slice(0,3).join(" "),n="0 0 0 1"===this.stream.slice(0,4).join(" ");if(s||n){if(-1===t)t=i;else{if(e<=1){var a=this.stream.subarray(t,i);return this.stream=this.stream.subarray(i),a}e-=1}i+=3}}return!1},r.playFrameYUV=function(e){void 0===e&&(e=!1);var t=this.cacheYuvBuf.shiftYuv();if(!t)return this.noCacheFrame+=1,e&&!this.playParams.seekEvent&&this.loadCache(),!1;this.noCacheFrame=0;var i=t.pts;return this.videoPTS=i,this.drawImage(t.width,t.height,t.imageBufferY,t.imageBufferB,t.imageBufferR),t=null,e&&!this.playParams.seekEvent&&this.isPlaying&&this.loadCache(),!0},r.drawImage=function(e,t,i,r,s){this.$video.width===e&&this.$video.height===t||(this.$video.width=e,this.$video.height=t),this.isCheckDisplay||this.checkDisplaySize(e,t);var n=e*t,a=e/2*(t/2),o=new Uint8Array(n+2*a);o.set(i,0),o.set(r,n),o.set(s,n+a),this.gl.renderFrame(i,r,s,e,t),o=null},r.checkDisplaySize=function(e,t){var i,r=e/(null==(i=this.options)?void 0:i.width)>t/this.options.height,s=+(this.options.width/e).toFixed(2),n=+(this.options.height/t).toFixed(2),a=r?s:n,o=this.options.fixed,l=o?this.options.width:parseInt(e*a+""),h=o?this.options.height:parseInt(t*a+"");return this.$video.style.maxWidth="100%",this.$video.style.maxHeight="100%",this.options.width/this.options.height>=1&&l/h>=1?this.$video.style.width="100%":this.$video.style.height="100%",this.isCheckDisplay=!0,[l,h]},r._onWorkerMessage=function(){var e=this;this.decoderWorker.onmessage=function(t){var i=t.data;if(i.cmd===N){var r=i.data,s=r.ptsSec,n=r.strideY,a=r.height;r.width;var o=r.bufY,l=r.bufU,h=r.bufV,c=new x(s,n,a,o,l,h);e.cacheYuvBuf.appendCacheByCacheYuv(c),c=null}}},r.initVideoAndAudio=function(){this.$video.width=this.options.width,this.$video.height=this.options.height,this.gl=new I(this.$video,{preserveDrawingBuffer:!1}),this.options.audioNone||(this.audio=new _({logger:this.logger,sampleRate:this.options.sampleRate,appendType:this.options.appendHevcType,volume:this.options.volume,isLive:this.options.isLive})),this.isPlayLoadingFinish=1},ki(i,[{key:"volume",get:function(){var e;return(null==(e=this.audio)?void 0:e.volume)||this._volume},set:function(e){this.setVolume(e)}}]),i}(Ri),Ci=[/#EXT-X-PROGRAM-DATE-TIME.+\n/g],Ii={lineDelimiter:/\r?\n/,extensionHeader:"#EXTM3U",tagPrefix:"#EXT",segmentPrefix:"#EXTINF",segmentParse:/^#EXTINF: *([0-9.]+)(, *(.+?)?)?$/,tagParse:/^#EXT-X-([A-Z-]+)(:(.+))?$/,version:"VERSION",allowCache:"ALLOW-CACHE",combined:"COMBINED",endList:"ENDLIST",targetDuration:"TARGETDURATION",mediaSequence:"MEDIA-SEQUENCE",discontinuity:"DISCONTINUITY",streamInf:"STREAM-INF",isComment:function(e){return e&&"#"===e[0]&&!e.startsWith(Ii.tagPrefix)},isBlank:function(e){return""===e},canStrip:function(e){return Ii.isBlank(e)||Ii.isComment(e)},defaultMinDur:99999},Pi=function(){function e(e){this._retry=10,this.logger=null==e?void 0:e.logger,this.initState=!0,this.controller=new AbortController,this._slices=[],this._type=o,this._preURI="",this.duration=-1,this.onTransportStream=null,this.onFinished=null}var t=e.prototype;return t.destroy=function(){this.initState=!1},t.fetchM3u8=function(e){var t=this,i=this;if(this.initState){var r=function(t){return new Promise((function(i,r){var s=new XMLHttpRequest;s.open("GET",t),s.onload=function(){this.status>=200&&this.status<300&&(t!==this.responseURL?(e=this.responseURL,i(this.responseURL)):i(""))},s.onreadystatechange=function(){4===s.readyState&&200===s.status&&i(s.responseText)},s.onerror=function(){r(new Error("Network error."))},s.send()}))};r(e).then((function(s){if(t._retry=10,i._uriParse(e)){var n=i._m3u8Parse(s);if("number"==typeof n&&n>=0)var a=setTimeout((function(){i.fetchM3u8(e),clearTimeout(a)}),200*n)}return r=null,s})).catch((function(s){if(t.logger.error("[M3u8Base] fetch m3u8 url Error ==> ",s),r=null,t._retry>=1)var n=setTimeout((function(){i.fetchM3u8(e),clearTimeout(n)}),500);t._retry--}))}},t._uriParse=function(e){this._preURI="";var t=e.split("://"),i=null,r=null;if(t.length<1)return this.logger.log("HLS URI ERROR : "+e),!1;t.length>1?(i=t[0],r=t[1].split("/"),this._preURI=i+"://"):r=t[0].split("/");for(var s=0;su&&(s=u);var f,g=r[o+=1],m=null;if(g.includes("http"))m=g;else{if("/"===g[0]){var p=this._preURI.split("//"),v=p[p.length-1].split("/");this._preURI=p[0]+"//"+v[0]}m=this._preURI+g}if(!this._slices.includes(m))this._slices.push(m),null==this||null==(f=this.onTransportStream)||f.call(this,m,u)}}}this._slices.length>500&&(this._slices=this._slices.slice(-500));var y={type:this._type,duration:-1};return null==this||null==(t=this.onFinished)||t.call(this,y),s},t._readTag=function(e){var t=Ii.tagParse.exec(e);return null!==t?{key:t[1],value:t[3]}:null},e}(),Oi=function(){function e(e){this.sampleRate=e.sampleRate,this.frameDurMs=Math.floor(1024e3/this.sampleRate),this.frameDurSec=this.frameDurMs/1e3}var t=e.prototype;return t.updateOptions=function(e){this.sampleRate=e.sampleRate,this.frameDurMs=1024e3/this.sampleRate,this.frameDurSec=this.frameDurMs/1e3},t._getPktLen=function(e,t,i){return((3&e)<<11)+(t<<3)+((224&i)>>5)},t.sliceAACFrames=function(e,t){for(var i=[],r=e,s=0;s>4==15){var n=this._getPktLen(t[s+3],t[s+4],t[s+5]);if(n<=0)continue;var a=t.subarray(s,s+n),o=new Uint8Array(n);o.set(a,0),i.push({ptime:r,data:o}),r+=this.frameDurSec,s+=n}else s+=1;return i},e}(),Mi="M3U8",Fi="TS",Ni="FETCH",Ui=function(){function e(){}return e.init=function(t){e.collect=new pi(t)},e.send=function(t,i){var r,s;null==(s=e.collect)||null==(r=s.send)||r.call(s,{action:t,logInfo:i})},e.updateParams=function(t){e.collect.updateExtendsInfo(t)},e}();function Bi(e,t,i){return t&&function(e,t){for(var i=0;i ",e),s=null})).catch((function(r){var s,n,a,o;t.logger.error("[MpegTsDemux] demuxerTsInit ERROR fetch ERROR ==> ",r),null==(n=t.event)||null==(s=n.emit)||s.call(n,Fi,{data:r}),null==(o=t.event)||null==(a=o.emit)||a.call(o,Ni,{data:r,type:Fi}),null==i||i.onDemuxedFailed(r,e),Ui.send(100,{url:e,msg:"fetch error"})}))},t._demuxCore=function(e,t){e.length<=0||this.decoderWorker.postMessage(P($,{buff:e,tsUrl:t}))},t.readMediaInfo=function(){return this.mediaInfo},t.readAudioNone=function(){var e;return null==(e=this.mediaInfo)?void 0:e.audioNone},t.isHEVC=function(){return this.mediaInfo.vCodec===n||this.mediaInfo.vCodec===s},t.destroy=function(){this.controller&&this.controller.abort(),this.controller=null,this.mediaInfo=null,this.aacDec=null},t._onWorkerMessage=function(){var e=this;e.logger.log("[demuxer] register _onWorkerMessage"),e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case H:var r,s;if(e.mediaInfo=i.data,e.mediaInfo)null==(s=e.event)||null==(r=s.emit)||r.call(s,"mediaInfo",e.mediaInfo);break;case G:var n;if(e.mediaInfo.vCodec)null==e.aacDec?e.aacDec=new Oi(e.mediaInfo):e.aacDec.updateOptions(e.mediaInfo),null==e||null==(n=e.onDemuxed)||n.call(e)}}))},Bi(e,[{key:"vCodec",get:function(){return this.mediaInfo.vCodec}}]),e}(),Ki=function(){function e(e,t,i,r){this.pts=e,this.dts=e,this.isKey=t,this.data=i,this.video=r}return e.prototype.setFrame=function(e,t,i,r){this.pts=e,this.isKey=t,this.data=i,this.video=r},e}(),Vi=function(){function e(e){this.logger=null==e?void 0:e.logger,this.event=null==e?void 0:e.event,this.decoderWorker=e.decoderWorker,this.m3u8Base=new Pi(e),this.mpegTsDemux=new Gi(e),this.tsList=[],this._startTime=0,this._aStartTime=0,this.lockWait={state:!1,lockMember:{dur:0}},this._timerFeed=null,this.seekPos=-1,this.vPreFramePTS=0,this.aPreFramePTS=0,this.audioNone=!1,this.isHevcParam=!1,this.vCodec="",this.aCodec=null,this.aChannel=0,this.durationMs=-1,this.fps=-1,this.sampleRate=-1,this.size={width:-1,height:-1},this.mediaInfo=null,this._onWorkerMessage(),this.onReadyOBJ=null,this.onFinished=null,this.onDemuxed=null,this.onSamples=null,this.onCacheProcess=null}var t=e.prototype;return t.getCachePTS=function(){return Math.max(this.vPreFramePTS,this.aPreFramePTS)},t.demux=function(e){var t=this,i=this;this.vPreFramePTS=0,this.aPreFramePTS=0,this.m3u8Base.onTransportStream=function(e,t){i.tsList.push({streamURI:e,streamDur:t}),i.lockWait.state=!1},this.m3u8Base.onFinished=function(e){var t;e.type===a?i.durationMs=1e3*e.duration:i.durationMs=-1,null==i||null==(t=i.onFinished)||t.call(i,i.onReadyOBJ,e)},this.mpegTsDemux.onDemuxedFailed=function(e,r){t.logger.error("[M3u8] onDemuxedFailed: ",e,r),i.lockWait.state=!1},this.mpegTsDemux.onDemuxed=function(){var e;t.logger.log("[M3u8] onDemuxed"),null==i.mediaInfo&&(i.mediaInfo=i.mpegTsDemux.readMediaInfo(),t.logger.log("[M3u8] mediaInfo: ",i.mediaInfo),i.isHevcParam=i.mpegTsDemux.isHEVC(),i.vCodec=i.mpegTsDemux.vCodec,i.aCodec=i.mediaInfo.aCodec,i.aChannel=i.mediaInfo.sampleChannel,i.fps=i.mediaInfo.fps,i.sampleRate=i.mediaInfo.sampleRate,(null===i.aCodec||""===i.aCodec||i.aChannel<=0)&&(i.audioNone=!0),i.mediaInfo.width>0&&i.mediaInfo.height>0&&(t.size.width=t.mediaInfo.width,t.size.height=t.mediaInfo.height)),null==i||null==(e=i.onDemuxed)||e.call(i,i.onReadyOBJ),i.mpegTsDemux&&t.decoderWorker.postMessage(P(K))},this.mpegTsDemux.onReady=function(){i._fetchM3u8AndIntervalTs(e)},this._timerTsWasm=window.setInterval((function(){1===Uc.__HLS_WASM_DecoderState__&&(i._fetchM3u8AndIntervalTs(e),window.clearInterval(i._timerTsWasm),i._timerTsWasm=null)}),500)},t._fetchM3u8AndIntervalTs=function(e){var t=this,i=this;this.logger.log("[M3u8] start fetch m3u8 url"),i.m3u8Base.fetchM3u8(e),i._timerFeed=window.setInterval((function(){if(i.tsList.length>0&&!i.lockWait.state)try{var e=i.tsList.shift();if(null!=e){var r=e.streamURI,s=e.streamDur;i.lockWait.state=!0,i.lockWait.lockMember.dur=+s,i.mpegTsDemux.demuxURL(r)}else t.logger.error("[M3u8] onTsReady need wait ")}catch(e){var n,a,o,l;t.logger.error("[M3u8] onTsReady ERROR:",e),null==(a=t.event)||null==(n=a.emit)||n.call(a,Mi,{data:e}),null==(l=t.event)||null==(o=l.emit)||o.call(l,Ni,{data:e,type:Mi}),i.lockWait.state=!1}}),50)},t.destroy=function(){var e;this.m3u8Base&&(null==(e=this.m3u8Base)||e.destroy(),this.m3u8Base=null);this._timerFeed&&(window.clearInterval(this._timerFeed),this._timerFeed=null),this.mpegTsDemux&&(this.mpegTsDemux.destroy(),this.mpegTsDemux=null)},t.bindReady=function(e){this.onReadyOBJ=e},t.getACodec=function(){return this.aCodec},t.getVCodec=function(){return this.vCodec},t.getDurationMs=function(){return this.durationMs},t.getFPS=function(){return this.fps},t.getSampleRate=function(){return this.sampleRate},t.getSampleChannel=function(){return this.aChannel},t.getSize=function(){return this.size},t._onWorkerMessage=function(){this.logger.log("[M3U8] register _onWorkerMessage");var e=this;e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case K:var s,n=i.data,a=n.type,o=n.pts,l=n.ptime,h=n.keyframe,c=n.data,d=n.layer;if(c=new Uint8Array(c),1===a&&e.mpegTsDemux.mediaInfo.aCodec===r&&(c=e.mpegTsDemux.aacDec.sliceAACFrames(l,c)),0===a){var u=function(e){var t=e.nalu,i=e.vlc.vlc;null==t.vps&&(t.vps=new Uint8Array);var r=new Uint8Array(t.vps.length+t.sps.length+t.pps.length+t.sei.length+i.length);return r.set(t.vps,0),r.set(t.sps,t.vps.length),r.set(t.pps,t.vps.length+t.sps.length),r.set(t.sei,t.vps.length+t.sps.length+t.pps.length),r.set(i,t.vps.length+t.sps.length+t.pps.length+t.sei.length),r}(d),f=o,g=new Ki(f,1===h,u,!0);e.vPreFramePTS=f,null==e||e.onSamples(e.onReadyOBJ,g)}else if(1===a){var m;if("aac"===(null==(m=e.mediaInfo)?void 0:m.aCodec)){for(var p=c,v=0;v`):sr}(t)}))}const lr=ar,hr=/^(\d+)x(\d+)$/,cr=/(.+?)=(".*?"|.*?)(?:,|$)/g;class dr{constructor(e){"string"==typeof e&&(e=dr.parseAttrList(e)),Qi(this,e)}get clientAttrs(){return Object.keys(this).filter((e=>"X-"===e.substring(0,2)))}decimalInteger(e){const t=parseInt(this[e],10);return t>Number.MAX_SAFE_INTEGER?1/0:t}hexadecimalInteger(e){if(this[e]){let t=(this[e]||"0x").slice(2);t=(1&t.length?"0":"")+t;const i=new Uint8Array(t.length/2);for(let e=0;eNumber.MAX_SAFE_INTEGER?1/0:t}decimalFloatingPoint(e){return parseFloat(this[e])}optionalFloat(e,t){const i=this[e];return i?parseFloat(i):t}enumeratedString(e){return this[e]}bool(e){return"YES"===this[e]}decimalResolution(e){const t=hr.exec(this[e]);if(null!==t)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}}static parseAttrList(e){let t;const i={};for(cr.lastIndex=0;null!==(t=cr.exec(e));){let e=t[2];0===e.indexOf('"')&&e.lastIndexOf('"')===e.length-1&&(e=e.slice(1,-1));i[t[1].trim()]=e}return i}}function ur(e){return"SCTE35-OUT"===e||"SCTE35-IN"===e}class fr{constructor(e,t){if(this.attr=void 0,this._startDate=void 0,this._endDate=void 0,this._badValueForSameId=void 0,t){const i=t.attr;for(const t in i)if(Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==i[t]){lr.warn(`DATERANGE tag attribute: "${t}" does not match for tags with ID: "${e.ID}"`),this._badValueForSameId=t;break}e=Qi(new dr({}),i,e)}if(this.attr=e,this._startDate=new Date(e["START-DATE"]),"END-DATE"in this.attr){const e=new Date(this.attr["END-DATE"]);Ji(e.getTime())&&(this._endDate=e)}}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;const e=this.duration;return null!==e?new Date(this._startDate.getTime()+1e3*e):null}get duration(){if("DURATION"in this.attr){const e=this.attr.decimalFloatingPoint("DURATION");if(Ji(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&&Ji(this.startDate.getTime())&&(null===this.duration||this.duration>=0)&&(!this.endOnNext||!!this.class)}}class gr{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}}}var mr="audio",pr="video",vr="audiovideo";class yr{constructor(e){this._byteRange=null,this._url=null,this.baseurl=void 0,this.relurl=void 0,this.elementaryStreams={[mr]:null,[pr]:null,[vr]:null},this.baseurl=e}setByteRange(e,t){const i=e.split("@",2);let r;r=1===i.length?(null==t?void 0:t.byteRangeEndOffset)||0:parseInt(i[1]),this._byteRange=[r,parseInt(i[0])+r]}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=Wi.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url||""}set url(e){this._url=e}}class Tr extends yr{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 gr,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(){const{levelkeys:e}=this;if(!e&&!this._decryptdata)return null;if(!this._decryptdata&&this.levelkeys&&!this.levelkeys.NONE){const e=this.levelkeys.identity;if(e)this._decryptdata=e.getDecryptData(this.sn);else{const e=Object.keys(this.levelkeys);if(1===e.length)return this._decryptdata=this.levelkeys[e[0]].getDecryptData(this.sn)}}return this._decryptdata}get end(){return this.start+this.duration}get endProgramDateTime(){if(null===this.programDateTime)return null;if(!Ji(this.programDateTime))return null;const e=Ji(this.duration)?this.duration:0;return this.programDateTime+1e3*e}get encrypted(){var e;if(null!=(e=this._decryptdata)&&e.encrypted)return!0;if(this.levelkeys){const e=Object.keys(this.levelkeys),t=e.length;if(t>1||1===t&&this.levelkeys[e[0]].encrypted)return!0}return!1}setKeyFormat(e){if(this.levelkeys){const t=this.levelkeys[e];t&&!this._decryptdata&&(this._decryptdata=t.getDecryptData(this.sn))}}abortRequests(){var e,t;null==(e=this.loader)||e.abort(),null==(t=this.keyLoader)||t.abort()}setElementaryStreamInfo(e,t,i,r,s,n=!1){const{elementaryStreams:a}=this,o=a[e];o?(o.startPTS=Math.min(o.startPTS,t),o.endPTS=Math.max(o.endPTS,i),o.startDTS=Math.min(o.startDTS,r),o.endDTS=Math.max(o.endDTS,s)):a[e]={startPTS:t,endPTS:i,startDTS:r,endDTS:s,partial:n}}clearElementaryStreamInfo(){const{elementaryStreams:e}=this;e[mr]=null,e[pr]=null,e[vr]=null}}class Er extends yr{constructor(e,t,i,r,s){super(i),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 gr,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=r;const n=e.enumeratedString("BYTERANGE");n&&this.setByteRange(n,s),s&&(this.fragOffset=s.fragOffset+s.duration)}get start(){return this.fragment.start+this.fragOffset}get end(){return this.start+this.duration}get loaded(){const{elementaryStreams:e}=this;return!!(e.audio||e.video||e.audiovideo)}}class Sr{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)return this.advanced=!0,void(this.updated=!0);const t=this.lastPartSn-e.lastPartSn,i=this.lastPartIndex-e.lastPartIndex;this.updated=this.endSN!==e.endSN||!!i||!!t||!this.live,this.advanced=this.endSN>e.endSN||t>0||0===t&&i>0,this.updated||this.advanced?this.misses=Math.floor(.6*e.misses):this.misses=e.misses+1,this.availabilityDelay=e.availabilityDelay}get hasProgramDateTime(){return!!this.fragments.length&&Ji(this.fragments[this.fragments.length-1].programDateTime)}get levelTargetDuration(){return this.averagetargetduration||this.targetduration||10}get drift(){const e=this.driftEndTime-this.driftStartTime;if(e>0){return 1e3*(this.driftEnd-this.driftStart)/e}return 1}get edge(){return this.partEnd||this.fragmentEnd}get partEnd(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].end:this.fragmentEnd}get fragmentEnd(){var e;return null!=(e=this.fragments)&&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 null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].index:-1}get lastPartSn(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}}function br(e){return Uint8Array.from(atob(e),(e=>e.charCodeAt(0)))}function Lr(e){const t=e.split(":");let i=null;if("data"===t[0]&&2===t.length){const e=t[1].split(";"),r=e[e.length-1].split(",");if(2===r.length){const t="base64"===r[0],s=r[1];t?(e.splice(-1,1),i=br(s)):i=function(e){const t=wr(e).subarray(0,16),i=new Uint8Array(16);return i.set(t,16-t.length),i}(s)}}return i}function wr(e){return Uint8Array.from(unescape(encodeURIComponent(e)),(e=>e.charCodeAt(0)))}const Ar="undefined"!=typeof self?self:void 0;var Rr={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.fps",PLAYREADY:"com.microsoft.playready",WIDEVINE:"com.widevine.alpha"},kr="org.w3.clearkey",_r="com.apple.streamingkeydelivery",Dr="com.microsoft.playready",xr="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed";function Cr(e){switch(e){case _r:return Rr.FAIRPLAY;case Dr:return Rr.PLAYREADY;case xr:return Rr.WIDEVINE;case kr:return Rr.CLEARKEY}}var Ir="edef8ba979d64acea3c827dcd51d21ed";function Pr(e){switch(e){case Rr.FAIRPLAY:return _r;case Rr.PLAYREADY:return Dr;case Rr.WIDEVINE:return xr;case Rr.CLEARKEY:return kr}}function Or(e){const{drmSystems:t,widevineLicenseUrl:i}=e,r=t?[Rr.FAIRPLAY,Rr.WIDEVINE,Rr.PLAYREADY,Rr.CLEARKEY].filter((e=>!!t[e])):[];return!r[Rr.WIDEVINE]&&i&&r.push(Rr.WIDEVINE),r}const Mr=null!=Ar&&null!=(Fr=Ar.navigator)&&Fr.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null;var Fr;function Nr(e,t,i){return Uint8Array.prototype.slice?e.slice(t,i):new Uint8Array(Array.prototype.slice.call(e,t,i))}const Ur=(e,t)=>t+10<=e.length&&73===e[t]&&68===e[t+1]&&51===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128,Br=(e,t)=>t+10<=e.length&&51===e[t]&&68===e[t+1]&&73===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128,$r=(e,t)=>{const i=t;let r=0;for(;Ur(e,t);){r+=10;r+=Gr(e,t+6),Br(e,t+10)&&(r+=10),t+=r}if(r>0)return e.subarray(i,i+r)},Gr=(e,t)=>{let i=0;return i=(127&e[t])<<21,i|=(127&e[t+1])<<14,i|=(127&e[t+2])<<7,i|=127&e[t+3],i},Kr=(e,t)=>Ur(e,t)&&Gr(e,t+6)+10<=e.length-t,Vr=e=>{const t=Wr(e);for(let e=0;ee&&"PRIV"===e.key&&"com.apple.streaming.transportStreamTimestamp"===e.info,jr=e=>{const t=String.fromCharCode(e[0],e[1],e[2],e[3]),i=Gr(e,4);return{type:t,size:i,data:e.subarray(10,10+i)}},Wr=e=>{let t=0;const i=[];for(;Ur(e,t);){const r=Gr(e,t+6);t+=10;const s=t+r;for(;t+8"PRIV"===e.type?qr(e):"W"===e.type[0]?Xr(e):zr(e),qr=e=>{if(e.size<2)return;const t=Jr(e.data,!0),i=new Uint8Array(e.data.subarray(t.length+1));return{key:e.type,info:t,data:i.buffer}},zr=e=>{if(e.size<2)return;if("TXXX"===e.type){let t=1;const i=Jr(e.data.subarray(t),!0);t+=i.length+1;const r=Jr(e.data.subarray(t));return{key:e.type,info:i,data:r}}const t=Jr(e.data.subarray(1));return{key:e.type,data:t}},Xr=e=>{if("WXXX"===e.type){if(e.size<2)return;let t=1;const i=Jr(e.data.subarray(t),!0);t+=i.length+1;const r=Jr(e.data.subarray(t));return{key:e.type,info:i,data:r}}const t=Jr(e.data);return{key:e.type,data:t}},Qr=e=>{if(8===e.data.byteLength){const t=new Uint8Array(e.data),i=1&t[3];let r=(t[4]<<23)+(t[5]<<15)+(t[6]<<7)+t[7];return r/=45,i&&(r+=47721858.84),Math.round(r)}},Jr=(e,t=!1)=>{const i=es();if(i){const r=i.decode(e);if(t){const e=r.indexOf("\0");return-1!==e?r.substring(0,e):r}return r.replace(/\0/g,"")}const r=e.length;let s,n,a,o="",l=0;for(;l>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:o+=String.fromCharCode(s);break;case 12:case 13:n=e[l++],o+=String.fromCharCode((31&s)<<6|63&n);break;case 14:n=e[l++],a=e[l++],o+=String.fromCharCode((15&s)<<12|(63&n)<<6|63&a)}}return o};let Zr;function es(){if(!navigator.userAgent.includes("PlayStation 4"))return Zr||void 0===self.TextDecoder||(Zr=new self.TextDecoder("utf-8")),Zr}const ts=function(e){let t="";for(let i=0;i>24,e[t+1]=i>>16&255,e[t+2]=i>>8&255,e[t+3]=255&i}function ds(e,t){const i=[];if(!t.length)return i;const r=e.byteLength;for(let s=0;s1?s+n:r;if(ns(e.subarray(s+4,s+8))===t[0])if(1===t.length)i.push(e.subarray(s+8,a));else{const r=ds(e.subarray(s+8,a),t.slice(1));r.length&&rs.apply(i,r)}s=a}return i}function us(e){const t=[],i=e[0];let r=8;const s=os(e,r);r+=4;let n=0,a=0;0===i?(n=os(e,r),a=os(e,r+4),r+=8):(n=ls(e,r),a=ls(e,r+8),r+=16),r+=2;let o=e.length+a;const l=as(e,r);r+=2;for(let i=0;i>>31)return lr.warn("SIDX has hierarchical references (not supported)"),null;const l=os(e,i);i+=4,t.push({referenceSize:a,subsegmentDuration:l,info:{duration:l/s,start:o,end:o+a-1}}),o+=a,i+=4,r=i}return{earliestPresentationTime:n,timescale:s,version:i,referencesCount:l,references:t}}function fs(e){const t=[],i=ds(e,["moov","trak"]);for(let e=0;e{const i=os(e,4),r=t[i];r&&(r.default={duration:os(e,12),flags:os(e,20)})})),t}function gs(e){const t=e.subarray(8),i=t.subarray(86),r=ns(t.subarray(4,8));let s=r;const n="enca"===r||"encv"===r;if(n){const e=ds(t,[r])[0];ds(e.subarray("enca"===r?28:78),["sinf"]).forEach((e=>{const t=ds(e,["schm"])[0];if(t){const i=ns(t.subarray(4,8));if("cbcs"===i||"cenc"===i){const t=ds(e,["frma"])[0];t&&(s=ns(t))}}}))}switch(s){case"avc1":case"avc2":case"avc3":case"avc4":{const e=ds(i,["avcC"])[0];s+="."+ps(e[1])+ps(e[2])+ps(e[3]);break}case"mp4a":{const e=ds(t,[r])[0],i=ds(e.subarray(28),["esds"])[0];if(i&&i.length>12){let e=4;if(3!==i[e++])break;e=ms(i,e),e+=2;const t=i[e++];if(128&t&&(e+=2),64&t&&(e+=i[e++]),4!==i[e++])break;e=ms(i,e);const r=i[e++];if(64!==r)break;if(s+="."+ps(r),e+=12,5!==i[e++])break;e=ms(i,e);const n=i[e++];let a=(248&n)>>3;31===a&&(a+=1+((7&n)<<3)+((224&i[e])>>5)),s+="."+a}break}case"hvc1":case"hev1":{const e=ds(i,["hvcC"])[0],t=e[1],r=["","A","B","C"][t>>6],n=31&t,a=os(e,2),o=(32&t)>>5?"H":"L",l=e[12],h=e.subarray(6,12);s+="."+r+n,s+="."+a.toString(16).toUpperCase(),s+="."+o+l;let c="";for(let e=h.length;e--;){const t=h[e];if(t||c){c="."+t.toString(16).toUpperCase()+c}}s+=c;break}case"dvh1":case"dvhe":{const e=ds(i,["dvcC"])[0],t=e[2]>>1&127,r=e[2]<<5&32|e[3]>>3&31;s+="."+vs(t)+"."+vs(r);break}case"vp09":{const e=ds(i,["vpcC"])[0],t=e[4],r=e[5],n=e[6]>>4&15;s+="."+vs(t)+"."+vs(r)+"."+vs(n);break}case"av01":{const e=ds(i,["av1C"])[0],t=e[1]>>>5,r=31&e[1],n=e[2]>>>7?"H":"M",a=(64&e[2])>>6,o=(32&e[2])>>5,l=2===t&&a?o?12:10:a?10:8,h=(16&e[2])>>4,c=(8&e[2])>>3,d=(4&e[2])>>2,u=3&e[2],f=1,g=1,m=1,p=0;s+="."+t+"."+vs(r)+n+"."+vs(l)+"."+h+"."+c+d+u+"."+vs(f)+"."+vs(g)+"."+vs(m)+"."+p;break}}return{codec:s,encrypted:n}}function ms(e,t){const i=t+5;for(;128&e[t++]&&t{const l=o.byteOffset-8;ds(o,["traf"]).map((o=>{const h=ds(o,["tfdt"]).map((e=>{const t=e[0];let i=os(e,4);return 1===t&&(i*=Math.pow(2,32),i+=os(e,8)),i/s}))[0];return void 0!==h&&(e=h),ds(o,["tfhd"]).map((h=>{const c=os(h,4),d=16777215&os(h,0);let u=0;const f=!!(16&d);let g=0;const m=!!(32&d);let p=8;c===n&&(!!(1&d)&&(p+=8),!!(2&d)&&(p+=4),!!(8&d)&&(u=os(h,p),p+=4),f&&(g=os(h,p),p+=4),m&&(p+=4),"video"===t.type&&(a=function(e){if(!e)return!1;const t=e.indexOf("."),i=t<0?e:e.substring(0,t);return"hvc1"===i||"hev1"===i||"dvh1"===i||"dvhe"===i}(t.codec)),ds(o,["trun"]).map((n=>{const o=n[0],h=16777215&os(n,0),c=!!(1&h);let d=0;const f=!!(4&h),m=!!(256&h);let p=0;const v=!!(512&h);let y=0;const T=!!(1024&h),E=!!(2048&h);let S=0;const b=os(n,4);let L=8;c&&(d=os(n,L),L+=4),f&&(L+=4);let w=d+l;for(let l=0;l>1&63;return 39===e||40===e}return 6===(31&t)}function Ls(e,t,i,r){const s=ws(e);let n=0;n+=t;let a=0,o=0,l=0;for(;n=s.length)break;l=s[n++],a+=l}while(255===l);o=0;do{if(n>=s.length)break;l=s[n++],o+=l}while(255===l);const e=s.length-n;let t=n;if(oe){lr.error(`Malformed SEI payload. ${o} is too small, only ${e} bytes left to parse.`);break}if(4===a){if(181===s[t++]){const e=as(s,t);if(t+=2,49===e){const e=os(s,t);if(t+=4,1195456820===e){const e=s[t++];if(3===e){const n=s[t++],o=64&n,l=o?2+3*(31&n):0,h=new Uint8Array(l);if(o){h[0]=n;for(let e=1;e16){const e=[];for(let i=0;i<16;i++){const r=s[t++].toString(16);e.push(1==r.length?"0"+r:r),3!==i&&5!==i&&7!==i&&9!==i||e.push("-")}const n=o-16,l=new Uint8Array(n);for(let e=0;e0&&new DataView(a.buffer).setUint32(0,i.byteLength,!1),function(e,...t){const i=t.length;let r=8,s=i;for(;s--;)r+=t[s].byteLength;const n=new Uint8Array(r);for(n[0]=r>>24&255,n[1]=r>>16&255,n[2]=r>>8&255,n[3]=255&r,n.set(e,4),s=0,r=8;s>8*(15-i)&255;return t}(e);return new ks(this.method,this.uri,"identity",this.keyFormatVersions,t)}const t=Lr(this.uri);if(t)switch(this.keyFormat){case xr:this.pssh=t,t.length>=22&&(this.keyId=t.subarray(t.length-22,t.length-6));break;case Dr:{const e=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);this.pssh=As(e,0,t);const i=new Uint16Array(t.buffer,t.byteOffset,t.byteLength/2),r=String.fromCharCode.apply(null,Array.from(i)),s=r.substring(r.indexOf("<"),r.length),n=(new DOMParser).parseFromString(s,"text/xml").getElementsByTagName("KID")[0];if(n){const e=n.childNodes[0]?n.childNodes[0].nodeValue:n.getAttribute("VALUE");if(e){const t=br(e).subarray(0,16);!function(e){const t=function(e,t,i){const r=e[t];e[t]=e[i],e[i]=r};t(e,0,3),t(e,1,2),t(e,4,5),t(e,6,7)}(t),this.keyId=t}}break}default:{let e=t.subarray(0,16);if(16!==e.length){const t=new Uint8Array(16);t.set(e,16-e.length),e=t}this.keyId=e;break}}if(!this.keyId||16!==this.keyId.byteLength){let e=Rs[this.uri];if(!e){const t=Object.keys(Rs).length%Number.MAX_SAFE_INTEGER;e=new Uint8Array(16);new DataView(e.buffer,12,4).setUint32(0,t),Rs[this.uri]=e}this.keyId=e}return this}}const _s=/\{\$([a-zA-Z0-9-_]+)\}/g;function Ds(e){return _s.test(e)}function xs(e,t,i){if(null!==e.variableList||e.hasVariableRefs)for(let r=i.length;r--;){const s=i[r],n=t[s];n&&(t[s]=Cs(e,n))}}function Cs(e,t){if(null!==e.variableList||e.hasVariableRefs){const i=e.variableList;return t.replace(_s,(t=>{const r=t.substring(2,t.length-1),s=null==i?void 0:i[r];return void 0===s?(e.playlistParsingError||(e.playlistParsingError=new Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: "${r}"`)),t):s}))}return t}function Is(e,t,i){let r,s,n=e.variableList;if(n||(e.variableList=n={}),"QUERYPARAM"in t){r=t.QUERYPARAM;try{const e=new self.URL(i).searchParams;if(!e.has(r))throw new Error(`"${r}" does not match any query parameter in URI: "${i}"`);s=e.get(r)}catch(t){e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE QUERYPARAM: ${t.message}`))}}else r=t.NAME,s=t.VALUE;r in n?e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE duplicate Variable Name declarations: "${r}"`)):n[r]=s||""}function Ps(e,t,i){const r=t.IMPORT;if(i&&r in i){let t=e.variableList;t||(e.variableList=t={}),t[r]=i[r]}else e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "${r}"`))}function Os(e=!0){if("undefined"==typeof self)return;return(e||!self.MediaSource)&&self.ManagedMediaSource||self.MediaSource||self.WebKitMediaSource}const 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,rv60:1,s263:1,svc1:1,svc2:1,"vc-1":1,vp08:1,vp09:.9},text:{stpp:1,wvtt:1}};function Fs(e,t,i=!0){return!e.split(",").some((e=>!Ns(e,t,i)))}function Ns(e,t,i=!0){var r;const s=Os(i);return null!=(r=null==s?void 0:s.isTypeSupported(Us(e,t)))&&r}function Us(e,t){return`${t}/mp4;codecs="${e}"`}function Bs(e){if(e){const t=e.substring(0,4);return Ms.video[t]}return 2}function $s(e){return e.split(",").reduce(((e,t)=>{const i=Ms.video[t];return i?(2*i+e)/(e?3:2):(Ms.audio[t]+e)/(e?2:1)}),0)}const Gs={};const Ks=/flac|opus/i;function Vs(e,t=!0){return e.replace(Ks,(e=>function(e,t=!0){if(Gs[e])return Gs[e];const i={flac:["flac","fLaC","FLAC"],opus:["opus","Opus"]}[e];for(let r=0;r0&&r.length({id:e.attrs.AUDIO,audioCodec:e.audioCodec}))),SUBTITLES:n.map((e=>({id:e.attrs.SUBTITLES,textCodec:e.textCodec}))),"CLOSED-CAPTIONS":[]};let o=0;for(Ws.lastIndex=0;null!==(r=Ws.exec(e));){const e=new dr(r[1]),n=e.TYPE;if(n){const r=a[n],l=s[n]||[];s[n]=l,xs(i,e,["URI","GROUP-ID","LANGUAGE","ASSOC-LANGUAGE","STABLE-RENDITION-ID","NAME","INSTREAM-ID","CHARACTERISTICS","CHANNELS"]);const h=e.LANGUAGE,c=e["ASSOC-LANGUAGE"],d=e.CHANNELS,u=e.CHARACTERISTICS,f=e["INSTREAM-ID"],g={attrs:e,bitrate:0,id:o++,groupId:e["GROUP-ID"]||"",name:e.NAME||h||"",type:n,default:e.bool("DEFAULT"),autoselect:e.bool("AUTOSELECT"),forced:e.bool("FORCED"),lang:h,url:e.URI?Xs.resolve(e.URI,t):""};if(c&&(g.assocLang=c),d&&(g.channels=d),u&&(g.characteristics=u),f&&(g.instreamId=f),null!=r&&r.length){const e=Xs.findGroup(r,g.groupId)||r[0];en(g,e,"audioCodec"),en(g,e,"textCodec")}l.push(g)}}return s}static parseLevelPlaylist(e,t,i,r,s,n){const a=new Sr(t),o=a.fragments;let l,h,c,d=null,u=0,f=0,g=0,m=0,p=null,v=new Tr(r,t),y=-1,T=!1,E=null;for(qs.lastIndex=0,a.m3u8=e,a.hasVariableRefs=Ds(e);null!==(l=qs.exec(e));){T&&(T=!1,v=new Tr(r,t),v.start=g,v.sn=u,v.cc=m,v.level=i,d&&(v.initSegment=d,v.rawProgramDateTime=d.rawProgramDateTime,d.rawProgramDateTime=null,E&&(v.setByteRange(E),E=null)));const e=l[1];if(e){v.duration=parseFloat(e);const t=(" "+l[2]).slice(1);v.title=t||null,v.tagList.push(t?["INF",e,t]:["INF",e])}else if(l[3]){if(Ji(v.duration)){v.start=g,c&&sn(v,c,a),v.sn=u,v.level=i,v.cc=m,o.push(v);const e=(" "+l[3]).slice(1);v.relurl=Cs(a,e),tn(v,p),p=v,g+=v.duration,u++,f=0,T=!0}}else if(l[4]){const e=(" "+l[4]).slice(1);p?v.setByteRange(e,p):v.setByteRange(e)}else if(l[5])v.rawProgramDateTime=(" "+l[5]).slice(1),v.tagList.push(["PROGRAM-DATE-TIME",v.rawProgramDateTime]),-1===y&&(y=o.length);else{if(l=l[0].match(zs),!l){lr.warn("No matches on slow regex match for level playlist!");continue}for(h=1;h0&&e.bool("CAN-SKIP-DATERANGES"),a.partHoldBack=e.optionalFloat("PART-HOLD-BACK",0),a.holdBack=e.optionalFloat("HOLD-BACK",0);break}case"PART-INF":{const e=new dr(s);a.partTarget=e.decimalFloatingPoint("PART-TARGET");break}case"PART":{let e=a.partList;e||(e=a.partList=[]);const i=f>0?e[e.length-1]:void 0,r=f++,n=new dr(s);xs(a,n,["BYTERANGE","URI"]);const o=new Er(n,v,t,r,i);e.push(o),v.duration+=o.duration;break}case"PRELOAD-HINT":{const e=new dr(s);xs(a,e,["URI"]),a.preloadHint=e;break}case"RENDITION-REPORT":{const e=new dr(s);xs(a,e,["URI"]),a.renditionReports=a.renditionReports||[],a.renditionReports.push(e);break}default:lr.warn(`line parsed but not handled: ${l}`)}}}p&&!p.relurl?(o.pop(),g-=p.duration,a.partList&&(a.fragmentHint=p)):a.partList&&(tn(v,p),v.cc=m,a.fragmentHint=v,c&&sn(v,c,a));const S=o.length,b=o[0],L=o[S-1];if(g+=a.skippedSegments*a.targetduration,g>0&&S&&L){a.averagetargetduration=g/S;const e=L.sn;a.endSN="initSegment"!==e?e:0,a.live||(L.endList=!0),b&&(a.startCC=b.cc)}else a.endSN=0,a.startCC=0;return a.fragmentHint&&(g+=a.fragmentHint.duration),a.totalduration=g,a.endCC=m,y>0&&function(e,t){let i=e[t];for(let r=t;r--;){const t=e[r];if(!t)return;t.programDateTime=i.programDateTime-1e3*t.duration,i=t}}(o,y),a}}function Qs(e,t,i){var r,s;const n=new dr(e);xs(i,n,["KEYFORMAT","KEYFORMATVERSIONS","URI","IV","URI"]);const a=null!=(r=n.METHOD)?r:"",o=n.URI,l=n.hexadecimalInteger("IV"),h=n.KEYFORMATVERSIONS,c=null!=(s=n.KEYFORMAT)?s:"identity";o&&n.IV&&!l&&lr.error(`Invalid IV: ${n.IV}`);const d=o?Xs.resolve(o,t):"",u=(h||"1").split("/").map(Number).filter(Number.isFinite);return new ks(a,d,c,u,l)}function Js(e){const t=new dr(e).decimalFloatingPoint("TIME-OFFSET");return Ji(t)?t:null}function Zs(e,t){let i=(e||"").split(/[ ,]+/).filter((e=>e));["video","audio","text"].forEach((e=>{const r=i.filter((t=>function(e,t){const i=Ms[t];return!!i&&!!i[e.slice(0,4)]}(t,e)));r.length&&(t[`${e}Codec`]=r.join(","),i=i.filter((e=>-1===r.indexOf(e))))})),t.unknownCodecs=i}function en(e,t,i){const r=t[i];r&&(e[i]=r)}function tn(e,t){e.rawProgramDateTime?e.programDateTime=Date.parse(e.rawProgramDateTime):null!=t&&t.programDateTime&&(e.programDateTime=t.endProgramDateTime),Ji(e.programDateTime)||(e.programDateTime=null,e.rawProgramDateTime=null)}function rn(e,t,i,r){e.relurl=t.URI,t.BYTERANGE&&e.setByteRange(t.BYTERANGE),e.level=i,e.sn="initSegment",r&&(e.levelkeys=r),e.initSegment=null}function sn(e,t,i){e.levelkeys=t;const{encryptedFragments:r}=i;r.length&&r[r.length-1].levelkeys===t||!Object.keys(t).some((e=>t[e].isCommonEncryption))||r.push(e)}var nn="manifest",an="level",on="audioTrack",ln="subtitleTrack",hn="main",cn="audio",dn="subtitle";function un(e){const{type:t}=e;switch(t){case on:return cn;case ln:return dn;default:return hn}}function fn(e,t){let i=e.url;return void 0!==i&&0!==i.indexOf("data:")||(i=t.url),i}class gn{constructor(e){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.hls=e,this.registerListeners()}startLoad(e){}stopLoad(){this.destroyInternalLoaders()}registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.LEVEL_LOADING,this.onLevelLoading,this),e.on(tr.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.on(tr.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.LEVEL_LOADING,this.onLevelLoading,this),e.off(tr.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.off(tr.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}createInternalLoader(e){const t=this.hls.config,i=t.pLoader,r=t.loader,s=new(i||r)(t);return this.loaders[e.type]=s,s}getInternalLoader(e){return this.loaders[e.type]}resetInternalLoader(e){this.loaders[e]&&delete this.loaders[e]}destroyInternalLoaders(){for(const e in this.loaders){const t=this.loaders[e];t&&t.destroy(),this.resetInternalLoader(e)}}destroy(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()}onManifestLoading(e,t){const{url:i}=t;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:nn,url:i,deliveryDirectives:null})}onLevelLoading(e,t){const{id:i,level:r,pathwayId:s,url:n,deliveryDirectives:a}=t;this.load({id:i,level:r,pathwayId:s,responseType:"text",type:an,url:n,deliveryDirectives:a})}onAudioTrackLoading(e,t){const{id:i,groupId:r,url:s,deliveryDirectives:n}=t;this.load({id:i,groupId:r,level:null,responseType:"text",type:on,url:s,deliveryDirectives:n})}onSubtitleTrackLoading(e,t){const{id:i,groupId:r,url:s,deliveryDirectives:n}=t;this.load({id:i,groupId:r,level:null,responseType:"text",type:ln,url:s,deliveryDirectives:n})}load(e){var t;const i=this.hls.config;let r,s=this.getInternalLoader(e);if(s){const t=s.context;if(t&&t.url===e.url&&t.level===e.level)return void lr.trace("[playlist-loader]: playlist request ongoing");lr.log(`[playlist-loader]: aborting previous loader for type: ${e.type}`),s.abort()}if(r=e.type===nn?i.manifestLoadPolicy.default:Qi({},i.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),s=this.createInternalLoader(e),Ji(null==(t=e.deliveryDirectives)?void 0:t.part)){let t;if(e.type===an&&null!==e.level?t=this.hls.levels[e.level].details:e.type===on&&null!==e.id?t=this.hls.audioTracks[e.id].details:e.type===ln&&null!==e.id&&(t=this.hls.subtitleTracks[e.id].details),t){const e=t.partTarget,i=t.targetduration;if(e&&i){const t=1e3*Math.max(3*e,.8*i);r=Qi({},r,{maxTimeToFirstByteMs:Math.min(t,r.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(t,r.maxTimeToFirstByteMs)})}}}const n=r.errorRetry||r.timeoutRetry||{},a={loadPolicy:r,timeout:r.maxLoadTimeMs,maxRetry:n.maxNumRetry||0,retryDelay:n.retryDelayMs||0,maxRetryDelay:n.maxRetryDelayMs||0},o={onSuccess:(e,t,i,r)=>{const s=this.getInternalLoader(i);this.resetInternalLoader(i.type);const n=e.data;0===n.indexOf("#EXTM3U")?(t.parsing.start=performance.now(),Xs.isMediaPlaylist(n)?this.handleTrackOrLevelPlaylist(e,t,i,r||null,s):this.handleMasterPlaylist(e,t,i,r)):this.handleManifestParsingError(e,i,new Error("no EXTM3U delimiter"),r||null,t)},onError:(e,t,i,r)=>{this.handleNetworkError(t,i,!1,e,r)},onTimeout:(e,t,i)=>{this.handleNetworkError(t,i,!0,void 0,e)}};s.load(e,a,o)}handleMasterPlaylist(e,t,i,r){const s=this.hls,n=e.data,a=fn(e,i),o=Xs.parseMasterPlaylist(n,a);if(o.playlistParsingError)return void this.handleManifestParsingError(e,i,o.playlistParsingError,r,t);const{contentSteering:l,levels:h,sessionData:c,sessionKeys:d,startTimeOffset:u,variableList:f}=o;this.variableList=f;const{AUDIO:g=[],SUBTITLES:m,"CLOSED-CAPTIONS":p}=Xs.parseMasterPlaylistMedia(n,a,o);if(g.length){g.some((e=>!e.url))||!h[0].audioCodec||h[0].attrs.AUDIO||(lr.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 dr({}),bitrate:0,url:""}))}s.trigger(tr.MANIFEST_LOADED,{levels:h,audioTracks:g,subtitles:m,captions:p,contentSteering:l,url:a,stats:t,networkDetails:r,sessionData:c,sessionKeys:d,startTimeOffset:u,variableList:f})}handleTrackOrLevelPlaylist(e,t,i,r,s){const n=this.hls,{id:a,level:o,type:l}=i,h=fn(e,i),c=Ji(o)?o:Ji(a)?a:0,d=un(i),u=Xs.parseLevelPlaylist(e.data,h,c,d,0,this.variableList);if(l===nn){const e={attrs:new dr({}),bitrate:0,details:u,name:"",url:h};n.trigger(tr.MANIFEST_LOADED,{levels:[e],audioTracks:[],url:h,stats:t,networkDetails:r,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}t.parsing.end=performance.now(),i.levelDetails=u,this.handlePlaylistLoaded(u,e,t,i,r,s)}handleManifestParsingError(e,t,i,r,s){this.hls.trigger(tr.ERROR,{type:ir.NETWORK_ERROR,details:rr.MANIFEST_PARSING_ERROR,fatal:t.type===nn,url:e.url,err:i,error:i,reason:i.message,response:e,context:t,networkDetails:r,stats:s})}handleNetworkError(e,t,i=!1,r,s){let n=`A network ${i?"timeout":"error"+(r?" (status "+r.code+")":"")} occurred while loading ${e.type}`;e.type===an?n+=`: ${e.level} id: ${e.id}`:e.type!==on&&e.type!==ln||(n+=` id: ${e.id} group-id: "${e.groupId}"`);const a=new Error(n);lr.warn(`[playlist-loader]: ${n}`);let o=rr.UNKNOWN,l=!1;const h=this.getInternalLoader(e);switch(e.type){case nn:o=i?rr.MANIFEST_LOAD_TIMEOUT:rr.MANIFEST_LOAD_ERROR,l=!0;break;case an:o=i?rr.LEVEL_LOAD_TIMEOUT:rr.LEVEL_LOAD_ERROR,l=!1;break;case on:o=i?rr.AUDIO_TRACK_LOAD_TIMEOUT:rr.AUDIO_TRACK_LOAD_ERROR,l=!1;break;case ln:o=i?rr.SUBTITLE_TRACK_LOAD_TIMEOUT:rr.SUBTITLE_LOAD_ERROR,l=!1}h&&this.resetInternalLoader(e.type);const c={type:ir.NETWORK_ERROR,details:o,fatal:l,url:e.url,loader:h,context:e,error:a,networkDetails:t,stats:s};if(r){const i=(null==t?void 0:t.url)||e.url;c.response=qi({url:i,data:void 0},r)}this.hls.trigger(tr.ERROR,c)}handlePlaylistLoaded(e,t,i,r,s,n){const a=this.hls,{type:o,level:l,id:h,groupId:c,deliveryDirectives:d}=r,u=fn(t,r),f=un(r),g="number"==typeof r.level&&f===hn?l:void 0;if(!e.fragments.length){const e=new Error("No Segments found in Playlist");return void a.trigger(tr.ERROR,{type:ir.NETWORK_ERROR,details:rr.LEVEL_EMPTY_ERROR,fatal:!1,url:u,error:e,reason:e.message,response:t,context:r,level:g,parent:f,networkDetails:s,stats:i})}e.targetduration||(e.playlistParsingError=new Error("Missing Target Duration"));const m=e.playlistParsingError;if(m)a.trigger(tr.ERROR,{type:ir.NETWORK_ERROR,details:rr.LEVEL_PARSING_ERROR,fatal:!1,url:u,error:m,reason:m.message,response:t,context:r,level:g,parent:f,networkDetails:s,stats:i});else switch(e.live&&n&&(n.getCacheAge&&(e.ageHeader=n.getCacheAge()||0),n.getCacheAge&&!isNaN(e.ageHeader)||(e.ageHeader=0)),o){case nn:case an:a.trigger(tr.LEVEL_LOADED,{details:e,level:g||0,id:h||0,stats:i,networkDetails:s,deliveryDirectives:d});break;case on:a.trigger(tr.AUDIO_TRACK_LOADED,{details:e,id:h||0,groupId:c||"",stats:i,networkDetails:s,deliveryDirectives:d});break;case ln:a.trigger(tr.SUBTITLE_TRACK_LOADED,{details:e,id:h||0,groupId:c||"",stats:i,networkDetails:s,deliveryDirectives:d})}}}function mn(e,t){let i;try{i=new Event("addtrack")}catch(e){i=document.createEvent("Event"),i.initEvent("addtrack",!1,!1)}i.track=e,t.dispatchEvent(i)}function pn(e,t){const i=e.mode;if("disabled"===i&&(e.mode="hidden"),e.cues&&!e.cues.getCueById(t.id))try{if(e.addCue(t),!e.cues.getCueById(t.id))throw new Error(`addCue is failed for: ${t}`)}catch(i){lr.debug(`[texttrack-utils]: ${i}`);try{const i=new self.TextTrackCue(t.startTime,t.endTime,t.text);i.id=t.id,e.addCue(i)}catch(e){lr.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${e}`)}}"disabled"===i&&(e.mode=i)}function vn(e){const t=e.mode;if("disabled"===t&&(e.mode="hidden"),e.cues)for(let t=e.cues.length;t--;)e.removeCue(e.cues[t]);"disabled"===t&&(e.mode=t)}function yn(e,t,i,r){const s=e.mode;if("disabled"===s&&(e.mode="hidden"),e.cues&&e.cues.length>0){const s=function(e,t,i){const r=[],s=function(e,t){if(te[i].endTime)return-1;let r=0,s=i;for(;r<=s;){const n=Math.floor((s+r)/2);if(te[n].startTime&&r-1)for(let n=s,a=e.length;n=t&&s.endTime<=i)r.push(s);else if(s.startTime>i)return r}return r}(e.cues,t,i);for(let t=0;t{const e=Ln();try{e&&new e(0,Number.POSITIVE_INFINITY,"")}catch(e){return Number.MAX_VALUE}return Number.POSITIVE_INFINITY})();function Rn(e,t){return e.getTime()/1e3-t}class kn{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(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(tr.LEVEL_UPDATED,this.onLevelUpdated,this)}_unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.off(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(tr.LEVEL_UPDATED,this.onLevelUpdated,this)}onMediaAttached(e,t){this.media=t.media}onMediaDetaching(){this.id3Track&&(vn(this.id3Track),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={})}onManifestLoading(){this.dateRangeCuesAppended={}}createTrack(e){const t=this.getID3Track(e.textTracks);return t.mode="hidden",t}getID3Track(e){if(this.media){for(let t=0;tAn&&(r=An);r-i<=0&&(r=i+.25);for(let e=0;ee.type===En&&o:"video"===r?e=>e.type===bn&&a:e=>e.type===En&&o||e.type===bn&&a,yn(s,t,i,e)}}onLevelUpdated(e,{details:t}){if(!this.media||!t.hasProgramDateTime||!this.hls.config.enableDateRangeMetadataCues)return;const{dateRangeCuesAppended:i,id3Track:r}=this,{dateRanges:s}=t,n=Object.keys(s);if(r){const e=Object.keys(i).filter((e=>!n.includes(e)));for(let t=e.length;t--;){const s=e[t];Object.keys(i[s].cues).forEach((e=>{r.removeCue(i[s].cues[e])})),delete i[s]}}const a=t.fragments[t.fragments.length-1];if(0===n.length||!Ji(null==a?void 0:a.programDateTime))return;this.id3Track||(this.id3Track=this.createTrack(this.media));const o=a.programDateTime/1e3-a.start,l=Ln();for(let e=0;e{if(t!==r.id){const i=s[t];if(i.class===r.class&&i.startDate>r.startDate&&(!e||r.startDatethis.timeupdate(),this.hls=e,this.config=e.config,this.registerListeners()}get latency(){return this._latency||0}get maxLatency(){const{config:e,levelDetails:t}=this;return void 0!==e.liveMaxLatencyDuration?e.liveMaxLatencyDuration:t?e.liveMaxLatencyDurationCount*t.targetduration:0}get targetLatency(){const{levelDetails:e}=this;if(null===e)return null;const{holdBack:t,partHoldBack:i,targetduration:r}=e,{liveSyncDuration:s,liveSyncDurationCount:n,lowLatencyMode:a}=this.config,o=this.hls.userConfig;let l=a&&i||t;(o.liveSyncDuration||o.liveSyncDurationCount||0===l)&&(l=void 0!==s?s:n*r);const h=r;return l+Math.min(1*this.stallCount,h)}get liveSyncPosition(){const e=this.estimateLiveEdge(),t=this.targetLatency,i=this.levelDetails;if(null===e||null===t||null===i)return null;const r=i.edge,s=e-t-this.edgeStalled,n=r-i.totalduration,a=r-(this.config.lowLatencyMode&&i.partTarget||i.targetduration);return Math.min(Math.max(n,s),a)}get drift(){const{levelDetails:e}=this;return null===e?1:e.drift}get edgeStalled(){const{levelDetails:e}=this;if(null===e)return 0;const t=3*(this.config.lowLatencyMode&&e.partTarget||e.targetduration);return Math.max(e.age-t,0)}get forwardBufferLength(){const{media:e,levelDetails:t}=this;if(!e||!t)return 0;const i=e.buffered.length;return(i?e.buffered.end(i-1):t.edge)-this.currentTime}destroy(){this.unregisterListeners(),this.onMediaDetaching(),this.levelDetails=null,this.hls=this.timeupdateHandler=null}registerListeners(){this.hls.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(tr.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.on(tr.ERROR,this.onError,this)}unregisterListeners(){this.hls.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(tr.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.off(tr.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 i;t.details===rr.BUFFER_STALLED_ERROR&&(this.stallCount++,null!=(i=this.levelDetails)&&i.live&&lr.warn("[playback-rate-controller]: Stall detected, adjusting target latency"))}timeupdate(){const{media:e,levelDetails:t}=this;if(!e||!t)return;this.currentTime=e.currentTime;const i=this.computeLatency();if(null===i)return;this._latency=i;const{lowLatencyMode:r,maxLiveSyncPlaybackRate:s}=this.config;if(!r||1===s||!t.live)return;const n=this.targetLatency;if(null===n)return;const a=i-n;if(a.05&&this.forwardBufferLength>1){const t=Math.min(2,Math.max(1,s)),i=Math.round(2/(1+Math.exp(-.75*a-this.edgeStalled))*20)/20;e.playbackRate=Math.min(t,Math.max(1,i))}else 1!==e.playbackRate&&0!==e.playbackRate&&(e.playbackRate=1)}estimateLiveEdge(){const{levelDetails:e}=this;return null===e?null:e.edge+e.age}computeLatency(){const e=this.estimateLiveEdge();return null===e?null:e-this.currentTime}}const Dn=["NONE","TYPE-0","TYPE-1",null];const xn=["SDR","PQ","HLG"];var Cn="",In="YES",Pn="v2";function On(e){const{canSkipUntil:t,canSkipDateRanges:i,age:r}=e;return t&&r!!e)).map((e=>e.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 Nn(this._audioGroups,e)}hasSubtitleGroup(e){return Nn(this._subtitleGroups,e)}get audioGroups(){return this._audioGroups}get subtitleGroups(){return this._subtitleGroups}addGroupId(e,t){if(t)if("audio"===e){let e=this._audioGroups;e||(e=this._audioGroups=[]),-1===e.indexOf(t)&&e.push(t)}else if("text"===e){let e=this._subtitleGroups;e||(e=this._subtitleGroups=[]),-1===e.indexOf(t)&&e.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 null==(e=this.audioGroups)?void 0:e[0]}get textGroupId(){var e;return null==(e=this.subtitleGroups)?void 0:e[0]}addFallback(){}}function Nn(e,t){return!(!t||!e)&&-1!==e.indexOf(t)}function Un(e,t){const i=t.startPTS;if(Ji(i)){let r,s=0;t.sn>e.sn?(s=i-e.start,r=e):(s=e.start-i,r=t),r.duration!==s&&(r.duration=s)}else if(t.sn>e.sn){e.cc===t.cc&&e.minEndPTS?t.start=e.start+(e.minEndPTS-e.start):t.start=e.start+e.duration}else t.start=Math.max(e.start-t.duration,0)}function Bn(e,t,i,r,s,n){r-i<=0&&(lr.warn("Fragment should have a positive duration",t),r=i+t.duration,n=s+t.duration);let a=i,o=r;const l=t.startPTS,h=t.endPTS;if(Ji(l)){const e=Math.abs(l-i);Ji(t.deltaPTS)?t.deltaPTS=Math.max(e,t.deltaPTS):t.deltaPTS=e,a=Math.max(i,l),i=Math.min(i,l),s=Math.min(s,t.startDTS),o=Math.min(r,h),r=Math.max(r,h),n=Math.max(n,t.endDTS)}const c=i-t.start;0!==t.start&&(t.start=i),t.duration=r-t.start,t.startPTS=i,t.maxStartPTS=a,t.startDTS=s,t.endPTS=r,t.minEndPTS=o,t.endDTS=n;const d=t.sn;if(!e||de.endSN)return 0;let u;const f=d-e.startSN,g=e.fragments;for(g[f]=t,u=f;u>0;u--)Un(g[u],g[u-1]);for(u=f;u=0;e--){const t=r[e].initSegment;if(t){i=t;break}}e.fragmentHint&&delete e.fragmentHint.endPTS;let s,n=0;if(function(e,t,i){const r=t.skippedSegments,s=Math.max(e.startSN,t.startSN)-t.startSN,n=(e.fragmentHint?1:0)+(r?t.endSN:Math.min(e.endSN,t.endSN))-t.startSN,a=t.startSN-e.startSN,o=t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments,l=e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments;for(let e=s;e<=n;e++){const s=l[a+e];let n=o[e];r&&!n&&e{e.relurl&&(n=e.cc-r.cc),Ji(e.startPTS)&&Ji(e.endPTS)&&(r.start=r.startPTS=e.startPTS,r.startDTS=e.startDTS,r.maxStartPTS=e.maxStartPTS,r.endPTS=e.endPTS,r.endDTS=e.endDTS,r.minEndPTS=e.minEndPTS,r.duration=e.endPTS-e.startPTS,r.duration&&(s=r),t.PTSKnown=t.alignedSliding=!0),r.elementaryStreams=e.elementaryStreams,r.loader=e.loader,r.stats=e.stats,e.initSegment&&(r.initSegment=e.initSegment,i=e.initSegment)})),i){(t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments).forEach((e=>{var t;!e||e.initSegment&&e.initSegment.relurl!==(null==(t=i)?void 0:t.relurl)||(e.initSegment=i)}))}if(t.skippedSegments)if(t.deltaUpdateFailed=t.fragments.some((e=>!e)),t.deltaUpdateFailed){lr.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(let e=t.skippedSegments;e--;)t.fragments.shift();t.startSN=t.fragments[0].sn,t.startCC=t.fragments[0].cc}else t.canSkipDateRanges&&(t.dateRanges=function(e,t,i){const r=Qi({},e);i&&i.forEach((e=>{delete r[e]}));return Object.keys(t).forEach((e=>{const i=new fr(t[e].attr,r[e]);i.isValid?r[e]=i:lr.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: "${JSON.stringify(t[e].attr)}"`)})),r}(e.dateRanges,t.dateRanges,t.recentlyRemovedDateranges));const a=t.fragments;if(n){lr.warn("discontinuity sliding from playlist, take drift into account");for(let e=0;e{t.elementaryStreams=e.elementaryStreams,t.stats=e.stats})),s?Bn(t,s,s.startPTS,s.endPTS,s.startDTS,s.endDTS):Gn(e,t),a.length&&(t.totalduration=t.edge-a[0].start),t.driftStartTime=e.driftStartTime,t.driftStart=e.driftStart;const o=t.advancedDateTime;if(t.advanced&&o){const e=t.edge;t.driftStart||(t.driftStartTime=o,t.driftStart=e),t.driftEndTime=o,t.driftEnd=e}else t.driftEndTime=e.driftEndTime,t.driftEnd=e.driftEnd,t.advancedDateTime=e.advancedDateTime}function Gn(e,t){const i=t.startSN+t.skippedSegments-e.startSN,r=e.fragments;i<0||i>=r.length||Kn(t,r[i].start)}function Kn(e,t){if(t){const i=e.fragments;for(let r=e.skippedSegments;r{const{details:i}=e;null!=i&&i.fragments&&i.fragments.forEach((e=>{e.level=t}))}))}function Wn(e){switch(e.details){case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_TIMEOUT:case rr.LEVEL_LOAD_TIMEOUT:case rr.MANIFEST_LOAD_TIMEOUT:return!0}return!1}function Yn(e,t){const i=Wn(t);return e.default[(i?"timeout":"error")+"Retry"]}function qn(e,t){const i="linear"===e.backoff?1:Math.pow(2,t);return Math.min(i*e.retryDelayMs,e.maxRetryDelayMs)}function zn(e){return qi(qi({},e),{errorRetry:null,timeoutRetry:null})}function Xn(e,t,i,r){if(!e)return!1;const s=null==r?void 0:r.code,n=t499)}(s)||!!i);return e.shouldRetry?e.shouldRetry(e,t,i,r,n):n}const Qn=function(e,t){let i=0,r=e.length-1,s=null,n=null;for(;i<=r;){s=(i+r)/2|0,n=e[s];const a=t(n);if(a>0)i=s+1;else{if(!(a<0))return n;r=s-1}}return null};function Jn(e,t,i=0,r=0,s=.005){let n=null;if(e){n=t[e.sn-t[0].sn+1]||null;const r=e.endDTS-i;r>0&&r<15e-7&&(i+=15e-7)}else 0===i&&0===t[0].start&&(n=t[0]);if(n&&((!e||e.level===n.level)&&0===Zn(i,r,n)||function(e,t,i){if(t&&0===t.start&&t.level0){const r=t.tagList.reduce(((e,t)=>("INF"===t[0]&&(e+=parseFloat(t[1])),e)),i);return e.start<=r}return!1}(n,e,Math.min(s,r))))return n;const a=Qn(t,Zn.bind(null,i,r));return!a||a===e&&n?n:a}function Zn(e=0,t=0,i){if(i.start<=e&&i.start+i.duration>e)return 0;const r=Math.min(t,i.duration+(i.deltaPTS?i.deltaPTS:0));return i.start+i.duration-r<=e?1:i.start-r>e&&i.start?-1:0}function ea(e,t,i){const r=1e3*Math.min(t,i.duration+(i.deltaPTS?i.deltaPTS:0));return(i.endProgramDateTime||0)-r>e}var ta=0,ia=2,ra=3,sa=5,na=0,aa=1,oa=2;class la{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=lr.log.bind(lr,`${t}:`),this.warn=lr.warn.bind(lr,`${t}:`),this.hls=e}destroy(){this.clearTimer(),this.hls=this.log=this.warn=null}clearTimer(){-1!==this.timer&&(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,i){const r=null==t?void 0:t.renditionReports;if(r){let s=-1;for(let i=0;i=0&&e>t.partTarget&&(a+=1)}const o=i&&On(i);return new Mn(n,a>=0?a:void 0,o)}}}loadPlaylist(e){-1===this.requestScheduled&&(this.requestScheduled=self.performance.now())}shouldLoadPlaylist(e){return this.canLoad&&!!e&&!!e.url&&(!e.details||e.details.live)}shouldReloadPlaylist(e){return-1===this.timer&&-1===this.requestScheduled&&this.shouldLoadPlaylist(e)}playlistLoaded(e,t,i){const{details:r,stats:s}=t,n=self.performance.now(),a=s.loading.first?Math.max(0,n-s.loading.first):0;if(r.advancedDateTime=Date.now()-a,r.live||null!=i&&i.live){if(r.reloaded(i),i&&this.log(`live playlist ${e} ${r.advanced?"REFRESHED "+r.lastPartSn+"-"+r.lastPartIndex:r.updated?"UPDATED":"MISSED"}`),i&&r.fragments.length>0&&$n(i,r),!this.canLoad||!r.live)return;let a,o,l;if(r.canBlockReload&&r.endSN&&r.advanced){const e=this.hls.config.lowLatencyMode,s=r.lastPartSn,n=r.endSN,h=r.lastPartIndex,c=s===n;-1!==h?(o=c?n+1:s,l=c?e?0:h:h+1):o=n+1;const d=r.age,u=d+r.ageHeader;let f=Math.min(u-r.partTarget,1.5*r.targetduration);if(f>0){if(i&&f>i.tuneInGoal)this.warn(`CDN Tune-in goal increased from: ${i.tuneInGoal} to: ${f} with playlist age: ${r.age}`),f=0;else{const e=Math.floor(f/r.targetduration);if(o+=e,void 0!==l){l+=Math.round(f%r.targetduration/r.partTarget)}this.log(`CDN Tune-in age: ${r.ageHeader}s last advanced ${d.toFixed(2)}s goal: ${f} skip sn ${e} to part ${l}`)}r.tuneInGoal=f}if(a=this.getDeliveryDirectives(r,t.deliveryDirectives,o,l),e||!c)return void this.loadPlaylist(a)}else(r.canBlockReload||r.canSkipUntil)&&(a=this.getDeliveryDirectives(r,t.deliveryDirectives,o,l));const h=this.hls.mainForwardBufferInfo,c=h?h.end-h.len:0,d=function(e,t=1/0){let i=1e3*e.targetduration;if(e.updated){const r=e.fragments,s=4;if(r.length&&i*s>t){const e=1e3*r[r.length-1].duration;ethis.requestScheduled+d&&(this.requestScheduled=s.loading.start),void 0!==o&&r.canBlockReload?this.requestScheduled=s.loading.first+d-(1e3*r.partTarget||1e3):-1===this.requestScheduled||this.requestScheduled+dthis.loadPlaylist(a)),u)}else this.clearTimer()}getDeliveryDirectives(e,t,i,r){let s=On(e);return null!=t&&t.skip&&e.deltaUpdateFailed&&(i=t.msn,r=t.part,s=Cn),new Mn(i,r,s)}checkRetry(e){const t=e.details,i=Wn(e),r=e.errorAction,{action:s,retryCount:n=0,retryConfig:a}=r||{},o=!!r&&!!a&&(s===sa||!r.resolved&&s===ia);if(o){var l;if(this.requestScheduled=-1,n>=a.maxNumRetry)return!1;if(i&&null!=(l=e.context)&&l.deliveryDirectives)this.warn(`Retrying playlist loading ${n+1}/${a.maxNumRetry} after "${t}" without delivery-directives`),this.loadPlaylist();else{const e=qn(a,n);this.timer=self.setTimeout((()=>this.loadPlaylist()),e),this.warn(`Retrying playlist loading ${n+1}/${a.maxNumRetry} after "${t}" in ${e}ms`)}e.levelRetry=!0,r.resolved=!0}return o}}class ha{constructor(e,t=0,i=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_=i}sample(e,t){const i=Math.pow(this.alpha_,e);this.estimate_=t*(1-i)+i*this.estimate_,this.totalWeight_+=e}getTotalWeight(){return this.totalWeight_}getEstimate(){if(this.alpha_){const e=1-Math.pow(this.alpha_,this.totalWeight_);if(e)return this.estimate_/e}return this.estimate_}}class ca{constructor(e,t,i,r=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_=i,this.minWeight_=.001,this.minDelayMs_=50,this.slow_=new ha(e),this.fast_=new ha(t),this.defaultTTFB_=r,this.ttfb_=new ha(e)}update(e,t){const{slow_:i,fast_:r,ttfb_:s}=this;i.halfLife!==e&&(this.slow_=new ha(e,i.getEstimate(),i.getTotalWeight())),r.halfLife!==t&&(this.fast_=new ha(t,r.getEstimate(),r.getTotalWeight())),s.halfLife!==e&&(this.ttfb_=new ha(e,s.getEstimate(),s.getTotalWeight()))}sample(e,t){const i=(e=Math.max(e,this.minDelayMs_))/1e3,r=8*t/i;this.fast_.sample(i,r),this.slow_.sample(i,r)}sampleTTFB(e){const t=e/1e3,i=Math.sqrt(2)*Math.exp(-Math.pow(t,2)/2);this.ttfb_.sample(i,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(){}}const da={supported:!0,configurations:[],decodingInfoResults:[{supported:!0,powerEfficient:!0,smooth:!0}]},ua={};function fa(e,t,i,r,s,n){const a=e.audioCodec?e.audioGroups:null,o=null==n?void 0:n.audioCodec,l=null==n?void 0:n.channels,h=l?parseInt(l):o?1/0:2;let c=null;if(null!=a&&a.length)try{c=1===a.length&&a[0]?t.groups[a[0]].channels:a.reduce(((e,i)=>{if(i){const r=t.groups[i];if(!r)throw new Error(`Audio track group ${i} not found`);Object.keys(r.channels).forEach((t=>{e[t]=(e[t]||0)+r.channels[t]}))}return e}),{2:0})}catch(e){return!0}return void 0!==e.videoCodec&&(e.width>1920&&e.height>1088||e.height>1920&&e.width>1088||e.frameRate>Math.max(r,30)||"SDR"!==e.videoRange&&e.videoRange!==i||e.bitrate>Math.max(s,8e6))||!!c&&Ji(h)&&Object.keys(c).some((e=>parseInt(e)>h))}function ga(e,t,i){const r=e.videoCodec,s=e.audioCodec;if(!r||!s||!i)return Promise.resolve(da);const n={width:e.width,height:e.height,bitrate:Math.ceil(Math.max(.9*e.bitrate,e.averageBitrate)),framerate:e.frameRate||30},a=e.videoRange;"SDR"!==a&&(n.transferFunction=a.toLowerCase());const o=r.split(",").map((e=>({type:"media-source",video:qi(qi({},n),{},{contentType:Us(e,"video")})})));return s&&e.audioGroups&&e.audioGroups.forEach((e=>{var i;e&&(null==(i=t.groups[e])||i.tracks.forEach((t=>{if(t.groupId===e){const e=t.channels||"",i=parseFloat(e);Ji(i)&&i>2&&o.push.apply(o,s.split(",").map((e=>({type:"media-source",audio:{contentType:Us(e,"audio"),channels:""+i}}))))}})))})),Promise.all(o.map((e=>{const t=function(e){const{audio:t,video:i}=e,r=i||t;if(r){const e=r.contentType.split('"')[1];if(i)return`r${i.height}x${i.width}f${Math.ceil(i.framerate)}${i.transferFunction||"sd"}_${e}_${Math.ceil(i.bitrate/1e5)}`;if(t)return`c${t.channels}${t.spatialRendering?"s":"n"}_${e}`}return""}(e);return ua[t]||(ua[t]=i.decodingInfo(e))}))).then((e=>({supported:!e.some((e=>!e.supported)),configurations:o,decodingInfoResults:e}))).catch((e=>({supported:!1,configurations:o,decodingInfoResults:[],error:e})))}function ma(e,t){let i=!1,r=[];return e&&(i="SDR"!==e,r=[e]),t&&(r=t.allowedVideoRanges||xn.slice(0),i=void 0!==t.preferHDR?t.preferHDR:function(){if("function"==typeof matchMedia){const e=matchMedia("(dynamic-range: high)"),t=matchMedia("bad query");if(e.media!==t.media)return!0===e.matches}return!1}(),r=i?r.filter((e=>"SDR"!==e)):["SDR"]),{preferHDR:i,allowedVideoRanges:r}}function pa(e,t){lr.log(`[abr] start candidates with "${e}" ignored because ${t}`)}function va(e,t,i){if("attrs"in e){const i=t.indexOf(e);if(-1!==i)return i}for(let r=0;r-1===r.indexOf(e)))}(o,t.characteristics))&&(void 0===i||i(e,t))}function Ta(e,t){const{audioCodec:i,channels:r}=e;return!(void 0!==i&&(t.audioCodec||"").substring(0,4)!==i.substring(0,4)||void 0!==r&&r!==(t.channels||"2"))}function Ea(e,t,i){for(let r=t;r;r--)if(i(e[r]))return r;for(let r=t+1;r1&&this.tickImmediate(),this._tickCallCount=0)}tickImmediate(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)}doTick(){}}var ba="NOT_LOADED",La="APPENDING",wa="PARTIAL",Aa="OK";class Ra{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(){const{hls:e}=this;e.on(tr.BUFFER_APPENDED,this.onBufferAppended,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.on(tr.FRAG_LOADED,this.onFragLoaded,this)}_unregisterListeners(){const{hls:e}=this;e.off(tr.BUFFER_APPENDED,this.onBufferAppended,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.off(tr.FRAG_LOADED,this.onFragLoaded,this)}destroy(){this._unregisterListeners(),this.fragments=this.activePartLists=this.endListFragments=this.timeRanges=null}getAppendedFrag(e,t){const i=this.activePartLists[t];if(i)for(let t=i.length;t--;){const r=i[t];if(!r)break;const s=r.end;if(r.start<=e&&null!==s&&e<=s)return r}return this.getBufferedFrag(e,t)}getBufferedFrag(e,t){const{fragments:i}=this,r=Object.keys(i);for(let s=r.length;s--;){const n=i[r[s]];if((null==n?void 0:n.body.type)===t&&n.buffered){const t=n.body;if(t.start<=e&&e<=t.end)return t}}return null}detectEvictedFragments(e,t,i,r){this.timeRanges&&(this.timeRanges[e]=t);const s=(null==r?void 0:r.fragment.sn)||-1;Object.keys(this.fragments).forEach((r=>{const n=this.fragments[r];if(!n)return;if(s>=n.body.sn)return;if(!n.buffered&&!n.loaded)return void(n.body.type===i&&this.removeFragment(n.body));const a=n.range[e];a&&a.time.some((e=>{const i=!this.isTimeBuffered(e.startPTS,e.endPTS,t);return i&&this.removeFragment(n.body),i}))}))}detectPartialFragments(e){const t=this.timeRanges,{frag:i,part:r}=e;if(!t||"initSegment"===i.sn)return;const s=_a(i),n=this.fragments[s];if(!n||n.buffered&&i.gap)return;const a=!i.relurl;if(Object.keys(t).forEach((e=>{const s=i.elementaryStreams[e];if(!s)return;const o=t[e],l=a||!0===s.partial;n.range[e]=this.getBufferedTimes(i,r,l,o)})),n.loaded=null,Object.keys(n.range).length){n.buffered=!0;(n.body.endList=i.endList||n.body.endList)&&(this.endListFragments[n.body.type]=n),ka(n)||this.removeParts(i.sn-1,i.type)}else this.removeFragment(n.body)}removeParts(e,t){const i=this.activePartLists[t];i&&(this.activePartLists[t]=i.filter((t=>t.fragment.sn>=e)))}fragBuffered(e,t){const i=_a(e);let r=this.fragments[i];!r&&t&&(r=this.fragments[i]={body:e,appendedPTS:null,loaded:null,buffered:!1,range:Object.create(null)},e.gap&&(this.hasGaps=!0)),r&&(r.loaded=null,r.buffered=!0)}getBufferedTimes(e,t,i,r){const s={time:[],partial:i},n=e.start,a=e.end,o=e.minEndPTS||a,l=e.maxStartPTS||n;for(let e=0;e=t&&o<=i){s.time.push({startPTS:Math.max(n,r.start(e)),endPTS:Math.min(a,r.end(e))});break}if(nt){const t=Math.max(n,r.start(e)),i=Math.min(a,r.end(e));i>t&&(s.partial=!0,s.time.push({startPTS:t,endPTS:i}))}else if(a<=t)break}return s}getPartialFragment(e){let t,i,r,s=null,n=0;const{bufferPadding:a,fragments:o}=this;return Object.keys(o).forEach((l=>{const h=o[l];h&&ka(h)&&(i=h.body.start-a,r=h.body.end+a,e>=i&&e<=r&&(t=Math.min(e-i,r-e),n<=t&&(s=h.body,n=t)))})),s}isEndListAppended(e){const t=this.endListFragments[e];return void 0!==t&&(t.buffered||ka(t))}getState(e){const t=_a(e),i=this.fragments[t];return i?i.buffered?ka(i)?wa:Aa:La:ba}isTimeBuffered(e,t,i){let r,s;for(let n=0;n=r&&t<=s)return!0;if(t<=r)return!1}return!1}onFragLoaded(e,t){const{frag:i,part:r}=t;if("initSegment"===i.sn||i.bitrateTest)return;const s=r?null:t,n=_a(i);this.fragments[n]={body:i,appendedPTS:null,loaded:s,buffered:!1,range:Object.create(null)}}onBufferAppended(e,t){const{frag:i,part:r,timeRanges:s}=t;if("initSegment"===i.sn)return;const n=i.type;if(r){let e=this.activePartLists[n];e||(this.activePartLists[n]=e=[]),e.push(r)}this.timeRanges=s,Object.keys(s).forEach((e=>{const t=s[e];this.detectEvictedFragments(e,t,n,r)}))}onFragBuffered(e,t){this.detectPartialFragments(t)}hasFragment(e){const t=_a(e);return!!this.fragments[t]}hasParts(e){var t;return!(null==(t=this.activePartLists[e])||!t.length)}removeFragmentsInRange(e,t,i,r,s){r&&!this.hasGaps||Object.keys(this.fragments).forEach((n=>{const a=this.fragments[n];if(!a)return;const o=a.body;o.type!==i||r&&!o.gap||o.starte&&(a.buffered||s)&&this.removeFragment(o)}))}removeFragment(e){const t=_a(e);e.stats.loaded=0,e.clearElementaryStreamInfo();const i=this.activePartLists[e.type];if(i){const t=e.sn;this.activePartLists[e.type]=i.filter((e=>e.fragment.sn!==t))}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 ka(e){var t,i,r;return e.buffered&&(e.body.gap||(null==(t=e.range.video)?void 0:t.partial)||(null==(i=e.range.audio)?void 0:i.partial)||(null==(r=e.range.audiovideo)?void 0:r.partial))}function _a(e){return`${e.type}_${e.level}_${e.sn}`}const Da={length:0,start:()=>0,end:()=>0};class xa{static isBuffered(e,t){try{if(e){const i=xa.getBuffered(e);for(let e=0;e=i.start(e)&&t<=i.end(e))return!0}}catch(e){}return!1}static bufferInfo(e,t,i){try{if(e){const r=xa.getBuffered(e),s=[];let n;for(n=0;nn&&(r[s-1].end=e[t].end):r.push(e[t])}else r.push(e[t])}else r=e;let s,n=0,a=t,o=t;for(let e=0;e=l&&ti.startCC||e&&e.cc{if(this.loader&&this.loader.destroy(),e.gap){if(e.tagList.some((e=>"GAP"===e[0])))return void o($a(e));e.gap=!1}const l=this.loader=e.loader=s?new s(r):new n(r),h=Ba(e),c=zn(r.fragLoadPolicy.default),d={loadPolicy:c,timeout:c.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:"initSegment"===e.sn?1/0:Na};e.stats=l.stats,l.load(h,d,{onSuccess:(t,i,r,s)=>{this.resetLoader(e,l);let n=t.data;r.resetIV&&e.decryptdata&&(e.decryptdata.iv=new Uint8Array(n.slice(0,16)),n=n.slice(16)),a({frag:e,part:null,payload:n,networkDetails:s})},onError:(t,r,s,n)=>{this.resetLoader(e,l),o(new Ga({type:ir.NETWORK_ERROR,details:rr.FRAG_LOAD_ERROR,fatal:!1,frag:e,response:qi({url:i,data:void 0},t),error:new Error(`HTTP Error ${t.code} ${t.text}`),networkDetails:s,stats:n}))},onAbort:(t,i,r)=>{this.resetLoader(e,l),o(new Ga({type:ir.NETWORK_ERROR,details:rr.INTERNAL_ABORTED,fatal:!1,frag:e,error:new Error("Aborted"),networkDetails:r,stats:t}))},onTimeout:(t,i,r)=>{this.resetLoader(e,l),o(new Ga({type:ir.NETWORK_ERROR,details:rr.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,error:new Error(`Timeout after ${d.timeout}ms`),networkDetails:r,stats:t}))},onProgress:(i,r,s,n)=>{t&&t({frag:e,part:null,payload:s,networkDetails:n})}})}))}loadPart(e,t,i){this.abort();const r=this.config,s=r.fLoader,n=r.loader;return new Promise(((a,o)=>{if(this.loader&&this.loader.destroy(),e.gap||t.gap)return void o($a(e,t));const l=this.loader=e.loader=s?new s(r):new n(r),h=Ba(e,t),c=zn(r.fragLoadPolicy.default),d={loadPolicy:c,timeout:c.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:Na};t.stats=l.stats,l.load(h,d,{onSuccess:(r,s,n,o)=>{this.resetLoader(e,l),this.updateStatsFromPart(e,t);const h={frag:e,part:t,payload:r.data,networkDetails:o};i(h),a(h)},onError:(i,r,s,n)=>{this.resetLoader(e,l),o(new Ga({type:ir.NETWORK_ERROR,details:rr.FRAG_LOAD_ERROR,fatal:!1,frag:e,part:t,response:qi({url:h.url,data:void 0},i),error:new Error(`HTTP Error ${i.code} ${i.text}`),networkDetails:s,stats:n}))},onAbort:(i,r,s)=>{e.stats.aborted=t.stats.aborted,this.resetLoader(e,l),o(new Ga({type:ir.NETWORK_ERROR,details:rr.INTERNAL_ABORTED,fatal:!1,frag:e,part:t,error:new Error("Aborted"),networkDetails:s,stats:i}))},onTimeout:(i,r,s)=>{this.resetLoader(e,l),o(new Ga({type:ir.NETWORK_ERROR,details:rr.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,part:t,error:new Error(`Timeout after ${d.timeout}ms`),networkDetails:s,stats:i}))}})}))}updateStatsFromPart(e,t){const i=e.stats,r=t.stats,s=r.total;if(i.loaded+=r.loaded,s){const r=Math.round(e.duration/t.duration),n=Math.min(Math.round(i.loaded/s),r),a=(r-n)*Math.round(i.loaded/n);i.total=i.loaded+a}else i.total=Math.max(i.loaded,i.total);const n=i.loading,a=r.loading;n.start?n.first+=a.first-a.start:(n.start=a.start,n.first=a.first),n.end=a.end}resetLoader(e,t){e.loader=null,this.loader===t&&(self.clearTimeout(this.partLoadTimeout),this.loader=null),t.destroy()}}function Ba(e,t=null){const i=t||e,r={frag:e,part:t,responseType:"arraybuffer",url:i.url,headers:{},rangeStart:0,rangeEnd:0},s=i.byteRangeStartOffset,n=i.byteRangeEndOffset;if(Ji(s)&&Ji(n)){var a;let t=s,i=n;if("initSegment"===e.sn&&"AES-128"===(null==(a=e.decryptdata)?void 0:a.method)){const e=n-s;e%16&&(i=n+(16-e%16)),0!==s&&(r.resetIV=!0,t=s-16)}r.rangeStart=t,r.rangeEnd=i}return r}function $a(e,t){const i=new Error(`GAP ${e.gap?"tag":"attribute"} found`),r={type:ir.MEDIA_ERROR,details:rr.FRAG_GAP,fatal:!1,frag:e,error:i,networkDetails:null};return t&&(r.part=t),(t||e).stats.aborted=!0,new Ga(r)}class Ga extends Error{constructor(e){super(e.error.message),this.data=void 0,this.data=e}}class Ka{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)}}class Va{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"])}}class Ha{constructor(){this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.ksRows=0,this.keySize=0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.initTable()}uint8ArrayToUint32Array_(e){const t=new DataView(e),i=new Uint32Array(4);for(let e=0;e<4;e++)i[e]=t.getUint32(4*e);return i}initTable(){const e=this.sBox,t=this.invSBox,i=this.subMix,r=i[0],s=i[1],n=i[2],a=i[3],o=this.invSubMix,l=o[0],h=o[1],c=o[2],d=o[3],u=new Uint32Array(256);let f=0,g=0,m=0;for(m=0;m<256;m++)u[m]=m<128?m<<1:m<<1^283;for(m=0;m<256;m++){let i=g^g<<1^g<<2^g<<3^g<<4;i=i>>>8^255&i^99,e[f]=i,t[i]=f;const o=u[f],m=u[o],p=u[m];let v=257*u[i]^16843008*i;r[f]=v<<24|v>>>8,s[f]=v<<16|v>>>16,n[f]=v<<8|v>>>24,a[f]=v,v=16843009*p^65537*m^257*o^16843008*f,l[i]=v<<24|v>>>8,h[i]=v<<16|v>>>16,c[i]=v<<8|v>>>24,d[i]=v,f?(f=o^u[u[u[p^o]]],g^=u[u[g]]):f=g=1}}expandKey(e){const t=this.uint8ArrayToUint32Array_(e);let i=!0,r=0;for(;r{if(!this.subtle)return Promise.reject(new Error("web crypto not initialized"));this.logOnce("WebCrypto AES decrypt");return new Ka(this.subtle,new Uint8Array(i)).decrypt(e.buffer,t)})).catch((r=>(lr.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${r.name}: ${r.message}`),this.onWebCryptoError(e,t,i))))}onWebCryptoError(e,t,i){this.useSoftware=!0,this.logEnabled=!0,this.softwareDecrypt(e,t,i);const r=this.flush();if(r)return r.buffer;throw new Error("WebCrypto and softwareDecrypt: failed to decrypt data")}getValidChunk(e){let t=e;const i=e.length-e.length%16;return i!==e.length&&(t=Nr(e,0,i),this.remainderData=Nr(e,i)),t}logOnce(e){this.logEnabled&&(lr.log(`[decrypter]: ${e}`),this.logEnabled=!1)}}const Wa=function(e){let t="";const i=e.length;for(let r=0;ra.end){const e=n>s;(n{if(this.fragContextChanged(e))return this.warn(`Fragment ${e.sn}${t.part?" p: "+t.part.index:""} of level ${e.level} was dropped during download.`),void this.fragmentTracker.removeFragment(e);e.stats.chunkCount++,this._handleFragmentLoadProgress(t)})).then((t=>{if(!t)return;const i=this.state;this.fragContextChanged(e)?(i===Xa||!this.fragCurrent&&i===Za)&&(this.fragmentTracker.removeFragment(e),this.state=qa):("payload"in t&&(this.log(`Loaded fragment ${e.sn} of level ${e.level}`),this.hls.trigger(tr.FRAG_LOADED,t)),this._handleFragmentLoadComplete(t))})).catch((t=>{this.state!==Ya&&this.state!==io&&(this.warn(`Frag error: ${(null==t?void 0:t.message)||t}`),this.resetFragmentLoading(e))}))}clearTrackerIfNeeded(e){var t;const{fragmentTracker:i}=this;if(i.getState(e)===La){const t=e.type,r=this.getFwdBufferInfo(this.mediaBuffer,t),s=Math.max(e.duration,r?r.len:this.config.maxBufferLength),n=this.backtrackFragment;(1===(n?e.sn-n.sn:0)||this.reduceMaxBufferLength(s))&&i.removeFragment(e)}else 0===(null==(t=this.mediaBuffer)?void 0:t.buffered.length)?i.removeAllFragments():i.hasParts(e.type)&&(i.detectPartialFragments({frag:e,part:null,stats:e.stats,id:e.type}),i.getState(e)===wa&&i.removeFragment(e))}checkLiveUpdate(e){if(e.updated&&!e.live){const t=e.fragments[e.fragments.length-1];this.fragmentTracker.detectPartialFragments({frag:t,part:null,stats:t.stats,id:t.type})}e.fragments[0]||(e.deltaUpdateFailed=!0)}flushMainBuffer(e,t,i=null){if(!(e-t))return;const r={startOffset:e,endOffset:t,type:i};this.hls.trigger(tr.BUFFER_FLUSHING,r)}_loadInitSegment(e,t){this._doFragLoad(e,t).then((t=>{if(!t||this.fragContextChanged(e)||!this.levels)throw new Error("init load aborted");return t})).then((t=>{const{hls:i}=this,{payload:r}=t,s=e.decryptdata;if(r&&r.byteLength>0&&null!=s&&s.key&&s.iv&&"AES-128"===s.method){const n=self.performance.now();return this.decrypter.decrypt(new Uint8Array(r),s.key.buffer,s.iv.buffer).catch((t=>{throw i.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.FRAG_DECRYPT_ERROR,fatal:!1,error:t,reason:t.message,frag:e}),t})).then((r=>{const s=self.performance.now();return i.trigger(tr.FRAG_DECRYPTED,{frag:e,payload:r,stats:{tstart:n,tdecrypt:s}}),t.payload=r,this.completeInitSegmentLoad(t)}))}return this.completeInitSegmentLoad(t)})).catch((t=>{this.state!==Ya&&this.state!==io&&(this.warn(t),this.resetFragmentLoading(e))}))}completeInitSegmentLoad(e){const{levels:t}=this;if(!t)throw new Error("init load aborted, missing levels");const i=e.frag.stats;this.state=qa,e.frag.data=new Uint8Array(e.payload),i.parsing.start=i.buffering.start=self.performance.now(),i.parsing.end=i.buffering.end=self.performance.now(),this.tick()}fragContextChanged(e){const{fragCurrent:t}=this;return!e||!t||e.sn!==t.sn||e.level!==t.level}fragBufferedComplete(e,t){var i,r,s,n;const a=this.mediaBuffer?this.mediaBuffer:this.media;if(this.log(`Buffered ${e.type} sn: ${e.sn}${t?" part: "+t.index:""} of ${this.playlistType===hn?"level":"track"} ${e.level} (frag:[${(null!=(i=e.startPTS)?i:NaN).toFixed(3)}-${(null!=(r=e.endPTS)?r:NaN).toFixed(3)}] > buffer:${a?Wa(xa.getBuffered(a)):"(detached)"})`),"initSegment"!==e.sn){var o;if(e.type!==dn){const t=e.elementaryStreams;if(!Object.keys(t).some((e=>!!t[e])))return void(this.state=qa)}const t=null==(o=this.levels)?void 0:o[e.level];null!=t&&t.fragmentError&&(this.log(`Resetting level fragment error count of ${t.fragmentError} on frag buffered`),t.fragmentError=0)}this.state=qa,a&&(!this.loadedmetadata&&e.type==hn&&a.buffered.length&&(null==(s=this.fragCurrent)?void 0:s.sn)===(null==(n=this.fragPrevious)?void 0:n.sn)&&(this.loadedmetadata=!0,this.seekToStartPos()),this.tick())}seekToStartPos(){}_handleFragmentLoadComplete(e){const{transmuxer:t}=this;if(!t)return;const{frag:i,part:r,partsLoaded:s}=e,n=!s||0===s.length||s.some((e=>!e)),a=new Ca(i.level,i.sn,i.stats.chunkCount+1,0,r?r.index:-1,!n);t.flush(a)}_handleFragmentLoadProgress(e){}_doFragLoad(e,t,i=null,r){var s;const n=null==t?void 0:t.details;if(!this.levels||!n)throw new Error(`frag load aborted, missing level${n?"":" detail"}s`);let a=null;if(!e.encrypted||null!=(s=e.decryptdata)&&s.key?!e.encrypted&&n.encryptedFragments.length&&this.keyLoader.loadClear(e,n.encryptedFragments):(this.log(`Loading key for ${e.sn} of [${n.startSN}-${n.endSN}], ${"[stream-controller]"===this.logPrefix?"level":"track"} ${e.level}`),this.state=za,this.fragCurrent=e,a=this.keyLoader.load(e).then((e=>{if(!this.fragContextChanged(e.frag))return this.hls.trigger(tr.KEY_LOADED,e),this.state===za&&(this.state=qa),e})),this.hls.trigger(tr.KEY_LOADING,{frag:e}),null===this.fragCurrent&&(a=Promise.reject(new Error("frag load aborted, context changed in KEY_LOADING")))),i=Math.max(e.start,i||0),this.config.lowLatencyMode&&"initSegment"!==e.sn){const s=n.partList;if(s&&r){i>e.end&&n.fragmentHint&&(e=n.fragmentHint);const o=this.getNextPart(s,e,i);if(o>-1){const l=s[o];let h;return this.log(`Loading part sn: ${e.sn} p: ${l.index} cc: ${e.cc} of playlist [${n.startSN}-${n.endSN}] parts [0-${o}-${s.length-1}] ${"[stream-controller]"===this.logPrefix?"level":"track"}: ${e.level}, target: ${parseFloat(i.toFixed(3))}`),this.nextLoadPosition=l.start+l.duration,this.state=Xa,h=a?a.then((i=>!i||this.fragContextChanged(i.frag)?null:this.doFragPartsLoad(e,l,t,r))).catch((e=>this.handleFragLoadError(e))):this.doFragPartsLoad(e,l,t,r).catch((e=>this.handleFragLoadError(e))),this.hls.trigger(tr.FRAG_LOADING,{frag:e,part:l,targetBufferTime:i}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")):h}if(!e.url||this.loadedEndOfParts(s,i))return Promise.resolve(null)}}this.log(`Loading fragment ${e.sn} cc: ${e.cc} ${n?"of ["+n.startSN+"-"+n.endSN+"] ":""}${"[stream-controller]"===this.logPrefix?"level":"track"}: ${e.level}, target: ${parseFloat(i.toFixed(3))}`),Ji(e.sn)&&!this.bitrateTest&&(this.nextLoadPosition=e.start+e.duration),this.state=Xa;const o=this.config.progressive;let l;return l=o&&a?a.then((t=>!t||this.fragContextChanged(null==t?void 0:t.frag)?null:this.fragmentLoader.load(e,r))).catch((e=>this.handleFragLoadError(e))):Promise.all([this.fragmentLoader.load(e,o?r:void 0),a]).then((([e])=>(!o&&e&&r&&r(e),e))).catch((e=>this.handleFragLoadError(e))),this.hls.trigger(tr.FRAG_LOADING,{frag:e,targetBufferTime:i}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")):l}doFragPartsLoad(e,t,i,r){return new Promise(((s,n)=>{var a;const o=[],l=null==(a=i.details)?void 0:a.partList,h=t=>{this.fragmentLoader.loadPart(e,t,r).then((r=>{o[t.index]=r;const n=r.part;this.hls.trigger(tr.FRAG_LOADED,r);const a=Vn(i,e.sn,t.index+1)||Hn(l,e.sn,t.index+1);if(!a)return s({frag:e,part:n,partsLoaded:o});h(a)})).catch(n)};h(t)}))}handleFragLoadError(e){if("data"in e){const t=e.data;e.data&&t.details===rr.INTERNAL_ABORTED?this.handleFragLoadAborted(t.frag,t.part):this.hls.trigger(tr.ERROR,t)}else this.hls.trigger(tr.ERROR,{type:ir.OTHER_ERROR,details:rr.INTERNAL_EXCEPTION,err:e,error:e,fatal:!0});return null}_handleTransmuxerFlush(e){const t=this.getCurrentContext(e);if(!t||this.state!==Za)return void(this.fragCurrent||this.state===Ya||this.state===io||(this.state=qa));const{frag:i,part:r,level:s}=t,n=self.performance.now();i.stats.parsing.end=n,r&&(r.stats.parsing.end=n),this.updateLevelTiming(i,r,s,e.partial)}getCurrentContext(e){const{levels:t,fragCurrent:i}=this,{level:r,sn:s,part:n}=e;if(null==t||!t[r])return this.warn(`Levels object was unset while buffering fragment ${s} of level ${r}. The current chunk will not be buffered.`),null;const a=t[r],o=n>-1?Vn(a,s,n):null,l=o?o.fragment:function(e,t,i){if(null==e||!e.details)return null;const r=e.details;let s=r.fragments[t-r.startSN];return s||(s=r.fragmentHint,s&&s.sn===t?s:tn&&this.flushMainBuffer(a,e.start)}getFwdBufferInfo(e,t){const i=this.getLoadPosition();return Ji(i)?this.getFwdBufferInfoAtPos(e,i,t):null}getFwdBufferInfoAtPos(e,t,i){const{config:{maxBufferHole:r}}=this,s=xa.bufferInfo(e,t,r);if(0===s.len&&void 0!==s.nextStart){const n=this.fragmentTracker.getBufferedFrag(t,i);if(n&&s.nextStart=i&&(t.maxMaxBufferLength=r,this.warn(`Reduce max buffer length to ${r}s`),!0)}getAppendedFrag(e,t=hn){const i=this.fragmentTracker.getAppendedFrag(e,hn);return i&&"fragment"in i?i.fragment:i}getNextFragment(e,t){const i=t.fragments,r=i.length;if(!r)return null;const{config:s}=this,n=i[0].start;let a;if(t.live){const o=s.initialLiveManifestSize;if(rt}getNextFragmentLoopLoading(e,t,i,r,s){const n=e.gap,a=this.getNextFragment(this.nextLoadPosition,t);if(null===a)return a;if(e=a,n&&e&&!e.gap&&i.nextStart){const t=this.getFwdBufferInfoAtPos(this.mediaBuffer?this.mediaBuffer:this.media,i.nextStart,r);if(null!==t&&i.len+t.len>=s)return this.log(`buffer full after gaps in "${r}" playlist starting at sn: ${e.sn}`),null}return e}mapToInitFragWhenRequired(e){return null==e||!e.initSegment||null!=e&&e.initSegment.data||this.bitrateTest?e:e.initSegment}getNextPart(e,t,i){let r=-1,s=!1,n=!0;for(let a=0,o=e.length;a-1&&ii.start&&i.loaded}getInitialLiveFragment(e,t){const i=this.fragPrevious;let r=null;if(i){if(e.hasProgramDateTime&&(this.log(`Live playlist, switching playlist, load frag with same PDT: ${i.programDateTime}`),r=function(e,t,i){if(null===t||!Array.isArray(e)||!e.length||!Ji(t))return null;if(t<(e[0].programDateTime||0))return null;if(t>=(e[e.length-1].endProgramDateTime||0))return null;i=i||0;for(let r=0;r=e.startSN&&s<=e.endSN){const n=t[s-e.startSN];i.cc===n.cc&&(r=n,this.log(`Live playlist, switching playlist, load frag with next SN: ${r.sn}`))}r||(r=function(e,t){return Qn(e,(e=>e.cct?-1:0))}(t,i.cc),r&&this.log(`Live playlist, switching playlist, load frag with same CC: ${r.sn}`))}}else{const t=this.hls.liveSyncPosition;null!==t&&(r=this.getFragmentAtPosition(t,this.bitrateTest?e.fragmentEnd:e.edge,e))}return r}getFragmentAtPosition(e,t,i){const{config:r}=this;let{fragPrevious:s}=this,{fragments:n,endSN:a}=i;const{fragmentHint:o}=i,{maxFragLookUpTolerance:l}=r,h=i.partList,c=!!(r.lowLatencyMode&&null!=h&&h.length&&o);let d;if(c&&o&&!this.bitrateTest&&(n=n.concat(o),a=o.sn),et-l?0:l)}else d=n[n.length-1];if(d){const e=d.sn-i.startSN,t=this.fragmentTracker.getState(d);if((t===Aa||t===wa&&d.gap)&&(s=d),s&&d.sn===s.sn&&(!c||h[0].fragment.sn>d.sn)){if(s&&d.level===s.level){const t=n[e+1];d=d.sn=n-t.maxFragLookUpTolerance&&s<=a;if(null!==r&&i.duration>r&&(s${e.startSN} prev-sn: ${s?s.sn:"na"} fragments: ${r}`),n}return s}waitForCdnTuneIn(e){return e.live&&e.canBlockReload&&e.partTarget&&e.tuneInGoal>Math.max(e.partHoldBack,3*e.partTarget)}setStartPosition(e,t){let i=this.startPosition;if(i ${null==(r=this.fragCurrent)?void 0:r.url}`);const s=t.details===rr.FRAG_GAP;s&&this.fragmentTracker.fragBuffered(i,!0);const n=t.errorAction,{action:a,retryCount:o=0,retryConfig:l}=n||{};if(n&&a===sa&&l){this.resetStartWhenNotLoaded(this.levelLastLoaded);const r=qn(l,o);this.warn(`Fragment ${i.sn} of ${e} ${i.level} errored with ${t.details}, retrying loading ${o+1}/${l.maxNumRetry} in ${r}ms`),n.resolved=!0,this.retryDate=self.performance.now()+r,this.state=Qa}else if(l&&n){if(this.resetFragmentErrors(e),!(o.5;r&&this.reduceMaxBufferLength(i.len);const s=!r;return s&&this.warn(`Buffer full error while media.currentTime is not buffered, flush ${t} buffer`),e.frag&&(this.fragmentTracker.removeFragment(e.frag),this.nextLoadPosition=e.frag.start),this.resetLoadingState(),s}return!1}resetFragmentErrors(e){e===cn&&(this.fragCurrent=null),this.loadedmetadata||(this.startFragRequested=!1),this.state!==Ya&&(this.state=qa)}afterBufferFlushed(e,t,i){if(!e)return;const r=xa.getBuffered(e);this.fragmentTracker.detectEvictedFragments(t,r,i),this.state===to&&this.resetLoadingState()}resetLoadingState(){this.log("Reset loading state"),this.fragCurrent=null,this.fragPrevious=null,this.state=qa}resetStartWhenNotLoaded(e){if(!this.loadedmetadata){this.startFragRequested=!1;const t=e?e.details:null;null!=t&&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,i,r){var s;const n=i.details;if(!n)return void this.warn("level.details undefined");if(!Object.keys(e.elementaryStreams).reduce(((t,s)=>{const a=e.elementaryStreams[s];if(a){const o=a.endPTS-a.startPTS;if(o<=0)return this.warn(`Could not parse fragment ${e.sn} ${s} duration reliably (${o})`),t||!1;const l=r?0:Bn(n,e,a.startPTS,a.endPTS,a.startDTS,a.endDTS);return this.hls.trigger(tr.LEVEL_PTS_UPDATED,{details:n,level:i,drift:l,type:s,frag:e,start:a.startPTS,end:a.endPTS}),!0}return t}),!1)&&null===(null==(s=this.transmuxer)?void 0:s.error)){const t=new Error(`Found no media in fragment ${e.sn} of level ${e.level} resetting transmuxer to fallback to playlist timing`);if(0===i.fragmentError&&(i.fragmentError++,e.gap=!0,this.fragmentTracker.removeFragment(e),this.fragmentTracker.fragBuffered(e,!0)),this.warn(t.message),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.FRAG_PARSING_ERROR,fatal:!1,error:t,frag:e,reason:`Found no media in msn ${e.sn} of level "${i.url}"`}),!this.hls)return;this.resetTransmuxer()}this.state=eo,this.hls.trigger(tr.FRAG_PARSED,{frag:e,part:t})}resetTransmuxer(){this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null)}recoverWorkerError(e){"demuxerWorker"===e.event&&(this.fragmentTracker.removeAllFragments(),this.resetTransmuxer(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState())}set state(e){const t=this._state;t!==e&&(this._state=e,this.log(`${t}->${e}`))}get state(){return this._state}}class ao{constructor(){this.chunks=[],this.dataLength=0}push(e){this.chunks.push(e),this.dataLength+=e.length}flush(){const{chunks:e,dataLength:t}=this;let i;return e.length?(i=1===e.length?e[0]:function(e,t){const i=new Uint8Array(t);let r=0;for(let t=0;t0&&a.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:r,type:En,duration:Number.POSITIVE_INFINITY});s{if(Ji(e))return 90*e;return 9e4*t+(i?9e4*i.baseTime/i.timescale:0)};function co(e,t){return 255===e[t]&&240==(246&e[t+1])}function uo(e,t){return 1&e[t+1]?7:9}function fo(e,t){return(3&e[t+3])<<11|e[t+4]<<3|(224&e[t+5])>>>5}function go(e,t){return t+1=e.length)return!1;const r=fo(e,t);if(r<=i)return!1;const s=t+r;return s===e.length||go(e,s)}return!1}function po(e,t,i,r,s){if(!e.samplerate){const n=function(e,t,i,r){let s,n,a,o;const l=navigator.userAgent.toLowerCase(),h=r,c=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];s=1+((192&t[i+2])>>>6);const d=(60&t[i+2])>>>2;if(!(d>c.length-1))return a=(1&t[i+2])<<2,a|=(192&t[i+3])>>>6,lr.log(`manifest codec:${r}, ADTS type:${s}, samplingIndex:${d}`),/firefox/i.test(l)?d>=6?(s=5,o=new Array(4),n=d-3):(s=2,o=new Array(2),n=d):-1!==l.indexOf("android")?(s=2,o=new Array(2),n=d):(s=5,o=new Array(4),r&&(-1!==r.indexOf("mp4a.40.29")||-1!==r.indexOf("mp4a.40.5"))||!r&&d>=6?n=d-3:((r&&-1!==r.indexOf("mp4a.40.2")&&(d>=6&&1===a||/vivaldi/i.test(l))||!r&&1===a)&&(s=2,o=new Array(2)),n=d)),o[0]=s<<3,o[0]|=(14&d)>>1,o[1]|=(1&d)<<7,o[1]|=a<<3,5===s&&(o[1]|=(14&n)>>1,o[2]=(1&n)<<7,o[2]|=8,o[3]=0),{config:o,samplerate:c[d],channelCount:a,codec:"mp4a.40."+s,manifestCodec:h};{const t=new Error(`invalid ADTS sampling index:${d}`);e.emit(tr.ERROR,tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.FRAG_PARSING_ERROR,fatal:!0,error:t,reason:t.message})}}(t,i,r,s);if(!n)return;e.config=n.config,e.samplerate=n.samplerate,e.channelCount=n.channelCount,e.codec=n.codec,e.manifestCodec=n.manifestCodec,lr.log(`parsed codec:${e.codec}, rate:${n.samplerate}, channels:${n.channelCount}`)}}function vo(e){return 9216e4/e}function yo(e,t,i,r,s){const n=r+s*vo(e.samplerate),a=function(e,t){const i=uo(e,t);if(t+i<=e.length){const r=fo(e,t)-i;if(r>0)return{headerLength:i,frameLength:r}}}(t,i);let o;if(a){const{frameLength:r,headerLength:s}=a,l=s+r,h=Math.max(0,i+l-t.length);h?(o=new Uint8Array(l-s),o.set(t.subarray(i+s,t.length),0)):o=t.subarray(i+s,i+l);const c={unit:o,pts:n};return h||e.samples.push(c),{sample:c,length:l,missing:h}}const l=t.length-i;o=new Uint8Array(l),o.set(t.subarray(i,t.length),0);return{sample:{unit:o,pts:n},length:l,missing:-1}}let To=null;const Eo=[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],So=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],bo=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],Lo=[0,1,1,4];function wo(e,t,i,r,s){if(i+24>t.length)return;const n=Ao(t,i);if(n&&i+n.frameLength<=t.length){const a=r+s*(9e4*n.samplesPerFrame/n.sampleRate),o={unit:t.subarray(i,i+n.frameLength),pts:a,dts:a};return e.config=[],e.channelCount=n.channelCount,e.samplerate=n.sampleRate,e.samples.push(o),{sample:o,length:n.frameLength,missing:0}}}function Ao(e,t){const i=e[t+1]>>3&3,r=e[t+1]>>1&3,s=e[t+2]>>4&15,n=e[t+2]>>2&3;if(1!==i&&0!==s&&15!==s&&3!==n){const a=e[t+2]>>1&1,o=e[t+3]>>6,l=1e3*Eo[14*(3===i?3-r:3===r?3:4)+s-1],h=So[3*(3===i?0:2===i?1:2)+n],c=3===o?1:2,d=bo[i][r],u=Lo[r],f=8*d*u,g=Math.floor(d*l/h+a)*u;if(null===To){const e=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);To=e?parseInt(e[1]):0}return!!To&&To<=87&&2===r&&l>=224e3&&0===o&&(e[t+3]=128|e[t+3]),{sampleRate:h,channelCount:c,frameLength:g,samplesPerFrame:f}}}function Ro(e,t){return!(255!==e[t]||224&~e[t+1]||!(6&e[t+1]))}function ko(e,t){return t+1{let i=0,r=5;t+=r;const s=new Uint32Array(1),n=new Uint32Array(1),a=new Uint8Array(1);for(;r>0;){a[0]=e[t];const o=Math.min(r,8),l=8-o;n[0]=4278190080>>>24+l<>l,i=i?i<t.length)return-1;if(11!==t[i]||119!==t[i+1])return-1;const n=t[i+4]>>6;if(n>=3)return-1;const a=[48e3,44100,32e3][n],o=63&t[i+4],l=2*[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][3*o+n];if(i+l>t.length)return-1;const h=t[i+6]>>5;let c=0;2===h?c+=2:(1&h&&1!==h&&(c+=2),4&h&&(c+=2));const d=(t[i+6]<<8|t[i+7])>>12-c&1,u=[2,1,2,3,3,4,4,5][h]+d,f=t[i+5]>>3,g=7&t[i+5],m=new Uint8Array([n<<6|f<<1|g>>2,(3&g)<<6|h<<3|d<<2|o>>4,o<<4&224]),p=r+s*(1536/a*9e4),v=t.subarray(i,i+l);return e.config=m,e.channelCount=u,e.samplerate=a,e.samples.push({unit:v,pts:p}),l}class Po{constructor(){this.VideoSample=null}createVideoSample(e,t,i,r){return{key:e,frame:!1,pts:t,dts:i,units:[],debug:r,length:0}}getLastNalUnit(e){var t;let i,r=this.VideoSample;if(r&&0!==r.units.length||(r=e[e.length-1]),null!=(t=r)&&t.units){const e=r.units;i=e[e.length-1]}return i}pushAccessUnit(e,t){if(e.units.length&&e.frame){if(void 0===e.pts){const i=t.samples,r=i.length;if(!r)return void t.dropped++;{const t=i[r-1];e.pts=t.pts,e.dts=t.dts}}t.samples.push(e)}e.debug.length&&lr.log(e.pts+"/"+e.dts+":"+e.debug)}}class Oo{constructor(e){this.data=void 0,this.bytesAvailable=void 0,this.word=void 0,this.bitsAvailable=void 0,this.data=e,this.bytesAvailable=e.byteLength,this.word=0,this.bitsAvailable=0}loadWord(){const e=this.data,t=this.bytesAvailable,i=e.byteLength-t,r=new Uint8Array(4),s=Math.min(4,t);if(0===s)throw new Error("no bytes available");r.set(e.subarray(i,i+s)),this.word=new DataView(r.buffer).getUint32(0),this.bitsAvailable=8*s,this.bytesAvailable-=s}skipBits(e){let t;e=Math.min(e,8*this.bytesAvailable+this.bitsAvailable),this.bitsAvailable>e?(this.word<<=e,this.bitsAvailable-=e):(t=(e-=this.bitsAvailable)>>3,e-=t<<3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)}readBits(e){let t=Math.min(this.bitsAvailable,e);const i=this.word>>>32-t;if(e>32&&lr.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=t,this.bitsAvailable>0)this.word<<=t;else{if(!(this.bytesAvailable>0))throw new Error("no bits available");this.loadWord()}return t=e-t,t>0&&this.bitsAvailable?i<>>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(){const e=this.skipLZ();return this.readBits(e+1)-1}readEG(){const e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){return this.readBits(8)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}skipScalingList(e){let t,i=8,r=8;for(let s=0;s{var n;switch(r.type){case 1:{let t=!1;a=!0;const s=r.data;if(l&&s.length>4){const e=new Oo(s).readSliceType();2!==e&&4!==e&&7!==e&&9!==e||(t=!0)}var h;if(t)null!=(h=o)&&h.frame&&!o.key&&(this.pushAccessUnit(o,e),o=this.VideoSample=null);o||(o=this.VideoSample=this.createVideoSample(!0,i.pts,i.dts,"")),o.frame=!0,o.key=t;break}case 5:a=!0,null!=(n=o)&&n.frame&&!o.key&&(this.pushAccessUnit(o,e),o=this.VideoSample=null),o||(o=this.VideoSample=this.createVideoSample(!0,i.pts,i.dts,"")),o.key=!0,o.frame=!0;break;case 6:a=!0,Ls(r.data,1,i.pts,t.samples);break;case 7:{var c,d;a=!0,l=!0;const t=r.data,i=new Oo(t).readSPS();if(!e.sps||e.width!==i.width||e.height!==i.height||(null==(c=e.pixelRatio)?void 0:c[0])!==i.pixelRatio[0]||(null==(d=e.pixelRatio)?void 0:d[1])!==i.pixelRatio[1]){e.width=i.width,e.height=i.height,e.pixelRatio=i.pixelRatio,e.sps=[t],e.duration=s;const r=t.subarray(1,4);let n="avc1.";for(let e=0;e<3;e++){let t=r[e].toString(16);t.length<2&&(t="0"+t),n+=t}e.codec=n}break}case 8:a=!0,e.pps=[r.data];break;case 9:a=!0,e.audFound=!0,o&&this.pushAccessUnit(o,e),o=this.VideoSample=this.createVideoSample(!1,i.pts,i.dts,"");break;case 12:a=!0;break;default:a=!1,o&&(o.debug+="unknown NAL "+r.type+" ")}if(o&&a){o.units.push(r)}})),r&&o&&(this.pushAccessUnit(o,e),this.VideoSample=null)}parseAVCNALu(e,t){const i=t.byteLength;let r=e.naluState||0;const s=r,n=[];let a,o,l,h=0,c=-1,d=0;for(-1===r&&(c=0,d=31&t[0],r=0,h=1);h=0){const e={data:t.subarray(c,o),type:d};n.push(e)}else{const i=this.getLastNalUnit(e.samples);i&&(s&&h<=4-s&&i.state&&(i.data=i.data.subarray(0,i.data.byteLength-s)),o>0&&(i.data=Es(i.data,t.subarray(0,o)),i.state=0))}h=0&&r>=0){const e={data:t.subarray(c,i),type:d,state:r};n.push(e)}if(0===n.length){const i=this.getLastNalUnit(e.samples);i&&(i.data=Es(i.data,t))}return e.naluState=r,n}}class Fo{constructor(e,t,i){this.keyData=void 0,this.decrypter=void 0,this.keyData=i,this.decrypter=new ja(t,{removePKCS7Padding:!1})}decryptBuffer(e){return this.decrypter.decrypt(e,this.keyData.key.buffer,this.keyData.iv.buffer)}decryptAacSample(e,t,i){const r=e[t].unit;if(r.length<=16)return;const s=r.subarray(16,r.length-r.length%16),n=s.buffer.slice(s.byteOffset,s.byteOffset+s.length);this.decryptBuffer(n).then((s=>{const n=new Uint8Array(s);r.set(n,16),this.decrypter.isSync()||this.decryptAacSamples(e,t+1,i)}))}decryptAacSamples(e,t,i){for(;;t++){if(t>=e.length)return void i();if(!(e[t].unit.length<32)&&(this.decryptAacSample(e,t,i),!this.decrypter.isSync()))return}}getAvcEncryptedData(e){const t=16*Math.floor((e.length-48)/160)+16,i=new Int8Array(t);let r=0;for(let t=32;t{s.data=this.getAvcDecryptedUnit(n,a),this.decrypter.isSync()||this.decryptAvcSamples(e,t,i+1,r)}))}decryptAvcSamples(e,t,i,r){if(e instanceof Uint8Array)throw new Error("Cannot decrypt samples of type Uint8Array");for(;;t++,i=0){if(t>=e.length)return void r();const s=e[t].units;for(;!(i>=s.length);i++){const n=s[i];if(!(n.data.length<=48||1!==n.type&&5!==n.type||(this.decryptAvcSample(e,t,i,r,n),this.decrypter.isSync())))return}}}}const No=188;class Uo{constructor(e,t,i){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.typeSupported=i,this.videoParser=new Mo}static probe(e){const t=Uo.syncOffset(e);return t>0&&lr.warn(`MPEG2-TS detected but first sync word found @ offset ${t}`),-1!==t}static syncOffset(e){const t=e.length;let i=Math.min(940,t-No)+1,r=0;for(;r1&&(0===n&&a>2||o+No>i))return n}r++}return-1}static createTrack(e,t){return{container:"video"===e||"audio"===e?"video/mp2t":void 0,type:e,id:ss[e],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:"audio"===e?t:void 0}}resetInitSegment(e,t,i,r){this.pmtParsed=!1,this._pmtId=-1,this._videoTrack=Uo.createTrack("video"),this._audioTrack=Uo.createTrack("audio",r),this._id3Track=Uo.createTrack("id3"),this._txtTrack=Uo.createTrack("text"),this._audioTrack.segmentCodec="aac",this.aacOverFlow=null,this.remainderData=null,this.audioCodec=t,this.videoCodec=i,this._duration=r}resetTimeStamp(){}resetContiguity(){const{_audioTrack:e,_videoTrack:t,_id3Track:i}=this;e&&(e.pesData=null),t&&(t.pesData=null),i&&(i.pesData=null),this.aacOverFlow=null,this.remainderData=null}demux(e,t,i=!1,r=!1){let s;i||(this.sampleAes=null);const n=this._videoTrack,a=this._audioTrack,o=this._id3Track,l=this._txtTrack;let h=n.pid,c=n.pesData,d=a.pid,u=o.pid,f=a.pesData,g=o.pesData,m=null,p=this.pmtParsed,v=this._pmtId,y=e.length;if(this.remainderData&&(y=(e=Es(this.remainderData,e)).length,this.remainderData=null),y>4>1){if(E=t+5+e[t+4],E===t+No)continue}else E=t+4;switch(y){case h:r&&(c&&(s=Ho(c))&&this.videoParser.parseAVCPES(n,l,s,!1,this._duration),c={data:[],size:0}),c&&(c.data.push(e.subarray(E,t+No)),c.size+=t+No-E);break;case d:if(r){if(f&&(s=Ho(f)))switch(a.segmentCodec){case"aac":this.parseAACPES(a,s);break;case"mp3":this.parseMPEGPES(a,s);break;case"ac3":this.parseAC3PES(a,s)}f={data:[],size:0}}f&&(f.data.push(e.subarray(E,t+No)),f.size+=t+No-E);break;case u:r&&(g&&(s=Ho(g))&&this.parseID3PES(o,s),g={data:[],size:0}),g&&(g.data.push(e.subarray(E,t+No)),g.size+=t+No-E);break;case 0:r&&(E+=e[E]+1),v=this._pmtId=$o(e,E);break;case v:{r&&(E+=e[E]+1);const s=Go(e,E,this.typeSupported,i,this.observer);h=s.videoPid,h>0&&(n.pid=h,n.segmentCodec=s.segmentVideoCodec),d=s.audioPid,d>0&&(a.pid=d,a.segmentCodec=s.segmentAudioCodec),u=s.id3Pid,u>0&&(o.pid=u),null===m||p||(lr.warn(`MPEG-TS PMT found at ${t} after unknown PID '${m}'. Backtracking to sync byte @${T} to parse all TS packets.`),m=null,t=T-188),p=this.pmtParsed=!0;break}case 17:case 8191:break;default:m=y}}else E++;E>0&&Ko(this.observer,new Error(`Found ${E} TS packet/s that do not start with 0x47`)),n.pesData=c,a.pesData=f,o.pesData=g;const S={audioTrack:a,videoTrack:n,id3Track:o,textTrack:l};return r&&this.extractRemainingSamples(S),S}flush(){const{remainderData:e}=this;let t;return this.remainderData=null,t=e?this.demux(e,-1,!1,!0):{videoTrack:this._videoTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(t),this.sampleAes?this.decrypt(t,this.sampleAes):t}extractRemainingSamples(e){const{audioTrack:t,videoTrack:i,id3Track:r,textTrack:s}=e,n=i.pesData,a=t.pesData,o=r.pesData;let l;if(n&&(l=Ho(n))?(this.videoParser.parseAVCPES(i,s,l,!0,this._duration),i.pesData=null):i.pesData=n,a&&(l=Ho(a))){switch(t.segmentCodec){case"aac":this.parseAACPES(t,l);break;case"mp3":this.parseMPEGPES(t,l);break;case"ac3":this.parseAC3PES(t,l)}t.pesData=null}else null!=a&&a.size&&lr.log("last AAC PES packet truncated,might overlap between fragments"),t.pesData=a;o&&(l=Ho(o))?(this.parseID3PES(r,l),r.pesData=null):r.pesData=o}demuxSampleAes(e,t,i){const r=this.demux(e,i,!0,!this.config.progressive),s=this.sampleAes=new Fo(this.observer,this.config,t);return this.decrypt(r,s)}decrypt(e,t){return new Promise((i=>{const{audioTrack:r,videoTrack:s}=e;r.samples&&"aac"===r.segmentCodec?t.decryptAacSamples(r.samples,0,(()=>{s.samples?t.decryptAvcSamples(s.samples,0,0,(()=>{i(e)})):i(e)})):s.samples&&t.decryptAvcSamples(s.samples,0,0,(()=>{i(e)}))}))}destroy(){this._duration=0}parseAACPES(e,t){let i=0;const r=this.aacOverFlow;let s,n,a,o=t.data;if(r){this.aacOverFlow=null;const t=r.missing,s=r.sample.unit.byteLength;if(-1===t)o=Es(r.sample.unit,o);else{const n=s-t;r.sample.unit.set(o.subarray(0,t),n),e.samples.push(r.sample),i=r.missing}}for(s=i,n=o.length;s0;)o+=n}}parseID3PES(e,t){if(void 0===t.pts)return void lr.warn("[tsdemuxer]: ID3 PES unknown PTS");const i=Qi({},t,{type:this._videoTrack?bn:En,duration:Number.POSITIVE_INFINITY});e.samples.push(i)}}function Bo(e,t){return((31&e[t+1])<<8)+e[t+2]}function $o(e,t){return(31&e[t+10])<<8|e[t+11]}function Go(e,t,i,r,s){const n={audioPid:-1,videoPid:-1,id3Pid:-1,segmentVideoCodec:"avc",segmentAudioCodec:"aac"},a=t+3+((15&e[t+1])<<8|e[t+2])-4;for(t+=12+((15&e[t+10])<<8|e[t+11]);t0){let r=t+5,s=o;for(;s>2;){if(106===e[r])!0!==i.ac3?lr.log("AC-3 audio found, not supported in this browser for now"):(n.audioPid=a,n.segmentAudioCodec="ac3");const t=e[r+1]+2;r+=t,s-=t}}break;case 194:case 135:return Ko(s,new Error("Unsupported EC-3 in M2TS found")),n;case 36:return Ko(s,new Error("Unsupported HEVC in M2TS found")),n}t+=o+5}return n}function Ko(e,t,i){lr.warn(`parsing error: ${t.message}`),e.emit(tr.ERROR,tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.FRAG_PARSING_ERROR,fatal:!1,levelRetry:i,error:t,reason:t.message})}function Vo(e){lr.log(`${e} with AES-128-CBC encryption found in unencrypted stream`)}function Ho(e){let t,i,r,s,n,a=0;const o=e.data;if(!e||0===e.size)return null;for(;o[0].length<19&&o.length>1;)o[0]=Es(o[0],o[1]),o.splice(1,1);t=o[0];if(1===(t[0]<<16)+(t[1]<<8)+t[2]){if(i=(t[4]<<8)+t[5],i&&i>e.size-6)return null;const l=t[7];192&l&&(s=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,64&l?(n=536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2,s-n>54e5&&(lr.warn(`${Math.round((s-n)/9e4)}s delta between PTS and DTS, align them`),s=n)):n=s),r=t[8];let h=r+9;if(e.size<=h)return null;e.size-=h;const c=new Uint8Array(e.size);for(let e=0,i=o.length;ei){h-=i;continue}t=t.subarray(h),i-=h,h=0}c.set(t,a),a+=i}return i&&(i-=r+3),{data:c,pts:s,dts:n,len:i}}return null}class jo{static getSilentFrame(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)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(6===t)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])}else{if(1===t)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(2===t)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(3===t)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])}}}const Wo=Math.pow(2,32)-1;class Yo{static init(){let e;for(e in Yo.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:[]},Yo.types)Yo.types.hasOwnProperty(e)&&(Yo.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);const t=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),i=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]);Yo.HDLR_TYPES={video:t,audio:i};const r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),s=new Uint8Array([0,0,0,0,0,0,0,0]);Yo.STTS=Yo.STSC=Yo.STCO=s,Yo.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),Yo.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),Yo.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),Yo.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);const n=new Uint8Array([105,115,111,109]),a=new Uint8Array([97,118,99,49]),o=new Uint8Array([0,0,0,1]);Yo.FTYP=Yo.box(Yo.types.ftyp,n,o,n,a),Yo.DINF=Yo.box(Yo.types.dinf,Yo.box(Yo.types.dref,r))}static box(e,...t){let i=8,r=t.length;const s=r;for(;r--;)i+=t[r].byteLength;const n=new Uint8Array(i);for(n[0]=i>>24&255,n[1]=i>>16&255,n[2]=i>>8&255,n[3]=255&i,n.set(e,4),r=0,i=8;r>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,r>>24,r>>16&255,r>>8&255,255&r,85,196,0,0]))}static mdia(e){return Yo.box(Yo.types.mdia,Yo.mdhd(e.timescale,e.duration),Yo.hdlr(e.type),Yo.minf(e))}static mfhd(e){return Yo.box(Yo.types.mfhd,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e]))}static minf(e){return"audio"===e.type?Yo.box(Yo.types.minf,Yo.box(Yo.types.smhd,Yo.SMHD),Yo.DINF,Yo.stbl(e)):Yo.box(Yo.types.minf,Yo.box(Yo.types.vmhd,Yo.VMHD),Yo.DINF,Yo.stbl(e))}static moof(e,t,i){return Yo.box(Yo.types.moof,Yo.mfhd(e),Yo.traf(i,t))}static moov(e){let t=e.length;const i=[];for(;t--;)i[t]=Yo.trak(e[t]);return Yo.box.apply(null,[Yo.types.moov,Yo.mvhd(e[0].timescale,e[0].duration)].concat(i).concat(Yo.mvex(e)))}static mvex(e){let t=e.length;const i=[];for(;t--;)i[t]=Yo.trex(e[t]);return Yo.box.apply(null,[Yo.types.mvex,...i])}static mvhd(e,t){t*=e;const i=Math.floor(t/(Wo+1)),r=Math.floor(t%(Wo+1)),s=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,255&e,i>>24,i>>16&255,i>>8&255,255&i,r>>24,r>>16&255,r>>8&255,255&r,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 Yo.box(Yo.types.mvhd,s)}static sdtp(e){const t=e.samples||[],i=new Uint8Array(4+t.length);let r,s;for(r=0;r>>8&255),s.push(255&r),s=s.concat(Array.prototype.slice.call(i));for(t=0;t>>8&255),n.push(255&r),n=n.concat(Array.prototype.slice.call(i));const a=Yo.box(Yo.types.avcC,new Uint8Array([1,s[3],s[4],s[5],255,224|e.sps.length].concat(s).concat([e.pps.length]).concat(n))),o=e.width,l=e.height,h=e.pixelRatio[0],c=e.pixelRatio[1];return Yo.box(Yo.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,o>>8&255,255&o,l>>8&255,255&l,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]),a,Yo.box(Yo.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),Yo.box(Yo.types.pasp,new Uint8Array([h>>24,h>>16&255,h>>8&255,255&h,c>>24,c>>16&255,c>>8&255,255&c])))}static esds(e){const 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){const 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,255&t,0,0])}static mp4a(e){return Yo.box(Yo.types.mp4a,Yo.audioStsd(e),Yo.box(Yo.types.esds,Yo.esds(e)))}static mp3(e){return Yo.box(Yo.types[".mp3"],Yo.audioStsd(e))}static ac3(e){return Yo.box(Yo.types["ac-3"],Yo.audioStsd(e),Yo.box(Yo.types.dac3,e.config))}static stsd(e){return"audio"===e.type?"mp3"===e.segmentCodec&&"mp3"===e.codec?Yo.box(Yo.types.stsd,Yo.STSD,Yo.mp3(e)):"ac3"===e.segmentCodec?Yo.box(Yo.types.stsd,Yo.STSD,Yo.ac3(e)):Yo.box(Yo.types.stsd,Yo.STSD,Yo.mp4a(e)):Yo.box(Yo.types.stsd,Yo.STSD,Yo.avc1(e))}static tkhd(e){const t=e.id,i=e.duration*e.timescale,r=e.width,s=e.height,n=Math.floor(i/(Wo+1)),a=Math.floor(i%(Wo+1));return Yo.box(Yo.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,255&t,0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n,a>>24,a>>16&255,a>>8&255,255&a,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,r>>8&255,255&r,0,0,s>>8&255,255&s,0,0]))}static traf(e,t){const i=Yo.sdtp(e),r=e.id,s=Math.floor(t/(Wo+1)),n=Math.floor(t%(Wo+1));return Yo.box(Yo.types.traf,Yo.box(Yo.types.tfhd,new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r])),Yo.box(Yo.types.tfdt,new Uint8Array([1,0,0,0,s>>24,s>>16&255,s>>8&255,255&s,n>>24,n>>16&255,n>>8&255,255&n])),Yo.trun(e,i.length+16+20+8+16+8+8),i)}static trak(e){return e.duration=e.duration||4294967295,Yo.box(Yo.types.trak,Yo.tkhd(e),Yo.mdia(e))}static trex(e){const t=e.id;return Yo.box(Yo.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}static trun(e,t){const i=e.samples||[],r=i.length,s=12+16*r,n=new Uint8Array(s);let a,o,l,h,c,d;for(t+=8+s,n.set(["video"===e.type?1:0,0,15,1,r>>>24&255,r>>>16&255,r>>>8&255,255&r,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0),a=0;a>>24&255,l>>>16&255,l>>>8&255,255&l,h>>>24&255,h>>>16&255,h>>>8&255,255&h,c.isLeading<<2|c.dependsOn,c.isDependedOn<<6|c.hasRedundancy<<4|c.paddingValue<<1|c.isNonSync,61440&c.degradPrio,15&c.degradPrio,d>>>24&255,d>>>16&255,d>>>8&255,255&d],12+16*a);return Yo.box(Yo.types.trun,n)}static initSegment(e){Yo.types||Yo.init();const t=Yo.moov(e);return Es(Yo.FTYP,t)}}Yo.types=void 0,Yo.HDLR_TYPES=void 0,Yo.STTS=void 0,Yo.STSC=void 0,Yo.STCO=void 0,Yo.STSZ=void 0,Yo.VMHD=void 0,Yo.SMHD=void 0,Yo.STSD=void 0,Yo.FTYP=void 0,Yo.DINF=void 0;const qo=9e4;function zo(e,t,i=1,r=!1){const s=e*t*i;return r?Math.round(s):s}function Xo(e,t=!1){return zo(e,1e3,1/qo,t)}let Qo,Jo=null,Zo=null;class el{constructor(e,t,i,r=""){if(this.observer=void 0,this.config=void 0,this.typeSupported=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=i,this.ISGenerated=!1,null===Jo){const e=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);Jo=e?parseInt(e[1]):0}if(null===Zo){const e=navigator.userAgent.match(/Safari\/(\d+)/i);Zo=e?parseInt(e[1]):0}}destroy(){this.config=this.videoTrackConfig=this._initPTS=this._initDTS=null}resetTimeStamp(e){lr.log("[mp4-remuxer]: initPTS & initDTS reset"),this._initPTS=this._initDTS=e}resetNextTimestamp(){lr.log("[mp4-remuxer]: reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1}resetInitSegment(){lr.log("[mp4-remuxer]: ISGenerated flag reset"),this.ISGenerated=!1,this.videoTrackConfig=void 0}getVideoStartPts(e){let t=!1;const i=e.reduce(((e,i)=>{const r=i.pts-e;return r<-4294967296?(t=!0,tl(e,i.pts)):r>0?e:i.pts}),e[0].pts);return t&&lr.debug("PTS rollover detected"),i}remux(e,t,i,r,s,n,a,o){let l,h,c,d,u,f,g=s,m=s;const p=e.pid>-1,v=t.pid>-1,y=t.samples.length,T=e.samples.length>0,E=a&&y>0||y>1;if((!p||T)&&(!v||E)||this.ISGenerated||a){if(this.ISGenerated){var S,b,L,w;const e=this.videoTrackConfig;!e||t.width===e.width&&t.height===e.height&&(null==(S=t.pixelRatio)?void 0:S[0])===(null==(b=e.pixelRatio)?void 0:b[0])&&(null==(L=t.pixelRatio)?void 0:L[1])===(null==(w=e.pixelRatio)?void 0:w[1])||this.resetInitSegment()}else c=this.generateIS(e,t,s,n);const i=this.isVideoContiguous;let r,a=-1;if(E&&(a=function(e){for(let t=0;t0){lr.warn(`[mp4-remuxer]: Dropped ${a} out of ${y} video samples due to a missing keyframe`);const e=this.getVideoStartPts(t.samples);t.samples=t.samples.slice(a),t.dropped+=a,m+=(t.samples[0].pts-e)/t.inputTimeScale,r=m}else-1===a&&(lr.warn(`[mp4-remuxer]: No keyframe found out of ${y} video samples`),f=!1);if(this.ISGenerated){if(T&&E){const i=this.getVideoStartPts(t.samples),r=(tl(e.samples[0].pts,i)-i)/t.inputTimeScale;g+=Math.max(0,r),m+=Math.max(0,-r)}if(T){if(e.samplerate||(lr.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"),c=this.generateIS(e,t,s,n)),h=this.remuxAudio(e,g,this.isAudioContiguous,n,v||E||o===cn?m:void 0),E){const r=h?h.endPTS-h.startPTS:0;t.inputTimeScale||(lr.warn("[mp4-remuxer]: regenerate InitSegment as video detected"),c=this.generateIS(e,t,s,n)),l=this.remuxVideo(t,m,i,r)}}else E&&(l=this.remuxVideo(t,m,i,0));l&&(l.firstKeyFrame=a,l.independent=-1!==a,l.firstKeyFramePTS=r)}}return this.ISGenerated&&this._initPTS&&this._initDTS&&(i.samples.length&&(u=il(i,s,this._initPTS,this._initDTS)),r.samples.length&&(d=rl(r,s,this._initPTS))),{audio:h,video:l,initSegment:c,independent:f,text:d,id3:u}}generateIS(e,t,i,r){const s=e.samples,n=t.samples,a=this.typeSupported,o={},l=this._initPTS;let h,c,d,u=!l||r,f="audio/mp4";if(u&&(h=c=1/0),e.config&&s.length){switch(e.timescale=e.samplerate,e.segmentCodec){case"mp3":a.mpeg?(f="audio/mpeg",e.codec=""):a.mp3&&(e.codec="mp3");break;case"ac3":e.codec="ac-3"}o.audio={id:"audio",container:f,codec:e.codec,initSegment:"mp3"===e.segmentCodec&&a.mpeg?new Uint8Array(0):Yo.initSegment([e]),metadata:{channelCount:e.channelCount}},u&&(d=e.inputTimeScale,l&&d===l.timescale?u=!1:h=c=s[0].pts-Math.round(d*i))}if(t.sps&&t.pps&&n.length){if(t.timescale=t.inputTimeScale,o.video={id:"main",container:"video/mp4",codec:t.codec,initSegment:Yo.initSegment([t]),metadata:{width:t.width,height:t.height}},u)if(d=t.inputTimeScale,l&&d===l.timescale)u=!1;else{const e=this.getVideoStartPts(n),t=Math.round(d*i);c=Math.min(c,tl(n[0].dts,e)-t),h=Math.min(h,e-t)}this.videoTrackConfig={width:t.width,height:t.height,pixelRatio:t.pixelRatio}}if(Object.keys(o).length)return this.ISGenerated=!0,u?(this._initPTS={baseTime:h,timescale:d},this._initDTS={baseTime:c,timescale:d}):h=d=void 0,{tracks:o,initPTS:h,timescale:d}}remuxVideo(e,t,i,r){const s=e.inputTimeScale,n=e.samples,a=[],o=n.length,l=this._initPTS;let h,c,d=this.nextAvcDts,u=8,f=this.videoSampleDuration,g=Number.POSITIVE_INFINITY,m=Number.NEGATIVE_INFINITY,p=!1;if(!i||null===d){const e=t*s,r=n[0].pts-tl(n[0].dts,n[0].pts);Jo&&null!==d&&Math.abs(e-r-d)<15e3?i=!0:d=e-r}const v=l.baseTime*s/l.timescale;for(let e=0;e0?e-1:e].dts&&(p=!0)}p&&n.sort((function(e,t){const i=e.dts-t.dts,r=e.pts-t.pts;return i||r})),h=n[0].dts,c=n[n.length-1].dts;const y=c-h,T=y?Math.round(y/(o-1)):f||e.inputTimeScale/30;if(i){const e=h-d,i=e>T,r=e<-1;if((i||r)&&(i?lr.warn(`AVC: ${Xo(e,!0)} ms (${e}dts) hole between fragments detected at ${t.toFixed(3)}`):lr.warn(`AVC: ${Xo(-e,!0)} ms (${e}dts) overlapping between fragments detected at ${t.toFixed(3)}`),!r||d>=n[0].pts||Jo)){h=d;const t=n[0].pts-e;if(i)n[0].dts=h,n[0].pts=t;else for(let i=0;it);i++)n[i].dts-=e,n[i].pts-=e;lr.log(`Video: Initial PTS/DTS adjusted: ${Xo(t,!0)}/${Xo(h,!0)}, delta: ${Xo(e,!0)} ms`)}}h=Math.max(0,h);let E=0,S=0,b=h;for(let e=0;e0?t.dts-n[e-1].dts:T;if(l=e>0?t.pts-n[e-1].pts:T,i.stretchShortVideoTrack&&null!==this.nextAudioPts){const e=Math.floor(i.maxBufferHole*s),n=(r?g+r*s:this.nextAudioPts)-t.pts;n>e?(f=n-a,f<0?f=a:R=!0,lr.log(`[mp4-remuxer]: It is approximately ${n/90} ms to the next segment; using duration ${f/90} ms for the last video frame.`)):f=a}else f=a}const c=Math.round(t.pts-t.dts);k=Math.min(k,f),D=Math.max(D,f),_=Math.min(_,l),x=Math.max(x,l),a.push(new sl(t.key,f,h,c))}if(a.length)if(Jo){if(Jo<70){const e=a[0].flags;e.dependsOn=2,e.isNonSync=0}}else if(Zo&&x-_0&&(r&&Math.abs(p-m)<9e3||Math.abs(tl(f[0].pts-v,p)-m)<20*l),f.forEach((function(e){e.pts=tl(e.pts-v,p)})),!i||m<0){if(f=f.filter((e=>e.pts>=0)),!f.length)return;m=0===s?0:r&&!u?Math.max(0,p):f[0].pts}if("aac"===e.segmentCodec){const t=this.config.maxAudioFramesDrift;for(let i=0,r=m;i=t*l&&h<1e4&&u){let t=Math.round(o/l);r=a-t*l,r<0&&(t--,r+=l),0===i&&(this.nextAudioPts=m=r),lr.warn(`[mp4-remuxer]: Injecting ${t} audio frame @ ${(r/n).toFixed(3)}s due to ${Math.round(1e3*o/n)} ms gap.`);for(let n=0;n0))return;S+=g;try{y=new Uint8Array(S)}catch(e){return void this.observer.emit(tr.ERROR,tr.ERROR,{type:ir.MUX_ERROR,details:rr.REMUX_ALLOC_ERROR,fatal:!1,error:e,bytes:S,reason:`fail allocating audio mdat ${S}`})}if(!c){new DataView(y.buffer).setUint32(0,S),y.set(Yo.types.mdat,4)}}y.set(s,g);const l=s.byteLength;g+=l,d.push(new sl(!0,o,l,0)),E=n}const L=d.length;if(!L)return;const w=d[d.length-1];this.nextAudioPts=m=E+a*w.duration;const A=c?new Uint8Array(0):Yo.moof(e.sequenceNumber++,T/a,Qi({},e,{samples:d}));e.samples=[];const R=T/n,k=m/n,_={data1:A,data2:y,startPTS:R,endPTS:k,startDTS:R,endDTS:k,type:"audio",hasAudio:!0,hasVideo:!1,nb:L};return this.isAudioContiguous=!0,_}remuxEmptyAudio(e,t,i,r){const s=e.inputTimeScale,n=s/(e.samplerate?e.samplerate:s),a=this.nextAudioPts,o=this._initDTS,l=9e4*o.baseTime/o.timescale,h=(null!==a?a:r.startDTS*s)+l,c=r.endDTS*s+l,d=1024*n,u=Math.ceil((c-h)/d),f=jo.getSilentFrame(e.manifestCodec||e.codec,e.channelCount);if(lr.warn("[mp4-remuxer]: remux empty Audio"),!f)return void lr.trace("[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec");const g=[];for(let e=0;e4294967296;)e+=i;return e}function il(e,t,i,r){const s=e.samples.length;if(!s)return;const n=e.inputTimeScale;for(let a=0;ae.pts-t.pts));const n=e.samples;return e.samples=[],{samples:n}}class sl{constructor(e,t,i,r){this.size=void 0,this.duration=void 0,this.cts=void 0,this.flags=void 0,this.duration=t,this.size=i,this.cts=r,this.flags={isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:e?2:1,isNonSync:e?0:1}}}function nl(e,t){const i=null==e?void 0:e.codec;if(i&&i.length>4)return i;if(t===mr){if("ec-3"===i||"ac-3"===i||"alac"===i)return i;if("fLaC"===i||"Opus"===i){return Vs(i,!1)}const e="mp4a.40.5";return lr.info(`Parsed audio codec "${i}" or audio object type not handled. Using "${e}"`),e}return lr.warn(`Unhandled video codec "${i}"`),"hvc1"===i||"hev1"===i?"hvc1.1.6.L120.90":"av01"===i?"av01.0.04M.08":"avc1.42e01e"}try{Qo=self.performance.now.bind(self.performance)}catch(e){lr.debug("Unable to use Performance API on this environment"),Qo=null==Ar?void 0:Ar.Date.now}const al=[{demux: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,i,r){const s=this.videoTrack=oo("video",1),n=this.audioTrack=oo("audio",1),a=this.txtTrack=oo("text",1);if(this.id3Track=oo("id3",1),this.timeOffset=0,null==e||!e.byteLength)return;const o=fs(e);if(o.video){const{id:e,timescale:t,codec:i}=o.video;s.id=e,s.timescale=a.timescale=t,s.codec=i}if(o.audio){const{id:e,timescale:t,codec:i}=o.audio;n.id=e,n.timescale=t,n.codec=i}a.id=ss.text,s.sampleDuration=0,s.duration=n.duration=r}resetContiguity(){this.remainderData=null}static probe(e){return function(e){const t=e.byteLength;for(let i=0;i8&&109===e[i+4]&&111===e[i+5]&&111===e[i+6]&&102===e[i+7])return!0;i=r>1?i+r:t}return!1}(e)}demux(e,t){this.timeOffset=t;let i=e;const r=this.videoTrack,s=this.txtTrack;if(this.config.progressive){this.remainderData&&(i=Es(this.remainderData,e));const t=function(e){const t={valid:null,remainder:null},i=ds(e,["moof"]);if(i.length<2)return t.remainder=e,t;const r=i[i.length-1];return t.valid=Nr(e,0,r.byteOffset-8),t.remainder=Nr(e,r.byteOffset-8),t}(i);this.remainderData=t.remainder,r.samples=t.valid||new Uint8Array}else r.samples=i;const n=this.extractID3Track(r,t);return s.samples=Ss(t,r),{videoTrack:r,audioTrack:this.audioTrack,id3Track:n,textTrack:this.txtTrack}}flush(){const e=this.timeOffset,t=this.videoTrack,i=this.txtTrack;t.samples=this.remainderData||new Uint8Array,this.remainderData=null;const r=this.extractID3Track(t,this.timeOffset);return i.samples=Ss(e,t),{videoTrack:t,audioTrack:oo(),id3Track:r,textTrack:oo()}}extractID3Track(e,t){const i=this.id3Track;if(e.samples.length){const r=ds(e.samples,["emsg"]);r&&r.forEach((e=>{const r=function(e){const t=e[0];let i="",r="",s=0,n=0,a=0,o=0,l=0,h=0;if(0===t){for(;"\0"!==ns(e.subarray(h,h+1));)i+=ns(e.subarray(h,h+1)),h+=1;for(i+=ns(e.subarray(h,h+1)),h+=1;"\0"!==ns(e.subarray(h,h+1));)r+=ns(e.subarray(h,h+1)),h+=1;r+=ns(e.subarray(h,h+1)),h+=1,s=os(e,12),n=os(e,16),o=os(e,20),l=os(e,24),h=28}else if(1===t){h+=4,s=os(e,h),h+=4;const t=os(e,h);h+=4;const n=os(e,h);for(h+=4,a=2**32*t+n,Zi(a)||(a=Number.MAX_SAFE_INTEGER,lr.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")),o=os(e,h),h+=4,l=os(e,h),h+=4;"\0"!==ns(e.subarray(h,h+1));)i+=ns(e.subarray(h,h+1)),h+=1;for(i+=ns(e.subarray(h,h+1)),h+=1;"\0"!==ns(e.subarray(h,h+1));)r+=ns(e.subarray(h,h+1)),h+=1;r+=ns(e.subarray(h,h+1)),h+=1}return{schemeIdUri:i,value:r,timeScale:s,presentationTime:a,presentationTimeDelta:n,eventDuration:o,id:l,payload:e.subarray(h,e.byteLength)}}(e);if(Do.test(r.schemeIdUri)){const e=Ji(r.presentationTime)?r.presentationTime/r.timeScale:t+r.presentationTimeDelta/r.timeScale;let s=4294967295===r.eventDuration?Number.POSITIVE_INFINITY:r.eventDuration/r.timeScale;s<=.001&&(s=Number.POSITIVE_INFINITY);const n=r.payload;i.samples.push({data:n,len:n.byteLength,dts:e,pts:e,type:bn,duration:s})}}))}return i}demuxSampleAes(e,t,i){return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))}destroy(){}},remux: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,i,r){this.audioCodec=t,this.videoCodec=i,this.generateInitSegment(function(e,t){if(!e||!t)return e;const i=t.keyId;i&&t.isCommonEncryption&&ds(e,["moov","trak"]).forEach((e=>{const t=ds(e,["mdia","minf","stbl","stsd"])[0].subarray(8);let r=ds(t,["enca"]);const s=r.length>0;s||(r=ds(t,["encv"])),r.forEach((e=>{ds(s?e.subarray(28):e.subarray(78),["sinf"]).forEach((e=>{const t=ys(e);if(t){const e=t.subarray(8,24);e.some((e=>0!==e))||(lr.log(`[eme] Patching keyId in 'enc${s?"a":"v"}>sinf>>tenc' box: ${ts(e)} -> ${ts(i)}`),t.set(i,8))}}))}))}));return e}(e,r)),this.emitInitSegment=!0}generateInitSegment(e){let{audioCodec:t,videoCodec:i}=this;if(null==e||!e.byteLength)return this.initTracks=void 0,void(this.initData=void 0);const r=this.initData=fs(e);r.audio&&(t=nl(r.audio,mr)),r.video&&(i=nl(r.video,pr));const s={};r.audio&&r.video?s.audiovideo={container:"video/mp4",codec:t+","+i,initSegment:e,id:"main"}:r.audio?s.audio={container:"audio/mp4",codec:t,initSegment:e,id:"audio"}:r.video?s.video={container:"video/mp4",codec:i,initSegment:e,id:"main"}:lr.warn("[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes."),this.initTracks=s}remux(e,t,i,r,s,n){var a,o;let{initPTS:l,lastEndTime:h}=this;const c={audio:void 0,video:void 0,text:r,id3:i,initSegment:void 0};Ji(h)||(h=this.lastEndTime=s||0);const d=t.samples;if(null==d||!d.length)return c;const u={initPTS:void 0,timescale:1};let f=this.initData;if(null!=(a=f)&&a.length||(this.generateInitSegment(d),f=this.initData),null==(o=f)||!o.length)return lr.warn("[passthrough-remuxer.ts]: Failed to generate initSegment."),c;this.emitInitSegment&&(u.tracks=this.initTracks,this.emitInitSegment=!1);const g=function(e,t){let i=0,r=0,s=0;const n=ds(e,["moof","traf"]);for(let e=0;ee+t.info.duration||0),0);i=Math.max(i,e+n.earliestPresentationTime/n.timescale),r=i-t}}if(r&&Ji(r))return r}return r||s}(d,f),m=function(e,t){return ds(t,["moof","traf"]).reduce(((t,i)=>{const r=ds(i,["tfdt"])[0],s=r[0],n=ds(i,["tfhd"]).reduce(((t,i)=>{const n=os(i,4),a=e[n];if(a){let e=os(r,4);if(1===s){if(e===is)return lr.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time"),t;e*=is+1,e+=os(r,8)}const i=e/(a.timescale||9e4);if(Ji(i)&&(null===t||is}(l,p,s,g)||u.timescale!==l.timescale&&n)&&(u.initPTS=p-s,l&&1===l.timescale&&lr.warn("Adjusting initPTS by "+(u.initPTS-l.baseTime)),this.initPTS=l={baseTime:u.initPTS,timescale:1});const v=e?p-l.baseTime/l.timescale:h,y=v+g;!function(e,t,i){ds(t,["moof","traf"]).forEach((t=>{ds(t,["tfhd"]).forEach((r=>{const s=os(r,4),n=e[s];if(!n)return;const a=n.timescale||9e4;ds(t,["tfdt"]).forEach((e=>{const t=e[0],r=i*a;if(r){let i=os(e,4);if(0===t)i-=r,i=Math.max(i,0),cs(e,4,i);else{i*=Math.pow(2,32),i+=os(e,8),i-=r,i=Math.max(i,0);const t=Math.floor(i/(is+1)),s=Math.floor(i%(is+1));cs(e,4,t),cs(e,8,s)}}}))}))}))}(f,d,l.baseTime/l.timescale),g>0?this.lastEndTime=y:(lr.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());const T=!!f.audio,E=!!f.video;let S="";T&&(S+="audio"),E&&(S+="video");const b={data1:d,startPTS:v,startDTS:v,endPTS:y,endDTS:y,type:S,hasAudio:T,hasVideo:E,nb:1,dropped:0};return c.audio="audio"===b.type?b:void 0,c.video="audio"!==b.type?b:void 0,c.initSegment=u,c.id3=il(i,s,l,l),r.samples.length&&(c.text=rl(r,s,l)),c}}},{demux:Uo,remux:el},{demux:class extends lo{constructor(e,t){super(),this.observer=void 0,this.config=void 0,this.observer=e,this.config=t}resetInitSegment(e,t,i,r){super.resetInitSegment(e,t,i,r),this._audioTrack={container:"audio/adts",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"aac",samples:[],manifestCodec:t,duration:r,inputTimeScale:9e4,dropped:0}}static probe(e){if(!e)return!1;const t=$r(e,0);let i=(null==t?void 0:t.length)||0;if(_o(e,i))return!1;for(let t=e.length;i0&&null!=(null==t?void 0:t.key)&&null!==t.iv&&null!=t.method&&(i=t);return i}(n,t);if(T&&"AES-128"===T.method){const e=this.getDecrypter();if(!e.isSync())return this.decryptionPromise=e.webCryptoDecrypt(n,T.key.buffer,T.iv.buffer).then((e=>{const t=this.push(e,null,i);return this.decryptionPromise=null,t})),this.decryptionPromise;{let t=e.softwareDecrypt(n,T.key.buffer,T.iv.buffer);if(i.part>-1&&(t=e.flush()),!t)return s.executeEnd=Qo(),ll(i);n=new Uint8Array(t)}}const E=this.needsProbing(h,c);if(E){const e=this.configureTransmuxer(n);if(e)return lr.warn(`[transmuxer] ${e.message}`),this.observer.emit(tr.ERROR,tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.FRAG_PARSING_ERROR,fatal:!1,error:e,reason:e.message}),s.executeEnd=Qo(),ll(i)}(h||c||f||E)&&this.resetInitSegment(y,g,m,v,t),(h||f||E)&&this.resetInitialTimestamp(p),l||this.resetContiguity();const S=this.transmux(n,T,u,d,i),b=this.currentTransmuxState;return b.contiguous=!0,b.discontinuity=!1,b.trackSwitch=!1,s.executeEnd=Qo(),S}flush(e){const t=e.transmuxing;t.executeStart=Qo();const{decrypter:i,currentTransmuxState:r,decryptionPromise:s}=this;if(s)return s.then((()=>this.flush(e)));const n=[],{timeOffset:a}=r;if(i){const t=i.flush();t&&n.push(this.push(t,null,e))}const{demuxer:o,remuxer:l}=this;if(!o||!l)return t.executeEnd=Qo(),[ll(e)];const h=o.flush(a);return hl(h)?h.then((t=>(this.flushRemux(n,t,e),n))):(this.flushRemux(n,h,e),n)}flushRemux(e,t,i){const{audioTrack:r,videoTrack:s,id3Track:n,textTrack:a}=t,{accurateTimeOffset:o,timeOffset:l}=this.currentTransmuxState;lr.log(`[transmuxer.ts]: Flushed fragment ${i.sn}${i.part>-1?" p: "+i.part:""} of level ${i.level}`);const h=this.remuxer.remux(r,s,n,a,l,o,!0,this.id);e.push({remuxResult:h,chunkMeta:i}),i.transmuxing.executeEnd=Qo()}resetInitialTimestamp(e){const{demuxer:t,remuxer:i}=this;t&&i&&(t.resetTimeStamp(e),i.resetTimeStamp(e))}resetContiguity(){const{demuxer:e,remuxer:t}=this;e&&t&&(e.resetContiguity(),t.resetNextTimestamp())}resetInitSegment(e,t,i,r,s){const{demuxer:n,remuxer:a}=this;n&&a&&(n.resetInitSegment(e,t,i,r),a.resetInitSegment(e,t,i,s))}destroy(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)}transmux(e,t,i,r,s){let n;return n=t&&"SAMPLE-AES"===t.method?this.transmuxSampleAes(e,t,i,r,s):this.transmuxUnencrypted(e,i,r,s),n}transmuxUnencrypted(e,t,i,r){const{audioTrack:s,videoTrack:n,id3Track:a,textTrack:o}=this.demuxer.demux(e,t,!1,!this.config.progressive);return{remuxResult:this.remuxer.remux(s,n,a,o,t,i,!1,this.id),chunkMeta:r}}transmuxSampleAes(e,t,i,r,s){return this.demuxer.demuxSampleAes(e,t,i).then((e=>({remuxResult:this.remuxer.remux(e.audioTrack,e.videoTrack,e.id3Track,e.textTrack,i,r,!1,this.id),chunkMeta:s})))}configureTransmuxer(e){const{config:t,observer:i,typeSupported:r,vendor:s}=this;let n;for(let t=0,i=al.length;t({remuxResult:{},chunkMeta:e});function hl(e){return"then"in e&&e.then instanceof Function}class cl{constructor(e,t,i,r,s){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=i,this.duration=r,this.defaultInitPts=s||null}}class dl{constructor(e,t,i,r,s,n){this.discontinuity=void 0,this.contiguous=void 0,this.accurateTimeOffset=void 0,this.trackSwitch=void 0,this.timeOffset=void 0,this.initSegmentChange=void 0,this.discontinuity=e,this.contiguous=t,this.accurateTimeOffset=i,this.trackSwitch=r,this.timeOffset=s,this.initSegmentChange=n}}var ul={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,i="~";function r(){}function s(e,t,i){this.fn=e,this.context=t,this.once=i||!1}function n(e,t,r,n,a){if("function"!=typeof r)throw new TypeError("The listener must be a function");var o=new s(r,n||e,a),l=i?i+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function a(e,t){0==--e._eventsCount?e._events=new r:delete e._events[t]}function o(){this._events=new r,this._eventsCount=0}Object.create&&(r.prototype=Object.create(null),(new r).__proto__||(i=!1)),o.prototype.eventNames=function(){var e,r,s=[];if(0===this._eventsCount)return s;for(r in e=this._events)t.call(e,r)&&s.push(i?r.slice(1):r);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},o.prototype.listeners=function(e){var t=i?i+e:e,r=this._events[t];if(!r)return[];if(r.fn)return[r.fn];for(var s=0,n=r.length,a=new Array(n);s{(t=t||{}).frag=this.frag,t.id=this.id,e===tr.ERROR&&(this.error=t.error),this.hls.trigger(e,t)};this.observer=new fl,this.observer.on(tr.FRAG_DECRYPTED,n),this.observer.on(tr.ERROR,n);const a=Os(s.preferManagedMediaSource)||{isTypeSupported:()=>!1},o={mpeg:a.isTypeSupported("audio/mpeg"),mp3:a.isTypeSupported('audio/mp4; codecs="mp3"'),ac3:a.isTypeSupported('audio/mp4; codecs="ac-3"')};if(this.useWorker&&"undefined"!=typeof Worker){if(s.workerPath||"function"==typeof __HLS_WORKER_BUNDLE__){try{s.workerPath?(lr.log(`loading Web Worker ${s.workerPath} for "${t}"`),this.workerContext=function(e){const t=new self.URL(e,self.location.href).href;return{worker:new self.Worker(t),scriptURL:t}}(s.workerPath)):(lr.log(`injecting Web Worker for "${t}"`),this.workerContext=function(){const e=new self.Blob([`var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(${__HLS_WORKER_BUNDLE__.toString()})(true);`],{type:"text/javascript"}),t=self.URL.createObjectURL(e);return{worker:new self.Worker(t),objectURL:t}}()),this.onwmsg=e=>this.onWorkerMessage(e);const{worker:e}=this.workerContext;e.addEventListener("message",this.onwmsg),e.onerror=e=>{const i=new Error(`${e.message} (${e.filename}:${e.lineno})`);s.enableWorker=!1,lr.warn(`Error in "${t}" Web Worker, fallback to inline`),this.hls.trigger(tr.ERROR,{type:ir.OTHER_ERROR,details:rr.INTERNAL_EXCEPTION,fatal:!1,event:"demuxerWorker",error:i})},e.postMessage({cmd:"init",typeSupported:o,vendor:"",id:t,config:JSON.stringify(s)})}catch(e){lr.warn(`Error setting up "${t}" Web Worker, fallback to inline`,e),this.resetWorker(),this.error=null,this.transmuxer=new ol(this.observer,o,s,"",t)}return}}this.transmuxer=new ol(this.observer,o,s,"",t)}resetWorker(){if(this.workerContext){const{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{const e=this.transmuxer;e&&(e.destroy(),this.transmuxer=null)}const e=this.observer;e&&e.removeAllListeners(),this.frag=null,this.observer=null,this.hls=null}push(e,t,i,r,s,n,a,o,l,h){var c,d;l.transmuxing.start=self.performance.now();const{transmuxer:u}=this,f=n?n.start:s.start,g=s.decryptdata,m=this.frag,p=!(m&&s.cc===m.cc),v=!(m&&l.level===m.level),y=m?l.sn-m.sn:-1,T=this.part?l.part-this.part.index:-1,E=0===y&&l.id>1&&l.id===(null==m?void 0:m.stats.chunkCount),S=!v&&(1===y||0===y&&(1===T||E&&T<=0)),b=self.performance.now();(v||y||0===s.stats.parsing.start)&&(s.stats.parsing.start=b),!n||!T&&S||(n.stats.parsing.start=b);const L=!(m&&(null==(c=s.initSegment)?void 0:c.url)===(null==(d=m.initSegment)?void 0:d.url)),w=new dl(p,S,o,v,f,L);if(!S||p||L){lr.log(`[transmuxer-interface, ${s.type}]: Starting new transmux session for sn: ${l.sn} p: ${l.part} level: ${l.level} id: ${l.id}\n discontinuity: ${p}\n trackSwitch: ${v}\n contiguous: ${S}\n accurateTimeOffset: ${o}\n timeOffset: ${f}\n initSegmentChange: ${L}`);const e=new cl(i,r,t,a,h);this.configureTransmuxer(e)}if(this.frag=s,this.part=n,this.workerContext)this.workerContext.worker.postMessage({cmd:"demux",data:e,decryptdata:g,chunkMeta:l,state:w},e instanceof ArrayBuffer?[e]:[]);else if(u){const t=u.push(e,g,l,w);hl(t)?(u.async=!0,t.then((e=>{this.handleTransmuxComplete(e)})).catch((e=>{this.transmuxerError(e,l,"transmuxer-interface push error")}))):(u.async=!1,this.handleTransmuxComplete(t))}}flush(e){e.transmuxing.start=self.performance.now();const{transmuxer:t}=this;if(this.workerContext)this.workerContext.worker.postMessage({cmd:"flush",chunkMeta:e});else if(t){let i=t.flush(e);hl(i)||t.async?(hl(i)||(i=Promise.resolve(i)),i.then((t=>{this.handleFlushResult(t,e)})).catch((t=>{this.transmuxerError(t,e,"transmuxer-interface flush error")}))):this.handleFlushResult(i,e)}}transmuxerError(e,t,i){this.hls&&(this.error=e,this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.FRAG_PARSING_ERROR,chunkMeta:t,frag:this.frag||void 0,fatal:!1,error:e,err:e,reason:i}))}handleFlushResult(e,t){e.forEach((e=>{this.handleTransmuxComplete(e)})),this.onFlush(t)}onWorkerMessage(e){const t=e.data;if(null==t||!t.event)return void lr.warn("worker message received with no "+(t?"event name":"data"));const i=this.hls;if(this.hls)switch(t.event){case"init":{var r;const e=null==(r=this.workerContext)?void 0:r.objectURL;e&&self.URL.revokeObjectURL(e);break}case"transmuxComplete":this.handleTransmuxComplete(t.data);break;case"flush":this.onFlush(t.data);break;case"workerLog":lr[t.data.logType]&&lr[t.data.logType](t.data.message);break;default:t.data=t.data||{},t.data.frag=this.frag,t.data.id=this.id,i.trigger(t.event,t.data)}}configureTransmuxer(e){const{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 ml(e,t){if(e.length!==t.length)return!1;for(let i=0;ie[i]!==t[i]))}function vl(e,t){return t.label.toLowerCase()===e.name.toLowerCase()&&(!t.language||t.language.toLowerCase()===(e.lang||"").toLowerCase())}class yl{constructor(e){this.buffered=void 0;const t=(t,i,r)=>{if((i>>>=0)>r-1)throw new DOMException(`Failed to execute '${t}' on 'TimeRanges': The index provided (${i}) is greater than the maximum bound (${r})`);return e[i][t]};this.buffered={get length(){return e.length},end:i=>t("end",i,e.length),start:i=>t("start",i,e.length)}}}class Tl{constructor(e){this.buffers=void 0,this.queues={video:[],audio:[],audiovideo:[]},this.buffers=e}append(e,t,i){const r=this.queues[t];r.push(e),1!==r.length||i||this.executeNext(t)}insertAbort(e,t){this.queues[t].unshift(e),this.executeNext(t)}appendBlocker(e){let t;const i=new Promise((e=>{t=e})),r={execute:t,onStart:()=>{},onComplete:()=>{},onError:()=>{}};return this.append(r,e),i}executeNext(e){const t=this.queues[e];if(t.length){const i=t[0];try{i.execute()}catch(t){lr.warn(`[buffer-operation-queue]: Exception executing "${e}" SourceBuffer operation: ${t}`),i.onError(t);const r=this.buffers[e];null!=r&&r.updating||this.shiftAndExecuteNext(e)}}}shiftAndExecuteNext(e){this.queues[e].shift(),this.executeNext(e)}current(e){return this.queues[e][0]}}const El=/(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/;function Sl(e){const t=e.querySelectorAll("source");[].slice.call(t).forEach((t=>{e.removeChild(t)}))} +/** + * + * This code was ported from the dash.js project at: + * https://github.com/Dash-Industry-Forum/dash.js/blob/development/externals/cea608-parser.js + * https://github.com/Dash-Industry-Forum/dash.js/commit/8269b26a761e0853bb21d78780ed945144ecdd4d#diff-71bc295a2d6b6b7093a1d3290d53a4b2 + * + * The original copyright appears below: + * + * The copyright in this software is being made available under the BSD License, + * included below. This software may be subject to other third party and contributor + * rights, including patent rights, and no such rights are granted under this license. + * + * Copyright (c) 2015-2016, DASH Industry Forum. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * 2. Neither the name of Dash Industry Forum nor the names of its + * contributors may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +const bl={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},Ll=e=>String.fromCharCode(bl[e]||e),wl=15,Al=100,Rl={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},kl={17:2,18:4,21:6,22:8,23:10,19:13,20:15},_l={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},Dl={25:2,26:4,29:6,30:8,31:10,27:13,28:15},xl=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];class Cl{constructor(){this.time=null,this.verboseLevel=0}log(e,t){if(this.verboseLevel>=e){const i="function"==typeof t?t():t;lr.log(`${this.time} [${e}] ${i}`)}}}const Il=function(e){const t=[];for(let i=0;iAl&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=Al)}moveCursor(e){const t=this.pos+e;if(e>1)for(let e=this.pos+1;e=144&&this.backSpace();const t=Ll(e);this.pos>=Al?this.logger.log(0,(()=>"Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!")):(this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1))}clearFromPos(e){let t;for(t=e;t"pacData = "+JSON.stringify(e)));let t=e.row-1;if(this.nrRollUpRows&&t"bkgData = "+JSON.stringify(e))),this.backSpace(),this.setPen(e),this.insertChar(32)}setRollUpRows(e){this.nrRollUpRows=e}rollUp(){if(null===this.nrRollUpRows)return void this.logger.log(3,"roll_up but nrRollUpRows not set yet");this.logger.log(1,(()=>this.getDisplayText()));const e=this.currRow+1-this.nrRollUpRows,t=this.rows.splice(e,1)[0];t.clear(),this.rows.splice(this.currRow,0,t),this.logger.log(2,"Rolling up")}getDisplayText(e){e=e||!1;const t=[];let i="",r=-1;for(let i=0;i0&&(i=e?"["+t.join(" | ")+"]":t.join("\n")),i}getTextAndFormat(){return this.rows}}class Nl{constructor(e,t,i){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 Fl(i),this.nonDisplayedMemory=new Fl(i),this.lastOutputScreen=new Fl(i),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=i}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],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)),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)}insertChars(e){for(let t=0;tt+": "+this.writeScreen.getDisplayText(!0))),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(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"),"MODE_TEXT"!==this.mode&&(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"),"MODE_POP-ON"===this.mode){const e=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=e,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,(()=>"DISP: "+this.displayedMemory.getDisplayText()))}this.outputDataUpdate(!0)}ccTO(e){this.logger.log(2,"TO("+e+") - Tab Offset"),this.writeScreen.moveCursor(e)}ccMIDROW(e){const t={flash:!1};if(t.underline=e%2==1,t.italics=e>=46,t.italics)t.foreground="white";else{const i=Math.floor(e/2)-16,r=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=r[i]}this.logger.log(2,"MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)}outputDataUpdate(e=!1){const t=this.logger.time;null!==t&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?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.cueStartTime=t,this.lastOutputScreen.copy(this.displayedMemory))}cueSplitAtTime(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))}}class Ul{constructor(e,t,i){this.channels=void 0,this.currentChannel=0,this.cmdHistory={a:null,b:null},this.logger=void 0;const r=this.logger=new Cl;this.channels=[null,new Nl(e,t,r),new Nl(e+1,i,r)]}getHandler(e){return this.channels[e].getHandler()}setHandler(e,t){this.channels[e].setHandler(t)}addData(e,t){this.logger.time=e;for(let e=0;e"["+Il([t[e],t[e+1]])+"] -> ("+Il([i,r])+")"));const a=this.cmdHistory;if(i>=16&&i<=31){if($l(i,r,a)){Bl(null,null,a),this.logger.log(3,(()=>"Repeated command ("+Il([i,r])+") is dropped"));continue}Bl(i,r,this.cmdHistory),s=this.parseCmd(i,r),s||(s=this.parseMidrow(i,r)),s||(s=this.parsePAC(i,r)),s||(s=this.parseBackgroundAttributes(i,r))}else Bl(null,null,a);if(!s&&(n=this.parseChars(i,r),n)){const e=this.currentChannel;if(e&&e>0){this.channels[e].insertChars(n)}else this.logger.log(2,"No channel found yet. TEXT-MODE?")}s||n||this.logger.log(2,(()=>"Couldn't parse cleaned data "+Il([i,r])+" orig: "+Il([t[e],t[e+1]])))}}parseCmd(e,t){if(!((20===e||28===e||21===e||29===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=33&&t<=35))return!1;const i=20===e||21===e||23===e?1:2,r=this.channels[i];return 20===e||21===e||28===e||29===e?32===t?r.ccRCL():33===t?r.ccBS():34===t?r.ccAOF():35===t?r.ccAON():36===t?r.ccDER():37===t?r.ccRU(2):38===t?r.ccRU(3):39===t?r.ccRU(4):40===t?r.ccFON():41===t?r.ccRDC():42===t?r.ccTR():43===t?r.ccRTD():44===t?r.ccEDM():45===t?r.ccCR():46===t?r.ccENM():47===t&&r.ccEOC():r.ccTO(t-32),this.currentChannel=i,!0}parseMidrow(e,t){let i=0;if((17===e||25===e)&&t>=32&&t<=47){if(i=17===e?1:2,i!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;const r=this.channels[i];return!!r&&(r.ccMIDROW(t),this.logger.log(3,(()=>"MIDROW ("+Il([e,t])+")")),!0)}return!1}parsePAC(e,t){let i;if(!((e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127)&&!((16===e||24===e)&&t>=64&&t<=95))return!1;const r=e<=23?1:2;i=t>=64&&t<=95?1===r?Rl[e]:_l[e]:1===r?kl[e]:Dl[e];const s=this.channels[r];return!!s&&(s.setPAC(this.interpretPAC(i,t)),this.currentChannel=r,!0)}interpretPAC(e,t){let i;const r={color:null,italics:!1,indent:null,underline:!1,row:e};return i=t>95?t-96:t-64,r.underline=!(1&~i),i<=13?r.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(i/2)]:i<=15?(r.italics=!0,r.color="white"):r.indent=4*Math.floor((i-16)/2),r}parseChars(e,t){let i,r=null,s=null;if(e>=25?(i=2,s=e-8):(i=1,s=e),s>=17&&s<=19){let e;e=17===s?t+80:18===s?t+112:t+144,this.logger.log(2,(()=>"Special char '"+Ll(e)+"' in channel "+i)),r=[e]}else e>=32&&e<=127&&(r=0===t?[e]:[e,t]);return r&&this.logger.log(3,(()=>"Char codes = "+Il(r).join(","))),r}parseBackgroundAttributes(e,t){if(!((16===e||24===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=45&&t<=47))return!1;let i;const r={};16===e||24===e?(i=Math.floor((t-32)/2),r.background=xl[i],t%2==1&&(r.background=r.background+"_semi")):45===t?r.background="transparent":(r.foreground="black",47===t&&(r.underline=!0));const s=e<=23?1:2;return this.channels[s].setBkgData(r),!0}reset(){for(let e=0;ee)&&(this.startTime=e),this.endTime=t,this.screen=i,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}var Kl=function(){if(null!=Ar&&Ar.VTTCue)return self.VTTCue;const e=["","lr","rl"],t=["start","middle","end","left","right"];function i(e,t){if("string"!=typeof t)return!1;if(!Array.isArray(e))return!1;const i=t.toLowerCase();return!!~e.indexOf(i)&&i}function r(e){return i(t,e)}function s(e,...t){let i=1;for(;i100)throw new Error("Position must be between 0 and 100.");T=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"positionAlign",s({},l,{get:function(){return E},set:function(e){const t=r(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");E=t,this.hasBeenReset=!0}})),Object.defineProperty(o,"size",s({},l,{get:function(){return S},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");S=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"align",s({},l,{get:function(){return b},set:function(e){const t=r(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");b=t,this.hasBeenReset=!0}})),o.displayState=void 0}return n.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},n}();class Vl{decode(e,t){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))}}function Hl(e){function t(e,t,i,r){return 3600*(0|e)+60*(0|t)+(0|i)+parseFloat(r||0)}const i=e.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return i?parseFloat(i[2])>59?t(i[2],i[3],0,i[4]):t(i[1],i[2],i[3],i[4]):null}class jl{constructor(){this.values=Object.create(null)}set(e,t){this.get(e)||""===t||(this.values[e]=t)}get(e,t,i){return i?this.has(e)?this.values[e]:t[i]:this.has(e)?this.values[e]:t}has(e){return e in this.values}alt(e,t,i){for(let r=0;r=0&&i<=100)return this.set(e,i),!0}return!1}}function Wl(e,t,i,r){const s=r?e.split(r):[e];for(const e in s){if("string"!=typeof s[e])continue;const r=s[e].split(i);if(2!==r.length)continue;t(r[0],r[1])}}const Yl=new Kl(0,0,""),ql="middle"===Yl.align?"middle":"center";function zl(e,t,i){const r=e;function s(){const t=Hl(e);if(null===t)throw new Error("Malformed timestamp: "+r);return e=e.replace(/^[^\sa-zA-Z-]+/,""),t}function n(){e=e.replace(/^\s+/,"")}if(n(),t.startTime=s(),n(),"--\x3e"!==e.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+r);e=e.slice(3),n(),t.endTime=s(),n(),function(e,t){const r=new jl;Wl(e,(function(e,t){let s;switch(e){case"region":for(let s=i.length-1;s>=0;s--)if(i[s].id===t){r.set(e,i[s].region);break}break;case"vertical":r.alt(e,t,["rl","lr"]);break;case"line":s=t.split(","),r.integer(e,s[0]),r.percent(e,s[0])&&r.set("snapToLines",!1),r.alt(e,s[0],["auto"]),2===s.length&&r.alt("lineAlign",s[1],["start",ql,"end"]);break;case"position":s=t.split(","),r.percent(e,s[0]),2===s.length&&r.alt("positionAlign",s[1],["start",ql,"end","line-left","line-right","auto"]);break;case"size":r.percent(e,t);break;case"align":r.alt(e,t,["start",ql,"end","left","right"])}}),/:/,/\s/),t.region=r.get("region",null),t.vertical=r.get("vertical","");let s=r.get("line","auto");"auto"===s&&-1===Yl.line&&(s=-1),t.line=s,t.lineAlign=r.get("lineAlign","start"),t.snapToLines=r.get("snapToLines",!0),t.size=r.get("size",100),t.align=r.get("align",ql);let n=r.get("position","auto");"auto"===n&&50===Yl.position&&(n="start"===t.align||"left"===t.align?0:"end"===t.align||"right"===t.align?100:50),t.position=n}(e,t)}function Xl(e){return e.replace(//gi,"\n")}class Ql{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new Vl,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(e){const t=this;function i(){let e=t.buffer,i=0;for(e=Xl(e);i>>0).toString()};function th(e,t,i){return eh(e.toString())+eh(t.toString())+eh(i)}function ih(e,t,i,r,s,n,a){const o=new Ql,l=Jr(new Uint8Array(e)).trim().replace(Jl,"\n").split("\n"),h=[],c=t?function(e,t=1){return zo(e,qo,1/t)}(t.baseTime,t.timescale):0;let d,u="00:00.000",f=0,g=0,m=!0;o.oncue=function(e){const n=i[r];let a=i.ccOffset;const o=(f-c)/9e4;if(null!=n&&n.new&&(void 0!==g?a=i.ccOffset=n.start:function(e,t,i){let r=e[t],s=e[r.prevCC];if(!s||!s.new&&r.new)return e.ccOffset=e.presentationOffset=r.start,void(r.new=!1);for(;null!=(n=s)&&n.new;){var n;e.ccOffset+=r.start-s.start,r.new=!1,r=s,s=e[r.prevCC]}e.presentationOffset=i}(i,r,o)),o){if(!t)return void(d=new Error("Missing initPTS for VTT MPEGTS"));a=o-i.presentationOffset}const l=e.endTime-e.startTime,u=tl(9e4*(e.startTime+a-g),9e4*s)/9e4;e.startTime=Math.max(u,0),e.endTime=Math.max(u+l,0);const m=e.text.trim();e.text=decodeURIComponent(encodeURIComponent(m)),e.id||(e.id=th(e.startTime,e.endTime,m)),e.endTime>0&&h.push(e)},o.onparsingerror=function(e){d=e},o.onflush=function(){d?a(d):n(h)},l.forEach((e=>{if(m){if(Zl(e,"X-TIMESTAMP-MAP=")){m=!1,e.slice(16).split(",").forEach((e=>{Zl(e,"LOCAL:")?u=e.slice(6):Zl(e,"MPEGTS:")&&(f=parseInt(e.slice(7)))}));try{g=function(e){let t=parseInt(e.slice(-3));const i=parseInt(e.slice(-6,-4)),r=parseInt(e.slice(-9,-7)),s=e.length>9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!(Ji(t)&&Ji(i)&&Ji(r)&&Ji(s)))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${e}`);return t+=1e3*i,t+=6e4*r,t+=36e5*s,t}(u)/1e3}catch(e){d=e}return}""===e&&(m=!1)}o.parse(e+"\n")})),o.flush()}const rh="stpp.ttml.im1t",sh=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,nh=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,ah={left:"start",center:"center",right:"end",start:"start",end:"end"};function oh(e,t,i,r){const s=ds(new Uint8Array(e),["mdat"]);if(0===s.length)return void r(new Error("Could not parse IMSC1 mdat"));const n=s.map((e=>Jr(e))),a=function(e,t,i=1,r=!1){return zo(e,t,1/i,r)}(t.baseTime,1,t.timescale);try{n.forEach((e=>i(function(e,t){const i=(new DOMParser).parseFromString(e,"text/xml"),r=i.getElementsByTagName("tt")[0];if(!r)throw new Error("Invalid ttml");const s={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},n=Object.keys(s).reduce(((e,t)=>(e[t]=r.getAttribute(`ttp:${t}`)||s[t],e)),{}),a="preserve"!==r.getAttribute("xml:space"),o=hh(lh(r,"styling","style")),l=hh(lh(r,"layout","region")),h=lh(r,"body","[begin]");return[].map.call(h,(e=>{const i=ch(e,a);if(!i||!e.hasAttribute("begin"))return null;const r=fh(e.getAttribute("begin"),n),s=fh(e.getAttribute("dur"),n);let h=fh(e.getAttribute("end"),n);if(null===r)throw uh(e);if(null===h){if(null===s)throw uh(e);h=r+s}const c=new Kl(r-t,h-t,i);c.id=th(c.startTime,c.endTime,c.text);const d=function(e,t,i){const r="http://www.w3.org/ns/ttml#styling";let s=null;const n=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],a=null!=e&&e.hasAttribute("style")?e.getAttribute("style"):null;a&&i.hasOwnProperty(a)&&(s=i[a]);return n.reduce(((i,n)=>{const a=dh(t,r,n)||dh(e,r,n)||dh(s,r,n);return a&&(i[n]=a),i}),{})}(l[e.getAttribute("region")],o[e.getAttribute("style")],o),{textAlign:u}=d;if(u){const e=ah[u];e&&(c.lineAlign=e),c.align=u}return Qi(c,d),c})).filter((e=>null!==e))}(e,a))))}catch(e){r(e)}}function lh(e,t,i){const r=e.getElementsByTagName(t)[0];return r?[].slice.call(r.querySelectorAll(i)):[]}function hh(e){return e.reduce(((e,t)=>{const i=t.getAttribute("xml:id");return i&&(e[i]=t),e}),{})}function ch(e,t){return[].slice.call(e.childNodes).reduce(((e,i,r)=>{var s;return"br"===i.nodeName&&r?e+"\n":null!=(s=i.childNodes)&&s.length?ch(i,t):t?e+i.textContent.trim().replace(/\s+/g," "):e+i.textContent}),"")}function dh(e,t,i){return e&&e.hasAttributeNS(t,i)?e.getAttributeNS(t,i):null}function uh(e){return new Error(`Could not parse ttml timestamp ${e}`)}function fh(e,t){if(!e)return null;let i=Hl(e);return null===i&&(sh.test(e)?i=function(e,t){const i=sh.exec(e),r=(0|i[4])+(0|i[5])/t.subFrameRate;return 3600*(0|i[1])+60*(0|i[2])+(0|i[3])+r/t.frameRate}(e,t):nh.test(e)&&(i=function(e,t){const i=nh.exec(e),r=Number(i[1]);switch(i[2]){case"h":return 3600*r;case"m":return 60*r;case"ms":return 1e3*r;case"f":return r/t.frameRate;case"t":return r/t.tickRate}return r}(e,t))),i}function gh(e){return e.characteristics&&/transcribes-spoken-dialog/gi.test(e.characteristics)&&/describes-music-and-sound/gi.test(e.characteristics)?"captions":"subtitles"}function mh(e,t){return!!e&&e.kind===gh(t)&&vl(t,e)}class ph{constructor(e){this.hls=void 0,this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=e,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}setStreamController(e){this.streamController=e}destroy(){this.hls&&this.unregisterListener(),this.timer&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null}registerListeners(){const{hls:e}=this;e.on(tr.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.on(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){const{hls:e}=this;e.off(tr.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(e,t){const i=this.hls.levels[t.droppedLevel];this.isLevelAllowed(i)&&this.restrictedLevels.push({bitrate:i.bitrate,height:i.height,width:i.width})}onMediaAttaching(e,t){this.media=t.media instanceof HTMLVideoElement?t.media:null,this.clientRect=null,this.timer&&this.hls.levels.length&&this.detectPlayerSize()}onManifestParsed(e,t){const i=this.hls;this.restrictedLevels=[],this.firstLevel=t.firstLevel,i.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onLevelsUpdated(e,t){this.timer&&Ji(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)return void(this.clientRect=null);const e=this.hls.levels;if(e.length){const t=this.hls,i=this.getMaxLevel(e.length-1);i!==this.autoLevelCapping&&lr.log(`Setting autoLevelCapping to ${i}: ${e[i].height}p@${e[i].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),t.autoLevelCapping=i,t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}}getMaxLevel(e){const t=this.hls.levels;if(!t.length)return-1;const i=t.filter(((t,i)=>this.isLevelAllowed(t)&&i<=e));return this.clientRect=null,ph.getMaxLevelByMediaSize(i,this.mediaWidth,this.mediaHeight)}startCapping(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())}stopCapping(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)}getDimensions(){if(this.clientRect)return this.clientRect;const e=this.media,t={width:0,height:0};if(e){const i=e.getBoundingClientRect();t.width=i.width,t.height=i.height,t.width||t.height||(t.width=i.right-i.left||e.width||0,t.height=i.bottom-i.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(e){}return e}isLevelAllowed(e){return!this.restrictedLevels.some((t=>e.bitrate===t.bitrate&&e.width===t.width&&e.height===t.height))}static getMaxLevelByMediaSize(e,t,i){if(null==e||!e.length)return-1;let r=e.length-1;const s=Math.max(t,i);for(let t=0;t=s||i.height>=s)&&(n=i,!(a=e[t+1])||n.width!==a.width||n.height!==a.height)){r=t;break}}var n,a;return r}}const vh="[eme]";class yh{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=yh.CDMCleanupPromise?[yh.CDMCleanupPromise]:[],this.onMediaEncrypted=this._onMediaEncrypted.bind(this),this.onWaitingForKey=this._onWaitingForKey.bind(this),this.debug=lr.debug.bind(lr,vh),this.log=lr.log.bind(lr,vh),this.warn=lr.warn.bind(lr,vh),this.error=lr.error.bind(lr,vh),this.hls=e,this.config=e.config,this.registerListeners()}destroy(){this.unregisterListeners(),this.onMediaDetached();const 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(tr.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(tr.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this)}unregisterListeners(){this.hls.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(tr.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this)}getLicenseServerUrl(e){const{drmSystems:t,widevineLicenseUrl:i}=this.config,r=t[e];if(r)return r.licenseUrl;if(e===Rr.WIDEVINE&&i)return i;throw new Error(`no license server URL configured for key-system "${e}"`)}getServerCertificateUrl(e){const{drmSystems:t}=this.config,i=t[e];if(i)return i.serverCertificateUrl;this.log(`No Server Certificate in config.drmSystems["${e}"]`)}attemptKeySystemAccess(e){const t=this.hls.levels,i=(e,t,i)=>!!e&&i.indexOf(e)===t,r=t.map((e=>e.audioCodec)).filter(i),s=t.map((e=>e.videoCodec)).filter(i);return r.length+s.length===0&&s.push("avc1.42e01e"),new Promise(((t,i)=>{const n=e=>{const a=e.shift();this.getMediaKeysPromise(a,r,s).then((e=>t({keySystem:a,mediaKeys:e}))).catch((t=>{e.length?n(e):i(t instanceof Th?t:new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_ACCESS,error:t,fatal:!0},t.message))}))};n(e)}))}requestMediaKeySystemAccess(e,t){const{requestMediaKeySystemAccessFunc:i}=this.config;if("function"!=typeof i){let e=`Configured requestMediaKeySystemAccess is not a function ${i}`;return null===Mr&&"http:"===self.location.protocol&&(e=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`),Promise.reject(new Error(e))}return i(e,t)}getMediaKeysPromise(e,t,i){const r=function(e,t,i,r){let s;switch(e){case Rr.FAIRPLAY:s=["cenc","sinf"];break;case Rr.WIDEVINE:case Rr.PLAYREADY:s=["cenc"];break;case Rr.CLEARKEY:s=["cenc","keyids"];break;default:throw new Error(`Unknown key-system: ${e}`)}return function(e,t,i,r){return[{initDataTypes:e,persistentState:r.persistentState||"optional",distinctiveIdentifier:r.distinctiveIdentifier||"optional",sessionTypes:r.sessionTypes||[r.sessionType||"temporary"],audioCapabilities:t.map((e=>({contentType:`audio/mp4; codecs="${e}"`,robustness:r.audioRobustness||"",encryptionScheme:r.audioEncryptionScheme||null}))),videoCapabilities:i.map((e=>({contentType:`video/mp4; codecs="${e}"`,robustness:r.videoRobustness||"",encryptionScheme:r.videoEncryptionScheme||null})))}]}(s,t,i,r)}(e,t,i,this.config.drmSystemOptions),s=this.keySystemAccessPromises[e];let n=null==s?void 0:s.keySystemAccess;if(!n){this.log(`Requesting encrypted media "${e}" key-system access with config: ${JSON.stringify(r)}`),n=this.requestMediaKeySystemAccess(e,r);const t=this.keySystemAccessPromises[e]={keySystemAccess:n};return n.catch((t=>{this.log(`Failed to obtain access to key-system "${e}": ${t}`)})),n.then((i=>{this.log(`Access for key-system "${i.keySystem}" obtained`);const r=this.fetchServerCertificate(e);return this.log(`Create media-keys for "${e}"`),t.mediaKeys=i.createMediaKeys().then((t=>(this.log(`Media-keys created for "${e}"`),r.then((i=>i?this.setMediaKeysServerCertificate(t,e,i):t))))),t.mediaKeys.catch((t=>{this.error(`Failed to create media-keys for "${e}"}: ${t}`)})),t.mediaKeys}))}return n.then((()=>s.mediaKeys))}createMediaKeySessionContext({decryptdata:e,keySystem:t,mediaKeys:i}){this.log(`Creating key-system session "${t}" keyId: ${ts(e.keyId||[])}`);const r=i.createSession(),s={decryptdata:e,keySystem:t,mediaKeys:i,mediaKeysSession:r,keyStatus:"status-pending"};return this.mediaKeySessions.push(s),s}renewKeySession(e){const t=e.decryptdata;if(t.pssh){const i=this.createMediaKeySessionContext(e),r=this.getKeyIdString(t),s="cenc";this.keyIdToKeySessionPromise[r]=this.generateRequestWithPreferredKeySession(i,s,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(null===e.keyId)throw new Error("keyId is null");return ts(e.keyId)}updateKeySession(e,t){var i;const r=e.mediaKeysSession;return this.log(`Updating key-session "${r.sessionId}" for keyID ${ts((null==(i=e.decryptdata)?void 0:i.keyId)||[])}\n } (data length: ${t?t.byteLength:t})`),r.update(t)}selectKeySystemFormat(e){const t=Object.keys(e.levelkeys||{});return this.keyFormatPromise||(this.log(`Selecting key-system from fragment (sn: ${e.sn} ${e.type}: ${e.level}) key formats ${t.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(t)),this.keyFormatPromise}getKeyFormatPromise(e){return new Promise(((t,i)=>{const r=Or(this.config),s=e.map(Cr).filter((e=>!!e&&-1!==r.indexOf(e)));return this.getKeySystemSelectionPromise(s).then((({keySystem:e})=>{const r=Pr(e);r?t(r):i(new Error(`Unable to find format for key-system "${e}"`))})).catch(i)}))}loadKey(e){const t=e.keyInfo.decryptdata,i=this.getKeyIdString(t),r=`(keyId: ${i} format: "${t.keyFormat}" method: ${t.method} uri: ${t.uri})`;this.log(`Starting session for key ${r}`);let s=this.keyIdToKeySessionPromise[i];return s||(s=this.keyIdToKeySessionPromise[i]=this.getKeySystemForKeyPromise(t).then((({keySystem:i,mediaKeys:s})=>(this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${e.frag.sn} ${e.frag.type}: ${e.frag.level} using key ${r}`),this.attemptSetMediaKeys(i,s).then((()=>{this.throwIfDestroyed();const e=this.createMediaKeySessionContext({keySystem:i,mediaKeys:s,decryptdata:t});return this.generateRequestWithPreferredKeySession(e,"cenc",t.pssh,"playlist-key")}))))),s.catch((e=>this.handleError(e)))),s}throwIfDestroyed(e="Invalid state"){if(!this.hls)throw new Error("invalid state")}handleError(e){this.hls&&(this.error(e.message),e instanceof Th?this.hls.trigger(tr.ERROR,e.data):this.hls.trigger(tr.ERROR,{type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_KEYS,error:e,fatal:!0}))}getKeySystemForKeyPromise(e){const t=this.getKeyIdString(e),i=this.keyIdToKeySessionPromise[t];if(!i){const t=Cr(e.keyFormat),i=t?[t]:Or(this.config);return this.attemptKeySystemAccess(i)}return i}getKeySystemSelectionPromise(e){if(e.length||(e=Or(this.config)),0===e.length)throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.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){const{initDataType:t,initData:i}=e;if(this.debug(`"${e.type}" event: init data type: "${t}"`),null===i)return;let r,s;if("sinf"===t&&this.config.drmSystems[Rr.FAIRPLAY]){const e=ns(new Uint8Array(i));try{const t=br(JSON.parse(e).sinf),i=ys(new Uint8Array(t));if(!i)return;r=i.subarray(8,24),s=Rr.FAIRPLAY}catch(e){return void this.warn('Failed to parse sinf "encrypted" event message initData')}}else{const e=function(e){if(!(e instanceof ArrayBuffer)||e.byteLength<32)return null;const t={version:0,systemId:"",kids:null,data:null},i=new DataView(e),r=i.getUint32(0);if(e.byteLength!==r&&r>44)return null;if(1886614376!==i.getUint32(4))return null;if(t.version=i.getUint32(8)>>>24,t.version>1)return null;t.systemId=ts(new Uint8Array(e,12,16));const s=i.getUint32(28);if(0===t.version){if(r-32this.generateRequestWithPreferredKeySession(s,t,i,"encrypted-event-key-match")));break}}l||(l=a[n]=this.getKeySystemSelectionPromise([s]).then((({keySystem:e,mediaKeys:s})=>{var a;this.throwIfDestroyed();const o=new ks("ISO-23001-7",n,null!=(a=Pr(e))?a:"");return o.pssh=new Uint8Array(i),o.keyId=r,this.attemptSetMediaKeys(e,s).then((()=>{this.throwIfDestroyed();const r=this.createMediaKeySessionContext({decryptdata:o,keySystem:e,mediaKeys:s});return this.generateRequestWithPreferredKeySession(r,t,i,"encrypted-event-no-match")}))}))),l.catch((e=>this.handleError(e)))}_onWaitingForKey(e){this.log(`"${e.type}" event`)}attemptSetMediaKeys(e,t){const i=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${e}"`);const r=Promise.all(i).then((()=>{if(!this.media)throw new Error("Attempted to set mediaKeys without media element attached");return this.media.setMediaKeys(t)}));return this.setMediaKeysQueue.push(r),r.then((()=>{this.log(`Media-keys set for "${e}"`),i.push(r),this.setMediaKeysQueue=this.setMediaKeysQueue.filter((e=>-1===i.indexOf(e)))}))}generateRequestWithPreferredKeySession(e,t,i,r){var s,n;const a=null==(s=this.config.drmSystems)||null==(n=s[e.keySystem])?void 0:n.generateRequest;if(a)try{const r=a.call(this.hls,t,i,e);if(!r)throw new Error("Invalid response from configured generateRequest filter");t=r.initDataType,i=e.decryptdata.pssh=r.initData?new Uint8Array(r.initData):null}catch(e){var o;if(this.warn(e.message),null!=(o=this.hls)&&o.config.debug)throw e}if(null===i)return this.log(`Skipping key-session request for "${r}" (no initData)`),Promise.resolve(e);const l=this.getKeyIdString(e.decryptdata);this.log(`Generating key-session request for "${r}": ${l} (init data type: ${t} length: ${i?i.byteLength:null})`);const h=new fl,c=e._onmessage=t=>{const i=e.mediaKeysSession;if(!i)return void h.emit("error",new Error("invalid state"));const{messageType:r,message:s}=t;this.log(`"${r}" message event for session "${i.sessionId}" message size: ${s.byteLength}`),"license-request"===r||"license-renewal"===r?this.renewLicense(e,s).catch((e=>{this.handleError(e),h.emit("error",e)})):"license-release"===r?e.keySystem===Rr.FAIRPLAY&&(this.updateKeySession(e,wr("acknowledged")),this.removeSession(e)):this.warn(`unhandled media key message type "${r}"`)},d=e._onkeystatuseschange=t=>{if(!e.mediaKeysSession)return void h.emit("error",new Error("invalid state"));this.onKeyStatusChange(e);const i=e.keyStatus;h.emit("keyStatus",i),"expired"===i&&(this.warn(`${e.keySystem} expired for key ${l}`),this.renewKeySession(e))};e.mediaKeysSession.addEventListener("message",c),e.mediaKeysSession.addEventListener("keystatuseschange",d);const u=new Promise(((e,t)=>{h.on("error",t),h.on("keyStatus",(i=>{i.startsWith("usable")?e():"output-restricted"===i?t(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,fatal:!1},"HDCP level output restricted")):"internal-error"===i?t(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_STATUS_INTERNAL_ERROR,fatal:!0},`key status changed to "${i}"`)):"expired"===i?t(new Error("key expired while generating request")):this.warn(`unhandled key status change "${i}"`)}))}));return e.mediaKeysSession.generateRequest(t,i).then((()=>{var t;this.log(`Request generated for key-session "${null==(t=e.mediaKeysSession)?void 0:t.sessionId}" keyId: ${l}`)})).catch((e=>{throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_SESSION,error:e,fatal:!1},`Error generating key-session request: ${e}`)})).then((()=>u)).catch((t=>{throw h.removeAllListeners(),this.removeSession(e),t})).then((()=>(h.removeAllListeners(),e)))}onKeyStatusChange(e){e.mediaKeysSession.keyStatuses.forEach(((t,i)=>{this.log(`key status change "${t}" for keyStatuses keyId: ${ts("buffer"in i?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):new Uint8Array(i))} session keyId: ${ts(new Uint8Array(e.decryptdata.keyId||[]))} uri: ${e.decryptdata.uri}`),e.keyStatus=t}))}fetchServerCertificate(e){const t=this.config,i=new(0,t.loader)(t),r=this.getServerCertificateUrl(e);return r?(this.log(`Fetching server certificate for "${e}"`),new Promise(((s,n)=>{const a={responseType:"arraybuffer",url:r},o=t.certLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(e,t,i,r)=>{s(e.data)},onError:(t,i,s,o)=>{n(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:s,response:qi({url:a.url,data:void 0},t)},`"${e}" certificate request failed (${r}). Status: ${t.code} (${t.text})`))},onTimeout:(t,i,s)=>{n(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:s,response:{url:a.url,data:void 0}},`"${e}" certificate request timed out (${r})`))},onAbort:(e,t,i)=>{n(new Error("aborted"))}};i.load(a,l,h)}))):Promise.resolve()}setMediaKeysServerCertificate(e,t,i){return new Promise(((r,s)=>{e.setServerCertificate(i).then((s=>{this.log(`setServerCertificate ${s?"success":"not supported by CDM"} (${null==i?void 0:i.byteLength}) on "${t}"`),r(e)})).catch((e=>{s(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:e,fatal:!0},e.message))}))}))}renewLicense(e,t){return this.requestLicense(e,new Uint8Array(t)).then((t=>this.updateKeySession(e,new Uint8Array(t)).catch((e=>{throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SESSION_UPDATE_FAILED,error:e,fatal:!0},e.message)}))))}unpackPlayReadyKeyMessage(e,t){const i=String.fromCharCode.apply(null,new Uint16Array(t.buffer));if(!i.includes("PlayReadyKeyMessage"))return e.setRequestHeader("Content-Type","text/xml; charset=utf-8"),t;const r=(new DOMParser).parseFromString(i,"application/xml"),s=r.querySelectorAll("HttpHeader");if(s.length>0){let t;for(let i=0,r=s.length;i in key message");return wr(atob(l))}setupLicenseXHR(e,t,i,r){const s=this.config.licenseXhrSetup;return s?Promise.resolve().then((()=>{if(!i.decryptdata)throw new Error("Key removed");return s.call(this.hls,e,t,i,r)})).catch((n=>{if(!i.decryptdata)throw n;return e.open("POST",t,!0),s.call(this.hls,e,t,i,r)})).then((i=>{e.readyState||e.open("POST",t,!0);return{xhr:e,licenseChallenge:i||r}})):(e.open("POST",t,!0),Promise.resolve({xhr:e,licenseChallenge:r}))}requestLicense(e,t){const i=this.config.keyLoadPolicy.default;return new Promise(((r,s)=>{const n=this.getLicenseServerUrl(e.keySystem);this.log(`Sending license request to URL: ${n}`);const a=new XMLHttpRequest;a.responseType="arraybuffer",a.onreadystatechange=()=>{if(!this.hls||!e.mediaKeysSession)return s(new Error("invalid state"));if(4===a.readyState)if(200===a.status){this._requestLicenseFailureCount=0;let t=a.response;this.log(`License received ${t instanceof ArrayBuffer?t.byteLength:t}`);const i=this.config.licenseResponseCallback;if(i)try{t=i.call(this.hls,a,n,e)}catch(e){this.error(e)}r(t)}else{const o=i.errorRetry,l=o?o.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>l||a.status>=400&&a.status<500)s(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:a,response:{url:n,data:void 0,code:a.status,text:a.statusText}},`License Request XHR failed (${n}). Status: ${a.status} (${a.statusText})`));else{const i=l-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${i} attempts left`),this.requestLicense(e,t).then(r,s)}}},e.licenseXhr&&e.licenseXhr.readyState!==XMLHttpRequest.DONE&&e.licenseXhr.abort(),e.licenseXhr=a,this.setupLicenseXHR(a,n,e,t).then((({xhr:t,licenseChallenge:i})=>{e.keySystem==Rr.PLAYREADY&&(i=this.unpackPlayReadyKeyMessage(t,i)),t.send(i)}))}))}onMediaAttached(e,t){if(!this.config.emeEnabled)return;const i=t.media;this.media=i,i.addEventListener("encrypted",this.onMediaEncrypted),i.addEventListener("waitingforkey",this.onWaitingForKey)}onMediaDetached(){const 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={},ks.clearKeyUriToKeyIdMap();const i=t.length;yh.CDMCleanupPromise=Promise.all(t.map((e=>this.removeSession(e))).concat(null==e?void 0:e.setMediaKeys(null).catch((e=>{this.log(`Could not clear media keys: ${e}`)})))).then((()=>{i&&(this.log("finished closing key sessions and clearing media keys"),t.length=0)})).catch((e=>{this.log(`Could not close sessions and clear media keys: ${e}`)}))}onManifestLoading(){this.keyFormatPromise=null}onManifestLoaded(e,{sessionKeys:t}){if(t&&this.config.emeEnabled&&!this.keyFormatPromise){const e=t.reduce(((e,t)=>(-1===e.indexOf(t.keyFormat)&&e.push(t.keyFormat),e)),[]);this.log(`Selecting key-system from session-keys ${e.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(e)}}removeSession(e){const{mediaKeysSession:t,licenseXhr:i}=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),i&&i.readyState!==XMLHttpRequest.DONE&&i.abort(),e.mediaKeysSession=e.decryptdata=e.licenseXhr=void 0;const r=this.mediaKeySessions.indexOf(e);return r>-1&&this.mediaKeySessions.splice(r,1),t.remove().catch((e=>{this.log(`Could not remove session: ${e}`)})).then((()=>t.close())).catch((e=>{this.log(`Could not close session: ${e}`)}))}}}yh.CDMCleanupPromise=void 0;class Th 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}}var Eh,Sh,bh;!function(e){e.MANIFEST="m",e.AUDIO="a",e.VIDEO="v",e.MUXED="av",e.INIT="i",e.CAPTION="c",e.TIMED_TEXT="tt",e.KEY="k",e.OTHER="o"}(Eh||(Eh={})),function(e){e.DASH="d",e.HLS="h",e.SMOOTH="s",e.OTHER="o"}(Sh||(Sh={})),function(e){e.OBJECT="CMCD-Object",e.REQUEST="CMCD-Request",e.SESSION="CMCD-Session",e.STATUS="CMCD-Status"}(bh||(bh={}));const Lh={[bh.OBJECT]:["br","d","ot","tb"],[bh.REQUEST]:["bl","dl","mtp","nor","nrr","su"],[bh.SESSION]:["cid","pr","sf","sid","st","v"],[bh.STATUS]:["bs","rtp"]};class wh{constructor(e,t){this.value=void 0,this.params=void 0,Array.isArray(e)&&(e=e.map((e=>e instanceof wh?e:new wh(e)))),this.value=e,this.params=t}}class Ah{constructor(e){this.description=void 0,this.description=e}}const Rh="Dict";function kh(e,t,i,r){return new Error(`failed to ${e} "${s=t,Array.isArray(s)?JSON.stringify(s):s instanceof Map?"Map{}":s instanceof Set?"Set{}":"object"==typeof s?JSON.stringify(s):String(s)}" as ${i}`,{cause:r});var s}const _h="Bare Item",Dh="Boolean",xh="Byte Sequence",Ch="Decimal",Ih="Integer";const Ph=/[\x00-\x1f\x7f]+/,Oh="Token",Mh="Key";function Fh(e,t,i){return kh("serialize",e,t,i)}function Nh(e){if(!1===ArrayBuffer.isView(e))throw Fh(e,xh);return`:${t=e,btoa(String.fromCharCode(...t))}:`;var t}function Uh(e){if(function(e){return e<-999999999999999||99999999999999912)throw Fh(e,Ch);const i=t.toString();return i.includes(".")?i:`${i}.0`}const Gh="String";function Kh(e){const t=(i=e).description||i.toString().slice(7,-1);var i;if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(t))throw Fh(t,Oh);return t}function Vh(e){switch(typeof e){case"number":if(!Ji(e))throw Fh(e,_h);return Number.isInteger(e)?Uh(e):$h(e);case"string":return function(e){if(Ph.test(e))throw Fh(e,Gh);return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}(e);case"symbol":return Kh(e);case"boolean":return function(e){if("boolean"!=typeof e)throw Fh(e,Dh);return e?"?1":"?0"}(e);case"object":if(e instanceof Date)return function(e){return`@${Uh(e.getTime()/1e3)}`}(e);if(e instanceof Uint8Array)return Nh(e);if(e instanceof Ah)return Kh(e);default:throw Fh(e,_h)}}function Hh(e){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(e))throw Fh(e,Mh);return e}function jh(e){return null==e?"":Object.entries(e).map((([e,t])=>!0===t?`;${Hh(e)}`:`;${Hh(e)}=${Vh(t)}`)).join("")}function Wh(e){return e instanceof wh?`${Vh(e.value)}${jh(e.params)}`:Vh(e)}function Yh(e,t={whitespace:!0}){if("object"!=typeof e)throw Fh(e,Rh);const i=e instanceof Map?e.entries():Object.entries(e),r=null!=t&&t.whitespace?" ":"";return Array.from(i).map((([e,t])=>{t instanceof wh==!1&&(t=new wh(t));let i=Hh(e);var r;return!0===t.value?i+=jh(t.params):(i+="=",Array.isArray(t.value)?i+=`(${(r=t).value.map(Wh).join(" ")})${jh(r.params)}`:i+=Wh(t)),i})).join(`,${r}`)}const qh=e=>"ot"===e||"sf"===e||"st"===e,zh=e=>"number"==typeof e?Ji(e):null!=e&&""!==e&&!1!==e;const Xh=e=>Math.round(e),Qh=e=>100*Xh(e/100),Jh={br:Xh,d:Xh,bl:Qh,dl:Qh,mtp:Qh,nor:(e,t)=>(null!=t&&t.baseUrl&&(e=function(e,t){const i=new URL(e),r=new URL(t);if(i.origin!==r.origin)return e;const s=i.pathname.split("/").slice(1),n=r.pathname.split("/").slice(1,-1);for(;s[0]===n[0];)s.shift(),n.shift();for(;n.length;)n.shift(),s.unshift("..");return s.join("/")}(e,t.baseUrl)),encodeURIComponent(e)),rtp:Qh,tb:Xh};function Zh(e,t={}){return e?function(e,t){return Yh(e,t)}(function(e,t){const i={};if(null==e||"object"!=typeof e)return i;const r=Object.keys(e).sort(),s=Qi({},Jh,null==t?void 0:t.formatters),n=null==t?void 0:t.filter;return r.forEach((r=>{if(null!=n&&n(r))return;let a=e[r];const o=s[r];o&&(a=o(a,t)),"v"===r&&1===a||"pr"==r&&1===a||zh(a)&&(qh(r)&&"string"==typeof a&&(a=new Ah(a)),i[r]=a)})),i}(e,t),Qi({whitespace:!1},t)):""}function ec(e,t,i){return Qi(e,function(e,t={}){if(!e)return{};const i=Object.entries(e),r=Object.entries(Lh).concat(Object.entries((null==t?void 0:t.customHeaderMap)||{})),s=i.reduce(((e,t)=>{var i;const[s,n]=t,a=(null==(i=r.find((e=>e[1].includes(s))))?void 0:i[0])||bh.REQUEST;return null!=e[a]||(e[a]={}),e[a][s]=n,e}),{});return Object.entries(s).reduce(((e,[i,r])=>(e[i]=Zh(r,t),e)),{})}(t,i))}const tc="CMCD";const ic=/CMCD=[^&#]+/;function rc(e,t,i){const r=function(e,t={}){if(!e)return"";const i=Zh(e,t);return`${tc}=${encodeURIComponent(i)}`}(t,i);if(!r)return e;if(ic.test(e))return e.replace(ic,r);const s=e.includes("?")?"&":"?";return`${e}${s}${r}`}function sc(e,t,i,r){e&&Object.keys(t).forEach((s=>{const n=e.filter((e=>e.groupId===s)).map((e=>{const n=Qi({},e);return n.details=void 0,n.attrs=new dr(n.attrs),n.url=n.attrs.URI=nc(e.url,e.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",i),n.groupId=n.attrs["GROUP-ID"]=t[s],n.attrs["PATHWAY-ID"]=r,n}));e.push(...n)}))}function nc(e,t,i,r){const{HOST:s,PARAMS:n,[i]:a}=r;let o;t&&(o=null==a?void 0:a[t],o&&(e=o));const l=new self.URL(e);return s&&!o&&(l.host=s),n&&Object.keys(n).sort().forEach((e=>{e&&l.searchParams.set(e,n[e])})),l.href}const ac=/^age:\s*[\d.]+\s*$/im;class oc{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 gr,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null}abortInternal(){const e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,4!==e.readyState&&(this.stats.aborted=!0,e.abort()))}abort(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(e,t,i){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=i,this.loadInternal()}loadInternal(){const{config:e,context:t}=this;if(!e||!t)return;const i=this.loader=new self.XMLHttpRequest,r=this.stats;r.loading.first=0,r.loaded=0,r.aborted=!1;const s=this.xhrSetup;s?Promise.resolve().then((()=>{if(this.loader===i&&!this.stats.aborted)return s(i,t.url)})).catch((e=>{if(this.loader===i&&!this.stats.aborted)return i.open("GET",t.url,!0),s(i,t.url)})).then((()=>{this.loader!==i||this.stats.aborted||this.openAndSendXhr(i,t,e)})).catch((e=>{this.callbacks.onError({code:i.status,text:e.message},t,i,r)})):this.openAndSendXhr(i,t,e)}openAndSendXhr(e,t,i){e.readyState||e.open("GET",t.url,!0);const r=t.headers,{maxTimeToFirstByteMs:s,maxLoadTimeMs:n}=i.loadPolicy;if(r)for(const t in r)e.setRequestHeader(t,r[t]);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),i.timeout=s&&Ji(s)?s:n,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),i.timeout),e.send()}readystatechange(){const{context:e,loader:t,stats:i}=this;if(!e||!t)return;const r=t.readyState,s=this.config;if(!i.aborted&&r>=2&&(0===i.loading.first&&(i.loading.first=Math.max(self.performance.now(),i.loading.start),s.timeout!==s.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),s.timeout=s.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),s.loadPolicy.maxLoadTimeMs-(i.loading.first-i.loading.start)))),4===r)){self.clearTimeout(this.requestTimeout),t.onreadystatechange=null,t.onprogress=null;const r=t.status,n="text"!==t.responseType;if(r>=200&&r<300&&(n&&t.response||null!==t.responseText)){i.loading.end=Math.max(self.performance.now(),i.loading.first);const s=n?t.response:t.responseText,a="arraybuffer"===t.responseType?s.byteLength:s.length;if(i.loaded=i.total=a,i.bwEstimate=8e3*i.total/(i.loading.end-i.loading.first),!this.callbacks)return;const o=this.callbacks.onProgress;if(o&&o(i,e,s,t),!this.callbacks)return;const l={url:t.responseURL,data:s,code:r};this.callbacks.onSuccess(l,i,e,t)}else{const n=s.loadPolicy.errorRetry;Xn(n,i.retry,!1,{url:e.url,data:void 0,code:r})?this.retry(n):(lr.error(`${r} while loading ${e.url}`),this.callbacks.onError({code:r,text:t.statusText},e,t,i))}}}loadtimeout(){if(!this.config)return;const e=this.config.loadPolicy.timeoutRetry;if(Xn(e,this.stats.retry,!0))this.retry(e);else{var t;lr.warn(`timeout while loading ${null==(t=this.context)?void 0:t.url}`);const e=this.callbacks;e&&(this.abortInternal(),e.onTimeout(this.stats,this.context,this.loader))}}retry(e){const{context:t,stats:i}=this;this.retryDelay=qn(e,i.retry),i.retry++,lr.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${null==t?void 0:t.url}, retrying ${i.retry}/${e.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)}loadprogress(e){const t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)}getCacheAge(){let e=null;if(this.loader&&ac.test(this.loader.getAllResponseHeaders())){const t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.loader&&new RegExp(`^${e}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(e):null}}const lc=/(\d+)-(\d+)\/(\d+)/;class hc{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||cc,this.controller=new self.AbortController,this.stats=new gr}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(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(e,t,i){const r=this.stats;if(r.loading.start)throw new Error("Loader can only be used once.");r.loading.start=self.performance.now();const s=function(e,t){const i={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(Qi({},e.headers))};e.rangeEnd&&i.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1));return i}(e,this.controller.signal),n=i.onProgress,a="arraybuffer"===e.responseType,o=a?"byteLength":"length",{maxTimeToFirstByteMs:l,maxLoadTimeMs:h}=t.loadPolicy;this.context=e,this.config=t,this.callbacks=i,this.request=this.fetchSetup(e,s),self.clearTimeout(this.requestTimeout),t.timeout=l&&Ji(l)?l:h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(r,e,this.response)}),t.timeout),self.fetch(this.request).then((s=>{this.response=this.loader=s;const o=Math.max(self.performance.now(),r.loading.start);if(self.clearTimeout(this.requestTimeout),t.timeout=h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(r,e,this.response)}),h-(o-r.loading.start)),!s.ok){const{status:e,statusText:t}=s;throw new dc(t||"fetch, bad network response",e,s)}return r.loading.first=o,r.total=function(e){const t=e.get("Content-Range");if(t){const e=function(e){const t=lc.exec(e);if(t)return parseInt(t[2])-parseInt(t[1])+1}(t);if(Ji(e))return e}const i=e.get("Content-Length");if(i)return parseInt(i)}(s.headers)||r.total,n&&Ji(t.highWaterMark)?this.loadProgressively(s,r,e,t.highWaterMark,n):a?s.arrayBuffer():"json"===e.responseType?s.json():s.text()})).then((s=>{const a=this.response;if(!a)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),r.loading.end=Math.max(self.performance.now(),r.loading.first);const l=s[o];l&&(r.loaded=r.total=l);const h={url:a.url,data:s,code:a.status};n&&!Ji(t.highWaterMark)&&n(r,e,s,a),i.onSuccess(h,r,e,a)})).catch((t=>{if(self.clearTimeout(this.requestTimeout),r.aborted)return;const s=t&&t.code||0,n=t?t.message:null;i.onError({code:s,text:n},e,t?t.details:null,r)}))}getCacheAge(){let e=null;if(this.response){const t=this.response.headers.get("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.response?this.response.headers.get(e):null}loadProgressively(e,t,i,r=0,s){const n=new ao,a=e.body.getReader(),o=()=>a.read().then((a=>{if(a.done)return n.dataLength&&s(t,i,n.flush(),e),Promise.resolve(new ArrayBuffer(0));const l=a.value,h=l.length;return t.loaded+=h,h=r&&s(t,i,n.flush(),e)):s(t,i,l,e),o()})).catch((()=>Promise.reject()));return o()}}function cc(e,t){return new self.Request(e.url,t)}class dc extends Error{constructor(e,t,i){super(e),this.code=void 0,this.details=void 0,this.code=t,this.details=i}}const uc=/\s/,fc={newCue(e,t,i,r){const s=[];let n,a,o,l,h;const c=self.VTTCue||self.TextTrackCue;for(let u=0;u=16?l--:l++;const r=Xl(h.trim()),f=th(t,i,r);null!=e&&null!=(d=e.cues)&&d.getCueById(f)||(a=new c(t,i,r),a.id=f,a.line=u+1,a.align="left",a.position=10+Math.min(80,10*Math.floor(8*l/32)),s.push(a))}return e&&s.length&&(s.sort(((e,t)=>"auto"===e.line||"auto"===t.line?0:e.line>8&&t.line>8?t.line-e.line:e.line-t.line)),s.forEach((t=>pn(e,t)))),s}},gc=qi(qi({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:6e7,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:oc,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController: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.codecTiers=null,this.timer=-1,this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this._abandonRulesCheck=()=>{const{fragCurrent:e,partCurrent:t,hls:i}=this,{autoLevelEnabled:r,media:s}=i;if(!e||!s)return;const n=performance.now(),a=t?t.stats:e.stats,o=t?t.duration:e.duration,l=n-a.loading.start,h=i.minAutoLevel;if(a.aborted||a.loaded&&a.loaded===a.total||e.level<=h)return this.clearTimer(),void(this._nextAutoLevel=-1);if(!r||s.paused||!s.playbackRate||!s.readyState)return;const c=i.mainForwardBufferInfo;if(null===c)return;const d=this.bwEstimator.getEstimateTTFB(),u=Math.abs(s.playbackRate);if(l<=Math.max(d,o/(2*u)*1e3))return;const f=c.len/u,g=a.loading.first?a.loading.first-a.loading.start:-1,m=a.loaded&&g>-1,p=this.getBwEstimate(),v=i.levels,y=v[e.level],T=a.total||Math.max(a.loaded,Math.round(o*y.averageBitrate/8));let E=m?l-g:l;E<1&&m&&(E=Math.min(l,8*a.loaded/p));const S=m?1e3*a.loaded/E:0,b=S?(T-a.loaded)/S:8*T/p+d/1e3;if(b<=f)return;const L=S?8*S:p;let w,A=Number.POSITIVE_INFINITY;for(w=e.level-1;w>h;w--){const e=v[w].maxBitrate;if(A=this.getTimeToLoadFrag(d/1e3,L,o*e,!v[w].details),A=b)return;if(A>10*o)return;i.nextLoadLevel=i.nextAutoLevel=w,m?this.bwEstimator.sample(l-Math.min(d,g),a.loaded):this.bwEstimator.sampleTTFB(l);const R=v[w].maxBitrate;this.getBwEstimate()*this.hls.config.abrBandWidthUpFactor>R&&this.resetEstimator(R),this.clearTimer(),lr.warn(`[abr] Fragment ${e.sn}${t?" part "+t.index:""} of level ${e.level} is loading too slowly;\n Time to underbuffer: ${f.toFixed(3)} s\n Estimated load time for current fragment: ${b.toFixed(3)} s\n Estimated load time for down switch fragment: ${A.toFixed(3)} s\n TTFB estimate: ${0|g} ms\n Current BW estimate: ${Ji(p)?0|p:"Unknown"} bps\n New BW estimate: ${0|this.getBwEstimate()} bps\n Switching to level ${w} @ ${0|R} bps`),i.trigger(tr.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e,part:t,stats:a})},this.hls=e,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(e){e&&(lr.log(`setting initial bwe to ${e}`),this.hls.config.abrEwmaDefaultEstimate=e),this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){const e=this.hls.config;return new ca(e.abrEwmaSlowVoD,e.abrEwmaFastVoD,e.abrEwmaDefaultEstimate)}registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.FRAG_LOADING,this.onFragLoading,this),e.on(tr.FRAG_LOADED,this.onFragLoaded,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e&&(e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.FRAG_LOADING,this.onFragLoading,this),e.off(tr.FRAG_LOADED,this.onFragLoaded,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.off(tr.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){const i=t.frag;if(!this.ignoreFragment(i)){var r;if(!i.bitrateTest)this.fragCurrent=i,this.partCurrent=null!=(r=t.part)?r: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 rr.BUFFER_ADD_CODEC_ERROR:case rr.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case rr.FRAG_LOAD_TIMEOUT:{const e=t.frag,{fragCurrent:i,partCurrent:r}=this;if(e&&i&&e.sn===i.sn&&e.level===i.level){const t=performance.now(),i=r?r.stats:e.stats,s=t-i.loading.start,n=i.loading.first?i.loading.first-i.loading.start:-1;if(i.loaded&&n>-1){const e=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(s-Math.min(e,n),i.loaded)}else this.bwEstimator.sampleTTFB(s)}break}}}getTimeToLoadFrag(e,t,i,r){return e+i/t+(r?this.lastLevelLoadSec:0)}onLevelLoaded(e,t){const i=this.hls.config,{loading:r}=t.stats,s=r.end-r.start;Ji(s)&&(this.lastLevelLoadSec=s/1e3),t.details.live?this.bwEstimator.update(i.abrEwmaSlowLive,i.abrEwmaFastLive):this.bwEstimator.update(i.abrEwmaSlowVoD,i.abrEwmaFastVoD)}onFragLoaded(e,{frag:t,part:i}){const r=i?i.stats:t.stats;if(t.type===hn&&this.bwEstimator.sampleTTFB(r.loading.first-r.loading.start),!this.ignoreFragment(t)){if(this.clearTimer(),t.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){const e=i?i.duration:t.duration,s=this.hls.levels[t.level],n=(s.loaded?s.loaded.bytes:0)+r.loaded,a=(s.loaded?s.loaded.duration:0)+e;s.loaded={bytes:n,duration:a},s.realBitrate=Math.round(8*n/a)}if(t.bitrateTest){const e={stats:r,frag:t,part:i,id:t.type};this.onFragBuffered(tr.FRAG_BUFFERED,e),t.bitrateTest=!1}else this.lastLoadedFragLevel=t.level}}onFragBuffered(e,t){const{frag:i,part:r}=t,s=null!=r&&r.stats.loaded?r.stats:i.stats;if(s.aborted)return;if(this.ignoreFragment(i))return;const n=s.parsing.end-s.loading.start-Math.min(s.loading.first-s.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(n,s.loaded),s.bwEstimate=this.getBwEstimate(),i.bitrateTest?this.bitrateTestDelay=n/1e3:this.bitrateTestDelay=0}ignoreFragment(e){return e.type!==hn||"initSegment"===e.sn}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){const{maxAutoLevel:e,minAutoLevel:t}=this.hls,i=this.getBwEstimate(),r=this.hls.config.maxStarvationDelay,s=this.findBestLevel(i,t,e,0,r,1,1);if(s>-1)return s;const n=this.hls.firstLevel,a=Math.min(Math.max(n,t),e);return lr.warn(`[abr] Could not find best starting auto level. Defaulting to first in playlist ${n} clamped to ${a}`),a}get forcedAutoLevel(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}get nextAutoLevel(){const e=this.forcedAutoLevel,t=this.bwEstimator.canEstimate(),i=this.lastLoadedFragLevel>-1;if(!(-1===e||t&&i&&this.nextAutoLevelKey!==this.getAutoLevelKey()))return e;const r=t&&i?this.getNextABRAutoLevel():this.firstAutoLevel;if(-1!==e){const t=this.hls.levels;if(t.length>Math.max(e,r)&&t[e].loadError<=t[r].loadError)return e}return this._nextAutoLevel=r,this.nextAutoLevelKey=this.getAutoLevelKey(),r}getAutoLevelKey(){return`${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){const{fragCurrent:e,partCurrent:t,hls:i}=this,{maxAutoLevel:r,config:s,minAutoLevel:n}=i,a=t?t.duration:e?e.duration:0,o=this.getBwEstimate(),l=this.getStarvationDelay();let h=s.abrBandWidthFactor,c=s.abrBandWidthUpFactor;if(l){const e=this.findBestLevel(o,n,r,l,0,h,c);if(e>=0)return e}let d=a?Math.min(a,s.maxStarvationDelay):s.maxStarvationDelay;if(!l){const e=this.bitrateTestDelay;if(e){d=(a?Math.min(a,s.maxLoadingDelay):s.maxLoadingDelay)-e,lr.info(`[abr] bitrate test took ${Math.round(1e3*e)}ms, set first fragment max fetchDuration to ${Math.round(1e3*d)} ms`),h=c=1}}const u=this.findBestLevel(o,n,r,l,d,h,c);if(lr.info(`[abr] ${l?"rebuffering expected":"buffer is empty"}, optimal quality level ${u}`),u>-1)return u;const f=i.levels[n],g=i.levels[i.loadLevel];return(null==f?void 0:f.bitrate)<(null==g?void 0:g.bitrate)?n:i.loadLevel}getStarvationDelay(){const e=this.hls,t=e.media;if(!t)return 1/0;const i=t&&0!==t.playbackRate?Math.abs(t.playbackRate):1,r=e.mainForwardBufferInfo;return(r?r.len:0)/i}getBwEstimate(){return this.bwEstimator.canEstimate()?this.bwEstimator.getEstimate():this.hls.config.abrEwmaDefaultEstimate}findBestLevel(e,t,i,r,s,n,a){var o;const l=r+s,h=this.lastLoadedFragLevel,c=-1===h?this.hls.firstLevel:h,{fragCurrent:d,partCurrent:u}=this,{levels:f,allAudioTracks:g,loadLevel:m,config:p}=this.hls;if(1===f.length)return 0;const v=f[c],y=!(null==v||null==(o=v.details)||!o.live),T=-1===m||-1===h;let E,S="SDR",b=(null==v?void 0:v.frameRate)||0;const{audioPreference:L,videoPreference:w}=p,A=this.audioTracksByGroup||(this.audioTracksByGroup=function(e){return e.reduce(((e,t)=>{let i=e.groups[t.groupId];i||(i=e.groups[t.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),i.tracks.push(t);const r=t.channels||"2";return i.channels[r]=(i.channels[r]||0)+1,i.hasDefault=i.hasDefault||t.default,i.hasAutoSelect=i.hasAutoSelect||t.autoselect,i.hasDefault&&(e.hasDefaultAudio=!0),i.hasAutoSelect&&(e.hasAutoSelectAudio=!0),e}),{hasDefaultAudio:!1,hasAutoSelectAudio:!1,groups:{}})}(g));if(T){if(-1!==this.firstSelection)return this.firstSelection;const r=this.codecTiers||(this.codecTiers=function(e,t,i,r){return e.slice(i,r+1).reduce(((e,i)=>{if(!i.codecSet)return e;const r=i.audioGroups;let s=e[i.codecSet];s||(e[i.codecSet]=s={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!r,fragmentError:0}),s.minBitrate=Math.min(s.minBitrate,i.bitrate);const n=Math.min(i.height,i.width);return s.minHeight=Math.min(s.minHeight,n),s.minFramerate=Math.min(s.minFramerate,i.frameRate),s.maxScore=Math.max(s.maxScore,i.score),s.fragmentError+=i.fragmentError,s.videoRanges[i.videoRange]=(s.videoRanges[i.videoRange]||0)+1,r&&r.forEach((e=>{if(!e)return;const i=t.groups[e];i&&(s.hasDefaultAudio=s.hasDefaultAudio||t.hasDefaultAudio?i.hasDefault:i.hasAutoSelect||!t.hasDefaultAudio&&!t.hasAutoSelectAudio,Object.keys(i.channels).forEach((e=>{s.channels[e]=(s.channels[e]||0)+i.channels[e]})))})),e}),{})}(f,A,t,i)),s=function(e,t,i,r,s){const n=Object.keys(e),a=null==r?void 0:r.channels,o=null==r?void 0:r.audioCodec,l=a&&2===parseInt(a);let h=!0,c=!1,d=1/0,u=1/0,f=1/0,g=0,m=[];const{preferHDR:p,allowedVideoRanges:v}=ma(t,s);for(let t=n.length;t--;){const i=e[n[t]];h=i.channels[2]>0,d=Math.min(d,i.minHeight),u=Math.min(u,i.minFramerate),f=Math.min(f,i.minBitrate);const r=v.filter((e=>i.videoRanges[e]>0));r.length>0&&(c=!0,m=r)}d=Ji(d)?d:0,u=Ji(u)?u:0;const y=Math.max(1080,d),T=Math.max(30,u);return f=Ji(f)?f:i,i=Math.max(f,i),c||(t=void 0,m=[]),{codecSet:n.reduce(((t,r)=>{const s=e[r];if(r===t)return t;if(s.minBitrate>i)return pa(r,`min bitrate of ${s.minBitrate} > current estimate of ${i}`),t;if(!s.hasDefaultAudio)return pa(r,"no renditions with default or auto-select sound found"),t;if(o&&r.indexOf(o.substring(0,4))%5!=0)return pa(r,`audio codec preference "${o}" not found`),t;if(a&&!l){if(!s.channels[a])return pa(r,`no renditions with ${a} channel sound found (channels options: ${Object.keys(s.channels)})`),t}else if((!o||l)&&h&&0===s.channels[2])return pa(r,"no renditions with stereo sound found"),t;return s.minHeight>y?(pa(r,`min resolution of ${s.minHeight} > maximum of ${y}`),t):s.minFramerate>T?(pa(r,`min framerate of ${s.minFramerate} > maximum of ${T}`),t):m.some((e=>s.videoRanges[e]>0))?s.maxScore=$s(t)||s.fragmentError>e[t].fragmentError)?t:(g=s.maxScore,r):(pa(r,`no variants with VIDEO-RANGE of ${JSON.stringify(m)} found`),t)}),void 0),videoRanges:m,preferHDR:p,minFramerate:u,minBitrate:f}}(r,S,e,L,w),{codecSet:n,videoRanges:a,minFramerate:o,minBitrate:l,preferHDR:h}=s;E=n,S=h?a[a.length-1]:a[0],b=o,e=Math.max(e,l),lr.log(`[abr] picked start tier ${JSON.stringify(s)}`)}else E=null==v?void 0:v.codecSet,S=null==v?void 0:v.videoRange;const R=u?u.duration:d?d.duration:0,k=this.bwEstimator.getEstimateTTFB()/1e3,_=[];for(let o=i;o>=t;o--){var D;const t=f[o],d=o>c;if(!t)continue;if(p.useMediaCapabilities&&!t.supportedResult&&!t.supportedPromise){const i=navigator.mediaCapabilities;"function"==typeof(null==i?void 0:i.decodingInfo)&&fa(t,A,S,b,e,L)?(t.supportedPromise=ga(t,A,i),t.supportedPromise.then((e=>{if(!this.hls)return;t.supportedResult=e;const i=this.hls.levels,r=i.indexOf(t);e.error?lr.warn(`[abr] MediaCapabilities decodingInfo error: "${e.error}" for level ${r} ${JSON.stringify(e)}`):e.supported||(lr.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${r} ${JSON.stringify(e)}`),r>-1&&i.length>1&&(lr.log(`[abr] Removing unsupported level ${r}`),this.hls.removeLevel(r)))}))):t.supportedResult=da}if(E&&t.codecSet!==E||S&&t.videoRange!==S||d&&b>t.frameRate||!d&&b>0&&b=2*R&&0===s?f[o].averageBitrate:f[o].maxBitrate,I=this.getTimeToLoadFrag(k,x,C*w,void 0===g);if(x>=C&&(o===h||0===t.loadError&&0===t.fragmentError)&&(I<=k||!Ji(I)||y&&!this.bitrateTestDelay||I${o} adjustedbw(${Math.round(x)})-bitrate=${Math.round(x-C)} ttfb:${k.toFixed(1)} avgDuration:${w.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${I.toFixed(1)} firstSelection:${T} codecSet:${E} videoRange:${S} hls.loadLevel:${m}`)),T&&(this.firstSelection=o),o}}return-1}set nextAutoLevel(e){const{maxAutoLevel:t,minAutoLevel:i}=this.hls,r=Math.min(Math.max(e,i),t);this._nextAutoLevel!==r&&(this.nextAutoLevelKey="",this._nextAutoLevel=r)}},bufferController: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=e=>{this.hls&&this.hls.pauseBuffering()},this._onStartStreaming=e=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=()=>{const{media:e,mediaSource:t}=this;this.log("Media source opened"),e&&(e.removeEventListener("emptied",this._onMediaEmptied),this.updateMediaElementDuration(),this.hls.trigger(tr.MEDIA_ATTACHED,{media:e,mediaSource:t})),t&&t.removeEventListener("sourceopen",this._onMediaSourceOpen),this.checkPendingTracks()},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{const{mediaSrc:e,_objectUrl:t}=this;e!==t&&lr.error(`Media element src was set while attaching MediaSource (${t} > ${e})`)},this.hls=e;const t="[buffer-controller]";var i;this.appendSource=(i=Os(e.config.preferManagedMediaSource),"undefined"!=typeof self&&i===self.ManagedMediaSource),this.log=lr.log.bind(lr,t),this.warn=lr.warn.bind(lr,t),this.error=lr.error.bind(lr,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(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.BUFFER_RESET,this.onBufferReset,this),e.on(tr.BUFFER_APPENDING,this.onBufferAppending,this),e.on(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.on(tr.BUFFER_EOS,this.onBufferEos,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(tr.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(tr.FRAG_PARSED,this.onFragParsed,this),e.on(tr.FRAG_CHANGED,this.onFragChanged,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.BUFFER_RESET,this.onBufferReset,this),e.off(tr.BUFFER_APPENDING,this.onBufferAppending,this),e.off(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.off(tr.BUFFER_EOS,this.onBufferEos,this),e.off(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(tr.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(tr.FRAG_PARSED,this.onFragParsed,this),e.off(tr.FRAG_CHANGED,this.onFragChanged,this)}_initSourceBuffer(){this.sourceBuffer={},this.operationQueue=new Tl(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 i=2;(t.audio&&!t.video||!t.altAudio)&&(i=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=i,this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`)}onMediaAttaching(e,t){const i=this.media=t.media,r=Os(this.appendSource);if(i&&r){var s;const e=this.mediaSource=new r;this.log(`created media source: ${null==(s=e.constructor)?void 0:s.name}`),e.addEventListener("sourceopen",this._onMediaSourceOpen),e.addEventListener("sourceended",this._onMediaSourceEnded),e.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(e.addEventListener("startstreaming",this._onStartStreaming),e.addEventListener("endstreaming",this._onEndStreaming));const t=this._objectUrl=self.URL.createObjectURL(e);if(this.appendSource)try{i.removeAttribute("src");const r=self.ManagedMediaSource;i.disableRemotePlayback=i.disableRemotePlayback||r&&e instanceof r,Sl(i),function(e,t){const i=self.document.createElement("source");i.type="video/mp4",i.src=t,e.appendChild(i)}(i,t),i.load()}catch(e){i.src=t}else i.src=t;i.addEventListener("emptied",this._onMediaEmptied)}}onMediaDetaching(){const{media:e,mediaSource:t,_objectUrl:i}=this;if(t){if(this.log("media source detaching"),"open"===t.readyState)try{t.endOfStream()}catch(e){this.warn(`onMediaDetaching: ${e.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),i&&self.URL.revokeObjectURL(i),this.mediaSrc===i?(e.removeAttribute("src"),this.appendSource&&Sl(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(tr.MEDIA_DETACHED,void 0)}onBufferReset(){this.getSourceBufferTypes().forEach((e=>{this.resetBuffer(e)})),this._initSourceBuffer()}resetBuffer(e){const t=this.sourceBuffer[e];try{var i;if(t)this.removeBufferListeners(e),this.sourceBuffer[e]=void 0,null!=(i=this.mediaSource)&&i.sourceBuffers.length&&this.mediaSource.removeSourceBuffer(t)}catch(t){this.warn(`onBufferReset ${e}`,t)}}onBufferCodecs(e,t){const i=this.getSourceBufferTypes().length,r=Object.keys(t);if(r.forEach((e=>{if(i){const i=this.tracks[e];if(i&&"function"==typeof i.buffer.changeType){var r;const{id:s,codec:n,levelCodec:a,container:o,metadata:l}=t[e],h=Hs(i.codec,i.levelCodec),c=null==h?void 0:h.replace(El,"$1");let d=Hs(n,a);const u=null==(r=d)?void 0:r.replace(El,"$1");if(d&&c!==u){"audio"===e.slice(0,5)&&(d=Vs(d,this.appendSource));const t=`${o};codecs=${d}`;this.appendChangeType(e,t),this.log(`switching codec ${h} to ${d}`),this.tracks[e]={buffer:i.buffer,codec:n,container:o,levelCodec:a,metadata:l,id:s}}}}else this.pendingTracks[e]=t[e]})),i)return;const s=Math.max(this.bufferCodecEventsExpected-1,0);this.bufferCodecEventsExpected!==s&&(this.log(`${s} bufferCodec event(s) expected ${r.join(",")}`),this.bufferCodecEventsExpected=s),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks()}appendChangeType(e,t){const{operationQueue:i}=this,r={execute:()=>{const r=this.sourceBuffer[e];r&&(this.log(`changing ${e} sourceBuffer type to ${t}`),r.changeType(t)),i.shiftAndExecuteNext(e)},onStart:()=>{},onComplete:()=>{},onError:t=>{this.warn(`Failed to change ${e} SourceBuffer type`,t)}};i.append(r,e,!!this.pendingTracks[e])}onBufferAppending(e,t){const{hls:i,operationQueue:r,tracks:s}=this,{data:n,type:a,frag:o,part:l,chunkMeta:h}=t,c=h.buffering[a],d=self.performance.now();c.start=d;const u=o.stats.buffering,f=l?l.stats.buffering:null;0===u.start&&(u.start=d),f&&0===f.start&&(f.start=d);const g=s.audio;let m=!1;"audio"===a&&"audio/mpeg"===(null==g?void 0:g.container)&&(m=!this.lastMpegAudioChunk||1===h.id||this.lastMpegAudioChunk.sn!==h.sn,this.lastMpegAudioChunk=h);const p=o.start,v={execute:()=>{if(c.executeStart=self.performance.now(),m){const e=this.sourceBuffer[a];if(e){const t=p-e.timestampOffset;Math.abs(t)>=.1&&(this.log(`Updating audio SourceBuffer timestampOffset to ${p} (delta: ${t}) sn: ${o.sn})`),e.timestampOffset=p)}}this.appendExecutor(n,a)},onStart:()=>{},onComplete:()=>{const e=self.performance.now();c.executeEnd=c.end=e,0===u.first&&(u.first=e),f&&0===f.first&&(f.first=e);const{sourceBuffer:t}=this,i={};for(const e in t)i[e]=xa.getBuffered(t[e]);this.appendErrors[a]=0,"audio"===a||"video"===a?this.appendErrors.audiovideo=0:(this.appendErrors.audio=0,this.appendErrors.video=0),this.hls.trigger(tr.BUFFER_APPENDED,{type:a,frag:o,part:l,chunkMeta:h,parent:o.type,timeRanges:i})},onError:e=>{const t={type:ir.MEDIA_ERROR,parent:o.type,details:rr.BUFFER_APPEND_ERROR,sourceBufferName:a,frag:o,part:l,chunkMeta:h,error:e,err:e,fatal:!1};if(e.code===DOMException.QUOTA_EXCEEDED_ERR)t.details=rr.BUFFER_FULL_ERROR;else{const e=++this.appendErrors[a];t.details=rr.BUFFER_APPEND_ERROR,this.warn(`Failed ${e}/${i.config.appendErrorMaxRetry} times to append segment in "${a}" sourceBuffer`),e>=i.config.appendErrorMaxRetry&&(t.fatal=!0)}i.trigger(tr.ERROR,t)}};r.append(v,a,!!this.pendingTracks[a])}onBufferFlushing(e,t){const{operationQueue:i}=this,r=e=>({execute:this.removeExecutor.bind(this,e,t.startOffset,t.endOffset),onStart:()=>{},onComplete:()=>{this.hls.trigger(tr.BUFFER_FLUSHED,{type:e})},onError:t=>{this.warn(`Failed to remove from ${e} SourceBuffer`,t)}});t.type?i.append(r(t.type),t.type):this.getSourceBufferTypes().forEach((e=>{i.append(r(e),e)}))}onFragParsed(e,t){const{frag:i,part:r}=t,s=[],n=r?r.elementaryStreams:i.elementaryStreams;n[vr]?s.push("audiovideo"):(n[mr]&&s.push("audio"),n[pr]&&s.push("video"));0===s.length&&this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${i.type} level: ${i.level} sn: ${i.sn}`),this.blockBuffers((()=>{const e=self.performance.now();i.stats.buffering.end=e,r&&(r.stats.buffering.end=e);const t=r?r.stats:i.stats;this.hls.trigger(tr.FRAG_BUFFERED,{frag:i,part:r,stats:t,id:i.type})}),s)}onFragChanged(e,t){this.trimBuffers()}onBufferEos(e,t){this.getSourceBufferTypes().reduce(((e,i)=>{const r=this.sourceBuffer[i];return!r||t.type&&t.type!==i||(r.ending=!0,r.ended||(r.ended=!0,this.log(`${i} sourceBuffer now EOS`))),e&&!(r&&!r.ended)}),!0)&&(this.log("Queueing mediaSource.endOfStream()"),this.blockBuffers((()=>{this.getSourceBufferTypes().forEach((e=>{const t=this.sourceBuffer[e];t&&(t.ending=!1)}));const{mediaSource:e}=this;e&&"open"===e.readyState?(this.log("Calling mediaSource.endOfStream()"),e.endOfStream()):e&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${e.readyState}`)})))}onLevelUpdated(e,{details:t}){t.fragments.length&&(this.details=t,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())}trimBuffers(){const{hls:e,details:t,media:i}=this;if(!i||null===t)return;if(!this.getSourceBufferTypes().length)return;const r=e.config,s=i.currentTime,n=t.levelTargetDuration,a=t.live&&null!==r.liveBackBufferLength?r.liveBackBufferLength:r.backBufferLength;if(Ji(a)&&a>0){const e=Math.max(a,n),t=Math.floor(s/n)*n-e;this.flushBackBuffer(s,n,t)}if(Ji(r.frontBufferFlushThreshold)&&r.frontBufferFlushThreshold>0){const e=Math.max(r.maxBufferLength,r.frontBufferFlushThreshold),t=Math.max(e,n),i=Math.floor(s/n)*n+t;this.flushFrontBuffer(s,n,i)}}flushBackBuffer(e,t,i){const{details:r,sourceBuffer:s}=this;this.getSourceBufferTypes().forEach((n=>{const a=s[n];if(a){const s=xa.getBuffered(a);if(s.length>0&&i>s.start(0)){if(this.hls.trigger(tr.BACK_BUFFER_REACHED,{bufferEnd:i}),null!=r&&r.live)this.hls.trigger(tr.LIVE_BACK_BUFFER_REACHED,{bufferEnd:i});else if(a.ended&&s.end(s.length-1)-e<2*t)return void this.log(`Cannot flush ${n} back buffer while SourceBuffer is in ended state`);this.hls.trigger(tr.BUFFER_FLUSHING,{startOffset:0,endOffset:i,type:n})}}}))}flushFrontBuffer(e,t,i){const{sourceBuffer:r}=this;this.getSourceBufferTypes().forEach((s=>{const n=r[s];if(n){const r=xa.getBuffered(n),a=r.length;if(a<2)return;const o=r.start(a-1),l=r.end(a-1);if(i>o||e>=o&&e<=l)return;if(n.ended&&e-l<2*t)return void this.log(`Cannot flush ${s} front buffer while SourceBuffer is in ended state`);this.hls.trigger(tr.BUFFER_FLUSHING,{startOffset:o,endOffset:1/0,type:s})}}))}updateMediaElementDuration(){if(!this.details||!this.media||!this.mediaSource||"open"!==this.mediaSource.readyState)return;const{details:e,hls:t,media:i,mediaSource:r}=this,s=e.fragments[0].start+e.totalduration,n=i.duration,a=Ji(r.duration)?r.duration:0;e.live&&t.config.liveDurationInfinity?(r.duration=1/0,this.updateSeekableRange(e)):(s>a&&s>n||!Ji(n))&&(this.log(`Updating Media Source duration to ${s.toFixed(3)}`),r.duration=s)}updateSeekableRange(e){const t=this.mediaSource,i=e.fragments;if(i.length&&e.live&&null!=t&&t.setLiveSeekableRange){const r=Math.max(0,i[0].start),s=Math.max(r,r+e.totalduration);this.log(`Media Source duration is set to ${t.duration}. Setting seekable range to ${r}-${s}.`),t.setLiveSeekableRange(r,s)}}checkPendingTracks(){const{bufferCodecEventsExpected:e,operationQueue:t,pendingTracks:i}=this,r=Object.keys(i).length;if(r&&(!e||2===r||"audiovideo"in i)){this.createSourceBuffers(i),this.pendingTracks={};const e=this.getSourceBufferTypes();if(e.length)this.hls.trigger(tr.BUFFER_CREATED,{tracks:this.tracks}),e.forEach((e=>{t.executeNext(e)}));else{const e=new Error("could not create source buffer for media codec(s)");this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:e,reason:e.message})}}}createSourceBuffers(e){const{sourceBuffer:t,mediaSource:i}=this;if(!i)throw Error("createSourceBuffers called when mediaSource was null");for(const s in e)if(!t[s]){var r;const n=e[s];if(!n)throw Error(`source buffer exists for track ${s}, however track does not`);let a=-1===(null==(r=n.levelCodec)?void 0:r.indexOf(","))?n.levelCodec:n.codec;a&&"audio"===s.slice(0,5)&&(a=Vs(a,this.appendSource));const o=`${n.container};codecs=${a}`;this.log(`creating sourceBuffer(${o})`);try{const e=t[s]=i.addSourceBuffer(o),r=s;this.addBufferListener(r,"updatestart",this._onSBUpdateStart),this.addBufferListener(r,"updateend",this._onSBUpdateEnd),this.addBufferListener(r,"error",this._onSBUpdateError),this.appendSource&&this.addBufferListener(r,"bufferedchange",((e,t)=>{const i=t.removedRanges;null!=i&&i.length&&this.hls.trigger(tr.BUFFER_FLUSHED,{type:s})})),this.tracks[s]={buffer:e,codec:a,container:n.container,levelCodec:n.levelCodec,metadata:n.metadata,id:n.id}}catch(e){this.error(`error while trying to add sourceBuffer: ${e.message}`),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:e,sourceBufferName:s,mimeType:o})}}}get mediaSrc(){var e;const t=(null==(e=this.media)?void 0:e.firstChild)||this.media;return null==t?void 0:t.src}_onSBUpdateStart(e){const{operationQueue:t}=this;t.current(e).onStart()}_onSBUpdateEnd(e){var t;if("closed"===(null==(t=this.mediaSource)?void 0:t.readyState))return void this.resetBuffer(e);const{operationQueue:i}=this;i.current(e).onComplete(),i.shiftAndExecuteNext(e)}_onSBUpdateError(e,t){var i;const r=new Error(`${e} SourceBuffer error. MediaSource readyState: ${null==(i=this.mediaSource)?void 0:i.readyState}`);this.error(`${r}`,t),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_APPENDING_ERROR,sourceBufferName:e,error:r,fatal:!1});const s=this.operationQueue.current(e);s&&s.onError(r)}removeExecutor(e,t,i){const{media:r,mediaSource:s,operationQueue:n,sourceBuffer:a}=this,o=a[e];if(!r||!s||!o)return this.warn(`Attempting to remove from the ${e} SourceBuffer, but it does not exist`),void n.shiftAndExecuteNext(e);const l=Ji(r.duration)?r.duration:1/0,h=Ji(s.duration)?s.duration:1/0,c=Math.max(0,t),d=Math.min(i,l,h);d>c&&(!o.ending||o.ended)?(o.ended=!1,this.log(`Removing [${c},${d}] from the ${e} SourceBuffer`),o.remove(c,d)):n.shiftAndExecuteNext(e)}appendExecutor(e,t){const i=this.sourceBuffer[t];if(i)i.ended=!1,i.appendBuffer(e);else if(!this.pendingTracks[t])throw new Error(`Attempting to append to the ${t} SourceBuffer, but it does not exist`)}blockBuffers(e,t=this.getSourceBufferTypes()){if(!t.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(e);const{operationQueue:i}=this,r=t.map((e=>i.appendBlocker(e)));Promise.all(r).then((()=>{e(),t.forEach((e=>{const t=this.sourceBuffer[e];null!=t&&t.updating||i.shiftAndExecuteNext(e)}))}))}getSourceBufferTypes(){return Object.keys(this.sourceBuffer)}addBufferListener(e,t,i){const r=this.sourceBuffer[e];if(!r)return;const s=i.bind(this,e);this.listeners[e].push({event:t,listener:s}),r.addEventListener(t,s)}removeBufferListeners(e){const t=this.sourceBuffer[e];t&&this.listeners[e].forEach((e=>{t.removeEventListener(e.event,e.listener)}))}},capLevelController:ph,errorController: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=lr.log.bind(lr,"[info]:"),this.warn=lr.warn.bind(lr,"[warning]:"),this.error=lr.error.bind(lr,"[error]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(tr.ERROR,this.onError,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){const e=this.hls;e&&(e.off(tr.ERROR,this.onError,this),e.off(tr.ERROR,this.onErrorOut,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}}startLoad(e){}stopLoad(){this.playlistError=0}getVariantLevelIndex(e){return(null==e?void 0:e.type)===hn?e.level:this.hls.loadLevel}onManifestLoading(){this.playlistError=0,this.penalizedRenditions={}}onLevelUpdated(){this.playlistError=0}onError(e,t){var i,r;if(t.fatal)return;const s=this.hls,n=t.context;switch(t.details){case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:return void(t.errorAction=this.getFragRetryOrSwitchAction(t));case rr.FRAG_PARSING_ERROR:if(null!=(i=t.frag)&&i.gap)return void(t.errorAction={action:ta,flags:na});case rr.FRAG_GAP:case rr.FRAG_DECRYPT_ERROR:return t.errorAction=this.getFragRetryOrSwitchAction(t),void(t.errorAction.action=ia);case rr.LEVEL_EMPTY_ERROR:case rr.LEVEL_PARSING_ERROR:{var a,o;const e=t.parent===hn?t.level:s.loadLevel;t.details===rr.LEVEL_EMPTY_ERROR&&null!=(a=t.context)&&null!=(o=a.levelDetails)&&o.live?t.errorAction=this.getPlaylistRetryOrSwitchAction(t,e):(t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,e))}return;case rr.LEVEL_LOAD_ERROR:case rr.LEVEL_LOAD_TIMEOUT:return void("number"==typeof(null==n?void 0:n.level)&&(t.errorAction=this.getPlaylistRetryOrSwitchAction(t,n.level)));case rr.AUDIO_TRACK_LOAD_ERROR:case rr.AUDIO_TRACK_LOAD_TIMEOUT:case rr.SUBTITLE_LOAD_ERROR:case rr.SUBTITLE_TRACK_LOAD_TIMEOUT:if(n){const e=s.levels[s.loadLevel];if(e&&(n.type===on&&e.hasAudioGroup(n.groupId)||n.type===ln&&e.hasSubtitleGroup(n.groupId)))return t.errorAction=this.getPlaylistRetryOrSwitchAction(t,s.loadLevel),t.errorAction.action=ia,void(t.errorAction.flags=aa)}return;case rr.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:{const e=s.levels[s.loadLevel],i=null==e?void 0:e.attrs["HDCP-LEVEL"];i?t.errorAction={action:ia,flags:oa,hdcpLevel:i}:this.keySystemError(t)}return;case rr.BUFFER_ADD_CODEC_ERROR:case rr.REMUX_ALLOC_ERROR:case rr.BUFFER_APPEND_ERROR:return void(t.errorAction=this.getLevelSwitchAction(t,null!=(r=t.level)?r:s.loadLevel));case rr.INTERNAL_EXCEPTION:case rr.BUFFER_APPENDING_ERROR:case rr.BUFFER_FULL_ERROR:case rr.LEVEL_SWITCH_ERROR:case rr.BUFFER_STALLED_ERROR:case rr.BUFFER_SEEK_OVER_HOLE:case rr.BUFFER_NUDGE_ON_STALL:return void(t.errorAction={action:ta,flags:na})}t.type===ir.KEY_SYSTEM_ERROR&&this.keySystemError(t)}keySystemError(e){const t=this.getVariantLevelIndex(e.frag);e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,t)}getPlaylistRetryOrSwitchAction(e,t){const i=Yn(this.hls.config.playlistLoadPolicy,e),r=this.playlistError++;if(Xn(i,r,Wn(e),e.response))return{action:sa,flags:na,retryConfig:i,retryCount:r};const s=this.getLevelSwitchAction(e,t);return i&&(s.retryConfig=i,s.retryCount=r),s}getFragRetryOrSwitchAction(e){const t=this.hls,i=this.getVariantLevelIndex(e.frag),r=t.levels[i],{fragLoadPolicy:s,keyLoadPolicy:n}=t.config,a=Yn(e.details.startsWith("key")?n:s,e),o=t.levels.reduce(((e,t)=>e+t.fragmentError),0);if(r){e.details!==rr.FRAG_GAP&&r.fragmentError++;if(Xn(a,o,Wn(e),e.response))return{action:sa,flags:na,retryConfig:a,retryCount:o}}const l=this.getLevelSwitchAction(e,i);return a&&(l.retryConfig=a,l.retryCount=o),l}getLevelSwitchAction(e,t){const i=this.hls;null==t&&(t=i.loadLevel);const r=this.hls.levels[t];if(r){var s,n;const t=e.details;r.loadError++,t===rr.BUFFER_APPEND_ERROR&&r.fragmentError++;let l=-1;const{levels:h,loadLevel:c,minAutoLevel:d,maxAutoLevel:u}=i;i.autoLevelEnabled||(i.loadLevel=-1);const f=null==(s=e.frag)?void 0:s.type,g=(f===cn&&t===rr.FRAG_PARSING_ERROR||"audio"===e.sourceBufferName&&(t===rr.BUFFER_ADD_CODEC_ERROR||t===rr.BUFFER_APPEND_ERROR))&&h.some((({audioCodec:e})=>r.audioCodec!==e)),m="video"===e.sourceBufferName&&(t===rr.BUFFER_ADD_CODEC_ERROR||t===rr.BUFFER_APPEND_ERROR)&&h.some((({codecSet:e,audioCodec:t})=>r.codecSet!==e&&r.audioCodec===t)),{type:p,groupId:v}=null!=(n=e.context)?n:{};for(let i=h.length;i--;){const s=(i+c)%h.length;if(s!==c&&s>=d&&s<=u&&0===h[s].loadError){var a,o;const i=h[s];if(t===rr.FRAG_GAP&&f===hn&&e.frag){const t=h[s].details;if(t){const i=Jn(e.frag,t.fragments,e.frag.start);if(null!=i&&i.gap)continue}}else{if(p===on&&i.hasAudioGroup(v)||p===ln&&i.hasSubtitleGroup(v))continue;if(f===cn&&null!=(a=r.audioGroups)&&a.some((e=>i.hasAudioGroup(e)))||f===dn&&null!=(o=r.subtitleGroups)&&o.some((e=>i.hasSubtitleGroup(e)))||g&&r.audioCodec===i.audioCodec||!g&&r.audioCodec!==i.audioCodec||m&&r.codecSet===i.codecSet)continue}l=s;break}}if(l>-1&&i.loadLevel!==l)return e.levelRetry=!0,this.playlistError=0,{action:ia,flags:na,nextAutoLevel:l}}return{action:ia,flags:aa}}onErrorOut(e,t){var i;switch(null==(i=t.errorAction)?void 0:i.action){case ta:break;case ia:this.sendAlternateToPenaltyBox(t),t.errorAction.resolved||t.details===rr.FRAG_GAP?/MediaSource readyState: ended/.test(t.error.message)&&(this.warn(`MediaSource ended after "${t.sourceBufferName}" sourceBuffer append error. Attempting to recover from media error.`),this.hls.recoverMediaError()):t.fatal=!0}t.fatal&&this.hls.stopLoad()}sendAlternateToPenaltyBox(e){const t=this.hls,i=e.errorAction;if(!i)return;const{flags:r,hdcpLevel:s,nextAutoLevel:n}=i;switch(r){case na:this.switchLevel(e,n);break;case oa:s&&(t.maxHdcpLevel=Dn[Dn.indexOf(s)-1],i.resolved=!0),this.warn(`Restricting playback to HDCP-LEVEL of "${t.maxHdcpLevel}" or lower`)}i.resolved||this.switchLevel(e,n)}switchLevel(e,t){void 0!==t&&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)}},fpsController: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(tr.MEDIA_ATTACHING,this.onMediaAttaching,this)}unregisterListeners(){this.hls.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(e,t){const i=this.hls.config;if(i.capLevelOnFPSDrop){const e=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=e,e&&"function"==typeof e.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),i.fpsDroppedMonitoringPeriod)}}checkFPS(e,t,i){const r=performance.now();if(t){if(this.lastTime){const e=r-this.lastTime,s=i-this.lastDroppedFrames,n=t-this.lastDecodedFrames,a=1e3*s/e,o=this.hls;if(o.trigger(tr.FPS_DROP,{currentDropped:s,currentDecoded:n,totalDroppedFrames:i}),a>0&&s>o.config.fpsDroppedMonitoringThreshold*n){let e=o.currentLevel;lr.warn("drop FPS ratio greater than max allowed value for currentLevel: "+e),e>0&&(-1===o.autoLevelCapping||o.autoLevelCapping>=e)&&(e-=1,o.trigger(tr.FPS_DROP_LEVEL_CAPPING,{level:e,droppedLevel:o.currentLevel}),o.autoLevelCapping=e,this.streamController.nextLevelSwitch())}}this.lastTime=r,this.lastDroppedFrames=i,this.lastDecodedFrames=t}}checkFPSInterval(){const e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){const t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)}},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:Mr,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableID3MetadataCues:!0,useMediaCapabilities:!0,certLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null}},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},{cueHandler:fc,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:class extends no{constructor(e,t,i){super(e,t,i,"[subtitle-stream-controller]",dn),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this._registerListeners()}onHandlerDestroying(){this._unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}_registerListeners(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.ERROR,this.onError,this),e.on(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(tr.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(tr.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this)}_unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.ERROR,this.onError,this),e.off(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(tr.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(tr.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.off(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this)}startLoad(e){this.stopLoad(),this.state=qa,this.setInterval(500),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){const{frag:i,success:r}=t;if(this.fragPrevious=i,this.state=qa,!r)return;const s=this.tracksBuffered[this.currentTrackId];if(!s)return;let n;const a=i.start;for(let e=0;e=s[e].start&&a<=s[e].end){n=s[e];break}const o=i.start+i.duration;n?n.end=o:(n={start:a,end:o},s.push(n)),this.fragmentTracker.fragBuffered(i),this.fragBufferedComplete(i,null)}onBufferFlushing(e,t){const{startOffset:i,endOffset:r}=t;if(0===i&&r!==Number.POSITIVE_INFINITY){const e=r-1;if(e<=0)return;t.endOffsetSubtitles=Math.max(0,e),this.tracksBuffered.forEach((t=>{for(let i=0;inew Fn(e))):(this.tracksBuffered=[],this.levels=t.map((e=>{const t=new Fn(e);return this.tracksBuffered[t.id]=[],t})),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,dn),this.fragPrevious=null,this.mediaBuffer=null)}onSubtitleTrackSwitch(e,t){var i;if(this.currentTrackId=t.id,null==(i=this.levels)||!i.length||-1===this.currentTrackId)return void this.clearInterval();const r=this.levels[this.currentTrackId];null!=r&&r.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,r&&this.setInterval(500)}onSubtitleTrackLoaded(e,t){var i;const{currentTrackId:r,levels:s}=this,{details:n,id:a}=t;if(!s)return void this.warn(`Subtitle tracks were reset while loading level ${a}`);const o=s[a];if(a>=s.length||!o)return;this.log(`Subtitle track ${a} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""},duration:${n.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let l=0;if(n.live||null!=(i=o.details)&&i.live){const e=this.mainDetails;if(n.deltaUpdateFailed||!e)return;const t=e.fragments[0];var h;if(o.details)l=this.alignPlaylists(n,o.details,null==(h=this.levelLastLoaded)?void 0:h.details),0===l&&t&&(l=t.start,Kn(n,l));else n.hasProgramDateTime&&e.hasProgramDateTime?(Fa(n,e),l=n.fragments[0].start):t&&(l=t.start,Kn(n,l))}if(o.details=n,this.levelLastLoaded=o,a===r&&(this.startFragRequested||!this.mainDetails&&n.live||this.setStartPosition(this.mainDetails||n,l),this.tick(),n.live&&!this.fragCurrent&&this.media&&this.state===qa)){Jn(null,n.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),o.details=void 0)}}_handleFragmentLoadComplete(e){const{frag:t,payload:i}=e,r=t.decryptdata,s=this.hls;if(!this.fragContextChanged(t)&&i&&i.byteLength>0&&null!=r&&r.key&&r.iv&&"AES-128"===r.method){const e=performance.now();this.decrypter.decrypt(new Uint8Array(i),r.key.buffer,r.iv.buffer).catch((e=>{throw s.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.FRAG_DECRYPT_ERROR,fatal:!1,error:e,reason:e.message,frag:t}),e})).then((i=>{const r=performance.now();s.trigger(tr.FRAG_DECRYPTED,{frag:t,payload:i,stats:{tstart:e,tdecrypt:r}})})).catch((e=>{this.warn(`${e.name}: ${e.message}`),this.state=qa}))}}doTick(){if(this.media){if(this.state===qa){const{currentTrackId:e,levels:t}=this,i=null==t?void 0:t[e];if(!i||!t.length||!i.details)return;const{config:r}=this,s=this.getLoadPosition(),n=xa.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],s,r.maxBufferHole),{end:a,len:o}=n,l=this.getFwdBufferInfo(this.media,hn),h=i.details;if(o>this.getMaxBufferLength(null==l?void 0:l.len)+h.levelTargetDuration)return;const c=h.fragments,d=c.length,u=h.edge;let f=null;const g=this.fragPrevious;if(au-e?0:e;f=Jn(g,c,Math.max(c[0].start,a),t),!f&&g&&g.startthis.pollTrackChange(0),this.useTextTrackPolling=!1,this.subtitlePollingInterval=-1,this._subtitleDisplay=!0,this.onTextTracksChanged=()=>{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let e=null;const t=Tn(this.media.textTracks);for(let i=0;i-1&&this.toggleTrackModes()}registerListeners(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVEL_LOADING,this.onLevelLoading,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVEL_LOADING,this.onLevelLoading,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(tr.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);Tn(this.media.textTracks).forEach((e=>{vn(e)})),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){const{id:i,groupId:r,details:s}=t,n=this.tracksInGroup[i];if(!n||n.groupId!==r)return void this.warn(`Subtitle track with id:${i} and group:${r} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=t.details,this.log(`Subtitle track ${i} "${n.name}" lang:${n.lang} group:${r} loaded [${s.startSN}-${s.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.subtitleGroups||null,r=this.groupIds;let s=this.currentTrack;if(!i||(null==r?void 0:r.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==r?void 0:r.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!s&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.subtitlePreference;if(!s&&t){this.selectDefaultTrack=!1;const i=va(t,e);if(i>-1)s=e[i];else{const e=va(t,this.tracks);s=this.tracks[e]}}let r=this.findTrackId(s);-1===r&&s&&(r=this.findTrackId(null));const n={subtitleTracks:e};this.log(`Updating subtitle tracks, ${e.length} track(s) found in "${null==i?void 0:i.join(",")}" group-id`),this.hls.trigger(tr.SUBTITLE_TRACKS_UPDATED,n),-1!==r&&-1===this.trackId&&this.setSubtitleTrack(r)}else this.shouldReloadPlaylist(s)&&this.setSubtitleTrack(this.trackId)}findTrackId(e){const t=this.tracksInGroup,i=this.selectDefaultTrack;for(let r=0;r-1){const e=this.tracksInGroup[r];return this.setSubtitleTrack(r),e}if(i)return null;{const i=va(e,t);if(i>-1)return t[i]}}}return null}loadPlaylist(e){super.loadPlaylist();const t=this.currentTrack;if(this.shouldLoadPlaylist(t)&&t){const i=t.id,r=t.groupId;let s=t.url;if(e)try{s=e.addDirectives(s)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}this.log(`Loading subtitle playlist for id ${i}`),this.hls.trigger(tr.SUBTITLE_TRACK_LOADING,{url:s,id:i,groupId:r,deliveryDirectives:e||null})}}toggleTrackModes(){const{media:e}=this;if(!e)return;const t=Tn(e.textTracks),i=this.currentTrack;let r;if(i&&(r=t.filter((e=>vl(i,e)))[0],r||this.warn(`Unable to find subtitle TextTrack with name "${i.name}" and language "${i.lang}"`)),[].slice.call(t).forEach((e=>{"disabled"!==e.mode&&e!==r&&(e.mode="disabled")})),r){const e=this.subtitleDisplay?"showing":"hidden";r.mode!==e&&(r.mode=e)}}setSubtitleTrack(e){const t=this.tracksInGroup;if(!this.media)return void(this.queuedDefaultTrack=e);if(e<-1||e>=t.length||!Ji(e))return void this.warn(`Invalid subtitle track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,r=t[e]||null;if(this.trackId=e,this.currentTrack=r,this.toggleTrackModes(),!r)return void this.hls.trigger(tr.SUBTITLE_TRACK_SWITCH,{id:e});const s=!!r.details&&!r.details.live;if(e===this.trackId&&r===i&&s)return;this.log(`Switching to subtitle-track ${e}`+(r?` "${r.name}" lang:${r.lang} group:${r.groupId}`:""));const{id:n,groupId:a="",name:o,type:l,url:h}=r;this.hls.trigger(tr.SUBTITLE_TRACK_SWITCH,{id:n,groupId:a,name:o,type:l,url:h});const c=this.switchParams(r.url,null==i?void 0:i.details,r.details);this.loadPlaylist(c)}},timelineController: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={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},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(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(tr.FRAG_LOADING,this.onFragLoading,this),e.on(tr.FRAG_LOADED,this.onFragLoaded,this),e.on(tr.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(tr.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(tr.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(tr.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(tr.FRAG_LOADING,this.onFragLoading,this),e.off(tr.FRAG_LOADED,this.onFragLoaded,this),e.off(tr.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(tr.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(tr.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(tr.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(tr.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)){const e=new Gl(this,"textTrack1"),t=new Gl(this,"textTrack2"),i=new Gl(this,"textTrack3"),r=new Gl(this,"textTrack4");this.cea608Parser1=new Ul(1,e,t),this.cea608Parser2=new Ul(3,i,r)}}addCues(e,t,i,r,s){let n=!1;for(let e=s.length;e--;){const r=s[e],c=(a=r[0],o=r[1],l=t,h=i,Math.min(o,h)-Math.max(a,l));if(c>=0&&(r[0]=Math.min(r[0],t),r[1]=Math.max(r[1],i),n=!0,c/(i-t)>.5))return}var a,o,l,h;if(n||s.push([t,i]),this.config.renderTextTracksNatively){const s=this.captionsTracks[e];this.Cues.newCue(s,t,i,r)}else{const s=this.Cues.newCue(null,t,i,r);this.hls.trigger(tr.CUES_PARSED,{type:"captions",cues:s,track:e})}}onInitPtsFound(e,{frag:t,id:i,initPTS:r,timescale:s}){const{unparsedVttFrags:n}=this;"main"===i&&(this.initPTS[t.cc]={baseTime:r,timescale:s}),n.length&&(this.unparsedVttFrags=[],n.forEach((e=>{this.onFragLoaded(tr.FRAG_LOADED,e)})))}getExistingTrack(e,t){const{media:i}=this;if(i)for(let r=0;r{vn(e[t]),delete e[t]})),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:e}=this;if(!e)return;const t=e.textTracks;if(t)for(let e=0;ee.textCodec===rh));if(this.config.enableWebVTT||r&&this.config.enableIMSC1){if(ml(this.tracks,i))return void(this.tracks=i);if(this.textTracks=[],this.tracks=i,this.config.renderTextTracksNatively){const e=this.media,t=e?Tn(e.textTracks):null;if(this.tracks.forEach(((e,i)=>{let r;if(t){let i=null;for(let r=0;rnull!==e)).map((e=>e.label));e.length&&lr.warn(`Media element contains unused subtitle tracks: ${e.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const e=this.tracks.map((e=>({label:e.name,kind:e.type.toLowerCase(),default:e.default,subtitleTrack:e})));this.hls.trigger(tr.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:e})}}}onManifestLoaded(e,t){this.config.enableCEA708Captions&&t.captions&&t.captions.forEach((e=>{const t=/(?:CC|SERVICE)([1-4])/.exec(e.instreamId);if(!t)return;const i=`textTrack${t[1]}`,r=this.captionsProperties[i];r&&(r.label=e.name,e.lang&&(r.languageCode=e.lang),r.media=e)}))}closedCaptionsForLevel(e){const t=this.hls.levels[e.level];return null==t?void 0:t.attrs["CLOSED-CAPTIONS"]}onFragLoading(e,t){if(this.enabled&&t.frag.type===hn){var i,r;const{cea608Parser1:e,cea608Parser2:s,lastSn:n}=this,{cc:a,sn:o}=t.frag,l=null!=(i=null==(r=t.part)?void 0:r.index)?i:-1;e&&s&&(o!==n+1||o===n&&l!==this.lastPartIndex+1||a!==this.lastCc)&&(e.reset(),s.reset()),this.lastCc=a,this.lastSn=o,this.lastPartIndex=l}}onFragLoaded(e,t){const{frag:i,payload:r}=t;if(i.type===dn)if(r.byteLength){const e=i.decryptdata,s="stats"in t;if(null==e||!e.encrypted||s){const e=this.tracks[i.level],s=this.vttCCs;s[i.cc]||(s[i.cc]={start:i.start,prevCC:this.prevCC,new:!0},this.prevCC=i.cc),e&&e.textCodec===rh?this._parseIMSC1(i,r):this._parseVTTs(t)}}else this.hls.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:new Error("Empty subtitle payload")})}_parseIMSC1(e,t){const i=this.hls;oh(t,this.initPTS[e.cc],(t=>{this._appendCues(t,e.level),i.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:e})}),(t=>{lr.log(`Failed to parse IMSC1: ${t}`),i.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e,error:t})}))}_parseVTTs(e){var t;const{frag:i,payload:r}=e,{initPTS:s,unparsedVttFrags:n}=this,a=s.length-1;if(!s[i.cc]&&-1===a)return void n.push(e);const o=this.hls;ih(null!=(t=i.initSegment)&&t.data?Es(i.initSegment.data,new Uint8Array(r)):r,this.initPTS[i.cc],this.vttCCs,i.cc,i.start,(e=>{this._appendCues(e,i.level),o.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:i})}),(t=>{const s="Missing initPTS for VTT MPEGTS"===t.message;s?n.push(e):this._fallbackToIMSC1(i,r),lr.log(`Failed to parse VTT cue: ${t}`),s&&a>i.cc||o.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:t})}))}_fallbackToIMSC1(e,t){const i=this.tracks[e.level];i.textCodec||oh(t,this.initPTS[e.cc],(()=>{i.textCodec=rh,this._parseIMSC1(e,t)}),(()=>{i.textCodec="wvtt"}))}_appendCues(e,t){const i=this.hls;if(this.config.renderTextTracksNatively){const i=this.textTracks[t];if(!i||"disabled"===i.mode)return;e.forEach((e=>pn(i,e)))}else{const r=this.tracks[t];if(!r)return;const s=r.default?"default":"subtitles"+t;i.trigger(tr.CUES_PARSED,{type:"subtitles",cues:e,track:s})}}onFragDecrypted(e,t){const{frag:i}=t;i.type===dn&&this.onFragLoaded(tr.FRAG_LOADED,t)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(e,t){this.initCea608Parsers();const{cea608Parser1:i,cea608Parser2:r}=this;if(!this.enabled||!i||!r)return;const{frag:s,samples:n}=t;if(s.type!==hn||"NONE"!==this.closedCaptionsForLevel(s))for(let e=0;eyn(e[r],t,i)))}if(this.config.renderTextTracksNatively&&0===t&&void 0!==r){const{textTracks:e}=this;Object.keys(e).forEach((i=>yn(e[i],t,r)))}}}extractCea608Data(e){const t=[[],[]],i=31&e[0];let r=2;for(let s=0;s0&&-1===e?(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t,this.state=qa):(this.loadedmetadata=!1,this.state=Ja),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}doTick(){switch(this.state){case qa:this.doTickIdle();break;case Ja:{var e;const{levels:t,trackId:i}=this,r=null==t||null==(e=t[i])?void 0:e.details;if(r){if(this.waitForCdnTuneIn(r))break;this.state=ro}break}case Qa:{var t;const e=performance.now(),i=this.retryDate;if(!i||e>=i||null!=(t=this.media)&&t.seeking){const{levels:e,trackId:t}=this;this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded((null==e?void 0:e[t])||null),this.state=qa}break}case ro:{const e=this.waitingData;if(e){const{frag:t,part:i,cache:r,complete:s}=e;if(void 0!==this.initPTS[t.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=Xa;const e={frag:t,part:i,payload:r.flush(),networkDetails:null};this._handleFragmentLoadProgress(e),s&&super._handleFragmentLoadComplete(e)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log(`Waiting fragment cc (${t.cc}) cancelled because video is at cc ${this.videoTrackCC}`),this.clearWaitingFragment();else{const e=this.getLoadPosition(),i=xa.bufferInfo(this.mediaBuffer,e,this.config.maxBufferHole);Zn(i.end,this.config.maxFragLookUpTolerance,t)<0&&(this.log(`Waiting fragment cc (${t.cc}) @ ${t.start} cancelled because another fragment at ${i.end} is needed`),this.clearWaitingFragment())}}else this.state=qa}}this.onTickEnd()}clearWaitingFragment(){const e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=qa)}resetLoadingState(){this.clearWaitingFragment(),super.resetLoadingState()}onTickEnd(){const{media:e}=this;null!=e&&e.readyState&&(this.lastCurrentTime=e.currentTime)}doTickIdle(){const{hls:e,levels:t,media:i,trackId:r}=this,s=e.config;if(!i&&(this.startFragRequested||!s.startFragPrefetch)||null==t||!t[r])return;const n=t[r],a=n.details;if(!a||a.live&&this.levelLastLoaded!==n||this.waitForCdnTuneIn(a))return void(this.state=Ja);const o=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&o&&(this.bufferFlushed=!1,this.afterBufferFlushed(o,mr,cn));const l=this.getFwdBufferInfo(o,cn);if(null===l)return;const{bufferedTrack:h,switchingTrack:c}=this;if(!c&&this._streamEnded(l,a))return e.trigger(tr.BUFFER_EOS,{type:"audio"}),void(this.state=to);const d=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,hn),u=l.len,f=this.getMaxBufferLength(null==d?void 0:d.len),g=a.fragments,m=g[0].start;let p=this.flushing?this.getLoadPosition():l.end;if(c&&i){const e=this.getLoadPosition();h&&!pl(c.attrs,h.attrs)&&(p=e),a.PTSKnown&&em||l.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),i.currentTime=m+.05)}if(u>=f&&!c&&pd.end+a.targetduration;if(T||(null==d||!d.len)&&l.len){const e=this.getAppendedFrag(v.start,hn);if(null===e)return;if(y||(y=!!e.gap||!!T&&0===d.len),T&&!y||y&&l.nextStart&&l.nextStartnew Fn(e)))}onAudioTrackSwitching(e,t){const i=!!t.url;this.trackId=t.id;const{fragCurrent:r}=this;r&&(r.abortRequests(),this.removeUnbufferedFrags(r.start)),this.resetLoadingState(),i?this.setInterval(100):this.resetTransmuxer(),i?(this.switchingTrack=t,this.state=qa,this.flushAudioIfNeeded(t)):(this.switchingTrack=null,this.bufferedTrack=t,this.state=Ya),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,null!==this.cachedTrackLoadedData&&(this.hls.trigger(tr.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)}onAudioTrackLoaded(e,t){var i;if(null==this.mainDetails)return void(this.cachedTrackLoadedData=t);const{levels:r}=this,{details:s,id:n}=t;if(!r)return void this.warn(`Audio tracks were reset while loading level ${n}`);this.log(`Audio track ${n} loaded [${s.startSN},${s.endSN}]${s.lastPartSn?`[part-${s.lastPartSn}-${s.lastPartIndex}]`:""},duration:${s.totalduration}`);const a=r[n];let o=0;if(s.live||null!=(i=a.details)&&i.live){this.checkLiveUpdate(s);const e=this.mainDetails;if(s.deltaUpdateFailed||!e)return;var l;if(!a.details&&s.hasProgramDateTime&&e.hasProgramDateTime)Fa(s,e),o=s.fragments[0].start;else o=this.alignPlaylists(s,a.details,null==(l=this.levelLastLoaded)?void 0:l.details)}a.details=s,this.levelLastLoaded=a,this.startFragRequested||!this.mainDetails&&s.live||this.setStartPosition(this.mainDetails||s,o),this.state!==Ja||this.waitForCdnTuneIn(s)||(this.state=qa),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:r,payload:s}=e,{config:n,trackId:a,levels:o}=this;if(!o)return void this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const l=o[a];if(!l)return void this.warn("Audio track is undefined on fragment load progress");const h=l.details;if(!h)return this.warn("Audio track details undefined on fragment load progress"),void this.removeUnbufferedFrags(i.start);const c=n.defaultAudioCodec||l.audioCodec||"mp4a.40.2";let d=this.transmuxer;d||(d=this.transmuxer=new gl(this.hls,cn,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));const u=this.initPTS[i.cc],f=null==(t=i.initSegment)?void 0:t.data;if(void 0!==u){const e=!1,t=r?r.index:-1,n=-1!==t,a=new Ca(i.level,i.sn,i.stats.chunkCount,s.byteLength,t,n);d.push(s,f,c,"",i,r,h.totalduration,e,a,u)}else{this.log(`Unknown video PTS for cc ${i.cc}, waiting for video PTS before demuxing audio frag ${i.sn} of [${h.startSN} ,${h.endSN}],track ${a}`);const{cache:e}=this.waitingData=this.waitingData||{frag:i,part:r,cache:new ao,complete:!1};e.push(new Uint8Array(s)),this.waitingVideoCC=this.videoTrackCC,this.state=ro}}_handleFragmentLoadComplete(e){this.waitingData?this.waitingData.complete=!0:super._handleFragmentLoadComplete(e)}onBufferReset(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1}onBufferCreated(e,t){const i=t.tracks.audio;i&&(this.mediaBuffer=i.buffer||null),t.tracks.video&&(this.videoBuffer=t.tracks.video.buffer||null)}onFragBuffered(e,t){const{frag:i,part:r}=t;if(i.type===cn)if(this.fragContextChanged(i))this.warn(`Fragment ${i.sn}${r?" p: "+r.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);else{if("initSegment"!==i.sn){this.fragPrevious=i;const e=this.switchingTrack;e&&(this.bufferedTrack=e,this.switchingTrack=null,this.hls.trigger(tr.AUDIO_TRACK_SWITCHED,qi({},e)))}this.fragBufferedComplete(i,r)}else if(!this.loadedmetadata&&i.type===hn){const e=this.videoBuffer||this.media;if(e){xa.getBuffered(e).length&&(this.loadedmetadata=!0)}}}onError(e,t){var i;if(t.fatal)this.state=io;else switch(t.details){case rr.FRAG_GAP:case rr.FRAG_PARSING_ERROR:case rr.FRAG_DECRYPT_ERROR:case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(cn,t);break;case rr.AUDIO_TRACK_LOAD_ERROR:case rr.AUDIO_TRACK_LOAD_TIMEOUT:case rr.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==Ja||(null==(i=t.context)?void 0:i.type)!==on||(this.state=qa);break;case rr.BUFFER_APPEND_ERROR:case rr.BUFFER_FULL_ERROR:if(!t.parent||"audio"!==t.parent)return;if(t.details===rr.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&(this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"));break;case rr.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}onBufferFlushing(e,{type:t}){t!==pr&&(this.flushing=!0)}onBufferFlushed(e,{type:t}){if(t!==pr){this.flushing=!1,this.bufferFlushed=!0,this.state===to&&(this.state=qa);const e=this.mediaBuffer||this.media;e&&(this.afterBufferFlushed(e,t,cn),this.tick())}}_handleTransmuxComplete(e){var t;const i="audio",{hls:r}=this,{remuxResult:s,chunkMeta:n}=e,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{details:c}=h,{audio:d,text:u,id3:f,initSegment:g}=s;if(!this.fragContextChanged(o)&&c){if(this.state=Za,this.switchingTrack&&d&&this.completeAudioSwitch(this.switchingTrack),null!=g&&g.tracks){const e=o.initSegment||o;this._bufferInitSegment(h,g.tracks,e,n),r.trigger(tr.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:g.tracks})}if(d){const{startPTS:e,endPTS:t,startDTS:i,endDTS:r}=d;l&&(l.elementaryStreams[mr]={startPTS:e,endPTS:t,startDTS:i,endDTS:r}),o.setElementaryStreamInfo(mr,e,t,i,r),this.bufferFragmentData(d,o,l,n)}if(null!=f&&null!=(t=f.samples)&&t.length){const e=Qi({id:i,frag:o,details:c},f);r.trigger(tr.FRAG_PARSING_METADATA,e)}if(u){const e=Qi({id:i,frag:o,details:c},u);r.trigger(tr.FRAG_PARSING_USERDATA,e)}}else this.fragmentTracker.removeFragment(o)}_bufferInitSegment(e,t,i,r){if(this.state!==Za)return;t.video&&delete t.video;const s=t.audio;if(!s)return;s.id="audio";const n=e.audioCodec;this.log(`Init audio buffer, container:${s.container}, codecs[level/parsed]=[${n}/${s.codec}]`),n&&1===n.split(",").length&&(s.levelCodec=n),this.hls.trigger(tr.BUFFER_CODECS,t);const a=s.initSegment;if(null!=a&&a.byteLength){const e={type:"audio",frag:i,part:null,chunkMeta:r,parent:i.type,data:a};this.hls.trigger(tr.BUFFER_APPENDING,e)}this.tickImmediate()}loadFragment(e,t,i){const r=this.fragmentTracker.getState(e);var s;if(this.fragCurrent=e,this.switchingTrack||r===ba||r===wa)if("initSegment"===e.sn)this._loadInitSegment(e,t);else if(null!=(s=t.details)&&s.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=ro;const i=this.mainDetails;i&&i.fragments[0].start!==t.details.fragments[0].start&&Fa(t.details,i)}else this.startFragRequested=!0,super.loadFragment(e,t,i);else this.clearTrackerIfNeeded(e)}flushAudioIfNeeded(e){const{media:t,bufferedTrack:i}=this,r=null==i?void 0:i.attrs,s=e.attrs;t&&r&&(r.CHANNELS!==s.CHANNELS||i.name!==e.name||i.lang!==e.lang)&&(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null)}completeAudioSwitch(e){const{hls:t}=this;this.flushAudioIfNeeded(e),this.bufferedTrack=e,this.switchingTrack=null,t.trigger(tr.AUDIO_TRACK_SWITCHED,qi({},e))}},audioTrackController:class extends la{constructor(e){super(e,"[audio-track-controller]"),this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVEL_LOADING,this.onLevelLoading,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVEL_LOADING,this.onLevelLoading,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(tr.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.audioTracks||[]}onAudioTrackLoaded(e,t){const{id:i,groupId:r,details:s}=t,n=this.tracksInGroup[i];if(!n||n.groupId!==r)return void this.warn(`Audio track with id:${i} and group:${r} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=t.details,this.log(`Audio track ${i} "${n.name}" lang:${n.lang} group:${r} loaded [${s.startSN}-${s.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.audioGroups||null,r=this.groupIds;let s=this.currentTrack;if(!i||(null==r?void 0:r.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==r?void 0:r.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!s&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.audioPreference;if(!s&&t){const i=va(t,e,Ta);if(i>-1)s=e[i];else{const e=va(t,this.tracks);s=this.tracks[e]}}let r=this.findTrackId(s);-1===r&&s&&(r=this.findTrackId(null));const a={audioTracks:e};this.log(`Updating audio tracks, ${e.length} track(s) found in group(s): ${null==i?void 0:i.join(",")}`),this.hls.trigger(tr.AUDIO_TRACKS_UPDATED,a);const o=this.trackId;if(-1!==r&&-1===o)this.setAudioTrack(r);else if(e.length&&-1===o){var n;const t=new Error(`No audio track selected for current audio group-ID(s): ${null==(n=this.groupIds)?void 0:n.join(",")} track count: ${e.length}`);this.warn(t.message),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:t})}}else this.shouldReloadPlaylist(s)&&this.setAudioTrack(this.trackId)}onError(e,t){!t.fatal&&t.context&&(t.context.type!==on||t.context.id!==this.trackId||this.groupIds&&-1===this.groupIds.indexOf(t.context.groupId)||(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){const t=this.hls;if(t.config.audioPreference=e,e){const i=this.allAudioTracks;if(this.selectDefaultTrack=!1,i.length){const r=this.currentTrack;if(r&&ya(e,r,Ta))return r;const s=va(e,this.tracksInGroup,Ta);if(s>-1){const e=this.tracksInGroup[s];return this.setAudioTrack(s),e}if(r){let r=t.loadLevel;-1===r&&(r=t.firstAutoLevel);const s=function(e,t,i,r,s){const n=t[r],a=t.reduce(((e,t,i)=>{const r=t.uri;return(e[r]||(e[r]=[])).push(i),e}),{})[n.uri];a.length>1&&(r=Math.max.apply(Math,a));const o=n.videoRange,l=n.frameRate,h=n.codecSet.substring(0,4),c=Ea(t,r,(t=>{if(t.videoRange!==o||t.frameRate!==l||t.codecSet.substring(0,4)!==h)return!1;const r=t.audioGroups,n=i.filter((e=>!r||-1!==r.indexOf(e.groupId)));return va(e,n,s)>-1}));return c>-1?c:Ea(t,r,(t=>{const r=t.audioGroups,n=i.filter((e=>!r||-1!==r.indexOf(e.groupId)));return va(e,n,s)>-1}))}(e,t.levels,i,r,Ta);if(-1===s)return null;t.nextLoadLevel=s}if(e.channels||e.audioCodec){const t=va(e,i);if(t>-1)return i[t]}}}return null}setAudioTrack(e){const t=this.tracksInGroup;if(e<0||e>=t.length)return void this.warn(`Invalid audio track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,r=t[e],s=r.details&&!r.details.live;if(e===this.trackId&&r===i&&s)return;if(this.log(`Switching to audio-track ${e} "${r.name}" lang:${r.lang} group:${r.groupId} channels:${r.channels}`),this.trackId=e,this.currentTrack=r,this.hls.trigger(tr.AUDIO_TRACK_SWITCHING,qi({},r)),s)return;const n=this.switchParams(r.url,null==i?void 0:i.details,r.details);this.loadPlaylist(n)}findTrackId(e){const t=this.tracksInGroup;for(let i=0;i{this.initialized&&(this.starved=!0),this.buffering=!0},this.onPlaying=()=>{this.initialized||(this.initialized=!0),this.buffering=!1},this.applyPlaylistData=e=>{try{this.apply(e,{ot:Eh.MANIFEST,su:!this.initialized})}catch(e){lr.warn("Could not generate manifest CMCD data.",e)}},this.applyFragmentData=e=>{try{const t=e.frag,i=this.hls.levels[t.level],r=this.getObjectType(t),s={d:1e3*t.duration,ot:r};r!==Eh.VIDEO&&r!==Eh.AUDIO&&r!=Eh.MUXED||(s.br=i.bitrate/1e3,s.tb=this.getTopBandwidth(r)/1e3,s.bl=this.getBufferLength(r)),this.apply(e,s)}catch(e){lr.warn("Could not generate segment CMCD data.",e)}},this.hls=e;const t=this.config=e.config,{cmcd:i}=t;null!=i&&(t.pLoader=this.createPlaylistLoader(),t.fLoader=this.createFragmentLoader(),this.sid=i.sessionId||function(){try{return crypto.randomUUID()}catch(e){try{const e=URL.createObjectURL(new Blob),t=e.toString();return URL.revokeObjectURL(e),t.slice(t.lastIndexOf("/")+1)}catch(e){let t=(new Date).getTime();const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const i=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?i:3&i|8).toString(16)}));return i}}}(),this.cid=i.contentId,this.useHeaders=!0===i.useHeaders,this.includeKeys=i.includeKeys,this.registerListeners())}registerListeners(){const e=this.hls;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHED,this.onMediaDetached,this),e.on(tr.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){const e=this.hls;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHED,this.onMediaDetached,this),e.off(tr.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 i,r;this.audioBuffer=null==(i=t.tracks.audio)?void 0:i.buffer,this.videoBuffer=null==(r=t.tracks.video)?void 0:r.buffer}createData(){var e;return{v:1,sf:Sh.HLS,sid:this.sid,cid:this.cid,pr:null==(e=this.media)?void 0:e.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}}apply(e,t={}){Qi(t,this.createData());const i=t.ot===Eh.INIT||t.ot===Eh.VIDEO||t.ot===Eh.MUXED;this.starved&&i&&(t.bs=!0,t.su=!0,this.starved=!1),null==t.su&&(t.su=this.buffering);const{includeKeys:r}=this;r&&(t=Object.keys(t).reduce(((e,i)=>(r.includes(i)&&(e[i]=t[i]),e)),{})),this.useHeaders?(e.headers||(e.headers={}),ec(e.headers,t)):e.url=rc(e.url,t)}getObjectType(e){const{type:t}=e;return"subtitle"===t?Eh.TIMED_TEXT:"initSegment"===e.sn?Eh.INIT:"audio"===t?Eh.AUDIO:"main"===t?this.hls.audioTracks.length?Eh.VIDEO:Eh.MUXED:void 0}getTopBandwidth(e){let t,i=0;const r=this.hls;if(e===Eh.AUDIO)t=r.audioTracks;else{const e=r.maxAutoLevel,i=e>-1?e+1:r.levels.length;t=r.levels.slice(0,i)}for(const e of t)e.bitrate>i&&(i=e.bitrate);return i>0?i:NaN}getBufferLength(e){const t=this.hls.media,i=e===Eh.AUDIO?this.audioBuffer:this.videoBuffer;if(!i||!t)return NaN;return 1e3*xa.bufferInfo(i,t.currentTime,this.config.maxBufferHole).len}createPlaylistLoader(){const{pLoader:e}=this.config,t=this.applyPlaylistData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,r){t(e),this.loader.load(e,i,r)}}}createFragmentLoader(){const{fLoader:e}=this.config,t=this.applyFragmentData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,r){t(e),this.loader.load(e,i,r)}}}},contentSteeringController: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=lr.log.bind(lr,"[content-steering]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const e=this.hls;e&&(e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.ERROR,this.onError,this))}startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){const e=1e3*this.timeToLoad-(performance.now()-this.updated);if(e>0)return void this.scheduleRefresh(this.uri,e)}this.loadSteeringManifest(this.uri)}}stopLoad(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()}clearTimeout(){-1!==this.reloadTimer&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(e){const t=this.levels;t&&(this.levels=t.filter((t=>t!==e)))}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(e,t){const{contentSteering:i}=t;null!==i&&(this.pathwayId=i.pathwayId,this.uri=i.uri,this.started&&this.startLoad())}onManifestParsed(e,t){this.audioTracks=t.audioTracks,this.subtitleTracks=t.subtitleTracks}onError(e,t){const{errorAction:i}=t;if((null==i?void 0:i.action)===ia&&i.flags===aa){const e=this.levels;let r=this.pathwayPriority,s=this.pathwayId;if(t.context){const{groupId:i,pathwayId:r,type:n}=t.context;i&&e?s=this.getPathwayForGroupId(i,n,s):r&&(s=r)}s in this.penalizedPathways||(this.penalizedPathways[s]=performance.now()),!r&&e&&(r=e.reduce(((e,t)=>(-1===e.indexOf(t.pathwayId)&&e.push(t.pathwayId),e)),[])),r&&r.length>1&&(this.updatePathwayPriority(r),i.resolved=this.pathwayId!==s),i.resolved||lr.warn(`Could not resolve ${t.details} ("${t.error.message}") with content-steering for Pathway: ${s} levels: ${e?e.length:e} priorities: ${JSON.stringify(r)} penalized: ${JSON.stringify(this.penalizedPathways)}`)}}filterParsedLevels(e){this.levels=e;let t=this.getLevelsForPathway(this.pathwayId);if(0===t.length){const i=e[0].pathwayId;this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to "${i}"`),t=this.getLevelsForPathway(i),this.pathwayId=i}return t.length!==e.length?(this.log(`Found ${t.length}/${e.length} levels in Pathway "${this.pathwayId}"`),t):e}getLevelsForPathway(e){return null===this.levels?[]:this.levels.filter((t=>e===t.pathwayId))}updatePathwayPriority(e){let t;this.pathwayPriority=e;const i=this.penalizedPathways,r=performance.now();Object.keys(i).forEach((e=>{r-i[e]>3e5&&delete i[e]}));for(let r=0;r0){this.log(`Setting Pathway to "${s}"`),this.pathwayId=s,jn(t),this.hls.trigger(tr.LEVELS_UPDATED,{levels:t});const e=this.hls.levels[n];a&&e&&this.levels&&(e.attrs["STABLE-VARIANT-ID"]!==a.attrs["STABLE-VARIANT-ID"]&&e.bitrate!==a.bitrate&&this.log(`Unstable Pathways change from bitrate ${a.bitrate} to ${e.bitrate}`),this.hls.nextLoadLevel=n);break}}}getPathwayForGroupId(e,t,i){const r=this.getLevelsForPathway(i).concat(this.levels||[]);for(let i=0;i{const{ID:s,"BASE-ID":n,"URI-REPLACEMENT":a}=e;if(t.some((e=>e.pathwayId===s)))return;const o=this.getLevelsForPathway(n).map((e=>{const t=new dr(e.attrs);t["PATHWAY-ID"]=s;const n=t.AUDIO&&`${t.AUDIO}_clone_${s}`,o=t.SUBTITLES&&`${t.SUBTITLES}_clone_${s}`;n&&(i[t.AUDIO]=n,t.AUDIO=n),o&&(r[t.SUBTITLES]=o,t.SUBTITLES=o);const l=nc(e.uri,t["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",a),h=new Fn({attrs:t,audioCodec:e.audioCodec,bitrate:e.bitrate,height:e.height,name:e.name,url:l,videoCodec:e.videoCodec,width:e.width});if(e.audioGroups)for(let t=1;t{this.log(`Loaded steering manifest: "${r}"`);const n=e.data;if(1!==n.VERSION)return void this.log(`Steering VERSION ${n.VERSION} not supported!`);this.updated=performance.now(),this.timeToLoad=n.TTL;const{"RELOAD-URI":a,"PATHWAY-CLONES":o,"PATHWAY-PRIORITY":l}=n;if(a)try{this.uri=new self.URL(a,r).href}catch(e){return this.enabled=!1,void this.log(`Failed to parse Steering Manifest RELOAD-URI: ${a}`)}this.scheduleRefresh(this.uri||i.url),o&&this.clonePathways(o);const h={steeringManifest:n,url:r.toString()};this.hls.trigger(tr.STEERING_MANIFEST_LOADED,h),l&&this.updatePathwayPriority(l)},onError:(e,t,i,r)=>{if(this.log(`Error loading steering manifest: ${e.code} ${e.text} (${t.url})`),this.stopLoad(),410===e.code)return this.enabled=!1,void this.log(`Steering manifest ${t.url} no longer available`);let s=1e3*this.timeToLoad;if(429!==e.code)this.scheduleRefresh(this.uri||t.url,s);else{const e=this.loader;if("function"==typeof(null==e?void 0:e.getResponseHeader)){const t=e.getResponseHeader("Retry-After");t&&(s=1e3*parseFloat(t))}this.log(`Steering manifest ${t.url} rate limited`)}},onTimeout:(e,t,i)=>{this.log(`Timeout loading steering manifest (${t.url})`),this.scheduleRefresh(this.uri||t.url)}};this.log(`Requesting steering manifest: ${r}`),this.loader.load(s,o,l)}scheduleRefresh(e,t=1e3*this.timeToLoad){this.clearTimeout(),this.reloadTimer=self.setTimeout((()=>{var t;const i=null==(t=this.hls)?void 0:t.media;!i||i.ended?this.scheduleRefresh(e,1e3*this.timeToLoad):this.loadSteeringManifest(e)}),t)}}});function mc(e){return e&&"object"==typeof e?Array.isArray(e)?e.map(mc):Object.keys(e).reduce(((t,i)=>(t[i]=mc(e[i]),t)),{}):e}function pc(e){const t=e.loader;if(t!==hc&&t!==oc)lr.log("[config]: Custom loader detected, cannot enable progressive streaming"),e.progressive=!1;else{(function(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(e){}return!1})()&&(e.loader=hc,e.progressive=!0,e.enableSoftwareAES=!0,lr.log("[config]: Progressive streaming enabled, using FetchLoader"))}}let vc;class yc extends la{constructor(e,t){super(e,"[level-controller]"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=t,this._registerListeners()}_registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.on(tr.ERROR,this.onError,this)}_unregisterListeners(){const{hls:e}=this;e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.off(tr.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach((e=>{e.loadError=0,e.fragmentError=0})),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(e,t){this.resetLevels()}onManifestLoaded(e,t){const i=this.hls.config.preferManagedMediaSource,r=[],s={},n={};let a=!1,o=!1,l=!1;t.levels.forEach((e=>{var t,h;const c=e.attrs;let{audioCodec:d,videoCodec:u}=e;-1!==(null==(t=d)?void 0:t.indexOf("mp4a.40.34"))&&(vc||(vc=/chrome|firefox/i.test(navigator.userAgent)),vc&&(e.audioCodec=d=void 0)),d&&(e.audioCodec=d=Vs(d,i)),0===(null==(h=u)?void 0:h.indexOf("avc1"))&&(u=e.videoCodec=function(e){const t=e.split(".");if(t.length>2){let e=t.shift()+".";return e+=parseInt(t.shift()).toString(16),e+=("000"+parseInt(t.shift()).toString(16)).slice(-4),e}return e}(u));const{width:f,height:g,unknownCodecs:m}=e;if(a||(a=!(!f||!g)),o||(o=!!u),l||(l=!!d),null!=m&&m.length||d&&!Fs(d,"audio",i)||u&&!Fs(u,"video",i))return;const{CODECS:p,"FRAME-RATE":v,"HDCP-LEVEL":y,"PATHWAY-ID":T,RESOLUTION:E,"VIDEO-RANGE":S}=c,b=`${`${T||"."}-`}${e.bitrate}-${E}-${v}-${p}-${S}-${y}`;if(s[b])if(s[b].uri===e.url||e.attrs["PATHWAY-ID"])s[b].addGroupId("audio",c.AUDIO),s[b].addGroupId("text",c.SUBTITLES);else{const t=n[b]+=1;e.attrs["PATHWAY-ID"]=new Array(t+1).join(".");const i=new Fn(e);s[b]=i,r.push(i)}else{const t=new Fn(e);s[b]=t,n[b]=1,r.push(t)}})),this.filterAndSortMediaOptions(r,t,a,o,l)}filterAndSortMediaOptions(e,t,i,r,s){let n=[],a=[],o=e;if((i||r)&&s&&(o=o.filter((({videoCodec:e,videoRange:t,width:i,height:r})=>{return(!!e||!(!i||!r))&&(!!(s=t)&&xn.indexOf(s)>-1);var s}))),0===o.length)return void 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)}`);const e=new Error("no level with compatible codecs found in manifest");this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,error:e,reason:e.message})}}));if(t.audioTracks){const{preferManagedMediaSource:e}=this.hls.config;n=t.audioTracks.filter((t=>!t.audioCodec||Fs(t.audioCodec,"audio",e))),Tc(n)}t.subtitles&&(a=t.subtitles,Tc(a));const l=o.slice(0);o.sort(((e,t)=>{if(e.attrs["HDCP-LEVEL"]!==t.attrs["HDCP-LEVEL"])return(e.attrs["HDCP-LEVEL"]||"")>(t.attrs["HDCP-LEVEL"]||"")?1:-1;if(i&&e.height!==t.height)return e.height-t.height;if(e.frameRate!==t.frameRate)return e.frameRate-t.frameRate;if(e.videoRange!==t.videoRange)return xn.indexOf(e.videoRange)-xn.indexOf(t.videoRange);if(e.videoCodec!==t.videoCodec){const i=Bs(e.videoCodec),r=Bs(t.videoCodec);if(i!==r)return r-i}if(e.uri===t.uri&&e.codecSet!==t.codecSet){const i=$s(e.codecSet),r=$s(t.codecSet);if(i!==r)return r-i}return e.averageBitrate!==t.averageBitrate?e.averageBitrate-t.averageBitrate:0}));let h=l[0];if(this.steering&&(o=this.steering.filterParsedLevels(o),o.length!==l.length))for(let e=0;ei&&i===gc.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=e)}break}const d=s&&!r,u={levels:o,audioTracks:n,subtitleTracks:a,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:s,video:r,altAudio:!d&&n.some((e=>!!e.url))};this.hls.trigger(tr.MANIFEST_PARSED,u),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}get levels(){return 0===this._levels.length?null:this._levels}get level(){return this.currentLevelIndex}set level(e){const t=this._levels;if(0===t.length)return;if(e<0||e>=t.length){const i=new Error("invalid level idx"),r=e<0;if(this.hls.trigger(tr.ERROR,{type:ir.OTHER_ERROR,details:rr.LEVEL_SWITCH_ERROR,level:e,fatal:r,error:i,reason:i.message}),r)return;e=Math.min(e,t.length-1)}const i=this.currentLevelIndex,r=this.currentLevel,s=r?r.attrs["PATHWAY-ID"]:void 0,n=t[e],a=n.attrs["PATHWAY-ID"];if(this.currentLevelIndex=e,this.currentLevel=n,i===e&&n.details&&r&&s===a)return;this.log(`Switching to level ${e} (${n.height?n.height+"p ":""}${n.videoRange?n.videoRange+" ":""}${n.codecSet?n.codecSet+" ":""}@${n.bitrate})${a?" with Pathway "+a:""} from level ${i}${s?" with Pathway "+s:""}`);const o={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(tr.LEVEL_SWITCHING,o);const l=n.details;if(!l||l.live){const e=this.switchParams(n.uri,null==r?void 0:r.details,l);this.loadPlaylist(e)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(e){this.manualLevelIndex=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}get firstLevel(){return this._firstLevel}set firstLevel(e){this._firstLevel=e}get startLevel(){if(void 0===this._startLevel){const e=this.hls.config.startLevel;return void 0!==e?e:this.hls.firstAutoLevel}return this._startLevel}set startLevel(e){this._startLevel=e}onError(e,t){!t.fatal&&t.context&&t.context.type===an&&t.context.level===this.level&&this.checkRetry(t)}onFragBuffered(e,{frag:t}){if(void 0!==t&&t.type===hn){const e=t.elementaryStreams;if(!Object.keys(e).some((t=>!!e[t])))return;const i=this._levels[t.level];null!=i&&i.loadError&&(this.log(`Resetting level error count of ${i.loadError} on frag buffered`),i.loadError=0)}}onLevelLoaded(e,t){var i;const{level:r,details:s}=t,n=this._levels[r];var a;if(!n)return this.warn(`Invalid level index ${r}`),void(null!=(a=t.deliveryDirectives)&&a.skip&&(s.deltaUpdateFailed=!0));r===this.currentLevelIndex?(0===n.fragmentError&&(n.loadError=0),this.playlistLoaded(r,t,n.details)):null!=(i=t.deliveryDirectives)&&i.skip&&(s.deltaUpdateFailed=!0)}loadPlaylist(e){super.loadPlaylist();const t=this.currentLevelIndex,i=this.currentLevel;if(i&&this.shouldLoadPlaylist(i)){let r=i.uri;if(e)try{r=e.addDirectives(r)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}const s=i.attrs["PATHWAY-ID"];this.log(`Loading level index ${t}${void 0!==(null==e?void 0:e.msn)?" at sn "+e.msn+" part "+e.part:""} with${s?" Pathway "+s:""} ${r}`),this.clearTimer(),this.hls.trigger(tr.LEVEL_LOADING,{url:r,level:t,pathwayId:i.attrs["PATHWAY-ID"],id:0,deliveryDirectives:e||null})}}get nextLoadLevel(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(e){this.level=e,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=e)}removeLevel(e){var t;const i=this._levels.filter(((t,i)=>i!==e||(this.steering&&this.steering.removeLevel(t),t===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,t.details&&t.details.fragments.forEach((e=>e.level=-1))),!1)));jn(i),this._levels=i,this.currentLevelIndex>-1&&null!=(t=this.currentLevel)&&t.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.hls.trigger(tr.LEVELS_UPDATED,{levels:i})}onLevelsUpdated(e,{levels:t}){this._levels=t}checkMaxAutoUpdated(){const{autoLevelCapping:e,maxAutoLevel:t,maxHdcpLevel:i}=this.hls;this._maxAutoLevel!==t&&(this._maxAutoLevel=t,this.hls.trigger(tr.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:e,levels:this.levels,maxAutoLevel:t,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:i}))}}function Tc(e){const t={};e.forEach((e=>{const i=e.groupId||"";e.id=t[i]=t[i]||0,t[i]++}))}class Ec{constructor(e){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=e}abort(e){for(const i in this.keyUriToKeyInfo){const r=this.keyUriToKeyInfo[i].loader;if(r){var t;if(e&&e!==(null==(t=r.context)?void 0:t.frag.type))return;r.abort()}}}detach(){for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e];(t.mediaKeySessionContext||t.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[e]}}destroy(){this.detach();for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e].loader;t&&t.destroy()}this.keyUriToKeyInfo={}}createKeyLoadError(e,t=rr.KEY_LOAD_ERROR,i,r,s){return new Ga({type:ir.NETWORK_ERROR,details:t,fatal:!1,frag:e,response:s,error:i,networkDetails:r})}loadClear(e,t){if(this.emeController&&this.config.emeEnabled){const{sn:i,cc:r}=e;for(let e=0;e{s.setKeyFormat(e)}));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 i,r;t&&e.setKeyFormat(t);const s=e.decryptdata;if(!s){const i=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,rr.KEY_LOAD_ERROR,i))}const n=s.uri;if(!n)return Promise.reject(this.createKeyLoadError(e,rr.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${n}"`)));let a=this.keyUriToKeyInfo[n];if(null!=(i=a)&&i.decryptdata.key)return s.key=a.decryptdata.key,Promise.resolve({frag:e,keyInfo:a});var o;if(null!=(r=a)&&r.keyLoadPromise)switch(null==(o=a.mediaKeySessionContext)?void 0:o.keyStatus){case void 0:case"status-pending":case"usable":case"usable-in-future":return a.keyLoadPromise.then((t=>(s.key=t.keyInfo.decryptdata.key,{frag:e,keyInfo:a})))}switch(a=this.keyUriToKeyInfo[n]={decryptdata:s,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},s.method){case"ISO-23001-7":case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return"identity"===s.keyFormat?this.loadKeyHTTP(a,e):this.loadKeyEME(a,e);case"AES-128":return this.loadKeyHTTP(a,e);default:return Promise.reject(this.createKeyLoadError(e,rr.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${s.method}"`)))}}loadKeyEME(e,t){const i={frag:t,keyInfo:e};if(this.emeController&&this.config.emeEnabled){const t=this.emeController.loadKey(i);if(t)return(e.keyLoadPromise=t.then((t=>(e.mediaKeySessionContext=t,i)))).catch((t=>{throw e.keyLoadPromise=null,t}))}return Promise.resolve(i)}loadKeyHTTP(e,t){const i=this.config,r=new(0,i.loader)(i);return t.keyLoader=e.loader=r,e.keyLoadPromise=new Promise(((s,n)=>{const a={keyInfo:e,frag:t,responseType:"arraybuffer",url:e.decryptdata.uri},o=i.keyLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(e,t,i,r)=>{const{frag:a,keyInfo:o,url:l}=i;if(!a.decryptdata||o!==this.keyUriToKeyInfo[l])return n(this.createKeyLoadError(a,rr.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),r));o.decryptdata.key=a.decryptdata.key=new Uint8Array(e.data),a.keyLoader=null,o.loader=null,s({frag:a,keyInfo:o})},onError:(e,i,r,s)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.KEY_LOAD_ERROR,new Error(`HTTP Error ${e.code} loading key ${e.text}`),r,qi({url:a.url,data:void 0},e)))},onTimeout:(e,i,r)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),r))},onAbort:(e,i,r)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.INTERNAL_ABORTED,new Error("key loading aborted"),r))}};r.load(a,l,h)}))}resetLoader(e){const{frag:t,keyInfo:i,url:r}=e,s=i.loader;t.keyLoader===s&&(t.keyLoader=null,i.loader=null),delete this.keyUriToKeyInfo[r],s&&s.destroy()}}function Sc(){return self.SourceBuffer||self.WebKitSourceBuffer}function bc(){if(!Os())return!1;const e=Sc();return!e||e.prototype&&"function"==typeof e.prototype.appendBuffer&&"function"==typeof e.prototype.remove}class Lc{constructor(e,t,i,r){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=i,this.hls=r}destroy(){this.media=null,this.hls=this.fragmentTracker=null}poll(e,t){const{config:i,media:r,stalled:s}=this;if(null===r)return;const{currentTime:n,seeking:a}=r,o=this.seeking&&!a,l=!this.seeking&&a;if(this.seeking=a,n!==e){if(this.moved=!0,a||(this.nudgeRetry=0),null!==s){if(this.stallReported){const e=self.performance.now()-s;lr.warn(`playback not stuck anymore @${n}, after ${Math.round(e)}ms`),this.stallReported=!1}this.stalled=null}return}if(l||o)return void(this.stalled=null);if(r.paused&&!a||r.ended||0===r.playbackRate||!xa.getBuffered(r).length)return void(this.nudgeRetry=0);const h=xa.bufferInfo(r,n,0),c=h.nextStart||0;if(a){const e=h.len>2,i=!c||t&&t.start<=n||c-n>2&&!this.fragmentTracker.getPartialFragment(n);if(e||i)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var d;if(!(h.len>0)&&!c)return;const e=Math.max(c,h.start||0)-n,t=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,i=(null==t||null==(d=t.details)?void 0:d.live)?2*t.details.targetduration:2,s=this.fragmentTracker.getPartialFragment(n);if(e>0&&(e<=i||s))return void(r.paused||this._trySkipBufferHole(s))}const u=self.performance.now();if(null===s)return void(this.stalled=u);const f=u-s;if(!a&&f>=250&&(this._reportStall(h),!this.media))return;const g=xa.bufferInfo(r,n,i.maxBufferHole);this._tryFixBufferStall(g,f)}_tryFixBufferStall(e,t){const{config:i,fragmentTracker:r,media:s}=this;if(null===s)return;const n=s.currentTime,a=r.getPartialFragment(n);if(a){if(this._trySkipBufferHole(a)||!this.media)return}(e.len>i.maxBufferHole||e.nextStart&&e.nextStart-n1e3*i.highBufferWatchdogPeriod&&(lr.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}_reportStall(e){const{hls:t,media:i,stallReported:r}=this;if(!r&&i){this.stallReported=!0;const r=new Error(`Playback stalling at @${i.currentTime} due to low buffer (${JSON.stringify(e)})`);lr.warn(r.message),t.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_STALLED_ERROR,fatal:!1,error:r,buffer:e.len})}}_trySkipBufferHole(e){const{config:t,hls:i,media:r}=this;if(null===r)return 0;const s=r.currentTime,n=xa.bufferInfo(r,s,0),a=s0&&n.len<1&&r.readyState<3,h=a-s;if(h>0&&(o||l)){if(h>t.maxBufferHole){const{fragmentTracker:t}=this;let i=!1;if(0===s){const e=t.getAppendedFrag(0,hn);e&&a1?(e=0,this.bitrateTest=!0):e=i.firstAutoLevel),i.nextLoadLevel=e,this.level=i.loadLevel,this.loadedmetadata=!1}t>0&&-1===e&&(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t),this.state=qa,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=Ya}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case so:{const{levels:e,level:t}=this,i=null==e?void 0:e[t],r=null==i?void 0:i.details;if(r&&(!r.live||this.levelLastLoaded===i)){if(this.waitForCdnTuneIn(r))break;this.state=qa;break}if(this.hls.nextLoadLevel!==this.level){this.state=qa;break}break}case Qa:{var e;const t=self.performance.now(),i=this.retryDate;if(!i||t>=i||null!=(e=this.media)&&e.seeking){const{levels:e,level:t}=this,i=null==e?void 0:e[t];this.resetStartWhenNotLoaded(i||null),this.state=qa}}}this.state===qa&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){super.onTickEnd(),this.checkBuffer(),this.checkFragmentChanged()}doTickIdle(){const{hls:e,levelLastLoaded:t,levels:i,media:r}=this;if(null===t||!r&&(this.startFragRequested||!e.config.startFragPrefetch))return;if(this.altAudio&&this.audioOnly)return;const s=e.nextLoadLevel;if(null==i||!i[s])return;const n=i[s],a=this.getMainFwdBufferInfo();if(null===a)return;const o=this.getLevelDetails();if(o&&this._streamEnded(a,o)){const e={};return this.altAudio&&(e.type="video"),this.hls.trigger(tr.BUFFER_EOS,e),void(this.state=to)}e.loadLevel!==s&&-1===e.manualLevel&&this.log(`Adapting to level ${s} from level ${this.level}`),this.level=e.nextLoadLevel=s;const l=n.details;if(!l||this.state===so||l.live&&this.levelLastLoaded!==n)return this.level=s,void(this.state=so);const h=a.len,c=this.getMaxBufferLength(n.maxBitrate);if(h>=c)return;this.backtrackFragment&&this.backtrackFragment.start>a.end&&(this.backtrackFragment=null);const d=this.backtrackFragment?this.backtrackFragment.start:a.end;let u=this.getNextFragment(d,l);if(this.couldBacktrack&&!this.fragPrevious&&u&&"initSegment"!==u.sn&&this.fragmentTracker.getState(u)!==Aa){var f;const e=(null!=(f=this.backtrackFragment)?f:u).sn-l.startSN,t=l.fragments[e-1];t&&u.cc===t.cc&&(u=t,this.fragmentTracker.removeFragment(t))}else this.backtrackFragment&&a.len&&(this.backtrackFragment=null);if(u&&this.isLoopLoading(u,d)){if(!u.gap){const e=this.audioOnly&&!this.altAudio?mr:pr,t=(e===pr?this.videoBuffer:this.mediaBuffer)||this.media;t&&this.afterBufferFlushed(t,e,hn)}u=this.getNextFragmentLoopLoading(u,l,a,hn,c)}u&&(!u.initSegment||u.initSegment.data||this.bitrateTest||(u=u.initSegment),this.loadFragment(u,n,d))}loadFragment(e,t,i){const r=this.fragmentTracker.getState(e);this.fragCurrent=e,r===ba||r===wa?"initSegment"===e.sn?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,i)):this.clearTrackerIfNeeded(e)}getBufferedFrag(e){return this.fragmentTracker.getBufferedFrag(e,hn)}followingBufferedFrag(e){return e?this.getBufferedFrag(e.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:e,media:t}=this;if(null!=t&&t.readyState){let i;const r=this.getAppendedFrag(t.currentTime);r&&r.start>1&&this.flushMainBuffer(0,r.start-1);const s=this.getLevelDetails();if(null!=s&&s.live){const e=this.getMainFwdBufferInfo();if(!e||e.len<2*s.targetduration)return}if(!t.paused&&e){const t=e[this.hls.nextLoadLevel],r=this.fragLastKbps;i=r&&this.fragCurrent?this.fragCurrent.duration*t.maxBitrate/(1e3*r)+1:0}else i=0;const n=this.getBufferedFrag(t.currentTime+i);if(n){const e=this.followingBufferedFrag(n);if(e){this.abortCurrentFrag();const t=e.maxStartPTS?e.maxStartPTS:e.start,i=e.duration,r=Math.max(n.end,t+Math.min(Math.max(i-this.config.maxFragLookUpTolerance,i*(this.couldBacktrack?.5:.125)),i*(this.couldBacktrack?.75:.25)));this.flushMainBuffer(r,Number.POSITIVE_INFINITY)}}}}abortCurrentFrag(){const e=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,e&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.state){case za:case Xa:case Qa:case Za:case eo:this.state=qa}this.nextLoadPosition=this.getLoadPosition()}flushMainBuffer(e,t){super.flushMainBuffer(e,t,this.altAudio?"video":null)}onMediaAttached(e,t){super.onMediaAttached(e,t);const i=t.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),i.addEventListener("playing",this.onvplaying),i.addEventListener("seeked",this.onvseeked),this.gapController=new Lc(this.config,i,this.fragmentTracker,this.hls)}onMediaDetaching(){const{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(){const e=this.media,t=e?e.currentTime:null;Ji(t)&&this.log(`Media seeked to ${t.toFixed(3)}`);const i=this.getMainFwdBufferInfo();null!==i&&0!==i.len?this.tick():this.warn(`Main forward buffer length on "seeked" event ${i?i.len:"empty"})`)}onManifestLoading(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(tr.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 i=!1,r=!1;t.levels.forEach((e=>{const t=e.audioCodec;t&&(i=i||-1!==t.indexOf("mp4a.40.2"),r=r||-1!==t.indexOf("mp4a.40.5"))})),this.audioCodecSwitch=i&&r&&!function(){var e;const t=Sc();return"function"==typeof(null==t||null==(e=t.prototype)?void 0:e.changeType)}(),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){const{levels:i}=this;if(!i||this.state!==qa)return;const r=i[t.level];(!r.details||r.details.live&&this.levelLastLoaded!==r||this.waitForCdnTuneIn(r.details))&&(this.state=so)}onLevelLoaded(e,t){var i;const{levels:r}=this,s=t.level,n=t.details,a=n.totalduration;if(!r)return void this.warn(`Levels were reset while loading level ${s}`);this.log(`Level ${s} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""}, cc [${n.startCC}, ${n.endCC}] duration:${a}`);const o=r[s],l=this.fragCurrent;!l||this.state!==Xa&&this.state!==Qa||l.level!==t.level&&l.loader&&this.abortCurrentFrag();let h=0;if(n.live||null!=(i=o.details)&&i.live){var c;if(this.checkLiveUpdate(n),n.deltaUpdateFailed)return;h=this.alignPlaylists(n,o.details,null==(c=this.levelLastLoaded)?void 0:c.details)}if(o.details=n,this.levelLastLoaded=o,this.hls.trigger(tr.LEVEL_UPDATED,{details:n,level:s}),this.state===so){if(this.waitForCdnTuneIn(n))return;this.state=qa}this.startFragRequested?n.live&&this.synchronizeToLiveEdge(n):this.setStartPosition(n,h),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:r,payload:s}=e,{levels:n}=this;if(!n)return void this.warn(`Levels were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const a=n[i.level],o=a.details;if(!o)return this.warn(`Dropping fragment ${i.sn} of level ${i.level} after level details were reset`),void this.fragmentTracker.removeFragment(i);const l=a.videoCodec,h=o.PTSKnown||!o.live,c=null==(t=i.initSegment)?void 0:t.data,d=this._getAudioCodec(a),u=this.transmuxer=this.transmuxer||new gl(this.hls,hn,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),f=r?r.index:-1,g=-1!==f,m=new Ca(i.level,i.sn,i.stats.chunkCount,s.byteLength,f,g),p=this.initPTS[i.cc];u.push(s,c,d,l,i,r,o.totalduration,h,m,p)}onAudioTrackSwitching(e,t){const i=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;const e=this.fragCurrent;e&&(this.log("Switching to main audio track, cancel main fragment load"),e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();const e=this.hls;i&&(e.trigger(tr.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),e.trigger(tr.AUDIO_TRACK_SWITCHED,t)}}onAudioTrackSwitched(e,t){const i=t.id,r=!!this.hls.audioTracks[i].url;if(r){const e=this.videoBuffer;e&&this.mediaBuffer!==e&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=e)}this.altAudio=r,this.tick()}onBufferCreated(e,t){const i=t.tracks;let r,s,n=!1;for(const e in i){const t=i[e];if("main"===t.id){if(s=e,r=t,"video"===e){const t=i[e];t&&(this.videoBuffer=t.buffer)}}else n=!0}n&&r?(this.log(`Alternate track found, use ${s}.buffered to schedule main fragment loading`),this.mediaBuffer=r.buffer):this.mediaBuffer=this.media}onFragBuffered(e,t){const{frag:i,part:r}=t;if(i&&i.type!==hn)return;if(this.fragContextChanged(i))return this.warn(`Fragment ${i.sn}${r?" p: "+r.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}`),void(this.state===eo&&(this.state=qa));const s=r?r.stats:i.stats;this.fragLastKbps=Math.round(8*s.total/(s.buffering.end-s.loading.first)),"initSegment"!==i.sn&&(this.fragPrevious=i),this.fragBufferedComplete(i,r)}onError(e,t){var i;if(t.fatal)this.state=io;else switch(t.details){case rr.FRAG_GAP:case rr.FRAG_PARSING_ERROR:case rr.FRAG_DECRYPT_ERROR:case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(hn,t);break;case rr.LEVEL_LOAD_ERROR:case rr.LEVEL_LOAD_TIMEOUT:case rr.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==so||(null==(i=t.context)?void 0:i.type)!==an||(this.state=qa);break;case rr.BUFFER_APPEND_ERROR:case rr.BUFFER_FULL_ERROR:if(!t.parent||"main"!==t.parent)return;if(t.details===rr.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case rr.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}checkBuffer(){const{media:e,gapController:t}=this;if(e&&t&&e.readyState){if(this.loadedmetadata||!xa.getBuffered(e).length){const e=this.state!==qa?this.fragCurrent:null;t.poll(this.lastCurrentTime,e)}this.lastCurrentTime=e.currentTime}}onFragLoadEmergencyAborted(){this.state=qa,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()}onBufferFlushed(e,{type:t}){if(t!==mr||this.audioOnly&&!this.altAudio){const e=(t===pr?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(e,t,hn),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(){const{media:e}=this;if(!e)return;const t=e.currentTime;let i=this.startPosition;if(i>=0&&t0&&(s{const{hls:r}=this;if(!i||this.fragContextChanged(e))return;t.fragmentError=0,this.state=qa,this.startFragRequested=!1,this.bitrateTest=!1;const s=e.stats;s.parsing.start=s.parsing.end=s.buffering.start=s.buffering.end=self.performance.now(),r.trigger(tr.FRAG_LOADED,i),e.bitrateTest=!1}))}_handleTransmuxComplete(e){var t;const i="main",{hls:r}=this,{remuxResult:s,chunkMeta:n}=e,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{video:c,text:d,id3:u,initSegment:f}=s,{details:g}=h,m=this.altAudio?void 0:s.audio;if(this.fragContextChanged(o))this.fragmentTracker.removeFragment(o);else{if(this.state=Za,f){if(null!=f&&f.tracks){const e=o.initSegment||o;this._bufferInitSegment(h,f.tracks,e,n),r.trigger(tr.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:f.tracks})}const e=f.initPTS,t=f.timescale;Ji(e)&&(this.initPTS[o.cc]={baseTime:e,timescale:t},r.trigger(tr.INIT_PTS_FOUND,{frag:o,id:i,initPTS:e,timescale:t}))}if(c&&g&&"initSegment"!==o.sn){const e=g.fragments[o.sn-1-g.startSN],t=o.sn===g.startSN,i=!e||o.cc>e.cc;if(!1!==s.independent){const{startPTS:e,endPTS:r,startDTS:s,endDTS:a}=c;if(l)l.elementaryStreams[c.type]={startPTS:e,endPTS:r,startDTS:s,endDTS:a};else if(c.firstKeyFrame&&c.independent&&1===n.id&&!i&&(this.couldBacktrack=!0),c.dropped&&c.independent){const s=this.getMainFwdBufferInfo(),n=(s?s.end:this.getLoadPosition())+this.config.maxBufferHole,l=c.firstKeyFramePTS?c.firstKeyFramePTS:e;if(!t&&n2&&(o.gap=!0);o.setElementaryStreamInfo(c.type,e,r,s,a),this.backtrackFragment&&(this.backtrackFragment=o),this.bufferFragmentData(c,o,l,n,t||i)}else{if(!t&&!i)return void this.backtrack(o);o.gap=!0}}if(m){const{startPTS:e,endPTS:t,startDTS:i,endDTS:r}=m;l&&(l.elementaryStreams[mr]={startPTS:e,endPTS:t,startDTS:i,endDTS:r}),o.setElementaryStreamInfo(mr,e,t,i,r),this.bufferFragmentData(m,o,l,n)}if(g&&null!=u&&null!=(t=u.samples)&&t.length){const e={id:i,frag:o,details:g,samples:u.samples};r.trigger(tr.FRAG_PARSING_METADATA,e)}if(g&&d){const e={id:i,frag:o,details:g,samples:d.samples};r.trigger(tr.FRAG_PARSING_USERDATA,e)}}}_bufferInitSegment(e,t,i,r){if(this.state!==Za)return;this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&delete t.audio;const{audio:s,video:n,audiovideo:a}=t;if(s){let t=e.audioCodec;const i=navigator.userAgent.toLowerCase();if(this.audioCodecSwitch){t&&(t=-1!==t.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5");const e=s.metadata;e&&"channelCount"in e&&1!==(e.channelCount||1)&&-1===i.indexOf("firefox")&&(t="mp4a.40.5")}t&&-1!==t.indexOf("mp4a.40.5")&&-1!==i.indexOf("android")&&"audio/mpeg"!==s.container&&(t="mp4a.40.2",this.log(`Android: force audio codec to ${t}`)),e.audioCodec&&e.audioCodec!==t&&this.log(`Swapping manifest audio codec "${e.audioCodec}" for "${t}"`),s.levelCodec=t,s.id="main",this.log(`Init audio buffer, container:${s.container}, codecs[selected/level/parsed]=[${t||""}/${e.audioCodec||""}/${s.codec}]`)}n&&(n.levelCodec=e.videoCodec,n.id="main",this.log(`Init video buffer, container:${n.container}, codecs[level/parsed]=[${e.videoCodec||""}/${n.codec}]`)),a&&this.log(`Init audiovideo buffer, container:${a.container}, codecs[level/parsed]=[${e.codecs}/${a.codec}]`),this.hls.trigger(tr.BUFFER_CODECS,t),Object.keys(t).forEach((e=>{const s=t[e].initSegment;null!=s&&s.byteLength&&this.hls.trigger(tr.BUFFER_APPENDING,{type:e,data:s,frag:i,part:null,chunkMeta:r,parent:i.type})})),this.tickImmediate()}getMainFwdBufferInfo(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,hn)}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=qa}checkFragmentChanged(){const e=this.media;let t=null;if(e&&e.readyState>1&&!1===e.seeking){const i=e.currentTime;if(xa.isBuffered(e,i)?t=this.getAppendedFrag(i):xa.isBuffered(e,i+.1)&&(t=this.getAppendedFrag(i+.1)),t){this.backtrackFragment=null;const e=this.fragPlaying,i=t.level;e&&t.sn===e.sn&&e.level===i||(this.fragPlaying=t,this.hls.trigger(tr.FRAG_CHANGED,{frag:t}),e&&e.level===i||this.hls.trigger(tr.LEVEL_SWITCHED,{level:i}))}}}get nextLevel(){const e=this.nextBufferedFrag;return e?e.level:-1}get currentFrag(){const e=this.media;return e?this.fragPlaying||this.getAppendedFrag(e.currentTime):null}get currentProgramDateTime(){const e=this.media;if(e){const t=e.currentTime,i=this.currentFrag;if(i&&Ji(t)&&Ji(i.programDateTime)){const e=i.programDateTime+1e3*(t-i.start);return new Date(e)}}return null}get currentLevel(){const e=this.currentFrag;return e?e.level:-1}get nextBufferedFrag(){const e=this.currentFrag;return e?this.followingBufferedFrag(e):null}get forceStartLoad(){return this._forceStartLoad}}class Ac{static get version(){return"1.5.11"}static isMSESupported(){return bc()}static isSupported(){return function(){if(!bc())return!1;const e=Os();return"function"==typeof(null==e?void 0:e.isTypeSupported)&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some((t=>e.isTypeSupported(Us(t,"video"))))||["mp4a.40.2","fLaC"].some((t=>e.isTypeSupported(Us(t,"audio")))))}()}static getMediaSource(){return Os()}static get Events(){return tr}static get ErrorTypes(){return ir}static get ErrorDetails(){return rr}static get DefaultConfig(){return Ac.defaultConfig?Ac.defaultConfig:gc}static set DefaultConfig(e){Ac.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 fl,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,function(e,t){if("object"==typeof console&&!0===e||"object"==typeof e){or(e,"debug","log","info","warn","error");try{ar.log(`Debug logs enabled for "${t}" in hls.js version 1.5.11`)}catch(e){ar=nr}}else ar=nr}(e.debug||!1,"Hls instance");const t=this.config=function(e,t){if((t.liveSyncDurationCount||t.liveMaxLatencyDurationCount)&&(t.liveSyncDuration||t.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==t.liveMaxLatencyDurationCount&&(void 0===t.liveSyncDurationCount||t.liveMaxLatencyDurationCount<=t.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==t.liveMaxLatencyDuration&&(void 0===t.liveSyncDuration||t.liveMaxLatencyDuration<=t.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');const i=mc(e),r=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach((e=>{const s=`${"level"===e?"playlist":e}LoadPolicy`,n=void 0===t[s],a=[];r.forEach((r=>{const o=`${e}Loading${r}`,l=t[o];if(void 0!==l&&n){a.push(o);const e=i[s].default;switch(t[s]={default:e},r){case"TimeOut":e.maxLoadTimeMs=l,e.maxTimeToFirstByteMs=l;break;case"MaxRetry":e.errorRetry.maxNumRetry=l,e.timeoutRetry.maxNumRetry=l;break;case"RetryDelay":e.errorRetry.retryDelayMs=l,e.timeoutRetry.retryDelayMs=l;break;case"MaxRetryTimeout":e.errorRetry.maxRetryDelayMs=l,e.timeoutRetry.maxRetryDelayMs=l}}})),a.length&&lr.warn(`hls.js config: "${a.join('", "')}" setting(s) are deprecated, use "${s}": ${JSON.stringify(t[s])}`)})),qi(qi({},i),t)}(Ac.DefaultConfig,e);this.userConfig=e,t.progressive&&pc(t);const{abrController:i,bufferController:r,capLevelController:s,errorController:n,fpsController:a}=t,o=new n(this),l=this.abrController=new i(this),h=this.bufferController=new r(this),c=this.capLevelController=new s(this),d=new a(this),u=new gn(this),f=new kn(this),g=t.contentSteeringController,m=g?new g(this):null,p=this.levelController=new yc(this,m),v=new Ra(this),y=new Ec(this.config),T=this.streamController=new wc(this,v,y);c.setStreamController(T),d.setStreamController(T);const E=[u,p,T];m&&E.splice(1,0,m),this.networkControllers=E;const S=[l,h,c,d,f,v];this.audioTrackController=this.createController(t.audioTrackController,E);const b=t.audioStreamController;b&&E.push(new b(this,v,y)),this.subtitleTrackController=this.createController(t.subtitleTrackController,E);const L=t.subtitleStreamController;L&&E.push(new L(this,v,y)),this.createController(t.timelineController,S),y.emeController=this.emeController=this.createController(t.emeController,S),this.cmcdController=this.createController(t.cmcdController,S),this.latencyController=this.createController(_n,S),this.coreComponents=S,E.push(o);const w=o.onErrorOut;"function"==typeof w&&this.on(tr.ERROR,w,o)}createController(e,t){if(e){const i=new e(this);return t&&t.push(i),i}return null}on(e,t,i=this){this._emitter.on(e,t,i)}once(e,t,i=this){this._emitter.once(e,t,i)}removeAllListeners(e){this._emitter.removeAllListeners(e)}off(e,t,i=this,r){this._emitter.off(e,t,i,r)}listeners(e){return this._emitter.listeners(e)}emit(e,t,i){return this._emitter.emit(e,t,i)}trigger(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(t){if(lr.error("An internal error happened while handling event "+e+'. Error message: "'+t.message+'". Here is a stacktrace:',t),!this.triggeringException){this.triggeringException=!0;const i=e===tr.ERROR;this.trigger(tr.ERROR,{type:ir.OTHER_ERROR,details:rr.INTERNAL_EXCEPTION,fatal:i,event:e,error:t}),this.triggeringException=!1}}return!1}listenerCount(e){return this._emitter.listenerCount(e)}destroy(){lr.log("destroy"),this.trigger(tr.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((e=>e.destroy())),this.networkControllers.length=0,this.coreComponents.forEach((e=>e.destroy())),this.coreComponents.length=0;const e=this.config;e.xhrSetup=e.fetchSetup=void 0,this.userConfig=null}attachMedia(e){lr.log("attachMedia"),this._media=e,this.trigger(tr.MEDIA_ATTACHING,{media:e})}detachMedia(){lr.log("detachMedia"),this.trigger(tr.MEDIA_DETACHING,void 0),this._media=null}loadSource(e){this.stopLoad();const t=this.media,i=this.url,r=this.url=Wi.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,lr.log(`loadSource:${r}`),t&&i&&(i!==r||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(t)),this.trigger(tr.MANIFEST_LOADING,{url:e})}startLoad(e=-1){lr.log(`startLoad(${e})`),this.started=!0,this.networkControllers.forEach((t=>{t.startLoad(e)}))}stopLoad(){lr.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(){lr.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){lr.log("recoverMediaError");const e=this._media;this.detachMedia(),e&&this.attachMedia(e)}removeLevel(e){this.levelController.removeLevel(e)}get levels(){const e=this.levelController.levels;return e||[]}get currentLevel(){return this.streamController.currentLevel}set currentLevel(e){lr.log(`set currentLevel:${e}`),this.levelController.manualLevel=e,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(e){lr.log(`set nextLevel:${e}`),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(e){lr.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){lr.log(`set firstLevel:${e}`),this.levelController.firstLevel=e}get startLevel(){const e=this.levelController.startLevel;return-1===e&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:e}set startLevel(e){lr.log(`set startLevel:${e}`),-1!==e&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(e){const t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimate():NaN}set bandwidthEstimate(e){this.abrController.resetEstimator(e)}get ttfbEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimateTTFB():NaN}set autoLevelCapping(e){this._autoLevelCapping!==e&&(lr.log(`set autoLevelCapping:${e}`),this._autoLevelCapping=e,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(e){(function(e){return Dn.indexOf(e)>-1})(e)&&this._maxHdcpLevel!==e&&(this._maxHdcpLevel=e,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return-1===this.levelController.manualLevel}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:e,config:{minAutoBitrate:t}}=this;if(!e)return 0;const i=e.length;for(let r=0;r=t)return r;return 0}get maxAutoLevel(){const{levels:e,autoLevelCapping:t,maxHdcpLevel:i}=this;let r;if(r=-1===t&&null!=e&&e.length?e.length-1:t,i)for(let t=r;t--;){const r=e[t].attrs["HDCP-LEVEL"];if(r&&r<=i)return t}return r}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 null==(t=this.audioTrackController)?void 0:t.setAudioOption(e)}setSubtitleOption(e){var t;return null==(t=this.subtitleTrackController)||t.setSubtitleOption(e),null}get allAudioTracks(){const e=this.audioTrackController;return e?e.allAudioTracks:[]}get audioTracks(){const e=this.audioTrackController;return e?e.audioTracks:[]}get audioTrack(){const e=this.audioTrackController;return e?e.audioTrack:-1}set audioTrack(e){const t=this.audioTrackController;t&&(t.audioTrack=e)}get allSubtitleTracks(){const e=this.subtitleTrackController;return e?e.allSubtitleTracks:[]}get subtitleTracks(){const e=this.subtitleTrackController;return e?e.subtitleTracks:[]}get subtitleTrack(){const e=this.subtitleTrackController;return e?e.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(e){const t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}get subtitleDisplay(){const e=this.subtitleTrackController;return!!e&&e.subtitleDisplay}set subtitleDisplay(e){const t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(e){this.config.lowLatencyMode=e}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}}function Rc(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e.$video.volume=e._options.volume)}),1e3)})),e.event.emit("parsed")}))}))}else if(this.$video.canPlayType("application/vnd.apple.mpegurl")){this.logger.log("Browser support application/vnd.apple.mpegurl : ",this.$video.canPlayType("application/vnd.apple.mpegurl")),this.$video.src=this._options.url;var i=!1;this.$video.addEventListener("canplay",(function(){!i&&e._options.autoPlay&&setTimeout((function(){e.$video.play().then((function(){e.logger.log("autoPlay video!"),setTimeout((function(){e._options.volume>0&&e.setVolume(e._options.volume)}),1e3),i=!0}))}),200)}))}else this.logger.warn("Browser not support hls")},i.isPlayingState=function(){return!this.$video.paused},i.play=function(){if(this.isPlayingState())return Promise.resolve();if(this._options.isLive&&(this.$video.buffered.length>=1&&this.$video.buffered.end(0)>1)){var e=this.$video.buffered.end(0)-1;this.$video.currentTime=e}return this.$video.play()},i.pause=function(){this.$video.pause()},i.setVolume=function(e){this.$video.muted&&(this.$video.muted=!1),this._volume=+(e||0),0===this._volume&&(this.$video.muted=!0),this.$video.volume=this._volume},i.destroy=function(){this.$video&&this.$video.pause(),this._hls&&(this._hls.destroy(),this._hls=null),e.prototype.destroy.call(this)},i._onEvent=function(){var e;(e=this).$video&&(e.$video.addEventListener("canplay",(function(){e.event.emit("canplay")})),e.$video.addEventListener("loadeddata",(function(){e.event.emit("loadeddata")})),e.$video.addEventListener("volumechange",(function(){e.event.emit("volumechange",{data:e.$video.volume})})),e.$video.addEventListener("waiting",(function(){e.event.emit("waiting")})),e.$video.addEventListener("timeupdate",(function(){var t;null==(t=e.event)||t.emit("timeupdate")})),e.$video.addEventListener("seeking",(function(){e.event.emit("seeking",{data:e.$video.currentTime})})),e.$video.addEventListener("seeked",(function(){e.event.emit("seeked")})),e.$video.addEventListener("abort",(function(){e.event.emit("abort")})),e.$video.addEventListener("error",(function(){var t;null==(t=e.event)||t.emit("error",{data:e.$video.error})})),e.$video.addEventListener("ended",(function(){e.event.emit("ended")})))},Rc(t,[{key:"volume",get:function(){return this._volume},set:function(e){this.setVolume(e)}}]),t}(Ri);var xc="wasm_loaded",Cc="wasm_failed",Ic="init";function Pc(e,t){return Pc=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Pc(e,t)}var Oc=function(e){function t(t){var i;return void 0===t&&(t={}),i=e.call(this,t)||this,t.url=function(e,t){void 0===t&&(t=["h264"]);var i=(t||["h264"]).reduce((function(e,t){return t=t.toLowerCase(),e+(Xt[t]||0)}),0),r=e.split("?")[0],s=e.split("?")[1];return s=(s||"").split("&").filter((function(e){return!/^vc=\d?/.test(e)})).join("&"),r+"?"+s+(s?"&":"")+"vc="+i}(null==t?void 0:t.url,["h264","h265"]),function(e,t){if(((null==t?void 0:t.volume)||0)>1?e._volume=1:((null==t?void 0:t.volume)||0)<=0?e._volume=0:e._volume=+((null==t?void 0:t.volume)||0),t.volume=e._volume,e.options=zt({},wi,t),"string"!=typeof e.options.id)throw new Error("id is required!");e.logger=z(e.options.loggerOptions),e.event=new ei,e.logger.log("HlsPlayer version: ",Uc.version),e.logger.log("HlsPlayer options: ",e.options),e.options.logger=e.logger}(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(i),t),i._containerClassName=Li+"-container",i._render(),i}!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Pc(e,t)}(t,e);var i=t.prototype;return i._render=function(){this.$container.classList.add(this._containerClassName)},i.destroy=function(){this.$container&&(this.$container.classList.remove(this._containerClassName),this.$container.innerHTML="",this.$container=null)},t}(Si);function Mc(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e=!0),this.playParam={durationMs:0,fps:0,sampleRate:0,size:{width:0,height:0},audioNone:e,videoCodec:T},!A())throw new Error("Browser not support WebAssembly!");this._onWorkerMessage()},i.play=function(){if(Ui.send(1,{name:"play"}),null===this.player)return Promise.resolve();if(this.playParam.videoCodec===T){var e={seekPos:0,isLive:this.options.isLive,accurateSeek:!0,seekEvent:!1,realPlay:!0};return this.player.play(e)}return this.player.play()},i.pause=function(){return Ui.send(1,{name:"pause"}),null!==this.player&&(this.player.pause(),!0)},i.destroy=function(){var t,i;return Ui.send(1,{name:"destroy"}),void 0!==this.player&&null!==this.player&&(this.playParam.videoCodec===T&&this._m3u8Obj&&(this._m3u8Obj.destroy(),this._m3u8Obj=null),this.player.destroy(),this._decoderWorker&&(this._decoderWorker.postMessage(P(B)),this._decoderWorker.terminate(),this._decoderWorker=null),this.logger.log("destroy"),null==(i=this.event)||null==(t=i.emit)||t.call(i,"destroy"),this.player=null,e.prototype.destroy.call(this),!0)},i.isPlaying=function(){return null!==this.player&&this.player.isPlayingState()},i.setVolume=function(e){var t;(e=+e)>1||e<0?this.logger.warn("volume volume value 0.0 ~ 1.0!"):((t=this).player||(t.event.emit("playerIsNull"),t.logger.warn("Player instance does not exist!"),0))&&(this.player.setVolume(e),this.event.emit("volumeChange",{data:e}))},i.getVersion=function(){return Ui.send(1,{name:"getVersion"}),"0.1.0-beta.1"},i._m3u8Entry=function(){var e=this;this._m3u8Obj=new Vi({logger:this.logger,decoderWorker:this._decoderWorker,event:this.event}),this._m3u8Obj.bindReady(this),this._m3u8Obj.onFinished=function(e,t){},this._m3u8Obj.onCacheProcess=function(t){e.options.isLive||null==e.onCacheProcess||e.onCacheProcess.call(e,t)},this._m3u8Obj.onDemuxed=this._checkPlayer.bind(this),this._m3u8Obj.onSamples=this._hlsOnSamples.bind(this),this._m3u8Obj.demux(this.url)},i._checkPlayer=function(e,t){var i=this;if(null==i.player){var r,s,n;if(!(null==i||null==(r=i._m3u8Obj)?void 0:r.isHevcParam)||t)return null==i||null==(n=i._m3u8Obj)||null==(s=n.destroy)||s.call(n),i._m3u8Obj=null,this._decoderWorker.terminate(),this._decoderWorker=null,void(i.player=new Dc(Fc({},this.options,{event:this.event,logger:this.logger})));var a=i._m3u8Obj.getACodec(),o=i._m3u8Obj.getFPS(),l=i._m3u8Obj.getSampleRate(),h=i._m3u8Obj.getSize(),c=!1;c=i._m3u8Obj.getSampleChannel()<=0||""===a,i._softPlayer(0,o,l,h,c)}},i._hlsOnSamples=function(e,t){var i,r,s,n=this;if(t.video)null==(s=n.player)||null==(r=s.appendHevcFrame)||r.call(s,t);else if(!(null==(i=n._m3u8Obj)?void 0:i.audioNone)){var a,o;null==(o=n.player)||null==(a=o.appendAACFrame)||a.call(o,t)}},i._onWorkerMessage=function(){var e=this,i=this;this._decoderWorker.onmessage=function(r){var s=r.data;switch(s.cmd){case O:t.__HLS_WASM_DecoderState__=0;break;case M:t.__HLS_WASM_DecoderState__=1,e.logger.log("Wasm already init over!"),i.event.emit(xc),i._decoderWorker.postMessage(P("registerWasmPlayer")),i._m3u8Entry();break;case F:t.__HLS_WASM_DecoderState__=-1,e.logger.error("Wasm init failed!",s),i.event.emit(Cc,s),Ui.send("wasm",{name:"wasm loading failed"}),i._checkPlayer(!0)}}},i._softPlayer=function(e,t,i,r,s,n){var a,o,l=this;void 0===s&&(s=!1),void 0===n&&(n=null);var c,d=this;(this.playParam.durationMs=e,this.playParam.fps=t,this.playParam.sampleRate=i,this.playParam.size=r,this.playParam.audioNone=s,this.playParam.videoCodec=n||T,this.logger.log("this.playParam: ",this.playParam),this.logger.log("start init soft player"),this.player=new xi(Fc({},d.options,{sampleRate:i,fps:t,appendHevcType:h,fixed:!1,id:this.options.id,audioNone:s,videoCodec:n,logger:this.logger,event:this.event,decoderWorker:this._decoderWorker})),this.player.onPlayingTime=function(e){var t;null==d||null==(t=d.onPlayTime)||t.call(d,e)},this.player.onPlayingFinish=function(){var e,t;(l.pause(),null!=l.onPlayFinish)&&(null==(t=l)||null==(e=t.onPlayFinish)||e.call(t))},this.player.onLoadCache=function(){var e,t;null==(t=l)||null==(e=t.onLoadCache)||e.call(t)},this.player.onLoadCacheFinished=function(){var e,t;null==(t=l)||null==(e=t.onLoadCacheFinished)||e.call(t)},null==(a=d.player)||a.setDurationMs(e),null==(o=d.player)||o.setFrameRate(t),null!=d.onReadyShowDone)&&(null==d||null==(c=d.onReadyShowDone)||c.call(d));this.event.emit("parsed"),this.player&&this.options.autoPlay&&this.play()},t.supportType=function(e){if(Ui.send(1,{name:"supportType",options:e}),"hls"===e.type)return!0;if(e.url){var t=e.url;t.startsWith("http://")||t.startsWith("https://")||(t=/^\/\//.test(t)?"http:"+t:location.origin+location.pathname+t);try{return/\.m3u8$/i.test(new URL(t).pathname)}catch(e){}}return!1},Mc(t,[{key:"volume",get:function(){return this.player?this.player.volume:this.options.volume},set:function(e){e=+e,this.setVolume(e)}}]),t}(Oc);return Uc.__HLS_WASM_DecoderState__=0,Uc.version="0.1.0-beta.1",Uc})); diff --git a/dist/types/index.d.ts b/dist/types/index.d.ts new file mode 100644 index 0000000..7676497 --- /dev/null +++ b/dist/types/index.d.ts @@ -0,0 +1,509 @@ +import { LoggerCls } from '@ezuikit/utils-logger'; +export { LoggerOptions } from '@ezuikit/utils-logger'; +import BasePlayer, { BasePlayerOptions } from '@ezuikit/player-base'; +import Hls from 'hls.js'; +import EventEmitter from 'eventemitter3'; + +type Fn$1 = () => any; +declare class AudioCore { + options: { + sampleRate: any; + appendType: any; + playMode: any; + isLive: boolean; + }; + logger: LoggerCls; + sourceChannel: number; + audioCtx: AudioContext; + gainNode: GainNode; + sourceList: AudioBufferSourceNode[]; + startStatus: boolean; + sampleQueue: Array; + nextBuffer: { + data: any; + pts: number; + }; + playTimestamp: number; + playStartTime: number; + durationMs: number; + volume: number; + onLoadCache: Fn$1; + seekPos: any; + constructor(options: any); + resetStartParam(): void; + setOnLoadCache(callback: any): void; + setDurationMs(durationMs?: number): void; + setVolume(volume?: number): void; + getAlignVPTS(): number; + /** + * @brief Swap SourceNode To Play When before node play end + */ + swapSource(sourceIndex?: number, dstIndex?: number): null; + /** + * @param sampleObj : {data:Uint8Array, pts:xxx} + */ + addSample(sampleObj?: null): boolean; + runNextBuffer(): void; + /** + * @return + * 1 queue length == 0, no frame + * 0 OK + * -1 sourceIndex out of bounds + * -2 decode Error + */ + decodeSample(sourceIndex?: number, dstIndex?: number): 1 | -1 | -2 | 0 | -3; + /** + * @return + * 1 queue length == 0, no frame + * 0 OK + * -1 sourceIndex out of bounds + * -2 decode Error + */ + decodeWholeSamples(sourceIndex?: number): 1 | -1 | -2 | 0 | -3; + play(): void; + pause(): void; + stop(): void; + cleanQueue(): void; +} + +/** + * @description yuv 数据结构 + */ +declare class YuvStruct { + pts: number; + width: number; + height: number; + imageBufferY: Uint8Array; + imageBufferB: Uint8Array; + imageBufferR: Uint8Array; + constructor(pts: number, width: number, height: number, imageBufferY: Uint8Array, imageBufferB: Uint8Array, imageBufferR: Uint8Array); + /** + * + * @param pts + * @param width + * @param height + * @param imageBufferY + * @param imageBufferB + * @param imageBufferR + */ + setYuv(pts: number, width: number, height: number, imageBufferY: Uint8Array, imageBufferB: Uint8Array, imageBufferR: Uint8Array): void; +} + +declare class Cache { + limit: number; + logger: LoggerCls; + yuvCache: YuvStruct[]; + constructor(options: any); + appendCacheByCacheYuv(cacheYuvObj: YuvStruct): number; + getState(): number; + cleanPipeline(): void; + shiftYuv(): YuvStruct | null | undefined; +} + +declare class WebGlRender { + gl: WebGLRenderingContext; + program: WebGLProgram; + verticesBuffer: WebGLBuffer | null; + texCoordBuffer: WebGLBuffer | null; + constructor(canvas: HTMLCanvasElement, options?: any); + /** + * @description 渲染视频帧 + * @param {number} videoFrameY + * @param {number} videoFrameB + * @param {number} videoFrameR + * @param {number} width + * @param {number} height + */ + renderFrame(videoFrameY: any, videoFrameB: any, videoFrameR: any, width: any, height: any): void; + /** + * @description 释放webgl 数据 + */ + destroyContext(): void; +} + +interface IEnginePlayer { + volume: number; + play: () => Promise; + pause: () => void; + setVolume: (volume?: number) => void; +} + +declare class BufferFrame { + pts: number; + dts: number; + isKey: boolean; + data: Uint8Array; + video: boolean; + constructor(pts: number, isKey: boolean, data: Uint8Array, isVideo: boolean); + setFrame(pts: number, isKey: boolean, data: Uint8Array, isVideo: boolean): void; +} + +interface HlsOptions extends BasePlayerOptions { + /** 出错尝试连接次数 默认 20 */ + retry: number; + /** 是否是直播 默认 true */ + isLive: boolean; + decoder?: string; + [key: string]: any; +} + +interface UIOptions extends HlsOptions { + /** 视窗的宽 */ + nodeName: 'video' | 'canvas'; + disableContextmenu: boolean; +} +/** + * @class UI + * @description UI + * + * @example + * ```ts + * const ui = new UIVideo({ + * id: "id", + * width: 100, + * height: 100 + * }); + * ``` + */ +declare class UIVideo { + private readonly _classVideo; + $video: T; + logger: any; + event: any; + options: any; + private readonly _$container; + /** + * @description 构造函数 + * @param {UIOptions} options + */ + constructor(options?: Partial); + /** + * @description 渲染 UI + */ + private _render; + /** + * @description 是否是 video 标签 + * @returns {boolean} + */ + private _isVideo; + /** + * @description 销毁 + */ + destroy(): void; +} + +interface SoftPlayerOptions extends UIOptions { + width: number; + height: number; + fps: number; + fixed: any; + sampleRate: number; + appendHevcType: number; + frameDurMs: number; + id: string; + audioNone: boolean; + videoCodec: any; + logger: LoggerCls; + decoderWorker: Worker; + type: 'hls'; + volume: number; + isLive: boolean; +} +type Fn = (a?: any) => any; +declare class SoftPlayer extends UIVideo implements IEnginePlayer { + options: SoftPlayerOptions; + logger: LoggerCls; + frameList: BufferFrame[]; + cacheInterval: number; + nowPacket: null; + stream: Uint8Array; + vCodecID: number; + audio: AudioCore; + liveStartMs: number; + durationMs: number; + videoPTS: number; + loop: number; + cacheLoop: number; + playParams: { + seekPos: number; + isLive: boolean; + accurateSeek: boolean; + seekEvent: boolean; + realPlay: boolean; + }; + calculateStartTime: number; + fix_poc_err_skip: number; + frameTime: number; + frameTimeSec: number; + preCostTime: number; + _volume: number; + isPlaying: boolean; + isCaching: any; + isNewSeek: boolean; + flushDecoder: number; + isCheckDisplay: boolean; + isPlayLoadingFinish: number; + vCachePTS: number; + aCachePTS: number; + noCacheFrame: number; + onPlayingTime: Fn; + onPlayingFinish: Fn; + onLoadCache: Fn; + onLoadCacheFinished: Fn; + gl: WebGlRender; + cacheYuvBuf: Cache; + decoderWorker: Worker; + constructor(options?: Partial); + setSize(width: any, height: any): void; + setFrameRate(fps?: number): void; + setDurationMs(durationMs?: number): void; + setPlayingCall(callback: any): void; + get volume(): number; + set volume(volume: number); + setVolume(volume?: number): void; + isPlayingState(): boolean; + appendAACFrame(streamBytes: any): void; + appendHevcFrame(streamBytes: BufferFrame): void; + getCachePTS(): number; + endAudio(): void; + cleanSample(): void; + cleanVideoQueue(): void; + cleanCacheYUV(): void; + /** + * @description pause + */ + pause(): void; + checkFinished(mode: any): boolean; + clearAllCache(): void; + getNalu1Packet(alginPTS?: boolean): { + nalBuf: false | Uint8Array; + pts: number; + } | null; + /** + * @TODO + */ + cacheThread(): void; + stopCacheThread(): void; + /** + * 缓存中 + */ + loadCache(): void; + _playFunc(): boolean | undefined; + /** + * seekPos=-1, + * accurateSeek=true, + * seekEvent=false, + * realPlay=true + */ + play(playParams?: any): Promise; + stop(): void; + /** + * @description 释放 + * @returns + */ + destroy(): boolean; + /** + * + */ + nextNalu(onceGetNalCount?: number): false | Uint8Array; + /** + * @brief play yuv cache + */ + playFrameYUV(show?: boolean): boolean; + drawImage(width: any, height: any, imageBufferY: any, imageBufferB: any, imageBufferR: any): void; + checkDisplaySize(widthIn: number, heightIn: number): number[]; + _onWorkerMessage(): void; + initVideoAndAudio(): void; +} + +interface HardHlsPlayerOptions extends Omit { + logger: LoggerCls; + event: EventEmitter; + volume: number; +} +/** + * @classdesc hls 播放器 (h264) + */ +declare class HardHlsPlayer extends UIVideo implements IEnginePlayer { + hlsPlayer: Hls; + _options: HardHlsPlayerOptions; + event: EventEmitter; + _hls: Hls; + _volume: number; + logger: LoggerCls; + constructor(options: HardHlsPlayerOptions); + private _init; + isPlayingState(): boolean; + play(): Promise; + pause(): void; + /** + * @description 获取音量 + * @example + * ```ts + * player.volume // return number + * ``` + */ + get volume(): number; + /** + * @description 设置音量 [0.0 ~ 1.0] + * @example + * ```ts + * player.volume = 0.8 + * ``` + */ + set volume(volume: number); + /** + * @description 设置音量 [0.0 ~ 1.0] + * @param {number} volume + */ + setVolume(volume?: number): void; + destroy(): void; + _onEvent(): void; +} + +/** + * @class UI + * @description UI + * + * @example + * ```ts + * const ui = new UIContainer({ + * id: "id", + * width: 100, + * height: 100 + * }); + * ``` + */ +declare class UIContainer extends BasePlayer { + private readonly _containerClassName; + /** + * @description 构造函数 + * @param {UIOptions} options + */ + constructor(options?: Partial); + private _render; + /** + * @description 销毁 + */ + destroy(): void; +} + +/** + * @description hls 播放器 + */ +declare class HLSPlayer extends UIContainer { + /** WebAssembly completed loading identity */ + static __HLS_WASM_DecoderState__: number; + private _decoderWorker; + private _m3u8Obj; + url: string; + playParam: any; + player: SoftPlayer | HardHlsPlayer; + onPlayTime: any; + onParsed: any; + onSeekStart: null; + onLoadCache?: any; + onLoadCacheFinished?: any; + onPlayFinish: any; + onCacheProcess: any; + onReadyShowDone: any; + onError: null; + _volume: number; + constructor(options: Partial); + _init(): void; + /** + * + * @description 播放 + * @returns {Promise} + * @example + * + * ```ts + * player.play() + * ``` + * + */ + play(): Promise; + /** + * @description 暂停 + * @returns {void} + * + * @example + * ```ts + * player.pause() + * ``` + */ + pause(): boolean; + /** + * @description 销毁实例和dom + * @returns {void} + * @example + * ```ts + * player.destroy() + * ``` + */ + destroy(): boolean; + /** + * @description 当前的播放状态 + * @returns {boolean} + */ + isPlaying(): boolean; + /** + * @description 获取音量 + * @example + * ```ts + * player.volume // return number + * ``` + */ + get volume(): number; + /** + * @description 设置音量 [0.0 ~ 1.0] + * @example + * ```ts + * player.volume = 0.8 + * ``` + */ + set volume(volume: number); + setVolume(volume: number): void; + /** + * @description 当前版本 + * @static + * + * @example + * ```ts + * HlsPlayer.version + * ``` + */ + static version: string; + /** + * @description 获取版本号 + * @returns {string} + */ + getVersion(): string; + /** + * @description 静态方法 判断是否支持播放地址 + * @param {Partial<{ url: string }>} options + * @returns {boolean} + * @static + * + * @example + * ```ts + * HlsPlayer.supportType({url: "https://open.ys7.com/v3/openlive/E71992743_1_1.m3u8"}) + * ``` + */ + static supportType(options: Partial<{ + url?: string; + type?: string; + }>): boolean; + /** + * @brief m3u8 + */ + _m3u8Entry(): void; + _checkPlayer(empty: any, isAVC?: boolean): void; + _hlsOnSamples(readyObj: any, frame: BufferFrame): void; + _onWorkerMessage(): void; + _softPlayer(durationMs: any, fps: any, sampleRate: any, size: any, audioNone?: boolean, videoCodec?: null): void; +} + +export { type HlsOptions, HLSPlayer as default }; diff --git a/package.json b/package.json new file mode 100644 index 0000000..d5560ef --- /dev/null +++ b/package.json @@ -0,0 +1,46 @@ +{ + "name": "@ezuikit/player-hls", + "version": "0.1.0-beta.1", + "description": "hls播放器", + "main": "dist/index.js", + "umd": "dist/index.umd.js", + "types": "dist/types/index.d.ts", + "module": "dist/index.esm.js", + "scripts": { + "dev": "npm run clean && cross-env NODE_ENV=development rollup --config rollup.config.js --bundleConfigAsCjs --watch", + "build": "npm run clean && cross-env NODE_ENV=production rollup --config rollup.config.js --bundleConfigAsCjs", + "test": "jest", + "prebuild": "npm run clean", + "clean": "rimraf docs dist coverage", + "docs": "typedoc --tsconfig typedoc.config.js --exclude **/*.js" + }, + "files": [ + "dist", + "!dist/**/*.js.map" + ], + "keywords": [ + "hls", + "h265", + "live", + "player" + ], + "author": "Ezviz-OpenBiz", + "dependencies": { + "@ezuikit/utils-i18n": "^1.0.1", + "@ezuikit/utils-logger": "^1.0.1", + "@ezuikit/utils-tools": "^1.0.2", + "dayjs": "^1.11.10", + "eventemitter3": "^5.0.1", + "hls.js": "^1.5.7", + "lodash-es": "^4.17.21", + "screenfull": "^6.0.2", + "ua-parser-js": "1.0.37", + "@ezuikit/player-base": "0.1.0", + "@ezuikit/utils-collect": "^0.1.0" + }, + "devDependencies": {}, + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org/" + } +} From 5e203a98c387653a47cb5670677c88dad7fcf482 Mon Sep 17 00:00:00 2001 From: ShineShao Date: Thu, 1 Aug 2024 09:10:42 +0800 Subject: [PATCH 05/20] chore: github action need --- yarn.lock | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 yarn.lock diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..5f929f8 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,92 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ezuikit/player-base@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@ezuikit/player-base/-/player-base-0.1.0.tgz#8e0a7c063e9b8e24dd70123294bad4df8eb2d61d" + integrity sha512-IcJqnZr9FmjBCnIrmqY7oHdyDuYxRWhDZB+K+gi+4oenFjFV4aLCCG7RFPxkidHzi3TTF2f1Bm5yObZzNDqkfw== + dependencies: + "@ezuikit/utils-collect" "^0.1.0" + "@ezuikit/utils-logger" "^1.0.1" + "@ezuikit/utils-tools" "^1.0.2" + eventemitter3 "^5.0.1" + lodash-es "^4.17.21" + screenfull "^6.0.2" + ua-parser-js "1.0.37" + +"@ezuikit/utils-collect@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@ezuikit/utils-collect/-/utils-collect-0.1.0.tgz#3954839a67ab8e8a0ecba4b4a9d7779fd79185cf" + integrity sha512-85lWlB/VCaooPPkCK3nEB4F3UKgO+HbmoPEq4U1tH/ObVP7IJ7eURrFUmQT1CKsqjH5xz5g4DgZzHWgYrwGcCQ== + +"@ezuikit/utils-i18n@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@ezuikit/utils-i18n/-/utils-i18n-1.0.1.tgz#938b192184482e91a6e8aadde0f602c268da3020" + integrity sha512-uUjN3ADHV2ZG4QznuA7FB89/ck8AGV4qS8hm/sqeSA6/ie4ryYw8MS4wIv71WgPBIgIVDfASuEapyLOwq7R2aQ== + dependencies: + i18n-js "^4.3.2" + +"@ezuikit/utils-logger@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@ezuikit/utils-logger/-/utils-logger-1.0.1.tgz#9f157c982acba73514fc7a46829768d5bf61f45e" + integrity sha512-qak0MXh4vWZCji3aSCfHdWR3EbZCaqS0iMT8/QWuWPRr0vDmTRMP3kFOAw1MuMraR0ocjPBE2PaTEmUuwVqaAw== + +"@ezuikit/utils-tools@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@ezuikit/utils-tools/-/utils-tools-1.0.3.tgz#d014c32905aae1dcfd92d5258453765fb7ffaa41" + integrity sha512-4vJOFAAmmIojfCf43LwXwQNffoyUad2c/HOZwNexHsMqcvC/yLeDmqm5Y5Kp4BoZT/LHfMpy9fJJ3W22+ikXaQ== + +bignumber.js@*: + version "9.1.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" + integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== + +dayjs@^1.11.10: + version "1.11.12" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.12.tgz#5245226cc7f40a15bf52e0b99fd2a04669ccac1d" + integrity sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg== + +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +hls.js@^1.5.7: + version "1.5.13" + resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-1.5.13.tgz#27bf1c9b91c433e25e7a84635fe7491bb5988d93" + integrity sha512-xRgKo84nsC7clEvSfIdgn/Tc0NOT+d7vdiL/wvkLO+0k0juc26NRBPPG1SfB8pd5bHXIjMW/F5VM8VYYkOYYdw== + +i18n-js@^4.3.2: + version "4.4.3" + resolved "https://registry.yarnpkg.com/i18n-js/-/i18n-js-4.4.3.tgz#09744ddd377261f614502cc5622ce6981026ea4a" + integrity sha512-QIIyvJ+wOKdigL4BlgwiFFrpoXeGdlC8EYgori64YSWm1mnhNYYjIfRu5wETFrmiNP2fyD6xIjVG8dlzaiQr/A== + dependencies: + bignumber.js "*" + lodash "*" + make-plural "*" + +lodash-es@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + +lodash@*: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +make-plural@*: + version "7.4.0" + resolved "https://registry.yarnpkg.com/make-plural/-/make-plural-7.4.0.tgz#fa6990dd550dea4de6b20163f74e5ed83d8a8d6d" + integrity sha512-4/gC9KVNTV6pvYg2gFeQYTW3mWaoJt7WZE5vrp1KnQDgW92JtYZnzmZT81oj/dUTqAIu0ufI2x3dkgu3bB1tYg== + +screenfull@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-6.0.2.tgz#3dbe4b8c4f8f49fb8e33caa8f69d0bca730ab238" + integrity sha512-AQdy8s4WhNvUZ6P8F6PB21tSPIYKniic+Ogx0AacBMjKP1GUHN2E9URxQHtCusiwxudnCKkdy4GrHXPPJSkCCw== + +ua-parser-js@1.0.37: + version "1.0.37" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.37.tgz#b5dc7b163a5c1f0c510b08446aed4da92c46373f" + integrity sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ== From 33cba56be760a3d5f1071334fa583f9cc25ce7e9 Mon Sep 17 00:00:00 2001 From: ShineShao Date: Thu, 1 Aug 2024 10:07:48 +0800 Subject: [PATCH 06/20] feat: update hls 0.1.0-beta.1 --- examples/base-app/decoder.wasm | Bin 0 -> 1533219 bytes examples/base-app/decoder.worker.js | 8 + examples/base-app/index.html | 298 +++++++++++++--------------- examples/base-app/index.js | 42 ---- examples/base-app/index.umd.js | 60 ++++++ examples/base-app/package.json | 2 +- examples/base-app/pnpm-lock.yaml | 15 +- 7 files changed, 213 insertions(+), 212 deletions(-) create mode 100644 examples/base-app/decoder.wasm create mode 100644 examples/base-app/decoder.worker.js delete mode 100644 examples/base-app/index.js create mode 100644 examples/base-app/index.umd.js diff --git a/examples/base-app/decoder.wasm b/examples/base-app/decoder.wasm new file mode 100644 index 0000000000000000000000000000000000000000..5c0c2fa1cbf025dafadc4d515ea8077c6fd0c661 GIT binary patch literal 1533219 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%0A&?-f({xKK*_8^lAHq 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�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

*75{hIf~S8C+>5I`ZgPH; zbw41<$>t6G;Tmik?Mu<>e^f{iS;-KBWfKyTH73F#zB6^0K@~@`SDVyX72pi!amZ*c zBOazvmsbH3wk20FScwNddK)9kYyzbI#a(0tjF75;wsrzXq;-2g-_QH86{cbwctdi? z2@M{X!kX7dG<*slO+JO>2z1D9s=DX1vx+Eyx8oTOV_=npXOV>7RPUfmD3_;}hHzK7 zu1|@Z(&9p#J{n%6y*Qrc0lsPp*Drk^;N4kX2co7WbLCYrf9Bm<#t`qR{`2!T7is~o z5`3jP;9+Z}vc=ogm)M~KSHAr&p;M@KI!G6%>jj}0QYqzCvez6v%xODNz|t6P?k@wO z?Q^K;?$2@zBdgtgkwjvQx5$5Ny{$BTf9EF!xjmH)G$wNDR6Q28XRS=) zoMFIX6m9rME*cMv{PEI2Y-bS&fzW6Ixa3^Osz3XN+!IeO*`8p6*;_gJE$-i{ypDGl zzHVfyzw1Z;fA-!7$gZo-?|k>(*YCaV_qzM3_19`yy6;++WsocZ4))sYqN~D|0Ryh7 zsqECuY!y{Z?VoNzO*gW_W?Xjr&k|>Fyq*c0WfL~5WWD3D3xlDUfk_c8j}7b87*I9_ z3>c#^PKJ0qiI#Y4NDz2G-{0@t`|f@HT9UEs8B)+#_q=oO`S&}&^ZR#x=XaW>1C*UY z7qBr1l-`4FO1MomwY*PDPseR(6XFzI+F54u1IqxVKy!HGo}yCPonFlUJI-0#+fpGW z!FDl5FHIY)H4FzSCMU=elO@h`vZ38qgp2%Mj?%WpyYiJpc|Ds_qop0eLi3RSaf4tm z`6l9L5ou-iAKI>}lIS-3~7QxhRj zai3Q$8E^9VDA&_UHs-<&cj{?yKw@u0&Z)<~#ns$%utq+JmKKzIIGsY7*4V92+Po94 z6UN)9n`x#meg%0nzvHV@3(`|1ZJY)^MVhz1`w8rk5C9^uKLcnVWHgg>9e`?ITw7_9 z$aFC@0DXufY7SAnGc_cGDD-Rq4bgxdrad~W@ph30Rs&TKx0(c1(P=@I`)q6GtA~VJ+^tjyhl`CDtd5bGC2L{&H zZCZhs#yinBWXn@}!xf2`8-9b5@foUQ{0*|&aPiFXLTh<*d>y|ZJ?X!@$VX@k`S-u) zzi0T3+K?Z6)_?c-{a$|mpO9`>fn1S*3|;QL<1IYU3itETKYc#RZ-1Vnp%l6j0=7T@ zqpy`VP3?{btwPd;_D347)&N)wmk}nz;AU*;H>u+Rl%QOrMM`$ox>yMYMrOR}OE#I->5s zY{|}i~jREg<$KK3)*KL zP*Vn?6v}9em6A}utg(nw+(P$nBPr+Cv%<_i(K?(V3g_2fKc8PN_nstw6GAfu?!|FC z%AaDBeE_QuA-8>b!s(C}^)5gD9SAJvmef5;rJOX))f^|gMGGWK23%lac30ZbMnCVH zb(vYCwN_5zIwB3sEAL3vKq`=&A+7HpVM~XR1S1PeLCi)zbZA<9Deg#Ntf5@K%C0`e zxiLc4Q5F!zzpUbJprI@~*c0hw7aK1o+O&-`JGA{6ioX~>t}WOf*lWgpL`o-S0B!BC zER#IB)^5{Hr0g15hCsm`>BVuG?yV`ni|?^P6H4Hh)1>1$|i-L*RBX7s4R^*6ExNwBEa ztlr3`j5We`!~{MkylRwwKq-+@#fEiuoqOx)vzRzmNtl%k?w@8(Bw$$2rc@o9+YO2E zLBr717?t!j(DB)8P4=^{HB+vURrAyd4`>_1Et+NS#x?8R#<4_ASBe3>4aol*p**~D zPOi;bcY&h33bglNAe~YdO<9p0f zFq3Ixbo>~vS_U37V8WbAZa}+K1fX6xTJo{yjL~CR`;VX+sy7C`{PPbac%3BO{I>0$ zC+>~BepQ1V#8_kT%X+98n?-)-@5G!>{2j22>Z#c{aoJ?dq?+5sLo@{x(?p)WQg{sm zA-0gSd&_S85M4WT zEOUfJ*v$X_U&a-cWmYyd*+h`?87d3kt~KIn0^iPNJ<@P$wu2NZ z&3>W{S1C5W5Nxg}2MxU9-#a58=^O#?NkFCKiB@h(V?SrHUqA$GFQR^9Jt zVYnkoBppMYHyRcR$ca%`z#vOXgC#)oR*B+*QHkPhpsI!??X2L$AIM>)A}7Q`_j&vj>M*e9>}gcJi*$-nX2>Caz&gpy2Xu9bOS6pG@WdfesFo* zzezQG9U|VB7u2iCgyeoA-Kti+t8o zqAWLr*G##!*g$4-I*}NwRv9u~7hJS-tdw*g{6UqziX7m2TLpacE`wf;Zzq1hRFyI!Y21_VXiG!RAG-OnU`8yc2ZIHN#I zVW<>^2OXOnBxW%r){c${ASmWv{u7!K7x}_1$bnIQ{{t3iU)v7}M|R#X^M6NXO9lkM zA*+QMk2${%CdgP=oj#9%br29H6^&!hOD-5h&g9%>z4-=P))*E@Q@fd zUIWB}{-_AGh$evI67BKrLpuQE5C!DPOgXxHD#zswXmPwS>@OT$zM9YVx`63c(96^~ zRa$aih0br~@*w2=m^%<^-`V^JSxNlKeNc?sybbS7-0FV-7b@m#0)n1g>5u*X*zJ!L z*iC@O)&)r-aXz0%{om8R2@}CTT0a)@4&sWs&S4YD75PY3Dx5-2pGk{}T>)aW`M-cLyN%ZoC17M)6V_Ef45G)cuS9 zKHhmt^JYZYQvhg6E0z0Xz8ayWk+5(oy}>ps`YbZY0jO0ZVT9lk%2Y50ei0f4s~aNG zy$=lMnf%9rARSWI*eib^LKnY9bRI_|lckP>@o98v+`A(Ad`LF0NFE}Y;|GwZ{eRx3 z-`0e9Z($M8)tguZWEkKEH;LO8Jv*00prx(-SQdd+W%CP_e}_$*B(^+-y;HSN0&>S* z_P3&U(JNAN9YO*+rcJHCxJ{n5$85WzkZU!WrWtZDfxw9XLHi~?8-!Uf_G93XjWk}? zTreA4bMVEs3Or5$)+|TC2#%xnUOYht24+Ch&G(xF{(jxEpiI6&B_TqCKwz*mIS~S% zulz7sR()RD!+EKxxc@NfrzMVy=8&2)kCl7TC8e01fMWHRC1IVgQ#GpW&Qpz$V+AIy zj@=eB%y8z^quTPPv-dm}acG22g>!{U*ttR_>|CJ|ey)%Xzi>a%i4?9%t_rLG!ph$- z2VjI8DkDaQloH8EOc*a;ygxFc>t{1X&5%(QPY04p2s_j!l(rhAsoVo%7_4YSft2t+ z7wLpU2#ugK{TtyNS4W?L#v=PemJPQ!a>Wc-B%xI$W{={6mn;=!xKp|)WA;S|f{tfO zSmKlxbJ1eA5c$JYnceYo44dt*%CJwYHEf+og-~jcdm8ZowkXI1JfaRp2gNBy*Rs(` z^3~`*TN~XUMv^5IeQzrNtkDier{E?6LA^vdIxoX5Yeg9b#HYkny2fMfP~L}^FuYC} z-VYewhT8C+^x?Hu&8iJg9)mtS`@jYlrPN>%6w1L(K*>QybyW*XgJW^~)crHrIT;)h za{hS+XQyq%Iaik`2j^vOtdxnmi~_4K%vn=rQYOuxEXN~pqI_fc`ox+eGpsdk0wz<# zM(}tEt|_e5i4=Y>u_0_oI~;c-jN4*(vAjXqSsMi`v3D-xW>RN;Qb$UxJ#GcAZ=tJT z*SZGt3a1Wb5R8dZVDa;s3Ri$6s1v%KN3ynd;!x|w>xgTI)F822OC@9y0naiOKM%3| zvM6S}R6-;Kh07y`lWNeU^Ph#w!I3e;Xl=`I`x_lLv8xlhQknR6>*U=AfzRv3MlNye@Xc9UlM-&mxLexCE>?^N%-+! z5`O%bgdhJU;m3bT`0-y7e*Bk&AO9us!nY&Q{Nng82|xZzg5$rytwvZNvmVOq%-qT7 z{5|(mv$i*9`;Wkik>AWeiRS?kCir_9&h~#`>}=e|TW#sGeYo-zu5Pgq3y%5%{X@Wp zYUaPihuki}kt(fmK0NWwF&`qez`me;EusbU9Vea^0lwUXwwm{hm^GqT@?76&}W&!@FPBr;vwq!*M~yPHH;^>G?szvIa$-2%U05Sdw44!KKCfyM8uWy!B0seTTBe$qD&J* z$ULoYj7=jy=wdB9$4eK{<$|=)>>qE(2mDX{k|{GXY++HGWs~zcFcwJHR-Us+LrMZ! z;I^{T;p7CDXrcM%k(@xH{Mh}FdE|RPtDVn+R=FhoI z^169)q<71u#~K18vp7EgF*>V0c(;x*g1r;uOBcVDh)ivdddI`{-E*VmjYEPKF>zI52)8x&uXmG1jpAG+klDUGmP!*Z2wUNAnU4%NR9`= zKX$*xt+a5%SVx6x9;6BEp+*ftR~y)V1{f?423a4$YzV%p%wh!`iv3^sbv&(a}@!v8QE0+0&+W2Z-nf4Rpa**R>x9zm#IH2Q$MxXor!Q2OTBD3;|Ay! z?D_zI!w2|Y2KZqc;7M~7?X|}Y@RU)xwFVer`vK)x53x~+>KK5kDPq?V;}ts%Du{*P zVwyv=HC>fT$mOtPBZ`*%=*b>x=5d+0f=1xEeb1d!t_db4 zIJqQZWuPlf!354~u;D4?MLN0FhWJnpd*YGTXwYiZAu$}ZqF5rQ_8-HpfDfZ27yFUm zyo>yTe(`b0gB&LC#kMED*!H|9Ja6)!AMyt_1%3RR{`hr&{E9z**&jFf<1PNU(jS-m zV}HO@nXbS_NVHL1z$qhjiJd~+_<;TxkI@e4E22>k$hQ^hHxsizfRGG_;SvD5-^ZyG z{+%2kRwMz@XfwG}EbE!%{|D#W%uE@PYl7nml zITj+(Qkn>ha#OJ=(H?C<+AcV2Y`892P45J=5=Mv&2|kJ(I^Rn-@r#byN@b`JUPe7f z*P6?=R;8`HgksLZ04!L41e7W`*as0fBB+YdX`)pSoTnHFn>j1Pfw0T0fpFTOfSe|R z@w4ljVZI8WqL9Mf^3cY<5oW=L{>xgWWFRpYFvd&L=7Yb=-qgy;MtaG?=)>9W`;OoO za6x*>ec6oB7!0h$#l%-Xo$;X_Yz%fKrHGmCIvD>F;F(KzrMvIAuNZZ@>pr@b_m=HY zg7ve=!J!e6z+BFE-9X7nNERK1^e9?G8v+9X<1r^;h?n!lOP1-r=&-;1faY@-l4Ex1 zeTBe*w1IbrBAT!t!f+R}p3>T@PV(krw%OX%R)0@!8Uv`P`^*j2*~BCWaxl;7#=$3K ze0=HQB)#;`gVF6bKp4QRpz+7~&7vH1OvJ-BbwTY%!SDT`2jY-yi2TB^V(PQW7^sob zlPqA2nQIgjny`{)ZBcx{j0-9GWgqgI=%27PiB1ZCpGKeRyYXS7l=6z95jG6-*`=S{zS&;@Qs0hpOf*CX1=!$Vh0FnUs zE^}e>PcR2r&DH^tsagjRkJs)1t3{!SlciN1xr~m;=7S;7I>M0SB~!+IrKuxKGVm5< zZsSLxb(fg=o^J_i0(6u^KP?m_)&dqbSbWpq5&;vYY7#Y4mkkTEKmI1#=OgwpJkW3s zSBBoTiUJJ(W7)#_SjSRbj0JFHJ?+8*GtSFMz34rXt#j2`QXqamu;Msf=gK!3%7lJf zrj&1J$7QB`Q;8xcQ%Rh4AIYY@5_KIFo7D;>L0mkq2zotubi7dT%)<6dBVR+)H^_`OEmggw6|W2RAnp#O$rmfmKZ z4m0qO?Zw9S^iFnmLwyOydsJFp(e~KskJKORKk1z|?|1+XJsJ=WaAcQpFJ06QSR7p# z@{rbZbX6z`hKY7JOIkk-*#t*CupaD!Gvx)<6Rp>2IKDR)Xu*h7ca`;(v>t9(q4hAW z-z<5S2bWN&o`Tdv^~Dt>(i>Ow5Vhio=&j<3Jj4@ulw{w8)e5n1rt97X{aB~FHJDEwr)xg4q_fRero!HNvXyND}CPynlr zMWqB|VzG(1gPeODM@?pHGnKsTKp&u_{^bPg8M~kO6&yjuOe)g^Ae(xKyQ^_xR{6&7>8n+q7++4D8-CZik>J%|B-Bcol>YT>qjYtW!5MKm55SMNu13*lJ)A8LXn4h zqm;rjol0^xuVIH?GNuEZwRja>pza28u$iHlWX zsafP?-4kGn9@3{|O7{JT2re>HB{Y)=m3ic}1+~tWkF4j~FlUm5jKjQ@0)e$jT>I*bqQ4a4mTLcCP=HsEPdGvBxb4 zc^PN=LJfl$0d!Qdr^T#e>8=+jcy3R(l4nE-RX|K$VPYj}vt2B$*?>9YwvKgL`^<4$ zegSsomJ7QWKtUu#GO-k5V$eAO0Hl}rtp-C?#^GWq3T$T5hDN{1XhcT_Hx6iA)#&&G zf~{Xsx?PeeL_`N&=*}dCPf&Q1CQNQdZ1czyX-6LCNKyF~E`6CFFs?jZ8Vq>!6|FT^ zWbTXf>7l_+pfQ>5Amloaokyq%IkxB?(NdhmL7LbxUixtN#twLXmR9MQnCIJf# z1a-ne@ZC_(?F{AIu8D|+oQsQBA!bff5P(#~%(ft{TzyiJbLWGc%k4))IhTTOQy7Y> zoC|9o;7W~1Xmal6gDW2kBLA*C?*oTaw>LqLi!Mn{36igOsVe!d>QYCNFM;QRSWo6vJWnP$rA zCc>%VnCs@9xohEteRx?ry#Ox8Jt^g8Q=88^;$rww3&ZCg$@*eIbW#5ys?PE3I~NO? zh;5cBE`}`U@-CIcY$1!sWbKlR**Y>yPlbzFCY8v4tmjDW7G)cug#d%D7$m~HypDpcTIvu z7h*3*$k}d|-3LE<)^2(c1E$2)5ky1}$$c2Yclj?cM86;@dbC8?Gb^B9;S*&Jv@2PD zs@l{SK7u@|)`pl+Vb&2zma@cZbw!HBqClV^UKY!Vl&+XBspKlYoH214;~~aRke78L zBQqSNUrM#^(#Fe5GYoD@OcD;vO?=8*7UGZLy*Oqsz@}AAV;ywNV zUjK1_Z}mU!?-@1@82DuBi@gopEW|`CjR9M{!_qipT-6Xc;Tw$IS2gVVoU$2bg!{lnxNMjo24<|Gq$enc?=R5kdy+SZzK%!Cigu{MD0k{ z?>OII?i&ubD0YHLh-fL8bo(c@MG<^6O*R2Qw3eUZ(j*}s+;vP1Z}S=slr?zxC=4BO zzVbp#0#CH0ZP7Ttho7P-8}q(S(%GqHZec>?Cg6&y9+&&;uP-2am8y>XqOTv5O>=$k&(6(`eq18_AtVv48q ztVz~(48)1VpvUWpL=?t$)CfqmJm}aKo*!6A1;JU=M1t!cNjDsk3<_nR6x09#m#cB2 zc4i@;wLWOWaT*~$Ru_r`BDtEHSkg8qdiu9`qkDq9bG*^E>ylWwx+rPCbHr}wVMxWH z6*oC=##m<D5_#5PZwcTlObQH- zFd)9aD>)NU9Y3pZs)-J(SpWi_6#yap%m@@`mNChy0|@)t53K=n4s%vlH=qPGGJccm z@UeQdspye_ISVj3`BQcWghyC~W$g zwuZ<9`WvQ7x}PDDI4h%p14;UQQeKrxJW(VbD-vJ$7L^l?1rPOUjig-SQbZ6`sIGTp zS*x9wws3o>4dytgXwqS$!0F@&j-ROF_#0|Cj>}Jp<0TpysxTrDNYMGgm>^uUKypr443T_h1j+Fkpjjcg0Jk=hTOV~kJ0STa-HW}; zKNFIx(`(?l$q3`{+)Qll(zpuGCzr#97o(}*dCv8QVezlRbs@PlF;IRiuCJ$$pgVWQ z26Xq1jYaobGgN0E1EXCj z$U68pX|drNVklsR=wPp)gV%9`tea<8kp!r!Q|1wj)oCSl8GBTTvAU_U z3Q=L~92nbzNUsL$Ce*1^7(2HH#+EEY1X_eZy*gQ7EYmFl%|A?s2sHl~fo_RFb3I{6 zphqxvSc79MyKJKb+AwwkjXp*`%J-YpYJ*x4nq01a?CsY zq&X+lHP@)>Ow`Y z2K{S#bzw$7vtEtdQR>x}9?`2UFX+{l{;SZd85(-EP#y$9t*#91=S!`o|56d<@~|N0 zdjdQ%wAV^-kAf3MTlrAVu52LiA*k-ou6A@8=V76(%>Sn>B7L*_Mo6G`5Om}^$}ixg zoQMO?nSKPD1lb%J>mKEp62;bV4n$rDOO^zLs zLzMI%x%Vah5Rg4cGg{DchQN2*swkAXoDndw34 zrlGS7vXF`kh-*r-G_Mov6=r`H252MC4mEIk;)4?WV#a++Cl6BYk+iianxkGqJ>~ZE zkiBg3GLqMREXL09A_(6g$xr;ybp$@fCa;EJcxo8)rfsR(3sY*!7n2MIK4RyaYbDfN z(Lt(5C05V6)-~n}rP@Fx%N|>(nnF{=pBD6VJ_?gN3HFsa`$2+07MyV*0fad-K>{`( zV1vaW1Az4TV@Pj~>Z5gc02W1a#ttQ?t5pqViz|YyQy)1o%4H{qm~tdtZ#~CYE%1$z*d1vVAGjnhH}J zlPapi?ziv1uy(`r%Cbg-!0kT5h3|JTHJ(rw-|bq7hX%$^U~ zQ#O3l$^~1XtQcoP8_iF}i(AKhgp7`m_u}to0KDyvI}vG9MTjC#AT2ixM_1_W3)E=ktaFQWdg z&(|-gPgW<or-eC5{LpdEY)fWi;^u=qhU zf}QE{>q&e>cT3CGQ~@HpGxWLuBE3rzX*h>yuA`64d$T{^iiG4x>iK0YCIx^Uw&I(iBpv&jqXhbD@Q_jKX%Rz4PcjXCI z*L0U&PvHZY93EVv(P>X=Bg>XM*ez0kc@c=69LbQjjri_`y~u+AuD*|?IS-_Jj4k8v z1A!P^0N1_DQX520(k&t<+!d`3%AInT-qDMN^b-A>B?|7(VRuXxmnNMn5*6SuQji-uOCP1=fp z2JM#EGfSDU#QN$Z;XB@F5>W)emOV?I^}LNkN#nLr3M=R$U5sjY(VuiX4KRfasxPlBMbmcut=h4K1hV zvuV-1*+E~PjkIGwDva@O@uM8qXDoKX%|ZibcYK`*lN@5fO-;` zO2gxd2tBS0Uy2;4J;Z2pRNsk&LYI>)k-3kwAp{M8;GFMt_gvi-*k)~u&*=0BYwRf4 ztUg@i<(n$6;2cGHN~`>wx%bL#uv#ARjq$yPQcv6WG>Jvv%#y;E|#mE1m3a@I=DYP6Y;R^Ey=XeoLyTM_VRhze>K_O1^uf>C%^TP0Js8>{C=(i8_Qzc{2 zk4hZpL;Ua%j7Y)j2>FkAkA!1StQ02*`0+2Jx+#P0 z@}mp8Ven^-KN`!z!Dnm_91nK~VBV|W93Wk@kymdF&?hK)ulT+IYIdgtMi$ra3Amv? zA_P<$5r%|@lmRo(;H7wka^=kkF~M2v7nyc5f=J30xZ{@yoFod?%+5xP%$s*)lf(Ovb_AcP0!O(t^auv8au#tN z4NdVzO-*SQk*B$#3@5t$#rrQ*C7pcJ(fo9q*cfvDL&j$-Pkw;0`j2#x-|@f>|85=M zp`4HZ(4?yUk_50nA*<#qt;PPAWl_rS`46rolX?8>I}m}m<<$m|q0qnlA!O4>M!W1D zhc0>b5P-QK0)4XpOjm#*#1gg)cI$NeVgVT52r$!vTe@)6gkCdwWs?8^Q1JjHvPofw zG=NBo;#~cIej~GSmAis7u@`3T^6R$v&iPn=Q_GE*P6w~*CD#KI-SR~kjDnZ9XFyr^MMrrV;LbaD*i|Aivbif;5ct|4Jn4< zMgl0M#2Gv_17m>L5fDWZv`$lgIlZ2ADB3{B!cmYC6!DJFI!DyM-k_7uauWede=?uN zu8YK!j{}M`GC+eG8-PRb{(L0`I@*-$2s%B8(0FLbBQ*>Y$VuZQtd^+INvA@Yf^Z6e zN8ZVm3uai$HAGNao+jLla=r+xohJY-jpETFH%xC^GVekiG{}!VQ@pqUy4v6k2lC6W7-GF3Fbyg#3Mq*7 zrwtS>W}?b5XH)36Y*}NH5H;tb2P2C*4#Gb809L?WIcHar0~88tkv$9x=*g6N^iB=% zP&2$8i(<}?ot`TU)^GN1Kw{Th}FI!i_AvvL!4C*XBhoo@*}Q`s|*eY_WtjiyTkamk=yrV`U*9Jr6Vc zi-o+#LS7B^+BExG)(i}1dvqkBdpyj6j#%$kp29pr9y6c8vs zLx?mSb>)!Ho{vPJlMP*daAhNHpwbquf#}`8kDoc1gqr>-Pw8GPd^Dq@d@1+&x6cz% zyL(quYWXPmk_}W(Ajs#Y=Tq;9TCE09tFaK6TFo z3e?7k&53iOHm0*QhsdSUJiNK?KauN>&jW&In1_zfgM0_WJhTtnxwSRtfn5Nf2T)oX z%@GUWUY`-031$Ruqv4ED5dC3fMluDzATF;2n(Ca`u%)+K1zu6prq&DCgm%XQLgzvd zy=2NkXsb;qcix=Sgogf~rB@@b%XX#rFx0coH(xQ|c)B}4TdO9$0HaMhRgN7lkP?av zVWqEIV?Q13ArhQWghxP;@3f++`cefO@MO|b6^aNqMwV*R)`#{NhD()!IbxJ3BDFEG zJVia@#gM8H%??i*pyx*y2JsCPFt&P`nk2cSeiPER5?qTg^gR;y@G4cThoENvQ?W z%Gg;#8R+qQHS|WXl0G?l1elDx9v$<@>(Mcdyf)NWz#1K;zaqdjt!SAS3tPuXUrDwH6nL^Uif~O_hra!-&DIhjdabuBl>ikw@e?mKkOn zlqaS7q}rBRN2+5fU89Kq;%YQ1NUzq88~E^{D!6G_gp=bi8FZ^5oLA(F&x|~J7En^*&41Cha8Prr@)yw)iqASS9bB_4HF;>TBKC4LY%=Z^9b@&&A5M!tY` z&!{ip*`He?S)VVXr@gTVIXZXt>Gar7N9WN#9nWV+=hQx(9b2n~#*`cx=9kEG5i5*G zAn4D=ubyJ_GwC$1RGA5lI-XZ5dxZ*2F&3?qn(nf?iB(F=x02UFX(zce@hq+$YWPCyREW-V#CjYt%_XYF< zxjI+5z7AL`d^TCW4s0uOHu=3i0aoN}GP@=vVCuQb>AHp>6ggMf{Az^xP~=?YafR^= zMb1qIzdCwl!uR=Gz$HA3HC=&MkyU|5kyROQk@eR`I4;m$i~2Pu8YMi9X4T}}Ixebr zHQBa~cY0luXX`ko*EJbd7*!H1Q%+V1ug~jd<<-{Ub2I~+`5q4pQ$r?$^Sp(60XYWK z-guzH?U^UZu$nH(uzMT6h2jNl#8cXIS~X&M3Yx(SYvp;Kv3jpYCbVpKHKYY1nbbM6 zYG-!q8!SK5tk%0?;IN3DYlCBTx4I9uqRG1HkIj}f_P$md)HU-M7v!jx$d87dM@1(x zbdV99lT4KrXjACI?YI>vbyn7|aWl$T9UZI=(818c(ZLIt=}xw{am6DqPFzCAA}^j8 z5vUZ${64n0S^oAm*y&U8B(&}dRi(HEgS0x)i|T+byQ}~v2SV4u`B9xoh_^FjjlrMFqAWrtC6YJ2I+Xvjt=n* zBw=*8_Nko-9W!BT4!!$#yU}!gx!5+;Ihx3|T=4ACazW?Ra>1&gt&hibMHL!LMr<3d=~75-v(wgI zv42AK-Ylmwt2^2f4{T5@Y4wUTnf2G@8nf42{ZW5CI-eu2N9Swg_2_(zydH)3$m>yf zj=U}*wgw4fw-47rk+8Pb;S>+np$_!04tqRUhurI-bvVNV;Lk$d#)3EisRXgDpz+Lj z6x{ad>>6T>%?!?Yni-awbI5V)VsskpQ#%wshP+v=!zH9z?MV5mPe-T6Y8{WBqf=#{ zj+f3xr_DYcPm0elh21ZocQwIeikG1wR7C65y!{+hgV3I%ZKbj`@bzr!K+%2i%bF%| z#;UuYd$m-6qCdv+$17YT(!UcUD|c=Zzv2VG5>bEE3>KZBTK7r0zQ)iRT6%RTTNdhZ9 zvqY{l=xgv$bErF;C>{VYT&|(@DzcPgD88!nvB-KAMC)RX)5Ph3)VrrI9I7xu|qIeywGAPNHm> z)M7PBo(l6-WC;($d=yz)h5_D1Rt26#Rs~)~Rs|kKR%N_JRym^8>p&Wud@IhUs2M*Cfk2s;-hI>u9OhH3_ngf_hz(8tdq$*ELD8j#_#>LTV~tT`dt-kY+WA zyZ@UXuTKd+rfmUzq2QWwE!Vlip4dtQcNk?zNmdr5Dxc%(P#uUOAI&G9;;^~}(Z_?l z$>$j56=y}Ibe`R+k#D`i25~r(_%zfcoMCHwIn&W9KVz6vBfjXTcD!@G`xk#NieGseV~lw*x37ks_*aIfcg-C9oi2Qg}~Lw8IP8 zc4Cb^5XA@lPhWCTvu>KTixBkLlLTp!H)doZi}>K4`z?pmM?G>GW1`nd|J!Y@k8H#Y zvMdHDJdz<*kgKR{gfY=c$-ZC}2_B()df2xMR3uPRdm2;DKI(tR^0=ms-@GJ33_$Zx zT@+*tED8d35sKEY94C`+2&bO6bt@`A!wuB<(Z~7950hoJaab>iL*+BWdD*Ai)}^@r zUGCmi+mrbVT*iDap0>A>XSnFaZKI=oU%kM5+INxs5X@m`bj5i1W6sT01WpF zE3@RVvN#KZJEkH_PAxET#Gv4crD)KjX3B;MrE-E~5%e!a+ewpY2Aei@V?2Pl!3NjA z(E_Oal1{lQko2Uk-sWxqV4nypM!%mun*WqbfUl0M#ErueSgCY6qqj^fAjRq9MvVN$ zFSZASmE(+>5BWKUT;7#pLnb_;hHU6s8*+}XA<8x9RTx=3=+{O@9pgsEB})M4&G9eO zYa%E3$o?k5!OUfJGJlehbt@yQe_xKwO5BJ|EtDV%o<`PRCc>tj4=jeJSh@W$G@><* z4DHD?4vna5VQ7$`Fl9IutsWRB)zkH1V82ow*spR z#Eq2_oQJ-JpE{(Xsamhmfi1+D1i^%vG82_=Y{Cd*IUYwHQx(>k8Z4R=Ih<{62~*c| z%rsFjsR_GWl{SkpYqxCdWO7AuPm_7(F%QwS{{5O`)~Wc;HEI8vw08~HGSDdNCij(Crmh$#G8TtDvH0lzDNx$( zTa8tNK0%qF22QZ26V$+5g-mL&Oux?xBCM1BeuD;`pix9SEVwI+qj$`d%cs!pL(zQ6vb+>^b)q3Bomd z&Rs=1K|pSL{o1d`y83pd3jhDU6BN+TyZon=DVuoZeZ=$VXYoZgK@F_Jlsy8SHcjn!R3^E; zJ#XvABb`{VigG3|PsK;*b&^jn&Lk6Y12VCxXh&7>hO-MqbdXph4vCDj@|5nI(y}q0 zn_z$>5PrT61P-GY{QeVQpaKyoEjDs~>^Z`1{XFeI^W-r23~ZG56VF>z$cX&JH&?d< zyFuj2qyG1hAZ%J%`NXyKt8r*)(P$dz*x;?zaFUCXw2MzaKh9jjDyqFs23zw6QDUtc zlNwBzh+LNFBHQ2~ZS0<4)|EKc?8YGcK~Cco0qx#t{VSH5AN#8NZ{^92jsQPciDB`Y z@fGVVsG(ydON)S&B}1pV3wH4xM03W^gD9vLm|pk;3DJ#4thjiw{}e-247hL;Hn+Ph zA_T z@JLVJZ99?={}pyI^q2`W0a$PR#wnk84V9o)Lh2viULv(Yl{+k!O+xc9xH>F2m(RYF zb5s)~j(^dV6gTJD|Zsd@<<_Ug&e--WSpOK zABhlbwOKq9j^GqXS)|{8Qv)u@kbbc_QF~M9;Kgmt|c9*o*^` zjtrN+M>Y}-L23?b_G4%yT$#pNA%LF(NYRR2d5hJ`$ShJhy)#unYbd{+E+C*s`E5#w zHr}d)?m%%g-~_JDb0PQA9#dvx$B|8hs-c14f>ewET<2%YMj&!@%E*xs6WQ|UFY>ww zijc30AF(Jqoz*HT6%M;&;i+dL0&x>t{P803`6BWAMdHpP@gu1b`uGP$;wci)n(K&r z&8>%anOp}wj?X;Otuzw5379dW-3&lr8#gc_er?8et>OS7vaY~n5p%UjdMuJ&I`^Jw zG$TryhCq~;RKwt2&-@tLq|7V+c7VT_CPoh&H7pLNM?c+h7|tV z2v)l4qV1wt$V9NROo?XGDb>XE4#DX%uVn5Fm4MBwDiI%HLWOYZFb{gNhnjiVP2w7X z=k`5!&ZIU;Xf%&wy=w3>F(M&K+aZ{{ls7%wJkiO$Ha;weJ^jdQG-w)KHRvug*pFplzlOh%%-Cp?d-Q8c`j4_!MQ=)NZj zx4E~09=bceo``4`KxjF?b)|V&g8%g_G#=Oa<1PNU(jR;LK@arFHh*j(Dh=V27J}r- z35`Pd{5ZxXqaES-(eS({Ja6*XAMyu5+Vt^n`s3IA@hkrLWq;h@kGJ^aN`GALkNqM) z3JpDHp`+LvHV(m@gO1RLu!OY0z+Iy_QZGfbxLN|m%QOhhf{=0s(K6F? z+_A-!k-U*U z>-@OLI(>B1a<0Rky$7q!KfNq zY+ksS0l_9) zRD;M?mZa)62mrPyEol;$9)C0olp1P7e?I;*KO}Tn0$D!AHeOsfg#s2#W=_lKaup{*2jx&Os6V^$0(!e?A`9-XY z#9Cet&d!VP4>rIAJhg)n9N?o>w|ehieWmw$ztWpNb&cXhnzY9s1)27XYe?L*wIDUA zY8Q}#fOSKXAqB8(B8yQ-atpo8xW0~GW?WSKJ~}gTR93Q>@R^7Cz@pUj;ES{oT4V;u z&p^DL%2BNKB3Ai=GIXVP)5=P(=@~;8YbQ(~0bc2duJoqeWVTv^A9Cmb_PDh>Kz#0_%tLX3ccmjmY;2a2bp(!5xxm{y!u$env6U?_ z8m-Gj_l<7>JY3+d=_SV|6u}zv56gdch-z$p0-r?EMnAQO>akLu%Taf|go){q`eV0R zU@6=*xGazeMC1vrJL{83^cFd+we;8=E(C9;8?FVNc1Q%U3&Ckc6d);>|7O``T4JM^ zXW)o_A-FuN#Qf20hs@tHb&sqvo%vHu3?frWj1DGVTpD+vpZv9gai`^`nUEQbJG>O@ z1{~t=>MD=T&ewT_JJEM2SN$uvJ@iO|AU}B+^Y=0=l^ucUhsCfV@P4a|mda7X`(K+e z)99)(OPCu{2XFz;d=ypgTx#uYMCP{{gG5S8%-*ewFB*3JX+;`f4Im9jaUDtn+Ex$J zfJ_Nxa#n$hz&NhGTSF>BXo79FV-Cgh6mrbd5HxTSyAW2@Yt6aayrJo(>YyQayq}48h&NR*g{Fk zL|x`=E^V4xtj8Ar)%Qn-mMiM4^Ew%COdpW5ewI*$@ON%^$0)#dW+{NXd+d% z($tvT46NK!Jo%!vm~GRGY-7(NTqp3J> zRa6{kvZ&mwsN58IVpOi3ZlbSQD_EcLGvsdy0;Q`sr(DGenGh(;6qVbkYGO8^jLKOh z@fj*HiPCBwRw62wIF(a}>6uZijd~cB(+J2_|7eeg<<9y~9z!a(k<~I4s9Y;NX9O~) zq9AkSus1$J0L|B8(2Q>kk52MdjKx zD%UDVoAy2em7C&XmknCaTtl=Ll|y{puYT&D4|@>qM88DkHVC1BR*U;DUC%)wE2-RX zfGNHaQ^>Z=lHPc z3jb%F20|j48Db%?SSOr=U@P-zgu!l>|9x3wWTp6BB?QXfQ9_2Adz1)<8fXC)cIwte z=y`)BB?Apxa$8B7eFn^Axsu5}L#E2Op$5Z)XHVlsk0_;!u=JJ2icI1^L{lT8_kSFcbBO@EK@&ynmY57&j5&K4vR=^ z5VAQT3NoDq?jedYDI$al;=oZdvv5K0GpxF7(xo!)>V0W*EJq8V*JDhPPFGs7z&YwZ zX=eFzuulbR(H^>L)*`9#W>$M0{Vn<4Hu1f7AZy@vN|Ni2d|>Gweu*Vu$2E<>=PG?& zIVcDoP}F5?Y18%=Z^1T8X!i!Jjs3eJKcw$(pN@buH8y2j#&0s_SkZ1MsUrX?GSzSZlrk7g zDv#ji(7XBn`gdju|riWNv_mWh$Rp3bG280kDIR&$nKWP0Of)X0mBrEX*l zuea1TQa#dyl$HK5C!{gN$yTe9%?Go6tF_5F*CsC-r%fWpIn4rl3vCj!l{rJ$c9XP8 z*0XDq_NLG#*NteCnQ4=q9BmT+5Gb&4RhKMlUmz%R1LbE`Wp155Q?5RdHrcVV3O!}o zB<7%@Hfc&6?RF~KBq$Hb6effC&2-bjm5;r|{~k`#eRtl+UQ6f+kIdS#E@^Sqy40!Y zm#eyzF(&4)&@U@p8|s%-@HWIfl<6hgy$8csuj(4Klo=3Dzt~orC=-PAVlV)iNTvi? zKAHgq=3q9cfmW1{bX=*W$4*H;CKYwKNG;_OM#QAKbTa}HRY*Y6uDscRce)z54g#5V z9?6<@HBb_KX#+0QK+AMBP&?_MB$W_mJEan|!C*+nqnFOGw@(!upeWQp%QOX(OjiTh zhLQ}VuJYI^*=Jf08@c*UuKGu=S`a)Gxs#tfOhEE7ENO|Xl1&2^n@Gt|t4x%s7`3T^ zuf>>YGyq~aW~qU@)7OivxZ>C0r(%0DJCcyx5^TC3zfCF%R$p;&S%SHqax#Csumoc( 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⁡TXiOY&% zMa$mPqM|?qvgLp#n49cH@yXIPD-AB#ExEy_ZUe}_kw$YKGw$yYjxC5VkZUrXSTMnR%%g)855t${2Vmz4zh|mLeN_50YLhe(NSy( zX|Y9aDuAZe1qq(iLf?ai@)QbaWMmt%xk2Kt7_6dDrsbyD64s8{Hwwp~)`gydi%m-; z9Rt)KvEx-Djr0ynDchwUGu4}K;;*gZ_>v8>d<=Dk4jYIH{GrCy@wcM7Q9K%w@d3WQ zccDYc{wq{b$gwpEwq=@i^(RjfoxDhW$^S8GCE4}4X0l38mRv%#=$&<)iQ+(!--H~1 zPxSxzJ~OMK-@xV0zR_Md(qz15vZMMs%x zuCi`oIagJ*WZIk^-3spHr6qg+jVO}cucR5C+^t7pt=d@ejCaHO)rJUMkOIg76P4M^I8}(X;W{N8w584q?d5jib1YaunQf>|48PD- zlzW74rE4;=;6fqxiFL^wG!3q^u8aNWogbMf2P#v@X=YiTM0amdKMQ?(nAc-?D4rpd zZ8%6DSeZysow8{>=SP;jB7rEZ9=e4+w$uoM#QPKpFOj^+Or96gdhGQg^jfqEcd!GP zsXzLo)m`i7cST)`7E7@L9&-B?Rbx}!r}7oY1@L0m6W&F)p#A%H*T~z@dr}eB&x@tl zkH-m5%+<&gUOVI>#u^13ncC}Tp@i?0(RCO#nWSCS3Y!grzG&Jo2D09;**kGV19G{k#rITTY?+xt=7q1j7)#D= zm9{wRJctO3lcPY(QvT_&;@Y`n3)4{T_+g(B)vn@WX}#iu(6MPT`IdogL(ob?7I%n6 z$;skOsRNENA{N@hD8Xe57lK2utRGomJQ=Z;7wj0`ywJUjX(x7uT6du%96sG7;u=Q_ z>EEziPgb)9Y#Ne!c80rAS?c@hs>KT$HqEo&nrL(JZLhnH{L@`S{;^LGEo&jL1{9zZ z@udrO!^moYM|X^3ied)JOb2zohm+XTBv#PSid66`p&fW(Nr=)+jMhZkEv$%wBZB>Q zj0uWz@^;($E*5t0(Z@uTU+H0;`rJqT%%nBK<}U55c1V-aUMWC8>LYLfJ>o6cNqMuu zuxqT<`7cE}sH-hPhB4E&d&6Ijz`#X)mSLTKW(-T80t7gjusrvCDe9X`iV9i z7h<2)?=OlY0DOugNs5lii-hGCJ^B}x-0U1K{8kv+(#drOM4cBT4oY4($lkvGNxVQa z8zGp?%?zem>#L&hfSOoh1^FUnTv=dcNHVrgV^oGO>rVCMZrXD6!)YnO9ABN8RZDtIZ%X7aOwnP zR773r?00!sAa)W`!l24HI;0QINmSjgxk-~;Hg$fiaHo{^SV&;a;#smWx7Bz;j!7Y$ zT!pnSS$T1vwSC)A0Xh{&Yf&u9xRW7;ytYbMT)SI1VjbpN$kureD+?V8cC#hl>fLM0 zKSFVq4u9FdbBn^7CHI>!{!DHog|MCp33$o7O3FT&nKBdx(}EzF!4Yx1l4B0X7dc+T zk!cTuGdR!p=M2|9O6NGwpL_ke&!7AKc|d30+vLxi{do)Lko2vb1Ah*=Jm05Zz&XdU zjbk~-c8-l4gB&Y4{*z;r;}aZN-v1=$YR;eHT*CRYoKNShHhh}n%N#Sf{{d&cdmTr1 zV;KCJ^Aytm$T=7agWEVA%l)4@hqO?2(m504zx1AxvZ`4;dlhLqNB%s=pXYK`9~~d$ zZzJz%))vxKzl%7lEYg;UM^(!b8tAILPt2nOfQ`eSX>8<%@yVmDrGf#Hwn%Aw_kk>GlygdvgT-Nneu8DtC zr#$NFwxO{Rm8tH`U-!O}vX>p|t^7Wo9u}L z$8z^-j?+0b?t+I}jxg)~X};@Ud_Ohg{sBbxFTS6~_jF`tg)?=OPMtnQM=&E>t|NXv zd-}`DE2h14)|6LeUs-Zo<`plQd34z^Gma_^j-C4I@a4HmJyRY%Qyx829z9c@`2FCN zSuNRRvsYCeRUcKqbjfR`pE2dMna$HyEO=$j%jzoUy&`jJ#hKyK@|7pPq+#v}M=zRF z)|6{3%}+hO_SGl9eBrB3IyQcPtns6pFI@Ja{<%MS$+s(iH2dq9p8XGN{&mB}tAbC~ z{Ic}F8*Uyv<$dSv&R=oCaX*-K&zu5GVgwPeGBbwd?frtN&`;H>!lGyEU$Z~y#B^WjC^ zhZ*-T%Ougi7ki&6$xhKRHOPfJ++C)`-AxT%=y}PsT$zp;L3vik)Y2)_b~STp$mp5!=$Z29neynF@*Fky z)eC0NdDZ;-OyjJ&aQVzvob=KYUS9K(s%521rk*-|@sx__xOqpvrgC9zaQciz*%jr- zRv&ZxD^GseiA$$7l$=&}O75?HKOWD&6dtmLzfhM!mQ{%Vll=jHF4>W84?x@24stR0IzFOi9_-Gnw$99l=46n2zwE9hrlyt{hWJ4o=aL zJy?>pqvT*V%Q59($rK&aatEjBn0hcb)sEc3sZ%+o9n4MB;c;CiL3#&6`{z#pulwgu z6z%@`Q_0k6?w>zVwEO2zxr2Y@ALN3SFr_4G=V`gAb{68$-%X3Q-jf5PT)a2)>d$e1 zXYjpe@2h|`_&oI52c~{=${nDn&Djgfs_DD7;NEZ%=w9nV35Pr9uOjc?Kl<}9`0;U> z;C)M=H{Tuv>WWYhF|JYOQjtaWiJjnl-E3{T1EJnR5b#)YMc}Rn47idG9@# z4esW+hvP1e{ReZwqZ|)$9N>7E;}MR%9M5t*$8nJ3d5$MIp5%Cj<0+0idH-q7cW{0L z(A~?iALxCU^JAPJ=h(;bD93?|gWw5{r&a{PevT(N9_Ki~@tE!_N#}Tq(R+g90LN1- z_WL+L$@wW3qbE4_b3DngKEd%cEz(+ZfMXBGGLEGjuiz--5CrJ2ltXlYXu4B5PUG0k zA*%fej;A;dP~KA<`zZf_zM*gF`y2;2p5WN8x^V2Ho(DLd)Ukqlj=cvtUrajZ{hV*7 zPj04fe$R0W#~(QU$Z;#j?>MgKxPjwFj^A+H#PJx%pE&N}xR>KTj{7+t;JBOPHjY1Y z+|F?a$DJH^ar~C!L5_VKk8|X&`f^Fx6`7;>JG%JqsH2aXJ-cFd1%Kt`zzlygX96*0 zGs;R!OQ%nt1}d34m8lp);Dbg$A=9Vxq>R5AGiJ`5Icru$c}4m7Vv9d=G~KDcCv%U6 z&*k=Kw*-5$Pvjm9_vaqX4%5M-5aK(72f}T1^s~7?hmYp=hCK|xW4ZgoXL65)TZ4zf zUBSzO9l_mUe{fg0Ie1CX8yrQ6#{>hxOJNr83;TjQ!wZ6=gA0Q@!lB^t@cG<5;p4eS z!t;WM!@arN!>4nPXU_*2jKKhm1pC54fagH&w(zOkW7$o?{_tS#iIAbq@4b?q3Lg)5 z1kZ&Jzz*LJVBH%$9X=M!4~Bv$m>Qf6Q(7I|2XJfx*zN&{9;LhsDC5E4BpBFvfY*t^ zW`J%#Ov1FFGMG+HbFh(R5S@>}T=YYX&IoFP$Ag8z-r(8r!r-xRA1wIY0N)mX`QczL z?WzM&pAbA0RKX-a6AlN@(+>*(?StWV0cZY-ua%Tt9!{skvf$;E^FVla_*k|ySR6bO zHUy{8Cl7`6LH6PBq3qL@4~CD?)+cjMW}hsd#-uoqT@s81k7ggpKA7ECek}dJFLx?T z%Olyx!+qg_+`Zxb*=H*s3my%hDc_%cJojw*!}Qqm7w=`%p1b&&%BNQxJoqT%`0R@N z!-uoatT<5qbosLvKbG5H{`|pxjP5fRKT-Zv`O_DJ=Dw~T%`r{~;B}@^-$%m7frXbd zq7N~WVQ@ROAEK;>!$*Usa}R^jA7gAD$v&5x!U#V`|CI!H1^a?~ffa};`kc8KToBxW zIN@26vxNH6URAI$CzpUUnJ9t@tz-4DDxk$sABKUjVrF!E$}8@;=q+S1#(CxE@@ z%OA=OFZrfwda&||@_o5`dH!&Y9xH#Y^11RybN6QN4fh5Q>h0Xq<@?GX zp_F^6^@G7)dg}4q1Gxvn`x*0TjK#yW@S)t^>|;Qh&`v2(`FL<&?vdQX;Uo0HbYSKI z#^=G@f!qW1_d~%j@boC-^hEAJ`QF@p*@x(f`)SRSxu?pXt$en8fBF5i(kr6T~c;k$rRvml#zVE+E@bgFQ$$U(o+wUb4k!Z z58O`~_c8PKXGbXW0qXxKt$Hx~boO!J;BxOTkgJ?0n|Hldyvs`r;UR zWh?dAPan(%lbl4qZKIA)Q`3{_pE~+sh&DXM*SF9I7k~#IW~q2K`(!vuuRTPK4=^*I z3!kIL`+B8L z+p@pQ{i^&o>sk%=6;^L zHTS#n`^#^s{1bEG4`6}cWN*!0llx=t54m5I-(G%C`JXGV%ib2=8Qzrr-`uZrx8$xb zzb$uj`2*#5RNhzlqugELZ?iwn{VMnS+%@IDFTbPwzVf>(AFq6(@`l{+vVYFrn7cW5 zL;0=cf2_Q@^7hL6D<7>qP+z|XKye|9O>_geT%&O0s=x;Jn~B z!5@Mf!(Y%Z_vDVV(VhVgt`5!#ei7Up{4)GQcr&n7#cVANW&-7BA@IBwA>p;*t>F#X zd$Q+(ohw-lPDE(eAN(%(Q*eEFd-%uf!`WX4>zPFx5DE1LzYJ~zm;FAxF?&b$f!xo+ zHwAA9-Wc=+KM#H%{3QH&cw2Z&_TKD+IYutH29e}%gIj_hhrbDb7yg|7yg&CSYu}B* zuY#L`TMx|&v5W;>l_(1rD@CV_Sv+vFR zPxj~8k06eD39G^@Air9I|3IYsKf!y${|dhqemwgh*-z5)cLyH~matYW3-ZA`gAWB? z3Vs-TH2i${-SA`Cf6sn4`>X7`g6{{7!HS?cXbnD!;P+d>yTdEOZ-+k&Kb8G-_B+`d zvmXmC5C1***Wl9N{RoS{9{ecySoq)J_rnilzn}eT_GgUkXM(SXpGUC#x!^0o)xrNl z)qf)VX86wRC$c}v{+O9}Z}yA9e`hZXzZZNr__y$V;RnP248I)yYxe!wZ!lkf&CL8` z?yJGA+0TX_3O^ivJp5ev#qi4TU$S4xelz<^`uMi&^|`xp-w5u=eJA`(_^I$q;a9?M zgdfU&F#GN7*BF`K=I&(9-=F(-aBuGN?DxX2hVRJ!D7-BDx$Kv+-vy#?WFFtb+}WG^ z0jt_iv;UcWPxd3(FJ%8K`@f9r?Tp}^xqEWAmH#38 z_3Tf8rfa}gzt7%~`*ZGLU}QftOEB`0@aphu$Qs`pyf1i9@PXj+;ELc2h~U2*Tp4@^ zVduYxB@j|SE-8C`+4Qo~T&erbP03BS>*=}ar0{Dg`kfMTaPL#xQ+vy$xDxah#s!Hynl^n#Y1xcvrRCGh%4g21m{vM#dg-hg zGs??mRFsyLa{*iWGs>mVDJ9glY>Hh>aE6oUY2I^GVuLRyr+L5>jv>MR_ex z@)jgN^giX#zdxs3a_En5lM|w!+Dx0OKl&y&wWOqkuAAf{&g0(7seQg2`uCcWvNul+ zvs3NMSxOKq0ZU;VMa)>l>;;X1&7g61vf8PgGiZ_(P=cmF+{hHMC7h>D5qDzDif*a3 z@hYX$Rj|sk-|3}%pT<~GGiUlrh@F`+!_~xH)8YR6VshfTa6MzDDkR=V4`u=a#s?WE zqz<%HxT2YMV|TM=&axrW%WzAx7%{ulb-9WW7sX9^x%e)3%^k~^{s3QVuazA))><$X zX;0jHr8M8V!DN8 z>gXo&U&VV@@%~lmg45*%`P;7-A9==`FL`rCzWwS;ua5HPU48l0C39M?_{S@b>Fv7X z-FF<{+keL=?wB@b)fI2Q;@IAecf9|O>fSAPeCCdDcK)(AUpBkr^*8*-4RbnrZus~O zQ|eo9jBMTa*?pPWO_#mpvZFdW zZn*4*xgEVXTyewH`juC{?aG&qY}ohSeJ6};+V`n_rS-49@*P*cV&o0`KDh6sk@NR` zZeNhU?8cI^kA)RbbhUI?J5=2e%BT=peGasFo(}DSVtzB!-BIw*_0T09&}75t)3Q+W zuYqE34mzR6M$oF2K)De$<$@?nb&7}G8bktvyaNm&D3X_G98)T%y1?<`{>MTGK(_Jna)gKW+YQG`7fnTs@(7|B!iC z=07u6W_~!Kp8uG6cjgnBuV#KUp~i2`yeIR?%-1siJE87x%e*)9sm#|iKc3Kvf6BZs z^XbetGC#>on|*AiI{nz?$}G#gHuHwe`I(C{@5p>G^SR8oGe6Ii&3zZOUkY) zsi=r5YAepDXstcD>Y{w~`lu(mFnV+J zAJNC7FGoL!ejWWedNc~>W-5+~=0^2VQ-l{oG#tGpx-7aP`bu7$8)QXozCqzr4 zmC=T1Q?xUBTlC)OQ_A4fMucSi@JsdIA`FN;o$PKnNp&WdmmjQ%NlU-aqd8_`dq z-$wUDPei%7(<+XQs-vasxw|pi677!O9=$*MO!Up@r_t}Cd!r|#X>+GnygaIjPK{Pa zXGdG3J<&f$ABa91eJlD|baQlH^i(u`ZfV6UqLYYP_1fqS(fQFu(L16KMxTqm9sNA| zeRO~HbW}RGtm2i?$!Nd_3!=Y?{w4ZQ^!eyJ(KXR6(F4&lQQ6!X6~{&MqSK=_ z(Ho;}(cebzj6NKFA^L7~ZS;re!RXm&#@v||uZrel%eOWiGCT~8a*66AI+LuUQtQJrWH|J z)E(`JE{^^^`dIYe(f6ZYMSqGOi4I2PbA#CxbD}x5bIzF4KIgnSLvt>fbLpJR=X`0- zRdcSJbK9J~bHGCR$NpGS)=>iHn1M{<81Tn&V6@}GBJ;p&4d9Y9z$WeBlk<>1>;^Mk z3K#YTc#j*AFB}6(xrAvPWX{N3lDR4qWY5T60?!3P%U^$MN!is<-Y;BoKbZ4x;iy#Z zRdBO=gBc*Jjg>PB83^2z;u+QtvDt z96GInp^g~lbZ5DNh)et?-E||v&wZ46Y&efD+sNASP6p+t;e+8Z;H51L%C#tyQ-gkc zNm=_0iawr#PX}@&?I?yDRrA5%S;jb`qN~C;hNBev2}a@%R5oIf*+#KH%{-fF$PO{i z>XfhCL9vsKz+VNV`OEJ7zXeey0)La$JKgJr4*JVLl&|D(zpJFI_y3O%U4M5;*;oH> z!ILigKLOADW%vF+2Tt|DJyamej(?~0GBryRxAFRtFi=f&0A9aL7%tv+dy83CMlBBfPEDI)-Gyb%Drs?@pe z54Q6W;9%^&S#LV+p6TB{?S$J)PoEQ=aeB$Ie{*`*u^&18@qOPr{p;`k)9G)%HdtPE zM`1;)CZx~p#{Ji^{mk+gdE&s@e`T(*41jUQZo z%ib%Ne|E;_mw)esE0^E2;ycT4Jo|^suiJUe^56qEEdTqfZ&`ldzB`r=)jha;|L%Ru zzxs=3mw)5~nZ~nkn%da^>axbS4wp9`b;Hq(>(4m0@$KI}uCY5mr}33HRyEEXKB@78 zuUOc4&$WvhAN;4KjX!wp^2Sde)6{tMT`Lu!A2 z8U2kPTe7wB*1EyQpnjzB*i&{lo|ON)#-pp>-1yX&|DkbFpp8oB|Q*Zcg6=Z)-g6 zggYANe&Vjik5}H?c-#B$Z!D{LsBzK%N7q}xRSo_B|A2Hih)9W|h?KxL$5exn7? zhqU3OiVj$e8v|xjbwTJb7H)g#L1~aaTwG)Td!h_MImrmLGR6UuV+=$2OEWsbF;I^eT{4tmcCzNbp+#sjd zw$RaI2cNM$Fnf8RTTXy-EFU)ekx*+Z0C!Ca;=fTarU!v@Bf$HzX`meL0QG!FIHBwW z)1NzmP5X2xD{}^ixh@cB;tJ>cU15Fa3^-Ea2KwGJ;jX$nJiP4=Ce>+AewIIkO_~kDp4niW834PD0>Qj15W1Gl zf#tGuLG#dDxZoTFg^z;3B`p{fl;^>{z4M^SJ_J^u3xT-6PzZe%3UgxSL-@da$j?~- z?c!k|TN(ygG7CYYY$4p042RzQaL^bGhh0gFpy1sixDd7&a&9h$2G=F9ynP8=Fo}Q{ zn_;-G&~9H?c-!Q3rzAUqNWQ!c~-{WK232IFA7Ry@d9#e<@I zJWO324{15^@T4*xB3t7@<7zxSdL0iJ#S`F;egepn39uj_0q(^mK>F$g5FAPX{WA$* z{5SzT2NR%rbRsC*B|^P#BE-fdLg1=ISa>KAD$XXtv!{s=Dw+hM`bls}kOUn;NpK@I z2^6;^LFCaSc;Ax*o4zE$B9&wavP_0V?__9>P6p*Q$*`_I8LTfS!;g2#@K`=cZJk+EU@x?NnIxD;4JJ zrhykqgE(&1r3I<#(1hiYLuY`mWiJN~8v zHp+kx&KY2{ECW`r%7AZ;84%f%0Uy6-K%Pz}j6<1lGb|If7G=WnLzyt+awb@P&V=zA zSumc+0_%`0@XX7ClzmxHe?AM|zs~}D)oduU%ZBGc+2E0r4JT@{!SP%+Tz!`f5h^(# zWtRhuK{*hblLM-IbKt_c94LIB10a(NyT{~$w0SPXP0NLczPaGBI2UkAE=*aO3p=*u zf?{JXWSz)`H$Ax!_#zk14CKO8xjfi2HV>37^B~(X58n9afnP)(Fll)(ZdD$v+>r;L zj^shWsXP$g%!ARd@*wF~9$b;nhY9-mkYSY%SDf-eKOi3>m*zuLdOq~8$_I;``4G{R z57npg;o{AF`2I24vK;-gC7oJt8~8tMG4SU2{?F^fH0^8#w{y> zoRkviE-C@djV0i>rv!?Ql)&E35;%OR1lHXxfv{I4KzuI&d+}08R4s+`2BmPtycDzr zr68D53NL+2q20X{Mse#epcKwdErlH8Qh39~z5cfZuDmS))XU|6vIL&hmq12k2}pDK zdB<{j26JgUmq3jfmHaibkqdds}mMj1Nu+<2z~aA}|fidQ-tEAQcjBq=2+f3RGT92I=X^K+s8` zYMumJcP7Fo#YBM21Za2}4`n{_;6lg2Jfk?6wlWq1zr?`Tpcq(wIvOM`q9LX#3Jyv{ zK|{<6DC&*mzTYCDbLVo{A+j7A<}ZVV9ZO-Z&Qh>ViGU3^mcS#bn%`li2vjBE<&4(5G^WkK2DA1QfV1;oA^rz2*CD(#s>-b>s z$Or<(?z!-H++3hi=D@4-fuN@w2t!c;aDbf+_A0aC!a{#o-0BCPB>ccH&=-;p`hfh; zS+IM?ENI{C4G*7qf&COO$V~QxSk?osNqc~mpF4cnF%y#Bxq+I%4Q8&M0jD3jg1&_- zNMyOd`z~iNRCb21v!?@H=>(teIfCO@N0<}p0QYxJ1Lr3I_r?P}S&m>w69sy|1Tby7 z03NL+;re|(gqiZeGlc-}lRTI#%Yz^ETN#v0_eNu@KV)SCIm@q!p=Dw5O_!(f_|z&l&c!RdR54}tpa`8 zDq!rV3^Juk5Yny)AD=0JrIG?nCgkDEA~{&MQ5Iaz%fR|kGVqd{0aCwG3iNv=!QDg> zY||v**#&WUqazNBmyUwuW-)Lb5QRQM6pT_u;9JCBbm0CVnmFqZs=D$Eg;77z)0Q77 z-ugTG(DoG>IQ66M>z`5L;!nup=La-y)q9ku`wq1odV>;eUZaGLmng~k1xmgA44nvg ziZ(uZj3&lELctP!sHy4!+GTkk?LBiBb(np_r^A=!;$>QaMqNdc*6Gzf>(+Uwa7c znspH6ecz9)x9>ys)Ayne@AjaNn|7naunXzF*@2ukZAarAwxQGStI(9{O0>jnD@qvH zjAkF)gk)eBXn~Px|$Y%N)7zc((^tjHqjgHH1tGoyJsTj{28dq z)&<>pyLOhVOP zC!n0W#^_0x5wfBUkWrH!imuZ|U9~#sS%Wr8KdOnQvFhl}MO9>ePZ@oDr-*dMBmzn5M?J zwo%=yTPdaJChC=c1GU7lma4WpNNup%NBKGDV<|Q)D6)BitnFGH3nr+(K^Z0g_p4uJ{d_(tX)FA-xWrEs+mWb zwFXj6*Le>|yIHf~g1`gH2lWuUaoNosYq9c8L%O-b*VLd~2yiITo$OwA}Zpx!#^ zQa2T~srN6`sBxE+sPs-b>Pv?dweG?w%Jtk|0j)kDIFt5CaN+waL1g)3L8JX$!Mfkq z1?s&Q1xXi93rufy2x@*E69n>(2n6d6366}a5$J5(Cb;gnS&$StxNKE~hn1!M5)9rKmw zXTo%UGW@(D#-&LV2Rt5y|6G&6!a^yWJ1C8RIm%+0d2-mxTOJP?Dd7D33fM7E5w~h8 z;RCyr@Mc40e79N|A6HSq-||)Pfp;o+&|MWv?@+~ceX6)pK@G1oR>RJQYFH?uhV755 z;$QPrarO-r{C>O&-r%c@w+AcXa7RVFLq-AT9+ks_nX>rDMQI!aQaI|61U6O@$IeM& z`0srY{HbJ!3H1KW_{$A2Zb!c|9nPPbtF7-Dm*20MGL09EmiQAUuIm94z2FX`*>i*W zI-#4{9Db1rS$CF+Xg1aPtbuV*JjBGS?`87Tb~4AMtC)^Y8yVSi zYnjCImCQ!6hzS+uFk@aMG9M(CGtFb?Gg~eE83W3V+3SiJ<5^P~qrizw|GcqG^g>le zeW?_abbo-3ee;Cw`hAJMrrJh3+3cp%7MIfl{*m+nv*&1Od`VT8gcQJ3cvp)pZ~c!oZtATh|m76ynSJ~q2Wk(KTkC7d#y53jnq&hRA<;-izHKDS@e#5+vxywCXePVv zG?O`LEo7o>EBTU72 zP^cu;2R4&SZfzvv_pT>(L)Vd|e^--Yh2>=Qi&Ao{VKMo{vVc6Vl1rW{O(XLw;z<(} zNxs|^PKxgjCSPaxkyFOIliDqg*n-tXWk4>-O`{PW${ioUdJt^jVgME^GL3{_XaD6bL zo1Mfv{jH;2bYYtC;KcL7$n~=HuXsz^+Bbk+>zYY#x2>RqBKOj@XWM9VxJa8`en?kD ze4%HL8pW)i>aR!#H0$tnNTA3R``mD4K`bBhrb`=;S1mR*v*i_ zRs>*2$^l1Aal$z=&Uo`R7ksQ}29}vH6XRxgtZn9rm#_E2CNI44SrZ?8EzlP`r1)Wv z5`Sz{HXCPV2jJL~lI4qqy@YD8Sd~aB6y{*_C4snne*pGV2*8t; z&BpSyKOQUMk6lPVd@#}%8&&w=*4kOvjq%2pST8Io^u$m0dtieycf4!&c12KP@=Msa=ii%&%RPh0Z^!dgx3165WQ6HI5$9GI(|0^b<;5ifV z^)Zt);~`U*cb6I1eT!+Wz0O?Tb%lv5xWJ^(KFeflpJdFgbTE>sLWb5l%JelHVFpkg zv*Y{$=8ty`^Y{7=rqi#AQR&&l{P3w@j$T{EB>R;zzPAgQ<)^Zl%Ew8JonjOd0 z8~W$i`}F0oD|Gg^M2 zkgqorkFGQjZhuY_#twIgG27k}C#?Sv0h=WF;j`uW3Q4MbTMcc##+^Y(RgCxzje7hW_G9=r4{7nmMyc~9rYrNyBIWr{)1~>HvEqC^ z9})fuG(c#uABh>0UlL2o9}@T9-6YxqFB7e|P7{ygF!5_@D{*vO9TDfUm$2Ejjo3YT z6LIX-YC`LJF>&Kk4&m<h8ut6GZ0*&f=GaHf z&9Qf!u*tq-b)EgXacAw%|o!w6~j6X~WXV(*B{Era#j9Z9-uA{_7)K1i{ zqzTssOzf-gB)UqE6U|O13C+i+i2emr<)QOLRqF-fwDm>edelWi zY5qk*eeeR2%)db7DxW7VCUp@$OU@9?qm#s;K9enH zK3atJ7zyHJ&QqR^1H;?XUBR0)=*5eE|Jh!1iL|{1_HQe=EZ?s6WKnz7tsU)q+b*_? zSp00)IHV@@7&BS8;kToZa19pb_a_MNq!$Zw#%>VSKG-Qd)LJK0s}u^$i_QvVl6!<} zmOm24FM2POTl`Cye{>W*iIAm@Xl44iy%znqaV%YGXiU#pX-Y@FvZOl+d-@Oe4?udG z6TSM08(s3(n~snVpmU_>(P>}8X#Wcl^upCq^lmbNR_;lq#r(2q;r%@NetseSQm2GA z-&;mY>#w5YSFWM8UaX_PTWz43s72kZS>ppDmvu! zR(gfx7W$myCOR&C1Km+yK_7XzmUdHEL$4-R(JFfi`R3m1NWbj2DNu)R= zi!^GL(B&oSsKRPAx+klL7JW8C@XQ2leqx5S-&!H}KXyn$LxAFJ9FSv>3$iJ8M}2Lx zkn_jc=$KhB(vDq#^o5Jj7pX`j8xo7ww|f%bKEu~D~(Fj@T3~`9@&9rX75JcGxwq>^#ka}{X?j^rVgE4+K8r_HKVy7 zTajK%8#cIp6!!i-+PL}?x^LQ#zMlSuguw%-^}{ceoHdBv zjS>L`S5c@f6$4F<@p?;3fU}DvT*{Y%TOHD{=!Xm}w2%X4u{^A(Qh?;kig0g833i&R zK-WA~m{+F8-LF*#p|2(!%Fu$Zd$ghI+-TVTP6q}Rb%C)MVY~h-^ue;!0HXI8f*NB4 z2G_?y)k|Z@|2-aVE11A`y@}8>WfG*5rm)dFB*mw{C3^gXy_@3hV9Rz;m5QX*t{tQ zGVaAdkyR`l2#AHyWwGFt6ANuyV&Q31EIhds3s+x`@Y_V)IM`tq2ZOWXU{7QmWEOMU z9S2)*99-y)gE9SaP_7sc`lj*F>l_cQVe!zOHNtMKj>W_N>+vw{V?6woOMvGS6X2V3 z0+@#1r^3B2o*p!;$XWPV73*-9hKw$vvX9>#O)8{PgznhG)7Qo-_gDkwkWB%KCUW@!*V zD-EtDrh#i^8g~w*LC%vjaFj|1BeM}!Ynhx5LDlK7^>{kGd7cil4w z47jj61GaW$K+=0|n_4D>5t)!Me}vOsuFV9M>)f`1Oz60wA3tv5RVS89ExF+Som(me7JL3qqekvELdUL_yZ7#eX%H{T| z>}?SQ|KZr8!U%`G$1%tb+QZV5d>}H}A#3q)4 zF&FpwPzm&K{C3gx5*T7Q=DV*1=BzD&^{FK=F{}iB&)~!{VI@tD@BS`^1AWCDGcSf& z2a4eh$CcBfi$T_xtEX)-IFBxd<6Jw4J}QEjCyPL^k87*qA~2390tc5O7#LRs)*?l4 z?`|QyZz+WI@>;%f{Y)TAQ_bjNsqZ_B4%g6`SaW}6eu0KThc(vG!2S&rNR=;RJgD*1;huF;m(R= zFuR)sccv%7YgfSB_mL1cBN86&S`MGTFN2|(%V6vFrBLuO0*V|WfZVtQR=r#dgZ#xXX3Zj4 z`6wJrtiz!%e<5tY9tL5CVc^Q~)hIk4`laW?5C2fuvMU6>yqyOV?B{_`elVnTbI%BA z2f_OJbK(5HIpFm+5N23%*Pp}ym?E4F3kUsShl4*nEb;@H3%($#=nK_8KCpP>EVyvf z8!R-uAfS`Il1vje%@S>N5gPJ6;0eq0$Lcsf* zJb0|agDYt~xV;sy*G=iDi z4MFm>0sMKT51sP*FwRmBwEV|HL7Fa@?H&VrF6uzS&(Sb`@@ROyKpPHMX+hv^O=uXc z3H2cw@M@1b{C%kgIg{1kW~3@CKcE6T?kmG1S!MWZtpxqE72!;x0?eq82ayIjNVqHu z&p*pRlCBKw_LK&hVkt;IBMCobBthFp0#_Zx+((Qq9R}t zK7`6T|De%^zma$PPvm&>2dX2!qtpApBAGG$NN&?-^g#6!(q8`oC2-I3T_}HxYDc|6 zVrj2X!@C#g;QZ%kX3tZk~l)LI2s#onoXR6MixyGlFSmQ|)%iY!R zKFcD1-%b?&5Tl;u4BGWWi2fF~qu;7+X#MV^=(J@ksyN<^Bz>BY)sseKnAm`xOV*<` zRkg^>;xM{=`XEXUK7hvd??c_?dr_}(4Ju%EqhhaJ=+1*3sB8IlBsWlv78O^av)pfJ zzx`W~32!rUzPJ%J%-?`wzEz;DtJa~Z<2hE!u0|JvR-rRLRwB#IWk|uU6fNm3Ml;fj zP={V2dUQG;b+5=nYc+F`Sz#7>^&lPXBT`Z9mLwGYBOYl5#iDI&6zVsLL<$?0qF#|D zXm(sU+VpGzIvNy;uJ;6^$KG?%#VY~GXqG=(+v9`O=6a)3k37)lOQBHdN-*G`DB6gIkr4?lnV@8E` zm{4zY#!=@=^r)Mobf~v$G^j5VRj60jfTtv7g9}Nc3oP~XER71o$&e}|7_=< zBtM5Yk}v*jBkknM$sp4N^1Q%@yzXF0UNTfBudaT~|7o?Cf9#bv|HXo4;)V5-_JTFa z|JY~vIU$|D5Xos$$CxD)>s5G8XhG;p@i~v0jn_-mWT- z3pdK*XMd%!Nze%EJl;PFvq%gFl#Adub%Tr({}-UF!u~^{^Oi&Di@ivZ_Y4g?Z+AMEQUEKIL2)Md4%z7sbyLs_A^h_cQbR^ ztC??}o0-;Y>zGAQ&Yapj!Z_Q_5}98WOPPWX^O(BnK8)vPXXf=Yf(fuPXI5kyF|}tk znd8cG%;950bg$=2TK3gd+O@R(AK#SvQbzMuFQ!Mw+SAcnWau?I?ZR8pq;Q}0sJ2T@ zV)m!13F7sHqs00GNxt1=YyQrx5Ppb#A^%xgC0{bPfiIkXitl!^m*4#DE&ua_zx+`h zGUTpsHS)@1T~gL=0(mghg7gXIk#{FMklNjDr2GtDGH6{8>9J=anU}nrJRuQJKK4o@ zZ6@cEQ`QxbbHxut=>a6 z9NSBNsM${%h94x0zaAn(=hTw1>+8r52kObR9SvkdMk9G*`Vn&0&=GQBeG{4L+f3TN zY9^m9Z6VXHw2<#rTgg64j&T~bl5Wph$n)_nVU2ZU z)!<=rq4^WEuXH`v>_Y zFE;VZC*%tmlx6XUZ1B6KihSR*9r}P^a(?LY0>jv0DYw| zf{qd^rKj?@(Ob43q1TQ-LrZqup{FH(pqFnHWh~yvF-rED%LK96Jq}p9#R(f`I%9PUS8RW227c!^6K_B3j(-??;;I-gy!3!KK6QB( z_Il=nx4iSk(l7n+t?T|+zma2t83DM|E)f5H9Eh2$Ihc~2i}#nz#SY)+VqQQHes>@U z%f1W3f^oq($SW9oM+M`koM8N|AQ( z32q4-kJ-2pCfTw_AJ6ObjvjUD( zm&c;Hvbg8l2#=H%k;J1nisJ^WQCRo3C>Adf!S7Osn5$2IGb+SSrgr&vrf)?*GkV%5 zX6MUyjQf(;j66HSA}>fkWUda~VV>W<$?UJZ#?(4pX2S2BV_wcX&G5TfW`QlkSg$$8 zG~I7vYK-a`nS}?Lh;1Vra!|60@gz1eA(88t#vSF%ksHNKyJ9}WZcAtOnZ_~P{dne2 zb|_=)Ih*O>c`y|&PE1%T{~v?wbDqTX^%*cx)!Iy7sxo7fD$T@Hi7*pReWrKqenQvX z>Y;xxK0}v#wb64{bN8q9x%u-5Krq2Q%y~7w-JW9xc?|h`V2MiTrETMCOZDBJA5m;^nnR zgyp(^qS``?KX6QjAC|7n*Vv`WpEFCBAJbyU&wD)KA9p-QTk@4+ZTWTm1mD06@!$M) z;8)Cb=I@&{gRik;Ae#}*ZpLEEMFCIIUe`As*e{HWB|6$4`{t~GP{L}&?zVe$9-l)Aoi+{UNjlVQc zi9a?>j=#rPitl|{jQEq(P|b++^`QJCU5p8v^*V&8S`xk-Rl#HUG=*EIOD9- z5`>xlcOJ*wcqw65cweQC-&1UM0tDdRCzYDjd>Gm?Rl=+9$fvycqyr=ywkR&Jcr{Oc`A>0^K7;@^4{I; z;613h#FOa1$D7&ymS_F&H&0}WB$2sJk?2;`BK{oEC%*ViBt|J)5f=9eVglnxysUF4 zt{w9yY;J`R`f3rxljX4ldp(U9+Bw1$yMC`EiZ`q!qLnuiU6EV=G2+03yNJ}Ry~G>c zgM@!kEuqxjK#V@xL?mXm5?7Sl2=iniv9XRJ<_kLrY9~t+&p$zY7CA*E=bR=YZl594 zWV(nLnR7(k&2z;3h3AQ${pX3!s`Ess#d%`qoO8q}xh_HhoguEiJ4uMCA18J+VxqaL zop4{&O59xENZsQc(332^X~CM=bm_fdT2^x*-AOK`ch8KbgB=p-O?v6{&b}O)Jdsb^7ZlOj zwxzW7t(COplGU{G^R;xA?|Ry(VIw_zU^A_1SxE=auBPusY^RBcopg%dZu-sS8k+xU zFRi+3KRuQ_NH-imM8{jz(#osq=+f?b+H$CY9;J4Ku90b?6(2Xz9^0E~+Np(Beb7P& zMz+#+A6x1ArAO)Iw~x}1=ol?keT+sQj?v1zHrgb$jh@obMqj$qMvMP$qbI4f(=W!f z)6aC;X=BB9dhgdZTIp&Vy=Yq-T{EwZPF8B8?=~N!(_D_xf6gDJm!PAx{N7gj)9)5q z#kqyn$!(_P>znAc7mv`t?={l<9yZXcd+O==OdTD&sg~{xJ52A?KSZl_AE3|1@23@I z_R;Ux*U(|gduYx4U9{ZG9rQccPAjdhruDB@(qpBz(n|K5=^gVo(rNkY>49DA=rMQ= zU2$_2E%9L`&7I0{>TnU9+*A%drz+r+{Z_F4wgY;H_5sYPhko&+uvfYROe4;~D&s3K zIK3D8EHdID>3%p8CieDu&-a@*h8~;Zh81c$)ffsK99~CyG-Rr$58ucKqSe z8Fs3E%cc2dIDIakTb#Oq%R5Iz#EFxTD^CHZHm-bmTv*11YdEdtw2ISePR*QJI33~C z#K|G|6<76t&e8umPG#6GTA6c-9&wE0%)5rYq5s?ABRxLc+p7Pov$-PP@Ve=B#p|lq zC9hjvx4m4v7kF!%j5b+hve+cbq{*aB?Uq`X%xjtVG9Sc$h^LAXqE#Y0MGQD+Cs~nE z|Eev=c{&+#^Si4>_@Zf?H_1owC*p5pZp-wlb*nX->@m?X8Dp}(1eB9qu;7iEDk4 zA+D?baL4}vE}dcJaND@Fhd9I7znmO$-%7}B;H;y#7FXhY=l)kyOG?WPpIBTAbIA<* zt`B>z4|}i=aQ>Y?IsM`^T-2fAB)QS>uZaJXwIUb($MiswTi4?>T=d~83>S&B7Zw@f ziZfi@5pQ=TZhbgCC9Y^nT+ujF!(HzrnlT}4S=R$5YAjC*kaXY8n;s4~1! zU7btvFATwu($J`EE|cM`#6%Ri+7EGA4M`2@b5?k=Qp1hUIWcm_4Hp51^tnBv|3`ez zsrfG`a&~+Fi7zX!C@R9`$z{n6zJCk%a)eQwlgz)t$Qk905*3vcS5lPVUaY`b1P%{U zF;OW=5wZX7=kjyq6wGP33I6lz#kjh9xD!PbLpF5`hdT~zLtFsE^)cc!Y#ndF$&}OZ zj$wai6%mKl4-#@;Mf=5Vxt7c2z9ol4&d*-lmgPRP{}cW{w*QLfW`9h+W9}4T$9a z%U|+g4y)j*&AM&dIOU>}i z<&#>J!&q3G$o>#6h38}6bZ)a!VXa#D zZ0n13cG6Y{kS+~C)VXz3`K%f2gQEzF7A<3CpC+>>O5<6xv(<>!AM8|GY6|__y#3Xk z%VFZ2sYt=XmUSzZgy;TKSqr86#z+C_ z8aI!fapw-oGtFYVelB2%9B~*odopw@=dc+k)Y z9gzmWq$2i4t}{EBQQ!GIZ8@8us6{2ubYfFqFJm>=t7 zTGkcCj%!_mHlP34k&%_d#x@0^o8(e_KfqHhHBSdNqTaQ+DocC-Hqb`!khdm)c~* zgx}rh>3v_AUP`g^tuon%?{nDELEi#mXvvbnmK$Tgigeo6+s^2@~yb{6Hftwq7j?e1qO=m5Og4oE(;gGO= z7W;Qq8aqoTj8zB*@Zj6Cg1}5R^ZIOXcMX8hsoy(;6|&gT^{FsX))ORjBtSF96LO^G zaGA?=R{!f%wys?P=4U0b-wPjf-Y-gpprKAmea#Bi|3wg-`e?;2&dr2|-z8{zBMGb4 ztVPZb)zPGj6e}snhD)2*;+h;k_KCg%JHb4QJ=m2F&zoXd_s?1Eri#h%*Le!tGDj2{ zS~66$mv3ieygi#9kj|c1><#rLGLZM}DoQFU>3r%qg?;cY4j#@9g=kE6u5Zs~%g^`X zUylPJ+UO?5>%<+M64v1QGzWro20QAKZO3hR@z*p%zR@YLNBR%I!|=!R@|Q-EjZ3d=Z9AadBd8_n3; zjf1FW!Iw^_H^J=II#uL2Dvn)wcT?xx=aEzv@d!=&>&Cii(w(~M6JWkwONX91H@8_T zg^d~~%Z{6%2y?%?fvBSZZoWx|+a^0Y?Q^}@Rne-Hk4YN4MVJZK@BTn9^nKXdg-cm} z2lq^v<}BbnHtf7QD+r$K_X2WER%b)~S9G3u-x=4!J0EilA2!y+ zv)M~E*|+I_f_obhp;j`OohhEeo_{uuojEa$mCYNZ#{XFcy-U?$$<-Xz^p`CREeU1Q z&U<$T&Moe|f5Mz~U6$7Z%Ep#;HlFnd zt!cl}|Hs~UfJae%ea|MFE!iZy={=j?6Vlsece3drA%s9e5_(5KdT#**MLZDv3~EXFVFvZzVDsn?3vrn+X!h=&d zuewq;byyBN@7iijLF{e~K4{1_&poEOJno97Z^nGCaq~QGdvbqG;;9UcP&sE7FohQ{Be8bi|in7#_YSg#R|*~o8bEto5r(C&nUT8 z!7Mv+4!5CUCL1zyIJ-N}nmtn6Pwo9pvF6zZ371eko6WQ7&>b(H$9knN;D%YB)NQbv z$CW;tz-?<@p*#0eDf@+Hv0CwtjFUg#N4NeNOWllR0c^ns@oa#;h_mm1C^4{R1h=kq z1RMVB4ECj2sqFTkL^gfCW2NP?O}c25QTP5%-Iir%ax_v zG<%kHd1DZ(?_1S%+K0*jwhk*rhx7>-xWw$v*15t!XdVg*n{btW-Ui z%boG1=2goRI+Y}dd+p`9>~l-vxj8x0IKRwMY^-Of#;!xgCf`WqtozU84)rf(P2Reo z`JvBrb_%{#BEk1Qraf!QJ-78`&CKUYxIJ3zV$Am8PQ4`Hepuzti7(CO_AH#BbIzL1 ziYyj#Uwh2vHe60*4=di*EO_aR=9qGx&hc9hcCYe7-I3a(y1m;cR=)4^Qf1BDak?ur zX0w}?t97GasMEam^|{Ks{52l;?ZpRKx;MydT_dMwI*#PzO^Fw zK{I-3qefmmk^S-Z6+0&*>&ELVFVTXQS#Y z*ds?ux$@I9xO69$jjL!@XG~zZGkadp&56XCpMgEOePgGy_iuhw**?5QGX!gj`o%ra ztX*+cZF4q-OCL6pt$$?2-rxDDCa)oh-M4BM`@(#C?$fIyxwqnz*!vsa)V)7xK6fZ& zk)~kRDP8K4(cF>3AolwO^Vx3~&*6&uwNxBFI-1=#xs+vx58?Jo7qVR5I4yROF= zapgw~bhs-2Tq`%yvc z{fGtZS8WTqGw^3x8|{jtxjn6Pp;FjWmw(Xu5+}6^OKF^(wCL8ix#=CC(0NuV$2AxbkTc>w!tOr(9@-Cf^sT5 zNz;!tU%a^TdXOFW>K&}*tdGo+Mv0X-ghEeAHBKO2#c+ z;jr&CNe4!8)7O`>$9%rh9Nfrqwd2=U?)pg0W=u|Dy>(|b=RVeOua!<^&)NI3CpLet z+4q8yz0+?Z=jQW+Caz&aP9~6#ZI49rY;yQ zX5ZcG$hMkkSf7qq_2!Qjur8q)I?=^m+_*Kvx#!0EaPDW~*z5xj)#)LHoJHX@?uEeF zTwbn{E4kj6ecHV-@p`{fuIh)m-1El!G_#vZIdL_VCJ8j1d zcJjpCx_A7ISTE^J*3KtXW5K0zXJ;+ZSXY#?!+wa_U*bETJ$W>nd-sFctkP{EH~h>( zZt$v7Zu+sciGE4ZT-}rpG(AT}aqRJltUY*gdp~T)7*B3_xxcPvp095Ex*43`tee zq7%cpCFkliIruh^@=zhSqcMqlXSPXVV##FoY3HiSnfHs?^~NH0YT8#CrvZJ~-K#2f znN@?inNvU4HBI_hlWjeTTbW$M#RvLvn$wB8CAIZxsjifLZNwBd=T<*9G#YEYAMV!m ziMC|hR?O5rb?1?0Y@c0St)GR4?zHJT{b#pd%!)3VUg}p=AF%o0lFzXaeX4bQb!}~qZJ#}sx7xTfY%B(9> zIRC8^xEn#|DqCMK!y$JJ^+(H%UOg|(kz*0fD_vGT z#m;`<&mE|2)qU=$U>zTf;C`GO%eCA2v3qp>tk?U&?1wIWxE^oR>rUMd(p^p~<b`v7#!bQd`Ovjjb^AL@+20kc-bMx9z)%6{^( zLZ_cTf&1+Hx!lqbH*~q@Ou72WSbMi7hOHcJr?x%o$(Fxj!fxMC!u6jtmCM=i`hLgn z=X03+XH(A(VJ}=7$u9An#C?7Cd(Eu-ShqfOB5PJYhrPODAX{!*%5on?vJa+A<@~0- zsrzx^I5seO9`|qG|IcB-?>yiKz>k0nfQx|7F{-y0PyyHn*bk@#=l~qx0N^0t5a2N2 z2;eB-7~nYI3&59v6M(M(Ujx1YoCJIeI0g6)(0%&gEsXk|!E@>K!aKM>i~B0z8o2KR z9snK!=ww4Wxv>e*s>D5@4I_;>MvWhf#;`ckfpL`u02)Mb1#}OJB8a~p9~h-ExA}l} z0!oWP)mG4>6BQfr3_4YjPEmZM$GOhPPc87{CneH}hjfbKU!AZ>rzlCr)AP9ncXL0K0X@T4u3i=vlE~PXs^B@!hxTL z36S5;cl_36X@!Xm!3!Z6TI=d2rss`;4}oZI-@gn#einU14Jkrg^j@-zl= zzXzNFoCTZ%oCo{>phGHu{D z18x9_?Kgpm^>olEvHvRY9l#@0BON$;ANT=)4hf~hLF)h{eodvQdO$1ttBCO;0kNQi zKxyiPM5Ptb)+Ih9MlJxFKB4jV$3^Y&sgqWOk*LwsODpKmfugNM6F>)!k|>ktwE;-< zNYtqbkl5WtKJNjpA@6jk=Uo6Dc-no4>OKBmjxZ7{Im#_ZdF6;FM>;vmOZ*|xlB3LW z@Ij9962Iu+RSGx8bL8NI9Q-jH^jVMl20$aA3Gnzpe;eF?7@$A3UL-q=0eXHY-o}Q< z);4fk!G~OM;OtM#($Mq*fB0wjjL74nh7(Kpb6@zQYxrp$gY+5*{z4Z-e|Z%DM6i~w z8(`N>z%4)(;5Oh6;4a`E;Bk#YEt{&no6RH!Bo5aB?WhjYEZx&AZlFyQ3Utw22F+>E zFl;BF1MxZ#zq*tGo1rxTbOvh^pc&8tXazK)3Y!4UfEEBv>pVWqLsKz&fOg~CB3bxj z(?MOgX1~rx$jszjo-|owxX{{>?y!I)grtL73Q2pnlu&D+RzT825<|8A0Pqm-2v7~6 zEYlIXG(*JC77+_j#D#!Ao5tZ;0Es3R(6kRu-{gy416s9!IzT<30ni9&0yG0!0Ih&F zKs%rVK(kQ4D6aC2U_tl9Z5LKpTHuTvF+cAkk`fDk8^PKdXH+5GE|czJU4bzFQ$1V{ zHV`|g_NW%ySQHOHjg$JHUnB&qAvXLOdx&i$LBt+v*wmVvxbDC&!-imAFuQP8Q)R4x*y zZXQx=Xf8GIkXj1gVxR=O`|Q8sUw7Y3bIp7|PpwjEsD~ENBR+Pwu={W)DcU4}WS{8o8N`JM8#@_XeOj8`7)dyPE8Z z#joU4y!T8_Mb+T!iV@Pxinfty6+?ewD|Yy(D;5+-SA-UZR(!7Zt=RjMbA|dR%ZlQk zMHOa?YxaKm$+^9)FYnp=&hA;G)d_dR zMyge1W~voG*r^^4_fTo~1gWl-#i*Y5(5g!h=Wti&6w(+XFlV_?{&sn6h zKeSYJe!+58d-lt!W8SM(1)r}`af%J9xA6U}eeUn8HcZ>9db?_eDkt_M)r)U_tQz>; zC#o@D>{i9*>``UMf37m`{9ILj>~q!RA;1ZHR4Z5RR(&(>6V=%9<*FW)AE;Ij-l}>z z?>&|8`x{h;F1?}J{`||T5y8)^e8lrrlLTW`NqzEFl}{(Ao_X6{HQ|a-wf@G*1fN?k zC2afIAt7c}RcxR}UJ*KhZ}i<0m5t*U*n zZ@W;m|DBDt`{(ZU+3!9qX8)S^GWJ_cEl%t_IzI8#hJ}eQSiO*VyW`cwS3)-=KKKbv0Q!q)0OIbKfR=OzrRZT=J{9EJKkQc zKBIX<{pjGEYEzrFYCFw3^=$Qeb&17W>UVa$rT)rsgL+E-2KBIl4eCwG4eF0~zNLOq z@RoX$!+N#m{#x~=#cR~pPraeOe}1+4-r85yqik2HlQl1@mwPW)Kl=DNb>D_()bbMx z)OkiT)E=*oSKpg8OdYqQQ0?iLt)8mas888MsOu+rtM}U4sfX!B>R8Rg#9rp#B>Ilr zp19fRxkTeVNr{_!+)#zQAW&V)%-`oa(QN;j`D6AkzrJaI*z)i9XI?X^lziz@SvNkm z(&KV|WsU8m%KIkIRUWyzy3$0sx$?;8pH$BN_;972^i1W=y*Db$jx|)Se%)9%cB+}K zYObx$WT%_%fW%*?TOO{P8l}>0GEUQ7YRT2Dmlx|U_Z*>H`rgyJN3OGVwgVRHbh|P3 z?z&R9`qfu-o2=i|#cg~`mm0fCcjMd^-Ht^c>Z~I^(Ve~Xxn|i`o#xx|M>H;xCp2$$ ze5={@)mcr+x{DgWr><$N;;J;MCJ!{3r)o9F-e}fvMV%T48NPXXQ^+3KFJ?b`*_7=w z$egY5QLvp=R_vtBwrpmx1KUIF%ocs%%I?f^XMeiv$*vyj!v@{KnDmf9cFl=k)-13G z+qfW{eQ-3ARWUK_yCHGxf?f&i@xh6#ewc=JEKFiQ#&_s%$Wz%b&!n;MFUw#T2WPQg z=z6jr;_I^~cVdiR)|;JHn8)^dsSkT?S3cY0XkRw|a6fjz&H}d2(n9uVW`A~HQ-3z~ z)gpGSLopk>qL{V7_XswJm9V!)mav~ZTf)ADZxawEH~CXI#iRI?j?xnyqDORzK0Sw? zN6)3_Q$8p^lrPF3<&*MD`KJ6+IjB5TE-D|Dlgdlwrt%XXh#$lk;t%nO_(gmp{t+LE zpTt+Avq#>BDo^@A~_>@Be^5_BRM2_B)KH{BsnE{CAlT}B{?Q}Cb=g0=H(pn zPI6E3Pwjx(1GNikAJk5$y->TM_CxK6+7q=aYG2gOsJ&6UqxMJbklG`)OKP9gPN}_8 zyQTI^?U>p#wQFkM)Xu5BQ@f}3PkMm#0qF(O52PnZUy$A){Xu$!^a<$|(l4ZENZ*j& zA^k&oi1ZQZCDKo%r$}Fs-Xi@)dW`fL={3@Cq~}QAk=`TyM|zO-A?ZcZkEAC_Uy|M= z{YiS1^eO38(yydvN#By*CH+f!nDjB}Wzx^2r%7Lv-X{G`dYtq*>2=cYq~}TBlir8^ z=lcQb52#My9@p#FpU5$aEaVEZ zqW+8eG3w8#U!(qw`Z?CBKiL6f50G8J+Xt`{ z$X+13f$RseBgmd0yMpWsvNOouAiIO?53)nZ9wEDg>=Uw6$X+44h3pryW5}K%yN2u= zvUAAZA-jj{AF_kU9wNJl>?5+1$X+75iR>q`qsX2jyNc{9va`tEBD;(1FS5hP9wWPq z>@%{{$X+A6jqEqFKTvh&E^BfHP#>NZyS@tbUY|Cd>^7k{xGyH*w(49PAB zRt~n2UHPk1(c1o7_wSrGzYVof2&1PPk z%f=)|!*3Dma`IEQ#mF`fOUE>;2d~q7KW2zVc=4Y4lc7dx2~y~BQA!%#qzi9L{Drqp z1MV7>itTcDJ&4g`$bb{c?D(VW5yp0naL`)NW{g9;azG@rq7~5?14OXUL}3`=(w;(q zu>fOT+Gh@mWI_Rdy9>8s{#JmZUGH`Y$o1+Wk<66B;Np*aI|L7Ng9rZrGnc4Dq$u&Az&1Hv1bn3 zXI3zqd_=_VsQ(-v-%jMy6aBxU_xtz)25&1y62{0#z%TBlMe?*jo)*O;D@jzbx53{< zUx;MSqWFd}NQz2TX$zn+NW)54h9P;N)ugntlva__%13(tvj-3*8pp&NHorQR7W$f* z+t^yj?d)A#y?xx2zJ5{BiRzeG4V#*l(D=DIBDiA#y<~2 z^QB1kvPhAX=N>k6@}gA-PHil|T5WBK!=`Z=PASH@;J>@*{N=y9aM<*}x{UwB7v%o` z>&w0CQg&f};0gOE>>V7PoLyYqsP6gGsv#G2o;Aq{o$*aFLxU8*uRg;9>|cL>FB~}F z`#0CWWxmnByr6%+6Ui1Cb&u5=Hm6uxN}8ojrj4=&vwHJ7i&}XNm8cyTm8T6C6`~av z@uvmX@3YbQyX*IS>iFIDZ}~ty&A++8hqE+IfP7F7Xw=NRbYT(GB7}K3K*cM z1_mTmcbOOHdFh#dNxwTjW%B?4>9iYvge75Wu8>(+nJa88tn3vwj#l=rjP@V`B8`RE zL}4NjniyeohKaz&%H7)0!Oq&t*2T%mKG4BK>EamT+PQ485+cB7he#` z`tvrJ!4mtQ{AIMaKt12kS`2N@(6S5~$DnNt3Wi#yL3d&1ioZyI88nzdhZ(e(L64!p z7g69Y)3JLHxocBdmojv9gO>F0^z`!b_V)4d@%8of!^LRVUJ}XT|28EOdQdW?@$>f& z2nY-e3JMAi4i3SE{cT9k{uk0CxgRA)%8<~|9zDXs!o$NOA|fJjG1@OLi)3m4Whx*N zLL`trGAb%MIwmGIHa0FUE*=-7efNq;mi^zP1yYej2vp+nC3{t3qFSxiXf!M?M%x04 zA9d~F6aP7T4NNi=(vUp^Nl=U@dLYIoC26(E$tfu*si~=HxD1W3+v5KxbU~ISqM(?T zo}Q7BnVFT9)w5^MY+Q`?~)5vmL0>w!)&Y4n!g-4jII>Kc2t%CVR*4<{M!I~qCex?@LPhNWesr8wwz*3ujCnHiwCd2xIVry-QJ1QBXnGM6!A#k-3cv{@wBK zga1HN3mXUgJLBIC|DGbWd@FlLXHyxETn#Q)rNO22pfFdZhj$n9HMo5Jc~4*eK&iRh z(%RO}!Q7ljjs};bv%%%;LSc^1E^b}O-QaTf;62?vyr=+V-*y9Wj<`r1B~1J62opy< z01jR5Zadk%%MGUS;ba?Ae6p1ZCjltkM!*OFDN5?u2%yb*pl9nDDc^bG77kN-Z)5aC zU=hIm7lZ?T^?DP%k-qD7j888D0TJG4L}IZBvlm#~QGG)svnH~5yJVZSzlz?Oo;yMt003i|lB*+`qj6hB$c-51N&1I$%*!whrg+pP@WiaB* z<=DlE?T{7<{9r<|dkR}YJR%y{7|Eb?LJ0w7Spr&8sR+g(vL%zkASA0$2AaHOXpT*l zM3*c?;<*Sv*c}Qm5sJG3w0N4J2eyeoQ!K>~RJFtuKL%}W_$7Xe@B__G@Q*IyhY5bf zLhup=>H?u08IxI<2r-L=O@dM(RRAzmghVa?wlJ57O{Hc+@SNmE27XZ0!OsLVgzy(p zeHiF~hAC)ZLKlUQ$Z291X~i<^Ym`vknFvWX<#@T1$;}ywnT460Y-(sOsf9TeoYJ6D zVE!N0p5+(SY1vCJNO268A3^Dg>V}EViFTu zjf~K44?GabL`0khVot#UVZxvZ#(r>5-q0A;xJ7j0??aIc<~d9@+`Nh58e;V?f4pcJ zV{a?(g9_kf6PbdW>Vq+cu7LDWP4abyTaw1EP^zfkIN|0a^J%H3AR@n{<=q$vqPGRQ zrwana)6yP%go2>jsUY9s9-}^#>ub1$WZSBqriu@RW}D8~&iliCBg1J@vB z+EchS!5!pJdlmO0x+O<79Af^ST#IT%GD}0nbT5pPAye9o@HY_04N3s71GqC3Tzd+) zB<19N758Y@C4^f~D0p9)vCQDRrjATVo{hiuOw_~(sKxv}Xm23> z8op_f)KND|T_r36>dH!?{-J3_(7uL?g#YoYi*0|2s3QK&W#Ha_?w8TFH;H5yM2q-q z-n{A4Crx_lsgWax3@IroDCpCtSFfzBw6x@8jYg%4i;Iqqj0_744Gjtk2=Mds@$vHV z@Njo`b8~fdc6M@daIm+xv$M6OWo}qAhxI$ud7`gFw~ZbU7j;=sGw90DqwyETm4qn{auE~rcieDv{3ADrAAiOTBctl-pMU=0hi|?)e0cBPk3K3Z`=8;3qvL<2PNY&J zqtb=Fa(d-t_oTn9O!~`6r@yq+wA7Sj`qL(9lUR*9k^WQ(s)YEs*qGRu=&0zZ$cXT; z@UR}CA;BTRL4iSme!hObKHfgw9_}9QN;jpOvy-!vql3Mjy&Wy4#Ag}|T|c^gbQ`2? zpdx=+vdgbf`t8f*-@pAB-csFmTY|Aw!1^ zA2D*&=rLoT8aIBz(-S96o-%dX^cgc}&7L!N-uwmg7c49#CI0yJ`!?OJ0J?PpX$z8E z5@HB5vnv0~nV6n)(V0nPDxN<^jeUMka`5 z(jJx8jb`#&dfppn;}4L)_kc4q2(HVtS?X>;!I>kMW>tCN~j8*^KGH5S$ntch(*Y}K@D>$943TJoBT z9!+c*cE4Xk@7ApLo^^$FLmP%Yn9-cu=FuM38Qr0&%V_LfUszXCI}8i;2DSEU?#(3Y zGZ;;0VyCJtyF=5S(3Gt2&14v-ng+LMHU2doEnaONjIWW0xxJTpf@_BpW9O!9@v8Cc z@HF<;dz!e*yi7dJ{A6yfo=&cQ*2zj+rP49t(d_$^A5Lv3s2NyWd@G}-Pi-EPTAO}5 z?oR6Mh=!i_bxw8uHQ}|v#v!6$PmdVu{ElqBy}(lt#Kd&QGHS?OYSX~ladpFLO6p4< z7Byxy^{y>!%xX+;OlwPSN@`0mQrR{-G`KXo=v|FnrCv6!-WDl;CGCIZ|D>e;Nzr{$ zZRJVP{d*bs``Z1Zg#59-|4e576VH57t^7&ReNwvNNzwf`n)+X*?dmPNd(CeA=bf~@ zhrN+4BakxT7iXHp*X1^71sb#P_AJW?t0ZZVE8~=+D3OjmU3!14AjJ^cTKH&4t6Cb; zk=EL$VW=opoYGckRKz57i`1rega_C5l(J)KE0ito&kc?pvQYMGanqnU%b ztGRdMpq8x8Eb~xlc*{s>v{AH4bf=n$W8&)AwnV)~7~h&EjJNO;Mw+J@Bb}5LM=1PE zf`w7CFodfZm7Rx4utktQmr0bS$y|*5jf0tRCe$d{D3a+R^fS_kLYWxj7^4IsD~c4w zi=#zRqF7mog|{SHpD&K>$d!lMDfRsv#cnMw#x6p4##8Smauc~rmDaEl-F$3ZJT21& zDJCjuio(sx-O9_()j?_RYZYV@AY-K}X_9_$XK~Yn)*STnAxu<9Qm3jty*;}*|Iz5C zUd9gi;8YkB+p22GsPEg*|N1OJLWir~Ti|OH)EdhqFi9Of8%vnXtftL@pQHHk8cXVgt;4e3^~?HNphSS<~(a+JE81W9`^!Azu4sI_lE{xY*-zrbW@1cAB=uHe0SL4y{YU+>XGNnmWXKZH*lhs^o93>W- zN-QM`Yhxe1x-Cne-kyuCw+rvgzd!NT!m9a?p1L{b=8Q+9Z_T(l{inH&LuyAh4|z1{ z#?;p0&b;>grh?`^`b?7~L5ehvNfV@r(^}G6Q>uG)CK;()Q#z82;ybh*$&5xCsZZ|A z=*-rqH)UERDtwq8R$ek6jEn>rg_#AI2QVt*2y1`iWUC14R;yME#;IOe?NQ}%*XM@c z^}y>r&V^hGzY_4sU7EI+J(zr;*Jm+5MqLhQ^k)3^ZWb<1_C98@GOf=~ewX|&`d$zH zDe$`g?eL#{>-`&jJ3`x(Hm+`t!DeByaHkM_2-wcq*2Bih1ryyElX3L3iZDyJjj_m( z^>uW&4Y!T?d+l!7=w27t6y6riBw-jN*||r2TL$Bx_wEerjB1K+W!tswDJ}UOeL8Yl zGFx-&Giy^}QRTEHw`rL8c6C#t0M_9jY5bM6|CRrflKLk__er&tCq?(~W#GSCyML_j zKa-jN#512%D}PdSpOkKRQgr`~rv5i+yL-#u<3I2JT@{X4Ro)ocp}9H2Nzq<#d$dWs zDE?8FMZAr_jj1aW!}tW64ZB);cSdJVLul)u+M?EAVQfQj&6s=Bt>bMHg#AQA1#DYE z-8d6gl-*IHA7vcd-n%oqeppL{Ao0)of3as%(f!g(rH=;G4yo!_RajsA2>p9)&ciWv zB^OI&c_ukV{Y-LOV}{XM3<7!C-LONWE0Gviqsb;j?uwWZS0+ttCtQ|@MCmu2H=t#l5yR>-~O z-nK4|wr(~`GiQZEAT!7!P9E>%d%N`Zw7dCD8YY@i)fUth*9~qM_;cyKk+t#lDGeEo zz3vrM7u^|KGyGy{V}5g3Gu}E|(rdFDdpGs1ANX)Wd+)nx)!Cg1f`q!PFP{ zY4xqsv?g?_sI$3sHulHoH%hBYt7hLUeK7UTjH;QpX55}~W9GHl7w0z)t{L4p zqHf&D(zbz?@oj~5gX;%$_F^*hS;C~2J|;=>ctHx2+L(fo{a!{G3vbI6$C{{&v=%Y) zV3S0n^v;}zg=Xm{N%iR%?T5txd$XrWj5ww>ry;+yS7$HBK+8HslV!d0J)i3VKLnl+ z`_Aub=nqlfgr1N3G3bH2O#NltY0b$#l_B@NI$h+R0zZM9rH!vuh&+br?Op9t>+{H6 z;3;>NJ2-mUDHSlHTs#82U7UN^YOFBG;*A+W@X}4`Y8PM^s7RDYStJ_gR?oAIwu^IA z+j>|>SgJd6n|n58HfBD|uFq&-+tMFp*Jf6yG)LE}nxYy~rJZh#%61REhgfOmW3TkJ zNovYy@o5fj2ycw5S2eRuDXpoEz5ly3{z}^a%Ku48{ga~mq}s}pqWkyt_xGWHl#oCA z{P$(%$vpE(welxL_etr7Cq?()XzG8Hw!63dJ^n|l=@xTX(DaA3O&j6+Cu^Gy!TS$u zo30UsKdfz9bU-Y7!{{lj9hePx4)8i)4d7M0Cf@+m0kGJOSq-2yr?m4T1aJ~yi!fR; z8v)P)QURX=Xf38azz6Ui;za?c0Qvwf!(9gYy8(v*rvYaH?;>3y!m?SRh_ehBb2 z;0WTK1HKBl3+Tl1ws#MSWmgOfmgEl2rWRUhv4yGY;2-87K(Tfnuzs66Nz3Z zlIn39h#m*s0L=9`7(_3TDfCh^E4`_?jb0|V*PB~9{=WuTa!spcv3G#h-5MK@g#2{_ z$s@KRNX$&6=5#m;wLFZTekI1_p{13Xzq8mY-qkI^H@b(w$U$ZuW@8Z;VdtY#CdNvP z-Gxp8=CTo!9JaXUxNyEkx3ogEsY%g!{R(ljjaO0 z&2&%3i@g>C1Qq;fG&yEm%Zb0ikXU*FT}>zGx%A7X|v9Uy%zv{u@k7+i7`R zcenv-H+?IXeImrlXsoiwvUpmWO=nnPEg-E21i*t58Nw-!kpIC+Mf_61E+jU%u-2KB zuR#&x2LDjSztZCu85))v8WwibHV59b3mXvsOFsY*5MXgMv_IvTzv%0QmR7b7JhrxT zBo~ymt3m-!XQj8LrHzA|S3nOdYddGJ;25o~oue`!CcVhP(bc<$wrH9my$z+Oy_$yf z4vsDcmx~AQiI+7B1B&TF83tDdox#MjkupT^pV|^+SnY^*hCGlMl>_K20hxeQzz#qX zAQ_Mj*ao04+%5(z1^9V2}K0IizeJ_?}@%8?= zMEuixM*GZvnD_UJM) zkqU$oGpHU5Y$B6Grj23CoE6J55Mp8D?1fNsYbVb@W3ibP8h#j7=R3Ij_lP!CKuLr~ z#mnv7d_yAR5^Y_5f+J#88W-=N@R$TOi%LheL-A>AK8W?x~|WGKWA5TJAc7zmoK06;^5_Zw#ty#8a z+1h0*CgK0ZNh=4wuzcm3%A+NvL* zrvz*Fj$g5G-O;^Y!teEUlQo-l91AARPmRIgjVZpGRa^X9Q@%l52Xwszg)zuVW&n>T*W_&HnN z+_Mt@D_5>Na%9W8HCsOW?77#Mt(~*%g>8q*wyfLo!e`^R446w#{`F$CJ1_8A-}r0R zpQEhrS+io@3%_K2+p%rP`qeFSk@bO(Wqtm{A%ho8n$&y2Li|jaH)z4c-}_M3w|8ZI z{^OZ8+;2xs&Yd&&@vLuoJnM6}okG@86l8t;@3X$@l33>b%i);x;RPEz2h3NwdwOGQ zWpHR%L{v;%LZT)KJ4q-ii6MWH$aOVdep?gCyt##fl4BptWmww(OzBY5;@>0C3z3*p zuSNY78X0Xy!sZ!R+92=R-Jf>rMrs?h?}RSwe_VA%EE7nu^#<4y`(F9Ws0*WESHj=d z2`@8-#kj(1001n`J_y5Z0*yC;eZpl9Hl={M@V*bxf$Q z(#~AiUU&D}h0`YvSMJ%hbH~=QvXcIJ>G461(x$4j$1BRWm6dHPuQ-0Ts!8e?6rY~g zzoaBTCDg9{+KD|o%C_!0e4)^}L>Dk8i1 z_wJ$;W!;ILWxGzd`(~9CsO|0^-ch#af-p3GAhfQsY|mZa{Gyol!)3d!DRWEI!V_C}Ua-q5NijdYqp$a+ z4?n!*-S@9>zTJtk!{)gK%F|_)!mJ|S3tRWJr<8G~^75wi{*K4X&IXmlS8c11=H<5U++$vla(C-tWl7A1veTg@z9-7Asf+9?chqI& z3wLEd+;TFa*lPD~tKx{0TOMZr-ko)=>~3z#g|fPQ_35qc1u-Xf2#Z1w?=&y*t=wf- zqTG{ycAK=svHW;^UR7CB|DcMBp#Du|ReABp%Nw^oY>`CaJNiYV!riSe(0XV z>a5c{l|^-B?Im_QF672kCLK7C^mm}%b2?wSwXUSS%&y?Vu9%d{6S=-S?v@D4%!{t= z49z+mUtU$xv@IyT;%t9unPcAZ<9Uu{(*9>F(u1}&l~k3-$Lwe?I(<0byv#Rc*WHq9 zd$N>ecDa=oO6qp1L$?YGPDE_6%HI93_~gmrhr6?_wnY5i9a`oaQ>IjJwM*Gyp0!h$ zyQ@8aPhCOf-J-+SN={rTIUQ6M@3<{pTAtTb(ZA|=$=S0d$E*5RH06~`)3-Usmj(H5 z&1$bKIeo2Qm$|wu#%^c+-4i8;>vDG}L(5Wxdx|c2f7tiZrM@3}{}op5Dmg5S*_wah zZdO@J-RXiIq2`q(d+dC77M*BUm*rk_tSBiDk{<8BExze&URiooReD+8*{1ky{f|q7 z%1bI7?G6`|WnE|w-Bq$PrtVtG)}l(K`HB3p+|xqeJtaHTcdbrlZza?sUq|lCu2D(7Wx*6InY-w&ou8t&>&-9ZxUsUskd$uOj}e zV^fpk+4zdQZ6#&>%hQhsRY`?)cGrAQ#~e=Cle@EEYe`v2S<#OCU0Idt6QLKBcg@>j zal_Wuo~jbdUZHnZda=dcZm3uMxI>{h0c-)50QyoBsWCDGyVY1HhAP?sO@KPUBfvet zEx^?-Om6b0aEeFqDILi0bci0&CHnLndLBL39k$PHu}oF1*RN~Q>!-Hs^~*c-dN-t< z3pfg(ZGD8vP5u;4@hConbog>Xjac@rDYQ0OM$|))MMRd;V;}e7t)svC;KIM(a(e8tKaUwV1fE3dw``t>*7T(frF`nNW`{m#aBH@&y{{jx1vw{73? z!G}9PD*t%bC!g;AY|rO=EB4_~KJLK5Lx+zXJ$C$yFHd~+^*1NKJ@wt`@6Vh)cm9VT zFI>EI`N~gMuU-H7#?4z*x9{A&_v?3tfBnQTxb(l*|8n4eIq?4}2N-;WNor(lidRoZ zE1A&5%-YGrKPrA@p?+1)9Zon>EZ2A zg4aWl)XdxzZ@L&|d$nCGE5}Ec1TZ^=_zJ!h$A>7I8OE^@ukZB?6JCp9foe=cJj8h2 zeTJEH7vFrjjp2b?82-P(FxRd_!Czw-kDoA%aG7DAx`^-}aUlD7Ood>M!txB#W4>a_ zDSRX5B*XmpHRylEFj-&X+cL))=HOAJKf*BDLvSBpm@jn*uf%l5KE&UPZ%pk$`p+2V zl}|x$7sJGV4Ei78sErTtybmx1vK{HSVTxl5$h?nl%xp&ZCLDmU5&3-w2h(pr`nMS7 z<8>&{S{#P_Cg{I`1L9Ysysu$+;}xV|1^g1+FT#HX!j~i7GQ@u#>6Rk>63}@D^cI6| zDWWgLa~9xv^YGlcNIwVpn1%ezM82jYd>ZmO75SZvd{099i73YelxIB3H4gNjLOI8v zyrWU>QAj@$d>9V*Fz{t4!iRuQgAjip_=W+bq!RG481(vsuZ5sr06zD_^ZJ7C`AFXf zRnQyx$ptHVAv_0J$_Ck<2+Bfw4BLcfpgb7YaZCgKRMc|{%A1TABrVb>0kd#x;IBq_ zBI2nKKLP3D5gZ3Pv7i?Ny3wE?h3DX-Jx3z&+;F4^c!VK8J&>IimUx0M9tZ~%yCc35d~-v3z$>nx=K{V0Ryl*u zPIw;RT}Pw`40Aw!>`^a(Rd%Q+7#|}6-`OBN;A3k%2C&u&^Z_qeqP&2`3Zw@tmctEr z!2(XeT64q)d~AmFfbV3W2WT+`eLw))oc>!7gjmaIvz$txeDGQ(g{Ah&ufGL0^fFQG^qeCA zdM+iVd{BNUUz9(}C*_y&P5GyCPIU;!?xgz-@IU{)^xg%zg9FjbeT#|f}oRYkf+>-o~9FshgT$6m0oRhqh z+!Lb@0;oMuyP)<#?S$G3wHs zx72>A9aDRzc1`V@+Bvm%YWGYMuomuQ_@^K|74gy#KON~Z5S$4*S)kVwbhAM}2hZt+ z=jGzLy^+2T@{y1H^hLh~!&Bj|6!b2j67@8h{!@ceDa$9ClB1LW&Ngnxv5evJI?LcTvm`p-~~ zJt)s!lxrX8SE8Icl=lG2eF*7~fDcFEJ`TQoiSVz$r>_zJB=~j;=}&`?XF%^P_2|SNMDV5tVMb1QLl}l-;8>0MS0s% z@100LOTa8E5@7Q@!z@Dns2nu*e_#;9coxDBa&k4)AcILthWX3|U&2`_!3ZAzHYP!A zvBV+u1EgJ`fP*~fatB~|Y|)Dn8LfICHNhBl0X2IQM!Okd2jp4&$KFu*;sQJlnV%UR zLAbauJVHdcpfH}tg$309nc}GMWFe0uc$|mt#PROJ@E9}r6FnXyAz`9p-W8uP#ivXb z$AyI%u)8~DuDGC>mSuo`1dj{5F#-(XxrJTv3L%rATU;OqF2D`p%+%r(gFCmd3-kUn zP#|(g6wctWwlIGpxwVDivkiF0WWt51{YnTAn=vzj@Q67xW)eeD-f+riMt)kcJ#a3{ zLwYB-Fe2O!I6os<9t516kuUc#xD^2gx55`#j(|YIi0BQhfZLxi+%dpFX3!Co-Ygc_ z3^(zF5r8(xnfNp&hxSl8dd$4NQ6%{$ZZLVYo@8@QnO06}fR!4qP10 zNIwF`j^pAT2Dj;UU{koE11Q{VE3g^dpBvm3X!ls89A4~Za4TGa6>y_XF~yNG(!-2Y z7FnFhyG^ATT4Gm0p3BfbZ@qhyji9-B(~@R*S#5RPCZGT=OIj-)T|FO%j2 zOJz~T=u42!RN9Z+rcuTHc{d{^MImLPii>%-%(MvD6!8b}Zd20|aw9%;7}7JQ1Idl} z`wih{`+&_5t}}$2RgxRwLwL7LF&J0@dc%0PsbVO(5q|{lW)#E8jrdu>8Ig=6+kmA# zfl*%>y$o*C9AMN(#tR0w*)m}8J7a~xZLu5}{LJWWa4T|w!LN)d~eJ}~m1 zvDx4@dk+}-&6s9zE2aV?KN+Kd@dX|4(ZJp%#YHayS0rahUNKG;*gF_U`QmoD&@#?Ze}kXm8-;=$L3@;E1T?48p@_ z4D}885#K^;H;={KEJ@> zLf#z_LHZ>N3dY2Mqp08LiE@$t0giCzaa0)To1XY2DKEbTg<6v9tf(+8$u;^Ntqm~p z6+z|6FAV3)0~|y7&o7LKn#beF2+F^JtxY5lc|2FEX1c`l!r!QFst>JMCPVFf)BNxf}L;#QLdvI zbfCZY2cRy*p7^ZX28k??3=i9jNdF};3>uSf@c~&pLU!xeN;d{`%LjMBtzQ(wf2lXk&4Vv(Ps{;u#y} zqA~Fc4Gy%EI(Vt#!mV6oY?R2!$KRueIwZ)}KEcv7($U*J(I#FIp|qB};e%dcGfO*K z-XN4I>_w(>+u57PoiE&T{PxAk?%oeiRv!FFKEEOG*z+0I>0w(1ucvqXux8OyA2p?} z_;`R`uRA~R1y9RW<6oPyrsJiQIb|M_PqT*mxHTqyl60U?$zb2@$3MF>NYUe5Uz=2; z#kb!5;fuEKt8RUB&EuRn_VDxOXX_u>l%$#5`FUIOdym?GG@3MKc~0Pq$?>iF#f?** z_Z+t2X|uSS9jSM9o40*?C3|T0zQ)P>Io+{^>-}5(-o3jt?9mw$*JZ-^Q)hm>x%T3% z=J}hHqY6JblIj^y|E4}LWsBG99q}7qYd>5(VAQK$o4vfC{*nH>K}(kQUbuDA)my=x zHYtMl-nEqEKC`fIQ*>=Y<-XJB17G?6xqFalT;(au7rA4eKDZ;riqST{hfg4$qSnQX z`sN$0l+m8s44+j=2E&%F%7Y+7(v4{gLtM#2QAsY`a8eso`T5Cm9kJCt)i59Q=P*t{s#gwtZX8>0ZP0*bYYf zHu)$tub=b1Eeo~OG@+#AGg)nUH)QeJH>arUan{TS@F~~4_+ap~L;dR#Zlk2|c~-be)qA~#>8C%xs_NoA-ZhdAxNjVKRk14XR9N}sYRR(9FZ{QT zz3s53=!dw^XEzI%q#p6!Jo1Lk>V9XUKAm1~wle4I;14F;cX?~zrNsU7+l`({KIFM+ z_;ssS^G`?Ynp$hRyyuC)?c?q`tt+{ZP%*bv^j!Ke-?GuS?A|Cm7xUT7MvIqnPloQC z_|Wa`!B;f8g`I-M+JheN4!dUgN}un-Kb}$}eIe`1fNf9Raa>#cWBlGZEhbCTj{3Ym z>Za}M1!tpo&uB1zvDY^tA3puSb;F>`>dFNj#?Pi4_Ihu`&(^Q?{XX)OX?3y{*GH&u1L>+cKug{>}d9WB1HzlE2*h+a4cHdZc`3$WJU+s-F>Os1Qk4 zg_4$?7EU%g_3nm?da!Ac5xm3Q;DuER3^RJd^xyaqjgiC2PKTWGzhs#(%#66nyoL~0CY~w$W<$w; zERj_kt?98m`IXezDc`mo*!}*+-FF5YDvYnOtSR374EyTY!7e-2Y#09^81Sr>ZfUsp z;RR*|(+BCMc7A+i(H7CA_0wzCA3XTf`Ww$>=pG&0a8UmByJp^#g71WEUoyStrETQ{ zFDz@BncqjV=ILYMTfgu#EbtkOP1&QJwoYD=edxVD6OKFHe)T(V(b{uMqb=$u zZycwvJGj|VG9lJ2XI7@)?)~LapP0GC_uT$NZtoLs4XB$GI`-i+FHfH|;{Dk+v%gp( zF*?4oRj*rhZ$jSYruSNOwX>%j>wG3?REF)CB=7`R95hF3XL9IFE8}$8(GaxF`C*u9w-s^kbwcda4EVnsxU3>P-?5XE)GTBnYahAeKKF4}ffr@2LUtv0b zN|a*x67RfPFI23?C%3L6Zih<)me;zI{7A*VMSN{0PhX|T{`9nsM}~?yU3={`?6afv z+UCHz{jaLn#yg!SzT6ol4gPrLy7hS#^I8x*dH1Fb(yF0fJ;xnau^+0RYw915kbWNM z*LKZ*Ts*CGgV9&S%Za#u961c@Od}US;bnut2TSf zqxFirlMI*TOjI$)jyXhC6WIkci z`{C18_8OpKiws{Tmzyt_uFqN&ZO2qBCNc5F&xrL>t7(DW^R2+!1{BwwvO>ysAF)rj zRI%bWO=8;)luMs3%ysSGR>h`Nn8g;HTCZ5@T>AW3a}~4PXYBR-bCC3Tc9YVrjp2X6 zr~YQM-ioM4k299kRk33gEBOU=UnMm$c)5Fdbrp-eksi9HrnhuVN9&|Rl~nA+zT}~S zLxZKYPFhy{Wu#(50`}+X^$C$$J{&;lzku@|_`y z4{>XzUj9_bW;hH^dp~H6;zm->?t4BIvWWJ>8+<9hQ8E2tIj@5Sh3s~>80);uS&Gkb zuev;WQ^;yHNIzPy-bTf%#2P8>UlcO0A?AB*)FmcTv8UbE*+)(nGP|8?v(mCx zDEdslwd3)LLN?W^>bWb~a}`1MTgS9LR>(e0T2L^cdWfRxn#tD_4kP`8pLNT1T`PUu z>Ug(-hYDG_&0!r+#x9Wlyt?6T^#g^>cvQpO=gv{mHlu8xmfu&%-d?Hau>5Kl>B#}( z!&)X4vaU*(wy!(INNvpy)biO=$l_*ibQ<(BTw$Cw`}Ff&g)DKXs@LVt;fm#>dnPYV zC}aoo+lI~^xlAERN$WCTXCWImZp_@L>1!1&nvM>#+EK_{>MfSN#I4WX?^eH8s4v zLgD&q@`CAUh3uYX?u(FytE8RV4=UK4f$?-!aVPU^v|@4#>mvsDFy1T+w^*h{Nyi#(CrxMk@vxZMR4+r(!psPObPr9U#4ZVQ^Gq%s2aE*L?ea zE?QyS_`$@Bn2(NDI%ILs+h4k6#PX+`>tR0p88@lZiwNob4E5A~66lXN&Wy}iCLNqP zw!?>3D&|&ynAM@1&eG#=jAFbxs@RNrYdqU|xJlikR9TYlDt7yLT5#Pkx#C;O-o1QhfOJK|_pG|(RIF-K z8_BllAVq9&YV8+}$bZd+dkzyKq{}-!F?j8+VuL;O_K)wmOzL<{@1vQ&iZ!u5R^IGh zkYeiQ1)Vo6RI${`1ACn|4^_0;URrZNh>G1=+0)VRM1b@YTlJp@r^qt7+pCc8IqY`!;O2GUd&@4Ch;A+JOw}|$(hg7VBWUow-5+Q9h!Ktvp z85QgFE-59Z?K0_xGalXBURJTf<(ZaAE@4ue{@xR3W4(R>l8C^u62VOC_@iyu|&{Kqfz3Y*r z(EC}XEaAu9PBToN2+5{JMLpJ)umvZZR9q!{AS^dHmAo$XBU^CGtA760JHjrPm6hsM z{>Us(6o1^@C_{*kFj>%aN--;%->X5Rg{cDTQh(5(vmaQT^w8QDUoQ%0UWFBnYxaRn zT0K{|;doluLmOpmT@g#4I`G6+pS^;1=Tao@V2Jh)-1IZtv5@sHZ60^s>L`n!so&&i zLIFDyZ8a)s_9gcE$IP+aB=6YmmzM^aEK6tY_ilI2yqM1#x?U;jZ*-Tvm(4YJ9g@es z#5HKQCE_8QW;?Pp%k2$ITX1+-LQWPNy13%!6V)FGIh|(M3D>h(_KR-WuDFPo)c z>KVy>-)%fCEYCRfIcVugcC&wGV2u&Sg}CgTl%g&uSJdlyOVS<)P4e5#oLd8Ns(i7~ z=YbG^{96UbV*I9O&hQ#9YCI4Yh1Y1ZI}`D_t*s`Wx-VoNyKG{2n8)Q&qbJ`N&Q$8y zd0;f+RCjiU{(YfYpQd%=W+5IG6>>fCp75ygu8sC15O**b)7So1EXWU6k&Al$1dK}oc`7Xqxs&}yIe_hbeh`ZTz zHR45$X3R-U6&lW8c6nkT;uf~zZJ5cWCUq0i3USEb{(U zq4^DU`lODC`%aUdl3o?;DsK;*Qx|c^?wdF5ydp&Pu=EWG2tk$kBtpdgwpL}$9`LcxJ^RTs1+9lp;x2LM`s`&Kkv)wj~9eq zqKCMR&H4)6&kH8DL+wfmJ|O?oO+ zbwLAWZ&f?Q9WQ^GCpjWm9xrHZQ6F*1wAcYv4hx66EPMRDJmPeFrsuaq!cmW5RSQco zU)szWwEFP@AwAA~ve8REe=dJnpx7sv?P}-T?>6Gf>NcU9w|jD#W9feN_3dfVWN;8*b^l1~=Jj?S*51VhXzzx@`tCc;^ylr_ z;dP$JE1$hO_bl_O(A}%$D#RskI@RcVjv0=dd@g1j=d)*7Ruoux+}X~@TOw`~-L{sS zlCd`hg~6roF#oIxT0ZasyRiOA;Ll5lTU@{C-SQ%9Jt(A7<8_ETT;Bb_AceKFR$b0@ zMclNrH04q%$z+cDCF}Hz5TD`vVCwkW ztj*3G=N7qdupZVlwm5y89XOsf=jeIF9s8R4)xEa9)hRAN z4{?h_-|g?+VU=p!e{y{c;yE2(6n47HJWkl-w>4ig>BK(Kp8AWW>y8aIAdA;bHkoYS z3ah1a@5WRnhu7@nuKOW-mPAMo_zWvgzOUJk7Nb1g{&12WtorPiI`TF9S!Mi?R*M%Z z6qlXLQ}S!3_c+UT#)UA&rwfxBQ^spnZLQtbhAdcW{i)nLwdyq+**>?vp?tAIz9FOv znZ98o<{8hLu3jLmp6~WU-SG`;zT#ZVTnd-YthV%-+Wrl@t@pt@THjj{wZ*L}`MzNR zTSncS^}|ik_1fZZ>c}@N*syflh4V|LuP;h|sSmwjt}bb9>MZtEP%3+`zV(JRT(zKr zpIok(UB6|%TJ?q<{JPbvwQ{vIZ|4?6GRUxPx->vYWsZFVVe3;(c(x&W_4+{+9#i#v1++~Z;-E| za#;Tob!0wMCAvg6kgrf!cZhweK9tY8ubmKn{jFS6TBh$BR%;RwzZE;`q?bF%vWbu~O^=cco?|is)UZV}BkvZW;8)M_WIsm z>W=SNBWbgM#(MJ+CC(szZ&-`wO4#qN4{fU zQ!cKb^J}5h{)XXg^`Up{QrqIfR%&NO|4Fjj>Ra!a+1p-)C)J*cXU5K7)T(!El1YaR z2C}7!k+Y9KS63}y^=6)oak;Qc`eN+259*Eu?EMvs)v8}EismncEVX?B3mjOWn8B7Q zKA#@-UhPxB3UWpk?OeP}dM|P#+P{E(So3wYQLw*slUWNhN-kiARqDD#{G6fKG9c!u z`c?t+dwaFv`Na{^*_VF4RjUfvua$8JdYq4tw*9iHHkrO>vnHHQj9wHdZS)yGbZ7CN zJ-+Je9(5s9da3HXw`%+MtkSP>m%CRPr+Bp@s{{GIXZ@;P7s;b?mSZ$BzH2Y$b6V-mwYE#1U z)INAFab9)U|I=7SW%agd6jjLdu9-|(EnlYSS7+BV^`Sy`T+;WR5zUouUsAn3;km+^ zNn;$p=sPGb;YkG*;W^vuu9N%OELZ5So?oi2s$%7$RXr@f+bgbyy=qJrcEahT zXn#D%+_`X5Jv|@AwwH4n67FLU?@u3GxOA4(G9~A;TBTwWR`}|5FXyfBc62RKS1n?X zD>k${usBRHZhpu|b;lx>bL2;g`;rZcI+cI?RNEJ^i7_|2{1P@ugNEKTAm1W(W6Vos zFa=5TZWN>c6|wq(-OoQ$dnsHWSJI>8BKEH3>w`;Jw8H96f*xfQvCna~^S&*TOMm`+ z{7tPYVoHzuzU2((DAxZxV?w4M*fbNbWq0Kf(#a*SzNtHYV5)9EUA_rhrH?k2-ZSMGfcCH7U86={G6v93)?(=r!WkJN2z%R-9#TwOGAUvHrj*6DlfZmt__X z!_~_bhjQnCS6BVWwzi(KauzLBESb6=<+_bOjHLvrcqj^p9~k8Jp!Bki}c7)77kPYo&gBYSQ&+t*{sa_QLABcpB!w%A!<Cl|*k{^#=u?emfx!BO*^;g!Ju9EkTb*|5>$@th%_%};0p=9Q4& z-*)pvyJ8`QwOrMf_wVlKG<>n>&%&bPw;X$aW7$7Gc9Yw*(A<>X}{t?{d>Yax8!Xv zm%ZliTMir@KPhvLUt|AJ*utNt=Uv zds*mPu!$id7KV3)o+d%>KlaJemRZT!B+lBpj~=r7j^G$GJmkt@i8gIKXHz*VkKOci z;2mL&{PNwQ<6CH1IcM`ZD|vnjTf}kvW}X3-+^73U1LJ%ZGk1Kr}&D(8gea_}{Hse@K3!4mKN&Av*r@9qs+epKPzW)zauF03PHdDOnp1vil zkZ#;(KDM&9RF0Z_IqR5p<3Lfm(EL!ymXj^pYFQgizML&G_b%TmT`*O%QT83{Xv-|& zY-k}^rM-vQq?B~8AZjo)?8$#sCRhG%a>S@y|IUB0t`O1f-e!MPBkGjd6hn>;(t9Z^PaW*-(iK5wc;q8S1 zSuWu%v}M+?ssF{wHTiPZp=8U15vjt9yB7=}WtwZ#I%@JQ0-GUmjbCz2F#h&riEvKm zD^0$f%`w#v-FH%FOZ|B5g@_sGtfFZuiCJZSR$0LxK( zd@aGgfl?@$n74Ah zdqr)THEimCu@X(boXvS+8C@U<#hrIf8Wkw^4dQHA30_@mi_U&tkW!I(yDsKh!y0n$ ze~>wN$|Fk!Sw}fBa?})sV03=!xUrQQY3rlpY(8gm2KDq>b4IwfcVb@G9^zc4VM9y* zgN^5DlQUT z&pu&@@BLTvgBohnYS_>(Jm0^tN}e`}v&v4N#s%yV3bz+`8StasIqgW`Z0dip@tS-! z?61=+w(S)5{%TozQomH3k2o9pm0SJ`E9dN9u(jt_*&Gxnyfj|Cu%*0>Hd_sO{Xa-Y zO|IOo{9gG6r#A>ac7IztYISREQX9^OeS_T}$%)EHVax72pB6TLrd=>J zZ$c-_;@QXtA0{cQ>Gjq&7asb_uJfcF?jD?;z*_%27wBJGY)d&O^LbKbT+O{PiEL5J z2^s6=i50ZrZ0JwUKE3IGV?Qh3`r*Lh8TG~Lb2drC8YwN`9%Ku8rP^CptD_mrMH${q}RvTMpUam+Y!HuM+R_zgoRrPxr=4C;cOCTm2WHFp_8oB`>jc<8y9GM7-{n5tj+kzQ#zk!j|ZOXIjLGR(HVH+ zD9h)pIxm9tT` zl7G0Suu#9j%@R9a(R#y%v-zA&?i}1Z`VyOa;^(M&!QyNy(d4_7v)f<3YIT`iUF7~M zud`U+96a5WC2`g?{QR)7SJ>PR(srwE>GmC*P35d_;Hv6HSJ-p2Ew5Hr)3q;W^EvC# zZ~5xbtE^n#XkXLmx;;2&!-9-WYWH||==?R7*)D(YsNUs8M{;s6CqHLRn2^eR)bZn5 z7nj%8mNdD7tdkQaeZTfPb2l5~(AQ5K=Q()(B+KV)#>BA?EpM>B&-V{o-BsK-Dmfb( z%+vO=T9I*sov1!){H4KS`^9rMiL<6fSHAnCvDA9%@<3@is}^zAwU*g+tzpt+ z3$jk~QO|}OZ!wE!m97`uXrQgG5)Wi$shk}*)X{2I28$l{zV?$XU$lnfIh)T}M<=)T zmoixXTWRf8b;V7koU@_J!RGNUm&qCy?Q*VSCJrJ;&L(m8%l;daJTlqR+PgmA+@#x} zY4YXlj0w&gg-mwx+`!@QcZ(fTqRE%Dr>c1MuX&rjJu~1;_6l*+k%Nc6vd|E)QCSO% z&fjJwh7Nj+wQ&O`#^K-=pjOT1BXHCz~cJsKyuFd(7eABy{ z*ws0k&smGkb4Fae!zP_GIx(tOT`lXV$#(_VynD@#)w|2K=0p{Ads#ut+Gz6S?6p}J zSI@f30`I#Sr?={OPBTYJH2HGYqRzIQ)VnO50AWAFe_tuZ0GbMHb zdt5b@xp&`hIm4`J=VMiCcAjCjqceZ&n7?Jrg+KlX{pfK3 zHHiA1?Lb@dm(j77z9d^bmF`FPppn5nXiG^CS~YbUwf=gJzBK7Y+3F2cHMSg8>!_lN z6IPK|6EC{8xEmSYXhj3;PtvyOjM~4QN@rRH(yMn@srP~p^cmk^T{9w#zI(i-CWog| zg~_YQ!e9(7z;AyR?eids;udu)*+egr8qpM|XsXcQH7(!hO7S(P(rTL-_$#HFTKNwp zBO^Ci>HYTu1Tw)3K{2R(fD9o^~Pq>F6(lH zV~DBqVn!D`DZnP)P3|l zdSLyDcAD0up|gLG%T{ypeXx(57k;7n$z!Qbtv95!8$-SBKcYR$tf+aj8+1Qx4ow)< z3Uxqo<%QB~!I4y#Zjxs=W17tF zQtj*qG_F@RWp7?Xx0|-6)**S6J8mdlxsERxzNk$(i*8UIr2~Czw1?{EOr#Dqx=?WS zX%uX$N2L)H=|J)lYMft8wuAbTsoNde`}83loZ5$GI;B&^)(LcH<1sSYT}+eaETNqj zgULy{lEVDw(xLDP;38aqi)nX@itv_T20kc=a6B` znpAzjX1X-~5?#BDUmQ7tZ|BwdNO$`lpf+}|=;u9CqVqqfaZDQdrWaBT>ryKCAg7~m zQt0ZJ*0i=<3|*LIO&yGnl1cxMw6gjZ+9z2+9gfG*z%>_XL8p#XX|xyl?TI3fH%-X$ z#(J7pdl1Ry}Gx2+$=)mBkN z%x*ds{fRP14yRici%AmOnMwyQrX$WX=&AKovYBi^%R`sY=n-wGyNi;%9-2}o+fFob zNFWWHb(i{&@+K4G3uIpEPBo|BqgLg&(quyiI@aq6y`6oTR(!34mq`{;qgH2Vy?YzF zlD3}?)Eq@oxie|yqflz+=Rk%D=V?y)82V^|FCF}7MQ>*%()5dV;ZE7uD+CmL|#LX@Yz$nO0jvRr4N_r~D8-Q4c1o zsH!x+?rfU2s}?!kI7?SUPm`(5Il5hJNOpm(=-r7=^rY!os#tR`g|_TSF2S?OxL0SY z5>uas_uNa3c3z}I?+?>a4B}pxM zm@<({*Ic422L{uy>$_-A_nY)OsT=KE6GKn?%%FPC*)%&`MKe~7pdU}V)4}cg=vggG z!Ua|O{+L{bPN(EWNq@J22A*3^g| zy=+9ik0#LA29eb5rZElclTS6yCs5~R$Ej#nkT zTE~yB>>f!z-npd0S9&%N8b_BNpQOFh&(Q2!wTmPK-6AHtmnmVEJNtTz(JD z-dlwhjNeYRtD95S$@cW^)lUk2@{2;x|D>0*J;^BP2U*K~X}NbT`nf_)t*y(GlUrvp zuNy)`&%MQXIz*9P-n7oG2U!XeY1so?vUpaTuD0(>Eu6Yis&6`3+&D#o=TAzY9aPTq zB~5r5Pi8&?X8367;S)U_JvmG_|V-c}y0n7Y{LH5}_din8h1ba^x+_)4xlHN@tI2z2E+zlG zLTf8rpoNnI$m75fy6L@@to;_ym1;BT^Q|OmwVk`RKokB5} zyV1kMF?1~PINeICLe)dtlh4>L)NV{DZA^bb_a&#vW6EB#Hs3d-ZnI`(iPE3h6i7vht{U_be1i(Z}^lB)!j~J?FP{Jj}Pe4{8-vH zN=f!1-)M}{4|+B4AcZ#VMpg%!lH1xW8lAV7f?8V9^*5Voc;y7z*!eIeJ*YzN;7iy>2|6=XhS0m<9dr@lgUTG=uRf7}kGM4XE9 z>d6AS)bk>>EO|?x-OvZt2;{o6E%jb|n9eOUp@iXC)at1-xj%nOn_}uwVw-g|BfT{l zzduI(;v_UI_B#0nIn&~W&8X_>PPC^qf@+R=LuMZ;&~fZ(d=?L-UG;|3@vr+R=-GW* z|I~?Uchg6naTL5`JNdo$q8_W~Q_!g-^5`^)2DF-pZ-&0d@3_pNA0?wnZ~RconI$LL z&K<@kxz%jGn|;-6;@kHN;9n1y#}3fkw>l0_o7;=WgBuj}z^9F*#eDvKL3z`l7n-jK zHu~t^_5bzPyG^|9Qftq?&E{VTjCZg1KzMp)k7vcJ+3eb<^S1mo@3yDR@kP7OY}^I| z8s;N$_4D)blel|N_wn;`3UK%FCOc10S2rh5$+UR^t`dLOS%I$J&aTwY$IHpxTdPhZ zT>S$*10>!)0TMq~Uq4rWSMLC)X`Zey7$9+y1O&_@2UkBYcYl8vl(@KhySuuOy|1gE zCI?MAM7-Ps0)V3s{(;UjB-7nJT_q@si@TqzbAXTEyx)wkpO3SvzdsG&8m@EQ{R8}I zjFV@et0ch3N8;(^=jJLw`6Vt+0myuwFE5A0-`C06RpRM7JwT!z@Co#T*0ezXd1U7u0A~dHqD&J1dHw;eUJ_>~PtP(fAih3+PJZs5^CW@ZPP3id zJvEiK^PcVG>5fFMt{&9a&&S`ty^AZ)PU7kA?Sb@8F7181kw{ZRt!e6~tEI*puneE| z_3`#b)w$2OPXo{d5?@zWzdu|T;O>Ru`2+_1Q+axzKRjvc;~yY#_m{Z%%<=vm3H0`J zb#k7eDXGlG1&006+!7?9K7KwPuHF(~cX-UMqrKR;y7mz30KYnElTjZ}A7>9Vr>1Ux z=ozR(S^H^mu?v(nqMbi_L|Jr{>)ZgXBQ#F$KiAcnw;lSPn7z)MXw^V3^ed8y7w{&k zr)hB?Z#Nn_&uf~Gr@OPp$r4W=A74%X@OJVNy9HMoh5q5??%OadP>eH1Ai=Gu%C0B)Trim2~dWbkE;CvMg`j3;cOf?!G^B z_}%|p&_y)9o#PV-<37&LfqpbHzzG9TJI0)SW@GU15$50r_xl9;OVGxye6ajuWH~!w zta<_(5a_M#NIbo}m#?QQ_ocSAywC-lFk~bQ9?m|5>(St^sp={5*aSe_i~~;s3Y!#ao;1&*{WznzmkO=xKq|r=vS) z=hCtU7i)~E##uXMm3e`estoMwq zvag?y8=t8DnE3ugF*2|aXol_#CvO*wiV^6q7%XLz*ziCftOc%fon2jBP&iZt^QL>C z7g{;c+l9tznq7o6E5=YPXznw7d?ij;lrS43(Fn2sNIYD%jaBA=!9aLNcAe|1nFDok zO~=Lv#k}f59Gn9sKi8R<)iKI2o%_4`X%-^cnq$T$>-Bc&PoyHf>(8^&1=Y*I!OS`kn?ph9BsoLEUnX=&`{Nqfz<`^tKwD!xO{dR7?LX z9X0SGwcc{Wj^(}@T9K>X0KGUmX_TnvuRjt;);&CqpQ1D4j~6weBTmQo0?4SV;XuPN zIA=ZLgt3W!JT7+NqUnHgj^(_|IpImK56XMp1!Z~#txh#n4At4i|qu{hGNv|L?qT_Lj|9{AQ- z`ggT@jerAp#88h+s9wE#JjPFoK;Q>F02D(#9DxPipd$ZSC1VqqGd2QgLPk6dPbvFw z(%8g|A8MotFj$$xIQ2-Mj5%zK)2Z-Jw(pd&i5^ZZIf>6&HMp|oKVyDQ5(?h)E|jY1 zVj2aUzq0lWEYyT0eAcSNQO$qG{NyE^8^r&~ZgQR4BzuIG5uQ3)kVu7p#RD1x#U1X(CiG$q`wguj)jh_V5sA*2zcF{B9uMLLR(lY;zHkbesD zPeJ}E$Ug=7ry&0nfO@=rnjcaVPy@=t;9&+1Vnq_2eZm5{#D6JAYpnE$hY zJT#3moQ?6W|PT`oeM%uBzTg-h3#FUf+$9)R}66j$BKv(t}T6Kz;PNR}7yaH?J z$DED5WNgy^BCdJJMe54UiALd?r`GiW&Jh&};^%K$HPPwk`QoTR5d3r|*!m-}&_XIi0w;_$ThwX8M=oYdM5r@?|9qGdy_z*+nS6eTXIo<#FtxRS54 z=-h`un_}>4s*OQQu&oJA@&6!QF&eNlQC>JNw`I^@+fFJRR3s6 zooWyaM*m?{Q>kBn*EJtchXsH z-v%V6|DjQPAcpLp{fE#n522wsHkfw?L$LW%iAvBLF?2(2{bOL4>xxsYQ1NkK(V1%2l$8XdyUWUdVdZyihI28+ z-2Oc&mYLM@_$Sfo1C!~ zZH*s%*67P}Z~vZ5bQWvD{msw?Gqf6O?)*z*KJqkz#$Bz(MQAk9=AyH)3%#g(7!khf zrwMRQA+-LOL3mT_ffko=bcsJSx841#Cf)(1R?W5cM2DyUUGomQK`CDd5x6Ft`0MYQ zDvSwpnMP5g$p_`Vzvf;Q1NeRCGEK}N+0gtSLz35~TnnOJnmw#IeEE>P|F4nGRonN% zFMn(Iu;NIEqt5?bw;Yzr#DC~wvr+hW-S>lV;24U*19yOCq-=YDW-9BQx(2v~qP~MX zL{sr)6k2~Q!FY{=x=3(K0~T%!d5F$XHWr&yK;vP3D$=CYjDZu-m{Yb{;A_cn)btB9 zc<1uO9ZSiGsjPSqfYsZRCf43=)NrUi%UU4kr`A6K({~9EzGjU(i z4_iS^EimqJLniwKUCb*wOW`QxsZfZfq_S;~|KTkIlrjPuTx^>C)=G!gADvpKbsRPZ z592i}>wtgP}kl|rYVFb)0r_wbhediswx&}r?$7&r;xfm`LC z&Hk%q1#BUBd3oTP=;ztc{9|bAY%ax^ih@|7x8Wb*MGRT&Gc0Vpk$4Ef;%MolUEuhR zo^v|4Oao^Ku7W19?8~2=?k=RCmP^d}Bc1Lp#6inF1Xo{YGaZdx7hC;N;CLbN;#f*i0ee4J# z&knfV0k(fAQ89FPVuoyuS(P8iegbJCkVk*m8VuXNT#1^Zp1*+E!PZB_*Fw(?deJ>m z59kx!FVk{7|$DE#}uE98xdW_a=OWeXaj7H zf-Zv}e7sN()Oi-Ly(mutZ0`bB9-mwAY0?kpC8J)QQ8wf5IP3#;NI`iTp!^K}djh># zkn51MkZO=4Q;6_Otc;K z>kF=?CDD3s+*trS;tan*@ah|Fg)ilpM<*kn^=N}BDE|}q_#wEexZVPLuMrOdcf19B zj5hC$vj0H+>`)(nHL;6R)*hV4${;<0lW2Kir=04Ik2s$@sVM;k$!7zGQb=~80j!8z48-f*C`C2=DhkI_YGI&@xO66FPG9_t zFz`fUbX@V;7-?IJI#1{E=P25c>w<<9uPa~xT8cWOkrr;(gu`;}a~2-SoDch=&L>O0 zxM;(vsVKAtm&Ly~HaV+*81r)&Mrr5}B!HGa!~kLl;ZLoMAmt%=^h3swiVzb>B}ipR z6-ZTxDWn>tI-~}qCWNm+wIOvNbs_a2d=23@P7NWAAdMkSAQFffq$#8sq&cJoq$Q*k zq&1`s#2nHV(hkxd(gA`e>tq43gmi**hID~+h2RAW>JG7j^nmn)^nyqsy&={R{#?ig z!kJ;el)N+ljwxwnyjV!UNajw-X=! zYLoB0xbVO=`R&BtH5a$UstDnMYvOJ@qWG^i1H5r45rhY>iM#Ief7i6aisSi5jcjly z@psMV7%DR{z0ixuK`)Bv`iCxe>)%z~ z+T+o`rb1%9xL=|AmlE*DES-$`WF)F;9!Y)rt8OWBU(6@H-@0gpbm;!2udc3uHtNIs z6K?=bZ~4VF@#s^0WXXNNLv8FF&Q#S-TB7E`&wtg#0X5_en_uL=ZD#*nbDs@v=wZ_o z_C=c!Uoi6ioqNyf7~M568$c7Q)J15CdsbcfnnJ@9(nYIL{BMovSX;M3COK+$wY$G+ z?p$^02Z9NPIBMDZV9(+Su#Q$N!Q#G@Xa>ylxnC2S|FY3ul-+db^xI$s^FtaetN$x~ zPxSAJbMYw3QR@n|=KM(UZ+#WyN^L%J8=d`?&@Y}t6!5>)p91|BurL2#>d%M%8Q7ou zztnGs4%eawrm!{I@?(13{R53uS5son^4qq#XhI%%r{@zWH2z1YG7 z``@(Qf8fS3gzCE^MAbG$I`Zo2y3eC0p!4VT7 zS}m>1{;oM_GFC;1PLsO~nx_Bkn6N2R$}5^I)ssL`j-vBXhwZLr72=;ZkfE6A`8_pX zF!?&hKe--X{WvbiHJ{`8oWV&xHFKPg;s%wq*E|8A-LXm0WKhdNd(G4EbqwoQ#?p!= zAN6eN=}{3RzCK={<`0b<;&>j2V^XfI!IJ2USz)X>uID2pIj{3Xhj$Q^ONg4g8x%Y&2ju1L@A0*TRq|u-%e}4 zr~~Xm96F*5qDU-|zbHlc)QN*7^dPc~VEl$xGOoCocG4qXQF8F<&{-?V_|%DM7wAD` zTb5Ncso{$&E=rDe)ru^OGY*JxiH8)4B8ys%+$_4G-l90*QzyQ-<`VUXB;%TkECVU~ zX5dOEMYz_9X?NrdvG_wAaLr|zxptvQ4i-0D$3iNaROfqb9=PZDo?9P-@Ggj|%i>S~ z2oHuxA}au@?}%3bX5)Vm+NY3e#Z>m0Zfvx&4lepC#^E3uPq!Gtx>Bo{1nG^t7QyUL>^%0F30(F!$UXRIq?8H zMI0}ujnX)|_5%9h;lPbVytRl!KM{C)>^3xE-vI3=&+pP1ZD}-96ygDB6&}!Ea=0z{ zNfQo>X)wqC;5hd>5A#H$(2rdWT=WZ}OKJlCkaUdWm9$aXggZVSP^JuyV;0ne2utlJ z>=$sniikg6q`g4hRz?8F9!L`uqA!3aaGX!6JRHDXArHWn9M`Qe$}&4y9Ivibqr+u( zzHnSzcF79;o(GgOCK9-2dPY3nhNBuhnd8{SYr^F+`)M4<@X`d6vbN0QcpVYHCYBTS zmqh``%Ag4wL_ffv@f@!w;wQugf`1eo7u`!2MI8DMIo?3j=XcgT;H`)fjyKds>0X(C zqN0H}67id5_c z7pqAj*kbSi{Va})Qx8=W{f2zMaJ;itjT)8Z8?zp`xCHROOlSh^By(K6f1}+tS{(VN zaa`PL(j?J8!1FjR7Mlvo>bqZ4bG(PvEOi&{BVPr_dy4p)vT^Z{ zIc_83gUfLFM&L3LKU7xMEx_CN5%F8U_3@WqG4H-2*KeTq0(so!w!~u6_a#~!^G6ZK z`-}RjGCX_}aIw0?#P)=KBF9CulqmLh;FmaVE7}<*wlnh0;kccMpDi1gKR7-}#OsUw z3;if|Gw{J8uD4Ko0e>Ik_z)4dE$gQl93Lv;70UDrfVUqe;+MsNQV#Jf(MR?oH^W(b zfxHv8z?OrEKPnsJN{$Z~@jl|B2K_9Ki(Qd!i<3Xf`i0{oMg4bWc4D>yA0^^xVtYbA znd75H{Gp5X0(ct7$B6g?Q6Kr{aeS0y1qA!PU2QE%A)J9yZQ1?WRyNUTu7wrST#PJy-zQ;&= z0sA=|cNg)hqSJu?;J8?9N)&wvJFz=}dx-i?#r_BVV;uJs@pfWD=w|?LFD?}{jduV9 z-WC-^ABmKnBixH#R> zj^Aw{+s|=vI>p!TwdI7JYaAD+Uka3KakR@zj*C%B6Z;Tw`5xd)wQ7_oc5ak^3&(>* ze2Qov`lmP^EaE%M`tDthFB9>{&9oP=Q^fJ*B0gWPy?~wYMBpJJUR_*!pr6R`6(at; zY%E{m_(~DKQl_87@lX-JE;;TX|#_@0ww{4-lfIl-h zzFNcw*=R4IU%>GQ5$`18&|kS1c%+EG7ds5_1dd0EcneV`VB#1CpFTt27BN;tkn#C_%3 z3*b=)Fb8cF@fwqLI37ZabI>-CtKUm|0bg9>Y2rluyx3Rxyj53B6EAWO;yi)!$`2y{ z?IQlNtRHRR_zn>tBn~+E=@iFzinxzBUV-1`c!G%EC>tL|9N#74@vhnn)Gz!H@ZBPw zA?l+Ji5%Y};?Kni4E8T^JW<5EisgrX4#$&3ysBJ#0sS8w-z(yKd;Z2_li{O%BEGAG z_JU6@646KdMXr(9rvG1W=K^Qdy#D{yz1^Pao>J*Tk%&YRVYZMIp6_ja*LSVGW-WYGvrmsDipwvhl2|V^2wv=Dtv$6&@UxeKzo_`{9i0v8yio9{ z;%y`-3A|kJrB2rB<;ATP{3XRV4s$lRrf(AbWyKHn))w<$0$--MyLhKOQNdqPeA~&+ z25~C|e^v3rw2x`idcj{)e3CaO&wd%aMDYr(7yO9euPfeN`V+XQ_xDm+bKRO%d!*vnBeWhPJWd(5BPS$JGl5wjvYMzHSms#kJaG= zzD)2=ijVg2YQZ}ze#*@WKMmkr0*c?mLvz_B09_QAc{Kwbphr-FRnwe3>9}&iGZbH` z4bBItYX#3#JpbqfzX^O)SH-tabny155qi+N2ma+c$nX_?9bay%zw9k4D+PB~1V>~f zV$=)XQ)9&SV4ziIzX9G$@iMPAou{qU(#|ih{L6{=|II- z9OUpjphjz(?xMC&y^}%-`}7#3_>v3VeL`ymAFTLFJ>Y1&xZpz+AMfEgZxVZ`;v0Sa zd6355Rc(jq=%>6Z*{8>DipP6fb|OYh@L`JIqoWi4cEN`$zGQ?=mm913W#GFjzSV2L zWrFXacrT4hyH*Q6Lh(M@pZISOd{4!@b+zn7d9qi4k5v3)tuy?Eg72mHY2zI}c)8$v zEB?q{3A|SDQHoFZ>eVFpK8n}tQH`JZ<>31&KHh7$sNka&zuTLHD+S+A@yGgEcA~!Z zf{#($QjP!FZ-MWx`De5pXwQh?2Pi&G>qR@13O-ixzv(28pBljrRQ&3TEIWa35qzBD zmudOsICvZUAjP|R<9D&(;}xHhW!Z_7MTOu8E55#?gX4dL;D;za`5y^<);s*N<2*oh z(Wwqf=?g&l3Bke7IxB&f2;NrlX&!&A;O!Kj>ha@(w^#g<8xnqUR)Tj>{9F$&61=10 z`8wOs3M&PdzmIK$i>Ew1CU|GX*PoW~zg_Tv;_v<~f#<&q-bL{mkH1XtpyJCtezo8k zisyR#2Ej8Gzt!VszX#q`@!1}Kq2S#VzsBR23*KGv5#Fp=D|k=Ezt*FIerXcCm*PV_ z{`^(oy%lft{6_`vqj>Q2L_1UpzLVk;J$}95eHB05EC1{Y@P3MC>8PSS5y5v>yz%IS z|5CyGD_(qX0ep!if>zrfF44cOd2{*vD)4TKFY($ZD!AMJU2jeJuN1t8^5=RB z{CdHADt?d7*_3DYN8r5_@8|VbMDX5zKgv*MN6Y{2p(3E)%@7;%9rqr&{oU;u|L={4@yO zMe!+m%BMWpYr%tx2lP}8zEJQC#V2GX{FDoxsrY)Y9cl&ds`x7JaBLF1o8m`%!*l*R zaJT(Cd*zG@-b4AZBNK5e1@Ec&aPRQ_9=!VyryEc6M$ha|p|??dxQ9Op-hH$~pWqGh zQk$-Lm7dyZh0lea<K&maLU$kdmWRJ3QK_}I8|AwX&Va`ScOO!h2iBFJ z^EtTtkh(muE{RoJk>DNF&sPH+96u`s@2L2)(Fr^zcqhfzdPnYd!8#lO)*ofBR5m*AO-U*pY?3kC10c=+Z-`O5|G zrubFk92`Hjg1ha%$@AYNcn{@|)~i#>IlmUXr{YV!LnSJBFU9+NGkm4sy%qn-JLKvG z@1yud6BFf}{T295u74f-lrtiDU&TN1+NV_Teu`&#hiHx9J1gEH%kfXYZxOt|;_rEW z^6J0`D1N^;11}bQpyG#l{Z%3OE{adkxRi5);DZz&(?3zK@Ympj6>sZ}lLEnqD871% z!^cmF;6oLE%Db9eEBLO8-|Zdjalv;}{6KGt$%%mvQ~bVZiSiT)K3wtN_f6m{1>arq z_B$oY6BB$7#YcPm?Si|1;30qPA&GI4{|)$_%I`irfiDw$q>Fpws#@^96fe;AC4L$N zcmBYGzYx;9DqJ;YuLmEc{2kiPwA(_#_fdSJ=f7O=eHFi^d!jtGf{#}GOK(NgB)I!W zDMj8mpZ_iR80A0cjgzS0`zwA_*M$E{!4FXUJg+?Uf{#_av)7NaH-I0g_;RluB7%=o z`~vTsP%8LAif{79bB*BR6(6RjDB5R>;0G)IqqlU(+X#M$;-7l>V!_oTM3-10Mnfy(eBdRF@2B|ndfKEs6@u@q_yhk)_}L(Mf5l6^;XLyv zp7WjV{CV73{Xs+?$qf}?=;i+5+&6wpiCEg|J_EZrA?!!G){3Q_TK3hs!1fjwOMA7v zb(L?QoJK4i)Y8xItw<~#)$+E#1S_$0asQAn$nQ@vp>|ekvyKY8NIS6fyveCwUp=~Q zL;la~(nc*K^!#aCmWidUS`J9mf<~_vOFOk(l;x{MgILNl#)H3!E-#!b) z(orox-|n-Ni=~rVcI@u6)QY9ET29royItxgu>{nz&0m7~o3V6J%Wiro+51Gr5>!jf zAE#0*8EW}>fUgAgV#!p?LOl=L-e&)TrK?(AO!OD+77m>2q6g;!0XixWzlDnc z0Xivg)RjypTk&Tntwq1ZF2^Hm5WHKJkil# z=|uM8bn5zBm*D;F+F#4n%r!jVkM4`^h29CBf$oOhfyjFjFAiJQ7fky%F#hkS)H83P zw{PZe?y-Fe_jB}z=xTJ!KlzJOc-O-_72ZDZ9^oF+4II7OSgABK&33@w68yb4oj=V* z)*%D0=TDT__je?YJc~SrJO!_cj`fuoC}c{yassd;N1rAHF%@oMP~9h>#RQVv7L>KK;}}17q3e$*Z$Lpdob@;xRSqu zJ&-?gpjSSi%saZ%9{3-KJV`H)#daKbyDy>scjEtA%5f0oSWJ1ta56{s4G1r$I99;-ws;HDbTMgab`B9tCL<;$w`! z0y5cu^5ekcWc22WHR3ytkqBt!cPxS$kpiZ5`Ku~0{;G-qcG`9for6TMvd3>&FY2D9 zMr$rBhePJlgcQ9eVDjH}xUUk4A1*dYlR5KVO%q=BckyQ8m*e8=5ar0*(IvQ|&x8*A zofUEj!sm2seKE7kQk9j73gYeFj?I+%XL~069zb-_Y`&t#gq5k#kj_hdv*<02zZ^ zsQM!G#mFVde#oV&|Bk*4xf~gdT%r0(^i{~!$iB!wRR0q_9k~YC2f0@Db?EDne<7og z8&uzjz6rS**&C5}%Za`fxed7;*$cTt^$c_vnTd=9& z)lZ-!$dkyf$WyAHMlVF3L53pFs(ub#gglQ7L0(Y32)!6tf(%BARlkUiB1@4$$V;kU zMlVBNL3Tl2Rs9;e1bH19h`gbCIl2^i6B&S%sa}CDN8UpEBX6sI2fY$`7ugwkPxUHv z1@b=95BWg#hv-UVHPRQUQvDIS8u=L63He0z8uVIZ9nuH+RP|@*8su}NH}Zw*FVVHg zS4c0UPW9L581fC$6IrkNTl5BGBhmxer20E_J@P%$9r;1^kLU*EC!`zFsQPDg9NCO? zMSfBJD|!pE70E>R#yHNFSsF_)e<(qWd8`BkjTa zs~&(Ji0p#210SS%FnS0w6ln{-tLoj*!;s-f8}Qv#?|~kH?1@<5BUSH(-WwT(w6tfg zQN1sEG_oJk3_eEn{^$dcvB(ba167YhAB2oYwu2w6`VjO4Qm6CBBvo+ z!B1Cx2Kr278X|8@JWKW8&}Sp(Aisj2tNJ|j`N#zbpRlqnRDBWpV&oEJGx(*d|Bk*4 zxg3duU!nR+^i{~!$j{*aQ2kHzbmSVO5&T-!*P*XR{)PMmeuL^8(KjJCBMsoUsJ<0_ z8*)4HBlsPvXQ0E#OymdfS*q_u&qnS-z6ZZs^*!ip0Ip`c@F7h3CuIl^I zdB{9u6ZiwFA4Jbb9zr&PKdkx@bUv~G*#Q2i>c`Lp$m7Vj;DxH6Ku3@#k@etDseT&0 z5P1gq2K-so&!LNu=aCrr3#u2P7b8oMufdB|zle?^OOZP8msG!uUWUAadetXE z$m>Wg_#3L1qf3!DkuSl^RIfmnBX1#JfWNK!9rQ}%UF37{_f)S!S0L{r@)p4lRDX!B zL{=l8fmf;i2wjbQjC>0IiRv}zwa7XV@K05LhOR+AN92{0U#R{PU5k8$tO2i6{WUs< ze1m)fzFzgW=ncq5u&PZnE?bZth`d;! z4bm3bPQD$wJ<XC!{m7jeG#z1qmX5kk3G8B3+Rt^4-wg5gzBUekb1(-3#fB z{6@YHdMBhWvXy*4^v+0sWDEHL=z+*C$gkuFq2*1MLy%v{4@K{a?1pS6Ka4-Ljz1g> zUNI6t(q5|fRy|7fKC1UsJzDjCs>i6_U-bd1$ErS1^*9OmNH91qd~;|1q_eXXL(abi zxfQt`nTgzsEI?jI{y=UHAYBmNrxMK%29G!hcjJ+RkwcIP$f3w#$l*v95<-qZCL%{7 zM>^0sb6OQM+8-B)n5 z-pARUyxgkD%H$U0COqvDo4B)(NOz@htSt<{2ObT&Z?M)oG*){?-kQ5O^RthA^CrLx zG0Wf$kc&y@vaW~ik=b{kvoV49Q^L?UKOF)nmg_F0kGnVwQN$~JEa?B^e;MS$Jd-Qv zZSy=PH(08YnG#W$!zM7V9N;l|_fRuT-#a8-=APV786yosvI{}u78fLicd6wZl&|W6 zDO3*UI+#AE;zYuK&t?A$XG%_;Ld|{LNL|O>fgAi(Dph8t9?t}|z!%>d!uyPpsl5m& z1-NH-=GLR^_)e|DG-_cm_0>m0tvH`kA0o-=1v;QAnd^2yIZbgKw>vy8rEN~;x~(Or zdO2l#Txr=SlFHx~H-q~MMN|FUEZR1iD+APSTLLuQ@8?pt+(-n^g)H1j}uTl@;wv6OFa;3+m#*Hw2hl=ZUZ%Wx7kz@})X~u;~ z1#q3NID|o+I!dbG`g-2wmNK-4a}O)wmU9$sX(m4~fmMmGwCqH~7eABaSqdjr>r2ni zJ;HXZ$BRWD)IlET_0q0NJ`u0)B6&=-4?LUHO=4P|Qc4+|uu>XSm>+f{Dq511gbAfF znK>R*m~V5SWczAPhZa6(^f`GP>kJ=Lh9ykjyHun##pj9>*dR?tcr<@j5iDnlw_*Ni zIGPKkAk9JrUs92)gq4@+M)7IX+!oTE0MaelVLc;NX~ zjMFEvln8Oz<1or#_#(Nds3FHX4lj0Czj%IJ#>IO%jLRHG;R{KAv^e&~gKWzzO^K__ ztT~K}tzk-zFWUS!SbN0ezG{ru9IjG5$!&%BFfJVPxL|SE&n^lE_p;d#?fa;*SAyM- zp4tpMVwcl7^RUNmddD^EB>Tlz>}p-j0%uG?Bu1JL~b^-f_-p8l2>uUDlSg)<=9w~Dl5Zb)xqlGjZPl<1;|j2{E&mE+!u|W zw)S>>%BwtKm6=&jWjHK(!6&RnGwV@h4RlzAQDekMlr_X*Rhd~Mwe<3eP$D*)S%Z}& zFAjxOywn)6n&VlLR25boEZ?kToA{@J2d*|SdCN;hCBe*nDd>M)y38QLdX(SU7GrY1 z%}~a+&!I~zoyIF0eJ6JYQlpv47cH&D^X#bhgvjJo__ERGzo<&hT#w0lpbDn%o$hXQ z{=`1ifXOZ-XMkoiZ7hEwRBh|8|pHIv&u+W@_jXE`Nr4O=L-HzGjTR=?s4U!sN7(v?Uqel;K8~H~44m#)Ysm zymL#E`bHKS!Z3Uhpv=q^cFGq48e#g{$Mq>+1juSEcZww!T12J!A0#EtK zNA7YX)9{gxGBeZgk&i|*)9{gx!qTKM=a#brC!f@hd{ja8z3SDa8b9*UY~~t2@=^Sz z(XV{uqm*JuvX5hn`#E)ReS_33!)(rcl5!B{%m>O6D;yiOfIk(44=T#H5rRZJI#c#14g;S zXioOyvPLmMW#7ld>_jUr5BfjAH8II8rMp9F{)pIpKtR+ zbKVLDcQq0>QtLyM^~SukJnF=@Oin7-M;^~v4PPy;6W+`?L`*-Sg;Qu!M`rSaffG24a`-ggkcGfekN zi1Rv_DFZ<2QgbNxdv;-=37IKj&dPL+w-jREqgZ1)#N}y;r4aXrxX>Z~n3lK-;)xK8 z9O7f|rVCvK@vL1KHV*N_w8T%T&~4n-;SmQJ^RwOyy5E43I|*W?gF^+t@>!N*w67;z z3Vjx;#N;kT>ddsRr*KksY4mIEDx){qIcAfYvg8ofDjd(f*Cx5sMR8@4PnY@L zVfY*7G3CSyGi4DaKA+x$AAnBsm{QQ()k)QHogQ+ELyPFF2TNx?2j`ye1$@op9Da=g zz)vF#U+Zzy*o?n3LUO8f{em`7_M6JM!{i=1Rc6|C49^CaMje~k_Vt4s@O3sKqiJOd zz)|$-NBp8OEOC9hoNIHRbraU!p7jT=DdbadS-5|o8u!k{sGMNM^boGE#4Jfh7qu>f z`>8jWmuOf1yX*5$$fwtOLXK9|owZ`ayfebcGPIMZlii{!p zd0cA@*0qIQaVpdd)wlL@+i@k-821z;Ic>ziC|;LzpHFVEN~P{&U{rFhk>qe?6xBiY z4P}=+`&gcT7|ZXWkYVM1n#5u-+G!of;e97@PIg#jX4X?vc`G@-Y8_UinH47D@SV8) zc36d6^)tV*ot{dn?jiYFl=46&*4x?{wk>UvJaPHk4p!aX2iZaw{jm&eI?%(hok~Bsc%#@B7 zpMRdqBzT_fO#C&rW=W~;-JKs}@z>sIh{CU0`4ZM{9r^8xvthM17p#<82y5|ftof0s zeZsP9F{>_d(i)%)S*rIxLHKg~@v*q1hy=0yyvFc2h2OqA>rjKW+mLeEho2@B=MwoT zHQ0^cx-=q_PVU!9{@lah2M(CF7jpmF@mH42l6gc@jOF)uSlt~~BdjC6t9_Ssjh>k0 z?coru$Mtbp+lA%vcV@o467GyKOn5OSBk9`oWX^1m&taBpfNYD^|wePxjP2(1@` zS5ozVP=-vnQijTJg2Da%stiKz&YJycrqd$ZdFX-liB6PxQBnhgYbOR*tu`l&lp!dr zi-xm4L1NmRX4Xo&=18u$HaM)pZ;gZNQ4XTE`!nO&EUx7^Z@^56I*GaGRhTnjuA~HV z)S6k(!zzST;joG~7=0~+brh^hhgAnFW#CK1d9W^kRc*8E**JHj(ce=r2f>Uv{>sd( zY!2VGK`0~+kw#dCs8dehSvXF74$H1<;U**V049yvT|Fkls>;l?uaY^0U7xZzHZ$dy z=mUL=W0nTR-x;IN>dNywERbEFT>aLWnKHSp?c_08Jm%ILeP*(}{P-@9$(2``nK_HL z{JXF2Oc9M{=CQPAj*rProbOeePqEgSnY)bRLOzfC{Cc=F(3C&2%yRxBpuFYl#2k7p z4Sp-ke#$&fuGq}feW=m2c|6slRQtRFHRT|b@(mrq4gVo@XIp1rHYBlRCOw1Bevfwg z4pxoBsxq_AJBiW_We7X0W>~(@KfAu<(=gw`lq8c}Jk6}^@(*HIE*Nan zR{kXB+958>IkX#%%xVsZcM|^WpQX#pOnI>RutA>BAq+_~^Xsb^ywqHh)Ttjs@@Hf8 zuesET`l63!NSc|$rtKo(dZ>5-Nt|`>Glvz)sPj z+_FX{Kocfsw7O(wFVK4aE^gorJY|STk|N6>{5@&7x=fZx);ky4M4Kr~Ycq4(!Q8IA z)?>2s*kp{}hCz0h&nM@;Dl;<(bDodMDW=)X95CLph9Hup?wtFI z|1d^BHq5i~h$LY$2GR2r%_=kVv0Hh@^?ENl%w{w5HAY9u2r1rfj6RGr*F!sROBG8uJcW@e{z zSQ#=#T_&Th(aapq*c{^llSj{U?=<=}935q5<`#M~r8gVR%(nDoN^cg< zHb!4gy;FL#%FMiro=oY@W;63rm?^zke3vo$8T3y|Z`PTaEU#00Gxu(z&(!&oJ}NUa zpP0sD$;gr3Z1W3D{k1^G`y}R%=~uAu`->-37$Ua{-nwgg}zi;uKgXLQBK4bJ> zse4b~3P7$E&CDiduC~6Tm-(pK%={eJdRW~Z)&LM;Jjic)+kxHt#<>q=_-{zbU>4e4C-c)ECYwg7 z%Ggdhc7%2S@(_~kll3ORM`nW8+4XVt{ zky-q5bb-fYgfyF(VVIkJOxmLO5o7c@Fuyw9^T`OQGc*6jtpB0@{w4j+2+7Si`n+ho z^ViwpRYypfnYn6To>tn!i_SG#qnUXFZ8?NlN|N~G8m(|ahW`ea+n&R_^3e32tX=4n zOqi`N`<)RXUWEJ732czsw{srue>8EVJ2=ngFkeNE;*?A-POHr)5DVl@u=sO1_s5ds^&p716{}s6hYM}S&dzSueMdSQ zH&Iq)ya&Vgcc60^CNCie*^JO{$=2gXa&#l75}$fL`vmpuoh8S-SiU)q-=BcocCBH% zi)(DA@(r$$11~$`Gv0ay)d#TmWFVCIjgv7}x<(GKdcToBBMfbKjf}1QCo_V5+?X?m z^LQh2j5F>k#KuhxJKfD)r~NMA{N&i0upPzi7CViiZDt_T$;l;N@|g1msKe$j^^f65 zIgWt}z-sD~r!s=OIz!lHTu&d(KrSO1y(1oH@ch}+38Gu9`-bvYZ%B3$@g;~lTkFp? z)+GZS-`7KwM0czgRt(oa^FkaB9bvGF>F1jtVC61M8pbX&n#CWe$l*@vg3v`}W@gI~ z-0{$+5~kdhf_aK}EV@1~WVoKe8TmHK$cRbXj>4C;mHBDx$(9vXK2L&u`b%jayu2eo(ttyqJl_tt(;xT~YB%NY zP5or^aJ5fif60HS`+pO5^5ZmrmfGcA1CqAlj|R66*L;NXNxnslq!%;dfWV&97WMf70uT}SXv2>e_KZ-iXU(K)|hZ^6C-ygPVL zcwdme75nq}*#*BxgAW4l!v6EX*K-L}zc?efx?LT6wZobV`WWoT$)8Go7xJ6QuOh!6 z`E2r)dRx`{{X)we_p``wudnCUt7Ao>}JY5 zndzkSOD{aPEBFfWAANDr4Qvl4ZZrIKY|HmJqh&>J{Ep9YQ{lY0B$^K%lCmvcwB#PP zN3*?X>9VE$DgQGUFt1HLVeL@(!4sXhAHr#(zMVh(=%Y@Q^9c@HwyRzTADL@!S02p1 z7dqP?{vG^O@&Dm-&*l7+ktKEc;JN4aqFv>UM0NO(^MoY#@93F2s-qdf6J#_FL5dl! z(*Ae%;K;m`6&5q|e!DZ*9La_Aeynv*a2^|5zX-05Nf6622 z@-uqR>9V3j)}_=f>L$KkpEvO+u9v7lS{oUAsNI8SrL zC|Tb_o$V|+R>02(i?f*lF55$pZ5MNxV2`og30&qm;mb{b;Rt^x-}e5K;Deoy9Kd!I zorh$xE&L(K;cS=VL;Q>vK8+ZrQTO@>gBk8k$QZV>)c-+jhqVlY*&ad}&LqDR+ZOv- zqaGB$}$Tt3k*H*R}WMT`*c5kFRmyK+nijNra*5l`N;gkPUeagPy zu^sN@`0uTLBwib~!_rgu{0WXs1Lw1r?kpTxc;SDG;De}hPX-mZ)T;vMT-ld;oGbYm zUKtJvW26l7)J+w*#65^I?3x8m9NC`l+di`wJmtJQ#o?Sq`3DP!_|w@Z*SCEV`~u1; z_?yCqBd?lykpouBa~b8?kFv!vMUdfa=YdIn7~4_Z9>=z{nbcK-G8BpH9BIoQ94E8|a^h~4e+=i)N{TwKPVi_7?PaT$LyrOUoD{>smBe6Bg3 zayGSCBPTOT5S8DV;v;-3AnP9GBI`-g9_hT`}B()+D< ziF3@MbL>|%re5={HP(GnzTOX72TFNXwAin*y8QCXt!v2-%4@N{ zJDd~EuDe=;s9(#rxV4b@yUy9wx|uQE!hg;CQm@)ts}uGn+WiR1)AAWN3aHN)&kV6& z6BQ1Jtr1esFcUfBbV0joN?mqL%bO6EU%u~w(S!u z3O}zg&yv^7ty#0i3QOEq-?E;jy;>r-Snc5tdFcgfPyF0dwatFr){WTOWwSpuv#zCG-Z*WI z)#eo1W_pd)lXw$ezQ%e5`>mHXS|8!Z+V-e*9sP66$CcJTw8yGGcUebZ-+AZh)*~#r zx3+AvF2dfj;Tx+P{FV)`SUsg*>Xuli&|VUG^)&v{YU?Je={Ry>mdKRr%G}+o>1V)u zhPej6El05|raWIv|J1slerl|L!P^vC%pVUd{9et=sm2|MNO)@+9;Z zuUi)}x2?YGa4T2Zulz&naq96^r#$KX^7`eramib ztaXgnmWw7?4^hvoShaNs$3f$)M(aH0#I1ENTl-0SGH&|NUR$?rwO=5KqxAQx zi^V;6Ic(J?8&j^>;@ITPN_KMg3l+Vc5$t%{ z?Gl5lb24qXva3L!AVhKM29Uidw~fiR*xMmumjIH)E|?_0oom4IcQS&36K`?sLwGAP z`8Hf>#n5&v@!^jpe(Z@~eYtiwme}2GiRIeyS+kN@$9SmT}5&if2L*@v;Z9bERwu5|Q#)#26np2CEw zy!qra-7)Hn-Oyq%**Cum?o51(eHJ$z$qQbBPHp?>M{w`4$B=!XuOu(rYIM4GiJNTN zE_v0hV^n|zj<#diZC^`XV$`G4#mN5HVAB{y*i!2e0}Bk27|uA|LSABoKQZ``cEJ`g z*)&Euw$vC+U>#4;2`gt!MsTP@#v92$X$dZg4lRK<%0D5wohB2O%k$frMDo@WXww~X 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 literal 0 HcmV?d00001 diff --git a/examples/base-app/decoder.worker.js b/examples/base-app/decoder.worker.js new file mode 100644 index 0000000..e229e81 --- /dev/null +++ b/examples/base-app/decoder.worker.js @@ -0,0 +1,8 @@ +/* +* +* DecoderWorker.js v0.1.0-beta.1 +* Copyright (c) 2024-8-1 Ezviz-OpenBiz +* . +* +*/ +!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";var e={DEFAULT_SAMPLERATE:44100,DEFAULT_CHANNEL:1,H264AUD:[0,0,0,1,9,224],H265AUD:[0,0,0,1,70,1,80],DEF_AAC:"aac",DEF_MP3:"mp3",DEF_H265:"h265",DEF_HEVC:"hevc",DEF_H264:"h264",DEF_AVC:"avc",CODEC_OFFSET_TABLE:["hevc","h265","avc","h264","aac","mp3"]};function r(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var t={exports:{}};!function(e,r){function t(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var d,f,p=(f="undefined"!=typeof document?null==(d=document.currentScript)?void 0:d.src:void 0,function(e){var r,t=function(){var r=dr.value;r in e||Object.defineProperty(e,r,{configurable:!0,get:function(){q("Access to module property ('"+r+"') is no longer possible via the module constructor argument; Instead, use the result of the module constructor.")}})};void 0===e&&(e={});var n,i,d=Object.assign({},e),p=new Promise((function(e,r){n=e,i=r}));["_malloc","_free","_memory","_registerWasmPlayer","_setCodecType","_exitWasmPlayer","_initDecoder","_decodeCodecContext","_destroy","_demuxTsStream","_getPacket","_getVLCLen","_getVLC","_getVPSLen","_getVPS","_getSPSLen","_getSPS","_getPPSLen","_getPPS","_getSEILen","_getSEI","___indirect_function_table","_ff_h264_cabac_tables","onRuntimeInitialized"].forEach((function(e){Object.getOwnPropertyDescriptor(p,e)||Object.defineProperty(p,e,{get:function(){return q("You are getting "+e+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")},set:function(){return q("You are setting "+e+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})}));var m="object"==("undefined"==typeof window?"undefined":u(window)),h="function"==typeof importScripts,g="object"==("undefined"==typeof process?"undefined":u(process))&&"object"==u(process.versions)&&"string"==typeof process.versions.node,v=!m&&!g&&!h;if(d.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)");var E,y,w,b=Object.assign({},d),_="./this.program",S="";if(v){if("object"==("undefined"==typeof process?"undefined":u(process))||"object"==("undefined"==typeof window?"undefined":u(window))||"function"==typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)")}else{if(!m&&!h)throw new Error("environment detection error");if(h?S=self.location.href:"undefined"!=typeof document&&document.currentScript&&(S=document.currentScript.src),f&&(S=f),S=S.startsWith("blob:")?"":S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1),"object"!=("undefined"==typeof window?"undefined":u(window))&&"function"!=typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");E=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},h&&(w=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),y=function(e,r,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=function(){200==n.status||0==n.status&&n.response?r(n.response):t()},n.onerror=t,n.send(null)}}var O,T,k,A=d.print||console.log.bind(console),M=d.printErr||console.error.bind(console);Object.assign(d,b),b=null,O="fetchSettings",Object.getOwnPropertyDescriptor(d,O)&&q("`Module."+O+"` was supplied but `"+O+"` not included in INCOMING_MODULE_JS_API"),d.arguments&&d.arguments,ie("arguments","arguments_"),d.thisProgram&&(_=d.thisProgram),ie("thisProgram","thisProgram"),d.quit&&d.quit,ie("quit","quit_"),L(void 0===d.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),L(void 0===d.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),L(void 0===d.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),L(void 0===d.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),L(void 0===d.read,"Module.read option was removed (modify read_ in JS)"),L(void 0===d.readAsync,"Module.readAsync option was removed (modify readAsync in JS)"),L(void 0===d.readBinary,"Module.readBinary option was removed (modify readBinary in JS)"),L(void 0===d.setWindowTitle,"Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)"),L(void 0===d.TOTAL_MEMORY,"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),ie("asm","wasmExports"),ie("read","read_"),ie("readAsync","readAsync"),ie("readBinary","readBinary"),ie("setWindowTitle","setWindowTitle"),L(!g,"node environment detected but not enabled at build time. Add `node` to `-sENVIRONMENT` to enable."),L(!v,"shell environment detected but not enabled at build time. Add `shell` to `-sENVIRONMENT` to enable."),d.wasmBinary&&(T=d.wasmBinary),ie("wasmBinary","wasmBinary"),"object"!=("undefined"==typeof WebAssembly?"undefined":u(WebAssembly))&&M("no native wasm support detected");var P,F,C,D,x,I=!1;function L(e,r){e||q("Assertion failed"+(r?": "+r:""))}function N(){var e=k.buffer;d.HEAP8=P=new Int8Array(e),d.HEAP16=C=new Int16Array(e),d.HEAPU8=F=new Uint8Array(e),d.HEAPU16=new Uint16Array(e),d.HEAP32=D=new Int32Array(e),d.HEAPU32=x=new Uint32Array(e),d.HEAPF32=new Float32Array(e),d.HEAPF64=new Float64Array(e)}function R(){if(!I){var e=ir();0==e&&(e+=4);var r=x[e>>2],t=x[e+4>>2];34821223==r&&2310721022==t||q("Stack overflow! Stack cookie has been overwritten at "+le(e)+", expected hex dwords 0x89BACDFE and 0x2135467, but received "+le(t)+" "+le(r)),1668509029!=x[0]&&q("Runtime error: The application has corrupted its heap memory area (address zero)!")}}L(!d.STACK_SIZE,"STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time"),L("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&null!=Int32Array.prototype.subarray&&null!=Int32Array.prototype.set,"JS engine does not provide full typed array support"),L(!d.wasmMemory,"Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally"),L(!d.INITIAL_MEMORY,"Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically"),function(){var e=new Int16Array(1),r=new Int8Array(e.buffer);if(e[0]=25459,115!==r[0]||99!==r[1])throw"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)"}();var U=[],B=[],j=[],$=!1;L(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),L(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),L(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),L(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var W=0,H=null,z=null,V={};function G(e){for(var r=e;;){if(!V[e])return e;e=r+Math.random()}}function Y(e){var r;W++,null==(r=d.monitorRunDependencies)||r.call(d,W),e?(L(!V[e]),V[e]=1,null===H&&"undefined"!=typeof setInterval&&(H=setInterval((function(){if(I)return clearInterval(H),void(H=null);var e=!1;for(var r in V)e||(e=!0,M("still waiting on run dependencies:")),M("dependency: "+r);e&&M("(end of list)")}),1e4))):M("warning: run dependency added without ID")}function Q(e){var r;if(W--,null==(r=d.monitorRunDependencies)||r.call(d,W),e?(L(V[e]),delete V[e]):M("warning: run dependency removed without ID"),0==W&&(null!==H&&(clearInterval(H),H=null),z)){var t=z;z=null,t()}}function q(e){var r;null==(r=d.onAbort)||r.call(d,e),M(e="Aborted("+e+")"),I=!0;var t=new WebAssembly.RuntimeError(e);throw i(t),t}var K,X,J,Z=function(e){return e.startsWith("data:application/octet-stream;base64,")},ee=function(e){return e.startsWith("file://")};function re(e,r){return function(){for(var t=arguments.length,n=new Array(t),o=0;o0;)e.shift()(d)};d.noExitRuntime;var le=function(e){return L("number"==typeof e),"0x"+(e>>>=0).toString(16).padStart(8,"0")},de=function(e){var r;(r=de).shown||(r.shown={}),de.shown[e]||(de.shown[e]=1,M(e))};function fe(){L(null!=xe.varargs);var e=D[+xe.varargs>>2];return xe.varargs+=4,e}var pe=fe,me={isAbs:function(e){return"/"===e.charAt(0)},splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,r){for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:function(e){var r=me.isAbs(e),t="/"===e.substr(-1);return(e=me.normalizeArray(e.split("/").filter((function(e){return!!e})),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:function(e){var r=me.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:function(e){if("/"===e)return"/";var r=(e=(e=me.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===r?e:e.substr(r+1)},join:function(){for(var e=arguments.length,r=new Array(e),t=0;t { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")}())(e)},ge={resolve:function(){for(var e=arguments.length,r=new Array(e),t=0;t=-1&&!o;i--){var a=i>=0?r[i]:Ce.cwd();if("string"!=typeof a)throw new TypeError("Arguments to path.resolve must be strings");if(!a)return"";n=a+"/"+n,o=me.isAbs(a)}return(o?"/":"")+(n=me.normalizeArray(n.split("/").filter((function(e){return!!e})),!o).join("/"))||"."},relative:function(e,r){var t=function(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)};e=ge.resolve(e).substr(1),r=ge.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),i=Math.min(n.length,o.length),a=i,s=0;s=n);)++o;if(o-r>16&&e.buffer&&ve)return ve.decode(e.subarray(r,o));for(var i="";r>10,56320|1023&c)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i},ye=[],we=function(e){for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r},be=function(e,r,t,n){if(L("string"==typeof e,"stringToUTF8Array expects a string (got "+(void 0===e?"undefined":u(e))+")"),!(n>0))return 0;for(var o=t,i=t+n-1,a=0;a=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a)),s<=127){if(t>=i)break;r[t++]=s}else if(s<=2047){if(t+1>=i)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=i)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=i)break;s>1114111&&de("Invalid Unicode code point "+le(s)+" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF)."),r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o};function _e(e,r,t){var n=we(e)+1,o=new Array(n),i=be(e,o,0,o.length);return o.length=i,o}var Se,Oe={ttys:[],init:function(){},shutdown:function(){},register:function(e,r){Oe.ttys[e]={input:[],output:[],ops:r},Ce.registerDevice(e,Oe.stream_ops)},stream_ops:{open:function(e){var r=Oe.ttys[e.node.rdev];if(!r)throw new Ce.ErrnoError(43);e.tty=r,e.seekable=!1},close:function(e){e.tty.ops.fsync(e.tty)},fsync:function(e){e.tty.ops.fsync(e.tty)},read:function(e,r,t,n,o){if(!e.tty||!e.tty.ops.get_char)throw new Ce.ErrnoError(60);for(var i=0,a=0;a0&&(A(Ee(e.output,0)),e.output=[])},ioctl_tcgets:function(e){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets:function(e,r,t){return 0},ioctl_tiocgwinsz:function(e){return[24,80]}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(M(Ee(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},fsync:function(e){e.output&&e.output.length>0&&(M(Ee(e.output,0)),e.output=[])}}},Te=function(e){q("internal error: mmapAlloc called but `emscripten_builtin_memalign` native symbol not exported")},ke={ops_table:null,mount:function(e){return ke.createNode(null,"/",16895,0)},createNode:function(e,r,t,n){var o;if(Ce.isBlkdev(t)||Ce.isFIFO(t))throw new Ce.ErrnoError(63);(o=ke).ops_table||(o.ops_table={dir:{node:{getattr:ke.node_ops.getattr,setattr:ke.node_ops.setattr,lookup:ke.node_ops.lookup,mknod:ke.node_ops.mknod,rename:ke.node_ops.rename,unlink:ke.node_ops.unlink,rmdir:ke.node_ops.rmdir,readdir:ke.node_ops.readdir,symlink:ke.node_ops.symlink},stream:{llseek:ke.stream_ops.llseek}},file:{node:{getattr:ke.node_ops.getattr,setattr:ke.node_ops.setattr},stream:{llseek:ke.stream_ops.llseek,read:ke.stream_ops.read,write:ke.stream_ops.write,allocate:ke.stream_ops.allocate,mmap:ke.stream_ops.mmap,msync:ke.stream_ops.msync}},link:{node:{getattr:ke.node_ops.getattr,setattr:ke.node_ops.setattr,readlink:ke.node_ops.readlink},stream:{}},chrdev:{node:{getattr:ke.node_ops.getattr,setattr:ke.node_ops.setattr},stream:Ce.chrdev_stream_ops}});var i=Ce.createNode(e,r,t,n);return Ce.isDir(i.mode)?(i.node_ops=ke.ops_table.dir.node,i.stream_ops=ke.ops_table.dir.stream,i.contents={}):Ce.isFile(i.mode)?(i.node_ops=ke.ops_table.file.node,i.stream_ops=ke.ops_table.file.stream,i.usedBytes=0,i.contents=null):Ce.isLink(i.mode)?(i.node_ops=ke.ops_table.link.node,i.stream_ops=ke.ops_table.link.stream):Ce.isChrdev(i.mode)&&(i.node_ops=ke.ops_table.chrdev.node,i.stream_ops=ke.ops_table.chrdev.stream),i.timestamp=Date.now(),e&&(e.contents[r]=i,e.timestamp=i.timestamp),i},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r)if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}},node_ops:{getattr:function(e){var r={};return r.dev=Ce.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,Ce.isDir(e.mode)?r.size=4096:Ce.isFile(e.mode)?r.size=e.usedBytes:Ce.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&ke.resizeFileStorage(e,r.size)},lookup:function(e,r){throw Ce.genericErrors[44]},mknod:function(e,r,t,n){return ke.createNode(e,r,t,n)},rename:function(e,r,t){if(Ce.isDir(e.mode)){var n;try{n=Ce.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new Ce.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=Ce.lookupNode(e,r);for(var n in t.contents)throw new Ce.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){for(var r,t=[".",".."],n=l(Object.keys(e.contents));!(r=n()).done;){var o=r.value;t.push(o)}return t},symlink:function(e,r,t){var n=ke.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!Ce.isLink(e.mode))throw new Ce.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var i=e.node.contents;if(o>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-o,n);if(L(a>=0),a>8&&i.subarray)r.set(i.subarray(o,o+a),t);else for(var s=0;s0||t+r8)throw new Ce.ErrnoError(32);for(var t=e.split("/").filter((function(e){return!!e})),n=Ce.root,o="/",i=0;i40)throw new Ce.ErrnoError(32)}}return{path:o,node:n}},getPath:function(e){for(var r;;){if(Ce.isRoot(e)){var t=e.mount.mountpoint;return r?"/"!==t[t.length-1]?t+"/"+r:t+r:t}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:function(e,r){for(var t=0,n=0;n>>0)%Ce.nameTable.length},hashAddNode:function(e){var r=Ce.hashName(e.parent.id,e.name);e.name_next=Ce.nameTable[r],Ce.nameTable[r]=e},hashRemoveNode:function(e){var r=Ce.hashName(e.parent.id,e.name);if(Ce.nameTable[r]===e)Ce.nameTable[r]=e.name_next;else for(var t=Ce.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:function(e,r){var t=Ce.mayLookup(e);if(t)throw new Ce.ErrnoError(t);for(var n=Ce.hashName(e.id,r),o=Ce.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===e.id&&i===r)return o}return Ce.lookup(e,r)},createNode:function(e,r,t,n){L("object"==(void 0===e?"undefined":u(e)));var o=new Ce.FSNode(e,r,t,n);return Ce.hashAddNode(o),o},destroyNode:function(e){Ce.hashRemoveNode(e)},isRoot:function(e){return e===e.parent},isMountpoint:function(e){return!!e.mounted},isFile:function(e){return 32768==(61440&e)},isDir:function(e){return 16384==(61440&e)},isLink:function(e){return 40960==(61440&e)},isChrdev:function(e){return 8192==(61440&e)},isBlkdev:function(e){return 24576==(61440&e)},isFIFO:function(e){return 4096==(61440&e)},isSocket:function(e){return!(49152&~e)},flagsToPermissionString:function(e){var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:function(e,r){return Ce.ignorePermissions||(!r.includes("r")||292&e.mode)&&(!r.includes("w")||146&e.mode)&&(!r.includes("x")||73&e.mode)?0:2},mayLookup:function(e){if(!Ce.isDir(e.mode))return 54;var r=Ce.nodePermissions(e,"x");return r||(e.node_ops.lookup?0:2)},mayCreate:function(e,r){try{return Ce.lookupNode(e,r),20}catch(e){}return Ce.nodePermissions(e,"wx")},mayDelete:function(e,r,t){var n;try{n=Ce.lookupNode(e,r)}catch(e){return e.errno}var o=Ce.nodePermissions(e,"wx");if(o)return o;if(t){if(!Ce.isDir(n.mode))return 54;if(Ce.isRoot(n)||Ce.getPath(n)===Ce.cwd())return 10}else if(Ce.isDir(n.mode))return 31;return 0},mayOpen:function(e,r){return e?Ce.isLink(e.mode)?32:Ce.isDir(e.mode)&&("r"!==Ce.flagsToPermissionString(r)||512&r)?31:Ce.nodePermissions(e,Ce.flagsToPermissionString(r)):44},MAX_OPEN_FDS:4096,nextfd:function(){for(var e=0;e<=Ce.MAX_OPEN_FDS;e++)if(!Ce.streams[e])return e;throw new Ce.ErrnoError(33)},getStreamChecked:function(e){var r=Ce.getStream(e);if(!r)throw new Ce.ErrnoError(8);return r},getStream:function(e){return Ce.streams[e]},createStream:function(e,r){return void 0===r&&(r=-1),e=Object.assign(new Ce.FSStream,e),-1==r&&(r=Ce.nextfd()),e.fd=r,Ce.streams[r]=e,e},closeStream:function(e){Ce.streams[e]=null},dupStream:function(e,r){var t,n;void 0===r&&(r=-1);var o=Ce.createStream(e,r);return null==(n=o.stream_ops)||null==(t=n.dup)||t.call(n,o),o},chrdev_stream_ops:{open:function(e){var r=Ce.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,null==e.stream_ops.open||e.stream_ops.open.call(e.stream_ops,e)},llseek:function(){throw new Ce.ErrnoError(70)}},major:function(e){return e>>8},minor:function(e){return 255&e},makedev:function(e,r){return e<<8|r},registerDevice:function(e,r){Ce.devices[e]={stream_ops:r}},getDevice:function(e){return Ce.devices[e]},getMounts:function(e){for(var r=[],t=[e];t.length;){var n,o=t.pop();r.push(o),(n=t).push.apply(n,[].concat(o.mounts))}return r},syncfs:function(e,r){"function"==typeof e&&(r=e,e=!1),Ce.syncFSRequests++,Ce.syncFSRequests>1&&M("warning: "+Ce.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=Ce.getMounts(Ce.root.mount),n=0;function o(e){return L(Ce.syncFSRequests>0),Ce.syncFSRequests--,r(e)}function i(e){if(e)return i.errored?void 0:(i.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach((function(r){if(!r.type.syncfs)return i(null);r.type.syncfs(r,e,i)}))},mount:function(e,r,t){if("string"==typeof e)throw e;var n,o="/"===t,i=!t;if(o&&Ce.root)throw new Ce.ErrnoError(10);if(!o&&!i){var a=Ce.lookupPath(t,{follow_mount:!1});if(t=a.path,n=a.node,Ce.isMountpoint(n))throw new Ce.ErrnoError(10);if(!Ce.isDir(n.mode))throw new Ce.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?Ce.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:function(e){var r=Ce.lookupPath(e,{follow_mount:!1});if(!Ce.isMountpoint(r.node))throw new Ce.ErrnoError(28);var t=r.node,n=t.mounted,o=Ce.getMounts(n);Object.keys(Ce.nameTable).forEach((function(e){for(var r=Ce.nameTable[e];r;){var t=r.name_next;o.includes(r.mount)&&Ce.destroyNode(r),r=t}})),t.mounted=null;var i=t.mount.mounts.indexOf(n);L(-1!==i),t.mount.mounts.splice(i,1)},lookup:function(e,r){return e.node_ops.lookup(e,r)},mknod:function(e,r,t){var n=Ce.lookupPath(e,{parent:!0}).node,o=me.basename(e);if(!o||"."===o||".."===o)throw new Ce.ErrnoError(28);var i=Ce.mayCreate(n,o);if(i)throw new Ce.ErrnoError(i);if(!n.node_ops.mknod)throw new Ce.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:function(e,r){return r=void 0!==r?r:438,r&=4095,r|=32768,Ce.mknod(e,r,0)},mkdir:function(e,r){return r=void 0!==r?r:511,r&=1023,r|=16384,Ce.mknod(e,r,0)},mkdirTree:function(e,r){for(var t=e.split("/"),n="",o=0;o=0),n<0||o<0)throw new Ce.ErrnoError(28);if(Ce.isClosed(e))throw new Ce.ErrnoError(8);if(1==(2097155&e.flags))throw new Ce.ErrnoError(8);if(Ce.isDir(e.node.mode))throw new Ce.ErrnoError(31);if(!e.stream_ops.read)throw new Ce.ErrnoError(28);var i=void 0!==o;if(i){if(!e.seekable)throw new Ce.ErrnoError(70)}else o=e.position;var a=e.stream_ops.read(e,r,t,n,o);return i||(e.position+=a),a},write:function(e,r,t,n,o,i){if(L(t>=0),n<0||o<0)throw new Ce.ErrnoError(28);if(Ce.isClosed(e))throw new Ce.ErrnoError(8);if(!(2097155&e.flags))throw new Ce.ErrnoError(8);if(Ce.isDir(e.node.mode))throw new Ce.ErrnoError(31);if(!e.stream_ops.write)throw new Ce.ErrnoError(28);e.seekable&&1024&e.flags&&Ce.llseek(e,0,2);var a=void 0!==o;if(a){if(!e.seekable)throw new Ce.ErrnoError(70)}else o=e.position;var s=e.stream_ops.write(e,r,t,n,o,i);return a||(e.position+=s),s},allocate:function(e,r,t){if(Ce.isClosed(e))throw new Ce.ErrnoError(8);if(r<0||t<=0)throw new Ce.ErrnoError(28);if(!(2097155&e.flags))throw new Ce.ErrnoError(8);if(!Ce.isFile(e.node.mode)&&!Ce.isDir(e.node.mode))throw new Ce.ErrnoError(43);if(!e.stream_ops.allocate)throw new Ce.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap:function(e,r,t,n,o){if(2&n&&!(2&o)&&2!=(2097155&e.flags))throw new Ce.ErrnoError(2);if(1==(2097155&e.flags))throw new Ce.ErrnoError(2);if(!e.stream_ops.mmap)throw new Ce.ErrnoError(43);return e.stream_ops.mmap(e,r,t,n,o)},msync:function(e,r,t,n,o){return L(t>=0),e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0},ioctl:function(e,r,t){if(!e.stream_ops.ioctl)throw new Ce.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile:function(e,r){if(void 0===r&&(r={}),r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw new Error('Invalid encoding type "'+r.encoding+'"');var t,n=Ce.open(e,r.flags),o=Ce.stat(e).size,i=new Uint8Array(o);return Ce.read(n,i,0,o,0),"utf8"===r.encoding?t=Ee(i,0):"binary"===r.encoding&&(t=i),Ce.close(n),t},writeFile:function(e,r,t){void 0===t&&(t={}),t.flags=t.flags||577;var n=Ce.open(e,t.flags,t.mode);if("string"==typeof r){var o=new Uint8Array(we(r)+1),i=be(r,o,0,o.length);Ce.write(n,o,0,i,void 0,t.canOwn)}else{if(!ArrayBuffer.isView(r))throw new Error("Unsupported data type");Ce.write(n,r,0,r.byteLength,void 0,t.canOwn)}Ce.close(n)},cwd:function(){return Ce.currentPath},chdir:function(e){var r=Ce.lookupPath(e,{follow:!0});if(null===r.node)throw new Ce.ErrnoError(44);if(!Ce.isDir(r.node.mode))throw new Ce.ErrnoError(54);var t=Ce.nodePermissions(r.node,"x");if(t)throw new Ce.ErrnoError(t);Ce.currentPath=r.path},createDefaultDirectories:function(){Ce.mkdir("/tmp"),Ce.mkdir("/home"),Ce.mkdir("/home/web_user")},createDefaultDevices:function(){Ce.mkdir("/dev"),Ce.registerDevice(Ce.makedev(1,3),{read:function(){return 0},write:function(e,r,t,n,o){return n}}),Ce.mkdev("/dev/null",Ce.makedev(1,3)),Oe.register(Ce.makedev(5,0),Oe.default_tty_ops),Oe.register(Ce.makedev(6,0),Oe.default_tty1_ops),Ce.mkdev("/dev/tty",Ce.makedev(5,0)),Ce.mkdev("/dev/tty1",Ce.makedev(6,0));var e=new Uint8Array(1024),r=0,t=function(){return 0===r&&(r=he(e).byteLength),e[--r]};Ce.createDevice("/dev","random",t),Ce.createDevice("/dev","urandom",t),Ce.mkdir("/dev/shm"),Ce.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){Ce.mkdir("/proc");var e=Ce.mkdir("/proc/self");Ce.mkdir("/proc/self/fd"),Ce.mount({mount:function(){var r=Ce.createNode(e,"fd",16895,73);return r.node_ops={lookup:function(e,r){var t=+r,n=Ce.getStreamChecked(t),o={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return n.path}}};return o.parent=o,o}},r}},{},"/proc/self/fd")},createStandardStreams:function(){d.stdin?Ce.createDevice("/dev","stdin",d.stdin):Ce.symlink("/dev/tty","/dev/stdin"),d.stdout?Ce.createDevice("/dev","stdout",null,d.stdout):Ce.symlink("/dev/tty","/dev/stdout"),d.stderr?Ce.createDevice("/dev","stderr",null,d.stderr):Ce.symlink("/dev/tty1","/dev/stderr");var e=Ce.open("/dev/stdin",0),r=Ce.open("/dev/stdout",1),t=Ce.open("/dev/stderr",1);L(0===e.fd,"invalid handle for stdin ("+e.fd+")"),L(1===r.fd,"invalid handle for stdout ("+r.fd+")"),L(2===t.fd,"invalid handle for stderr ("+t.fd+")")},staticInit:function(){[44].forEach((function(e){Ce.genericErrors[e]=new Ce.ErrnoError(e),Ce.genericErrors[e].stack=""})),Ce.nameTable=new Array(4096),Ce.mount(ke,{},"/"),Ce.createDefaultDirectories(),Ce.createDefaultDevices(),Ce.createSpecialDirectories(),Ce.filesystems={MEMFS:ke}},init:function(e,r,t){L(!Ce.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"),Ce.init.initialized=!0,d.stdin=e||d.stdin,d.stdout=r||d.stdout,d.stderr=t||d.stderr,Ce.createStandardStreams()},quit:function(){Ce.init.initialized=!1,tr(0);for(var e=0;ethis.length-1||e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},r.setDataGetter=function(e){this.getter=e},r.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",t,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+t+". Status: "+e.status);var r,n=Number(e.getResponseHeader("Content-length")),o=(r=e.getResponseHeader("Accept-Ranges"))&&"bytes"===r,i=(r=e.getResponseHeader("Content-Encoding"))&&"gzip"===r,a=1048576;o||(a=n);var s=this;s.setDataGetter((function(e){var r=e*a,o=(e+1)*a-1;if(o=Math.min(o,n-1),void 0===s.chunks[e]&&(s.chunks[e]=function(e,r){if(e>r)throw new Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==a&&o.setRequestHeader("Range","bytes="+e+"-"+r),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):_e(o.responseText||"")}(r,o)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!i&&n||(a=n=1,n=this.getter(0).length,a=n,A("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=a,this.lengthKnown=!0},o(e,[{key:"length",get:function(){return this.lengthKnown||this.cacheLength(),this._length}},{key:"chunkSize",get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}]),e}();if("undefined"!=typeof XMLHttpRequest){if(!h)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var s={isDevice:!1,contents:new a}}else s={isDevice:!1,url:t};var u=Ce.createFile(e,r,s,n,i);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};function l(e,r,t,n,o){var i=e.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(L(a>=0),i.slice)for(var s=0;s>2]=n.dev,D[t+4>>2]=n.mode,x[t+8>>2]=n.nlink,D[t+12>>2]=n.uid,D[t+16>>2]=n.gid,D[t+20>>2]=n.rdev,J=[n.size>>>0,(X=n.size,+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[t+24>>2]=J[0],D[t+28>>2]=J[1],D[t+32>>2]=4096,D[t+36>>2]=n.blocks;var o=n.atime.getTime(),i=n.mtime.getTime(),a=n.ctime.getTime();return J=[Math.floor(o/1e3)>>>0,(X=Math.floor(o/1e3),+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[t+40>>2]=J[0],D[t+44>>2]=J[1],x[t+48>>2]=o%1e3*1e3,J=[Math.floor(i/1e3)>>>0,(X=Math.floor(i/1e3),+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[t+56>>2]=J[0],D[t+60>>2]=J[1],x[t+64>>2]=i%1e3*1e3,J=[Math.floor(a/1e3)>>>0,(X=Math.floor(a/1e3),+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[t+72>>2]=J[0],D[t+76>>2]=J[1],x[t+80>>2]=a%1e3*1e3,J=[n.ino>>>0,(X=n.ino,+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[t+88>>2]=J[0],D[t+92>>2]=J[1],0},doMsync:function(e,r,t,n,o){if(!Ce.isFile(r.node.mode))throw new Ce.ErrnoError(43);if(2&n)return 0;var i=F.slice(e,e+t);Ce.msync(r,i,o,t,n)},getStreamFromFD:function(e){return Ce.getStreamChecked(e)},varargs:void 0,getStr:function(e){return De(e)}},Ie=function(e,r){return L(e==e>>>0||e==(0|e)),L(r===(0|r)),r+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*r:NaN},Le=[0,31,60,91,121,152,182,213,244,274,305,335],Ne=[0,31,59,90,120,151,181,212,243,273,304,334],Re=function(e){var r;return((r=e.getFullYear())%4!=0||r%100==0&&r%400!=0?Ne:Le)[e.getMonth()]+e.getDate()-1},Ue=function(e,r,t){return L("number"==typeof t,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),be(e,F,r,t)};Se=function(){return performance.now()};var Be,je,$e=function(e){var r=k.buffer,t=(e-r.byteLength+65535)/65536;try{return k.grow(t),N(),1}catch(t){M("growMemory: Attempted to grow heap from "+r.byteLength+" bytes to "+e+" bytes, but got error: "+t)}},We={},He=function(){if(!He.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==("undefined"==typeof navigator?"undefined":u(navigator))&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:_||"./this.program"};for(var r in We)void 0===We[r]?delete e[r]:e[r]=We[r];var t=[];for(var r in e)t.push(r+"="+e[r]);He.strings=t}return He.strings},ze=function(e){return sr(e)},Ve=function(e,r,t,n,o){var i={string:function(e){var r=0;return null!=e&&0!==e&&(r=function(e){var r=we(e)+1,t=ze(r);return Ue(e,t,r),t}(e)),r},array:function(e){var r,t,n=ze(e.length);return t=n,L((r=e).length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)"),P.set(r,t),n}},a=function(e){var r=d["_"+e];return L(r,"Cannot call unknown function "+e+", make sure it is exported"),r}(e),s=[],u=0;if(L("array"!==r,'Return type should not be "array".'),n)for(var c=0;c>7)},Ye=function(e,r){var t;if(L(!r.includes("j"),"i64 not permitted in function signatures when WASM_BIGINT is disabled"),"function"==typeof WebAssembly.Function)return new WebAssembly.Function(function(e){L(!e.includes("j"),"i64 not permitted in function signatures when WASM_BIGINT is disabled");for(var r={i:"i32",j:"i64",f:"f32",d:"f64",e:"externref",p:"i32"},t={parameters:[],results:"v"==e[0]?[]:[r[e[0]]]},n=1;n=Qe.length&&(Qe.length=e+1),Qe[e]=r=Be.get(e)),L(Be.get(e)==r,"JavaScript-side Wasm function table mirror is out of date!"),r},Ke=function(e){return je||(je=new WeakMap,function(e,r){if(je)for(var t=e;t>1]=2,0}return-28}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_openat:function(e,r,t,n){xe.varargs=n;try{r=xe.getStr(r),r=xe.calculateAt(e,r);var o=n?fe():0;return Ce.open(r,t,o).fd}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return-e.errno}},_abort_js:function(){q("native code called abort()")},_emscripten_get_now_is_monotonic:function(){return 1},_emscripten_memcpy_js:function(e,r,t){return F.copyWithin(e,r,r+t)},_gmtime_js:function(e,r,t){var n=Ie(e,r),o=new Date(1e3*n);D[t>>2]=o.getUTCSeconds(),D[t+4>>2]=o.getUTCMinutes(),D[t+8>>2]=o.getUTCHours(),D[t+12>>2]=o.getUTCDate(),D[t+16>>2]=o.getUTCMonth(),D[t+20>>2]=o.getUTCFullYear()-1900,D[t+24>>2]=o.getUTCDay();var i=Date.UTC(o.getUTCFullYear(),0,1,0,0,0,0),a=(o.getTime()-i)/864e5|0;D[t+28>>2]=a},_localtime_js:function(e,r,t){var n=Ie(e,r),o=new Date(1e3*n);D[t>>2]=o.getSeconds(),D[t+4>>2]=o.getMinutes(),D[t+8>>2]=o.getHours(),D[t+12>>2]=o.getDate(),D[t+16>>2]=o.getMonth(),D[t+20>>2]=o.getFullYear()-1900,D[t+24>>2]=o.getDay();var i=0|Re(o);D[t+28>>2]=i,D[t+36>>2]=-60*o.getTimezoneOffset();var a=new Date(o.getFullYear(),0,1),s=new Date(o.getFullYear(),6,1).getTimezoneOffset(),u=a.getTimezoneOffset(),c=0|(s!=u&&o.getTimezoneOffset()==Math.min(u,s));D[t+32>>2]=c},_mktime_js:function(e){var r,t=function(){var r=new Date(D[e+20>>2]+1900,D[e+16>>2],D[e+12>>2],D[e+8>>2],D[e+4>>2],D[e>>2],0),t=D[e+32>>2],n=r.getTimezoneOffset(),o=new Date(r.getFullYear(),0,1),i=new Date(r.getFullYear(),6,1).getTimezoneOffset(),a=o.getTimezoneOffset(),s=Math.min(a,i);if(t<0)D[e+32>>2]=Number(i!=a&&s==n);else if(t>0!=(s==n)){var u=Math.max(a,i),c=t>0?s:u;r.setTime(r.getTime()+6e4*(c-n))}D[e+24>>2]=r.getDay();var l=0|Re(r);D[e+28>>2]=l,D[e>>2]=r.getSeconds(),D[e+4>>2]=r.getMinutes(),D[e+8>>2]=r.getHours(),D[e+12>>2]=r.getDate(),D[e+16>>2]=r.getMonth(),D[e+20>>2]=r.getYear();var d=r.getTime();return isNaN(d)?-1:d/1e3}();return X=t,r=+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0,nr(r),t>>>0},_tzset_js:function(e,r,t,n){var o=(new Date).getFullYear(),i=new Date(o,0,1),a=new Date(o,6,1),s=i.getTimezoneOffset(),u=a.getTimezoneOffset(),c=Math.max(s,u);x[e>>2]=60*c,D[r>>2]=Number(s!=u);var l=function(e){return e.toLocaleTimeString(void 0,{hour12:!1,timeZoneName:"short"}).split(" ")[1]},d=l(i),f=l(a);L(d),L(f),L(we(d)<=16,"timezone name truncated to fit in TZNAME_MAX ("+d+")"),L(we(f)<=16,"timezone name truncated to fit in TZNAME_MAX ("+f+")"),u>>=0)>r);var t=2147483648;if(e>t)return M("Cannot enlarge memory, requested "+e+" bytes, but the limit is "+t+" bytes!"),!1;for(var n,o,i=1;i<=4;i*=2){var a=r*(1+.2/i);a=Math.min(a,e+100663296);var s=Math.min(t,(n=Math.max(e,a))+((o=65536)-n%o)%o);if($e(s))return!0}return M("Failed to grow the heap from "+r+" bytes to "+s+" bytes, not enough memory!"),!1},environ_get:function(e,r){var t=0;return He().forEach((function(n,o){var i=r+t;x[e+4*o>>2]=i,function(e,r){for(var t=0;t>2]=t.length;var n=0;return t.forEach((function(e){return n+=e.length+1})),x[r>>2]=n,0},fd_close:function(e){try{var r=xe.getStreamFromFD(e);return Ce.close(r),0}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return e.errno}},fd_fdstat_get:function(e,r){try{var t=xe.getStreamFromFD(e),n=t.tty?2:Ce.isDir(t.mode)?3:Ce.isLink(t.mode)?7:4;return P[r]=n,C[r+2>>1]=0,J=[0,(X=0,+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[r+8>>2]=J[0],D[r+12>>2]=J[1],J=[0,(X=0,+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[r+16>>2]=J[0],D[r+20>>2]=J[1],0}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return e.errno}},fd_read:function(e,r,t,n){try{var o=function(e,r,t,n){for(var o=0,i=0;i>2],s=x[r+4>>2];r+=8;var u=Ce.read(e,P,a,s,n);if(u<0)return-1;if(o+=u,u>2]=o,0}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return e.errno}},fd_seek:function(e,r,t,n,o){var i=Ie(r,t);try{if(isNaN(i))return 61;var a=xe.getStreamFromFD(e);return Ce.llseek(a,i,n),J=[a.position>>>0,(X=a.position,+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[o>>2]=J[0],D[o+4>>2]=J[1],a.getdents&&0===i&&0===n&&(a.getdents=null),0}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return e.errno}},fd_write:function(e,r,t,n){try{var o=function(e,r,t,n){for(var o=0,i=0;i>2],s=x[r+4>>2];r+=8;var u=Ce.write(e,P,a,s,n);if(u<0)return-1;o+=u}return o}(xe.getStreamFromFD(e),r,t);return x[n>>2]=o,0}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return e.errno}}},er=function(){var e={env:Ze,wasi_snapshot_preview1:Ze};function r(e,r){var t;return er=e.exports,L(k=er.memory,"memory not found in wasm exports"),N(),L(Be=er.__indirect_function_table,"table not found in wasm exports"),t=er.__wasm_call_ctors,B.unshift(t),Q("wasm-instantiate"),er}Y("wasm-instantiate");var t,n,o,a,s=d;if(d.instantiateWasm)try{return d.instantiateWasm(e,r)}catch(e){M("Module.instantiateWasm callback failed with error: "+e),i(e)}return K||(K=te()),(t=T,n=K,o=e,a=function(e){L(d===s,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),s=null,r(e.instance)},t||"function"!=typeof WebAssembly.instantiateStreaming||Z(n)||"function"!=typeof fetch?oe(n,o,a):fetch(n,{credentials:"same-origin"}).then((function(e){return WebAssembly.instantiateStreaming(e,o).then(a,(function(e){return M("wasm streaming compile failed: "+e),M("falling back to ArrayBuffer instantiation"),oe(n,o,a)}))}))).catch(i),{}}();d._malloc=re("malloc",1),d._free=re("free",1),d._registerWasmPlayer=re("registerWasmPlayer",0),d._setCodecType=re("setCodecType",4),d._exitWasmPlayer=re("exitWasmPlayer",1),d._initDecoder=re("initDecoder",1),d._decodeCodecContext=re("decodeCodecContext",5),d._destroy=re("destroy",1),d._demuxTsStream=re("demuxTsStream",3),d._getPacket=re("getPacket",0),d._getVLCLen=re("getVLCLen",0),d._getVLC=re("getVLC",0),d._getVPSLen=re("getVPSLen",0),d._getVPS=re("getVPS",0),d._getSPSLen=re("getSPSLen",0),d._getSPS=re("getSPS",0),d._getPPSLen=re("getPPSLen",0),d._getPPS=re("getPPS",0),d._getSEILen=re("getSEILen",0),d._getSEI=re("getSEI",0);var rr,tr=re("fflush",1),nr=re("_emscripten_tempret_set",1),or=function(){return(or=er.emscripten_stack_init)()},ir=function(){return(ir=er.emscripten_stack_get_end)()},ar=function(e){return(ar=er._emscripten_stack_restore)(e)},sr=function(e){return(sr=er._emscripten_stack_alloc)(e)},ur=function(){return(ur=er.emscripten_stack_get_current)()};function cr(){var e;or(),L(!(3&(e=ir()))),0==e&&(e+=4),x[e>>2]=34821223,x[e+4>>2]=2310721022,x[0]=1668509029}function lr(){function e(){rr||(rr=!0,d.calledRun=!0,I||(L(!$),$=!0,R(),d.noFSInit||Ce.init.initialized||Ce.init(),Ce.ignorePermissions=!1,ce(B),n(d),d.onRuntimeInitialized&&d.onRuntimeInitialized(),L(!d._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),function(){if(R(),d.postRun)for("function"==typeof d.postRun&&(d.postRun=[d.postRun]);d.postRun.length;)e=d.postRun.shift(),j.unshift(e);var e;ce(j)}()))}W>0||(cr(),function(){if(d.preRun)for("function"==typeof d.preRun&&(d.preRun=[d.preRun]);d.preRun.length;)e=d.preRun.shift(),U.unshift(e);var e;ce(U)}(),W>0||(d.setStatus?(d.setStatus("Running..."),setTimeout((function(){setTimeout((function(){d.setStatus("")}),1),e()}),1)):e(),R()))}if(d.dynCall_jiji=re("dynCall_jiji",5),d.dynCall_iiiiij=re("dynCall_iiiiij",7),d.dynCall_jiiij=re("dynCall_jiiij",6),d._ff_h264_cabac_tables=113148,d.run=lr,d.ccall=Ve,d.cwrap=function(e,r,t,n){return function(){for(var n=arguments.length,o=new Array(n),i=0;i0;)d.preInit.pop()();lr(),r=p;for(var dr,fr=l(Object.keys(d));!(dr=fr()).done;)t();return r});"object"===u(r)&&"object"===u(e)&&(e.exports=p)}(t,t.exports);var n,o,i,a,s=r(t.exports),u="wasmLoading",c="wasmLoaded",l="wasmFailed",d="registerWasmPlayer",f="videoCallback",p="decodeCodecContext",m="destroy",h="demuxTsStream",g="demuxCoreReceive",v="readPacket",E="readPacketEnd",y="mediaInfo",w=function(e,r){return{cmd:e,data:r}},b=(n="undefined"!=typeof self?self:window,o={navigator:void 0!==n.navigator?n.navigator:{userAgent:""},infoMap:{engine:["WebKit","Trident","Gecko","Presto"],browser:["Safari","Chrome","Edge","IE","Firefox","Firefox Focus","Chromium","Opera","Vivaldi","Yandex","Arora","Lunascape","QupZilla","Coc Coc","Kindle","Iceweasel","Konqueror","Iceape","SeaMonkey","Epiphany","360","360SE","360EE","UC","QQBrowser","QQ","Baidu","Maxthon","Sogou","LBBROWSER","2345Explorer","TheWorld","XiaoMi","Quark","Qiyu","Wechat","Taobao","Alipay","Weibo","Douban","Suning","iQiYi"],os:["Windows","Linux","Mac OS","Android","Ubuntu","FreeBSD","Debian","iOS","Windows Phone","BlackBerry","MeeGo","Symbian","Chrome OS","WebOS"],device:["Mobile","Tablet","iPad"]}},i={getMatchMap:function(e){return{Trident:e.indexOf("Trident")>-1||e.indexOf("NET CLR")>-1,Presto:e.indexOf("Presto")>-1,WebKit:e.indexOf("AppleWebKit")>-1,Gecko:e.indexOf("Gecko/")>-1,Safari:e.indexOf("Safari")>-1,Chrome:e.indexOf("Chrome")>-1||e.indexOf("CriOS")>-1,IE:e.indexOf("MSIE")>-1||e.indexOf("Trident")>-1,Edge:e.indexOf("Edge")>-1,Firefox:e.indexOf("Firefox")>-1||e.indexOf("FxiOS")>-1,"Firefox Focus":e.indexOf("Focus")>-1,Chromium:e.indexOf("Chromium")>-1,Opera:e.indexOf("Opera")>-1||e.indexOf("OPR")>-1,Vivaldi:e.indexOf("Vivaldi")>-1,Yandex:e.indexOf("YaBrowser")>-1,Arora:e.indexOf("Arora")>-1,Lunascape:e.indexOf("Lunascape")>-1,QupZilla:e.indexOf("QupZilla")>-1,"Coc Coc":e.indexOf("coc_coc_browser")>-1,Kindle:e.indexOf("Kindle")>-1||e.indexOf("Silk/")>-1,Iceweasel:e.indexOf("Iceweasel")>-1,Konqueror:e.indexOf("Konqueror")>-1,Iceape:e.indexOf("Iceape")>-1,SeaMonkey:e.indexOf("SeaMonkey")>-1,Epiphany:e.indexOf("Epiphany")>-1,360:e.indexOf("QihooBrowser")>-1||e.indexOf("QHBrowser")>-1,"360EE":e.indexOf("360EE")>-1,"360SE":e.indexOf("360SE")>-1,UC:e.indexOf("UC")>-1||e.indexOf(" UBrowser")>-1,QQBrowser:e.indexOf("QQBrowser")>-1,QQ:e.indexOf("QQ/")>-1,Baidu:e.indexOf("Baidu")>-1||e.indexOf("BIDUBrowser")>-1,Maxthon:e.indexOf("Maxthon")>-1,Sogou:e.indexOf("MetaSr")>-1||e.indexOf("Sogou")>-1,LBBROWSER:e.indexOf("LBBROWSER")>-1,"2345Explorer":e.indexOf("2345Explorer")>-1,TheWorld:e.indexOf("TheWorld")>-1,XiaoMi:e.indexOf("MiuiBrowser")>-1,Quark:e.indexOf("Quark")>-1,Qiyu:e.indexOf("Qiyu")>-1,Wechat:e.indexOf("MicroMessenger")>-1,Taobao:e.indexOf("AliApp(TB")>-1,Alipay:e.indexOf("AliApp(AP")>-1,Weibo:e.indexOf("Weibo")>-1,Douban:e.indexOf("com.douban.frodo")>-1,Suning:e.indexOf("SNEBUY-APP")>-1,iQiYi:e.indexOf("IqiyiApp")>-1,Windows:e.indexOf("Windows")>-1,Linux:e.indexOf("Linux")>-1||e.indexOf("X11")>-1,"Mac OS":e.indexOf("Macintosh")>-1,Android:e.indexOf("Android")>-1||e.indexOf("Adr")>-1,Ubuntu:e.indexOf("Ubuntu")>-1,FreeBSD:e.indexOf("FreeBSD")>-1,Debian:e.indexOf("Debian")>-1,"Windows Phone":e.indexOf("IEMobile")>-1||e.indexOf("Windows Phone")>-1,BlackBerry:e.indexOf("BlackBerry")>-1||e.indexOf("RIM")>-1,MeeGo:e.indexOf("MeeGo")>-1,Symbian:e.indexOf("Symbian")>-1,iOS:e.indexOf("like Mac OS X")>-1,"Chrome OS":e.indexOf("CrOS")>-1,WebOS:e.indexOf("hpwOS")>-1,Mobile:e.indexOf("Mobi")>-1||e.indexOf("iPh")>-1||e.indexOf("480")>-1,Tablet:e.indexOf("Tablet")>-1||e.indexOf("Nexus 7")>-1,iPad:e.indexOf("iPad")>-1}},matchInfoMap:function(e){var r,t=(null==(r=o.navigator)?void 0:r.userAgent)||"",n=i.getMatchMap(t);for(var a in o.infoMap)for(var s=0;s36&&n.showModalDialog?s=!0:+u>45&&(s=t("type","application/vnd.chromium.remoting-viewer"))}if(a.Baidu&&a.Opera&&(a.Baidu=!1),a.Mobile&&(a.Mobile=!r.includes("iPad")),s&&(t("type","application/gameplugin")||o.navigator&&void 0===o.navigator.connection.saveData?a["360SE"]=!0:a["360EE"]=!0),a.IE||a.Edge)switch(window.screenTop-window.screenY){case 71:case 74:case 99:case 75:case 105:break;case 102:a["360EE"]=!0;break;case 104:a["360SE"]=!0}var c={Safari:function(){return r.replace(/^.*Version\/([\d.]+).*$/,"$1")},Chrome:function(){return r.replace(/^.*Chrome\/([\d.]+).*$/,"$1").replace(/^.*CriOS\/([\d.]+).*$/,"$1")},IE:function(){return r.replace(/^.*MSIE ([\d.]+).*$/,"$1").replace(/^.*rv:([\d.]+).*$/,"$1")},Edge:function(){return r.replace(/^.*Edge\/([\d.]+).*$/,"$1")},Firefox:function(){return r.replace(/^.*Firefox\/([\d.]+).*$/,"$1").replace(/^.*FxiOS\/([\d.]+).*$/,"$1")},"Firefox Focus":function(){return r.replace(/^.*Focus\/([\d.]+).*$/,"$1")},Chromium:function(){return r.replace(/^.*Chromium\/([\d.]+).*$/,"$1")},Opera:function(){return r.replace(/^.*Opera\/([\d.]+).*$/,"$1").replace(/^.*OPR\/([\d.]+).*$/,"$1")},Vivaldi:function(){return r.replace(/^.*Vivaldi\/([\d.]+).*$/,"$1")},Yandex:function(){return r.replace(/^.*YaBrowser\/([\d.]+).*$/,"$1")},Arora:function(){return r.replace(/^.*Arora\/([\d.]+).*$/,"$1")},Lunascape:function(){return r.replace(/^.*Lunascape[\/\s]([\d.]+).*$/,"$1")},QupZilla:function(){return r.replace(/^.*QupZilla[\/\s]([\d.]+).*$/,"$1")},"Coc Coc":function(){return r.replace(/^.*coc_coc_browser\/([\d.]+).*$/,"$1")},Kindle:function(){return r.replace(/^.*Version\/([\d.]+).*$/,"$1")},Iceweasel:function(){return r.replace(/^.*Iceweasel\/([\d.]+).*$/,"$1")},Konqueror:function(){return r.replace(/^.*Konqueror\/([\d.]+).*$/,"$1")},Iceape:function(){return r.replace(/^.*Iceape\/([\d.]+).*$/,"$1")},SeaMonkey:function(){return r.replace(/^.*SeaMonkey\/([\d.]+).*$/,"$1")},Epiphany:function(){return r.replace(/^.*Epiphany\/([\d.]+).*$/,"$1")},360:function(){return r.replace(/^.*QihooBrowser\/([\d.]+).*$/,"$1")},"360SE":function(){return{63:"10.0",55:"9.1",45:"8.1",42:"8.0",31:"7.0",21:"6.3"}[+r.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},"360EE":function(){return{69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[+r.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},Maxthon:function(){return r.replace(/^.*Maxthon\/([\d.]+).*$/,"$1")},QQBrowser:function(){return r.replace(/^.*QQBrowser\/([\d.]+).*$/,"$1")},QQ:function(){return r.replace(/^.*QQ\/([\d.]+).*$/,"$1")},Baidu:function(){return r.replace(/^.*BIDUBrowser[\s\/]([\d.]+).*$/,"$1")},UC:function(){return r.replace(/^.*UC?Browser\/([\d.]+).*$/,"$1")},Sogou:function(){return r.replace(/^.*SE ([\d.X]+).*$/,"$1").replace(/^.*SogouMobileBrowser\/([\d.]+).*$/,"$1")},LBBROWSER:function(){return{57:"6.5",49:"6.0",46:"5.9",42:"5.3",39:"5.2",34:"5.0",29:"4.5",21:"4.0"}[+navigator.userAgent.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},"2345Explorer":function(){return r.replace(/^.*2345Explorer\/([\d.]+).*$/,"$1")},TheWorld:function(){return r.replace(/^.*TheWorld ([\d.]+).*$/,"$1")},XiaoMi:function(){return r.replace(/^.*MiuiBrowser\/([\d.]+).*$/,"$1")},Quark:function(){return r.replace(/^.*Quark\/([\d.]+).*$/,"$1")},Qiyu:function(){return r.replace(/^.*Qiyu\/([\d.]+).*$/,"$1")},Wechat:function(){return r.replace(/^.*MicroMessenger\/([\d.]+).*$/,"$1")},Taobao:function(){return r.replace(/^.*AliApp\(TB\/([\d.]+).*$/,"$1")},Alipay:function(){return r.replace(/^.*AliApp\(AP\/([\d.]+).*$/,"$1")},Weibo:function(){return r.replace(/^.*weibo__([\d.]+).*$/,"$1")},Douban:function(){return r.replace(/^.*com.douban.frodo\/([\d.]+).*$/,"$1")},Suning:function(){return r.replace(/^.*SNEBUY-APP([\d.]+).*$/,"$1")},iQiYi:function(){return r.replace(/^.*IqiyiVersion\/([\d.]+).*$/,"$1")}};return e.browserVersion="",c[e.browser]&&(e.browserVersion=c[e.browser](),e.browserVersion==r&&(e.browserVersion="")),"Edge"==e.browser&&(e.engine="EdgeHTML"),"Chrome"==e.browser&&parseInt(e.browserVersion)>27&&(e.engine="Blink"),"Opera"==e.browser&&parseInt(e.browserVersion)>12&&(e.engine="Blink"),"Yandex"==e.browser&&(e.engine="Blink"),e.browser+" (version: "+e.browserVersion+"; kernel: "+e.engine+")"}},a={DeviceInfoObj:function(e){var r,t=function(r){var t;null==(t=e.info)||t.forEach((function(e){e.toLowerCase()===r.toLowerCase()&&(s[r]=a[r])}))};e=e||{domain:""};var a={deviceType:i.getDeviceType(),OS:i.getOS(),OSVersion:i.getOSVersion(),sh:n.screen.height,sw:n.screen.width,lang:i.getLanguage(),netWork:i.getNetwork(),orientation:i.getOrientationStatu(),browserInfo:i.getBrowserInfo(),fingerprint:i.createFingerprint(e.domain),userAgent:null==(r=o.navigator)?void 0:r.userAgent};if(!e.info||0===e.info.length)return a;var s={};for(var u in a)t(u);return s}},{getDeviceInfo:function(e){return a.DeviceInfoObj(e)}}),_=function(){function e(){}return e.add=function(r,t){e.queues.push({url:r,data:t})},e.fire=function(){if(e.queues&&0!==e.queues.length){e.isStop=!1;var r=e.queues[0];r.url&&e.api.report(r.data),e.queues.splice(0,1),e.fire()}else e.isStop=!0},e}();_.isStop=!0,_.queues=[];var S=function(){function e(e){this.url=e}var r=e.prototype;return r.report=function(e){this.checkUrl(this.url)&&this.sendInfo(e)},r.sendInfo=function(e){navigator.sendBeacon?this.sendBeacon(this.url,e):this.sendImage(this.url,e)},r.sendImage=function(e,r){var t=this.changeJSON2Query(r),n=new Image;n.onload=n.onerror=function(){n=null},n.src=e+"?"+t+"&random="+Math.random()},r.sendBeacon=function(e,r){try{navigator.sendBeacon(e,this.formatParamsByURLSearchParams(r))}catch(e){}},r.formatParamsByURLSearchParams=function(e){var r=new URLSearchParams;for(var t in e)"object"==typeof e[t]&&(e[t]=JSON.stringify(e[t])),r.append(t,e[t]);return r},r.changeJSON2Query=function(e){var r="";for(var t in e){""!=r&&(r+="&");var n=e[t];r+=t+"="+encodeURIComponent("object"==typeof n?JSON.stringify(n):n)}return r},r.checkUrl=function(e){return!!e&&/^[hH][tT][tT][pP]([sS]?):\/\//.test(e)},e}();function O(){return O=Object.assign||function(e){for(var r=1;r0&&(r._free(l),l=null),{};var d=r.HEAPU8.subarray(l,l+c);s.sps=new Uint8Array(c),null==(n=s.sps)||n.set(d,0);var f=r.cwrap("getPPSLen","number",[])(),p=r.cwrap("getPPS","number",[])(),m=r.HEAPU8.subarray(p,p+f);s.pps=new Uint8Array(f),null==(o=s.pps)||o.set(m,0);var h=r.cwrap("getSEILen","number",[])(),g=r.cwrap("getSEI","number",[])(),v=r.HEAPU8.subarray(g,g+h);s.sei=new Uint8Array(h),null==(i=s.sei)||i.set(v,0);var E=r.cwrap("getVLCLen","number",[])(),y=r.cwrap("getVLC","number",[])(),w=r.HEAPU8.subarray(y,y+E);if(u.vlc=new Uint8Array(E),null==(a=u.vlc)||a.set(w,0),(null==t?void 0:t.vCodec)===e.DEF_HEVC||(null==t?void 0:t.vCodec)===e.DEF_H265){var b,_=r.cwrap("getVPSLen","number",[])(),S=r.cwrap("getVPS","number",[])(),O=r.HEAPU8.subarray(S,S+_);s.vps=new Uint8Array(_),null==(b=s.vps)||b.set(O,0),r._free(O),O=null}try{r._free(l)}catch(e){k.send("worker",{name:"readPacket",free:"spsPtr"})}l=null;try{r._free(d)}catch(e){k.send("worker",{name:"readPacket",free:"spsSubPtr"})}d=null;try{r._free(m)}catch(e){k.send("worker",{name:"readPacket",free:"ppsSubPtr"})}m=null;try{r._free(v)}catch(e){k.send("worker",{name:"readPacket",free:"seiSubPtr"})}v=null;try{r._free(w)}catch(e){k.send("worker",{name:"readPacket",free:"vlcSubPtr"})}return w=null,{nalu:s,vlc:u}};function F(){return F=Object.assign||function(e){for(var r=1;r0?r:e.DEFAULT_SAMPLERATE,sampleChannel:t>=0?t:e.DEFAULT_CHANNEL}:{sampleRate:0,sampleChannel:0,audioNone:!0})))}),"viiddddiiiii"),t._setCodecType(n,0,o,i),t.cwrap("initDecoder","number",["number"])(n);break;case p:var u=s.data,c=u.nalBuf,l=u.pts,b=u.flushDecoder,_=t._malloc(c.length);t.HEAP8.set(c,_);var S=parseInt(1e3*l+"");t._decodeCodecContext(n,_,c.length,S,b),t._free(_),_=null;break;case h:var O=s.data,T=O.buff;O.tsUrl,function(e,r,t,n){null!=M&&(e._free(M),M=null),M=e._malloc(r.length),e.HEAP8.set(r,M);try{var o=e.cwrap("demuxTsStream","number",["number","number","number"])(M,r.length,t);e._free(M),M=null,o>=0&&postMessage(w(g))}catch(e){k.send("worker",{name:"demuxTsStream",msg:e})}}(t,T,n);break;case v:!function(e,r){for(;;){var t=e.cwrap("getPacket","number",[])(),n=e.HEAPU32[t/4],o=e.HEAPU32[t/4+1],i=e.HEAPF64[t/8+1],a=e.HEAPF64[t/8+1+1],s=e.HEAPU32[t/4+1+1+2+2],u=e.HEAPU32[t/4+1+1+2+2+1],c=e.HEAPU8.subarray(u,u+o),l=null,d=[0,1].includes(n);if(d)try{l=P(e,r)}catch(e){}if(!d||o<=0)break;var f=a>0?a:i;f<0||0===t||(self.postMessage(w(v,{type:n,size:o,ptime:i,dtime:a,keyframe:s,data:Array.from(c),pts:f,layer:l})),c=null,l=null,t=null)}postMessage(w(E))}(t,a);break;case m:null!==o&&t.removeFunction(o),o=null,null!==i&&t.removeFunction(i),i=null,t.cwrap("destroy","number",["number"])(n),self.close()}}})).catch((function(e){self.postMessage(w(l,{data:e}))}))})); diff --git a/examples/base-app/index.html b/examples/base-app/index.html index 8b0e383..5daa1dc 100644 --- a/examples/base-app/index.html +++ b/examples/base-app/index.html @@ -1,177 +1,151 @@ - - - + + Title - + - + - +

-
-
-
- - -
-
- - - - -
- - -
-
- - -
-
- - -
- -
+
+
+
+ + +
+
+ + + +
+ + +
+
+
- - - - \ No newline at end of file + + diff --git a/examples/base-app/index.js b/examples/base-app/index.js deleted file mode 100644 index 902155a..0000000 --- a/examples/base-app/index.js +++ /dev/null @@ -1,42 +0,0 @@ -/* -* -* EzuikitFlv.js v1.0.2 -* Copyright (c) 2024-7-31 Ezviz-OpenBiz -* -* https://github.com/Ezviz-OpenBiz/EZUIKit-flv -* -*/ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).EzuikitFlv=t()}(this,(function(){"use strict";function e(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var n=i.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}function t(t,i,n){return(i=e(i))in t?Object.defineProperty(t,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[i]=n,t} -/* - * - * @ezuikit/utils-tools v1.0.2 - * Copyright (c) 2024-5-22 Ezviz-OpenBiz - * Released under MIT the License. - * - */function i(e){var t,i;return!!((null==(i=window)||null==(t=i.navigator)?void 0:t.userAgent)||"").match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)}var n={h264:1,h265:2,h266:4,vp8:8,vp9:16,av1:32};function r(e,t){void 0===t&&(t=["h264"]);var i=(t||["h264"]).reduce((function(e,t){return t=t.toLowerCase(),e+(n[t]||0)}),0),r=e.split("?")[0],o=e.split("?")[1];return o=(o||"").split("&").filter((function(e){return!/^vc=\d?/.test(e)})).join("&"),r+"?"+o+(o?"&":"")+"vc="+i} -/*! - * browser-tool v1.2.2 - * Useragent analysis tool. - * https://passer-by.com/browser/ - * - * Copyright (c) 2017-present, HaoLe Zheng - * - * Released under the MIT License - * https://github.com/mumuy/browser - * - * Created on: 2024-01-16 - */function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}var a={name:"Safari",match:function(e){return e.indexOf("Safari")>-1},version:function(e){var t;return(null===(t=e.match(/Version\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},s={name:"Chrome",match:function(e){return e.indexOf("Chrome")>-1||e.indexOf("CriOS")>-1},version:function(e){var t,i;return(null===(t=e.match(/Chrome\/([\d.]+)/))||void 0===t?void 0:t[1])||(null===(i=e.match(/CriOS\/([\d.]+)/))||void 0===i?void 0:i[1])||""}},d={name:"Edge",match:function(e){return e.indexOf("Edge")>-1||e.indexOf("Edg/")>-1||e.indexOf("EdgA")>-1||e.indexOf("EdgiOS")>-1},version:function(e){var t,i,n,r;return(null===(t=e.match(/Edge\/([\d.]+)/))||void 0===t?void 0:t[1])||(null===(i=e.match(/Edg\/([\d.]+)/))||void 0===i?void 0:i[1])||(null===(n=e.match(/EdgA\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/EdgiOS\/([\d.]+)/))||void 0===r?void 0:r[1])||""}},l={name:"IE",match:function(e){return e.indexOf("MSIE")>-1||e.indexOf("Trident")>-1},version:function(e){var t,i;return(null===(t=e.match(/MSIE ([\d.]+)/))||void 0===t?void 0:t[1])||(null===(i=e.match(/rv:([\d.]+)/))||void 0===i?void 0:i[1])||""}},c={name:"Firefox",match:function(e){return e.indexOf("Firefox")>-1||e.indexOf("FxiOS")>-1},version:function(e){var t,i;return(null===(t=e.match(/Firefox\/([\d.]+)/))||void 0===t?void 0:t[1])||(null===(i=e.match(/FxiOS\/([\d.]+)/))||void 0===i?void 0:i[1])||""}},h={name:"Firefox Focus",match:function(e){return e.indexOf("Focus")>-1},version:function(e){var t;return(null===(t=e.match(/Focus\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},u={name:"Chromium",match:function(e){return e.indexOf("Chromium")>-1},version:function(e){var t;return(null===(t=e.match(/Chromium\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},A={name:"Opera",match:function(e){return e.indexOf("Opera")>-1||e.indexOf("OPR")>-1},version:function(e){var t,i;return(null===(t=e.match(/Opera\/([\d.]+)/))||void 0===t?void 0:t[1])||(null===(i=e.match(/OPR\/([\d.]+)/))||void 0===i?void 0:i[1])||""}},p={name:"Vivaldi",match:function(e){return e.indexOf("Vivaldi")>-1},version:function(e){var t;return(null===(t=e.match(/Vivaldi\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},_={name:"Yandex",match:function(e){return e.indexOf("YaBrowser")>-1},version:function(e){var t;return(null===(t=e.match(/YaBrowser\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},f={};"undefined"!=typeof globalThis?f=globalThis:"undefined"!=typeof self?f=self:"undefined"!=typeof window?f=window:"undefined"!=typeof global&&(f=global);var m=f,v={name:"Brave",match:function(e){var t;return!(null==m||null===(t=m.navigator)||void 0===t||!t.brave)},version:function(e){var t;return(null===(t=e.match(/Chrome\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},g={name:"Arora",match:function(e){return e.indexOf("Arora")>-1},version:function(e){var t;return(null===(t=e.match(/Arora\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},y={name:"Lunascape",match:function(e){return e.indexOf("Lunascape")>-1},version:function(e){var t;return(null===(t=e.match(/Lunascape[\/\s]([\d.]+)/))||void 0===t?void 0:t[1])||""}},b={name:"QupZilla",match:function(e){return e.indexOf("QupZilla")>-1},version:function(e){var t;return(null===(t=e.match(/QupZilla[\/\s]([\d.]+)/))||void 0===t?void 0:t[1])||""}},E={name:"Coc Coc",match:function(e){return e.indexOf("coc_coc_browser")>-1},version:function(e){var t;return(null===(t=e.match(/coc_coc_browser\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},S={name:"Kindle",match:function(e){return e.indexOf("Kindle")>-1||e.indexOf("Silk/")>-1},version:function(e){var t;return(null===(t=e.match(/Version\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},w={name:"Iceweasel",match:function(e){return e.indexOf("Iceweasel")>-1},version:function(e){var t;return(null===(t=e.match(/Iceweasel\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},T={name:"Konqueror",match:function(e){return e.indexOf("Konqueror")>-1},version:function(e){var t;return(null===(t=e.match(/Konqueror\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},B={name:"Iceape",match:function(e){return e.indexOf("Iceape")>-1},version:function(e){var t;return(null===(t=e.match(/Iceape\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},k={name:"SeaMonkey",match:function(e){return e.indexOf("SeaMonkey")>-1},version:function(e){var t;return(null===(t=e.match(/SeaMonkey\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},C={name:"Epiphany",match:function(e){return e.indexOf("Epiphany")>-1},version:function(e){var t;return(null===(t=e.match(/Epiphany\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},R={name:"Huawei",match:function(e){return e.indexOf("HuaweiBrowser")>-1||e.indexOf("HUAWEI")>-1||e.indexOf("HONOR")>-1||e.indexOf("HBPC/")>-1},version:function(e){var t,i,n;return(null===(t=e.match(/Version\/([\d.]+)/))||void 0===t?void 0:t[1])||(null===(i=e.match(/HuaweiBrowser\/([\d.]+)/))||void 0===i?void 0:i[1])||(null===(n=e.match(/HBPC\/([\d.]+)/))||void 0===n?void 0:n[1])||""}},O={name:"OPPO",match:function(e){return e.indexOf("HeyTapBrowser")>-1||e.indexOf("OPPO")>-1},version:function(e){var t;return(null===(t=e.match(/HeyTapBrowser\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},I={name:"Vivo",match:function(e){return e.indexOf("VivoBrowser")>-1},version:function(e){var t;return(null===(t=e.match(/VivoBrowser\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},x={name:"Xiaomi",match:function(e){return e.indexOf("MiuiBrowser")>-1},version:function(e){var t;return(null===(t=e.match(/MiuiBrowser\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},D={name:"Meizu",match:function(e){return e.indexOf("MZBrowser")>-1},version:function(e){var t;return(null===(t=e.match(/MZBrowser\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},L={name:"Samsung",match:function(e){return e.indexOf("SamsungBrowser")>-1},version:function(e){var t;return(null===(t=e.match(/SamsungBrowser\/([\d.]+)/))||void 0===t?void 0:t[1])||""}};function M(e,t){var i,n=null==m||null===(i=m.navigator)||void 0===i?void 0:i.mimeTypes;for(var r in n)if(n[r][e]&&n[r][e]==t)return n[r];return null}var P={name:"360",match:function(e){var t=!1;if(null!=m&&m.chrome){var i=e.replace(/^.*Chrome\/([\d]+).*$/,"$1");M("type","application/360softmgrplugin")||M("type","application/mozilla-npqihooquicklogin")||i>36&&null!=m&&m.showModalDialog?t=!0:i>45&&!(t=M("type","application/vnd.chromium.remoting-viewer"))&&i>=69&&(t=M("type","application/hwepass2001.installepass2001")||M("type","application/asx"))}return e.indexOf("QihooBrowser")>-1||e.indexOf("QHBrowser")>-1||t},version:function(e){var t;return(null===(t=e.match(/QihooBrowser(HD)?\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},U={name:"360SE",match:function(e){var t,i=!1;return P.match(e)&&(M("type","application/gameplugin")||null!=m&&null!==(t=m.navigator)&&void 0!==t&&null!==(t=t.userAgentData)&&void 0!==t&&t.brands.filter((function(e){return"Not.A/Brand"==e.brand})).length)&&(i=!0),e.indexOf("360SE")>-1||i},version:function(e){return{114:"15.0",108:"14.0",86:"13.0",78:"12.0",69:"11.0",63:"10.0",55:"9.1",45:"8.1",42:"8.0",31:"7.0",21:"6.3"}[parseInt(s.version(e))]||""}},F={name:"360EE",match:function(e){var t=!1;if(M("type","application/cenroll.cenroll.version.1")||M("type","application/hwepass2001.installepass2001"))t=!0;else if(P.match(e)){var i;null!=m&&null!==(i=m.navigator)&&void 0!==i&&null!==(i=i.userAgentData)&&void 0!==i&&i.brands.filter((function(e){return"Not A(Brand"==e.brand})).length&&(t=!0)}return e.indexOf("360EE")>-1||t},version:function(e){return{119:"(X)22.0",108:"14.0",95:"(X)21.0",86:"13.0",78:"12.0",69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[parseInt(s.version(e))]||""}},V={name:"UC",match:function(e){return e.indexOf("UCBrowser")>-1||e.indexOf(" UBrowser")>-1||e.indexOf("UCWEB")>-1},version:function(e){var t;return(null===(t=e.match(/UC?Browser\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},N={name:"QQBrowser",match:function(e){return e.indexOf("QQBrowser")>-1},version:function(e){var t;return(null===(t=e.match(/QQBrowser\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},G={name:"QQ",match:function(e){return e.indexOf("QQ/")>-1},version:function(e){var t;return(null===(t=e.match(/QQ\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},W={name:"Baidu",match:function(e){return e.indexOf("Baidu")>-1||e.indexOf("BIDUBrowser")>-1||e.indexOf("baidubrowser")>-1||e.indexOf("baiduboxapp")>-1||e.indexOf("BaiduD")>-1},version:function(e){var t,i;return(null===(t=e.match(/BIDUBrowser[\s\/]([\d.]+)/))||void 0===t?void 0:t[1])||(null===(i=e.match(/baiduboxapp\/([\d.]+)/))||void 0===i?void 0:i[1])||""}},j={name:"Maxthon",match:function(e){return e.indexOf("Maxthon")>-1||(null==m?void 0:m.maxthon)},version:function(e){var t;return{109:"7.0",78:"6.0"}[parseInt(s.version(e))]||(null===(t=e.match(/Maxthon\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},Q={name:"Sogou",match:function(e){return e.indexOf("MetaSr")>-1||e.indexOf("Sogou")>-1},version:function(e){var t,i;return{94:"12.0",80:"11.0"}[(null===(t=e.match(/Chrome\/([\d]+)/))||void 0===t?void 0:t[1])||""]||(null===(i=e.match(/SogouMobileBrowser\/([\d.]+)/))||void 0===i?void 0:i[1])||""}},z={name:"Liebao",match:function(e){return e.indexOf("LBBROWSER")>-1||e.indexOf("LieBaoFast")>-1||(null==m?void 0:m.liebao)},version:function(e){var t="";e.indexOf("LieBaoFast")>-1&&(t=e.replace(/LieBaoFast\/([\d.]+)/,"$1"));var i=parseInt(s.version(e));return t||{79:"8.0",57:"6.5",49:"6.0",46:"5.9",42:"5.3",39:"5.2",34:"5.0",29:"4.5",21:"4.0"}[i]||""}},H={name:"2345Explorer",match:function(e){var t,i,n=(null==m?void 0:m.chrome)&&((null==m||null===(t=m.chrome)||void 0===t?void 0:t.adblock2345)||(null==m||null===(i=m.chrome)||void 0===i?void 0:i.common2345));return e.indexOf("2345Explorer")>-1||e.indexOf("Mb2345Browser")>-1||e.indexOf("2345chrome")>-1||n},version:function(e){var t,i;return{69:"10.0",55:"9.9"}[parseInt(s.version(e))]||(null===(t=e.match(/2345Explorer\/([\d.]+)/))||void 0===t?void 0:t[1])||(null===(i=e.match(/Mb2345Browser\/([\d.]+)/))||void 0===i?void 0:i[1])||""}},q={name:"115Browser",match:function(e){return e.indexOf("115Browser")>-1},version:function(e){var t;return(null===(t=e.match(/115Browser\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},X={name:"TheWorld",match:function(e){return e.indexOf("TheWorld")>-1},version:function(e){var t;return(null===(t=e.match(/TheWorld ([\d.]+)/))||void 0===t?void 0:t[1])||""}},$={name:"Quark",match:function(e){return e.indexOf("Quark")>-1},version:function(e){var t;return(null===(t=e.match(/Quark\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},Y={name:"Qiyu",match:function(e){return e.indexOf("Qiyu")>-1},version:function(e){var t;return(null===(t=e.match(/Qiyu\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},Z={name:"Wechat",match:function(e){return e.indexOf("MicroMessenger")>-1},version:function(e){var t;return(null===(t=e.match(/MicroMessenger\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},K={name:"WechatWork",match:function(e){return e.indexOf("wxwork/")>-1},version:function(e){var t;return(null===(t=e.match(/wxwork\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},J={name:"Taobao",match:function(e){return e.indexOf("AliApp(TB")>-1},version:function(e){var t;return(null===(t=e.match(/AliApp\(TB\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},ee={name:"Alipay",match:function(e){return e.indexOf("AliApp(AP")>-1},version:function(e){var t;return(null===(t=e.match(/AliApp\(AP\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},te={name:"Weibo",match:function(e){return e.indexOf("Weibo")>-1},version:function(e){var t;return(null===(t=e.match(/weibo__([\d.]+)/))||void 0===t?void 0:t[1])||""}},ie={name:"Douban",match:function(e){return e.indexOf("com.douban.frodo")>-1},version:function(e){var t;return(null===(t=e.match(/com.douban.frodo\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},ne={name:"Suning",match:function(e){return e.indexOf("SNEBUY-APP")>-1},version:function(e){var t;return(null===(t=e.match(/SNEBUY-APP([\d.]+)/))||void 0===t?void 0:t[1])||""}},re={name:"iQIYI",match:function(e){return e.indexOf("IqiyiApp")>-1},version:function(e){var t;return(null===(t=e.match(/IqiyiVersion\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},oe={name:"DingTalk",match:function(e){return e.indexOf("DingTalk")>-1},version:function(e){var t;return(null===(t=e.match(/DingTalk\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},ae={name:"Douyin",match:function(e){return e.indexOf("aweme")>-1},version:function(e){var t;return(null===(t=e.match(/app_version\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},se={name:"Googlebot",match:function(e){return e.indexOf("Googlebot")>-1},version:function(e){var t;return(null===(t=e.match(/Googlebot\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},de={name:"Baiduspider",match:function(e){return e.indexOf("Baiduspider")>-1},version:function(e){var t;return(null===(t=e.match(/Baiduspider(-render)?\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},le={name:"Sogouspider",match:function(e){return e.indexOf("MSIE")>-1||e.indexOf("Trident")>-1},version:function(e){var t;return(null===(t=e.match(/Sogou (\S+) Spider\/([\d.]+)/i))||void 0===t?void 0:t[1])||""}},ce={name:"Bingbot",match:function(e){return e.indexOf("bingbot")>-1},version:function(e){var t;return(null===(t=e.match(/bingbot\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},he={name:"360Spider",match:function(e){return e.indexOf("360Spider")>-1||e.indexOf("HaosouSpider")>-1},version:function(e){return""}},ue={name:"Bytespider",match:function(e){return e.indexOf("Bytespider")>-1},version:function(e){return""}},Ae={name:"YisouSpider",match:function(e){return e.indexOf("YisouSpider")>-1},version:function(e){var t;return(null===(t=e.match(/YisouSpider\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},pe={name:"YodaoBot",match:function(e){return e.indexOf("YodaoBot")>-1},version:function(e){var t;return(null===(t=e.match(/YodaoBot\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},_e={name:"YandexBot",match:function(e){return e.indexOf("YandexBot")>-1},version:function(e){var t;return(null===(t=e.match(/YandexBot\/([\d.]+)/))||void 0===t?void 0:t[1])||""}};function fe(e,t){var i,n=e.userAgent;e.browser="",e.browserVersion="",[a,s,d,l,c,h,u,A,p,_,v,g,y,b,E,S,w,T,B,k,C,R,O,I,x,D,L,P,F,U,V,N,G,W,j,Q,z,H,q,X,$,Y,Z,K,J,ee,te,ie,ne,re,oe,ae,se,de,le,ce,he,ue,Ae,pe,_e].forEach((function(i){i.match(n)&&(e.browser=i.name,e.browserVersion=i.version(n,t))})),"Chrome"==e.browser&&n.match(/\S+Browser/)&&(e.browser=n.match(/\S+Browser/)[0],e.browserVersion=(null===(i=n.replace(/^.*Browser\/([\d.]+).*$/))||void 0===i?void 0:i[1])||"")}var me={name:"Mobile",match:function(e){return e.indexOf("Mobi")>-1||e.indexOf("iPh")>-1||e.indexOf("480")>-1}},ve={name:"Tablet",match:function(e){var t=(null==m?void 0:m.navigator)||{};return e.indexOf("Tablet")>-1||e.indexOf("Pad")>-1||e.indexOf("Nexus 7")>-1||"MacIntel"===t.platform&&t.maxTouchPoints>1}};function ge(e){e.device="Desktop",[me,ve].forEach((function(t){t.match(e.userAgent)&&(e.device=t.name)}))}var ye={name:"WebKit",match:function(e){return e.indexOf("AppleWebKit")>-1}},be={name:"Trident",match:function(e){return e.indexOf("Trident")>-1||e.indexOf("NET CLR")>-1}},Ee={name:"Gecko",match:function(e){return e.indexOf("Gecko/")>-1}},Se={name:"Presto",match:function(e){return e.indexOf("Presto")>-1}},we={name:"KHTML",match:function(e){return e.indexOf("KHTML/")>-1}};function Te(e){e.engine="",[ye,be,Ee,Se,we].forEach((function(t){t.match(e.userAgent)&&(e.engine=t.name)})),"Edge"==e.browser?e.engine=parseInt(e.browserVersion)>75?"Blink":"EdgeHTML":(s.match(e.userAgent)&&"WebKit"==e.engine&&parseInt(s.version(e.userAgent))>27||"Opera"==e.browser&&parseInt(e.browserVersion)>12||"Yandex"==e.browser)&&(e.engine="Blink")}var Be={name:"Windows",match:function(e){return e.indexOf("Windows")>-1},version:function(e){var t,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=(null===(t=e.match(/^Mozilla\/\d.0 \(Windows NT ([\d.]+)[;)].*$/))||void 0===t?void 0:t[1])||"",r={"10.0":"10",6.4:"10 Technical Preview",6.3:"8.1",6.2:"8",6.1:"7","6.0":"Vista",5.2:"XP 64-bit",5.1:"XP",5.01:"2000 SP1","5.0":"2000","4.0":"NT","4.90":"ME"};return i?new Promise((function(e){var t;null!=m&&null!==(t=m.navigator)&&void 0!==t&&t.userAgentData?m.navigator.userAgentData.getHighEntropyValues(["platformVersion"]).then((function(t){var i="";"Windows"===navigator.userAgentData.platform&&(i=parseInt(t.platformVersion.split(".")[0])>=13?"11":"10"),e(i)})):e(r[n]||n)})):r[n]||n}},ke={name:"Linux",match:function(e){return e.indexOf("Linux")>-1||e.indexOf("X11")>-1},version:function(e){return""}},Ce={name:"macOS",match:function(e){return e.indexOf("Macintosh")>-1},version:function(e){var t;return(null===(t=e.match(/Mac OS X -?([\d_]+)/))||void 0===t?void 0:t[1].replace(/_/g,"."))||""}},Re={name:"Android",match:function(e){return e.indexOf("Android")>-1||e.indexOf("Adr")>-1},version:function(e){var t;return(null===(t=e.match(/Android ([\d.]+);/))||void 0===t?void 0:t[1])||""}},Oe={name:"HarmonyOS",match:function(e){return e.indexOf("HarmonyOS")>-1},version:function(e){var t,i=+(null===(t=e.match(/HMSCore (\d+.\d+)/))||void 0===t?void 0:t[1])||0;return i>=6.1?"4.0":i>=6?"3.0":i>=5?"2.0":i>=4?"1.0":""}},Ie={name:"Ubuntu",match:function(e){return e.indexOf("Ubuntu")>-1},version:function(e){return""}},xe={name:"FreeBSD",match:function(e){return e.indexOf("FreeBSD")>-1},version:function(e){return""}},De={name:"Debian",match:function(e){return e.indexOf("Debian")>-1},version:function(e){var t;return(null===(t=e.match(/Debian\/([\d.]+)/))||void 0===t?void 0:t[1])||""}},Le={name:"iOS",match:function(e){return e.indexOf("like Mac OS X")>-1},version:function(e){var t;return(null===(t=e.match(/OS ([\d_]+) like/))||void 0===t?void 0:t[1].replace(/_/g,"."))||""}},Me={name:"Windows Phone",match:function(e){return e.indexOf("IEMobile")>-1||e.indexOf("Windows Phone")>-1},version:function(e){var t;return(null===(t=e.match(/Windows Phone( OS)? ([\d.]+);/))||void 0===t?void 0:t[2])||""}},Pe={name:"BlackBerry",match:function(e){return e.indexOf("BlackBerry")>-1||e.indexOf("RIM")>-1},version:function(e){return""}},Ue={name:"MeeGo",match:function(e){return e.indexOf("MeeGo")>-1},version:function(e){return""}},Fe={name:"Symbian",match:function(e){return e.indexOf("Symbian")>-1},version:function(e){return""}},Ve={name:"Chrome OS",match:function(e){return e.indexOf("CrOS")>-1},version:function(e){var t,i;return(null===(t=e.match(/MSIE ([\d.]+)/))||void 0===t?void 0:t[1])||(null===(i=e.match(/rv:([\d.]+)/))||void 0===i?void 0:i[1])||""}},Ne={name:"WebOS",match:function(e){return e.indexOf("hpwOS")>-1},version:function(e){var t;return(null===(t=e.match(/hpwOS\/([\d.]+);/))||void 0===t?void 0:t[1])||""}};function Ge(e,t){var i,n=e.userAgent;e.system="",e.systemVersion="",[Be,ke,Ce,Re,Oe,Ie,xe,De,Le,Me,Pe,Ue,Fe,Ve,Ne].forEach((function(i){i.match(n)&&(e.system=i.name,e.systemVersion=i.version(n,t))})),e.platform="",n.match(/(Win64|x64|WOW64|x86_64)/i)?e.platform="Win64":n.match(/(Win32|x86|WOW32)/i)?e.platform="Win32":n.match(/aarch64|arm64/)?e.platform="ARM64":n.match(/arm32/)?e.platform="ARM32":null!=m&&null!==(i=m.navigator)&&void 0!==i&&i.platform&&(e.platform=m.navigator.platform),e.architecture="";var r,o=n+"|"+e.platform;o.match(/armv\d+/i)||o.match(/aarch64/)?e.architecture="arm":o.match(/loongarch64/)?e.architecture="loongarch":e.architecture="x86",e.bitness=n.match(/Win64|x64|WOW64|x86_64|aarch64|arm64|loongarch64/i)?64:32,t&&null!=m&&null!==(r=m.navigator)&&void 0!==r&&r.userAgentData&&(e.architecture=navigator.userAgentData.getHighEntropyValues(["architecture"]).then((function(e){return e.architecture})),e.bitness=navigator.userAgentData.getHighEntropyValues(["bitness"]).then((function(e){return+e.bitness})))}function We(e){if(e.gpu="",e.gpuModel="",null!=m&&m.document){var t,i,n=m.document.createElement("canvas").getContext("experimental-webgl"),r=n.getExtension("WEBGL_debug_renderer_info"),o=n.getParameter(r.UNMASKED_RENDERER_WEBGL);e.gpu=(null===(t=o.match(/ANGLE \((.+?),/))||void 0===t?void 0:t[1])||"",e.gpuModel=(null===(i=o.match(/, (.+?) (\(|vs_)/))||void 0===i?void 0:i[1])||""}}function je(e){e.language=function(e,t){var i=(null==m||null===(e=m.navigator)||void 0===e?void 0:e.browserLanguage)||(null==m||null===(t=m.navigator)||void 0===t?void 0:t.language);if("string"!=typeof i)return"Unknown language";var n=i.split("-");return n[1]&&(n[1]=n[1].toUpperCase()),n.join("_")}()}function Qe(e){var t,i,n;e.network=(i="unknown",(n=null==m||null===(t=m.navigator)||void 0===t?void 0:t.connection)&&("2"!=(i=n.type||n.effectiveType)&&"unknown"!=i||(i="wifi")),i)}function ze(e){e.isWebview=e.userAgent.indexOf("; wv)")>-1,e.isRobot=["Googlebot","Baiduspider","Sogouspider","Bingbot","360Spider","Bytespider","YandexBot"].includes(e.browser)}var He=function(e){var t,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n={};return n.userAgent=e||(null==m||null===(t=m.navigator)||void 0===t?void 0:t.userAgent)||"",[fe,ge,Te,Ge,We,je,Qe,ze].forEach((function(e){return e(n,i)})),n};function qe(e){var t=He(e);for(var i in t)"object"==o(t[i])&&(t[i]="");return t}qe.getInfo=function(e){var t=He(e,!0),i=Object.keys(t),n=Object.values(t).map((function(e){return"object"==o(e)?e:Promise.resolve(e)}));return Promise.all(n).then((function(e){var t={};return e.forEach((function(e,n){t[i[n]]=e})),t}))};const Xe=0,$e=1,Ye="flv",Ze="m7s",Ke={videoBuffer:200,videoBufferDelay:1e3,scaleMode:1,debug:!1,loadingTimeout:10,heartTimeout:5,timeout:10,loadingTimeoutReplay:!0,heartTimeoutReplay:!0,loadingTimeoutReplayTimes:3,heartTimeoutReplayTimes:3,keepScreenOn:!1,isNotMute:!1,hasAudio:!0,volume:.5,hasVideo:!0,decoder:"decoder.js",staticPath:"",url:"",rotate:0,forceNoOffscreen:!0,protocol:$e,demuxType:Ye,useMSE:!1,autoWasm:!0,wasmDecodeErrorReplay:!0,openWebglAlignment:!1,wasmDecodeAudioSyncVideo:!1,useWebFullScreen:!0,loggerOptions:{level:"INFO"}},Je="init",et="initVideo",tt="render",it="playAudio",nt="initAudio",rt="audioCode",ot="videoCode",at="wasmError",st="Invalid NAL unit size",dt=1,lt=2,ct=8,ht=9,ut="init",At="decode",pt="audioDecode",_t="close",ft="updateConfig",mt={fullscreen:"fullscreen$2",webFullscreen:"webFullscreen",decoderWorkerInit:"decoderWorkerInit",play:"play",playing:"playing",pause:"pause",mute:"mute",load:"load",loading:"loading",videoInfo:"videoInfo",timeUpdate:"timeUpdate",audioInfo:"audioInfo",log:"log",error:"error",kBps:"kBps",timeout:"timeout",delayTimeout:"delayTimeout",loadingTimeout:"loadingTimeout",stats:"stats",performance:"performance",buffer:"buffer",videoFrame:"videoFrame",start:"start",metadata:"metadata",resize:"resize",streamEnd:"streamEnd",streamSuccess:"streamSuccess",streamMessage:"streamMessage",streamError:"streamError",volumechange:"volumechange",destroy:"destroy",mseSourceOpen:"mseSourceOpen",mseSourceClose:"mseSourceClose",mseSourceBufferError:"mseSourceBufferError",mseSourceBufferBusy:"mseSourceBufferBusy",mseSourceBufferFull:"mseSourceBufferFull",videoWaiting:"videoWaiting",videoTimeUpdate:"videoTimeUpdate",videoSyncAudio:"videoSyncAudio",playToRenderTimes:"playToRenderTimes"},vt={load:mt.load,timeUpdate:mt.timeUpdate,videoInfo:mt.videoInfo,audioInfo:mt.audioInfo,error:mt.error,kBps:mt.kBps,log:mt.log,start:mt.start,timeout:mt.timeout,loadingTimeout:mt.loadingTimeout,delayTimeout:mt.delayTimeout,fullscreen:"fullscreen",webFullscreen:mt.webFullscreen,play:mt.play,pause:mt.pause,mute:mt.mute,stats:mt.stats,volumechange:mt.volumechange,performance:mt.performance,playToRenderTimes:mt.playToRenderTimes},gt={playError:"playIsNotPauseOrUrlIsNull",fetchError:"NetworkError",websocketError:"websocketError",webcodecsH265NotSupport:"webcodecsH265NotSupport",webcodecsDecodeError:"webcodecsDecodeError",webcodecsWidthOrHeightChange:"webcodecsWidthOrHeightChange",mediaSourceH265NotSupport:"mediaSourceH265NotSupport",mediaSourceFull:mt.mseSourceBufferFull,mseSourceBufferError:mt.mseSourceBufferError,mediaSourceAppendBufferError:"mediaSourceAppendBufferError",mediaSourceBufferListLarge:"mediaSourceBufferListLarge",mediaSourceAppendBufferEndTimeout:"mediaSourceAppendBufferEndTimeout",wasmDecodeError:"wasmDecodeError",webglAlignmentError:"webglAlignmentError"},yt="notConnect",bt="open",Et="close",St="error",wt={download:"download",base64:"base64",blob:"blob"},Tt={7:"H264(AVC)",12:"H265(HEVC)"},Bt={10:"AAC",7:"ALAW",8:"MULAW"},kt={full:0,auto:1,fullAuto:2},Ct="webcodecs",Rt="webgl",Ot="offscreen",It=1e3,xt="The user aborted a request",Dt="AbortError",Lt="AbortError";function Mt(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Pt={exports:{}};!function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},i=e.exports,n=function(){for(var e,i=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],n=0,r=i.length,o={};n{Gt(e,i,t[i])})),e.style[t]=i,e}function Wt(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function jt(e){let t=0,i=Wt();return n=>{t+=n;const r=Wt(),o=r-i;o>=1e3&&(e(t/o*1e3),i=r,t=0)}}function Qt(){return/phone|pad|pod|iphone|ipod|ios|ipad|android|mobile|blackberry|iemobile|mqqbrowser|juc|wosbrowser|webos|symbian|windows phone|opera mini|huaweibrowser/i.test(window.navigator.userAgent.toLowerCase())}function zt(){return Ut.isFullscreen}function Ht(e){return null==e}function qt(e){return!Ht(e)}function Xt(e){const t=e||window.event;return t.target||t.srcElement}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();class $t{constructor(){}on(e,t,i){const n=this.e||(this.e={});return(n[e]||(n[e]=[])).push({fn:t,ctx:i}),this}once(e,t,i){const n=this;function r(...o){n.off(e,r),t.apply(i,o)}return r._=t,this.on(e,r,i)}emit(e,...t){const i=((this.e||(this.e={}))[e]||[]).slice();for(let e=0;e{delete i[e]})),void delete this.e;const n=i[e],r=[];if(n&&t)for(let e=0,i=n.length;e=200&&t.status<=299}function ei(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(t){const i=document.createEvent("MouseEvents");i.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(i)}}const ti=Zt.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent);var ii="object"!=typeof window||window!==Zt?function(){}:"download"in HTMLAnchorElement.prototype&&!ti?function(e,t,i){const n=Zt.URL||Zt.webkitURL,r=document.createElementNS("http://www.w3.org/1999/xhtml","a");t=t||e.name||"download",r.download=t,r.rel="noopener","string"==typeof e?(r.href=e,r.origin!==location.origin?Jt(r.href)?Kt(e,t,i):ei(r,r.target="_blank"):ei(r)):(r.href=n.createObjectURL(e),setTimeout((function(){n.revokeObjectURL(r.href)}),4e4),setTimeout((function(){ei(r)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,t,i){if(t=t||e.name||"download","string"==typeof e)if(Jt(e))Kt(e,t,i);else{const t=document.createElement("a");t.href=e,t.target="_blank",setTimeout((function(){ei(t)}))}else navigator.msSaveOrOpenBlob(function(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e}(e,i),t)}:function(e,t,i,n){if((n=n||open("","_blank"))&&(n.document.title=n.document.body.innerText="downloading..."),"string"==typeof e)return Kt(e,t,i);const r="application/octet-stream"===e.type,o=/constructor/i.test(Zt.HTMLElement)||Zt.safari,a=/CriOS\/[\d]+/.test(navigator.userAgent);if((a||r&&o||ti)&&"undefined"!=typeof FileReader){const t=new FileReader;t.onloadend=function(){let e=t.result;e=a?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),n?n.location.href=e:location=e,n=null},t.readAsDataURL(e)}else{const t=Zt.URL||Zt.webkitURL,i=t.createObjectURL(e);n?n.location=i:location.href=i,n=null,setTimeout((function(){t.revokeObjectURL(i)}),4e4)}};class ni extends Yt{constructor(e){super(),this.player=e;const t=document.createElement("canvas");t.style.position="absolute",t.style.top=0,t.style.left=0,this.$videoElement=t,e.$container.appendChild(this.$videoElement),this.context2D=null,this.contextGl=null,this.contextGlRender=null,this.contextGlDestroy=null,this.bitmaprenderer=null,this.renderType=null,this.videoInfo={width:"",height:"",encType:""},this._initCanvasRender(),this._contextmenuEvent=e=>{e.target===this.$videoElement&&e.preventDefault()},document.addEventListener("contextmenu",this._contextmenuEvent),this.player.debug.log("CanvasVideo","init")}destroy(){super.destroy(),this.contextGl&&(this.contextGl=null),this.context2D&&(this.context2D=null),this.contextGlRender&&(this.contextGlDestroy&&this.contextGlDestroy(),this.contextGlDestroy=null,this.contextGlRender=null),this.bitmaprenderer&&(this.bitmaprenderer=null),this._contextmenuEvent&&(document.removeEventListener("contextmenu",this._contextmenuEvent),this._contextmenuEvent=null),this.renderType=null,this.player.debug.log("CanvasVideoLoader","destroy")}_initContextGl(){this.contextGl=function(e){let t=null;const i=["webgl","experimental-webgl","moz-webgl","webkit-3d"];let n=0;for(;!t&&n{var i=["attribute vec4 vertexPos;","attribute vec4 texturePos;","varying vec2 textureCoord;","void main()","{","gl_Position = vertexPos;","textureCoord = texturePos.xy;","}"].join("\n"),n=["precision highp float;","varying highp vec2 textureCoord;","uniform sampler2D ySampler;","uniform sampler2D uSampler;","uniform sampler2D vSampler;","const mat4 YUV2RGB = mat4","(","1.1643828125, 0, 1.59602734375, -.87078515625,","1.1643828125, -.39176171875, -.81296875, .52959375,","1.1643828125, 2.017234375, 0, -1.081390625,","0, 0, 0, 1",");","void main(void) {","highp float y = texture2D(ySampler, textureCoord).r;","highp float u = texture2D(uSampler, textureCoord).r;","highp float v = texture2D(vSampler, textureCoord).r;","gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;","}"].join("\n");t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);var r=e.createShader(e.VERTEX_SHADER);e.shaderSource(r,i),e.compileShader(r),e.getShaderParameter(r,e.COMPILE_STATUS);var o=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(o,n),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS);var a=e.createProgram();e.attachShader(a,r),e.attachShader(a,o),e.linkProgram(a),e.getProgramParameter(a,e.LINK_STATUS),e.useProgram(a);var s=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,s),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),e.STATIC_DRAW);var d=e.getAttribLocation(a,"vertexPos");e.enableVertexAttribArray(d),e.vertexAttribPointer(d,2,e.FLOAT,!1,0,0);var l=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,l),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),e.STATIC_DRAW);var c=e.getAttribLocation(a,"texturePos");function h(t,i){var n=e.createTexture();return e.bindTexture(e.TEXTURE_2D,n),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),e.uniform1i(e.getUniformLocation(a,t),i),n}e.enableVertexAttribArray(c),e.vertexAttribPointer(c,2,e.FLOAT,!1,0,0);var u=h("ySampler",0),A=h("uSampler",1),p=h("vSampler",2);return{render:function(t,i,n,r,o){e.viewport(0,0,t,i),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,u),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t,i,0,e.LUMINANCE,e.UNSIGNED_BYTE,n),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,A),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,r),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,p),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,o),e.drawArrays(e.TRIANGLE_STRIP,0,4)},destroy:function(){try{e.deleteProgram(a),e.deleteBuffer(s),e.deleteBuffer(l),e.deleteTexture(u),e.deleteTexture(A),e.deleteTexture(p)}catch(e){}}}})(this.contextGl,this.player._opt.openWebglAlignment);this.contextGlRender=e.render,this.contextGlDestroy=e.destroy}_initContext2D(){this.context2D=this.$videoElement.getContext("2d")}_initCanvasRender(){this._supportOffscreen()?(this.renderType=Ot,this._bindOffscreen()):(this.renderType=Rt,this._initContextGl())}_supportOffscreen(){return"function"==typeof this.$videoElement.transferControlToOffscreen&&this.player._opt.useOffscreen}_bindOffscreen(){this.bitmaprenderer=this.$videoElement.getContext("bitmaprenderer")}initCanvasViewSize(){this.$videoElement.width=this.videoInfo.width,this.$videoElement.height=this.videoInfo.height,this.resize()}render(e){switch(this.player.videoTimestamp=e.ts,this.renderType){case Ot:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case Rt:this.contextGlRender(this.$videoElement.width,this.$videoElement.height,e.output[0],e.output[1],e.output[2]);break;case Ct:this.context2D.drawImage(e.videoFrame,0,0,this.$videoElement.width,this.$videoElement.height),(t=e.videoFrame).close?t.close():t.destroy&&t.destroy()}var t}screenshot(e,t,i,n){e=e||Nt(),n=n||wt.download;const r={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let o=.92;!r[t]&&wt[t]&&(n=t,t="png",i=void 0),"string"==typeof i&&(n=i,i=void 0),void 0!==i&&(o=Number(i));const a=this.$videoElement.toDataURL(r[t]||r.png,o);if(n===wt.base64)return a;{const t=Vt(a);if(n===wt.blob)return t;n===wt.download&&ii(t,e)}}clearView(){switch(this.renderType){case Ot:(function(e,t){const i=document.createElement("canvas");return i.width=e,i.height=t,window.createImageBitmap(i,0,0,e,t)})(this.$videoElement.width,this.$videoElement.height).then((e=>{this.bitmaprenderer.transferFromImageBitmap(e)}));break;case Rt:this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);break;case Ct:this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height)}}resize(){this.player.debug.log("canvasVideo","resize");const e=this.player._opt,t=this.player.width,i=this.player.height;let n=this.$videoElement.width,r=this.$videoElement.height;const o=e.rotate,a=(t-n)/2,s=(i-r)/2;270!==o&&90!==o||(n=this.$videoElement.height,r=this.$videoElement.width);const d=t/n,l=i/r;let c=d>l?l:d;e.scaleMode!==kt.auto&&d!==l&&(c=d+","+l),e.scaleMode===kt.fullAuto&&(c=d>l?d:l);let h="scale("+c+")";o&&(h+=" rotate("+o+"deg)"),this.$videoElement.style.transform=h,this.$videoElement.style.left=a+"px",this.$videoElement.style.top=s+"px"}}class ri extends $t{constructor(e){super(),this.bufferList=[],this.player=e,this.scriptNode=null,this.hasInitScriptNode=!1,this.audioContextChannel=null,this.audioContext=new(window.AudioContext||window.webkitAudioContext),this.gainNode=this.audioContext.createGain();const t=this.audioContext.createBufferSource();t.buffer=this.audioContext.createBuffer(1,1,22050),t.connect(this.audioContext.destination),t.noteOn?t.noteOn(0):t.start(0),this.audioBufferSourceNode=t,this.mediaStreamAudioDestinationNode=this.audioContext.createMediaStreamDestination(),this.audioEnabled(!0),this.gainNode.gain.value=0,this.playing=!1,this.audioSyncVideoOption={diff:null},this.audioInfo={encType:"",channels:"",sampleRate:""},this.init=!1,this.hasAudio=!1,this.on(mt.videoSyncAudio,(e=>{this.audioSyncVideoOption=e})),this.player.debug.log("AudioContext","init")}resetInit(){this.init=!1,this.audioInfo={encType:"",channels:"",sampleRate:""}}destroy(){this.closeAudio(),this.resetInit(),this.audioContext.close(),this.audioContext=null,this.gainNode=null,this.hasAudio=!1,this.playing=!1,this.scriptNode&&(this.scriptNode.onaudioprocess=Ft,this.scriptNode=null),this.audioBufferSourceNode=null,this.mediaStreamAudioDestinationNode=null,this.hasInitScriptNode=!1,this.audioSyncVideoOption={diff:null},this.off(),this.player.debug.log("AudioContext","destroy")}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encType=Bt[e.encTypeCode]),e.channels&&(this.audioInfo.channels=e.channels),e.sampleRate&&(this.audioInfo.sampleRate=e.sampleRate),this.audioInfo.sampleRate&&this.audioInfo.channels&&this.audioInfo.encType&&!this.init&&(this.player.emit(mt.audioInfo,this.audioInfo),this.init=!0)}get isPlaying(){return this.playing}get isMute(){return 0===this.gainNode.gain.value}get volume(){return this.gainNode.gain.value}get bufferSize(){return this.bufferList.length}initScriptNode(){if(this.playing=!0,this.hasInitScriptNode)return;const e=this.audioInfo.channels,t=this.audioContext.createScriptProcessor(1024,0,e);t.onaudioprocess=t=>{const i=t.outputBuffer;if(this.bufferList.length&&this.playing){if(!this.player._opt.useWCS&&!this.player._opt.useMSE&&this.player._opt.wasmDecodeAudioSyncVideo){if(this.audioSyncVideoOption.diff>It)return void this.player.debug.warn("AudioContext",`audioSyncVideoOption more than diff :${this.audioSyncVideoOption.diff}, waiting`);if(this.audioSyncVideoOption.diff<-1e3){this.player.debug.warn("AudioContext",`audioSyncVideoOption less than diff :${this.audioSyncVideoOption.diff}, dropping`);let e=this.bufferList.shift();for(;e.ts-this.player.videoTimestamp<-1e3&&this.bufferList.length>0;)e=this.bufferList.shift();if(0===this.bufferList.length)return}}if(0===this.bufferList.length)return;const t=this.bufferList.shift();t&&t.ts&&(this.player.audioTimestamp=t.ts);for(let n=0;n20&&(this.player.debug.warn("AudioContext",`bufferList is large: ${this.bufferList.length}`),this.bufferList.length>50&&this.bufferList.shift()))}pause(){this.audioSyncVideoOption={diff:null},this.playing=!1,this.clear()}resume(){this.playing=!0}}class oi{constructor(e){return new(oi.getLoaderFactory())(e)}static getLoaderFactory(){return ri}}class ai extends $t{constructor(e){super(),this.player=e,this.playing=!1,this.abortController=new AbortController,this.streamRate=jt((e=>{})),e.debug.log("FetchStream","init")}destroy(){this.abort(),this.off(),this.streamRate=null,this.player.debug.log("FetchStream","destroy")}fetchStream(e,t={}){const{demux:i}=this.player;this.player._times.streamStart=Nt();const n=Object.assign({signal:this.abortController.signal},{headers:t.headers||{}});fetch(e,n).then((e=>{const t=e.body.getReader();this.emit(mt.streamSuccess);const n=()=>{t.read().then((({done:e,value:t})=>{e?i.close():(this.streamRate&&this.streamRate(t.byteLength),i.dispatch(t),n())})).catch((e=>{i.close();const n=e.toString();-1===n.indexOf(xt)&&-1===n.indexOf(Dt)&&e.name!==Lt&&(this.abort(),t.cancel(),this.emit(gt.fetchError,e),this.player.emit(mt.error,gt.fetchError))}))};n()})).catch((e=>{"AbortError"!==e.name&&(i.close(),this.abort(),this.emit(gt.fetchError,e),this.player.emit(mt.error,gt.fetchError))}))}abort(){this.abortController&&(this.abortController.abort(),this.abortController=null)}}class si extends $t{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=yt,this.wsUrl=null,this.streamRate=jt((e=>{})),e.debug.log("WebsocketLoader","init")}destroy(){this.socket&&(this.socket.close(1e3,"Client disconnecting"),this.socket=null),this.socketStatus=yt,this.streamRate=null,this.wsUrl=null,this.off(),this.player.debug.log("websocketLoader","destroy")}_createWebSocket(){const e=this.player,{debug:t,events:{proxy:i},demux:n}=e;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer",i(this.socket,"open",(()=>{this.emit(mt.streamSuccess),t.log("websocketLoader","socket open"),this.socketStatus=bt})),i(this.socket,"message",(e=>{this.streamRate&&this.streamRate(e.data.byteLength),this._handleMessage(e.data)})),i(this.socket,"close",(()=>{t.log("websocketLoader","socket close"),this.emit(mt.streamEnd),this.socketStatus=Et})),i(this.socket,"error",(e=>{t.log("websocketLoader","socket error"),this.emit(gt.websocketError,e),this.player.emit(mt.error,gt.websocketError),this.socketStatus=St,n.close(),t.log("websocketLoader","socket error:",e)}))}_handleMessage(e){const{demux:t}=this.player;t?t.dispatch(e):this.player.debug.warn("websocketLoader","websocket handle message demux is null")}fetchStream(e,t){this.player._times.streamStart=Nt(),this.wsUrl=e,this._createWebSocket()}}class di{constructor(e){return new(di.getLoaderFactory(e._opt.protocol))(e)}static getLoaderFactory(e){return e===$e?ai:e===Xe?si:void 0}}class li{constructor(e){this.player=e,this.decoderWorker=new Worker((""===e._opt.staticPath?"":function(e,t){void 0===t&&(t="");var i=/^(https?:\/\/|^\/\/)/;return i.test(e)?e:(e=e.replace(/\/+/g,"/"),t=i.test(t||"")?t:window.location.href,new URL(e,t).href)}(e._opt.staticPath))+e._opt.decoder),this._initDecoderWorker(),e.debug.log("decoderWorker","init")}destroy(){this.decoderWorker.postMessage({cmd:_t}),this.decoderWorker.terminate(),this.decoderWorker=null,this.player.debug.log("decoderWorker","destroy")}_initDecoderWorker(){const{debug:e,events:{proxy:t}}=this.player;this.decoderWorker.onmessage=t=>{var i,n,r,o,a,s;const d=t.data;switch(d.cmd){case Je:e.log("decoderWorker","onmessage:",Je),this.player.loaded||this.player.emit(mt.load),this.player.emit(mt.decoderWorkerInit),this._initWork();break;case ot:e.log("decoderWorker","onmessage:",ot,d.code),this.player._times.decodeStart||(this.player._times.decodeStart=Nt()),this.player.video.updateVideoInfo({encTypeCode:d.code});break;case rt:e.log("decoderWorker","onmessage:",rt,d.code),null===(i=this.player)||void 0===i||null===(i=i.audio)||void 0===i||null===(n=i.updateAudioInfo)||void 0===n||n.call(i,{encTypeCode:d.code});break;case et:if(e.log("decoderWorker","onmessage:",et,`width:${d.w},height:${d.h}`),null===(r=this.player)||void 0===r||null===(r=r.video)||void 0===r||null===(o=r.updateVideoInfo)||void 0===o||o.call(r,{width:d.w,height:d.h}),!this.player._opt.openWebglAlignment&&d.w/2%4!=0)return void this.player.emit(gt.webglAlignmentError);this.player.video.initCanvasViewSize();break;case nt:e.log("decoderWorker","onmessage:",nt,`channels:${d.channels},sampleRate:${d.sampleRate}`),this.player.audio&&(this.player.audio.updateAudioInfo(d),this.player.audio.initScriptNode(d));break;case tt:this.player.handleRender(),this.player.video.render(d),this.player.emit(mt.timeUpdate,d.ts),this.player.updateStats({fps:!0,ts:d.ts,buf:d.delay}),this.player._times.videoStart||(this.player._times.videoStart=Nt(),this.player.handlePlayToRenderTimes());break;case it:this.player.playing&&this.player.audio&&this.player.audio.play(d.buffer,d.ts);break;case at:d.message&&-1!==d.message.indexOf(st)&&this.player.emitError(gt.wasmDecodeError);break;default:null===(a=(s=this.player)[d.cmd])||void 0===a||a.call(s,d)}}}_initWork(){var e;const t={debug:this.player._opt.debug,useOffscreen:this.player._opt.useOffscreen,useWCS:this.player._opt.useWCS,videoBuffer:this.player._opt.videoBuffer,videoBufferDelay:this.player._opt.videoBufferDelay,openWebglAlignment:this.player._opt.openWebglAlignment};this.decoderWorker.postMessage({cmd:ut,opt:JSON.stringify(t),sampleRate:(null===(e=this.player)||void 0===e||null===(e=e.audio)||void 0===e||null===(e=e.audioContext)||void 0===e?void 0:e.sampleRate)||0})}decodeVideo(e,t,i){const n={type:lt,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:At,buffer:e,options:n},[e.buffer])}decodeAudio(e,t){this.player._opt.useWCS||this.player._opt.useMSE?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t)}_decodeAudio(e,t){const i={type:dt,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:At,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:pt,buffer:e,ts:Math.max(t,0)},[e.buffer])}updateWorkConfig(e){this.decoderWorker.postMessage({cmd:ft,key:e.key,value:e.value})}}class ci extends $t{constructor(e){super(),this.player=e,this.stopId=null,this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.initInterval()}destroy(){this.stopId&&(clearInterval(this.stopId),this.stopId=null),this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.off(),this.player.debug.log("CommonDemux","destroy")}getDelay(e){if(!e)return-1;if(this.firstTimestamp){if(e){const t=Date.now()-this.startTimestamp,i=e-this.firstTimestamp;this.delay=t>=i?t-i:i-t}}else this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1;return this.delay}resetDelay(){this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.dropping=!1}initInterval(){this.player.debug.log("common dumex","init Interval");const e=()=>{let e;const t=this.player._opt.videoBuffer,i=this.player._opt.videoBufferDelay;if(this.bufferList.length)if(this.dropping){for(e=this.bufferList.shift(),e.type===dt&&0===e.payload[1]&&this._doDecoderDecode(e);!e.isIFrame&&this.bufferList.length;)e=this.bufferList.shift(),e.type===dt&&0===e.payload[1]&&this._doDecoderDecode(e);e.isIFrame&&this.getDelay(e.ts)<=Math.min(t,200)&&(this.dropping=!1,this._doDecoderDecode(e))}else e=this.bufferList[0],-1===this.getDelay(e.ts)?(this.bufferList.shift(),this._doDecoderDecode(e)):this.delay>t+i?(this.resetDelay(),this.dropping=!0):(e=this.bufferList[0],this.getDelay(e.ts)>t&&(this.bufferList.shift(),this._doDecoderDecode(e)))};e(),this.stopId=setInterval(e,10)}_doDecode(e,t,i,n,r){const o=this.player,a={ts:i,cts:r,type:t,isIFrame:!1};var s,d;if(o._opt.useWCS&&!o._opt.useOffscreen)t===lt&&(a.isIFrame=n),this.pushBuffer(e,a);else if(t===lt)null==o||null===(s=o.decoderWorker)||void 0===s||null===(d=s.decodeVideo)||void 0===d||d.call(s,e,i,n);else if(t===dt){var l,c;if(o._opt.hasAudio)null==o||null===(l=o.decoderWorker)||void 0===l||null===(c=l.decodeAudio)||void 0===c||c.call(l,e,i)}}_doDecoderDecode(e){const t=this.player;var i,n;e.type===dt?t._opt.hasAudio&&(null===(i=t.decoderWorker)||void 0===i||null===(n=i.decodeAudio)||void 0===n||n.call(i,e.payload,e.ts)):e.type}pushBuffer(e,t){t.type===dt?this.bufferList.push({ts:t.ts,payload:e,type:dt}):t.type===lt&&this.bufferList.push({ts:t.ts,cts:t.cts,payload:e,type:lt,isIFrame:t.isIFrame})}close(){}}class hi extends ci{constructor(e){super(e),this.input=this._inputFlv(),this.flvDemux=this.dispatchFlvData(this.input),e.debug.log("FlvDemux","init")}destroy(){super.destroy(),this.input=null,this.flvDemux=null,this.player.debug.log("FlvDemux","destroy")}dispatch(e){this.flvDemux(e)}*_inputFlv(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e),n=this.player;for(;;){t[3]=0;const e=yield 15,r=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const o=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8];let a=i[0];16777215===a&&(t[3]=e[11],a=i[0]);const s=yield o;switch(r){case ct:n._opt.hasAudio&&(n.updateStats({abps:s.byteLength}),s.byteLength>0&&this._doDecode(s,dt,a));break;case ht:if(n._times.demuxStart||(n._times.demuxStart=Nt()),n._opt.hasVideo){n.updateStats({vbps:s.byteLength});const e=s[0]>>4==1;if(s.byteLength>0){i[0]=s[4],i[1]=s[3],i[2]=s[2],i[3]=0;const t=i[0];this._doDecode(s,lt,a,e,t)}}}}}dispatchFlvData(e){let t=e.next(),i=null;return n=>{let r=new Uint8Array(n);if(i){const e=new Uint8Array(i.length+r.length);e.set(i),e.set(r,i.length),r=e,i=null}for(;r.length>=t.value;){const i=r.slice(t.value);t=e.next(r.slice(0,t.value)),r=i}r.length>0&&(i=r)}}close(){var e,t;null===(e=this.input)||void 0===e||null===(t=e.return)||void 0===t||t.call(e,null)}}class ui extends ci{constructor(e){super(e),e.debug.log("M7sDemux","init")}destroy(){super.destroy(),this.player.debug.log("M7sDemux","destroy"),this.player=null}dispatch(e){const t=this.player,i=new DataView(e),n=i.getUint8(0),r=i.getUint32(1,!1);switch(n){case dt:if(t._opt.hasAudio){const i=new Uint8Array(e,5);t.updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,n,r)}break;case lt:if(t._opt.hasVideo)if(t._times.demuxStart||(t._times.demuxStart=Nt()),i.byteLength>5){const o=new Uint8Array(e,5),a=i.getUint8(5)>>4==1;t.updateStats({vbps:o.byteLength}),o.byteLength>0&&this._doDecode(o,n,r,a)}else this.player.debug.warn("M7sDemux","dispatch","dv byteLength is",i.byteLength)}}}class Ai{constructor(e){return new(Ai.getLoaderFactory(e._opt.demuxType))(e)}static getLoaderFactory(e){return e===Ze?ui:e===Ye?hi:void 0}}const pi=()=>"undefined"!=typeof navigator&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream,_i=()=>"wakeLock"in navigator;class fi{constructor(e){if(this.player=e,this.enabled=!1,_i()){this._wakeLock=null;const e=()=>{null!==this._wakeLock&&"visible"===document.visibilityState&&this.enable()};document.addEventListener("visibilitychange",e),document.addEventListener("fullscreenchange",e)}else pi()?this.noSleepTimer=null:(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm","data:video/webm;base64,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"),this._addSourceToVideo(this.noSleepVideo,"mp4","data:video/mp4;base64,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"),this.noSleepVideo.addEventListener("loadedmetadata",(()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",(()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())}))})))}_addSourceToVideo(e,t,i){const n=document.createElement("source");n.src=i,n.type=`video/${t}`,e.appendChild(n)}get isEnabled(){return this.enabled}enable(){const e=this.player.debug;if(_i())return navigator.wakeLock.request("screen").then((t=>{this._wakeLock=t,this.enabled=!0,e.log("wakeLock","Wake Lock active."),this._wakeLock.addEventListener("release",(()=>{e.log("wakeLock","Wake Lock released.")}))})).catch((t=>{throw this.enabled=!1,e.error("wakeLock",`${t.name}, ${t.message}`),t}));if(pi())return this.disable(),this.noSleepTimer=window.setInterval((()=>{document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))}),15e3),this.enabled=!0,Promise.resolve();return this.noSleepVideo.play().then((e=>(this.enabled=!0,e))).catch((e=>{throw this.enabled=!1,e}))}disable(){const e=this.player.debug;_i()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):pi()?this.noSleepTimer&&(e.warn("wakeLock","NoSleep now disabled for older iOS devices."),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}} -/* - * - * @ezuikit/utils-logger v1.0.1 - * Copyright (c) 2024-3-23 Ezviz-OpenBiz - * Released under MIT the License. - * - */var mi={info:"",log:"background: #4096ff; color: #FFF;",warn:"background: yellow; color: #FFF;",error:"background: red; color: #FFF;"},vi=function(){function e(e){void 0===e&&(e={}),this._options={level:"INFO",showTime:!1},this._levelNum=3,this.info=this._loggerFactory("info",this._levelNum>=3),this.log=this._loggerFactory("log",this._levelNum>=2),this.warn=this._loggerFactory("warn",this._levelNum>=1),this.error=this._loggerFactory("error",this._levelNum>=0),this.setOptions(e)}var t=e.prototype;return t.setOptions=function(e){var t;this._options=Object.assign({},this._options,e),this._levelNum=this._matchLevel(null!=(t=this._options.level)?t:"INFO"),this.info=this._loggerFactory("info",this._levelNum>=3),this.log=this._loggerFactory("log",this._levelNum>=2),this.warn=this._loggerFactory("warn",this._levelNum>=1),this.error=this._loggerFactory("error",this._levelNum>=0)},t._matchLevel=function(e){var t=3;switch(e){case"INFO":t=3;break;case"LOG":t=2;break;case"WARN":t=1;break;case"ERROR":t=0}return t},t._loggerFactory=function(t,i){var n=console[t];if(i&&n){var r,o=this._options.name?"%c["+this._options.name+"]%c %c["+t.toUpperCase()+"]":"%c["+t.toUpperCase()+"]",a=[this._options.name?"background: green;color: #fff":null,this._options.name?"":null,mi[t]].filter((function(e){return null!=e}));return(r=n).bind.apply(r,[].concat([console,o],a))}return e.noop},t.getOptions=function(){return this._options},t.getVersion=function(){return"1.0.1"},e}();function gi(e){return(e=+e)<10&&(e="0"+e),e+""}vi.noop=function(){};var yi=["info","log","warn","error"];function bi(e){var t=new vi(e);return new Proxy(t,{get:function(e,t){if(yi.includes(t)){var i;if(null==(i=e._options)?void 0:i.showTime){var n=(o=(r=new Date(Date.now())).getFullYear(),a=r.getMonth()+1,s=r.getDate(),d=r.getHours(),l=r.getMinutes(),c=r.getSeconds(),h=r.getMilliseconds(),o+"/"+gi(a)+"/"+gi(s)+" "+gi(d)+":"+gi(l)+":"+gi(c)+":"+h);return e[t].bind(console,"["+n+"]")}return e[t].bind(console)}var r,o,a,s,d,l,c,h;return Reflect.get(e,t)}})}class Ei{constructor(e){this.master=e,this.logger=new bi({name:"FLV",showTime:!0}),console.log(e._opt.loggerOptions)}info(e,...t){this._setLoger()>=4&&this.logger.log(e,...t)}log(e,...t){this._setLoger()>=3&&this.logger.log(e,...t)}warn(e,...t){this._setLoger()>=2&&this.logger.warn(e,...t)}error(e,...t){this.logger.error(e,...t)}_setLoger(e){var t,i,n,r,o;if(this.master._opt.debug&&null!==(t=this.master._opt.loggerOptions)&&void 0!==t&&t.level)return"INFO"===(null===(i=this.master._opt.loggerOptions)||void 0===i?void 0:i.level)?4:"LOG"===(null===(n=this.master._opt.loggerOptions)||void 0===n?void 0:n.level)?3:"WARN"===(null===(r=this.master._opt.loggerOptions)||void 0===r?void 0:r.level)?2:"ERROR"===(null===(o=this.master._opt.loggerOptions)||void 0===o?void 0:o.level)?1:5}}class Si{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,i,n={}){if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,n)));e.addEventListener(t,i,n);const r=()=>e.removeEventListener(t,i,n);return this.destroys.push(r),r}destroy(){var e;null===(e=this.master.debug)||void 0===e||e.log("Events","destroy"),this.destroys.forEach((e=>e()))}}class wi{constructor(e){this.player=e,((e,t)=>{const{events:{proxy:i}}=e,n=document.createElement("object");n.setAttribute("aria-hidden","true"),n.setAttribute("tabindex",-1),n.type="text/html",n.data="about:blank",Gt(n,{display:"block",position:"absolute",top:"0",left:"0",height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:"-1"});let r=e.width,o=e.height;i(n,"load",(()=>{i(n.contentDocument.defaultView,"resize",(()=>{e.width===r&&e.height===o||(r=e.width,o=e.height,e.emit(mt.resize),s())}))})),e.$container.appendChild(n),e.on(mt.destroy,(()=>{e.$container.removeChild(n)}));const a=i=>{const n=!0===(r=i)||!1===r?i:e.fullscreen;var r;Gt(t.$fullscreenExit,"display",n?"flex":"none"),Gt(t.$fullscreen,"display",n?"none":"flex")},s=()=>{Qt()&&e._opt.useWebFullScreen};try{Ut.on("change",a),e.events.destroys.push((()=>{Ut.off("change",a)}))}catch(e){}e.on(mt.webFullscreen,(e=>{a(e),s()}))})(e,this)}}class Ti extends $t{constructor(e,t,i){var n;super(),this.$container=e,this._opt=t,this.debug=new Ei(this),this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._checkHeartTimeout=null,this._checkLoadingTimeout=null,this._checkStatsInterval=null,this._startBpsTime=null,this._isPlayingBeforePageHidden=!1,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0},this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this._videoTimestamp=0,this._audioTimestamp=0,n=this,Object.defineProperty(n,"rect",{get:()=>{const e=n.$container.getBoundingClientRect();return e.width=Math.max(e.width,n.$container.clientWidth),e.height=Math.max(e.height,n.$container.clientHeight),e}}),["bottom","height","left","right","top","width"].forEach((e=>{Object.defineProperty(n,e,{get:()=>n.rect[e]})})),this.events=new Si(this),this.video=new i(this),(e=>{try{const t=t=>{Xt(t)===e.$container&&(e.emit(vt.fullscreen,e.fullscreen),e.fullscreen?e._opt.useMSE&&e.resize():e.resize())};Ut.on("change",t),e.events.destroys.push((()=>{Ut.off("change",t)}))}catch(e){}e.on(mt.decoderWorkerInit,(()=>{e.debug.log("player","has loaded"),e.loaded=!0})),e.on(mt.play,(()=>{e.loading=!1})),e.on(mt.fullscreen,(t=>{if(t)try{Ut.request(e.$container).then((()=>{})).catch((t=>{Qt()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}))}catch(t){Qt()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}else try{Ut.exit().then((()=>{e.webFullscreen&&(e.webFullscreen=!1)})).catch((()=>{e.webFullscreen=!1}))}catch(t){e.webFullscreen=!1}})),Qt()&&e.on(mt.webFullscreen,(t=>{t?e.$container.classList.add("flv-fullscreen-web"):e.$container.classList.remove("flv-fullscreen-web"),e._opt.useWebFullScreen&&Gt(e.$container,t?{position:"fixed",top:"0px",left:"0px",right:"0px",bottom:"0px",height:"100%",width:"100%"}:{position:"relative",top:"",left:"",right:"",bottom:"",height:"",width:""}),e.emit(vt.fullscreen,e.fullscreen)})),e.on(mt.resize,(()=>{var t;null===(t=e.video)||void 0===t||t.resize()}));const t=[mt.timeUpdate];Object.keys(mt).forEach((i=>{e.on(mt[i],(n=>{t.includes(i)||e.debug.log("player events",mt[i],n)}))})),Object.keys(gt).forEach((t=>{e.on(gt[t],(i=>{e.debug.log("player event error",gt[t],i)}))}))})(this),(e=>{const{_opt:t,debug:i,events:{proxy:n}}=e;t.supportDblclickFullscreen&&n(e.$container,"dblclick",(t=>{const i=Xt(t).nodeName.toLowerCase();"canvas"!==i&&"video"!==i||(e.fullscreen=!e.fullscreen)})),n(document,"visibilitychange",(()=>{t.hiddenAutoPause&&(i.log("visibilitychange",document.visibilityState,e._isPlayingBeforePageHidden),"visible"===document.visibilityState?e._isPlayingBeforePageHidden&&e.play():(e._isPlayingBeforePageHidden=e.playing,e.playing&&e.pause()))})),n(window,"fullscreenchange",(()=>{null!==e.keepScreenOn&&"visible"===document.visibilityState&&e.enableWakeLock&&e.enableWakeLock()}))})(this),this.control=new wi(this)}updateOption(e){this._opt=Object.assign({},this._opt,e)}} -/* - * - * @ezuikit/utils-collect v0.1.0-beta.1 - * Copyright (c) 2024-7-11 Ezviz-OpenBiz - * Released under MIT the License. - * - */var Bi,ki,Ci,Ri,Oi=(Bi="undefined"!=typeof self?self:window,ki={navigator:void 0!==Bi.navigator?Bi.navigator:{userAgent:""},infoMap:{engine:["WebKit","Trident","Gecko","Presto"],browser:["Safari","Chrome","Edge","IE","Firefox","Firefox Focus","Chromium","Opera","Vivaldi","Yandex","Arora","Lunascape","QupZilla","Coc Coc","Kindle","Iceweasel","Konqueror","Iceape","SeaMonkey","Epiphany","360","360SE","360EE","UC","QQBrowser","QQ","Baidu","Maxthon","Sogou","LBBROWSER","2345Explorer","TheWorld","XiaoMi","Quark","Qiyu","Wechat","Taobao","Alipay","Weibo","Douban","Suning","iQiYi"],os:["Windows","Linux","Mac OS","Android","Ubuntu","FreeBSD","Debian","iOS","Windows Phone","BlackBerry","MeeGo","Symbian","Chrome OS","WebOS"],device:["Mobile","Tablet","iPad"]}},Ci={getMatchMap:function(e){return{Trident:e.indexOf("Trident")>-1||e.indexOf("NET CLR")>-1,Presto:e.indexOf("Presto")>-1,WebKit:e.indexOf("AppleWebKit")>-1,Gecko:e.indexOf("Gecko/")>-1,Safari:e.indexOf("Safari")>-1,Chrome:e.indexOf("Chrome")>-1||e.indexOf("CriOS")>-1,IE:e.indexOf("MSIE")>-1||e.indexOf("Trident")>-1,Edge:e.indexOf("Edge")>-1,Firefox:e.indexOf("Firefox")>-1||e.indexOf("FxiOS")>-1,"Firefox Focus":e.indexOf("Focus")>-1,Chromium:e.indexOf("Chromium")>-1,Opera:e.indexOf("Opera")>-1||e.indexOf("OPR")>-1,Vivaldi:e.indexOf("Vivaldi")>-1,Yandex:e.indexOf("YaBrowser")>-1,Arora:e.indexOf("Arora")>-1,Lunascape:e.indexOf("Lunascape")>-1,QupZilla:e.indexOf("QupZilla")>-1,"Coc Coc":e.indexOf("coc_coc_browser")>-1,Kindle:e.indexOf("Kindle")>-1||e.indexOf("Silk/")>-1,Iceweasel:e.indexOf("Iceweasel")>-1,Konqueror:e.indexOf("Konqueror")>-1,Iceape:e.indexOf("Iceape")>-1,SeaMonkey:e.indexOf("SeaMonkey")>-1,Epiphany:e.indexOf("Epiphany")>-1,360:e.indexOf("QihooBrowser")>-1||e.indexOf("QHBrowser")>-1,"360EE":e.indexOf("360EE")>-1,"360SE":e.indexOf("360SE")>-1,UC:e.indexOf("UC")>-1||e.indexOf(" UBrowser")>-1,QQBrowser:e.indexOf("QQBrowser")>-1,QQ:e.indexOf("QQ/")>-1,Baidu:e.indexOf("Baidu")>-1||e.indexOf("BIDUBrowser")>-1,Maxthon:e.indexOf("Maxthon")>-1,Sogou:e.indexOf("MetaSr")>-1||e.indexOf("Sogou")>-1,LBBROWSER:e.indexOf("LBBROWSER")>-1,"2345Explorer":e.indexOf("2345Explorer")>-1,TheWorld:e.indexOf("TheWorld")>-1,XiaoMi:e.indexOf("MiuiBrowser")>-1,Quark:e.indexOf("Quark")>-1,Qiyu:e.indexOf("Qiyu")>-1,Wechat:e.indexOf("MicroMessenger")>-1,Taobao:e.indexOf("AliApp(TB")>-1,Alipay:e.indexOf("AliApp(AP")>-1,Weibo:e.indexOf("Weibo")>-1,Douban:e.indexOf("com.douban.frodo")>-1,Suning:e.indexOf("SNEBUY-APP")>-1,iQiYi:e.indexOf("IqiyiApp")>-1,Windows:e.indexOf("Windows")>-1,Linux:e.indexOf("Linux")>-1||e.indexOf("X11")>-1,"Mac OS":e.indexOf("Macintosh")>-1,Android:e.indexOf("Android")>-1||e.indexOf("Adr")>-1,Ubuntu:e.indexOf("Ubuntu")>-1,FreeBSD:e.indexOf("FreeBSD")>-1,Debian:e.indexOf("Debian")>-1,"Windows Phone":e.indexOf("IEMobile")>-1||e.indexOf("Windows Phone")>-1,BlackBerry:e.indexOf("BlackBerry")>-1||e.indexOf("RIM")>-1,MeeGo:e.indexOf("MeeGo")>-1,Symbian:e.indexOf("Symbian")>-1,iOS:e.indexOf("like Mac OS X")>-1,"Chrome OS":e.indexOf("CrOS")>-1,WebOS:e.indexOf("hpwOS")>-1,Mobile:e.indexOf("Mobi")>-1||e.indexOf("iPh")>-1||e.indexOf("480")>-1,Tablet:e.indexOf("Tablet")>-1||e.indexOf("Nexus 7")>-1,iPad:e.indexOf("iPad")>-1}},matchInfoMap:function(e){var t,i=(null==(t=ki.navigator)?void 0:t.userAgent)||"",n=Ci.getMatchMap(i);for(var r in ki.infoMap)for(var o=0;o36&&Bi.showModalDialog?r=!0:+o>45&&(r=i("type","application/vnd.chromium.remoting-viewer"))}if(n.Baidu&&n.Opera&&(n.Baidu=!1),n.Mobile&&(n.Mobile=!t.includes("iPad")),r&&(i("type","application/gameplugin")||ki.navigator&&void 0===ki.navigator.connection.saveData?n["360SE"]=!0:n["360EE"]=!0),n.IE||n.Edge)switch(window.screenTop-window.screenY){case 71:case 74:case 99:case 75:case 105:break;case 102:n["360EE"]=!0;break;case 104:n["360SE"]=!0}var a={Safari:function(){return t.replace(/^.*Version\/([\d.]+).*$/,"$1")},Chrome:function(){return t.replace(/^.*Chrome\/([\d.]+).*$/,"$1").replace(/^.*CriOS\/([\d.]+).*$/,"$1")},IE:function(){return t.replace(/^.*MSIE ([\d.]+).*$/,"$1").replace(/^.*rv:([\d.]+).*$/,"$1")},Edge:function(){return t.replace(/^.*Edge\/([\d.]+).*$/,"$1")},Firefox:function(){return t.replace(/^.*Firefox\/([\d.]+).*$/,"$1").replace(/^.*FxiOS\/([\d.]+).*$/,"$1")},"Firefox Focus":function(){return t.replace(/^.*Focus\/([\d.]+).*$/,"$1")},Chromium:function(){return t.replace(/^.*Chromium\/([\d.]+).*$/,"$1")},Opera:function(){return t.replace(/^.*Opera\/([\d.]+).*$/,"$1").replace(/^.*OPR\/([\d.]+).*$/,"$1")},Vivaldi:function(){return t.replace(/^.*Vivaldi\/([\d.]+).*$/,"$1")},Yandex:function(){return t.replace(/^.*YaBrowser\/([\d.]+).*$/,"$1")},Arora:function(){return t.replace(/^.*Arora\/([\d.]+).*$/,"$1")},Lunascape:function(){return t.replace(/^.*Lunascape[\/\s]([\d.]+).*$/,"$1")},QupZilla:function(){return t.replace(/^.*QupZilla[\/\s]([\d.]+).*$/,"$1")},"Coc Coc":function(){return t.replace(/^.*coc_coc_browser\/([\d.]+).*$/,"$1")},Kindle:function(){return t.replace(/^.*Version\/([\d.]+).*$/,"$1")},Iceweasel:function(){return t.replace(/^.*Iceweasel\/([\d.]+).*$/,"$1")},Konqueror:function(){return t.replace(/^.*Konqueror\/([\d.]+).*$/,"$1")},Iceape:function(){return t.replace(/^.*Iceape\/([\d.]+).*$/,"$1")},SeaMonkey:function(){return t.replace(/^.*SeaMonkey\/([\d.]+).*$/,"$1")},Epiphany:function(){return t.replace(/^.*Epiphany\/([\d.]+).*$/,"$1")},360:function(){return t.replace(/^.*QihooBrowser\/([\d.]+).*$/,"$1")},"360SE":function(){return{63:"10.0",55:"9.1",45:"8.1",42:"8.0",31:"7.0",21:"6.3"}[+t.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},"360EE":function(){return{69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[+t.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},Maxthon:function(){return t.replace(/^.*Maxthon\/([\d.]+).*$/,"$1")},QQBrowser:function(){return t.replace(/^.*QQBrowser\/([\d.]+).*$/,"$1")},QQ:function(){return t.replace(/^.*QQ\/([\d.]+).*$/,"$1")},Baidu:function(){return t.replace(/^.*BIDUBrowser[\s\/]([\d.]+).*$/,"$1")},UC:function(){return t.replace(/^.*UC?Browser\/([\d.]+).*$/,"$1")},Sogou:function(){return t.replace(/^.*SE ([\d.X]+).*$/,"$1").replace(/^.*SogouMobileBrowser\/([\d.]+).*$/,"$1")},LBBROWSER:function(){return{57:"6.5",49:"6.0",46:"5.9",42:"5.3",39:"5.2",34:"5.0",29:"4.5",21:"4.0"}[+navigator.userAgent.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},"2345Explorer":function(){return t.replace(/^.*2345Explorer\/([\d.]+).*$/,"$1")},TheWorld:function(){return t.replace(/^.*TheWorld ([\d.]+).*$/,"$1")},XiaoMi:function(){return t.replace(/^.*MiuiBrowser\/([\d.]+).*$/,"$1")},Quark:function(){return t.replace(/^.*Quark\/([\d.]+).*$/,"$1")},Qiyu:function(){return t.replace(/^.*Qiyu\/([\d.]+).*$/,"$1")},Wechat:function(){return t.replace(/^.*MicroMessenger\/([\d.]+).*$/,"$1")},Taobao:function(){return t.replace(/^.*AliApp\(TB\/([\d.]+).*$/,"$1")},Alipay:function(){return t.replace(/^.*AliApp\(AP\/([\d.]+).*$/,"$1")},Weibo:function(){return t.replace(/^.*weibo__([\d.]+).*$/,"$1")},Douban:function(){return t.replace(/^.*com.douban.frodo\/([\d.]+).*$/,"$1")},Suning:function(){return t.replace(/^.*SNEBUY-APP([\d.]+).*$/,"$1")},iQiYi:function(){return t.replace(/^.*IqiyiVersion\/([\d.]+).*$/,"$1")}};return e.browserVersion="",a[e.browser]&&(e.browserVersion=a[e.browser](),e.browserVersion==t&&(e.browserVersion="")),"Edge"==e.browser&&(e.engine="EdgeHTML"),"Chrome"==e.browser&&parseInt(e.browserVersion)>27&&(e.engine="Blink"),"Opera"==e.browser&&parseInt(e.browserVersion)>12&&(e.engine="Blink"),"Yandex"==e.browser&&(e.engine="Blink"),e.browser+" (version: "+e.browserVersion+"; kernel: "+e.engine+")"}},Ri={DeviceInfoObj:function(e){var t,i=function(t){var i;null==(i=e.info)||i.forEach((function(e){e.toLowerCase()===t.toLowerCase()&&(r[t]=n[t])}))};e=e||{domain:""};var n={deviceType:Ci.getDeviceType(),OS:Ci.getOS(),OSVersion:Ci.getOSVersion(),sh:Bi.screen.height,sw:Bi.screen.width,lang:Ci.getLanguage(),netWork:Ci.getNetwork(),orientation:Ci.getOrientationStatu(),browserInfo:Ci.getBrowserInfo(),fingerprint:Ci.createFingerprint(e.domain),userAgent:null==(t=ki.navigator)?void 0:t.userAgent};if(!e.info||0===e.info.length)return n;var r={};for(var o in n)i(o);return r}},{getDeviceInfo:function(e){return Ri.DeviceInfoObj(e)}}),Ii=function(){function e(){}return e.add=function(t,i){e.queues.push({url:t,data:i})},e.fire=function(){if(e.queues&&0!==e.queues.length){e.isStop=!1;var t=e.queues[0];t.url&&e.api.report(t.data),e.queues.splice(0,1),e.fire()}else e.isStop=!0},e}();Ii.isStop=!0,Ii.queues=[];var xi=function(){function e(e){this.url=e}var t=e.prototype;return t.report=function(e){this.checkUrl(this.url)&&this.sendInfo(e)},t.sendInfo=function(e){navigator.sendBeacon?this.sendBeacon(this.url,e):this.sendImage(this.url,e)},t.sendImage=function(e,t){var i=this.changeJSON2Query(t),n=new Image;n.onload=n.onerror=function(){n=null},n.src=e+"?"+i+"&random="+Math.random()},t.sendBeacon=function(e,t){try{navigator.sendBeacon(e,this.formatParamsByURLSearchParams(t))}catch(e){}},t.formatParamsByURLSearchParams=function(e){var t=new URLSearchParams;for(var i in e)"object"==typeof e[i]&&(e[i]=JSON.stringify(e[i])),t.append(i,e[i]);return t},t.changeJSON2Query=function(e){var t="";for(var i in e){""!=t&&(t+="&");var n=e[i];t+=i+"="+encodeURIComponent("object"==typeof n?JSON.stringify(n):n)}return t},t.checkUrl=function(e){return!!e&&/^[hH][tT][tT][pP]([sS]?):\/\//.test(e)},e}();function Di(){return Di=Object.assign||function(e){for(var t=1;t0&&i[0]&&i[1]&&i[2]&&(n.serial=i[0],n.no=i[1],n.bitstream=i[2])}catch(e){}return n}return{}}class Pi{static initMonitor(e){Pi.collect=new Li({forbidden:e,url:"https://log.ys7.com/statistics.do/opensdk_ezuikit",jsError:!1,promiseError:!1,resourceError:!1,extendsInfo:{protocol:"flv",v:"1.0.2"}})}static report(e,t={}){Pi.collect||Pi.initMonitor();try{const i=Mi(Pi.url);Pi.collect.send({url:Pi.url,serial:i.serial,no:i.no,action:e,logInfo:t})}catch(e){}}}class Ui extends Ti{constructor(e,t){super(e,t,ni),this._opt.useMSE=!1,this._opt.hasAudio&&(this.audio=new oi(this)),this.decoderWorker=new li(this),this.stream=null,this.demux=null,this._lastVolume=null,Qt()&&(this.keepScreenOn=new fi(this)),this._opt.hasAudio&&this._opt.volume>0&&(this.volume=this._opt.volume)}destroy(){this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._lastVolume=null,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this.decoderWorker&&(this.decoderWorker.destroy(),this.decoderWorker=null),this.video&&(this.video.destroy(),this.video=null),this.audio&&(this.audio.destroy(),this.audio=null),this.stream&&(this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.events&&(this.events.destroy(),this.events=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.releaseWakeLock(),this.keepScreenOn=null,this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this.emit("destroy"),this.off(),this.debug.log("play","destroy end")}set fullscreen(e){Qt()&&this._opt.useWebFullScreen?(this.emit(mt.webFullscreen,e),setTimeout((()=>{this.updateOption({rotate:e?270:0}),this.resize()}),10)):this.emit(mt.fullscreen,e)}get fullscreen(){return zt()||this.webFullscreen}set webFullscreen(e){this.emit(mt.webFullscreen,e)}get webFullscreen(){return this.$container.classList.contains("flv-fullscreen-web")}set loaded(e){this._hasLoaded=e}get loaded(){return this._hasLoaded}set playing(e){e&&(this.loading=!1),this.playing!==e&&(this._playing=e,this.emit(mt.playing,e),this.emit(mt.volumechange,this.volume),e?this.emit(mt.play):this.emit(mt.pause))}get playing(){return this._playing}get volume(){var e;return+((null===(e=this.audio)||void 0===e?void 0:e.volume)||0).toFixed(2)||0}set volume(e){var t;e!==this.volume&&(null===(t=this.audio)||void 0===t||t.setVolume(e),this._lastVolume=e)}get lastVolume(){return this._lastVolume}set loading(e){this.loading!==e&&(this._loading=e,this.emit(mt.loading,this._loading))}get loading(){return this._loading}set audioTimestamp(e){null!==e&&(this._audioTimestamp=e)}get audioTimestamp(){return this._audioTimestamp}set videoTimestamp(e){null!==e&&(this._videoTimestamp=e,this._opt.useWCS||this._opt.useMSE||this.audioTimestamp&&this.videoTimestamp&&this.audio&&this.audio.emit(mt.videoSyncAudio,{audioTimestamp:this.audioTimestamp,videoTimestamp:this.videoTimestamp,diff:this.audioTimestamp-this.videoTimestamp}))}get videoTimestamp(){return this._videoTimestamp}get isDebug(){return!0===this._opt.debug}init(){return new Promise(((e,t)=>{this.stream||(this.stream=new di(this)),this.audio||this._opt.hasAudio&&(this.audio=new oi(this)),this.demux||(this.demux=new Ai(this)),this.decoderWorker?e():(this.decoderWorker=new li(this),this.once(mt.decoderWorkerInit,(()=>{e()})))}))}play(e){return this._opt=Object.assign({},this._opt,e||{}),this.clearCheckHeartTimeout(),new Promise(((e,t)=>{if(!this._opt.url)return t();this.loading=!0,this.playing=!1,this._times.playInitStart=Nt(),this.init().then((()=>{this._times.playStart=Nt(),this._opt.isNotMute&&this.mute(!1),this.enableWakeLock();try{this.stream.fetchStream(this._opt.url,this._opt)}catch(e){}this.checkLoadingTimeout(),this.stream.once(gt.fetchError,(e=>{t(e)})),this.stream.once(gt.websocketError,(e=>{t(e)})),this.stream.once(mt.streamEnd,(()=>{t()})),this.stream.once(mt.streamSuccess,(()=>{e(),this._times.streamResponse=Nt(),this.video.play(),this.checkStatsInterval()}))})).catch((e=>{t(e)})),this._resumeAudioAfterPause()}))}close(){return new Promise((e=>{this._close().then((()=>{this.video&&this.video.clearView(),e()}))}))}_resumeAudioAfterPause(){this.lastVolume&&(this.volume=this.lastVolume)}_close(){return new Promise((e=>{this.stream&&(this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.decoderWorker&&(this.decoderWorker.destroy(),this.decoderWorker=null),this.audio&&(this.audio.destroy(),this.audio=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.playing=!1,this.loading=!1,this.video&&(this.video.resetInit(),this.video.pause(!0)),this.releaseWakeLock(),this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},setTimeout((()=>{e()}),0)}))}pause(e=!1){return e?this.close():this._close()}mute(e){this.volume=e?0:.5,this.audio&&this.audio.mute(e)}resize(){this.$container.style.width=(this._opt.width||this.width)+"px",this.$container.style.height=(this._opt.height||this.height)+"px",this.video.resize()}_onlyMseOrWcsVideo(){return!1===this._opt.hasAudio&&(this._opt.useMSE||this._opt.useWCS&&!this._opt.useOffscreen)}checkHeart(){this.clearCheckHeartTimeout(),this.checkHeartTimeout()}checkHeartTimeout(){this._checkHeartTimeout&&this.clearCheckHeartTimeout(),this._checkHeartTimeout=setTimeout((()=>{if(this._checkHeartTimeout&&this.clearCheckHeartTimeout(),this.playing){if(0!==this._stats.fps)return;this.pause().then((()=>{this.emit(mt.timeout,mt.delayTimeout),this.emit(mt.delayTimeout)}))}}),1e3*this._opt.heartTimeout)}checkStatsInterval(){this._checkStatsInterval=setInterval((()=>{this.updateStats()}),1e3)}clearCheckHeartTimeout(){this._checkHeartTimeout&&(clearTimeout(this._checkHeartTimeout),this._checkHeartTimeout=null)}checkLoadingTimeout(){this._checkLoadingTimeout=setTimeout((()=>{this.playing||(this.clearCheckLoadingTimeout(),this.pause().then((()=>{this.emit(mt.timeout,mt.loadingTimeout),this.emit(mt.loadingTimeout)})).catch((()=>{})))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}handleRender(){this.loading&&(this.emit(mt.start),this.loading=!1),this.clearCheckLoadingTimeout(),this.playing||(this.playing=!0),this.checkHeart()}updateStats(e){e=e||{},this._startBpsTime||(this._startBpsTime=Nt()),qt(e.ts)&&(this._stats.ts=e.ts),qt(e.buf)&&(this._stats.buf=e.buf),e.fps&&(this._stats.fps+=1),e.abps&&(this._stats.abps+=e.abps),e.vbps&&(this._stats.vbps+=e.vbps);const t=Nt();t-this._startBpsTime<1e3||(this.emit(mt.stats,this._stats),this._stats.fps=0,this._stats.abps=0,this._stats.vbps=0,this._startBpsTime=t)}resetStats(){this._startBpsTime=null,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0}}enableWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.enable()}releaseWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.disable()}handlePlayToRenderTimes(){const e=this._times;e.playTimestamp=e.playStart-e.playInitStart,e.streamTimestamp=e.streamStart-e.playStart,e.streamResponseTimestamp=e.streamResponse-e.streamStart,e.demuxTimestamp=e.demuxStart-e.streamResponse,e.decodeTimestamp=e.decodeStart-e.demuxStart,e.videoTimestamp=e.videoStart-e.decodeStart,e.allTimestamp=e.videoStart-e.playInitStart,this.emit(mt.playToRenderTimes,e)}getOption(){return this._opt}emitError(e,t=""){Pi.report(51,{event:e,value:t}),this.emit(mt.error,e,t),this.emit(e,t)}}var Fi={exports:{}};!function(e,t){!function(t,i){e.exports=i()}(globalThis,(()=>(()=>{var e={343:e=>{var t=Object.prototype.hasOwnProperty,i="~";function n(){}function r(e,t,i){this.fn=e,this.context=t,this.once=i||!1}function o(e,t,n,o,a){if("function"!=typeof n)throw new TypeError("The listener must be a function");var s=new r(n,o||e,a),d=i?i+t:t;return e._events[d]?e._events[d].fn?e._events[d]=[e._events[d],s]:e._events[d].push(s):(e._events[d]=s,e._eventsCount++),e}function a(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function s(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(i=!1)),s.prototype.eventNames=function(){var e,n,r=[];if(0===this._eventsCount)return r;for(n in e=this._events)t.call(e,n)&&r.push(i?n.slice(1):n);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},s.prototype.listeners=function(e){var t=i?i+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var r=0,o=n.length,a=new Array(o);r{i.d(t,{A:()=>n});const n=function(){function e(){this.mimeType=null,this.duration=null,this.hasAudio=null,this.hasVideo=null,this.audioCodec=null,this.videoCodec=null,this.audioDataRate=null,this.videoDataRate=null,this.audioSampleRate=null,this.audioChannelCount=null,this.width=null,this.height=null,this.fps=null,this.profile=null,this.level=null,this.refFrames=null,this.chromaFormat=null,this.sarNum=null,this.sarDen=null,this.metadata=null,this.segments=null,this.segmentCount=null,this.hasKeyframesIndex=null,this.keyframesIndex=null}return e.prototype.isComplete=function(){return!this.hasAudio||this.hasAudio&&null!=this.audioCodec&&null!=this.audioSampleRate&&this.audioChannelCount,!this.hasVideo||this.hasVideo&&null!=this.videoCodec&&null!=this.width&&null!=this.height&&null!=this.fps&&null!=this.profile&&null!=this.level&&null!=this.refFrames&&null!=this.chromaFormat&&null!=this.sarNum&&this.sarDen,null!=this.mimeType},e.prototype.isSeekable=function(){return this.hasKeyframesIndex},e.prototype.getNearestKeyframe=function(e){if(null==this.keyframesIndex)return null;var t=this.keyframesIndex,i=this._search(t.times,e);return{index:i,milliseconds:t.times[i],fileposition:t.filepositions[i]}},e.prototype._search=function(e,t){var i=0,n=e.length-1,r=0,o=0,a=n;for(t=e[r]&&t{i.d(t,{$_:()=>n,EX:()=>o,EZ:()=>r,Sc:()=>a});var n=function(e,t,i,n,r){this.dts=e,this.pts=t,this.duration=i,this.originalDts=n,this.isSyncPoint=r,this.fileposition=null},r=function(){function e(){this.beginDts=0,this.endDts=0,this.beginPts=0,this.endPts=0,this.originalBeginDts=0,this.originalEndDts=0,this.syncPoints=[],this.firstSample=null,this.lastSample=null}return e.prototype.appendSyncPoint=function(e){e.isSyncPoint=!0,this.syncPoints.push(e)},e}(),o=function(){function e(){this._list=[]}return e.prototype.clear=function(){this._list=[]},e.prototype.appendArray=function(e){var t=this._list;0!==e.length&&(t.length>0&&e[0].originalDts=t[r].dts&&e((null===(t=i[r].lastSample)||void 0===t?void 0:t.originalDts)||0)&&e=((null===(i=null===(t=n[o])||void 0===t?void 0:t.lastSample)||void 0===i?void 0:i.originalDts)||0)&&(o===n.length-1||o0&&(a=this._searchNearestSegmentBefore(r.originalBeginDts)+1),this._lastAppendLocation=a,this._list.splice(a,0,r)},e.prototype.getLastSegmentBefore=function(e){var t=this._searchNearestSegmentBefore(e);return t>=0?this._list[t]:null},e.prototype.getLastSampleBefore=function(e){var t=this.getLastSegmentBefore(e);return null!=t?t.lastSample:null},e.prototype.getLastSyncPointBefore=function(e){for(var t=this._searchNearestSegmentBefore(e),i=this._list[t].syncPoints;0===i.length&&t>0;)t--,i=this._list[t].syncPoints;return i.length>0?i[i.length-1]:null},e}()},976:(e,t,i)=>{i.d(t,{A:()=>Me});var n=i(413),r=i(502),o=i(620),a=i(825);function s(e,t,i){var n=e;if(t+i=128){t.push(String.fromCharCode(65535&o)),n+=2;continue}}else if(i[n]<240){if(s(i,n,2)&&(o=(15&i[n])<<12|(63&i[n+1])<<6|63&i[n+2])>=2048&&55296!=(63488&o)){t.push(String.fromCharCode(65535&o)),n+=3;continue}}else if(i[n]<248){var o;if(s(i,n,3)&&(o=(7&i[n])<<18|(63&i[n+1])<<12|(63&i[n+2])<<6|63&i[n+3])>65536&&o<1114112){o-=65536,t.push(String.fromCharCode(o>>>10|55296)),t.push(String.fromCharCode(1023&o|56320)),n+=4;continue}}t.push(String.fromCharCode(65533)),++n}return t.join("")};var l,c=i(713),h=(l=new ArrayBuffer(2),new DataView(l).setInt16(0,256,!0),256===new Int16Array(l)[0]);const u=function(){function e(){}return e.parseScriptData=function(t,i,n){var o={};try{var a=e.parseValue(t,i,n),s=e.parseValue(t,i+a.size,n-a.size);o[a.data]=s.data}catch(e){r.A.e("AMF",e.toString())}return o},e.parseObject=function(t,i,n){if(n<3)throw new c.j4("Data not enough when parse ScriptDataObject");var r=e.parseString(t,i,n),o=e.parseValue(t,i+r.size,n-r.size),a=o.objectEnd;return{data:{name:r.data,value:o.data},size:r.size+o.size,objectEnd:a}},e.parseVariable=function(t,i,n){return e.parseObject(t,i,n)},e.parseString=function(e,t,i){if(i<2)throw new c.j4("Data not enough when parse String");var n=new DataView(e,t,i).getUint16(0,!h);return{data:n>0?d(new Uint8Array(e,t+2,n)):"",size:2+n}},e.parseLongString=function(e,t,i){if(i<4)throw new c.j4("Data not enough when parse LongString");var n=new DataView(e,t,i).getUint32(0,!h);return{data:n>0?d(new Uint8Array(e,t+4,n)):"",size:4+n}},e.parseDate=function(e,t,i){if(i<10)throw new c.j4("Data size invalid when parse Date");var n=new DataView(e,t,i),r=n.getFloat64(0,!h),o=n.getInt16(8,!h);return{data:new Date(r+=60*o*1e3),size:10}},e.parseValue=function(t,i,n){if(n<1)throw new c.j4("Data not enough when parse Value");var o,a=new DataView(t,i,n),s=1,d=a.getUint8(0),l=!1;try{switch(d){case 0:o=a.getFloat64(1,!h),s+=8;break;case 1:o=!!a.getUint8(1),s+=1;break;case 2:var u=e.parseString(t,i+1,n-1);o=u.data,s+=u.size;break;case 3:o={};var A=0;for(9==(16777215&a.getUint32(n-4,!h))&&(A=3);s32)throw new c.Qn("ExpGolomb: readBits() bits exceeded max 32bits!");if(e<=this._current_word_bits_left){var t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}var i=this._current_word_bits_left?this._current_word:0;i>>>=32-this._current_word_bits_left;var n=e-this._current_word_bits_left;this._fillCurrentWord();var r=Math.min(n,this._current_word_bits_left),o=this._current_word>>>32-r;return this._current_word<<=r,this._current_word_bits_left-=r,i<>>e)return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()},e.prototype.readUEG=function(){var e=this._skipLeadingZero();return this.readBits(e+1)-1},e.prototype.readSEG=function(){var e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)},e}(),p=function(){function e(){}return e._ebsp2rbsp=function(e){for(var t=e,i=t.byteLength,n=new Uint8Array(i),r=0,o=0;o=2&&3===t[o]&&0===t[o-1]&&0===t[o-2]||(n[r]=t[o],r++);return new Uint8Array(n.buffer,0,r)},e.parseSPS=function(t){for(var i=t.subarray(1,4),n="avc1.",r=0;r<3;r++){var o=i[r].toString(16);o.length<2&&(o="0"+o),n+=o}var a=e._ebsp2rbsp(t),s=new A(a);s.readByte();var d=s.readByte();s.readByte();var l=s.readByte();s.readUEG();var c=e.getProfileString(d),h=e.getLevelString(l),u=1,p=420,_=8,f=8;if((100===d||110===d||122===d||244===d||44===d||83===d||86===d||118===d||128===d||138===d||144===d)&&(3===(u=s.readUEG())&&s.readBits(1),u<=3&&(p=[0,420,422,444][u]),_=s.readUEG()+8,f=s.readUEG()+8,s.readBits(1),s.readBool()))for(var m=3!==u?8:12,v=0;v0&&M<16?(R=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][M-1],O=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][M-1]):255===M&&(R=s.readByte()<<8|s.readByte(),O=s.readByte()<<8|s.readByte())}if(s.readBool()&&s.readBool(),s.readBool()&&(s.readBits(4),s.readBool()&&s.readBits(24)),s.readBool()&&(s.readUEG(),s.readUEG()),s.readBool()){var P=s.readBits(32),U=s.readBits(32);x=s.readBool(),I=(D=U)/(L=2*P)}}var F=1;1===R&&1===O||(F=R/O);var V=0,N=0;0===u?(V=1,N=2-w):(V=3===u?1:2,N=(1===u?2:1)*(2-w));var G=16*(E+1),W=16*(S+1)*(2-w);G-=(T+B)*V,W-=(k+C)*N;var j=Math.ceil(G*F);return s.destroy(),s=null,{codec_mimetype:n,profile_idc:d,level_idc:l,profile_string:c,level_string:h,chroma_format_idc:u,bit_depth:_,bit_depth_luma:_,bit_depth_chroma:f,ref_frames:b,chroma_format:p,chroma_format_string:e.getChromaFormatString(p),frame_rate:{fixed:x,fps:I,fps_den:L,fps_num:D},sar_ratio:{width:R,height:O},codec_size:{width:G,height:W},present_size:{width:j,height:W}}},e._skipScalingList=function(e,t){for(var i=8,n=8,r=0;r=2&&3===t[o]&&0===t[o-1]&&0===t[o-2]||(n[r]=t[o],r++);return new Uint8Array(n.buffer,0,r)},e.parseVPS=function(t){var i=e._ebsp2rbsp(t),n=new A(i);return n.readByte(),n.readByte(),n.readBits(4),n.readBits(2),n.readBits(6),{num_temporal_layers:n.readBits(3)+1,temporal_id_nested:n.readBool()}},e.parseSPS=function(t){var i=e._ebsp2rbsp(t),n=new A(i);n.readByte(),n.readByte();for(var r=0,o=0,a=0,s=0,d=(n.readBits(4),n.readBits(3)),l=(n.readBool(),n.readBits(2)),c=n.readBool(),h=n.readBits(5),u=n.readByte(),p=n.readByte(),_=n.readByte(),f=n.readByte(),m=n.readByte(),v=n.readByte(),g=n.readByte(),y=n.readByte(),b=n.readByte(),E=n.readByte(),S=n.readByte(),w=[],T=[],B=0;B0)for(B=d;B<8;B++)n.readBits(2);for(B=0;B1&&n.readSEG(),B=0;B0&&K<=16?(q=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][K-1],X=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][K-1]):255===K&&(q=n.readBits(16),X=n.readBits(16))}if(n.readBool()&&n.readBool(),n.readBool()&&(n.readBits(3),n.readBool(),n.readBool()&&(n.readByte(),n.readByte(),n.readByte())),n.readBool()&&(n.readUEG(),n.readUEG()),n.readBool(),n.readBool(),n.readBool(),n.readBool()&&(n.readUEG(),n.readUEG(),n.readUEG(),n.readUEG()),n.readBool()&&(Y=n.readBits(32),Z=n.readBits(32),n.readBool()&&n.readUEG(),n.readBool())){var J,ee,te=!1;for(J=n.readBool(),ee=n.readBool(),(J||ee)&&((te=n.readBool())&&(n.readByte(),n.readBits(5),n.readBool(),n.readBits(5)),n.readBits(4),n.readBits(4),te&&n.readBits(4),n.readBits(5),n.readBits(5),n.readBits(5)),B=0;B<=d;B++){var ie=n.readBool();$=ie;var ne=!1,re=1;ie||(ne=n.readBool());var oe=!1;if(ne?n.readSEG():oe=n.readBool(),oe||(re=n.readUEG()+1),J)for(N=0;N>3,o=!!(4&t[n]),a=!!(2&t[n]);t[n],n+=1,o&&(n+=1);var s=Number.POSITIVE_INFINITY;if(a){s=0;for(var d=0;s|=(127&t[n])<<7*d,128&t[n+=1];d++);}1===r&&(i=e.parseSeuqneceHeader(t.subarray(n,n+s))),n+=s}return i},e.parseSeuqneceHeader=function(t){var i=new A(t),n=i.readBits(3),r=(i.readBool(),i.readBool()),o=!0,a=0,s=0,d=[];if(r)d.push({operating_point_idc:0,level:i.readBits(5),tier:0});else{if(i.readBool()){var l=i.readBits(32),c=i.readBits(32),h=i.readBool();if(h){for(var u=0;0===i.readBits(1);)u+=1;u>=32||i.readBits(u)}a=c,s=l,o=h,i.readBool()&&(i.readBits(5),i.readBits(32),i.readBits(5),i.readBits(5))}for(var p=i.readBool(),_=i.readBits(5),f=0;f<=_;f++){var m=i.readBits(12),v=i.readBits(5),g=v>7?i.readBits(1):0;d.push({operating_point_idc:m,level:v,tier:g}),p&&i.readBool()&&i.readBits(4)}}var y=d[0],b=y.level,E=y.tier,S=i.readBits(4),w=i.readBits(4),T=i.readBits(S+1)+1,B=i.readBits(w+1)+1,k=!1;r||(k=i.readBool()),k&&(i.readBits(4),i.readBits(4)),i.readBool(),i.readBool(),i.readBool();var C=!1;r||(i.readBool(),i.readBool(),i.readBool(),i.readBool(),(C=i.readBool())&&(i.readBool(),i.readBool()),(i.readBool()||i.readBits(1))&&(i.readBool()||i.readBits(1)),C&&i.readBits(3)),i.readBool(),i.readBool(),i.readBool();var R=i.readBool(),O=8;O=2===n&&R?i.readBool()?12:10:R?10:8;var I=!1;1!==n&&(I=i.readBool()),i.readBool()&&(i.readBits(8),i.readBits(8),i.readBits(8));var x=1,D=1;return I?(i.readBits(1),x=1,D=1):(i.readBits(1),0===n?(x=1,D=1):1===n?(x=0,D=0):12===O?i.readBits(1)&&i.readBits(1):(x=1,D=0),x&&D&&i.readBits(2),i.readBits(1)),i.readBool(),i.destroy(),i=null,{codec_mimetype:"av01.".concat(n,".").concat(e.getLevelString(b,E),".").concat(O.toString(10).padStart(2,"0")),level:b,tier:E,level_string:e.getLevelString(b,E),profile_idc:n,profile_string:"".concat(n),bit_depth:O,ref_frames:1,chroma_format:e.getChromaFormat(I,x,D),chroma_format_string:e.getChromaFormatString(I,x,D),frame_rate:{fixed:o,fps:a/s,fps_den:s,fps_num:a},sar_ratio:{width:1,height:1},codec_size:{width:T,height:B},present_size:{width:1*T,height:B}}},e.getLevelString=function(e,t){return"".concat(e.toString(10).padStart(2,"0")).concat(0===t?"M":"H")},e.getChromaFormat=function(e,t,i){return e?0:0===t&&0===i?3:1===t&&0===i?2:1===t&&1===i?1:Number.NaN},e.getChromaFormatString=function(e,t,i){return e?"4:0:0":0===t&&0===i?"4:4:4":1===t&&0===i?"4:2:2":1===t&&1===i?"4:2:0":"Unknown"},e}();var E=function(){function e(e,t){this.TAG="FLVDemuxer",this._config=t,this._onError=null,this._onMediaInfo=null,this._onMetaDataArrived=null,this._onScriptDataArrived=null,this._onTrackMetadata=null,this._onDataAvailable=null,this._dataOffset=e.dataOffset,this._firstParse=!0,this._dispatch=!1,this._hasAudio=e.hasAudioTrack,this._hasVideo=e.hasVideoTrack,this._hasAudioFlagOverrided=!1,this._hasVideoFlagOverrided=!1,this._audioInitialMetadataDispatched=!1,this._videoInitialMetadataDispatched=!1,this._mediaInfo=new a.A,this._mediaInfo.hasAudio=this._hasAudio,this._mediaInfo.hasVideo=this._hasVideo,this._metadata=null,this._audioMetadata=null,this._videoMetadata=null,this._naluLengthSize=4,this._timestampBase=0,this._timescale=1e3,this._duration=0,this._durationOverrided=!1,this._referenceFrameRate={fixed:!0,fps:23.976,fps_num:23976,fps_den:1e3},this._flvSoundRateTable=[5500,11025,22050,44100,48e3],this._mpegSamplingRates=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],this._mpegAudioV10SampleRateTable=[44100,48e3,32e3,0],this._mpegAudioV20SampleRateTable=[22050,24e3,16e3,0],this._mpegAudioV25SampleRateTable=[11025,12e3,8e3,0],this._mpegAudioL1BitRateTable=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],this._mpegAudioL2BitRateTable=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],this._mpegAudioL3BitRateTable=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1],this._videoTrack={type:"video",id:1,sequenceNumber:0,samples:[],length:0},this._audioTrack={type:"audio",id:2,sequenceNumber:0,samples:[],length:0},this._littleEndian=function(){var e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),256===new Int16Array(e)[0]}()}return e.prototype.destroy=function(){this._mediaInfo=null,this._metadata=null,this._audioMetadata=null,this._videoMetadata=null,this._videoTrack=null,this._audioTrack=null,this._onError=null,this._onMediaInfo=null,this._onMetaDataArrived=null,this._onScriptDataArrived=null,this._onTrackMetadata=null,this._onDataAvailable=null},e.probe=function(e){var t=new Uint8Array(e);if(t.byteLength<9)return{needMoreData:!0};var i={match:!1};if(70!==t[0]||76!==t[1]||86!==t[2]||1!==t[3])return i;var n,r=(4&t[4])>>>2!=0,o=!!(1&t[4]),a=(n=t)[5]<<24|n[6]<<16|n[7]<<8|n[8];return a<9?i:{match:!0,consumed:a,dataOffset:a,hasAudioTrack:r,hasVideoTrack:o}},e.prototype.bindDataSource=function(e){return e.onDataArrival=this.parseChunks.bind(this),this},Object.defineProperty(e.prototype,"onTrackMetadata",{get:function(){return this._onTrackMetadata},set:function(e){this._onTrackMetadata=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onMediaInfo",{get:function(){return this._onMediaInfo},set:function(e){this._onMediaInfo=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onMetaDataArrived",{get:function(){return this._onMetaDataArrived},set:function(e){this._onMetaDataArrived=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onScriptDataArrived",{get:function(){return this._onScriptDataArrived},set:function(e){this._onScriptDataArrived=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onError",{get:function(){return this._onError},set:function(e){this._onError=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onDataAvailable",{get:function(){return this._onDataAvailable},set:function(e){this._onDataAvailable=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"timestampBase",{get:function(){return this._timestampBase},set:function(e){this._timestampBase=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"overridedDuration",{get:function(){return this._duration},set:function(e){this._durationOverrided=!0,this._duration=e,this._mediaInfo&&(this._mediaInfo.duration=e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"overridedHasAudio",{set:function(e){this._hasAudioFlagOverrided=!0,this._hasAudio=e,this._mediaInfo&&(this._mediaInfo.hasAudio=e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"overridedHasVideo",{set:function(e){this._hasVideoFlagOverrided=!0,this._hasVideo=e,this._mediaInfo&&(this._mediaInfo.hasVideo=e)},enumerable:!1,configurable:!0}),e.prototype.resetMediaInfo=function(){this._mediaInfo=new a.A},e.prototype._isInitialMetadataDispatched=function(){return this._hasAudio&&this._hasVideo?this._audioInitialMetadataDispatched&&this._videoInitialMetadataDispatched:this._hasAudio&&!this._hasVideo?this._audioInitialMetadataDispatched:!(this._hasAudio||!this._hasVideo)&&this._videoInitialMetadataDispatched},e.prototype.parseChunks=function(t,i){var n,o;if(!(this._onError&&this._onMediaInfo&&this._onTrackMetadata&&this._onDataAvailable))throw new c.j4("Flv: onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified");var a=0,s=this._littleEndian;if(0===i){if(!(t.byteLength>13))return 0;var d=e.probe(t);a=(null==d?void 0:d.dataOffset)||0}for(this._firstParse&&(this._firstParse=!1,i+a!==this._dataOffset&&r.A.w(this.TAG,"First time parsing but chunk byteStart invalid!"),0!==(l=new DataView(t,a)).getUint32(0,!s)&&r.A.w(this.TAG,"PrevTagSize0 !== 0 !!!"),a+=4);at.byteLength)break;var h=l.getUint8(0),u=16777215&l.getUint32(0,!s);if(a+11+u+4>t.byteLength)break;if(8===h||9===h||18===h){var A=l.getUint8(4),p=l.getUint8(5),_=l.getUint8(6)|p<<8|A<<16|l.getUint8(7)<<24;16777215&l.getUint32(7,!s)&&r.A.w(this.TAG,"Meet tag which has StreamID != 0!");var f=a+11;switch(h){case 8:this._parseAudioData(t,f,u,_);break;case 9:this._parseVideoData(t,f,u,_,i+a);break;case 18:this._parseScriptData(t,f,u)}var m=l.getUint32(11+u,!s);m!==11+u&&r.A.w(this.TAG,"Invalid PrevTagSize ".concat(m)),a+=11+u+4}else r.A.w(this.TAG,"Unsupported tag type ".concat(h,", skipped")),a+=11+u+4}return this._isInitialMetadataDispatched()&&this._dispatch&&((null===(n=this._audioTrack)||void 0===n?void 0:n.length)||(null===(o=this._videoTrack)||void 0===o?void 0:o.length))&&this._onDataAvailable(this._audioTrack,this._videoTrack),a},e.prototype._parseScriptData=function(e,t,i){var n,o,a,s=u.parseScriptData(e,t,i);if(s.hasOwnProperty("onMetaData")){if(null==s.onMetaData||"object"!=typeof s.onMetaData)return void r.A.w(this.TAG,"Invalid onMetaData structure!");this._metadata&&r.A.w(this.TAG,"Found another onMetaData tag!"),this._metadata=s;var d=null===(n=this._metadata)||void 0===n?void 0:n.onMetaData;if(this._onMetaDataArrived&&this._onMetaDataArrived(Object.assign({},d)),"boolean"==typeof(null==d?void 0:d.hasAudio)&&(this._hasAudioFlagOverrided||(this._hasAudio=d.hasAudio,this._mediaInfo&&(this._mediaInfo.hasAudio=this._hasAudio))),"boolean"==typeof(null==d?void 0:d.hasVideo)&&(this._hasVideoFlagOverrided||(this._hasVideo=d.hasVideo,this._mediaInfo&&(this._mediaInfo.hasVideo=this._hasVideo))),"number"==typeof(null==d?void 0:d.audiodatarate)&&this._mediaInfo&&(this._mediaInfo.audioDataRate=d.audiodatarate),"number"==typeof(null==d?void 0:d.videodatarate)&&this._mediaInfo&&(this._mediaInfo.videoDataRate=d.videodatarate),"number"==typeof(null==d?void 0:d.width)&&this._mediaInfo&&(this._mediaInfo.width=d.width),"number"==typeof(null==d?void 0:d.height)&&this._mediaInfo&&(this._mediaInfo.height=d.height),"number"==typeof(null==d?void 0:d.duration)){if(!this._durationOverrided){var l=Math.floor(d.duration*this._timescale);this._duration=l,this._mediaInfo&&(this._mediaInfo.duration=l)}}else this._mediaInfo&&(this._mediaInfo.duration=0);if("number"==typeof(null==d?void 0:d.framerate)){var c=Math.floor(1e3*d.framerate);if(c>0){var h=c/1e3;this._referenceFrameRate.fixed=!0,this._referenceFrameRate.fps=h,this._referenceFrameRate.fps_num=c,this._referenceFrameRate.fps_den=1e3,this._mediaInfo&&(this._mediaInfo.fps=h)}}if("object"==typeof(null==d?void 0:d.keyframes)){this._mediaInfo&&(this._mediaInfo.hasKeyframesIndex=!0);var A=d.keyframes;this._mediaInfo&&(this._mediaInfo.keyframesIndex=this._parseKeyframesIndex(A)),d.keyframes=null}else this._mediaInfo&&(this._mediaInfo.hasKeyframesIndex=!1);this._dispatch=!1,this._mediaInfo&&(this._mediaInfo.metadata=d),r.A.v(this.TAG,"Parsed onMetaData"),(null===(o=this._mediaInfo)||void 0===o?void 0:o.isComplete())&&(null===(a=this._onMediaInfo)||void 0===a||a.call(this,this._mediaInfo))}Object.keys(s).length>0&&this._onScriptDataArrived&&this._onScriptDataArrived(Object.assign({},s))},e.prototype._parseKeyframesIndex=function(e){for(var t=[],i=[],n=1;n>>4;if(2===m||10===m){var v=0,g=(12&f)>>>2;if(g>=0&&g<=4){v=this._flvSoundRateTable[g];var b=1&f,E=this._audioMetadata,S=this._audioTrack;if(E||(!1!==this._hasAudio||this._hasAudioFlagOverrided||(this._hasAudio=!0,this._mediaInfo&&(this._mediaInfo.hasAudio=!0)),(E=this._audioMetadata={}).type="audio",E.id=null==S?void 0:S.id,E.timescale=this._timescale,E.duration=this._duration,E.audioSampleRate=v,E.channelCount=0===b?1:2),10===m){var w=this._parseAACAudioData(e,t+1,i-1);if(void 0===w)return;if(0===(null==w?void 0:w.packetType)){if(null==E?void 0:E.config){if(y(w.data.config,null==E?void 0:E.config))return;r.A.w(this.TAG,"AudioSpecificConfig has been changed, re-generate initialization segment")}var T=w.data;E.audioSampleRate=null==T?void 0:T.samplingRate,E.channelCount=null==T?void 0:T.channelCount,E.codec=null==T?void 0:T.codec,E.originalCodec=null==T?void 0:T.originalCodec,E.config=null==T?void 0:T.config,E.refSampleDuration=1024/E.audioSampleRate*E.timescale,r.A.v(this.TAG,"Parsed AudioSpecificConfig"),this._isInitialMetadataDispatched()?this._dispatch&&((null===(s=this._audioTrack)||void 0===s?void 0:s.length)||(null===(d=this._videoTrack)||void 0===d?void 0:d.length))&&(null===(l=this._onDataAvailable)||void 0===l||l.call(this,this._audioTrack,this._videoTrack)):this._audioInitialMetadataDispatched=!0,this._dispatch=!1,null===(c=this._onTrackMetadata)||void 0===c||c.call(this,"audio",E),(C=this._mediaInfo).audioCodec=E.originalCodec||"",C.audioSampleRate=E.audioSampleRate,C.audioChannelCount=E.channelCount,C.hasVideo?null!=C.videoCodec&&(C.mimeType='video/x-flv; codecs="'+C.videoCodec+","+C.audioCodec+'"'):C.mimeType='video/x-flv; codecs="'+C.audioCodec+'"',(null==C?void 0:C.isComplete())&&(null===(h=this._onMediaInfo)||void 0===h||h.call(this,C))}else if(1===w.packetType){var B=this._timestampBase+n,k={unit:w.data,length:w.data.byteLength,dts:B,pts:B};S&&(null==S||S.samples.push(k),S.length+=(null===(u=null==w?void 0:w.data)||void 0===u?void 0:u.length)||0)}else r.A.e(this.TAG,"Flv: Unsupported AAC data type ".concat(w.packetType))}else if(2===m){if(!E.codec){var C;if(void 0===(T=this._parseMP3AudioData(e,t+1,i-1,!0)))return;E.audioSampleRate=T.samplingRate,E.channelCount=T.channelCount,E.codec=T.codec,E.originalCodec=T.originalCodec,E.refSampleDuration=1152/E.audioSampleRate*E.timescale,r.A.v(this.TAG,"Parsed MPEG Audio Frame Header"),this._audioInitialMetadataDispatched=!0,null===(A=this._onTrackMetadata)||void 0===A||A.call(this,"audio",E),(C=this._mediaInfo).audioCodec=E.codec,C.audioSampleRate=E.audioSampleRate,C.audioChannelCount=E.channelCount,C.audioDataRate=T.bitRate,(null==C?void 0:C.hasVideo)?null!=C.videoCodec&&(C.mimeType='video/x-flv; codecs="'+C.videoCodec+","+C.audioCodec+'"'):C.mimeType='video/x-flv; codecs="'+C.audioCodec+'"',C.isComplete()&&(null===(p=this._onMediaInfo)||void 0===p||p.call(this,C))}var R=this._parseMP3AudioData(e,t+1,i-1,!1);if(void 0===R)return;B=this._timestampBase+n;var O={unit:R,length:R.byteLength,dts:B,pts:B};null==S||S.samples.push(O),S&&(S.length+=R.length)}}else null===(a=this._onError)||void 0===a||a.call(this,_.A.FORMAT_ERROR,"Flv: Invalid audio sample rate idx: "+g)}else null===(o=this._onError)||void 0===o||o.call(this,_.A.CODEC_UNSUPPORTED,"Flv: Unsupported audio codec idx: "+m)}},e.prototype._parseAACAudioData=function(e,t,i){if(!(i<=1)){var n={},o=new Uint8Array(e,t,i);return n.packetType=o[0],0===o[0]?n.data=this._parseAACAudioSpecificConfig(e,t+1,i-1):n.data=o.subarray(1),n}r.A.w(this.TAG,"Flv: Invalid AAC packet, missing AACPacketType or/and Data!")},e.prototype._parseAACAudioSpecificConfig=function(e,t,i){var n,r,o,a,s=new Uint8Array(e,t,i),d=null,l=0,c=null;if(l=o=s[0]>>>3,(a=(7&s[0])<<1|s[1]>>>7)<0||a>=this._mpegSamplingRates.length)null===(n=this._onError)||void 0===n||n.call(this,_.A.FORMAT_ERROR,"Flv: AAC invalid sampling frequency index!");else{var h=this._mpegSamplingRates[a],u=(120&s[1])>>>3;if(!(u<0||u>=8)){5===l&&(c=(7&s[1])<<1|s[2]>>>7,s[2]);var A=self.navigator.userAgent.toLowerCase();return A.includes("firefox")?a>=6?(l=5,d=new Array(4),c=a-3):(l=2,d=new Array(2),c=a):A.includes("android")?(l=2,d=new Array(2),c=a):(l=5,c=a,d=new Array(4),a>=6?c=a-3:1===u&&(l=2,d=new Array(2),c=a)),d[0]=l<<3,d[0]|=(15&a)>>>1,d[1]=(15&a)<<7,d[1]|=(15&u)<<3,5===l&&(d[1]|=(15&c)>>>1,d[2]=(1&c)<<7,d[2]|=8,d[3]=0),{config:d,samplingRate:h,channelCount:u,codec:"mp4a.40."+l,originalCodec:"mp4a.40."+o}}null===(r=this._onError)||void 0===r||r.call(this,_.A.FORMAT_ERROR,"Flv: AAC invalid channel configuration")}},e.prototype._parseMP3AudioData=function(e,t,i,n){if(!(i<4)){this._littleEndian;var o,a=new Uint8Array(e,t,i);if(n){if(255!==a[0])return;var s=a[1]>>>3&3,d=(6&a[1])>>1,l=(240&a[2])>>>4,c=(12&a[2])>>>2,h=3&~(a[3]>>>6)?2:1,u=0,A=0;switch(s){case 0:u=this._mpegAudioV25SampleRateTable[c];break;case 2:u=this._mpegAudioV20SampleRateTable[c];break;case 3:u=this._mpegAudioV10SampleRateTable[c]}switch(d){case 1:l>>4;if(128&d){var c=15&d,h=String.fromCharCode.apply(String,function(e,t,i){if(2===arguments.length)for(var n,r=0,o=t.length;r0)&&!(n=o.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=o.return)&&i.call(o)}finally{if(r)throw r.error}}return a}(new Uint8Array(e,t,i).slice(1,5)),!1));"hvc1"===h?this._parseEnhancedHEVCVideoPacket(e,t+5,i-5,n,o,l,c):"av01"===h?this._parseEnhancedAV1VideoPacket(e,t+5,i-5,n,o,l,c):null===(s=this._onError)||void 0===s||s.call(this,_.A.CODEC_UNSUPPORTED,"Flv: Unsupported codec in video frame: ".concat(h))}else{var u=15&d;7===u?this._parseAVCVideoPacket(e,t+1,i-1,n,o,l):12===u?this._parseHEVCVideoPacket(e,t+1,i-1,n,o,l):null===(a=this._onError)||void 0===a||a.call(this,_.A.CODEC_UNSUPPORTED,"Flv: Unsupported codec in video frame: ".concat(u))}}},e.prototype._parseAVCVideoPacket=function(e,t,i,n,o,a){var s;if(i<4)r.A.w(this.TAG,"Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime");else{var d=this._littleEndian,l=new DataView(e,t,i),c=l.getUint8(0),h=(16777215&l.getUint32(0,!d))<<8>>8;0===c?this._parseAVCDecoderConfigurationRecord(e,t+4,i-4):1===c?this._parseAVCVideoData(e,t+4,i-4,n,o,a,h):2===c||null===(s=this._onError)||void 0===s||s.call(this,_.A.FORMAT_ERROR,"Flv: Invalid video packet type ".concat(c))}},e.prototype._parseHEVCVideoPacket=function(e,t,i,n,o,a){var s;if(i<4)r.A.w(this.TAG,"Flv: Invalid HEVC packet, missing HEVCPacketType or/and CompositionTime");else{var d=this._littleEndian,l=new DataView(e,t,i),c=l.getUint8(0),h=(16777215&l.getUint32(0,!d))<<8>>8;0===c?this._parseHEVCDecoderConfigurationRecord(e,t+4,i-4):1===c?this._parseHEVCVideoData(e,t+4,i-4,n,o,a,h):2===c||null===(s=this._onError)||void 0===s||s.call(this,_.A.FORMAT_ERROR,"Flv: Invalid video packet type ".concat(c))}},e.prototype._parseEnhancedHEVCVideoPacket=function(e,t,i,n,r,o,a){var s,d=this._littleEndian,l=new DataView(e,t,i);if(0===a)this._parseHEVCDecoderConfigurationRecord(e,t,i);else if(1===a){var c=(4294967040&l.getUint32(0,!d))>>8;this._parseHEVCVideoData(e,t+3,i-3,n,r,o,c)}else 3===a?this._parseHEVCVideoData(e,t,i,n,r,o,0):2===a||null===(s=this._onError)||void 0===s||s.call(this,_.A.FORMAT_ERROR,"Flv: Invalid video packet type ".concat(a))},e.prototype._parseEnhancedAV1VideoPacket=function(e,t,i,n,r,o,a){var s,d;this._littleEndian,0===a?this._parseAV1CodecConfigurationRecord(e,t,i):1===a?this._parseAV1VideoData(e,t,i,n,r,o,0):5===a?null===(s=this._onError)||void 0===s||s.call(this,_.A.FORMAT_ERROR,"Flv: Not Suported MP2T AV1 video packet type ".concat(a)):2===a||null===(d=this._onError)||void 0===d||d.call(this,_.A.FORMAT_ERROR,"Flv: Invalid video packet type ".concat(a))},e.prototype._parseAVCDecoderConfigurationRecord=function(e,t,i){var n,o,a,s,d,l,c,h,u,A,f;if(i<7)r.A.w(this.TAG,"Flv: Invalid AVCDecoderConfigurationRecord, lack of data!");else{var m=this._videoMetadata,v=this._videoTrack,g=this._littleEndian,b=new DataView(e,t,i);if(m){if(void 0!==m.avcc){var E=new Uint8Array(e,t,i);if(y(E,m.avcc))return;r.A.w(this.TAG,"AVCDecoderConfigurationRecord has been changed, re-generate initialization segment")}}else!1!==this._hasVideo||this._hasVideoFlagOverrided||(this._hasVideo=!0,this._mediaInfo&&(this._mediaInfo.hasVideo=!0)),(m=this._videoMetadata={}).type="video",m.id=null==v?void 0:v.id,m.timescale=this._timescale,m.duration=this._duration;var S=b.getUint8(0),w=b.getUint8(1);if(b.getUint8(2),b.getUint8(3),1===S&&0!==w)if(this._naluLengthSize=1+(3&b.getUint8(4)),3===this._naluLengthSize||4===this._naluLengthSize){var T=31&b.getUint8(5);if(0!==T){T>1&&r.A.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: SPS Count = ".concat(T));for(var B=6,k=0;k1&&r.A.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: PPS Count = ".concat(F)),B++,k=0;k=i){r.A.w(this.TAG,"Malformed Nalu near timestamp ".concat(p,", offset = ").concat(u,", dataSize = ").concat(i));break}var f=l.getUint32(u,!d);if(3===A&&(f>>>=8),f>i-A)return void r.A.w(this.TAG,"Malformed Nalus near timestamp ".concat(p,", NaluSize > DataSize!"));var m=31&l.getUint8(u+A);5===m&&(_=!0);var v=new Uint8Array(e,t+u,A+f),g={type:m,data:v};c.push(g),h+=v.byteLength,u+=A+f}if(c.length){var y=this._videoTrack,b={units:c,length:h,isKeyframe:_,dts:p,cts:s,pts:p+s};_&&(b.fileposition=o),y&&(y.samples.push(b),y.length+=h)}},e.prototype._parseHEVCVideoData=function(e,t,i,n,o,a,s){for(var d=this._littleEndian,l=new DataView(e,t,i),c=[],h=0,u=0,A=this._naluLengthSize,p=this._timestampBase+n,_=1===a;u=i){r.A.w(this.TAG,"Malformed Nalu near timestamp ".concat(p,", offset = ").concat(u,", dataSize = ").concat(i));break}var f=l.getUint32(u,!d);if(3===A&&(f>>>=8),f>i-A)return void r.A.w(this.TAG,"Malformed Nalus near timestamp ".concat(p,", NaluSize > DataSize!"));var m=31&l.getUint8(u+A);19!==m&&20!==m||(_=!0);var v=new Uint8Array(e,t+u,A+f),g={type:m,data:v};c.push(g),h+=v.byteLength,u+=A+f}if(c.length){var y=this._videoTrack,b={units:c,length:h,isKeyframe:_,dts:p,cts:s,pts:p+s};_&&(b.fileposition=o),y&&(null==y||y.samples.push(b),y.length+=h)}},e.prototype._parseAV1VideoData=function(e,t,i,n,r,o,a){this._littleEndian;var s,d=[],l=this._timestampBase+n,c=1===o;if(s=i,d.push({unitType:0,data:new Uint8Array(e,t+0,i)}),d.length){var h=this._videoTrack,u={units:d,length:s,isKeyframe:c,dts:l,cts:a,pts:l+a};c&&(u.fileposition=r),h&&(null==h||h.samples.push(u),h.length+=s)}},e}();const S=E,w=function(){function e(){}return e.prototype.destroy=function(){this.onError=null,this.onMediaInfo=null,this.onMetaDataArrived=null,this.onTrackMetadata=null,this.onDataAvailable=null,this.onTimedID3Metadata=null,this.onSMPTE2038Metadata=null,this.onSCTE35Metadata=null,this.onPESPrivateData=null,this.onPESPrivateDataDescriptor=null},e}();var T,B=function(){this.program_pmt_pid={}};!function(e){e[e.kMPEG1Audio=3]="kMPEG1Audio",e[e.kMPEG2Audio=4]="kMPEG2Audio",e[e.kPESPrivateData=6]="kPESPrivateData",e[e.kADTSAAC=15]="kADTSAAC",e[e.kLOASAAC=17]="kLOASAAC",e[e.kAC3=129]="kAC3",e[e.kEAC3=135]="kEAC3",e[e.kID3=21]="kID3",e[e.kSCTE35=134]="kSCTE35",e[e.kH264=27]="kH264",e[e.kH265=36]="kH265"}(T||(T={}));var k,C=function(){this.pid_stream_type={},this.common_pids={h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},this.pes_private_data_pids={},this.timed_id3_pids={},this.scte_35_pids={},this.smpte2038_pids={}},R=function(){},O=function(){},I=function(){this.slices=[],this.total_length=0,this.expected_length=0,this.file_position=0,this.random_access_indicator=0};!function(e){e[e.kUnspecified=0]="kUnspecified",e[e.kSliceNonIDR=1]="kSliceNonIDR",e[e.kSliceDPA=2]="kSliceDPA",e[e.kSliceDPB=3]="kSliceDPB",e[e.kSliceDPC=4]="kSliceDPC",e[e.kSliceIDR=5]="kSliceIDR",e[e.kSliceSEI=6]="kSliceSEI",e[e.kSliceSPS=7]="kSliceSPS",e[e.kSlicePPS=8]="kSlicePPS",e[e.kSliceAUD=9]="kSliceAUD",e[e.kEndOfSequence=10]="kEndOfSequence",e[e.kEndOfStream=11]="kEndOfStream",e[e.kFiller=12]="kFiller",e[e.kSPSExt=13]="kSPSExt",e[e.kReserved0=14]="kReserved0"}(k||(k={}));var x,D,L=function(){},M=function(e){var t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)},P=function(){function e(e){this.TAG="H264AnnexBParser",this.current_startcode_offset_=0,this.eof_flag_=!1,this.data_=e,this.current_startcode_offset_=this.findNextStartCodeOffset(0),this.eof_flag_&&r.A.e(this.TAG,"Could not find H264 startcode until payload end!")}return e.prototype.findNextStartCodeOffset=function(e){for(var t=e,i=this.data_;;){if(t+3>=i.byteLength)return this.eof_flag_=!0,i.byteLength;var n=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],r=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===n||1===r)return t;t++}},e.prototype.readNextNaluPayload=function(){for(var e=this.data_,t=null;null==t&&!this.eof_flag_;){var i=this.current_startcode_offset_,n=31&e[i+=1==(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3],r=(128&e[i])>>>7,o=this.findNextStartCodeOffset(i);if(this.current_startcode_offset_=o,!(n>=k.kReserved0)&&0===r){var a=e.subarray(i,o);(t=new L).type=n,t.data=a}}return t},e}(),U=function(){function e(e,t,i){var n=8+e.byteLength+1+2+t.byteLength,r=!1;66!==e[3]&&77!==e[3]&&88!==e[3]&&(r=!0,n+=4);var o=this.data=new Uint8Array(n);o[0]=1,o[1]=e[1],o[2]=e[2],o[3]=e[3],o[4]=255,o[5]=225;var a=e.byteLength;o[6]=a>>>8,o[7]=255&a;var s=8;o.set(e,8),o[s+=a]=1;var d=t.byteLength;o[s+1]=d>>>8,o[s+2]=255&d,o.set(t,s+3),s+=3+d,r&&(o[s]=252|i.chroma_format_idc,o[s+1]=248|i.bit_depth_luma-8,o[s+2]=248|i.bit_depth_chroma-8,o[s+3]=0,s+=4)}return e.prototype.getData=function(){return this.data},e}();!function(e){e[e.kNull=0]="kNull",e[e.kAACMain=1]="kAACMain",e[e.kAAC_LC=2]="kAAC_LC",e[e.kAAC_SSR=3]="kAAC_SSR",e[e.kAAC_LTP=4]="kAAC_LTP",e[e.kAAC_SBR=5]="kAAC_SBR",e[e.kAAC_Scalable=6]="kAAC_Scalable",e[e.kLayer1=32]="kLayer1",e[e.kLayer2=33]="kLayer2",e[e.kLayer3=34]="kLayer3"}(x||(x={})),function(e){e[e.k96000Hz=0]="k96000Hz",e[e.k88200Hz=1]="k88200Hz",e[e.k64000Hz=2]="k64000Hz",e[e.k48000Hz=3]="k48000Hz",e[e.k44100Hz=4]="k44100Hz",e[e.k32000Hz=5]="k32000Hz",e[e.k24000Hz=6]="k24000Hz",e[e.k22050Hz=7]="k22050Hz",e[e.k16000Hz=8]="k16000Hz",e[e.k12000Hz=9]="k12000Hz",e[e.k11025Hz=10]="k11025Hz",e[e.k8000Hz=11]="k8000Hz",e[e.k7350Hz=12]="k7350Hz"}(D||(D={}));var F,V,N=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],G=(F=function(e,t){return F=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])},F(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function i(){this.constructor=e}F(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),W=function(){},j=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return G(t,e),t}(W),Q=function(){function e(e){this.TAG="AACADTSParser",this.data_=e,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&r.A.e(this.TAG,"Could not found ADTS syncword until payload end")}return e.prototype.findNextSyncwordOffset=function(e){for(var t=e,i=this.data_;;){if(t+7>=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(4095==(i[t+0]<<8|i[t+1])>>>4)return t;t++}},e.prototype.readNextAACFrame=function(){for(var e=this.data_,t=null;null==t&&!this.eof_flag_;){var i=this.current_syncword_offset_,n=(8&e[i+1])>>>3,r=(6&e[i+1])>>>1,o=1&e[i+1],a=(192&e[i+2])>>>6,s=(60&e[i+2])>>>2,d=(1&e[i+2])<<2|(192&e[i+3])>>>6,l=(3&e[i+3])<<11|e[i+4]<<3|(224&e[i+5])>>>5;if(e[i+6],i+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}var c=1===o?7:9,h=l-c;i+=c;var u=this.findNextSyncwordOffset(i+h);if(this.current_syncword_offset_=u,(0===n||1===n)&&0===r){var A=e.subarray(i,i+h);(t=new W).audio_object_type=a+1,t.sampling_freq_index=s,t.sampling_frequency=N[s],t.channel_config=d,t.data=A}}return t},e.prototype.hasIncompleteData=function(){return this.has_last_incomplete_data},e.prototype.getIncompleteData=function(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null},e}(),z=function(){function e(e){this.TAG="AACLOASParser",this.data_=e,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&r.A.e(this.TAG,"Could not found LOAS syncword until payload end")}return e.prototype.findNextSyncwordOffset=function(e){for(var t=e,i=this.data_;;){if(t+1>=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(695==(i[t+0]<<3|i[t+1]>>>5))return t;t++}},e.prototype.getLATMValue=function(e){for(var t=e.readBits(2),i=0,n=0;n<=t;n++)i<<=8,i|=e.readByte();return i},e.prototype.readNextAACFrame=function(e){for(var t=this.data_,i=null;null==i&&!this.eof_flag_;){var n=this.current_syncword_offset_,o=(31&t[n+1])<<8|t[n+2];if(n+3+o>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}var a=new A(t.subarray(n+3,n+3+o)),s=null;if(a.readBool()){if(null==e){r.A.w(this.TAG,"StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(n+3+o),a.destroy();continue}s=e}else{var d=a.readBool();if(d&&a.readBool()){r.A.e(this.TAG,"audioMuxVersionA is Not Supported"),a.destroy();break}if(d&&this.getLATMValue(a),!a.readBool()){r.A.e(this.TAG,"allStreamsSameTimeFraming zero is Not Supported"),a.destroy();break}if(0!==a.readBits(6)){r.A.e(this.TAG,"more than 2 numSubFrames Not Supported"),a.destroy();break}if(0!==a.readBits(4)){r.A.e(this.TAG,"more than 2 numProgram Not Supported"),a.destroy();break}if(0!==a.readBits(3)){r.A.e(this.TAG,"more than 2 numLayer Not Supported"),a.destroy();break}var l=d?this.getLATMValue(a):0,c=a.readBits(5);l-=5;var h=a.readBits(4);l-=4;var u=a.readBits(4);l-=4,a.readBits(3),(l-=3)>0&&a.readBits(l);var p=a.readBits(3);if(0!==p){r.A.e(this.TAG,"frameLengthType = ".concat(p,". Only frameLengthType = 0 Supported")),a.destroy();break}a.readByte();var _=a.readBool();if(_)if(d)this.getLATMValue(a);else for(;;){8;var f=a.readBool();if(a.readByte(),!f)break}a.readBool()&&a.readByte(),(s=new j).audio_object_type=c,s.sampling_freq_index=h,s.sampling_frequency=N[s.sampling_freq_index],s.channel_config=u,s.other_data_present=_}for(var m=0;;){var v=a.readByte();if(m+=v,255!==v)break}for(var g=new Uint8Array(m),y=0;y=6?(n=5,t=new Array(4),a=r-3):(n=2,t=new Array(2),a=r):s.includes("android")?(n=2,t=new Array(2),a=r):(n=5,a=r,t=new Array(4),r>=6?a=r-3:1===o&&(n=2,t=new Array(2),a=r)),t[0]=n<<3,t[0]|=(15&r)>>>1,t[1]=(15&r)<<7,t[1]|=(15&o)<<3,5===n&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=N[r],this.channel_count=o,this.codec_mimetype="mp4a.40."+n.toString(),this.original_codec_mimetype="mp4a.40."+i.toString()},q=function(){},X=function(){};!function(e){e[e.kSpliceNull=0]="kSpliceNull",e[e.kSpliceSchedule=4]="kSpliceSchedule",e[e.kSpliceInsert=5]="kSpliceInsert",e[e.kTimeSignal=6]="kTimeSignal",e[e.kBandwidthReservation=7]="kBandwidthReservation",e[e.kPrivateCommand=255]="kPrivateCommand"}(V||(V={}));var $,Y=function(e){var t=e.readBool();return t?(e.readBits(6),{time_specified_flag:t,pts_time:4*e.readBits(31)+e.readBits(2)}):(e.readBits(7),{time_specified_flag:t})},Z=function(e){var t=e.readBool();return e.readBits(6),{auto_return:t,duration:4*e.readBits(31)+e.readBits(2)}},K=function(e,t){var i=t.readBits(8);return e?{component_tag:i}:{component_tag:i,splice_time:Y(t)}},J=function(e){return{component_tag:e.readBits(8),utc_splice_time:e.readBits(32)}},ee=function(e){var t=e.readBits(32),i=e.readBool();e.readBits(7);var n={splice_event_id:t,splice_event_cancel_indicator:i};if(i)return n;if(n.out_of_network_indicator=e.readBool(),n.program_splice_flag=e.readBool(),n.duration_flag=e.readBool(),e.readBits(5),n.program_splice_flag)n.utc_splice_time=e.readBits(32);else{n.component_count=e.readBits(8),n.components=[];for(var r=0;r=i.byteLength)return this.eof_flag_=!0,i.byteLength;var n=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],r=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===n||1===r)return t;t++}},e.prototype.readNextNaluPayload=function(){for(var e=this.data_,t=null;null==t&&!this.eof_flag_;){var i=this.current_startcode_offset_,n=e[i+=1==(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3]>>1&63,r=(128&e[i])>>>7,o=this.findNextStartCodeOffset(i);if(this.current_startcode_offset_=o,0===r){var a=e.subarray(i,o);(t=new de).type=n,t.data=a}}return t},e}(),he=function(){function e(e,t,i,n){var r=23+(5+e.byteLength)+(5+t.byteLength)+(5+i.byteLength),o=this.data=new Uint8Array(r);o[0]=1,o[1]=(3&n.general_profile_space)<<6|(n.general_tier_flag?1:0)<<5|31&n.general_profile_idc,o[2]=n.general_profile_compatibility_flags_1,o[3]=n.general_profile_compatibility_flags_2,o[4]=n.general_profile_compatibility_flags_3,o[5]=n.general_profile_compatibility_flags_4,o[6]=n.general_constraint_indicator_flags_1,o[7]=n.general_constraint_indicator_flags_2,o[8]=n.general_constraint_indicator_flags_3,o[9]=n.general_constraint_indicator_flags_4,o[10]=n.general_constraint_indicator_flags_5,o[11]=n.general_constraint_indicator_flags_6,o[12]=n.general_level_idc,o[13]=240|(3840&n.min_spatial_segmentation_idc)>>8,o[14]=255&n.min_spatial_segmentation_idc,o[15]=252|3&n.parallelismType,o[16]=252|3&n.chroma_format_idc,o[17]=248|7&n.bit_depth_luma_minus8,o[18]=248|7&n.bit_depth_chroma_minus8,o[19]=0,o[20]=0,o[21]=(3&n.constant_frame_rate)<<6|(7&n.num_temporal_layers)<<3|(n.temporal_id_nested?1:0)<<2|3,o[22]=3,o[23]=128|$.kSliceVPS,o[24]=0,o[25]=1,o[26]=(65280&e.byteLength)>>8,o[27]=255&e.byteLength,o.set(e,28),o[23+(5+e.byteLength)+0]=128|$.kSliceSPS,o[23+(5+e.byteLength)+1]=0,o[23+(5+e.byteLength)+2]=1,o[23+(5+e.byteLength)+3]=(65280&t.byteLength)>>8,o[23+(5+e.byteLength)+4]=255&t.byteLength,o.set(t,23+(5+e.byteLength)+5),o[23+(5+e.byteLength+5+t.byteLength)+0]=128|$.kSlicePPS,o[23+(5+e.byteLength+5+t.byteLength)+1]=0,o[23+(5+e.byteLength+5+t.byteLength)+2]=1,o[23+(5+e.byteLength+5+t.byteLength)+3]=(65280&i.byteLength)>>8,o[23+(5+e.byteLength+5+t.byteLength)+4]=255&i.byteLength,o.set(i,23+(5+e.byteLength+5+t.byteLength)+5)}return e.prototype.getData=function(){return this.data},e}(),ue=function(){},Ae=function(){},pe=function(){},_e=[[64,64,80,80,96,96,112,112,128,128,160,160,192,192,224,224,256,256,320,320,384,384,448,448,512,512,640,640,768,768,896,896,1024,1024,1152,1152,1280,1280],[69,70,87,88,104,105,121,122,139,140,174,175,208,209,243,244,278,279,348,349,417,418,487,488,557,558,696,697,835,836,975,976,1114,1115,1253,1254,1393,1394],[96,96,120,120,144,144,168,168,192,192,240,240,288,288,336,336,384,384,480,480,576,576,672,672,768,768,960,960,1152,1152,1344,1344,1536,1536,1728,1728,1920,1920]],fe=function(){function e(e){this.TAG="AC3Parser",this.data_=e,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&r.A.e(this.TAG,"Could not found AC3 syncword until payload end")}return e.prototype.findNextSyncwordOffset=function(e){for(var t=e,i=this.data_;;){if(t+7>=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(2935==(i[t+0]<<8|i[t+1]))return t;t++}},e.prototype.readNextAC3Frame=function(){for(var e=this.data_,t=null;null==t&&!this.eof_flag_;){var i=this.current_syncword_offset_,n=e[i+4]>>6,r=[48e3,44200,33e3][n],o=63&e[i+4],a=2*_e[n][o];if(i+a>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}var s=this.findNextSyncwordOffset(i+a);this.current_syncword_offset_=s;var d=e[i+5]>>3,l=7&e[i+5],c=e[i+6]>>5,h=0;1&c&&1!==c&&(h+=2),4&c&&(h+=2),2===c&&(h+=2);var u=(e[i+6]<<8|e[i+7])>>12-h&1,A=[2,1,2,3,3,4,4,5][c]+u;(t=new pe).sampling_frequency=r,t.channel_count=A,t.channel_mode=c,t.bit_stream_identification=d,t.low_frequency_effects_channel_on=u,t.bit_stream_mode=l,t.frame_size_code=o,t.data=e.subarray(i,i+a)}return t},e.prototype.hasIncompleteData=function(){return this.has_last_incomplete_data},e.prototype.getIncompleteData=function(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null},e}(),me=function(e){var t;t=[e.sampling_rate_code<<6|e.bit_stream_identification<<1|e.bit_stream_mode>>2,(3&e.bit_stream_mode)<<6|e.channel_mode<<3|e.low_frequency_effects_channel_on<<2|e.frame_size_code>>4,e.frame_size_code<<4&224],this.config=t,this.sampling_rate=e.sampling_frequency,this.bit_stream_identification=e.bit_stream_identification,this.bit_stream_mode=e.bit_stream_mode,this.low_frequency_effects_channel_on=e.low_frequency_effects_channel_on,this.channel_count=e.channel_count,this.channel_mode=e.channel_mode,this.codec_mimetype="ac-3",this.original_codec_mimetype="ac-3"},ve=function(){},ge=function(){function e(e){this.TAG="EAC3Parser",this.data_=e,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&r.A.e(this.TAG,"Could not found AC3 syncword until payload end")}return e.prototype.findNextSyncwordOffset=function(e){for(var t=e,i=this.data_;;){if(t+7>=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(2935==(i[t+0]<<8|i[t+1]))return t;t++}},e.prototype.readNextEAC3Frame=function(){for(var e=this.data_,t=null;null==t&&!this.eof_flag_;){var i=this.current_syncword_offset_,n=new A(e.subarray(i+2)),r=(n.readBits(2),n.readBits(3),n.readBits(11)+1<<1),o=n.readBits(2),a=null,s=null;3===o?(a=[24e3,22060,16e3][o=n.readBits(2)],s=3):(a=[48e3,44100,32e3][o],s=n.readBits(2));var d=n.readBits(3),l=n.readBits(1),c=n.readBits(5);if(i+r>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}var h=this.findNextSyncwordOffset(i+r);this.current_syncword_offset_=h;var u=[2,1,2,3,3,4,4,5][d]+l;n.destroy(),(t=new ve).sampling_frequency=a,t.channel_count=u,t.channel_mode=d,t.bit_stream_identification=c,t.low_frequency_effects_channel_on=l,t.frame_size=r,t.num_blks=[1,2,3,6][s],t.data=e.subarray(i,i+r)}return t},e.prototype.hasIncompleteData=function(){return this.has_last_incomplete_data},e.prototype.getIncompleteData=function(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null},e}(),ye=function(e){var t,i=Math.floor(e.frame_size*e.sampling_frequency/(16*e.num_blks));t=[255&i,248&i,e.sampling_rate_code<<6|e.bit_stream_identification<<1,e.channel_mode<<1|e.low_frequency_effects_channel_on,0],this.config=t,this.sampling_rate=e.sampling_frequency,this.bit_stream_identification=e.bit_stream_identification,this.num_blks=e.num_blks,this.low_frequency_effects_channel_on=e.low_frequency_effects_channel_on,this.channel_count=e.channel_count,this.channel_mode=e.channel_mode,this.codec_mimetype="ec-3",this.original_codec_mimetype="ec-3"},be=function(){var e=function(t,i){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])},e(t,i)};return function(t,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function n(){this.constructor=t}e(t,i),t.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Ee=function(){return Ee=Object.assign||function(e){for(var t,i=1,n=arguments.length;i0)&&!(n=o.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=o.return)&&i.call(o)}finally{if(r)throw r.error}}return a},we=function(e,t,i){if(2===arguments.length)for(var n,r=0,o=t.length;r=4?(r.A.v("TSDemuxer","ts_packet_size = 192, m2ts mode"),i-=4):204===n&&r.A.v("TSDemuxer","ts_packet_size = 204, RS encoded MPEG2-TS stream"),{match:!0,consumed:0,ts_packet_size:n,sync_offset:i})},t.prototype.bindDataSource=function(e){return e.onDataArrival=this.parseChunks.bind(this),this},t.prototype.resetMediaInfo=function(){this.media_info_=new a.A},t.prototype.parseChunks=function(e,t){var i;if(!(this.onError&&this.onMediaInfo&&this.onTrackMetadata&&this.onDataAvailable))throw new c.j4("onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified");var n=0;for(this.first_parse_&&(this.first_parse_=!1,n=this.sync_offset_);n+this.ts_packet_size_<=e.byteLength;){var o=t+n;192===this.ts_packet_size_&&(n+=4);var a=new Uint8Array(e,n,188),s=a[0];if(71!==s){r.A.e(this.TAG,"sync_byte = ".concat(s,", not 0x47"));break}var d=(64&a[1])>>>6,l=(a[1],(31&a[1])<<8|a[2]),h=(48&a[3])>>>4,u=15&a[3],A={},p=4;if(2===h||3===h){var _=a[4];if(5+_===188){n+=188,204===this.ts_packet_size_&&(n+=16);continue}_>0&&(A=this.parseAdaptationField(e,n+4,1+_)),p=5+_}if(1===h||3===h)if(0===l||l===this.current_pmt_pid_||void 0!==this.pmt_&&this.pmt_.pid_stream_type[l]===T.kSCTE35){var f=188-p;this.handleSectionSlice(e,n+p,f,{pid:l,file_position:o,payload_unit_start_indicator:d,continuity_conunter:u,random_access_indicator:A.random_access_indicator})}else if(void 0!==(null===(i=this.pmt_)||void 0===i?void 0:i.pid_stream_type[l])){f=188-p;var m=this.pmt_.pid_stream_type[l];(l===this.pmt_.common_pids.h264||l===this.pmt_.common_pids.h265||l===this.pmt_.common_pids.adts_aac||l===this.pmt_.common_pids.loas_aac||l===this.pmt_.common_pids.ac3||l===this.pmt_.common_pids.eac3||l===this.pmt_.common_pids.opus||l===this.pmt_.common_pids.mp3||this.pmt_.pes_private_data_pids[l]||this.pmt_.timed_id3_pids[l])&&this.handlePESSlice(e,n+p,f,{pid:l,stream_type:m,file_position:o,payload_unit_start_indicator:d,continuity_conunter:u,random_access_indicator:A.random_access_indicator})}n+=188,204===this.ts_packet_size_&&(n+=16)}return this.dispatchAudioVideoMediaSegment(),n},t.prototype.parseAdaptationField=function(e,t,i){var n=new Uint8Array(e,t,i),o=n[0];return o>0?o>183?(r.A.w(this.TAG,"Illegal adaptation_field_length: ".concat(o)),{}):{discontinuity_indicator:(128&n[1])>>>7,random_access_indicator:(64&n[1])>>>6,elementary_stream_priority_indicator:(32&n[1])>>>5}:{}},t.prototype.handleSectionSlice=function(e,t,i,n){var r=new Uint8Array(e,t,i),o=this.section_slice_queues_?this.section_slice_queues_[n.pid]:{};if(n.payload_unit_start_indicator){var a=r[0];if(void 0!==o&&0!==(null==o?void 0:o.total_length)){var s=new Uint8Array(e,t+1,Math.min(i,a));o.slices.push(s),o.total_length+=s.byteLength,o.total_length===o.expected_length?this.emitSectionSlices(o,n):this.clearSlices(o,n)}for(var d=1+a;d=o.expected_length&&this.clearSlices(o,n),d+=s.byteLength}}else void 0!==o&&0!==o.total_length&&(s=new Uint8Array(e,t,Math.min(i,o.expected_length-o.total_length)),o.slices.push(s),o.total_length+=s.byteLength,o.total_length===o.expected_length?this.emitSectionSlices(o,n):o.total_length>=o.expected_length&&this.clearSlices(o,n))},t.prototype.handlePESSlice=function(e,t,i,n){var o=new Uint8Array(e,t,i),a=o[0]<<16|o[1]<<8|o[2],s=(o[3],o[4]<<8|o[5]);if(n.payload_unit_start_indicator){if(1!==a)return void r.A.e(this.TAG,"handlePESSlice: packet_start_code_prefix should be 1 but with value ".concat(a));var d=this.pes_slice_queues_[n.pid];d&&(0===d.expected_length||d.expected_length===d.total_length?this.emitPESSlices(d,n):this.clearSlices(d,n)),this.pes_slice_queues_&&(this.pes_slice_queues_[n.pid]=new I,this.pes_slice_queues_[n.pid].file_position=n.file_position,this.pes_slice_queues_[n.pid].random_access_indicator=n.random_access_indicator)}if(void 0!==this.pes_slice_queues_[n.pid]){var l=this.pes_slice_queues_[n.pid];l.slices.push(o),n.payload_unit_start_indicator&&(l.expected_length=0===s?0:s+6),l.total_length+=o.byteLength,l.expected_length>0&&l.expected_length===l.total_length?this.emitPESSlices(l,n):l.expected_length>0&&l.expected_length>>6,s=t[8],d=void 0,l=void 0;2!==a&&3!==a||(d=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,l=3===a?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:d);var c=9+s,h=void 0;if(0!==o){if(o<3+s)return void r.A.v(this.TAG,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");h=o-3-s}else h=t.byteLength-c;var u=t.subarray(c,c+h);switch(e.stream_type){case T.kMPEG1Audio:case T.kMPEG2Audio:this.parseMP3Payload(u,d);break;case T.kPESPrivateData:this.pmt_.common_pids.opus===e.pid?this.parseOpusPayload(u,d):this.pmt_.common_pids.ac3===e.pid?this.parseAC3Payload(u,d):this.pmt_.common_pids.eac3===e.pid?this.parseEAC3Payload(u,d):this.pmt_.smpte2038_pids[e.pid]?this.parseSMPTE2038MetadataPayload(u,d,l,e.pid,n):this.parsePESPrivateDataPayload(u,d,l,e.pid,n);break;case T.kADTSAAC:this.parseADTSAACPayload(u,d);break;case T.kLOASAAC:this.parseLOASAACPayload(u,d);break;case T.kAC3:this.parseAC3Payload(u,d);break;case T.kEAC3:this.parseEAC3Payload(u,d);break;case T.kID3:this.parseTimedID3MetadataPayload(u,d,l,e.pid,n);break;case T.kH264:this.parseH264Payload(u,d,l,e.file_position,e.random_access_indicator);break;case T.kH265:this.parseH265Payload(u,d,l,e.file_position,e.random_access_indicator)}}else 188!==n&&191!==n&&240!==n&&241!==n&&255!==n&&242!==n&&248!==n||e.stream_type!==T.kPESPrivateData||(c=6,h=void 0,h=0!==o?o:t.byteLength-c,u=t.subarray(c,c+h),this.parsePESPrivateDataPayload(u,void 0,void 0,e.pid,n));else r.A.e(this.TAG,"parsePES: packet_start_code_prefix should be 1 but with value ".concat(i))},t.prototype.parsePAT=function(e){var t=e[0];if(0===t){var i=(15&e[1])<<8|e[2],n=(e[3],e[4],(62&e[5])>>>1),o=1&e[5],a=e[6],s=(e[7],null);if(1===o&&0===a)(s=new B).version_number=n;else if(null==(s=this.pat_))return;for(var d=i-5-4,l=-1,c=-1,h=8;h<8+d;h+=4){var u=e[h]<<8|e[h+1],A=(31&e[h+2])<<8|e[h+3];0===u?s.network_pid=A:(s.program_pmt_pid[u]=A,-1===l&&(l=u),-1===c&&(c=A))}1===o&&0===a&&(void 0===this.pat_&&r.A.v(this.TAG,"Parsed first PAT: ".concat(JSON.stringify(s))),this.pat_=s,this.current_program_=l,this.current_pmt_pid_=c)}else r.A.e(this.TAG,"parsePAT: table_id ".concat(t," is not corresponded to PAT!"))},t.prototype.parsePMT=function(e){var t=e[0];if(2===t){var i=(15&e[1])<<8|e[2],n=e[3]<<8|e[4],o=(62&e[5])>>>1,a=1&e[5],s=e[6],d=(e[7],null);if(1===a&&0===s)(d=new C).program_number=n,d.version_number=o,this.program_pmt_map_[n]=d;else if(null==(d=this.program_pmt_map_[n]))return;e[8],e[9];for(var l=(15&e[10])<<8|e[11],c=12+l,h=i-9-l-4,u=c;u0){for(var v=u+5;v1&&(r.A.w(this.TAG,"AAC: Detected pts overlapped, "+"expected: ".concat(l,"ms, PES pts: ").concat(d,"ms")),d=l)}}for(var c=new Q(e),h=null,u=d,A=0;null!=(h=c.readNextAACFrame());){s=1024/h.sampling_frequency*1e3;var p={codec:"aac",data:h};this.audio_init_segment_dispatched_?this.detectAudioMetadataChange(p)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(p)):(this.audio_metadata_={codec:"aac",audio_object_type:h.audio_object_type,sampling_freq_index:h.sampling_freq_index,sampling_frequency:h.sampling_frequency,channel_config:h.channel_config},this.dispatchAudioInitSegment(p)),A=u;var _=Math.floor(u),f={unit:h.data,length:h.data.byteLength,pts:_,dts:_};this.audio_track_&&(null===(o=this.audio_track_)||void 0===o||o.samples.push(f),this.audio_track_.length+=h.data.byteLength),u+=s}c.hasIncompleteData()&&(this.aac_last_incomplete_data_=c.getIncompleteData()),A&&(this.aac_last_sample_pts_=A)}},t.prototype.parseLOASAACPayload=function(e,t){var i,n,o;if(!this.has_video_||this.video_init_segment_dispatched_){if(this.aac_last_incomplete_data_){var a=new Uint8Array(e.byteLength+this.aac_last_incomplete_data_.byteLength);a.set(this.aac_last_incomplete_data_,0),a.set(e,this.aac_last_incomplete_data_.byteLength),e=a}var s,d=0;if(void 0!==t&&(d=t/this.timescale_),"aac"===(null===(i=this.audio_metadata_)||void 0===i?void 0:i.codec)){if(void 0===t&&void 0!==this.aac_last_sample_pts_)s=1024/this.audio_metadata_.sampling_frequency*1e3,d=this.aac_last_sample_pts_+s;else if(void 0===t)return void r.A.w(this.TAG,"AAC: Unknown pts");if(this.aac_last_incomplete_data_&&this.aac_last_sample_pts_){s=1024/this.audio_metadata_.sampling_frequency*1e3;var l=this.aac_last_sample_pts_+s;Math.abs(l-d)>1&&(r.A.w(this.TAG,"AAC: Detected pts overlapped, "+"expected: ".concat(l,"ms, PES pts: ").concat(d,"ms")),d=l)}}for(var c=new z(e),h=null,u=d,A=0;null!=(h=c.readNextAACFrame(null!==(n=this.loas_previous_frame)&&void 0!==n?n:void 0));){this.loas_previous_frame=h,s=1024/h.sampling_frequency*1e3;var p={codec:"aac",data:h};this.audio_init_segment_dispatched_?this.detectAudioMetadataChange(p)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(p)):(this.audio_metadata_={codec:"aac",audio_object_type:h.audio_object_type,sampling_freq_index:h.sampling_freq_index,sampling_frequency:h.sampling_frequency,channel_config:h.channel_config},this.dispatchAudioInitSegment(p)),A=u;var _=Math.floor(u),f={unit:h.data,length:h.data.byteLength,pts:_,dts:_};this.audio_track_&&(null===(o=this.audio_track_)||void 0===o||o.samples.push(f),this.audio_track_.length+=h.data.byteLength),u+=s}c.hasIncompleteData()&&(this.aac_last_incomplete_data_=c.getIncompleteData()),A&&(this.aac_last_sample_pts_=A)}},t.prototype.parseAC3Payload=function(e,t){var i,n;if(!this.has_video_||this.video_init_segment_dispatched_){var o,a=0;if(void 0!==t&&(a=t/this.timescale_),"ac-3"===(null===(i=this.audio_metadata_)||void 0===i?void 0:i.codec))if(void 0===t&&void 0!==this.aac_last_sample_pts_)o=1536/this.audio_metadata_.sampling_frequency*1e3,a=this.aac_last_sample_pts_+o;else if(void 0===t)return void r.A.w(this.TAG,"AC3: Unknown pts");for(var s=new fe(e),d=null,l=a,c=0;null!=(d=s.readNextAC3Frame());){o=1536/d.sampling_frequency*1e3;var h={codec:"ac-3",data:d};this.audio_init_segment_dispatched_?this.detectAudioMetadataChange(h)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(h)):(this.audio_metadata_={codec:"ac-3",sampling_frequency:d.sampling_frequency,bit_stream_identification:d.bit_stream_identification,bit_stream_mode:d.bit_stream_mode,low_frequency_effects_channel_on:d.low_frequency_effects_channel_on,channel_mode:d.channel_mode},this.dispatchAudioInitSegment(h)),c=l;var u=Math.floor(l),A={unit:d.data,length:d.data.byteLength,pts:u,dts:u};this.audio_track_&&(null===(n=this.audio_track_)||void 0===n||n.samples.push(A),this.audio_track_.length+=d.data.byteLength),l+=o}c&&(this.aac_last_sample_pts_=c)}},t.prototype.parseEAC3Payload=function(e,t){var i,n;if(!this.has_video_||this.video_init_segment_dispatched_){var o,a=0;if(void 0!==t&&(a=t/this.timescale_),"ec-3"===(null===(i=this.audio_metadata_)||void 0===i?void 0:i.codec))if(void 0===t&&void 0!==this.aac_last_sample_pts_)o=256*(this.audio_metadata_.num_blks||0)/(this.audio_metadata_.sampling_frequency||0)*1e3,a=this.aac_last_sample_pts_+o;else if(void 0===t)return void r.A.w(this.TAG,"EAC3: Unknown pts");for(var s=new ge(e),d=null,l=a,c=0;null!=(d=s.readNextEAC3Frame());){o=1536/d.sampling_frequency*1e3;var h={codec:"ec-3",data:d};this.audio_init_segment_dispatched_?this.detectAudioMetadataChange(h)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(h)):(this.audio_metadata_={codec:"ec-3",sampling_frequency:d.sampling_frequency,bit_stream_identification:d.bit_stream_identification,low_frequency_effects_channel_on:d.low_frequency_effects_channel_on,num_blks:d.num_blks,channel_mode:d.channel_mode},this.dispatchAudioInitSegment(h)),c=l;var u=Math.floor(l),A={unit:d.data,length:d.data.byteLength,pts:u,dts:u};this.audio_track_&&(null===(n=this.audio_track_)||void 0===n||n.samples.push(A),this.audio_track_.length+=d.data.byteLength),l+=o}c&&(this.aac_last_sample_pts_=c)}},t.prototype.parseOpusPayload=function(e,t){var i,n;if(!this.has_video_||this.video_init_segment_dispatched_){var o,a=0;if(void 0!==t&&(a=t/this.timescale_),"opus"===(null===(i=this.audio_metadata_)||void 0===i?void 0:i.codec))if(void 0===t&&void 0!==this.aac_last_sample_pts_)o=20,a=this.aac_last_sample_pts_+o;else if(void 0===t)return void r.A.w(this.TAG,"Opus: Unknown pts");for(var s=a,d=0,l=0;l>>3&3,r=(6&e[1])>>1,o=(e[2],(12&e[2])>>>2),a=3&~(e[3]>>>6)?2:1,s=0,d=34;switch(n){case 0:s=[11025,12e3,8e3,0][o];break;case 2:s=[22050,24e3,16e3,0][o];break;case 3:s=[44100,48e3,32e3,0][o]}switch(r){case 1:d=34;break;case 2:d=33;break;case 3:d=32}var l=new Ae;l.object_type=d,l.sample_rate=s,l.channel_count=a,l.data=e;var c={codec:"mp3",data:l};this.audio_init_segment_dispatched_?this.detectAudioMetadataChange(c)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(c)):(this.audio_metadata_={codec:"mp3",object_type:d,sample_rate:s,channel_count:a},this.dispatchAudioInitSegment(c));var h={unit:e,length:e.byteLength,pts:t/this.timescale_,dts:t/this.timescale_};this.audio_track_&&(null===(i=this.audio_track_)||void 0===i||i.samples.push(h),this.audio_track_.length+=e.byteLength)}},t.prototype.detectAudioMetadataChange=function(e){var t,i,n,o;if(e.codec!==(null===(t=this.audio_metadata_)||void 0===t?void 0:t.codec))return r.A.v(this.TAG,"Audio: Audio Codecs changed from "+"".concat(null===(i=this.audio_metadata_)||void 0===i?void 0:i.codec," to ").concat(e.codec)),!0;if("aac"===e.codec&&"aac"===this.audio_metadata_.codec){if((a=e.data).audio_object_type!==this.audio_metadata_.audio_object_type)return r.A.v(this.TAG,"AAC: AudioObjectType changed from "+"".concat(this.audio_metadata_.audio_object_type," to ").concat(a.audio_object_type)),!0;if(a.sampling_freq_index!==this.audio_metadata_.sampling_freq_index)return r.A.v(this.TAG,"AAC: SamplingFrequencyIndex changed from "+"".concat(this.audio_metadata_.sampling_freq_index," to ").concat(a.sampling_freq_index)),!0;if(a.channel_config!==this.audio_metadata_.channel_config)return r.A.v(this.TAG,"AAC: Channel configuration changed from "+"".concat(null===(n=this.audio_metadata_)||void 0===n?void 0:n.channel_config," to ").concat(a.channel_config)),!0}else if("ac-3"===e.codec&&"ac-3"===this.audio_metadata_.codec){var a;if((a=e.data).sampling_frequency!==this.audio_metadata_.sampling_frequency)return r.A.v(this.TAG,"AC3: Sampling Frequency changed from "+"".concat(null===(o=this.audio_metadata_)||void 0===o?void 0:o.sampling_frequency," to ").concat(a.sampling_frequency)),!0;if(a.bit_stream_identification!==this.audio_metadata_.bit_stream_identification)return r.A.v(this.TAG,"AC3: Bit Stream Identification changed from "+"".concat(this.audio_metadata_.bit_stream_identification," to ").concat(a.bit_stream_identification)),!0;if(a.bit_stream_mode!==this.audio_metadata_.bit_stream_mode)return r.A.v(this.TAG,"AC3: BitStream Mode changed from "+"".concat(this.audio_metadata_.bit_stream_mode," to ").concat(a.bit_stream_mode)),!0;if(a.channel_mode!==this.audio_metadata_.channel_mode)return r.A.v(this.TAG,"AC3: Channel Mode changed from "+"".concat(this.audio_metadata_.channel_mode," to ").concat(a.channel_mode)),!0;if(a.low_frequency_effects_channel_on!==this.audio_metadata_.low_frequency_effects_channel_on)return r.A.v(this.TAG,"AC3: Low Frequency Effects Channel On changed from "+"".concat(this.audio_metadata_.low_frequency_effects_channel_on," to ").concat(a.low_frequency_effects_channel_on)),!0}else if("opus"===e.codec&&"opus"===this.audio_metadata_.codec){if((s=e.meta).sample_rate!==this.audio_metadata_.sample_rate)return r.A.v(this.TAG,"Opus: SamplingFrequencyIndex changed from "+"".concat(this.audio_metadata_.sample_rate," to ").concat(s.sample_rate)),!0;if(s.channel_count!==this.audio_metadata_.channel_count)return r.A.v(this.TAG,"Opus: Channel count changed from "+"".concat(this.audio_metadata_.channel_count," to ").concat(s.channel_count)),!0}else if("mp3"===e.codec&&"mp3"===this.audio_metadata_.codec){var s;if((s=e.data).object_type!==this.audio_metadata_.object_type)return r.A.v(this.TAG,"MP3: AudioObjectType changed from "+"".concat(this.audio_metadata_.object_type," to ").concat(s.object_type)),!0;if(s.sample_rate!==this.audio_metadata_.sample_rate)return r.A.v(this.TAG,"MP3: SamplingFrequencyIndex changed from "+"".concat(this.audio_metadata_.sample_rate," to ").concat(s.sample_rate)),!0;if(s.channel_count!==this.audio_metadata_.channel_count)return r.A.v(this.TAG,"MP3: Channel count changed from "+"".concat(this.audio_metadata_.channel_count," to ").concat(s.channel_count)),!0}return!1},t.prototype.dispatchAudioInitSegment=function(e){var t,i,n,o,a,s,d={type:"audio"};if(d.id=null===(t=this.audio_track_)||void 0===t?void 0:t.id,d.timescale=1e3,d.duration=this.duration_,"aac"===(null===(i=this.audio_metadata_)||void 0===i?void 0:i.codec)){var l="aac"===e.codec?e.data:null,c=new H(l);d.audioSampleRate=c.sampling_rate,d.channelCount=c.channel_count,d.codec=c.codec_mimetype,d.originalCodec=c.original_codec_mimetype,d.config=c.config,d.refSampleDuration=1024/d.audioSampleRate*d.timescale}else if("ac-3"===(null===(n=this.audio_metadata_)||void 0===n?void 0:n.codec)){var h="ac-3"===e.codec?e.data:null,u=new me(h);d.audioSampleRate=u.sampling_rate,d.channelCount=u.channel_count,d.codec=u.codec_mimetype,d.originalCodec=u.original_codec_mimetype,d.config=u.config,d.refSampleDuration=1536/d.audioSampleRate*d.timescale}else if("ec-3"===(null===(o=this.audio_metadata_)||void 0===o?void 0:o.codec)){var A="ec-3"===e.codec?e.data:null,p=new ye(A);d.audioSampleRate=p.sampling_rate,d.channelCount=p.channel_count,d.codec=p.codec_mimetype,d.originalCodec=p.original_codec_mimetype,d.config=p.config,d.refSampleDuration=256*p.num_blks/d.audioSampleRate*d.timescale}else"opus"===(null===(a=this.audio_metadata_)||void 0===a?void 0:a.codec)?(d.audioSampleRate=this.audio_metadata_.sample_rate,d.channelCount=this.audio_metadata_.channel_count,d.channelConfigCode=this.audio_metadata_.channel_config_code,d.codec="opus",d.originalCodec="opus",d.config=void 0,d.refSampleDuration=20):"mp3"===(null===(s=this.audio_metadata_)||void 0===s?void 0:s.codec)&&(d.audioSampleRate=this.audio_metadata_.sample_rate,d.channelCount=this.audio_metadata_.channel_count,d.codec="mp3",d.originalCodec="mp3",d.config=void 0);this.audio_init_segment_dispatched_||r.A.v(this.TAG,"Generated first AudioSpecificConfig for mimeType: ".concat(d.codec)),this.onTrackMetadata&&this.onTrackMetadata("audio",d),this.audio_init_segment_dispatched_=!0,this.video_metadata_changed_=!1;var _=this.media_info_;_.hasAudio=!0,_.audioCodec=d.originalCodec,_.audioSampleRate=d.audioSampleRate,_.audioChannelCount=d.channelCount,_.hasVideo&&_.videoCodec?_.mimeType='video/mp2t; codecs="'.concat(_.videoCodec,",").concat(_.audioCodec,'"'):_.mimeType='video/mp2t; codecs="'.concat(_.audioCodec,'"'),_.isComplete()&&this.onMediaInfo&&this.onMediaInfo(_)},t.prototype.dispatchPESPrivateDataDescriptor=function(e,t,i){var n=new X;n.pid=e,n.stream_type=t,n.descriptor=i,this.onPESPrivateDataDescriptor&&this.onPESPrivateDataDescriptor(n)},t.prototype.parsePESPrivateDataPayload=function(e,t,i,n,r){var o=new q;if(o.pid=n,o.stream_id=r,o.len=e.byteLength,o.data=e,void 0!==t){var a=Math.floor(t/this.timescale_);o.pts=a}else o.nearest_pts=this.aac_last_sample_pts_;if(void 0!==i){var s=Math.floor(i/this.timescale_);o.dts=s}this.onPESPrivateData&&this.onPESPrivateData(o)},t.prototype.parseTimedID3MetadataPayload=function(e,t,i,n,r){var o=new q;if(o.pid=n,o.stream_id=r,o.len=e.byteLength,o.data=e,void 0!==t){var a=Math.floor(t/this.timescale_);o.pts=a}if(void 0!==i){var s=Math.floor(i/this.timescale_);o.dts=s}this.onTimedID3Metadata&&this.onTimedID3Metadata(o)},t.prototype.parseSMPTE2038MetadataPayload=function(e,t,i,n,r){var o=new ue;if(o.pid=n,o.stream_id=r,o.len=e.byteLength,o.data=e,void 0!==t){var a=Math.floor(t/this.timescale_);o.pts=a}if(o.nearest_pts=this.aac_last_sample_pts_,void 0!==i){var s=Math.floor(i/this.timescale_);o.dts=s}o.ancillaries=function(e){for(var t=new A(e),i=0,n=[];i+=6,0===t.readBits(6);){var r=t.readBool();i+=1;var o=t.readBits(11);i+=11;var a=t.readBits(12);i+=12;var s=255&t.readBits(10);i+=10;var d=255&t.readBits(10);i+=10;var l=255&t.readBits(10);i+=10;for(var c=new Uint8Array(l),h=0;h>>24&255,r[1]=n>>>16&255,r[2]=n>>>8&255,r[3]=255&n,r.set(e,4);var d=8;for(s=0;s>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,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]))},e.trak=function(t){return e.box(e.types.trak,e.tkhd(t),e.mdia(t))},e.tkhd=function(t){var i=t.id,n=t.duration,r=t.presentWidth,o=t.presentHeight;return e.box(e.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n,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,r>>>8&255,255&r,0,0,o>>>8&255,255&o,0,0]))},e.mdia=function(t){return e.box(e.types.mdia,e.mdhd(t),e.hdlr(t),e.minf(t))},e.mdhd=function(t){var i=t.timescale,n=t.duration;return e.box(e.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,n>>>24&255,n>>>16&255,n>>>8&255,255&n,85,196,0,0]))},e.hdlr=function(t){var i;return i="audio"===t.type?e.constants.HDLR_AUDIO:e.constants.HDLR_VIDEO,e.box(e.types.hdlr,i)},e.minf=function(t){var i;return i="audio"===t.type?e.box(e.types.smhd,e.constants.SMHD):e.box(e.types.vmhd,e.constants.VMHD),e.box(e.types.minf,i,e.dinf(),e.stbl(t))},e.dinf=function(){return e.box(e.types.dinf,e.box(e.types.dref,e.constants.DREF))},e.stbl=function(t){return e.box(e.types.stbl,e.stsd(t),e.box(e.types.stts,e.constants.STTS),e.box(e.types.stsc,e.constants.STSC),e.box(e.types.stsz,e.constants.STSZ),e.box(e.types.stco,e.constants.STCO))},e.stsd=function(t){return"audio"===t.type?"mp3"===t.codec?e.box(e.types.stsd,e.constants.STSD_PREFIX,e.mp3(t)):"ac-3"===t.codec?e.box(e.types.stsd,e.constants.STSD_PREFIX,e.ac3(t)):"ec-3"===t.codec?e.box(e.types.stsd,e.constants.STSD_PREFIX,e.ec3(t)):"opus"===t.codec?e.box(e.types.stsd,e.constants.STSD_PREFIX,e.Opus(t)):e.box(e.types.stsd,e.constants.STSD_PREFIX,e.mp4a(t)):"video"===t.type&&t.codec.startsWith("hvc1")?e.box(e.types.stsd,e.constants.STSD_PREFIX,e.hvc1(t)):"video"===t.type&&t.codec.startsWith("av01")?e.box(e.types.stsd,e.constants.STSD_PREFIX,e.av01(t)):e.box(e.types.stsd,e.constants.STSD_PREFIX,e.avc1(t))},e.mp3=function(t){var i=t.channelCount,n=t.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,i,0,16,0,0,0,0,n>>>8&255,255&n,0,0]);return e.box(e.types[".mp3"],r)},e.mp4a=function(t){var i=t.channelCount,n=t.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,i,0,16,0,0,0,0,n>>>8&255,255&n,0,0]);return e.box(e.types.mp4a,r,e.esds(t))},e.ac3=function(t){var i,n=t.channelCount,r=t.audioSampleRate,o=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,n,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return e.box(e.types["ac-3"],o,e.box(e.types.dac3,new Uint8Array(null!==(i=t.config)&&void 0!==i?i:[])))},e.ec3=function(t){var i,n=t.channelCount,r=t.audioSampleRate,o=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,n,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return e.box(e.types["ec-3"],o,e.box(e.types.dec3,new Uint8Array(null!==(i=t.config)&&void 0!==i?i:[])))},e.esds=function(t){var i,n=null!==(i=t.config)&&void 0!==i?i:[],r=n.length,o=new Uint8Array([0,0,0,0,3,23+r,0,1,0,4,15+r,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([r]).concat(n).concat([6,1,2]));return e.box(e.types.esds,o)},e.Opus=function(t){var i=t.channelCount,n=t.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,i,0,16,0,0,0,0,n>>>8&255,255&n,0,0]);return e.box(e.types.Opus,r,e.dOps(t))},e.dOps=function(t){var i=t.channelCount,n=t.channelConfigCode,r=t.audioSampleRate,o=[];switch(n){case 1:case 2:o=[0];break;case 0:o=[255,1,1,0,1];break;case 128:o=[255,2,0,0,1];break;case 3:o=[1,2,1,0,2,1];break;case 4:o=[1,2,2,0,1,2,3];break;case 5:o=[1,3,2,0,4,1,2,3];break;case 6:o=[1,4,2,0,4,1,2,3,5];break;case 7:o=[1,4,2,0,4,1,2,3,5,6];break;case 8:o=[1,5,3,0,6,1,2,3,4,5,7];break;case 130:o=[1,1,2,0,1];break;case 131:o=[1,1,3,0,1,2];break;case 132:o=[1,1,4,0,1,2,3];break;case 133:o=[1,1,5,0,1,2,3,4];break;case 134:o=[1,1,6,0,1,2,3,4,5];break;case 135:o=[1,1,7,0,1,2,3,4,5,6];break;case 136:o=[1,1,8,0,1,2,3,4,5,6,7]}var a=new Uint8Array(function(e,t,i){if(2===arguments.length)for(var n,r=0,o=t.length;r>>24&255,r>>>17&255,r>>>8&255,r>>>0&255,0,0],function(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,o=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=o.return)&&i.call(o)}finally{if(r)throw r.error}}return a}(o),!1));return e.box(e.types.dOps,a)},e.avc1=function(t){var i=t.avcc,n=t.codecWidth,r=t.codecHeight,o=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,n>>>8&255,255&n,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return e.box(e.types.avc1,o,e.box(e.types.avcC,i))},e.hvc1=function(t){var i=t.hvcc,n=t.codecWidth,r=t.codecHeight,o=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,n>>>8&255,255&n,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return e.box(e.types.hvc1,o,e.box(e.types.hvcC,i))},e.av01=function(t){var i,n,r=t.av1c,o=null!==(i=t.codecWidth)&&void 0!==i?i:192,a=null!==(n=t.codecHeight)&&void 0!==n?n:108,s=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,o>>>8&255,255&o,a>>>8&255,255&a,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return e.box(e.types.av01,s,e.box(e.types.av1C,r))},e.mvex=function(t){return e.box(e.types.mvex,e.trex(t))},e.trex=function(t){var i=t.id,n=new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return e.box(e.types.trex,n)},e.moof=function(t,i){return e.box(e.types.moof,e.mfhd(t.sequenceNumber),e.traf(t,i))},e.mfhd=function(t){var i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t]);return e.box(e.types.mfhd,i)},e.traf=function(t,i){var n=t.id,r=e.box(e.types.tfhd,new Uint8Array([0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n])),o=e.box(e.types.tfdt,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),a=e.sdtp(t),s=e.trun(t,a.byteLength+16+16+8+16+8+8);return e.box(e.types.traf,r,o,s,a)},e.sdtp=function(t){for(var i=t.samples||[],n=i.length,r=new Uint8Array(4+n),o=0;o>>24&255,r>>>16&255,r>>>8&255,255&r,i>>>24&255,i>>>16&255,i>>>8&255,255&i],0);for(var s=0;s>>24&255,d>>>16&255,d>>>8&255,255&d,l>>>24&255,l>>>16&255,l>>>8&255,255&l,c.isLeading<<2|c.dependsOn,c.isDependedOn<<6|c.hasRedundancy<<4|c.isNonSync,0,0,h>>>24&255,h>>>16&255,h>>>8&255,255&h],12+16*s)}return e.box(e.types.trun,a)},e.mdat=function(t){return e.box(e.types.mdat,t)},e.constants={FTYP:new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),STSD_PREFIX:new Uint8Array([0,0,0,0,0,0,0,1]),STTS:ke,STSC:ke,STCO:ke,STSZ:new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),HDLR_VIDEO: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]),HDLR_AUDIO: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]),DREF:new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),SMHD:new Uint8Array([0,0,0,0,0,0,0,0]),VMHD:new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])},e}();Ce.init();const Re=Ce,Oe=function(){function e(){}return e.getSilentFrame=function(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)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(6===t)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])}else{if(1===t)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(2===t)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(3===t)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])}return null},e}();var Ie=i(453);const xe=function(){function e(e){var t;this.TAG="MP4Remuxer",this._fillSilentAfterSeek=!1,this._config=e,this._isLive=!!e.isLive,this._dtsBase=-1,this._dtsBaseInited=!1,this._audioDtsBase=1/0,this._videoDtsBase=1/0,this._audioNextDts=void 0,this._videoNextDts=void 0,this._audioStashedLastSample=null,this._videoStashedLastSample=null,this._audioMeta=null,this._videoMeta=null,this._audioSegmentInfoList=new Ie.Sc("audio"),this._videoSegmentInfoList=new Ie.Sc("video"),this._onInitSegment=null,this._onMediaSegment=null,this._forceFirstIDR=!(!o.A.chrome||!(o.A.version&&o.A.version.major<50||o.A.version&&50===o.A.version.major&&((null===(t=o.A.version)||void 0===t?void 0:t.build)||0)<2661)),this._fillSilentAfterSeek=!(!o.A.msedge&&!o.A.msie),this._mp3UseMpegAudio=!o.A.firefox,this._fillAudioTimestampGap=this._config.fixAudioTimestampGap}return e.prototype.destroy=function(){this._dtsBase=-1,this._dtsBaseInited=!1,this._audioMeta=null,this._videoMeta=null,this._audioSegmentInfoList.clear(),this._audioSegmentInfoList=null,this._videoSegmentInfoList.clear(),this._videoSegmentInfoList=null,this._onInitSegment=null,this._onMediaSegment=null},e.prototype.bindDataSource=function(e){var t;return e.onDataAvailable=null===(t=this.remux)||void 0===t?void 0:t.bind(this),e.onTrackMetadata=this._onTrackMetadataReceived.bind(this),this},Object.defineProperty(e.prototype,"onInitSegment",{get:function(){return this._onInitSegment},set:function(e){this._onInitSegment=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onMediaSegment",{get:function(){return this._onMediaSegment},set:function(e){this._onMediaSegment=e},enumerable:!1,configurable:!0}),e.prototype.insertDiscontinuity=function(){this._audioNextDts=this._videoNextDts=void 0},e.prototype.seek=function(e){this._audioStashedLastSample=null,this._videoStashedLastSample=null,this._videoSegmentInfoList.clear(),this._audioSegmentInfoList.clear()},e.prototype.remux=function(e,t){if(!this._onMediaSegment)throw new c.j4("MP4Remuxer: onMediaSegment callback must be specificed!");this._dtsBaseInited||this._calculateDtsBase(e,t),t&&this._remuxVideo(t),e&&this._remuxAudio(e)},e.prototype._onTrackMetadataReceived=function(e,t){var i=null,n="mp4",r=t.codec;if("audio"===e)this._audioMeta=t,"mp3"===t.codec&&this._mp3UseMpegAudio?(n="mpeg",r="",i=new Uint8Array):i=Re.generateInitSegment(t);else{if("video"!==e)return;this._videoMeta=t,i=Re.generateInitSegment(t)}if(!this._onInitSegment)throw new c.j4("MP4Remuxer: onInitSegment callback must be specified!");this._onInitSegment(e,{type:e,data:i.buffer,codec:r,container:"".concat(e,"/").concat(n),mediaDuration:t.duration})},e.prototype._calculateDtsBase=function(e,t){var i,n;this._dtsBaseInited||((null===(i=null==e?void 0:e.samples)||void 0===i?void 0:i.length)&&(this._audioDtsBase=e.samples[0].dts),(null===(n=null==t?void 0:t.samples)||void 0===n?void 0:n.length)&&(this._videoDtsBase=t.samples[0].dts),this._dtsBase=Math.min(this._audioDtsBase,this._videoDtsBase),this._dtsBaseInited=!0)},e.prototype.getTimestampBase=function(){if(this._dtsBaseInited)return this._dtsBase},e.prototype.flushStashedSamples=function(){var e=this._videoStashedLastSample,t=this._audioStashedLastSample,i={type:"video",id:1,sequenceNumber:0,samples:[],length:0};null!=e&&(i.samples.push(e),i.length=null==e?void 0:e.length);var n={type:"audio",id:2,sequenceNumber:0,samples:[],length:0};null!=t&&(n.samples.push(t),n.length=null==t?void 0:t.length),this._videoStashedLastSample=null,this._audioStashedLastSample=null,this._remuxVideo(i,!0),this._remuxAudio(n,!0)},e.prototype._remuxAudio=function(e,t){var i,n,a,s,d,l,c;if(null!=this._audioMeta){var h,u,A=e,p=A.samples,_=-1,f=this._audioMeta.refSampleDuration,m="mp3"===this._audioMeta.codec&&this._mp3UseMpegAudio,v=this._dtsBaseInited&&void 0===this._audioNextDts,g=!1;if(p&&0!==p.length&&(1!==p.length||t)){var y=0,b=null,E=0;m?(y=0,E=A.length):(y=8,E=8+A.length);var S=null;if(p.length>1&&(E-=(S=p.pop()).length),null!=this._audioStashedLastSample){var w=this._audioStashedLastSample;this._audioStashedLastSample=null,p.unshift(w),E+=w.length}null!=S&&(this._audioStashedLastSample=S);var T=p[0].dts-this._dtsBase;if(this._audioNextDts)h=T-this._audioNextDts;else if(this._audioSegmentInfoList.isEmpty())h=0,this._fillSilentAfterSeek&&!this._videoSegmentInfoList.isEmpty()&&"mp3"!==this._audioMeta.originalCodec&&(g=!0);else{var B=this._audioSegmentInfoList.getLastSampleBefore(T);if(null!=B){var k=T-(B.originalDts+B.duration);k<=3&&(k=0),h=T-(B.dts+B.duration+k)}else h=0}if(g){var C=T-h,R=this._videoSegmentInfoList.getLastSegmentBefore(T);if(null!=R&&R.beginDts=3*(f||0)&&this._fillAudioTimestampGap&&!o.A.safari){P=!0;var N,G=Math.floor(h/(f||0));r.A.w(this.TAG,"Large audio timestamp gap detected, may cause AV sync to drift. Silent frames will be generated to avoid unsync.\n"+"originalDts: ".concat(M," ms, curRefDts: ").concat(V," ms, ")+"dtsCorrection: ".concat(Math.round(h)," ms, generate: ").concat(G," frames")),O=Math.floor(V),F=Math.floor(V+(f||0))-O,null==(N=Oe.getSilentFrame(null===(a=this._audioMeta)||void 0===a?void 0:a.originalCodec,this._audioMeta.channelCount))&&(r.A.w(this.TAG,"Unable to generate silent frame for "+"".concat(null===(s=this._audioMeta)||void 0===s?void 0:s.originalCodec," with ").concat(this._audioMeta.channelCount," channels, repeat last frame")),N=L),U=[];for(var W=0;W=1?null===(d=x[x.length-1])||void 0===d?void 0:d.duration:Math.floor(f||0),this._audioNextDts=O+F;-1===_&&(_=O),x.push({dts:O,pts:O,cts:0,unit:w.unit,size:null===(l=w.unit)||void 0===l?void 0:l.byteLength,duration:F,originalDts:M,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}),P&&x.push.apply(x,U)}}if(0===x.length)return A.samples=[],void(A.length=0);for(m?b=new Uint8Array(E):((b=new Uint8Array(E))[0]=E>>>24&255,b[1]=E>>>16&255,b[2]=E>>>8&255,b[3]=255&E,b.set(Re.types.mdat,4)),D=0;D1&&(A-=(p=d.pop()).length),null!=this._videoStashedLastSample){var _=this._videoStashedLastSample;this._videoStashedLastSample=null,d.unshift(_),A+=(null==_?void 0:_.length)||0}null!=p&&(this._videoStashedLastSample=p);var f=d[0].dts-this._dtsBase;if(this._videoNextDts)r=f-this._videoNextDts;else if(this._videoSegmentInfoList.isEmpty())r=0;else{var m=this._videoSegmentInfoList.getLastSampleBefore(f);if(null!=m){var v=f-(m.originalDts+m.duration);v<=3&&(v=0),r=f-(m.dts+m.duration+v)}else r=0}for(var g=new Ie.EZ,y=[],b=0;b=1?y[y.length-1].duration:Math.floor((null===(i=this._videoMeta)||void 0===i?void 0:i.refSampleDuration)||0),S){var C=new Ie.$_(w,B,k,_.dts,!0);C.fileposition=_.fileposition,g.appendSyncPoint(C)}y.push({dts:w,pts:B,cts:T,units:_.units,size:_.length,isKeyframe:S,duration:k,originalDts:E,flags:{isLeading:0,dependsOn:S?2:1,isDependedOn:S?1:0,hasRedundancy:0,isNonSync:S?0:1}})}for((u=new Uint8Array(A))[0]=A>>>24&255,u[1]=A>>>16&255,u[2]=A>>>8&255,u[3]=255&A,u.set(Re.types.mdat,4),b=0;b0)null===(i=this._demuxer)||void 0===i||i.bindDataSource(this._ioctl),this._demuxer.timestampBase=this._mediaDataSource.segments?null===(n=this._mediaDataSource.segments[this._currentSegmentIndex])||void 0===n?void 0:n.timestampBase:0,l=(null===(o=this._demuxer)||void 0===o?void 0:o.parseChunks(e,t))||0;else{var c=null;(c=S.probe(e)).match&&(this._setupFLVDemuxerRemuxer(c),l=(null===(a=this._demuxer)||void 0===a?void 0:a.parseChunks(e,t))||0),c.match||(null==c?void 0:c.needMoreData)||(c=Be.probe(e)).match&&(this._setupTSDemuxerRemuxer(c),l=(null===(s=this._demuxer)||void 0===s?void 0:s.parseChunks(e,t))||0),c.match||(null==c?void 0:c.needMoreData)||(c=null,r.A.e(this.TAG,"Non MPEG-TS/FLV, Unsupported media type!"),Promise.resolve().then((function(){d._internalAbort()})),this._emitter.emit(Le.A.DEMUX_ERROR,_.A.FORMAT_UNSUPPORTED,"Non MPEG-TS/FLV, Unsupported media type!"))}return l},e.prototype._setupFLVDemuxerRemuxer=function(e){var t;this._demuxer=new S(e,this._config),this._remuxer||(this._remuxer=new xe(this._config));var i=this._mediaDataSource;void 0===i.duration||isNaN(i.duration)||(this._demuxer.overridedDuration=i.duration),"boolean"==typeof i.hasAudio&&(this._demuxer.overridedHasAudio=i.hasAudio),"boolean"==typeof i.hasVideo&&(this._demuxer.overridedHasVideo=i.hasVideo),i.segments&&this._demuxer&&this._remuxer&&(this._demuxer.timestampBase=null===(t=null==i?void 0:i.segments[this._currentSegmentIndex])||void 0===t?void 0:t.timestampBase,this._demuxer.onError=this._onDemuxException.bind(this),this._demuxer.onMediaInfo=this._onMediaInfo.bind(this),this._demuxer.onMetaDataArrived=this._onMetaDataArrived.bind(this),this._demuxer.onScriptDataArrived=this._onScriptDataArrived.bind(this),this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl)),this._remuxer.onInitSegment=this._onRemuxerInitSegmentArrival.bind(this),this._remuxer.onMediaSegment=this._onRemuxerMediaSegmentArrival.bind(this))},e.prototype._setupTSDemuxerRemuxer=function(e){var t=this._demuxer=new Be(e,this._config);this._remuxer||(this._remuxer=new xe(this._config)),t.onError=this._onDemuxException.bind(this),t.onMediaInfo=this._onMediaInfo.bind(this),t.onMetaDataArrived=this._onMetaDataArrived.bind(this),t.onTimedID3Metadata=this._onTimedID3Metadata.bind(this),t.onSMPTE2038Metadata=this._onSMPTE2038Metadata.bind(this),t.onSCTE35Metadata=this._onSCTE35Metadata.bind(this),t.onPESPrivateDataDescriptor=this._onPESPrivateDataDescriptor.bind(this),t.onPESPrivateData=this._onPESPrivateData.bind(this),this._remuxer.bindDataSource(this._demuxer),this._demuxer.bindDataSource(this._ioctl),this._remuxer.onInitSegment=this._onRemuxerInitSegmentArrival.bind(this),this._remuxer.onMediaSegment=this._onRemuxerMediaSegmentArrival.bind(this)},e.prototype._onMediaInfo=function(e){var t,i,n=this;null==this._mediaInfo&&(this._mediaInfo=Object.assign({},e),this._mediaInfo.keyframesIndex=null,this._mediaInfo.segments=[],this._mediaInfo.segmentCount=(null===(i=null===(t=this._mediaDataSource)||void 0===t?void 0:t.segments)||void 0===i?void 0:i.length)||0,Object.setPrototypeOf(this._mediaInfo,a.A.prototype));var r=Object.assign({},e);Object.setPrototypeOf(r,a.A.prototype),this._mediaInfo.segments&&(this._mediaInfo.segments[this._currentSegmentIndex]=r),this._reportSegmentMediaInfo(this._currentSegmentIndex),null!=this._pendingSeekTime&&Promise.resolve().then((function(){var e=n._pendingSeekTime;n._pendingSeekTime=null,n.seek(e)}))},e.prototype._onMetaDataArrived=function(e){this._emitter.emit(Le.A.METADATA_ARRIVED,e)},e.prototype._onScriptDataArrived=function(e){this._emitter.emit(Le.A.SCRIPTDATA_ARRIVED,e)},e.prototype._onTimedID3Metadata=function(e){var t,i=null===(t=this._remuxer)||void 0===t?void 0:t.getTimestampBase();void 0!==i&&(void 0!==e.pts&&(e.pts-=i),void 0!==e.dts&&(e.dts-=i),this._emitter.emit(Le.A.TIMED_ID3_METADATA_ARRIVED,e))},e.prototype._onSMPTE2038Metadata=function(e){var t,i=null===(t=this._remuxer)||void 0===t?void 0:t.getTimestampBase();void 0!==i&&(void 0!==e.pts&&(e.pts-=i),void 0!==e.dts&&(e.dts-=i),void 0!==e.nearest_pts&&(e.nearest_pts-=i),this._emitter.emit(Le.A.SMPTE2038_METADATA_ARRIVED,e))},e.prototype._onSCTE35Metadata=function(e){var t,i=null===(t=this._remuxer)||void 0===t?void 0:t.getTimestampBase();void 0!==i&&(void 0!==e.pts&&(e.pts-=i),void 0!==e.nearest_pts&&(e.nearest_pts-=i),this._emitter.emit(Le.A.SCTE35_METADATA_ARRIVED,e))},e.prototype._onPESPrivateDataDescriptor=function(e){this._emitter.emit(Le.A.PES_PRIVATE_DATA_DESCRIPTOR,e)},e.prototype._onPESPrivateData=function(e){var t,i=null===(t=this._remuxer)||void 0===t?void 0:t.getTimestampBase();void 0!==i&&(void 0!==e.pts&&(e.pts-=i),void 0!==e.nearest_pts&&(e.nearest_pts-=i),void 0!==e.dts&&(e.dts-=i),this._emitter.emit(Le.A.PES_PRIVATE_DATA_ARRIVED,e))},e.prototype._onIOSeeked=function(){var e;null===(e=this._remuxer)||void 0===e||e.insertDiscontinuity()},e.prototype._onIOComplete=function(e){var t,i,n=e+1;n<((null===(i=null===(t=this._mediaDataSource)||void 0===t?void 0:t.segments)||void 0===i?void 0:i.length)||0)?(this._internalAbort(),this._remuxer&&this._remuxer.flushStashedSamples(),this._loadSegment(n)):(this._remuxer&&this._remuxer.flushStashedSamples(),this._emitter.emit(Le.A.LOADING_COMPLETE),this._disableStatisticsReporter())},e.prototype._onIORedirect=function(e){var t,i=null===(t=this._ioctl)||void 0===t?void 0:t.extraData;this._mediaDataSource.segments&&(this._mediaDataSource.segments[i].redirectedURL=e)},e.prototype._onIORecoveredEarlyEof=function(){this._emitter.emit(Le.A.RECOVERED_EARLY_EOF)},e.prototype._onIOException=function(e,t){r.A.e(this.TAG,"IOException: type = ".concat(e,", code = ").concat(t.code,", msg = ").concat(t.msg)),this._emitter.emit(Le.A.IO_ERROR,e,t),this._disableStatisticsReporter()},e.prototype._onDemuxException=function(e,t){r.A.e(this.TAG,"DemuxException: type = ".concat(e,", info = ").concat(t)),this._emitter.emit(Le.A.DEMUX_ERROR,e,t)},e.prototype._onRemuxerInitSegmentArrival=function(e,t){this._emitter.emit(Le.A.INIT_SEGMENT,e,t)},e.prototype._onRemuxerMediaSegmentArrival=function(e,t){if(null==this._pendingSeekTime&&(this._emitter.emit(Le.A.MEDIA_SEGMENT,e,t),null!=this._pendingResolveSeekPoint&&"video"===e)){var i=t.info.syncPoints,n=this._pendingResolveSeekPoint;this._pendingResolveSeekPoint=null,o.A.safari&&i.length>0&&i[0].originalDts===n&&(n=i[0].pts),this._emitter.emit(Le.A.RECOMMEND_SEEKPOINT,n)}},e.prototype._enableStatisticsReporter=function(){null==this._statisticsReporter&&this._reportStatisticsInfo&&(this._statisticsReporter=self.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval))},e.prototype._disableStatisticsReporter=function(){this._statisticsReporter&&(self.clearInterval(this._statisticsReporter),this._statisticsReporter=null)},e.prototype._reportSegmentMediaInfo=function(e){var t,i,n,r,o=(null===(t=this._mediaInfo)||void 0===t?void 0:t.segments)?null===(i=this._mediaInfo)||void 0===i?void 0:i.segments[e]:{},a=Object.assign({},o);a.duration=null===(n=this._mediaInfo)||void 0===n?void 0:n.duration,a.segmentCount=null===(r=this._mediaInfo)||void 0===r?void 0:r.segmentCount,delete a.segments,delete a.keyframesIndex,this._emitter.emit(Le.A.MEDIA_INFO,a)},e.prototype._reportStatisticsInfo=function(){var e,t,i,n,r,o,a={};a.url=null===(e=this._ioctl)||void 0===e?void 0:e.currentURL,a.hasRedirect=null===(t=this._ioctl)||void 0===t?void 0:t.hasRedirect,a.hasRedirect&&(a.redirectedURL=null===(i=this._ioctl)||void 0===i?void 0:i.currentRedirectedURL),a.speed=null===(n=this._ioctl)||void 0===n?void 0:n.currentSpeed,a.loaderType=null===(r=this._ioctl)||void 0===r?void 0:r.loaderType,a.currentSegmentIndex=this._currentSegmentIndex,a.totalSegmentCount=null===(o=this._mediaDataSource.segments)||void 0===o?void 0:o.length,this._emitter.emit(Le.A.STATISTICS_INFO,a)},e}()},716:(e,t,i)=>{i.d(t,{A:()=>n});const n={IO_ERROR:"io_error",DEMUX_ERROR:"demux_error",INIT_SEGMENT:"init_segment",MEDIA_SEGMENT:"media_segment",LOADING_COMPLETE:"loading_complete",RECOVERED_EARLY_EOF:"recovered_early_eof",MEDIA_INFO:"media_info",METADATA_ARRIVED:"metadata_arrived",SCRIPTDATA_ARRIVED:"scriptdata_arrived",TIMED_ID3_METADATA_ARRIVED:"timed_id3_metadata_arrived",SMPTE2038_METADATA_ARRIVED:"smpte2038_metadata_arrived",SCTE35_METADATA_ARRIVED:"scte35_metadata_arrived",PES_PRIVATE_DATA_DESCRIPTOR:"pes_private_data_descriptor",PES_PRIVATE_DATA_ARRIVED:"pes_private_data_arrived",STATISTICS_INFO:"statistics_info",RECOMMEND_SEEKPOINT:"recommend_seekpoint"}},291:(e,t,i)=>{var n=i(641),r=i(976),o=i(716),a=null,s=function(e,t){self.postMessage({msg:"logcat_callback",data:{type:e,logcat:t}})};function d(e,t){var i={msg:o.A.INIT_SEGMENT,data:{type:e,data:t}};self.postMessage(i,[t.data])}function l(e,t){var i={msg:o.A.MEDIA_SEGMENT,data:{type:e,data:t}};self.postMessage(i,[t.data])}function c(){var e={msg:o.A.LOADING_COMPLETE};self.postMessage(e)}function h(){var e={msg:o.A.RECOVERED_EARLY_EOF};self.postMessage(e)}function u(e){var t={msg:o.A.MEDIA_INFO,data:e};self.postMessage(t)}function A(e){var t={msg:o.A.METADATA_ARRIVED,data:e};self.postMessage(t)}function p(e){var t={msg:o.A.SCRIPTDATA_ARRIVED,data:e};self.postMessage(t)}function _(e){var t={msg:o.A.TIMED_ID3_METADATA_ARRIVED,data:e};self.postMessage(t)}function f(e){var t={msg:o.A.SMPTE2038_METADATA_ARRIVED,data:e};self.postMessage(t)}function m(e){var t={msg:o.A.SCTE35_METADATA_ARRIVED,data:e};self.postMessage(t)}function v(e){var t={msg:o.A.PES_PRIVATE_DATA_DESCRIPTOR,data:e};self.postMessage(t)}function g(e){var t={msg:o.A.PES_PRIVATE_DATA_ARRIVED,data:e};self.postMessage(t)}function y(e){var t={msg:o.A.STATISTICS_INFO,data:e};self.postMessage(t)}function b(e,t){self.postMessage({msg:o.A.IO_ERROR,data:{type:e,info:t}})}function E(e,t){self.postMessage({msg:o.A.DEMUX_ERROR,data:{type:e,info:t}})}function S(e){self.postMessage({msg:o.A.RECOMMEND_SEEKPOINT,data:e})}self.addEventListener("message",(function(e){switch(e.data.cmd){case"init":(a=new r.A(e.data.param[0],e.data.param[1])).on(o.A.IO_ERROR,b),a.on(o.A.DEMUX_ERROR,E),a.on(o.A.INIT_SEGMENT,d),a.on(o.A.MEDIA_SEGMENT,l),a.on(o.A.LOADING_COMPLETE,c),a.on(o.A.RECOVERED_EARLY_EOF,h),a.on(o.A.MEDIA_INFO,u),a.on(o.A.METADATA_ARRIVED,A),a.on(o.A.SCRIPTDATA_ARRIVED,p),a.on(o.A.TIMED_ID3_METADATA_ARRIVED,_),a.on(o.A.SMPTE2038_METADATA_ARRIVED,f),a.on(o.A.SCTE35_METADATA_ARRIVED,m),a.on(o.A.PES_PRIVATE_DATA_DESCRIPTOR,v),a.on(o.A.PES_PRIVATE_DATA_ARRIVED,g),a.on(o.A.STATISTICS_INFO,y),a.on(o.A.RECOMMEND_SEEKPOINT,S);break;case"destroy":a&&(a.destroy(),a=null),self.postMessage({msg:"destroyed"});break;case"start":null==a||a.start();break;case"stop":null==a||a.stop();break;case"seek":null==a||a.seek(e.data.param);break;case"pause":null==a||a.pause();break;case"resume":null==a||a.resume();break;case"logging_config":var t=e.data.param;n.A.applyConfig(t),!0===t.enableCallback?n.A.addLogListener(s):n.A.removeLogListener(s)}}))},465:(e,t,i)=>{i.d(t,{A:()=>n});const n={OK:"OK",FORMAT_ERROR:"FormatError",FORMAT_UNSUPPORTED:"FormatUnsupported",CODEC_UNSUPPORTED:"CodecUnsupported"}},133:(e,t,i)=>{i.d(t,{default:()=>Q});var n={h264:1,h265:2,h266:4,vp8:8,vp9:16,av1:32},r=i(302),o={enableWorker:!1,enableStashBuffer:!0,stashInitialSize:void 0,isLive:!1,liveBufferLatencyChasing:!1,liveBufferLatencyMaxLatency:1.5,liveBufferLatencyMinRemain:.5,lazyLoad:!0,lazyLoadMaxDuration:180,lazyLoadRecoverDuration:30,deferLoadAfterSourceOpen:!0,autoCleanupMaxBackwardDuration:180,autoCleanupMinBackwardDuration:120,statisticsInfoReportInterval:600,fixAudioTimestampGap:!0,accurateSeek:!1,seekType:"range",seekParamStart:"bstart",seekParamEnd:"bend",rangeLoadZeroStart:!1,customSeekHandler:void 0,reuseRedirectedURL:!1,headers:void 0,customLoader:void 0,url:void 0,redirectedURL:void 0,cors:!1};function a(){return Object.assign({},o)}var s=function(){function e(){}return e.supportMSEH264Playback=function(){var e;return null===(e=window.MediaSource)||void 0===e?void 0:e.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')},e.supportMSEH265Playback=function(){var e;return null===(e=window.MediaSource)||void 0===e?void 0:e.isTypeSupported('video/mp4; codecs="hvc1.1.6.L93.B0"')},e.supportNetworkStreamIO=function(){var e=new r.A({},a()),t=e.loaderType;return e.destroy(),"fetch-stream-loader"===t||"xhr-moz-chunked-loader"===t},e.getNetworkLoaderTypeName=function(){var e=new r.A({},a()),t=e.loaderType;return e.destroy(),t},e.supportNativeMediaPlayback=function(t){void 0===e.videoElement&&(e.videoElement=window.document.createElement("video"));var i=e.videoElement.canPlayType(t);return"probably"===i||"maybe"===i},e.getFeatureList=function(){var t={msePlayback:!1,mseLivePlayback:!1,mseH265Playback:!1,networkStreamIO:!1,networkLoaderName:"",nativeMP4H264Playback:!1,nativeMP4H265Playback:!1,nativeWebmVP8Playback:!1,nativeWebmVP9Playback:!1};return t.msePlayback=e.supportMSEH264Playback(),t.networkStreamIO=e.supportNetworkStreamIO(),t.networkLoaderName=e.getNetworkLoaderTypeName()||"",t.mseLivePlayback=t.msePlayback&&t.networkStreamIO,t.mseH265Playback=e.supportMSEH265Playback(),t.nativeMP4H264Playback=e.supportNativeMediaPlayback('video/mp4; codecs="avc1.42001E, mp4a.40.2"'),t.nativeMP4H265Playback=e.supportNativeMediaPlayback('video/mp4; codecs="hvc1.1.6.L93.B0"'),t.nativeWebmVP8Playback=e.supportNativeMediaPlayback('video/webm; codecs="vp8.0, vorbis"'),t.nativeWebmVP9Playback=e.supportNativeMediaPlayback('video/webm; codecs="vp9"'),t},e}();const d=s;var l=i(288),c=i(413),h=i(502),u=i(620);const A={ERROR:"error",LOADING_COMPLETE:"loading_complete",RECOVERED_EARLY_EOF:"recovered_early_eof",MEDIA_INFO:"media_info",METADATA_ARRIVED:"metadata_arrived",SCRIPTDATA_ARRIVED:"scriptdata_arrived",TIMED_ID3_METADATA_ARRIVED:"timed_id3_metadata_arrived",SMPTE2038_METADATA_ARRIVED:"smpte2038_metadata_arrived",SCTE35_METADATA_ARRIVED:"scte35_metadata_arrived",PES_PRIVATE_DATA_DESCRIPTOR:"pes_private_data_descriptor",PES_PRIVATE_DATA_ARRIVED:"pes_private_data_arrived",STATISTICS_INFO:"statistics_info",DESTROYING:"destroying"},p=function(){const e=ENTRY_MODULE,t={};function i(n){if(t[n])return t[n].exports;const r=t[n]={exports:{}};return e[n](r,r.exports,i),r.exports}i.m=e,i.n=e=>{const t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(const n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.g=function(){if("[object Object]"===Object.prototype.toString.call(globalThis))return globalThis;try{return this||new Function("return this")()}catch(e){if("[object Object]"===Object.prototype.toString.call(window))return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};const n=i(ENTRY_MODULE);return n.default||n};p.toString();const _="[\\.|\\-|\\+|\\w|/|@]+",f="\\(\\s*(/\\*.*?\\*/)?\\s*.*?("+_+").*?\\)";function m(e){return(e+"").replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}function v(e){return!isNaN(1*e)}function g(e,t,n){const r={};r[n]=[];const o=t.toString(),a=o.match(/^function\s?\w*\(\w+,\s*\w+,\s*(\w+)\)/)||o.match(/^\(\w+,\s*\w+,\s*(\w+)\)\s?\=\s?\>/);if(!a)return r;const s=a[1];let d,l=new RegExp("(\\\\n|\\W)"+m(s)+f,"g");for(;d=l.exec(o);)"dll-reference"!==d[3]&&r[n].push(d[3]);for(l=new RegExp("\\("+m(s)+'\\("(dll-reference\\s('+_+'))"\\)\\)'+f,"g");d=l.exec(o);)e[d[2]]||(r[n].push(d[1]),e[d[2]]=i(d[1]).m),r[d[2]]=r[d[2]]||[],r[d[2]].push(d[4]);const c=Object.keys(r);for(let e=0;et||e[i].length>0),!1)}function b(e,t,i,n){const r=e[n].map((e=>`"${e}": ${t[n][e].toString()}`)).join(","),o=p.toString().split("ENTRY_MODULE");return`${o[0]}{${r}}${o[1]}"${i}"${o[2]}`}function E(e,t){t=t||{};const n={main:i.m},r=t.all?{main:Object.keys(n.main)}:function(e,t){const i={main:[t]},n={main:[]},r={main:{}};for(;y(i);){const t=Object.keys(i);for(let o=0;o"main"!==e)).forEach((e=>{let t=0;for(;r[e][t];)t++;r[e].push(t),n[e][t]="(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })",o+=`var ${e} = (${b(r,n,t,modules)})();\n`})),o+=`(${b(r,n,e,"main")})();`;const a=new window.Blob([o],{type:"text/javascript"});if(t.bare)return a;const s=(window.URL||window.webkitURL||window.mozURL||window.msURL).createObjectURL(a),d=new window.Worker(s);return d.objectURL=s,d}var S=i(641),w=i(976),T=i(716),B=i(825),k=function(){function e(e,t){if(this.TAG="Transmuxer",this._workerDestroying=!1,this._controller=null,this._emitter=new c.A,t.enableWorker&&"undefined"!=typeof Worker)try{this._worker=this._worker=E(291),this._workerDestroying=!1,this._worker.addEventListener("message",this._onWorkerMessage.bind(this)),this._worker.postMessage({cmd:"init",param:[e,t]}),this.e={onLoggingConfigChanged:this._onLoggingConfigChanged.bind(this)},S.A.registerListener(this.e.onLoggingConfigChanged),this._worker.postMessage({cmd:"logging_config",param:S.A.getConfig()})}catch(i){h.A.e(this.TAG,"Error while initialize transmuxing worker, fallback to inline transmuxing"),this._worker=null,this._controller=new w.A(e,t)}else this._controller=new w.A(e,t);if(this._controller){var i=this._controller;null==i||i.on(T.A.IO_ERROR,this._onIOError.bind(this)),null==i||i.on(T.A.DEMUX_ERROR,this._onDemuxError.bind(this)),null==i||i.on(T.A.INIT_SEGMENT,this._onInitSegment.bind(this)),null==i||i.on(T.A.MEDIA_SEGMENT,this._onMediaSegment.bind(this)),null==i||i.on(T.A.LOADING_COMPLETE,this._onLoadingComplete.bind(this)),null==i||i.on(T.A.RECOVERED_EARLY_EOF,this._onRecoveredEarlyEof.bind(this)),null==i||i.on(T.A.MEDIA_INFO,this._onMediaInfo.bind(this)),null==i||i.on(T.A.METADATA_ARRIVED,this._onMetaDataArrived.bind(this)),null==i||i.on(T.A.SCRIPTDATA_ARRIVED,this._onScriptDataArrived.bind(this)),null==i||i.on(T.A.TIMED_ID3_METADATA_ARRIVED,this._onTimedID3MetadataArrived.bind(this)),null==i||i.on(T.A.SMPTE2038_METADATA_ARRIVED,this._onSMPTE2038MetadataArrived.bind(this)),null==i||i.on(T.A.SCTE35_METADATA_ARRIVED,this._onSCTE35MetadataArrived.bind(this)),null==i||i.on(T.A.PES_PRIVATE_DATA_DESCRIPTOR,this._onPESPrivateDataDescriptor.bind(this)),null==i||i.on(T.A.PES_PRIVATE_DATA_ARRIVED,this._onPESPrivateDataArrived.bind(this)),null==i||i.on(T.A.STATISTICS_INFO,this._onStatisticsInfo.bind(this)),null==i||i.on(T.A.RECOMMEND_SEEKPOINT,this._onRecommendSeekpoint.bind(this))}}return e.prototype.destroy=function(){var e;this._worker?this._workerDestroying||(this._workerDestroying=!0,this._worker.postMessage({cmd:"destroy"}),S.A.removeListener(this.e.onLoggingConfigChanged),this.e=null):(null===(e=this._controller)||void 0===e||e.destroy(),this._controller=null),this._emitter.removeAllListeners(),this._emitter=null},e.prototype.on=function(e,t){this._emitter.addListener(e,t)},e.prototype.off=function(e,t){this._emitter.removeListener(e,t)},e.prototype.hasWorker=function(){return null!=this._worker},e.prototype.open=function(){var e;this._worker?this._worker.postMessage({cmd:"start"}):null===(e=this._controller)||void 0===e||e.start()},e.prototype.close=function(){var e;this._worker?this._worker.postMessage({cmd:"stop"}):null===(e=this._controller)||void 0===e||e.stop()},e.prototype.seek=function(e){var t;this._worker?this._worker.postMessage({cmd:"seek",param:e}):null===(t=this._controller)||void 0===t||t.seek(e)},e.prototype.pause=function(){var e;this._worker?this._worker.postMessage({cmd:"pause"}):null===(e=this._controller)||void 0===e||e.pause()},e.prototype.resume=function(){var e;this._worker?this._worker.postMessage({cmd:"resume"}):null===(e=this._controller)||void 0===e||e.resume()},e.prototype._onInitSegment=function(e,t){var i=this;Promise.resolve().then((function(){i._emitter.emit(T.A.INIT_SEGMENT,e,t)}))},e.prototype._onMediaSegment=function(e,t){var i=this;Promise.resolve().then((function(){i._emitter.emit(T.A.MEDIA_SEGMENT,e,t)}))},e.prototype._onLoadingComplete=function(){var e=this;Promise.resolve().then((function(){e._emitter.emit(T.A.LOADING_COMPLETE)}))},e.prototype._onRecoveredEarlyEof=function(){var e=this;Promise.resolve().then((function(){e._emitter.emit(T.A.RECOVERED_EARLY_EOF)}))},e.prototype._onMediaInfo=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(T.A.MEDIA_INFO,e)}))},e.prototype._onMetaDataArrived=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(T.A.METADATA_ARRIVED,e)}))},e.prototype._onScriptDataArrived=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(T.A.SCRIPTDATA_ARRIVED,e)}))},e.prototype._onTimedID3MetadataArrived=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(T.A.TIMED_ID3_METADATA_ARRIVED,e)}))},e.prototype._onSMPTE2038MetadataArrived=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(T.A.SMPTE2038_METADATA_ARRIVED,e)}))},e.prototype._onSCTE35MetadataArrived=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(T.A.SCTE35_METADATA_ARRIVED,e)}))},e.prototype._onPESPrivateDataDescriptor=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(T.A.PES_PRIVATE_DATA_DESCRIPTOR,e)}))},e.prototype._onPESPrivateDataArrived=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(T.A.PES_PRIVATE_DATA_ARRIVED,e)}))},e.prototype._onStatisticsInfo=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(T.A.STATISTICS_INFO,e)}))},e.prototype._onIOError=function(e,t){var i=this;Promise.resolve().then((function(){i._emitter.emit(T.A.IO_ERROR,e,t)}))},e.prototype._onDemuxError=function(e,t){var i=this;Promise.resolve().then((function(){i._emitter.emit(T.A.DEMUX_ERROR,e,t)}))},e.prototype._onRecommendSeekpoint=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(T.A.RECOMMEND_SEEKPOINT,e)}))},e.prototype._onLoggingConfigChanged=function(e){this._worker&&this._worker.postMessage({cmd:"logging_config",param:e})},e.prototype._onWorkerMessage=function(e){var t=e.data,i=null==t?void 0:t.data;if("destroyed"===t.msg||this._workerDestroying)return this._workerDestroying=!1,this._worker.terminate(),void(this._worker=null);switch(t.msg){case T.A.INIT_SEGMENT:case T.A.MEDIA_SEGMENT:this._emitter.emit(t.msg,i.type,i.data);break;case T.A.LOADING_COMPLETE:case T.A.RECOVERED_EARLY_EOF:this._emitter.emit(t.msg);break;case T.A.MEDIA_INFO:Object.setPrototypeOf(i,B.A.prototype),this._emitter.emit(t.msg,i);break;case T.A.METADATA_ARRIVED:case T.A.SCRIPTDATA_ARRIVED:case T.A.TIMED_ID3_METADATA_ARRIVED:case T.A.SMPTE2038_METADATA_ARRIVED:case T.A.SCTE35_METADATA_ARRIVED:case T.A.PES_PRIVATE_DATA_DESCRIPTOR:case T.A.PES_PRIVATE_DATA_ARRIVED:case T.A.STATISTICS_INFO:this._emitter.emit(t.msg,i);break;case T.A.IO_ERROR:case T.A.DEMUX_ERROR:this._emitter.emit(t.msg,i.type,i.info);break;case T.A.RECOMMEND_SEEKPOINT:this._emitter.emit(t.msg,i);break;case"logcat_callback":h.A.emitter.emit("log",i.type,i.logcat)}},e}();const C=k,R="error",O="source_open",I="update_end",x="buffer_full";var D=i(453),L=i(713),M=function(){function e(e){this.TAG="MSEController",this._config=e,this._emitter=new c.A,this._config.isLive&&void 0===this._config.autoCleanupSourceBuffer&&(this._config.autoCleanupSourceBuffer=!0),this.e={onSourceOpen:this._onSourceOpen.bind(this),onSourceEnded:this._onSourceEnded.bind(this),onSourceClose:this._onSourceClose.bind(this),onSourceBufferError:this._onSourceBufferError.bind(this),onSourceBufferUpdateEnd:this._onSourceBufferUpdateEnd.bind(this)},this._mediaSource=null,this._mediaSourceObjectURL=null,this._mediaElement=null,this._isBufferFull=!1,this._hasPendingEos=!1,this._requireSetMediaDuration=!1,this._pendingMediaDuration=0,this._pendingSourceBufferInit=[],this._mimeTypes={video:null,audio:null},this._sourceBuffers={video:null,audio:null},this._lastInitSegments={video:null,audio:null},this._pendingSegments={video:[],audio:[]},this._pendingRemoveRanges={video:[],audio:[]},this._idrList=new D.EX}return e.prototype.destroy=function(){(this._mediaElement||this._mediaSource)&&this.detachMediaElement(),this.e=null,this._emitter.removeAllListeners(),this._emitter=null},e.prototype.on=function(e,t){this._emitter.addListener(e,t)},e.prototype.off=function(e,t){this._emitter.removeListener(e,t)},e.prototype.attachMediaElement=function(e){if(this._mediaSource)throw new L.j4("MediaSource has been attached to an HTMLMediaElement!");var t=this._mediaSource=new window.MediaSource;t.addEventListener("sourceopen",this.e.onSourceOpen),t.addEventListener("sourceended",this.e.onSourceEnded),t.addEventListener("sourceclose",this.e.onSourceClose),this._mediaElement=e,this._mediaSourceObjectURL=window.URL.createObjectURL(this._mediaSource),e.src=this._mediaSourceObjectURL},e.prototype.detachMediaElement=function(){if(this._mediaSource){var e=this._mediaSource;for(var t in this._sourceBuffers){var i=this._pendingSegments[t];i.splice(0,i.length),this._pendingSegments[t]=null,this._pendingRemoveRanges[t]=null,this._lastInitSegments[t]=null;var n=this._sourceBuffers[t];if(n){if("closed"!==e.readyState){try{e.removeSourceBuffer(n)}catch(e){h.A.e(this.TAG,e.message)}null==n||n.removeEventListener("error",this.e.onSourceBufferError),null==n||n.removeEventListener("updateend",this.e.onSourceBufferUpdateEnd)}this._mimeTypes[t]=null,this._sourceBuffers[t]=null}}if("open"===e.readyState)try{e.endOfStream()}catch(e){h.A.e(this.TAG,e.message)}e.removeEventListener("sourceopen",this.e.onSourceOpen),e.removeEventListener("sourceended",this.e.onSourceEnded),e.removeEventListener("sourceclose",this.e.onSourceClose),this._pendingSourceBufferInit=[],this._isBufferFull=!1,this._idrList.clear(),this._mediaSource=null}this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src"),this._mediaElement=null),this._mediaSourceObjectURL&&(window.URL.revokeObjectURL(this._mediaSourceObjectURL),this._mediaSourceObjectURL=null)},e.prototype.appendInitSegment=function(e,t){var i;if(!this._mediaSource||"open"!==this._mediaSource.readyState)return this._pendingSourceBufferInit.push(e),void this._pendingSegments[e.type].push(e);var n=e,r="".concat(n.container);n.codec&&n.codec.length>0&&(r+=";codecs=".concat(n.codec));var o=!1;if(h.A.v(this.TAG,"Received Initialization Segment, mimeType: "+r),this._lastInitSegments[n.type]=n,r!==this._mimeTypes[n.type]){if(this._mimeTypes[n.type])h.A.v(this.TAG,"Notice: ".concat(n.type," mimeType changed, origin: ").concat(this._mimeTypes[n.type]||"",", target: ").concat(r));else{o=!0;try{var a=this._sourceBuffers[n.type]=this._mediaSource.addSourceBuffer(r);a.addEventListener("error",this.e.onSourceBufferError),a.addEventListener("updateend",this.e.onSourceBufferUpdateEnd)}catch(e){return h.A.e(this.TAG,e.message),void this._emitter.emit(R,{code:e.code,msg:e.message})}}this._mimeTypes[n.type]=r}t||this._pendingSegments[n.type].push(n),o||this._sourceBuffers[n.type]&&!(null===(i=this._sourceBuffers[n.type])||void 0===i?void 0:i.updating)&&this._doAppendSegments(),u.A.safari&&"audio/mpeg"===n.container&&n.mediaDuration>0&&(this._requireSetMediaDuration=!0,this._pendingMediaDuration=n.mediaDuration/1e3,this._updateMediaSourceDuration())},e.prototype.appendMediaSegment=function(e){var t=e;this._pendingSegments[t.type].push(t),this._config.autoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanupSourceBuffer();var i=this._sourceBuffers[t.type];!i||i.updating||this._hasPendingRemoveRanges()||this._doAppendSegments()},e.prototype.seek=function(e){var t,i;for(var n in this._sourceBuffers)if(this._sourceBuffers[n]){var r=this._sourceBuffers[n];if("open"===(null===(t=this._mediaSource)||void 0===t?void 0:t.readyState))try{null==r||r.abort()}catch(e){h.A.e(this.TAG,e.message)}this._idrList.clear();var o=this._pendingSegments[n];if(o.splice(0,o.length),"closed"!==(null===(i=this._mediaSource)||void 0===i?void 0:i.readyState)){if(r){for(var a=0;a=1&&i-o.start(0)>=((null===(t=this._config)||void 0===t?void 0:t.autoCleanupMaxBackwardDuration)||0))return!0}}return!1},e.prototype._doCleanupSourceBuffer=function(){var e,t,i,n=null===(e=this._mediaElement)||void 0===e?void 0:e.currentTime;for(var r in this._sourceBuffers){var o=this._sourceBuffers[r];if(o){for(var a=o.buffered,s=!1,d=0;d=((null===(t=this._config)||void 0===t?void 0:t.autoCleanupMaxBackwardDuration)||0)){s=!0;var h=n-((null===(i=this._config)||void 0===i?void 0:i.autoCleanupMinBackwardDuration)||0);this._pendingRemoveRanges[r].push({start:l,end:h})}}else c0&&(isNaN(o)||a>o)&&(h.A.v(this.TAG,"Update MediaSource duration from ".concat(o," to ").concat(a)),this._mediaSource.duration=a),this._requireSetMediaDuration=!1,this._pendingMediaDuration=0}},e.prototype._doRemoveRanges=function(){var e;for(var t in this._pendingRemoveRanges)if(this._sourceBuffers[t]&&!(null===(e=this._sourceBuffers[t])||void 0===e?void 0:e.updating))for(var i=this._sourceBuffers[t],n=this._pendingRemoveRanges[t];n.length&&!(null==i?void 0:i.updating);){var r=n.shift();null==i||i.remove(r.start,r.end)}},e.prototype._doAppendSegments=function(){var e,t,i,n=this._pendingSegments;for(var r in n)if(this._sourceBuffers[r]&&!(null===(e=this._sourceBuffers[r])||void 0===e?void 0:e.updating)&&n[r].length>0){var o=n[r].shift();if(null==o?void 0:o.timestampOffset){var a=(null===(t=this._sourceBuffers[r])||void 0===t?void 0:t.timestampOffset)||0,s=o.timestampOffset/1e3;Math.abs(a-s)>.1&&(h.A.v(this.TAG,"Update MPEG audio timestampOffset from ".concat(a," to ").concat(s)),this._sourceBuffers[r]&&(this._sourceBuffers[r].timestampOffset=s)),delete o.timestampOffset}if(!o.data||0===o.data.byteLength)continue;try{null===(i=this._sourceBuffers[r])||void 0===i||i.appendBuffer(o.data),this._isBufferFull=!1,"video"===r&&o.hasOwnProperty("info")&&this._idrList.appendArray(o.info.syncPoints)}catch(e){this._pendingSegments[r].unshift(o),22===e.code?(this._isBufferFull||this._emitter.emit(x),this._isBufferFull=!0):(h.A.e(this.TAG,e.message),this._emitter.emit(R,{code:e.code,msg:e.message}))}}},e.prototype._onSourceOpen=function(){var e;if(h.A.v(this.TAG,"MediaSource onSourceOpen"),null===(e=this._mediaSource)||void 0===e||e.removeEventListener("sourceopen",this.e.onSourceOpen),this._pendingSourceBufferInit.length>0)for(var t=this._pendingSourceBufferInit;t.length;){var i=t.shift();this.appendInitSegment(i,!0)}this._hasPendingSegments()&&this._doAppendSegments(),this._emitter.emit(O)},e.prototype._onSourceEnded=function(){h.A.v(this.TAG,"MediaSource onSourceEnded")},e.prototype._onSourceClose=function(){h.A.v(this.TAG,"MediaSource onSourceClose"),this._mediaSource&&null!=this.e&&(this._mediaSource.removeEventListener("sourceopen",this.e.onSourceOpen),this._mediaSource.removeEventListener("sourceended",this.e.onSourceEnded),this._mediaSource.removeEventListener("sourceclose",this.e.onSourceClose))},e.prototype._hasPendingSegments=function(){var e=this._pendingSegments;return e.video.length>0||e.audio.length>0},e.prototype._hasPendingRemoveRanges=function(){var e=this._pendingRemoveRanges;return e.video.length>0||e.audio.length>0},e.prototype._onSourceBufferUpdateEnd=function(){this._requireSetMediaDuration?this._updateMediaSourceDuration():this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this._hasPendingEos&&this.endOfStream(),this._emitter.emit(I)},e.prototype._onSourceBufferError=function(e){h.A.e(this.TAG,"SourceBuffer Error: ".concat(e))},e}();const P=M;var U=i(465),F={NETWORK_ERROR:"NetworkError",MEDIA_ERROR:"MediaError",OTHER_ERROR:"OtherError"},V={NETWORK_EXCEPTION:l.Xv.EXCEPTION,NETWORK_STATUS_CODE_INVALID:l.Xv.HTTP_STATUS_CODE_INVALID,NETWORK_TIMEOUT:l.Xv.CONNECTING_TIMEOUT,NETWORK_UNRECOVERABLE_EARLY_EOF:l.Xv.UNRECOVERABLE_EARLY_EOF,MEDIA_MSE_ERROR:"MediaMSEError",MEDIA_FORMAT_ERROR:U.A.FORMAT_ERROR,MEDIA_FORMAT_UNSUPPORTED:U.A.FORMAT_UNSUPPORTED,MEDIA_CODEC_UNSUPPORTED:U.A.CODEC_UNSUPPORTED},N=function(){function e(e,t){var i,n,r;this.TAG="MSEPlayer",this._type="MSEPlayer",this._emitter=new c.A,this._config=a(),"object"==typeof t&&Object.assign(this._config,t);var o=e.type.toLowerCase();if("mse"!==o&&"mpegts"!==o&&"m2ts"!==o&&"flv"!==o)throw new L.Qn("MSEPlayer requires an mpegts/m2ts/flv MediaDataSource input!");e.isLive&&(this._config.isLive=!0),this.e={onvLoadedMetadata:this._onvLoadedMetadata.bind(this),onvSeeking:this._onvSeeking.bind(this),onvCanPlay:this._onvCanPlay.bind(this),onvStalled:this._onvStalled.bind(this),onvProgress:this._onvProgress.bind(this)},self.performance&&self.performance.now?this._now=self.performance.now.bind(self.performance):this._now=Date.now,this._pendingSeekTime=null,this._requestSetTime=!1,this._seekpointRecord=null,this._progressChecker=null,this._mediaDataSource=e,this._mediaElement=null,this._msectl=null,this._transmuxer=null,this._mseSourceOpened=!1,this._hasPendingLoad=!1,this._receivedCanPlay=!1,this._mediaInfo=null,this._statisticsInfo=null;var s=u.A.chrome&&(u.A.version&&(null===(i=u.A.version)||void 0===i?void 0:i.major)<50||u.A.version&&50===(null===(n=null===u.A||void 0===u.A?void 0:u.A.version)||void 0===n?void 0:n.major)&&((null===(r=null===u.A||void 0===u.A?void 0:u.A.version)||void 0===r?void 0:r.build)||-1)<2661);this._alwaysSeekKeyframe=!!(s||u.A.msedge||u.A.msie),this._alwaysSeekKeyframe&&(this._config.accurateSeek=!1)}return e.prototype.destroy=function(){this._emitter.emit(A.DESTROYING),null!=this._progressChecker&&(window.clearInterval(this._progressChecker),this._progressChecker=null),this._transmuxer&&this.unload(),this._mediaElement&&this.detachMediaElement(),this.e=null,this._mediaDataSource=null,this._emitter.removeAllListeners(),this._emitter=null},e.prototype.on=function(e,t){var i=this;e===A.MEDIA_INFO?null!=this._mediaInfo&&Promise.resolve().then((function(){i._emitter.emit(A.MEDIA_INFO,i.mediaInfo)})):e===A.STATISTICS_INFO&&null!=this._statisticsInfo&&Promise.resolve().then((function(){i._emitter.emit(A.STATISTICS_INFO,i.statisticsInfo)})),this._emitter.addListener(e,t)},e.prototype.off=function(e,t){this._emitter.removeListener(e,t)},e.prototype.attachMediaElement=function(e){var t,i,n,r,o,a=this;if(this._mediaElement=e,e.addEventListener("loadedmetadata",this.e.onvLoadedMetadata),e.addEventListener("seeking",this.e.onvSeeking),e.addEventListener("canplay",this.e.onvCanPlay),e.addEventListener("stalled",this.e.onvStalled),e.addEventListener("progress",this.e.onvProgress),this._msectl=new P(this._config),null===(t=this._msectl)||void 0===t||t.on(I,this._onmseUpdateEnd.bind(this)),null===(i=this._msectl)||void 0===i||i.on(x,this._onmseBufferFull.bind(this)),null===(n=this._msectl)||void 0===n||n.on(O,(function(){a._mseSourceOpened=!0,a._hasPendingLoad&&(a._hasPendingLoad=!1,a.load())})),null===(r=this._msectl)||void 0===r||r.on(R,(function(e){a._emitter.emit(A.ERROR,F.MEDIA_ERROR,V.MEDIA_MSE_ERROR,e)})),null===(o=this._msectl)||void 0===o||o.attachMediaElement(e),null!=this._pendingSeekTime)try{e.currentTime=this._pendingSeekTime,this._pendingSeekTime=null}catch(e){}},e.prototype.detachMediaElement=function(){var e;this._mediaElement&&(null===(e=this._msectl)||void 0===e||e.detachMediaElement(),this._mediaElement.removeEventListener("loadedmetadata",this.e.onvLoadedMetadata),this._mediaElement.removeEventListener("seeking",this.e.onvSeeking),this._mediaElement.removeEventListener("canplay",this.e.onvCanPlay),this._mediaElement.removeEventListener("stalled",this.e.onvStalled),this._mediaElement.removeEventListener("progress",this.e.onvProgress),this._mediaElement=null),this._msectl&&(this._msectl.destroy(),this._msectl=null)},e.prototype.load=function(){var e=this;if(!this._mediaElement)throw new L.j4("HTMLMediaElement must be attached before load()!");if(this._transmuxer)throw new L.j4("MSEPlayer.load() has been called, please call unload() first!");this._hasPendingLoad||(!this._config.deferLoadAfterSourceOpen||this._mseSourceOpened?(this._mediaElement.readyState>0&&(this._requestSetTime=!0,this._mediaElement.currentTime=0),this._transmuxer=new C(this._mediaDataSource,this._config),this._transmuxer.on(T.A.INIT_SEGMENT,(function(t,i){var n;null===(n=e._msectl)||void 0===n||n.appendInitSegment(i)})),this._transmuxer.on(T.A.MEDIA_SEGMENT,(function(t,i){var n,r,o;if(null===(n=e._msectl)||void 0===n||n.appendMediaSegment(i),e._config.lazyLoad&&!e._config.isLive){var a=null===(r=e._mediaElement)||void 0===r?void 0:r.currentTime;i.info.endDts>=1e3*(a+((null===(o=e._config)||void 0===o?void 0:o.lazyLoadMaxDuration)||0))&&null==e._progressChecker&&(h.A.v(e.TAG,"Maximum buffering duration exceeded, suspend transmuxing task"),e._suspendTransmuxer())}})),this._transmuxer.on(T.A.LOADING_COMPLETE,(function(){var t;null===(t=e._msectl)||void 0===t||t.endOfStream(),e._emitter.emit(A.LOADING_COMPLETE)})),this._transmuxer.on(T.A.RECOVERED_EARLY_EOF,(function(){e._emitter.emit(A.RECOVERED_EARLY_EOF)})),this._transmuxer.on(T.A.IO_ERROR,(function(t,i){e._emitter.emit(A.ERROR,F.NETWORK_ERROR,t,i)})),this._transmuxer.on(T.A.DEMUX_ERROR,(function(t,i){e._emitter.emit(A.ERROR,F.MEDIA_ERROR,t,{code:-1,msg:i})})),this._transmuxer.on(T.A.MEDIA_INFO,(function(t){e._mediaInfo=t,e._emitter.emit(A.MEDIA_INFO,Object.assign({},t))})),this._transmuxer.on(T.A.METADATA_ARRIVED,(function(t){e._emitter.emit(A.METADATA_ARRIVED,t)})),this._transmuxer.on(T.A.SCRIPTDATA_ARRIVED,(function(t){e._emitter.emit(A.SCRIPTDATA_ARRIVED,t)})),this._transmuxer.on(T.A.TIMED_ID3_METADATA_ARRIVED,(function(t){e._emitter.emit(A.TIMED_ID3_METADATA_ARRIVED,t)})),this._transmuxer.on(T.A.SMPTE2038_METADATA_ARRIVED,(function(t){e._emitter.emit(A.SMPTE2038_METADATA_ARRIVED,t)})),this._transmuxer.on(T.A.SCTE35_METADATA_ARRIVED,(function(t){e._emitter.emit(A.SCTE35_METADATA_ARRIVED,t)})),this._transmuxer.on(T.A.PES_PRIVATE_DATA_DESCRIPTOR,(function(t){e._emitter.emit(A.PES_PRIVATE_DATA_DESCRIPTOR,t)})),this._transmuxer.on(T.A.PES_PRIVATE_DATA_ARRIVED,(function(t){e._emitter.emit(A.PES_PRIVATE_DATA_ARRIVED,t)})),this._transmuxer.on(T.A.STATISTICS_INFO,(function(t){e._statisticsInfo=e._fillStatisticsInfo(t),e._emitter.emit(A.STATISTICS_INFO,Object.assign({},e._statisticsInfo))})),this._transmuxer.on(T.A.RECOMMEND_SEEKPOINT,(function(t){e._mediaElement&&!e._config.accurateSeek&&(e._requestSetTime=!0,e._mediaElement.currentTime=t/1e3)})),this._transmuxer.open()):this._hasPendingLoad=!0)},e.prototype.unload=function(){this._mediaElement&&this._mediaElement.pause(),this._msectl&&this._msectl.seek(0),this._transmuxer&&(this._transmuxer.close(),this._transmuxer.destroy(),this._transmuxer=null)},e.prototype.play=function(){var e;return function(e,t,i,n){return new(i||(i=Promise))((function(t,r){function o(e){try{s(n.next(e))}catch(e){r(e)}}function a(e){try{s(n.throw(e))}catch(e){r(e)}}function s(e){var n;e.done?t(e.value):(n=e.value,n instanceof i?n:new i((function(e){e(n)}))).then(o,a)}s((n=n.apply(e,[])).next())}))}(this,0,void 0,(function(){return function(e,t){var i,n,r,o,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(s){return function(d){return function(s){if(i)throw new TypeError("Generator is already executing.");for(;o&&(o=0,s[0]&&(a=0)),a;)try{if(i=1,n&&(r=2&s[0]?n.return:s[0]?n.throw||((r=n.return)&&r.call(n),0):n.next)&&!(r=r.call(n,s[1])).done)return r;switch(n=0,r&&(s=[2&s[0],r.value]),s[0]){case 0:case 1:r=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((r=(r=a.trys).length>0&&r[r.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!r||s[1]>r[0]&&s[1]0&&!(null===(i=this._mediaElement)||void 0===i?void 0:i.paused)){var a=r.end(r.length-1);if(a>((null===(n=this._config)||void 0===n?void 0:n.liveBufferLatencyMaxLatency)||0)&&a-o>(this._config.liveBufferLatencyMaxLatency||0)){var s=a-(this._config.liveBufferLatencyMinRemain||0);this.currentTime=s}}if(this._config.lazyLoad&&!this._config.isLive){for(var d=0,l=0;l=o+(this._config.lazyLoadMaxDuration||0)&&null==this._progressChecker&&(h.A.v(this.TAG,"Maximum buffering duration exceeded, suspend transmuxing task"),this._suspendTransmuxer())}},e.prototype._onmseBufferFull=function(){h.A.v(this.TAG,"MSE SourceBuffer is full, suspend transmuxing task"),null==this._progressChecker&&this._suspendTransmuxer()},e.prototype._suspendTransmuxer=function(){this._transmuxer&&(this._transmuxer.pause(),null==this._progressChecker&&(this._progressChecker=window.setInterval(this._checkProgressAndResume.bind(this),1e3)))},e.prototype._checkProgressAndResume=function(){for(var e,t,i,n=(null===(e=this._mediaElement)||void 0===e?void 0:e.currentTime)||0,r=null===(t=this._mediaElement)||void 0===t?void 0:t.buffered,o=!1,a=0;a=s&&n=d-(this._config.lazyLoadRecoverDuration||0)&&(o=!0);break}}o&&(window.clearInterval(this._progressChecker),this._progressChecker=null,o&&(h.A.v(this.TAG,"Continue loading from paused position"),null===(i=this._transmuxer)||void 0===i||i.resume()))},e.prototype._isTimepointBuffered=function(e){for(var t,i=null===(t=this._mediaElement)||void 0===t?void 0:t.buffered,n=0;n=r&&e0){var l=(null===(i=this._mediaElement)||void 0===i?void 0:i.buffered).start(0);(l<1&&e0&&t.currentTime0){var a=o.start(0);if(a<1&&r0&&(this._mediaElement.currentTime=0),this._mediaElement.preload="auto",this._mediaElement.load(),this._statisticsReporter=window.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval)},e.prototype.unload=function(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src")),null!=this._statisticsReporter&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)},e.prototype.play=function(){var e;return function(e,t,i,n){return new(i||(i=Promise))((function(t,r){function o(e){try{s(n.next(e))}catch(e){r(e)}}function a(e){try{s(n.throw(e))}catch(e){r(e)}}function s(e){var n;e.done?t(e.value):(n=e.value,n instanceof i?n:new i((function(e){e(n)}))).then(o,a)}s((n=n.apply(e,[])).next())}))}(this,0,void 0,(function(){return function(e,t){var i,n,r,o,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(s){return function(d){return function(s){if(i)throw new TypeError("Generator is already executing.");for(;o&&(o=0,s[0]&&(a=0)),a;)try{if(i=1,n&&(r=2&s[0]?n.return:s[0]?n.throw||((r=n.return)&&r.call(n),0):n.next)&&!(r=r.call(n,s[1])).done)return r;switch(n=0,r&&(s=[2&s[0],r.value]),s[0]){case 0:case 1:r=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((r=(r=a.trys).length>0&&r[r.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!r||s[1]>r[0]&&s[1]{e.exports=i(133).default},302:(e,t,i)=>{i.d(t,{A:()=>g});var n=i(502);const r=function(){function e(){var e;this._firstCheckpoint=0,this._lastCheckpoint=0,this._intervalBytes=0,this._totalBytes=0,this._lastSecondBytes=0,(null===(e=self.performance)||void 0===e?void 0:e.now)?this._now=self.performance.now.bind(self.performance):this._now=Date.now}return e.prototype.reset=function(){this._firstCheckpoint=this._lastCheckpoint=0,this._totalBytes=this._intervalBytes=0,this._lastSecondBytes=0},e.prototype.addBytes=function(e){0===this._firstCheckpoint?(this._firstCheckpoint=this._now(),this._lastCheckpoint=this._firstCheckpoint,this._intervalBytes+=e,this._totalBytes+=e):this._now()-this._lastCheckpoint<1e3?(this._intervalBytes+=e,this._totalBytes+=e):(this._lastSecondBytes=this._intervalBytes,this._intervalBytes=e,this._totalBytes+=e,this._lastCheckpoint=this._now())},Object.defineProperty(e.prototype,"currentKBps",{get:function(){this.addBytes(0);var e=(this._now()-this._lastCheckpoint)/1e3;return 0===e&&(e=1),this._intervalBytes/e/1024},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"lastSecondKBps",{get:function(){return this.addBytes(0),0!==this._lastSecondBytes?this._lastSecondBytes/1024:this._now()-this._lastCheckpoint>=500?this.currentKBps:0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"averageKBps",{get:function(){var e=(this._now()-this._firstCheckpoint)/1e3;return this._totalBytes/e/1024},enumerable:!1,configurable:!0}),e}();var o,a=i(288),s=i(620),d=i(713),l=(o=function(e,t){return o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])},o(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function i(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});const c=function(e){function t(t,i){var n=e.call(this,"fetch-stream-loader")||this;return n.TAG="FetchStreamLoader",n._seekHandler=t,n._config=i,n._needStash=!0,n._requestAbort=!1,n._abortController=null,n._contentLength=null,n._receivedLength=0,n}return l(t,e),t.isSupported=function(){var e;try{var t=s.A.msedge&&((null===(e=null===s.A||void 0===s.A?void 0:s.A.version)||void 0===e?void 0:e.minor)||0)>=15048&&!s.A.webkit,i=!s.A.msedge||t;return self.fetch&&self.ReadableStream&&i}catch(e){return!1}},t.prototype.destroy=function(){this.isWorking()&&this.abort(),e.prototype.destroy.call(this)},t.prototype.open=function(e,t){var i=this;this._dataSource=e,this._range=t;var n=e.url;this._config.reuseRedirectedURL&&void 0!==e.redirectedURL&&(n=e.redirectedURL);var r=this._seekHandler.getConfig(n,t),o=new self.Headers;if("object"==typeof r.headers){var s=r.headers;for(var l in s)s.hasOwnProperty(l)&&o.append(l,s[l])}var c={method:"GET",headers:o,mode:"cors",cache:"default",referrerPolicy:"no-referrer-when-downgrade"};if("object"==typeof this._config.headers)for(var l in this._config.headers)o.append(l,this._config.headers[l]);e.cors||(c.mode="same-origin"),e.withCredentials&&(c.credentials="include"),(null==e?void 0:e.referrerPolicy)&&(c.referrerPolicy=e.referrerPolicy),self.AbortController&&(this._abortController=new self.AbortController,this._abortController&&(c.signal=this._abortController.signal)),this._status=a.eO.kConnecting,self.fetch(r.url,c).then((function(e){var t,n;if(i._requestAbort)return i._status=a.eO.kIdle,void(null===(t=e.body)||void 0===t||t.cancel());if(e.ok&&e.status>=200&&e.status<=299){if(e.url!==r.url&&i._onURLRedirect){var o=i._seekHandler.removeURLParameters(e.url);i._onURLRedirect(o)}var s=e.headers.get("Content-Length");return null!=s&&(i._contentLength=parseInt(s),0!==i._contentLength&&i._onContentLengthKnown&&i._onContentLengthKnown(i._contentLength)),i._pump.call(i,null===(n=e.body)||void 0===n?void 0:n.getReader())}if(i._status=a.eO.kError,!i._onError)throw new d.Al("FetchStreamLoader: Http code invalid, "+e.status+" "+e.statusText);i._onError(a.Xv.HTTP_STATUS_CODE_INVALID,{code:e.status,msg:e.statusText})})).catch((function(e){var t;if(!(null===(t=i._abortController)||void 0===t?void 0:t.signal.aborted)){if(i._status=a.eO.kError,!i._onError)throw e;i._onError(a.Xv.EXCEPTION,{code:-1,msg:e.message})}}))},t.prototype.abort=function(){var e;if(this._requestAbort=!0,(this._status!==a.eO.kBuffering||!s.A.chrome)&&this._abortController)try{null===(e=this._abortController)||void 0===e||e.abort()}catch(e){}},t.prototype._pump=function(e){var t=this;return e.read().then((function(i){var n,r,o,s;if(i.done)if(null!==t._contentLength&&t._receivedLength299)){if(this._status=a.eO.kError,!this._onError)throw new d.Al("MozChunkedLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(a.Xv.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}else this._status=a.eO.kBuffering}},t.prototype._onProgress=function(e){var t;if(this._status!==a.eO.kError){null===this._contentLength&&null!==e.total&&0!==e.total&&(this._contentLength=e.total,this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength));var i=e.target.response,n=((null===(t=this._range)||void 0===t?void 0:t.from)||0)+this._receivedLength;this._receivedLength+=i.byteLength,this._onDataArrival&&this._onDataArrival(i,n,this._receivedLength)}},t.prototype._onLoadEnd=function(e){this._requestAbort?this._requestAbort=!1:this._status!==a.eO.kError&&(this._status=a.eO.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1))},t.prototype._onXhrError=function(e){this._status=a.eO.kError;var t=0,i=null;if(this._contentLength&&e.loaded=this._contentLength&&(r=((null===(t=this._range)||void 0===t?void 0:t.from)||0)+this._contentLength-1),this._currentRequestRange={from:n,to:r},this._internalOpen(this._dataSource,this._currentRequestRange)},t.prototype._internalOpen=function(e,t){this._lastTimeLoaded=0;var i=e.url;this._config.reuseRedirectedURL&&(null!=this._currentRedirectedURL?i=this._currentRedirectedURL:null!=e.redirectedURL&&(i=e.redirectedURL));var n=this._seekHandler.getConfig(i,t);this._currentRequestURL=n.url;var r=this._xhr=new XMLHttpRequest;if(r.open("GET",n.url,!0),r.responseType="arraybuffer",r.onreadystatechange=this._onReadyStateChange.bind(this),r.onprogress=this._onProgress.bind(this),r.onload=this._onLoad.bind(this),r.onerror=this._onXhrError.bind(this),e.withCredentials&&(r.withCredentials=!0),"object"==typeof n.headers){var o=n.headers;for(var a in o)o.hasOwnProperty(a)&&r.setRequestHeader(a,o[a])}if("object"==typeof this._config.headers)for(var a in o=this._config.headers)o.hasOwnProperty(a)&&r.setRequestHeader(a,o[a]);r.send()},t.prototype.abort=function(){this._requestAbort=!0,this._internalAbort(),this._status=a.eO.kComplete},t.prototype._internalAbort=function(){this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr.abort(),this._xhr=null)},t.prototype._onReadyStateChange=function(e){var t=e.target;if(2===t.readyState){if(null!=t.responseURL){var i=this._seekHandler.removeURLParameters(t.responseURL);t.responseURL!==this._currentRequestURL&&i!==this._currentRedirectedURL&&(this._currentRedirectedURL=i,this._onURLRedirect&&this._onURLRedirect(i))}if(t.status>=200&&t.status<=299){if(this._waitForTotalLength)return;this._status=a.eO.kBuffering}else{if(this._status=a.eO.kError,!this._onError)throw new d.Al("RangeLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(a.Xv.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}}},t.prototype._onProgress=function(e){if(this._status!==a.eO.kError){if(null===this._contentLength){var t=!1;if(this._waitForTotalLength){this._waitForTotalLength=!1,this._totalLengthReceived=!0,t=!0;var i=e.total;this._internalAbort(),null!=i&&0!==i&&(this._totalLength=i)}if(-1===this._range.to?this._contentLength=(this._totalLength||0)-this._range.from:this._contentLength=this._range.to-this._range.from+1,t)return void this._openSubRange();this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength)}var n=e.loaded-this._lastTimeLoaded;this._lastTimeLoaded=e.loaded,this._speedSampler.addBytes(n)}},t.prototype._normalizeSpeed=function(e){var t=this._chunkSizeKBList,i=t.length-1,n=0,r=0,o=i;if(e=t[n]&&e=3&&(t=this._speedSampler.currentKBps)),0!==t){var i=this._normalizeSpeed(t);this._currentSpeedNormalized!==i&&(this._currentSpeedNormalized=i,this._currentChunkSizeKB=i)}var n=e.target.response,r=this._range.from+this._receivedLength;this._receivedLength+=n.byteLength;var o=!1;null!=this._contentLength&&this._receivedLength0&&this._receivedLength0)for(var o=t.split("&"),a=0;a0;s[0]!==this._startName&&s[0]!==this._endName&&(d&&(r+="&"),r+=o[a])}return 0===r.length?i:i+"?"+r},e}(),g=function(){function e(e,t,i){this.TAG="IOController",this._config=t,this._extraData=i,this._stashInitialSize=65536,void 0!==t.stashInitialSize&&t.stashInitialSize>0&&(this._stashInitialSize=t.stashInitialSize),this._stashUsed=0,this._stashSize=this._stashInitialSize,this._bufferSize=3145728,this._stashBuffer=new ArrayBuffer(this._bufferSize),this._stashByteStart=0,this._enableStash=!0,t.enableStashBuffer||(this._enableStash=!1),this._loader=null,this._loaderClass=null,this._seekHandler=null,this._dataSource=e,this._isWebSocketURL=/wss?:\/\/(.+?)/.test(e.url||""),this._refTotalLength=e.filesize?e.filesize:null,this._totalLength=this._refTotalLength,this._fullRequestFlag=!1,this._currentRange=null,this._redirectedURL=null,this._speedNormalized=0,this._speedSampler=new r,this._speedNormalizeList=[32,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096],this._isEarlyEofReconnecting=!1,this._paused=!1,this._resumeFrom=0,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._selectSeekHandler(),this._selectLoader(),this._createLoader()}return e.prototype.destroy=function(){var e,t,i;(null===(e=this._loader)||void 0===e?void 0:e.isWorking())&&(null===(t=this._loader)||void 0===t||t.abort()),null===(i=this._loader)||void 0===i||i.destroy(),this._loader=null,this._loaderClass=null,this._dataSource=null,this._stashBuffer=null,this._stashUsed=this._stashSize=this._bufferSize=this._stashByteStart=0,this._currentRange=null,this._speedSampler=null,this._isEarlyEofReconnecting=!1,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._extraData=null},e.prototype.isWorking=function(){var e;return(null===(e=this._loader)||void 0===e?void 0:e.isWorking())&&!this._paused},e.prototype.isPaused=function(){return this._paused},Object.defineProperty(e.prototype,"status",{get:function(){var e;return null===(e=this._loader)||void 0===e?void 0:e.status},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"extraData",{get:function(){return this._extraData},set:function(e){this._extraData=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onDataArrival",{get:function(){return this._onDataArrival},set:function(e){this._onDataArrival=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onSeeked",{get:function(){return this._onSeeked},set:function(e){this._onSeeked=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onError",{get:function(){return this._onError},set:function(e){this._onError=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onComplete",{get:function(){return this._onComplete},set:function(e){this._onComplete=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onRedirect",{get:function(){return this._onRedirect},set:function(e){this._onRedirect=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onRecoveredEarlyEof",{get:function(){return this._onRecoveredEarlyEof},set:function(e){this._onRecoveredEarlyEof=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentURL",{get:function(){var e;return null===(e=this._dataSource)||void 0===e?void 0:e.url},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"hasRedirect",{get:function(){var e;return null!=this._redirectedURL||void 0!==(null===(e=this._dataSource)||void 0===e?void 0:e.redirectedURL)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentRedirectedURL",{get:function(){var e;return this._redirectedURL||(null===(e=this._dataSource)||void 0===e?void 0:e.redirectedURL)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentSpeed",{get:function(){var e,t;return this._loaderClass===p?null===(e=this._loader)||void 0===e?void 0:e.currentSpeed:null===(t=this._speedSampler)||void 0===t?void 0:t.lastSecondKBps},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"loaderType",{get:function(){var e;return null===(e=this._loader)||void 0===e?void 0:e.type},enumerable:!1,configurable:!0}),e.prototype._selectSeekHandler=function(){var e=this._config;if("range"===e.seekType)this._seekHandler=new m(!!this._config.rangeLoadZeroStart);else if("param"===e.seekType){var t=e.seekParamStart||"bstart",i=e.seekParamEnd||"bend";this._seekHandler=new v(t,i)}else{if("custom"!==e.seekType)throw new d.Qn("Invalid seekType in config: ".concat((null==e?void 0:e.seekType)||""));if("function"!=typeof e.customSeekHandler)throw new d.Qn("Custom seekType specified in config but invalid customSeekHandler!");this._seekHandler=new e.customSeekHandler}},e.prototype._selectLoader=function(){var e;if(null!=this._config.customLoader)this._loaderClass=(null===(e=this._config)||void 0===e?void 0:e.customLoader)||null;else if(this._isWebSocketURL)this._loaderClass=f;else if(c.isSupported())this._loaderClass=c;else if(u.isSupported())this._loaderClass=u;else{if(!p.isSupported())throw new d.Al("Your browser doesn't support xhr with arraybuffer responseType!");this._loaderClass=p}},e.prototype._createLoader=function(){var e;this._loaderClass&&(this._loader=new this._loaderClass(this._seekHandler,this._config),(null===(e=this._loader)||void 0===e?void 0:e.needStashBuffer)||(this._enableStash=!1),this._loader&&(this._loader.onContentLengthKnown=this._onContentLengthKnown.bind(this),this._loader.onURLRedirect=this._onURLRedirect.bind(this),this._loader.onDataArrival=this._onLoaderChunkArrival.bind(this),this._loader.onComplete=this._onLoaderComplete.bind(this),this._loader.onError=this._onLoaderError.bind(this)))},e.prototype.open=function(e){var t,i;this._currentRange={from:0,to:-1},e&&(this._currentRange.from=e),null===(t=this._speedSampler)||void 0===t||t.reset(),e||(this._fullRequestFlag=!0),null===(i=this._loader)||void 0===i||i.open(this._dataSource,Object.assign({},this._currentRange))},e.prototype.abort=function(){var e;null===(e=this._loader)||void 0===e||e.abort(),this._paused&&(this._paused=!1,this._resumeFrom=0)},e.prototype.pause=function(){var e,t;this.isWorking()&&(null===(e=this._loader)||void 0===e||e.abort(),0!==this._stashUsed?(this._resumeFrom=this._stashByteStart,this._currentRange&&(this._currentRange.to=this._stashByteStart-1)):this._resumeFrom=((null===(t=this._currentRange)||void 0===t?void 0:t.to)||0)+1,this._stashUsed=0,this._stashByteStart=0,this._paused=!0)},e.prototype.resume=function(){if(this._paused){this._paused=!1;var e=this._resumeFrom;this._resumeFrom=0,this._internalSeek(e,!0)}},e.prototype.seek=function(e){this._paused=!1,this._stashUsed=0,this._stashByteStart=0,this._internalSeek(e,!0)},e.prototype._internalSeek=function(e,t){var i,n,r,o;(null===(i=this._loader)||void 0===i?void 0:i.isWorking())&&(null===(n=this._loader)||void 0===n||n.abort()),this._flushStashBuffer(t),null===(r=this._loader)||void 0===r||r.destroy(),this._loader=null;var a={from:e,to:-1};this._currentRange={from:a.from,to:-1},null===(o=this._speedSampler)||void 0===o||o.reset(),this._stashSize=this._stashInitialSize,this._createLoader(),this._loader.open(this._dataSource,a),this._onSeeked&&this._onSeeked()},e.prototype.updateUrl=function(e){if(!e||"string"!=typeof e||0===e.length)throw new d.Qn("Url must be a non-empty string!");this._dataSource.url=e},e.prototype._expandBuffer=function(e){for(var t=this._stashSize;t+10485760){var n=new Uint8Array(this._stashBuffer,0,this._stashUsed);new Uint8Array(i,0,t).set(n,0)}this._stashBuffer=i,this._bufferSize=t}},e.prototype._normalizeSpeed=function(e){var t=this._speedNormalizeList,i=t.length-1,n=0,r=0,o=i;if(e=t[n]&&e=512&&e<=1024?Math.floor(1.5*e):2*e)>8192&&(t=8192);var i=1024*t+1048576;this._bufferSize0){var s=this._stashBuffer.slice(0,this._stashUsed);(h=this._dispatchChunks(s,this._stashByteStart))0&&(u=new Uint8Array(s,h),c.set(u,0),this._stashUsed=u.byteLength,this._stashByteStart+=h):(this._stashUsed=0,this._stashByteStart+=h),this._stashUsed+e.byteLength>this._bufferSize&&(this._expandBuffer(this._stashUsed+e.byteLength),c=new Uint8Array(this._stashBuffer,0,this._bufferSize)),c.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength}else(h=this._dispatchChunks(e,t))this._bufferSize&&(this._expandBuffer(l),c=new Uint8Array(this._stashBuffer,0,this._bufferSize)),c.set(new Uint8Array(e,h),0),this._stashUsed+=l,this._stashByteStart=t+h);else if(0===this._stashUsed){var l;(h=this._dispatchChunks(e,t))this._bufferSize&&this._expandBuffer(l),(c=new Uint8Array(this._stashBuffer,0,this._bufferSize)).set(new Uint8Array(e,h),0),this._stashUsed+=l,this._stashByteStart=t+h)}else{var c,h;if(this._stashUsed+e.byteLength>this._bufferSize&&this._expandBuffer(this._stashUsed+e.byteLength),(c=new Uint8Array(this._stashBuffer,0,this._bufferSize)).set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength,(h=this._dispatchChunks(this._stashBuffer.slice(0,this._stashUsed),this._stashByteStart))0){var u=new Uint8Array(this._stashBuffer,h);c.set(u,0)}this._stashUsed-=h,this._stashByteStart+=h}}},e.prototype._flushStashBuffer=function(e){if(this._stashUsed>0){var t=this._stashBuffer.slice(0,this._stashUsed),i=this._dispatchChunks(t,this._stashByteStart),r=t.byteLength-i;if(i0){var o=new Uint8Array(this._stashBuffer,0,this._bufferSize),a=new Uint8Array(t,i);o.set(a,0),this._stashUsed=a.byteLength,this._stashByteStart+=i}return 0}n.A.w(this.TAG,"".concat(r," bytes unconsumed data remain when flush buffer, dropped"))}return this._stashUsed=0,this._stashByteStart=0,r}return 0},e.prototype._onLoaderComplete=function(e,t){this._flushStashBuffer(!0),this._onComplete&&this._onComplete(this._extraData)},e.prototype._onLoaderError=function(e,t){var i;switch(n.A.e(this.TAG,"Loader error, code = ".concat(t.code,", msg = ").concat(t.msg)),this._flushStashBuffer(!1),this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,e=a.Xv.UNRECOVERABLE_EARLY_EOF),e){case a.Xv.EARLY_EOF:if(!this._config.isLive&&this._totalLength){var r=((null===(i=this._currentRange)||void 0===i?void 0:i.to)||0)+1;return void(r{i.d(t,{HC:()=>a,Xv:()=>o,eO:()=>r});var n=i(713),r={kIdle:0,kConnecting:1,kBuffering:2,kError:3,kComplete:4},o={OK:"OK",EXCEPTION:"Exception",HTTP_STATUS_CODE_INVALID:"HttpStatusCodeInvalid",CONNECTING_TIMEOUT:"ConnectingTimeout",EARLY_EOF:"EarlyEof",UNRECOVERABLE_EARLY_EOF:"UnrecoverableEarlyEof"},a=function(){function e(e){this._type=e||"undefined",this._status=r.kIdle,this._needStash=!1,this._onContentLengthKnown=null,this._onURLRedirect=null,this._onDataArrival=null,this._onError=null,this._onComplete=null}return e.prototype.destroy=function(){this._status=r.kIdle,this._onContentLengthKnown=null,this._onURLRedirect=null,this._onDataArrival=null,this._onError=null,this._onComplete=null},e.prototype.isWorking=function(){return this._status===r.kConnecting||this._status===r.kBuffering},Object.defineProperty(e.prototype,"type",{get:function(){return this._type},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"status",{get:function(){return this._status},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"needStashBuffer",{get:function(){return this._needStash},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onContentLengthKnown",{get:function(){return this._onContentLengthKnown},set:function(e){this._onContentLengthKnown=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onURLRedirect",{get:function(){return this._onURLRedirect},set:function(e){this._onURLRedirect=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onDataArrival",{get:function(){return this._onDataArrival},set:function(e){this._onDataArrival=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onError",{get:function(){return this._onError},set:function(e){this._onError=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onComplete",{get:function(){return this._onComplete},set:function(e){this._onComplete=e},enumerable:!1,configurable:!0}),e.prototype.open=function(e,t){throw new n.Xu("Unimplemented abstract function!")},e.prototype.abort=function(){throw new n.Xu("Unimplemented abstract function!")},e}()},620:(e,t,i)=>{i.d(t,{A:()=>r});var n={};!function(){var e=self.navigator.userAgent.toLowerCase(),t=/(edge)\/([\w.]+)/.exec(e)||/(opr)[\/]([\w.]+)/.exec(e)||/(chrome)[ \/]([\w.]+)/.exec(e)||/(iemobile)[\/]([\w.]+)/.exec(e)||/(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.includes("trident")&&/(rv)(?::| )([\w.]+)/.exec(e)||!e.includes("compatible")&&/(firefox)[ \/]([\w.]+)/.exec(e)||[],i=/(ipad)/.exec(e)||/(ipod)/.exec(e)||/(windows phone)/.exec(e)||/(iphone)/.exec(e)||/(kindle)/.exec(e)||/(android)/.exec(e)||/(windows)/.exec(e)||/(mac)/.exec(e)||/(linux)/.exec(e)||/(cros)/.exec(e)||[],r={browser:t[5]||t[3]||t[1]||"",version:t[2]||t[4]||"0",majorVersion:t[4]||t[2]||"0",platform:i[0]||""},o={};if(r.browser){o[r.browser]=!0;var a=r.majorVersion.split(".");o.version={major:parseInt(r.majorVersion,10),string:r.version},a.length>1&&(o.version.minor=parseInt(a[1],10)),a.length>2&&(o.version.build=parseInt(a[2],10))}if(r.platform&&(o[r.platform]=!0),(o.chrome||o.opr||o.safari)&&(o.webkit=!0),o.rv||o.iemobile){o.rv&&delete o.rv;var s="msie";r.browser=s,o[s]=!0}if(o.edge){delete o.edge;var d="msedge";r.browser=d,o[d]=!0}if(o.opr){var l="opera";r.browser=l,o[l]=!0}if(o.safari&&o.android){var c="android";r.browser=c,o[c]=!0}for(var h in o.name=r.browser,o.platform=r.platform,n)Object.prototype.hasOwnProperty.call(n,h)&&delete n[h];Object.assign(n,o)}();const r=n},713:(e,t,i)=>{i.d(t,{Al:()=>o,Qn:()=>s,Xu:()=>d,j4:()=>a});var n,r=(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),o=function(){function e(e){this.name="RuntimeException",this._message=e}return Object.defineProperty(e.prototype,"message",{get:function(){return this._message},enumerable:!1,configurable:!0}),e.prototype.toString=function(){return this.name+": "+this.message},e}(),a=function(e){function t(t){var i=e.call(this,t)||this;return i.name="IllegalStateException",i}return r(t,e),t}(o),s=function(e){function t(t){var i=e.call(this,t)||this;return i.name="InvalidArgumentException",i}return r(t,e),t}(o),d=function(e){function t(t){var i=e.call(this,t)||this;return i.name="NotImplementedException",i}return r(t,e),t}(o)},502:(e,t,i)=>{i.d(t,{A:()=>r});var n=i(413);const r=function(){function e(){}return e.e=function(t,i){var n;t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var r="[".concat(t,"] > ").concat(i);e.ENABLE_CALLBACK&&(null===(n=e.emitter)||void 0===n||n.emit("log","error",r)),e.ENABLE_ERROR&&(console.error||console.warn)},e.i=function(t,i){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var n="[".concat(t,"] > ").concat(i);e.ENABLE_CALLBACK&&e.emitter.emit("log","info",n),e.ENABLE_INFO&&console.info},e.w=function(t,i){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var n="[".concat(t,"] > ").concat(i);e.ENABLE_CALLBACK&&e.emitter.emit("log","warn",n),e.ENABLE_WARN&&console.warn},e.d=function(t,i){var n;t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var r="[".concat(t,"] > ").concat(i);e.ENABLE_CALLBACK&&(null===(n=e.emitter)||void 0===n||n.emit("log","debug",r)),e.ENABLE_DEBUG&&console.debug},e.v=function(t,i){var n;t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var r="[".concat(t,"] > ").concat(i);e.ENABLE_CALLBACK&&(null===(n=e.emitter)||void 0===n||n.emit("log","verbose",r)),e.ENABLE_VERBOSE},e.FORCE_GLOBAL_TAG=!1,e.GLOBAL_TAG="ezuikit-flv",e.ENABLE_CALLBACK=!1,e.emitter=new n.A,e.ENABLE_ERROR=!0,e.ENABLE_INFO=!0,e.ENABLE_WARN=!0,e.ENABLE_DEBUG=!0,e.ENABLE_VERBOSE=!0,e}()},641:(e,t,i)=>{i.d(t,{A:()=>o});var n=i(413),r=i(502);const o=function(){function e(){}return Object.defineProperty(e,"forceGlobalTag",{get:function(){return r.A.FORCE_GLOBAL_TAG},set:function(t){r.A.FORCE_GLOBAL_TAG=t,e._notifyChange()},enumerable:!1,configurable:!0}),Object.defineProperty(e,"globalTag",{get:function(){return r.A.GLOBAL_TAG},set:function(t){r.A.GLOBAL_TAG=t,e._notifyChange()},enumerable:!1,configurable:!0}),Object.defineProperty(e,"enableAll",{get:function(){return r.A.ENABLE_VERBOSE&&r.A.ENABLE_DEBUG&&r.A.ENABLE_INFO&&r.A.ENABLE_WARN&&r.A.ENABLE_ERROR},set:function(t){r.A.ENABLE_VERBOSE=t,r.A.ENABLE_DEBUG=t,r.A.ENABLE_INFO=t,r.A.ENABLE_WARN=t,r.A.ENABLE_ERROR=t,e._notifyChange()},enumerable:!1,configurable:!0}),Object.defineProperty(e,"enableDebug",{get:function(){return r.A.ENABLE_DEBUG},set:function(t){r.A.ENABLE_DEBUG=t,e._notifyChange()},enumerable:!1,configurable:!0}),Object.defineProperty(e,"enableVerbose",{get:function(){return r.A.ENABLE_VERBOSE},set:function(t){r.A.ENABLE_VERBOSE=t,e._notifyChange()},enumerable:!1,configurable:!0}),Object.defineProperty(e,"enableInfo",{get:function(){return r.A.ENABLE_INFO},set:function(t){r.A.ENABLE_INFO=t,e._notifyChange()},enumerable:!1,configurable:!0}),Object.defineProperty(e,"enableWarn",{get:function(){return r.A.ENABLE_WARN},set:function(t){r.A.ENABLE_WARN=t,e._notifyChange()},enumerable:!1,configurable:!0}),Object.defineProperty(e,"enableError",{get:function(){return r.A.ENABLE_ERROR},set:function(t){r.A.ENABLE_ERROR=t,e._notifyChange()},enumerable:!1,configurable:!0}),e.getConfig=function(){return{globalTag:r.A.GLOBAL_TAG,forceGlobalTag:r.A.FORCE_GLOBAL_TAG,enableVerbose:r.A.ENABLE_VERBOSE,enableDebug:r.A.ENABLE_DEBUG,enableInfo:r.A.ENABLE_INFO,enableWarn:r.A.ENABLE_WARN,enableError:r.A.ENABLE_ERROR,enableCallback:r.A.ENABLE_CALLBACK}},e.applyConfig=function(e){r.A.GLOBAL_TAG=e.globalTag,r.A.FORCE_GLOBAL_TAG=e.forceGlobalTag,r.A.ENABLE_VERBOSE=e.enableVerbose,r.A.ENABLE_DEBUG=e.enableDebug,r.A.ENABLE_INFO=e.enableInfo,r.A.ENABLE_WARN=e.enableWarn,r.A.ENABLE_ERROR=e.enableError,r.A.ENABLE_CALLBACK=!!e.enableCallback},e._notifyChange=function(){var t=e.emitter;if(t.listenerCount("change")>0){var i=e.getConfig();t.emit("change",i)}},e.registerListener=function(t){e.emitter.addListener("change",t)},e.removeListener=function(t){e.emitter.removeListener("change",t)},e.addLogListener=function(t){r.A.emitter.addListener("log",t),r.A.emitter.listenerCount("log")>0&&(r.A.ENABLE_CALLBACK=!0,e._notifyChange())},e.removeLogListener=function(t){r.A.emitter.removeListener("log",t),0===r.A.emitter.listenerCount("log")&&(r.A.ENABLE_CALLBACK=!1,e._notifyChange())},e.emitter=new n.A,e}()},413:(e,t,i)=>{i.d(t,{A:()=>n});const n=i(343)}},t={};function i(n){var r=t[n];if(void 0!==r)return r.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,i),o.exports}return i.m=e,i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i(446)})()))}(Fi);var Vi=Fi.exports;class Ni extends Yt{constructor(e){super(),this.player=e;const t=document.createElement("video"),i=document.createElement("canvas");this.$posterElement=document.createElement("img"),t.volume=0,t.oncontextmenu=e=>{e.preventDefault()},this.player._opt.hasAudio||(t.muted=!0),t.style.position="absolute",t.style.top="0px",t.style.left="0px",this._delayPlay=!1,e.$container.appendChild(t),this.videoInfo={width:"",height:"",encType:""},this.$videoElement=t,this.$canvasElement=i,this.canvasContext=i.getContext("2d"),this.fixChromeVideoFlashBug(),this.resize();const{proxy:n}=this.player.events;n(this.$videoElement,"canplay",(()=>{this.player.debug.log("Video",`canplay and _delayPlay is ${this._delayPlay}`),this._delayPlay&&this._play(),this.player.$container.contains(this.$posterElement)&&this.$posterElement&&this.player.$container.removeChild(this.$posterElement)})),n(this.$videoElement,"waiting",(()=>{this.player.emit(mt.videoWaiting)})),n(this.$videoElement,"timeupdate",(e=>{const t=parseInt(e.timeStamp,10);this.player.emit(mt.timeUpdate,t),!this.isPlaying()&&this.init&&(this.player.debug.log("Video","timeupdate and this.isPlaying is false and retry play"),this.$videoElement.play())})),this.player.debug.log("Video","init")}destroy(){super.destroy(),this.$canvasElement=null,this.canvasContext=null,this.$videoElement&&(this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.src="",this.$videoElement.removeAttribute("src"),this.$videoElement=null),this.trackGenerator&&(this.trackGenerator.stop(),this.trackGenerator=null),this.vwriter&&(this.vwriter.close(),this.vwriter=null),this.player.$container.contains(this.$posterElement)&&this.$posterElement&&this.player.$container.removeChild(this.$posterElement),this.player.debug.log("Video","destroy")}fixChromeVideoFlashBug(){const e=function(){const e=navigator.userAgent.toLowerCase(),t={},i={IE:window.ActiveXObject||"ActiveXObject"in window,Chrome:e.indexOf("chrome")>-1&&e.indexOf("safari")>-1,Firefox:e.indexOf("firefox")>-1,Opera:e.indexOf("opera")>-1,Safari:e.indexOf("safari")>-1&&-1===e.indexOf("chrome"),Edge:e.indexOf("edge")>-1,QQBrowser:/qqbrowser/.test(e),WeixinBrowser:/MicroMessenger/i.test(e)};for(let n in i)if(i[n]){let i="";if("IE"===n)i=e.match(/(msie\s|trident.*rv:)([\w.]+)/)[2];else if("Chrome"===n){for(const e in navigator.mimeTypes)"application/360softmgrplugin"===navigator.mimeTypes[e].type&&(n="360");i=e.match(/chrome\/([\d.]+)/)[1]}else"Firefox"===n?i=e.match(/firefox\/([\d.]+)/)[1]:"Opera"===n?i=e.match(/opera\/([\d.]+)/)[1]:"Safari"===n?i=e.match(/version\/([\d.]+)/)[1]:"Edge"===n?i=e.match(/edge\/([\d.]+)/)[1]:"QQBrowser"===n&&(i=e.match(/qqbrowser\/([\d.]+)/)[1]);t.type=n,t.version=parseInt(i)}return t}(),t=e.type.toLowerCase();if("chrome"===t||"edge"===t){this.player.$container.style.backdropFilter="blur(0px)"}}play(){if(this.$videoElement){const e=this._getVideoReadyState();if(this.player.debug.log("Video",`play and readyState: ${e}`),0===e)return this.player.debug.warn("Video","readyState is 0 and set _delayPlay to true"),void(this._delayPlay=!0);this._play()}}_getVideoReadyState(){let e=0;return this.$videoElement&&(e=this.$videoElement.readyState),e}_play(){this.$videoElement&&this.$videoElement.play().then((()=>{this._delayPlay=!1,this.player.debug.log("Video","_play success"),setTimeout((()=>{this.isPlaying()||(this.player.debug.warn("Video","play failed and retry play"),this._play())}),100)})).catch((e=>{this.player.debug.error("Video","_play error",e)}))}pause(e){this._poster(),e?this.$videoElement&&this.$videoElement.pause():setTimeout((()=>{this.$videoElement&&this.$videoElement.pause()}),100)}clearView(){}screenshot(e,t,i,n){var r;e=e||Nt()+"",n=n||wt.download,t=t||"png";const o={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};"number"!=typeof i&&(i=Number(i||.92));const a=this.$videoElement,s=this.$canvasElement;s.width=a.videoWidth,s.height=a.videoHeight,null===(r=this.canvasContext)||void 0===r||r.drawImage(a,0,0,s.width,s.height);const d=s.toDataURL(o[t]||o.png,i);if(setTimeout((()=>{var e;null===(e=this.canvasContext)||void 0===e||e.clearRect(0,0,s.width,s.height),s.width=0,s.height=0}),10),n===wt.base64)return d;{const t=Vt(d);return n===wt.blob?t:(n===wt.download&&ii(t,e),"")}}initCanvasViewSize(){this.resize()}_poster(){const e=this.screenshot("poster","png",.75,wt.base64);e.length<10||(this.$posterElement.src=e,this.$posterElement.style.position="absolute",this.$posterElement.style.top="0px",this.$posterElement.style.left="0px",this.$posterElement.style.zIndex="1",this.$posterElement.style.objectFit="contain",this.$posterElement.style.pointerEvents="none",this.player.$container.appendChild(this.$posterElement),this.resize())}render(e){this.vwriter&&this.vwriter.write(e.videoFrame)}resize(){this._resizeElement(this.$videoElement),this._resizeElement(this.$posterElement)}_resizeElement(e){const t=this.player._opt,i=this.player.width,n=this.player.height,r=t.rotate;e.width=i,e.height=n,270!==r&&90!==r||(e.width=n,e.height=i);const o=(i-e.width)/2,a=(n-e.height)/2;let s="contain";t.scaleMode===kt.full&&(s="fill"),t.scaleMode===kt.fullAuto&&(s="cover"),e.style.objectFit=s,e.style.transform="rotate("+r+"deg)",e.style.left=o+"px",e.style.top=a+"px"}isPlaying(){return this.$videoElement&&!this.$videoElement.paused}}class Gi extends Ti{constructor(e,t){super(e,t,Ni),this._checkHeartTimeout=null,this._opt.useMSE=!0,this._createPlayer(t)}close(){throw new Error("Method not implemented.")}_createPlayer(e){var t;this._opt=Object.assign({},this._opt,e),this.events||(this.events=new Si(this)),this.video||(this.video=new Ni(this)),null===(t=Vi.LoggingControl)||void 0===t||t.applyConfig({globalTag:"EzuikitFlv",enableVerbose:!!this._opt.debug,enableDebug:!!this._opt.debug,enableInfo:!!this._opt.debug,enableWarn:!!this._opt.debug,enableError:!0}),this.player=Vi.createPlayer({type:"flv",url:e.url,isLive:!0},{stashInitialSize:128,enableWorker:!0,liveBufferLatencyChasing:!0}),this.player.attachMediaElement(this.video.$videoElement),this.loaded=!0,this._flvEvents()}_flvEvents(){this.player&&(this.player.on(Vi.Events.ERROR,((e,t,i)=>{"MediaError"===e&&"MediaMSEError"===t&&9===i.code&&this.emit(gt.mediaSourceH265NotSupport,i),e.indexOf("NetworkError")>-1&&this.player&&this.pause().then((()=>{this.emit(mt.timeout,mt.delayTimeout),this.emit(mt.delayTimeout)})),Pi.report(51,{event:e,value:i}),this.debug.error(`${Vi.Events.ERROR}`,e,t,i)})),this.player.on(Vi.Events.LOADING_COMPLETE,(e=>{this.debug.log(`${Vi.Events.LOADING_COMPLETE}`,e)})),this.player.on(Vi.Events.RECOVERED_EARLY_EOF,(e=>{this.debug.log(`${Vi.Events.RECOVERED_EARLY_EOF}`,e)})),this.player.on(Vi.Events.MEDIA_INFO,(e=>{this.video.updateVideoInfo({encTypeCode:(null==e?void 0:e.videoCodec.indexOf("avc"))>=0?7:12,width:e.width,height:e.height})})),this.player.on(Vi.Events.STATISTICS_INFO,(e=>{e.decodedFrames===this._decodedFrames&&null===this._checkHeartTimeout?this.checkHeartTimeout():e.decodedFrames!==this._decodedFrames&&(this.clearCheckHeartTimeout(),this._decodedFrames=e.decodedFrames)})),this.player.on(Vi.Events.DESTROYING,(e=>{this.debug.log(`${Vi.Events.DESTROYING}`,e)})),this.off(mt.videoWaiting),this.off(mt.timeUpdate),this.on(mt.videoWaiting,(()=>{this.clearCheckHeartTimeout(),null===this._checkHeartTimeout&&this.handleRender()})),this.on(mt.timeUpdate,(()=>{this.clearCheckHeartTimeout()})))}getOption(){return this._opt}emitError(e,t=""){this.emit(mt.error,e,t),this.emit(e,t)}destroy(){this.player&&this.playing&&this.player.pause(),this.player&&(this.player.unload(),this.player.detachMediaElement(),this.player.destroy(),this.player=null),this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._lastVolume=null,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this.video&&(this.video.destroy(),this.video=null),this.events&&(this.events.destroy(),this.events=null),this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this.emit("destroy"),this.off(),this.debug.log("play","destroy end")}resetStats(){}set fullscreen(e){Qt()&&this._opt.useWebFullScreen?(this.emit(mt.webFullscreen,e),setTimeout((()=>{this.updateOption({rotate:e?270:0}),this.resize()}),10)):this.emit(mt.fullscreen,e)}get fullscreen(){return zt()||this.webFullscreen}set webFullscreen(e){this.emit(mt.webFullscreen,e)}get webFullscreen(){return this.$container.classList.contains("flv-fullscreen-web")}set loaded(e){this._hasLoaded=e}get loaded(){return this._hasLoaded}set playing(e){e&&(this.loading=!1),this.playing!==e&&(this._playing=e,this.emit(mt.playing,e),this.emit(mt.volumechange,this.volume),e?this.emit(mt.play):this.emit(mt.pause))}get playing(){return this._playing}get volume(){var e;return(null===(e=this.video)||void 0===e?void 0:e.$videoElement.volume)||0}set volume(e){e!==this.volume&&this.video&&(this.video.$videoElement.muted=!1,this.video.$videoElement.volume=e,this._lastVolume=e),0===e?this.emit(mt.mute,!0):this.emit(mt.mute,!1)}get lastVolume(){return this._lastVolume}set loading(e){this.loading!==e&&(this._loading=e,this.emit(mt.loading,this._loading))}get loading(){return this._loading}set audioTimestamp(e){null!==e&&(this._audioTimestamp=e)}get audioTimestamp(){return this._audioTimestamp}set videoTimestamp(e){null!==e&&(this._videoTimestamp=e)}get videoTimestamp(){return this._videoTimestamp}get isDebug(){return!!this._opt.debug}checkHeart(){this.clearCheckHeartTimeout(),this.checkHeartTimeout()}clearCheckHeartTimeout(){this._checkHeartTimeout&&(clearTimeout(this._checkHeartTimeout),this._checkHeartTimeout=null)}checkHeartTimeout(){this._checkHeartTimeout=setTimeout((()=>{this.playing&&this.pause().then((()=>{this.emit(mt.timeout,mt.delayTimeout),this.emit(mt.delayTimeout)}))}),1e3*this._opt.heartTimeout)}checkLoadingTimeout(){this._checkLoadingTimeout=setTimeout((()=>{this.playing||this.pause().then((()=>{this.emit(mt.timeout,mt.loadingTimeout),this.emit(mt.loadingTimeout)}))}),1e3*this._opt.loadingTimeout)}handleRender(){this.loading&&(this.emit(mt.start),this.loading=!1,this.clearCheckLoadingTimeout()),this.playing||(this.playing=!0),this.checkHeart()}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}updateOption(e){var t;super.updateOption(e),null===(t=Vi.LoggingControl)||void 0===t||t.applyConfig({globalTag:"EzuikitFlv",enableVerbose:!!e.debug,enableDebug:!!e.debug,enableInfo:!!e.debug,enableWarn:!!e.debug,enableError:!0})}play(){var e;return(null===(e=this.player)||void 0===e?void 0:e.playing)?this.pause().then((()=>this._play())):this._play()}_play(){return this._pause&&this._createPlayer(this._opt),this.loading=!0,this.playing=!1,this._times.playInitStart=Nt(),this.player?(this.player.load(),this.clearCheckHeartTimeout(),new Promise(((e,t)=>{this.player.play().then((()=>{this.loading=!1,this.playing=!0,this._opt.isNotMute&&this.mute(!1),e()})).catch((e=>{t(e)}))}))):Promise.reject()}_close(){return new Promise((e=>{this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._lastVolume=null,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this.video&&(this.video.resetInit(),this.video.pause(!0)),this.player&&(this.player.pause(),this.player.unload(),this._pause=!0,this.loaded=!0),this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,setTimeout((()=>{e()}),10)}))}pause(){return this._close()}resumeAudioAfterPause(){}mute(e){this.volume=e?0:.5}resize(){this.video.resize()}}class Wi{constructor(e,t){this._opt=Object.assign({},Ke,t),(Qt()||"360EE"===qe().browser)&&(this._opt.useMSE=!1);return new(Wi.getLoaderFactory(this._opt.useMSE))(e,this._opt)}static getLoaderFactory(e){return e?Gi:Ui}}var ji={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,i="~";function n(){}function r(e,t,i){this.fn=e,this.context=t,this.once=i||!1}function o(e,t,n,o,a){if("function"!=typeof n)throw new TypeError("The listener must be a function");var s=new r(n,o||e,a),d=i?i+t:t;return e._events[d]?e._events[d].fn?e._events[d]=[e._events[d],s]:e._events[d].push(s):(e._events[d]=s,e._eventsCount++),e}function a(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function s(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(i=!1)),s.prototype.eventNames=function(){var e,n,r=[];if(0===this._eventsCount)return r;for(n in e=this._events)t.call(e,n)&&r.push(i?n.slice(1):n);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},s.prototype.listeners=function(e){var t=i?i+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var r=0,o=n.length,a=new Array(o);r=i.heartTimeout)throw new Error(`Flv videoBuffer ${i.videoBuffer}s must be less than heartTimeout ${i.heartTimeout}s`);n.classList.add("ezui-player-container","ezui-flv-container"),n.style.position="relative",delete i.container,i.forceNoOffscreen=!0,qt(i.videoBuffer)&&(i.videoBuffer=1e3*Number(i.videoBuffer)),qt(i.timeout)&&(Ht(i.loadingTimeout)&&(i.loadingTimeout=i.timeout),Ht(i.heartTimeout)&&(i.heartTimeout=i.timeout)),this._opt=i,this.$container=n,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this.events=new Si(this),this._initPlayer(n,i)}static _setOptions(e){return"string"==typeof e.id?e:"string"==typeof e.container?(e.id=e.container.replace(/^#/,""),e):e}destroy(){this.events&&(this.events.destroy(),this.events=null),this.player&&(this.player.destroy(),this.player=null),this.$container&&(this.$container.classList.remove("ezui-flv-container"),this.$container=null),this.$container=null,this._opt={},this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this.removeAllListeners(),Pi.report(50,{name:"destroy"})}_initPlayer(e,t){t.url&&(t.url=r(t.url,zi)),this.player=new Wi(e,t),this._bindEvents(),t.autoPlay&&this.play()}_resetPlayer(e={}){this.player.destroy(),this.player=null,this._opt=Object.assign(this._opt,e),this._initPlayer(this.$container,this._opt)}_bindEvents(){Object.keys(vt).forEach((e=>{this.player.on(vt[e],(t=>{this.emit(e,t),this.event.emit(e,t)}))}))}setDebug(e){this.player.updateOption({debug:e}),Pi.report(50,{name:"setDebug"})}setLogger(e={}){this.player.updateOption({loggerOptions:{...this.player._opt.loggerOptions||{},...e}})}closeSound(){var e,t;null===(e=this.player)||void 0===e||null===(t=e.mute)||void 0===t||t.call(e,!0),Pi.report(50,{name:"closeSound"})}openSound(){var e,t;null===(e=this.player)||void 0===e||null===(t=e.mute)||void 0===t||t.call(e,!1),Pi.report(50,{name:"openSound"})}setVolume(e){this.openSound(),this.player.volume=e,Pi.report(50,{name:"setVolume",value:e})}get volume(){return this.player.volume}set volume(e){this.setVolume(e)}getVolume(){return Pi.report(50,{name:"getVolume"}),this.player.volume}audioResume(){var e,t;null===(e=this.player)||void 0===e||null===(e=e.audio)||void 0===e||null===(t=e.audioEnabled)||void 0===t||t.call(e,!0),Pi.report(50,{name:"audioResume"})}setTimeout(e){e=Number(e),this.player.updateOption({timeout:e,loadingTimeout:e,heartTimeout:e})}setScaleMode(e){return new Promise(((t,i)=>{try{e=Number(e)}catch(e){return void i(e)}[kt.full,kt.auto,kt.fullAuto].includes(e)?(this.player.updateOption({scaleMode:e}),this.resize(),t(),Pi.report(50,{name:"setScaleMode"})):i("scale mode 0 | 1 | 2")}))}pause(){var e,t;return Pi.report(50,{name:"pause"}),null===(e=this.player)||void 0===e||null===(t=e.pause)||void 0===t?void 0:t.call(e)}close(){return this._opt.url="",this._opt.playOptions={},this._opt.urlQuery={},Pi.report(50,{name:"close"}),this.player.close()}clearView(){this.player.video.clearView(),Pi.report(50,{name:"clearView"})}play(e={}){var t;e.url&&(Pi.url=e.url),"string"==typeof e&&(e={url:e});const i=r(e.url||this._opt.url,zi);return i===this._opt.url&&null!==(t=this.player)&&void 0!==t&&t.playing?Promise.resolve():(this._opt=Object.assign({},this._opt,e||{},{url:i}),this._opt.urlQuery=Mi(e.url),Pi.report(50,{name:"play"}),new Promise(((e,t)=>{var i;if(!this._opt.url)return this.emit(mt.error,gt.playError),void t("play url is empty");null!==(i=this.player)&&void 0!==i&&i.playing?(this.clearView(),this.player.play(this._opt).then((()=>{e()})).catch((e=>{this.player.debug.warn("Flv","pause -> play and play error",e),this.player.pause().then((()=>{t(e)}))}))):this._play(this._opt).then((()=>{e()})).catch((e=>{t(e)}))})))}_play(e={}){return new Promise(((t,i)=>{const n=0===e.url.indexOf("http"),r=n?$e:Xe,o=n||-1!==e.url.indexOf(".flv")||this._opt.isFlv?Ye:Ze;this.player.updateOption({protocol:r,demuxType:o}),this.player.once(gt.webglAlignmentError,(()=>{this.pause().then((()=>{this.player.debug.log("Flv","webglAlignmentError"),this._resetPlayer({openWebglAlignment:!0}),this.play(e).then((()=>{this.player.debug.log("Flv","webglAlignmentError and play success")})).catch((()=>{this.player.debug.log("Flv","webglAlignmentError and play error")}))}))})),this.player.once(gt.mediaSourceH265NotSupport,(()=>{this.pause().then((()=>{this.player._opt.autoWasm&&(this.player.debug.log("Flv","auto wasm [mse-> wasm] reset player and play"),this._resetPlayer({useMSE:!1}),this.play(e).then((()=>{this.player.debug.log("Flv","auto wasm [mse-> wasm] reset player and play success")})).catch((()=>{this.player.debug.log("Flv","auto wasm [mse-> wasm] reset player and play error")})))}))})),this.player.once(gt.mediaSourceFull,(()=>{this.pause().then((()=>{this.player.debug.log("Flv","media source full"),this._resetPlayer(),this.play(e).then((()=>{this.player.debug.log("Flv","media source full and reset player and play success")})).catch((()=>{this.player.debug.warn("Flv","media source full and reset player and play error")}))}))})),this.player.once(gt.mediaSourceAppendBufferError,(()=>{this.pause().then((()=>{this.player.debug.log("Flv","media source append buffer error"),this._resetPlayer(),this.play(e).then((()=>{this.player.debug.log("Flv","media source append buffer error and reset player and play success")})).catch((()=>{this.player.debug.warn("Flv","media source append buffer error and reset player and play error")}))}))})),this.player.once(gt.mediaSourceBufferListLarge,(()=>{this.pause().then((()=>{this.player.debug.log("Flv","media source buffer list large"),this._resetPlayer(),this.play(e).then((()=>{this.player.debug.log("Flv","media source buffer list large and reset player and play success")})).catch((()=>{this.player.debug.warn("Flv","media source buffer list large and reset player and play error")}))}))})),this.player.once(gt.mediaSourceAppendBufferEndTimeout,(()=>{this.pause().then((()=>{this.player.debug.log("Flv","media source append buffer end timeout"),this._resetPlayer(),this.play(e).then((()=>{this.player.debug.log("Flv","media source append buffer end timeout and reset player and play success")})).catch((()=>{this.player.debug.warn("Flv","media source append buffer end timeout and reset player and play error")}))}))})),this.player.once(gt.mseSourceBufferError,(()=>{this.pause().then((()=>{this.player.debug.log("Flv","mseSourceBufferError close success")}))})),this.player.once(gt.webcodecsH265NotSupport,(()=>{this.pause().then((()=>{this.player._opt.autoWasm&&(this.player.debug.log("Flv","auto wasm [wcs-> wasm] reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e).then((()=>{this.player.debug.log("Flv","auto wasm [wcs-> wasm] reset player and play success")})).catch((()=>{this.player.debug.warn("Flv","auto wasm [wcs-> wasm] reset player and play error")})))}))})),this.player.once(gt.webcodecsWidthOrHeightChange,(()=>{this.pause().then((()=>{this.player.debug.log("Flv","webcodecs Width Or Height Change reset player and play"),this._resetPlayer({useWCS:!0}),this.play(e).then((()=>{this.player.debug.log("Flv","webcodecs Width Or Height Change reset player and play success")})).catch((()=>{this.player.debug.warn("Flv","webcodecs Width Or Height Change reset player and play error")}))}))})),this.player.once(gt.webcodecsDecodeError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm&&(this.player.debug.log("Flv","webcodecs decode error reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e).then((()=>{this.player.debug.log("Flv","webcodecs decode error reset player and play success")})).catch((()=>{this.player.debug.warn("Flv","webcodecs decode error reset player and play error")})))}))})),this.player.once(gt.wasmDecodeError,(()=>{this.player._opt.wasmDecodeErrorReplay&&this.pause().then((()=>{this.player.debug.log("Flv","wasm decode error and reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e).then((()=>{this.player.debug.log("Flv","wasm decode error and reset player and play success")})).catch((()=>{this.player.debug.warn("Flv","wasm decode error and reset player and play error")}))}))})),this.player.once(mt.delayTimeout,(()=>{this.player._opt.heartTimeoutReplay&&(this._heartTimeoutReplayTimes{this._heartTimeoutReplayTimes=0})).catch((e=>{this._heartTimeoutReplayTimes=0})))})),this.player.once(mt.loadingTimeout,(()=>{this.player._opt.loadingTimeoutReplay&&(this._loadingTimeoutReplayTimes{this._loadingTimeoutReplayTimes=0})).catch((()=>{})))})),this.hasLoaded()?this.player.play(e).then((()=>{t()})).catch((e=>{this.player&&(this.player.debug.warn("Flv","hasLoaded and play error",e),this.player.pause().then((()=>{i(e)})))})):this.player.once(mt.decoderWorkerInit,(()=>{this.player.play(e).then((()=>{t()})).catch((e=>{this.player&&(this.player.debug.warn("Flv","decoderWorkerInit and play error",e),this.player.pause().then((()=>{i(e)})))}))}))}))}resize(e,t){e>0&&t>0&&this.player.updateOption({width:e,height:t}),this.player.resize(),Pi.report(50,{name:"resize"})}setBufferTime(e){var t,i;e=Number(e),this.player.updateOption({videoBuffer:1e3*e}),null===(t=this.player)||void 0===t||null===(t=t.decoderWorker)||void 0===t||null===(i=t.updateWorkConfig)||void 0===i||i.call(t,{key:"videoBuffer",value:1e3*e})}setRotate(e){Pi.report(50,{name:"setRotate",value:e});try{e=parseInt(e,10)}catch(e){return Promise.reject("rotate 0 | 90 | 180 | 270")}const t=[0,90,180,270];return new Promise(((i,n)=>{t.includes(e)?(this.player.updateOption({rotate:e}),this.resize(),i()):n("rotate 0 | 90 | 180 | 270")}))}hasLoaded(){return this.player.loaded}setKeepScreenOn(){this.player.updateOption({keepScreenOn:!0}),Pi.report(50,{name:"setKeepScreenOn"})}_setFullscreen(e){const t=!!e;this.player.fullscreen!==t&&(this.player.fullscreen=t)}fullScreen(){return i()||this._setFullscreen(!0),Pi.report(50,{name:"fullScreen"}),Promise.resolve()}fullscreen(){return i()||this._setFullscreen(!0),Pi.report(50,{name:"fullScreen"}),Promise.resolve()}cancelFullScreen(){return Pi.report(50,{name:"cancelFullScreen"}),this._exitFullscreen()}exitFullscreen(){return this.cancelFullScreen()}_exitFullscreen(){return this._setFullscreen(!1),Pi.report(50,{name:"exitFullscreen"}),Promise.resolve()}getState(){return{playing:!!this.player&&this.player.playing,mute:!(this.player&&this.player.volume>0),fullscreen:!!this.player&&this.player.fullscreen,webFullscreen:!!this.player&&this.player.webFullscreen,loaded:!!this.player&&this.player.loaded,volume:this.player?parseFloat(this.player.volume).toFixed(2):0,isDebug:!!this.player&&this.player.isDebug}}getOptions(){return this.player?this.player._opt:{}}getVersion(){return Pi.report(50,{name:"getVersion"}),"1.0.2"}static supportType(e){if("flv"===e.type)return!0;if(e.url){let t=e.url;t.startsWith("http://")||t.startsWith("https://")||(t=/^\/\//.test(t)?"http:"+t:location.origin+location.pathname+t);try{return/\.flv$/i.test(new URL(t).pathname)}catch(e){}}return!1}}return t(Hi,"ERROR",gt),t(Hi,"TIMEOUT",{loadingTimeout:mt.loadingTimeout,delayTimeout:mt.delayTimeout}),t(Hi,"version","1.0.2"),Hi})); diff --git a/examples/base-app/index.umd.js b/examples/base-app/index.umd.js new file mode 100644 index 0000000..1d738f6 --- /dev/null +++ b/examples/base-app/index.umd.js @@ -0,0 +1,60 @@ +/* +* +* HlsPlayer.js v0.1.0-beta.1 +* Copyright (c) 2024-8-1 Ezviz-OpenBiz +* . +* +*/ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).HlsPlayer=t()}(this,(function(){"use strict";var e=1,t=2,i=3,r="aac",s="h265",n="hevc",a="m3u8",o="hls",l=0,h=1,c=600,d=400,u=30,f=40,g=!1,m=44100,p=20,v="ONCE",y="SWAP",T=0,E=265,S=1001,b=1002,L=1003;var w,A=function(){return window.WebAssembly&&"object"==("undefined"==typeof WebAssembly?"undefined":(e=WebAssembly)&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e);var e};function R(){return(new Date).getTime()}var k=window.AudioContext||(null==(w=window)?void 0:w.webkitAudioContext),_=function(){function e(e){var t=this;this.options={sampleRate:e.sampleRate||m,appendType:e.appendType||l,playMode:e.playMode||y,isLive:e.isLive},this.logger=null==e?void 0:e.logger,this.sourceChannel=-1,this.audioCtx=new k({latencyHint:"interactive",sampleRate:e.sampleRate}),this.gainNode=null,this.sourceList=[],this.startStatus=!1,this.sampleQueue=[],this.nextBuffer=null,this.playTimestamp=0,this.playStartTime=0,this.durationMs=-1,this.volume=e.volume||0,this.onLoadCache=null,this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList[0].onended=function(){t.swapSource(0,1)},this.sourceList[1].onended=function(){t.swapSource(1,0)},this.gainNode=this.audioCtx.createGain(),this.gainNode.gain.value=this.volume,this.gainNode.connect(this.audioCtx.destination),this.runNextBuffer()}var t=e.prototype;return t.resetStartParam=function(){this.playTimestamp=0,this.playStartTime=0},t.setOnLoadCache=function(e){this.onLoadCache=e},t.setDurationMs=function(e){void 0===e&&(e=-1),this.durationMs=e},t.setVolume=function(e){void 0===e&&(e=0),this.volume=e,this.gainNode.gain.value=e},t.getAlignVPTS=function(){return this.playTimestamp+(R()-this.playStartTime)/1e3},t.swapSource=function(e,t){if(void 0===e&&(e=-1),void 0===t&&(t=-1),!this.startStatus)return null;if(e<0||e>=this.sourceList.length)return null;if(t<0||t>=this.sourceList.length)return null;try{this.sourceChannel===e&&null!==this.sourceList[e]&&(this.sourceList[e].disconnect(this.gainNode),this.sourceList[e]=null)}catch(t){this.logger.error("[DEFINE ERROR] this audioCore disconnect source Index:"+e+" error happened!",t)}(this.sourceChannel=t,-2===this.decodeSample(t,e)&&this.options.isLive)&&(this.getAlignVPTS()>=this.durationMs/1e3-.04?this.pause():null==this||this.onLoadCache());return null},t.addSample=function(e){return void 0===e&&(e=null),!(null==e||!e||void 0===e)&&(0===this.sampleQueue.length&&(this.seekPos=null==e?void 0:e.pts),this.sampleQueue.push(e),!0)},t.runNextBuffer=function(){var e=this;window.setInterval((function(){if(!(null!=e.nextBuffer||e.sampleQueue.length=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){s.swapSource(e,t)}),0===this.sampleQueue.length)return this.options.isLive?(this.sourceList[e].connect(this.gainNode),this.sourceList[e].startState||null==(r=this.sourceList[e])||null==(i=r.start)||i.call(r),this.sourceList[e].onended=function(){s.swapSource(e,t)},this.sourceList[e].stop(),0):-2;if(this.sourceList[e].buffer)return this.swapSource(e,t),0;if(null==this.nextBuffer||this.nextBuffer.data.length<1){var n,a,o=this.sourceList[e];return o.connect(this.gainNode),(null==o?void 0:o.startState)||null==(a=this.sourceList[e])||null==(n=a.start)||n.call(a),o.startState=!0,o.stop(),1}var l=this.nextBuffer.data.buffer;this.playTimestamp=this.nextBuffer.pts,this.playStartTime=R();try{this.audioCtx.decodeAudioData(l,(function(t){var i,r;null!==s.sourceList[e]&&(s.sourceList[e].buffer=t,s.sourceList[e].connect(s.gainNode),s.sourceList[e].startState||null==(r=s.sourceList[e])||null==(i=r.start)||i.call(r),s.sourceList[e].startState=!0)}),(function(e){s.logger.error("Error audioCore with decoding audio data",e)}))}catch(e){return this.nextBuffer=null,this.logger.log("decodeAudioData error",e),-3}return this.nextBuffer=null,0},t.decodeWholeSamples=function(e){var t=this;if(void 0===e&&(e=-1),this.sourceChannel=e,e<0||e>=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){}),0===this.sampleQueue.length)return-2;for(var i=null,r=null,s=0;s",e)}},e}(),D=function(){function r(e){this.limit=e.limit||200,this.logger=null==e?void 0:e.logger,this.yuvCache=[]}var s=r.prototype;return s.appendCacheByCacheYuv=function(i){return this.yuvCache.push(i),this.yuvCache.length>=this.limit?(this.shiftYuv(),t):e},s.getState=function(){return this.yuvCache.length<=0?i:this.yuvCache.length>=this.limit?t:e},s.cleanPipeline=function(){this.yuvCache=[],this.yuvCache.length=0},s.shiftYuv=function(){return this.yuvCache.length<=0?null:this.yuvCache.shift()},r}(),x=function(){function e(e,t,i,r,s,n){this.pts=e,this.width=t,this.height=i,this.imageBufferY=r,this.imageBufferB=s,this.imageBufferR=n}return e.prototype.setYuv=function(e,t,i,r,s,n){this.pts=e,this.width=t,this.height=i,this.imageBufferY=r,this.imageBufferB=s,this.imageBufferR=n},e}(),C=function(){function e(e){this.gl=e,this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)}var t=e.prototype;return t.bind=function(e,t,i){var r=this.gl;r.activeTexture([r.TEXTURE0,r.TEXTURE1,r.TEXTURE2][e]),r.bindTexture(r.TEXTURE_2D,this.texture),r.uniform1i(r.getUniformLocation(t,i),e)},t.fill=function(e,t,i){var r=this.gl;r.bindTexture(r.TEXTURE_2D,this.texture),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e,t,0,r.LUMINANCE,r.UNSIGNED_BYTE,i)},e}(),I=function(){function e(e,t){this.gl=null,this.gl=e.getContext("webgl")||e.getContext("experimental-webgl"),this.program=this.gl.createProgram();var i=["attribute highp vec4 aVertexPosition;","attribute vec2 aTextureCoord;","varying highp vec2 vTextureCoord;","void main(void) {"," gl_Position = aVertexPosition;"," vTextureCoord = aTextureCoord;","}"].join("\n"),r=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(r,i),this.gl.compileShader(r);var s=["precision highp float;","varying lowp vec2 vTextureCoord;","uniform sampler2D YTexture;","uniform sampler2D UTexture;","uniform sampler2D VTexture;","const mat4 YUV2RGB = mat4","("," 1.1643828125, 0, 1.59602734375, -.87078515625,"," 1.1643828125, -.39176171875, -.81296875, .52959375,"," 1.1643828125, 2.017234375, 0, -1.081390625,"," 0, 0, 0, 1",");","void main(void) {"," gl_FragColor = vec4( texture2D(YTexture, vTextureCoord).x, texture2D(UTexture, vTextureCoord).x, texture2D(VTexture, vTextureCoord).x, 1) * YUV2RGB;","}"].join("\n"),n=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(n,s),this.gl.compileShader(n),this.gl.attachShader(this.program,r),this.gl.attachShader(this.program,n),this.gl.linkProgram(this.program),this.gl.useProgram(this.program),this.gl.getProgramParameter(this.program,this.gl.LINK_STATUS);var a=this.gl.getAttribLocation(this.program,"aVertexPosition");this.gl.enableVertexAttribArray(a);var o=this.gl.getAttribLocation(this.program,"aTextureCoord");this.gl.enableVertexAttribArray(o),this.verticesBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.verticesBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(a,3,this.gl.FLOAT,!1,0,0),this.texCoordBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texCoordBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(o,2,this.gl.FLOAT,!1,0,0),this.gl.y=new C(this.gl),this.gl.u=new C(this.gl),this.gl.v=new C(this.gl),this.gl.y.bind(0,this.program,"YTexture"),this.gl.u.bind(1,this.program,"UTexture"),this.gl.v.bind(2,this.program,"VTexture")}var t=e.prototype;return t.renderFrame=function(e,t,i,r,s){this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.y.fill(r,s,e),this.gl.u.fill(r>>1,s>>1,t),this.gl.v.fill(r>>1,s>>1,i),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4)},t.destroyContext=function(){try{this.gl.deleteProgram(this.program),this.gl.deleteBuffer(this.verticesBuffer),this.gl.deleteBuffer(this.texCoordBuffer),this.gl.deleteTexture(this.gl.y.texture),this.gl.deleteTexture(this.gl.u.texture),this.gl.deleteTexture(this.gl.v.texture),this.gl=null,this.program=null,this.verticesBuffer=null,this.texCoordBuffer=null}catch(e){}},e}(),P=function(e,t){return{cmd:e,data:t}},O="wasmLoading",M="wasmLoaded",F="wasmFailed",N="videoCallback",U="decodeCodecContext",B="destroy",$="demuxTsStream",G="demuxCoreReceive",K="readPacket",V="readPacketEnd",H="mediaInfo",j={info:"",log:"background: #4096ff; color: #FFF;",warn:"background: yellow; color: #FFF;",error:"background: red; color: #FFF;"},W=function(){function e(e){void 0===e&&(e={}),this._options={level:"INFO",showTime:!1},this._levelNum=3,this.info=this._loggerFactory("info",this._levelNum>=3),this.log=this._loggerFactory("log",this._levelNum>=2),this.warn=this._loggerFactory("warn",this._levelNum>=1),this.error=this._loggerFactory("error",this._levelNum>=0),this.setOptions(e)}var t=e.prototype;return t.setOptions=function(e){var t;this._options=Object.assign({},this._options,e),this._levelNum=this._matchLevel(null!=(t=this._options.level)?t:"INFO"),this.info=this._loggerFactory("info",this._levelNum>=3),this.log=this._loggerFactory("log",this._levelNum>=2),this.warn=this._loggerFactory("warn",this._levelNum>=1),this.error=this._loggerFactory("error",this._levelNum>=0)},t._matchLevel=function(e){var t=3;switch(e){case"INFO":t=3;break;case"LOG":t=2;break;case"WARN":t=1;break;case"ERROR":t=0}return t},t._loggerFactory=function(t,i){var r=console[t];if(i&&r){var s,n=this._options.name?"%c["+this._options.name+"]%c %c["+t.toUpperCase()+"]":"%c["+t.toUpperCase()+"]",a=[this._options.name?"background: green;color: #fff":null,this._options.name?"":null,j[t]].filter((function(e){return null!=e}));return(s=r).bind.apply(s,[].concat([console,n],a))}return e.noop},t.getOptions=function(){return this._options},t.getVersion=function(){return"1.0.1"},e}();function Y(e){return(e=+e)<10&&(e="0"+e),e+""}W.noop=function(){};var q=["info","log","warn","error"];function z(e){var t=new W(e);return new Proxy(t,{get:function(e,t){if(q.includes(t)){var i;if(null==(i=e._options)?void 0:i.showTime){var r=(n=(s=new Date(Date.now())).getFullYear(),a=s.getMonth()+1,o=s.getDate(),l=s.getHours(),h=s.getMinutes(),c=s.getSeconds(),d=s.getMilliseconds(),n+"/"+Y(a)+"/"+Y(o)+" "+Y(l)+":"+Y(h)+":"+Y(c)+":"+d);return e[t].bind(console,"["+r+"]")}return e[t].bind(console)}var s,n,a,o,l,h,c,d;return Reflect.get(e,t)}})}var X="object"==typeof global&&global&&global.Object===Object&&global,Q="object"==typeof self&&self&&self.Object===Object&&self,J=X||Q||Function("return this")(),Z=J.Symbol,ee=Object.prototype,te=ee.hasOwnProperty,ie=ee.toString,re=Z?Z.toStringTag:void 0;var se=Object.prototype.toString;var ne="[object Null]",ae="[object Undefined]",oe=Z?Z.toStringTag:void 0;function le(e){return null==e?void 0===e?ae:ne:oe&&oe in Object(e)?function(e){var t=te.call(e,re),i=e[re];try{e[re]=void 0;var r=!0}catch(e){}var s=ie.call(e);return r&&(t?e[re]=i:delete e[re]),s}(e):function(e){return se.call(e)}(e)}function he(e){return null!=e&&"object"==typeof e}var ce=Array.isArray;function de(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function ue(e){return e}var fe="[object AsyncFunction]",ge="[object Function]",me="[object GeneratorFunction]",pe="[object Proxy]";function ve(e){if(!de(e))return!1;var t=le(e);return t==ge||t==me||t==fe||t==pe}var ye,Te=J["__core-js_shared__"],Ee=(ye=/[^.]+$/.exec(Te&&Te.keys&&Te.keys.IE_PROTO||""))?"Symbol(src)_1."+ye:"";var Se=Function.prototype.toString;var be=/^\[object .+?Constructor\]$/,Le=Function.prototype,we=Object.prototype,Ae=Le.toString,Re=we.hasOwnProperty,ke=RegExp("^"+Ae.call(Re).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function _e(e){return!(!de(e)||(t=e,Ee&&Ee in t))&&(ve(e)?ke:be).test(function(e){if(null!=e){try{return Se.call(e)}catch(e){}try{return e+""}catch(e){}}return""}(e));var t}function De(e,t){var i=function(e,t){return null==e?void 0:e[t]}(e,t);return _e(i)?i:void 0}var xe=Object.create,Ce=function(){function e(){}return function(t){if(!de(t))return{};if(xe)return xe(t);e.prototype=t;var i=new e;return e.prototype=void 0,i}}();var Ie=Date.now;var Pe,Oe,Me,Fe=function(){try{var e=De(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),Ne=Fe?function(e,t){return Fe(e,"toString",{configurable:!0,enumerable:!1,value:(i=t,function(){return i}),writable:!0});var i}:ue,Ue=(Pe=Ne,Oe=0,Me=0,function(){var e=Ie(),t=16-(e-Me);if(Me=e,t>0){if(++Oe>=800)return arguments[0]}else Oe=0;return Pe.apply(void 0,arguments)}),Be=9007199254740991,$e=/^(?:0|[1-9]\d*)$/;function Ge(e,t){var i=typeof e;return!!(t=null==t?Be:t)&&("number"==i||"symbol"!=i&&$e.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=qe}function Xe(e){return null!=e&&ze(e.length)&&!ve(e)}var Qe=Object.prototype;function Je(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||Qe)}function Ze(e){return he(e)&&"[object Arguments]"==le(e)}var et=Object.prototype,tt=et.hasOwnProperty,it=et.propertyIsEnumerable,rt=Ze(function(){return arguments}())?Ze:function(e){return he(e)&&tt.call(e,"callee")&&!it.call(e,"callee")};var st="object"==typeof exports&&exports&&!exports.nodeType&&exports,nt=st&&"object"==typeof module&&module&&!module.nodeType&&module,at=nt&&nt.exports===st?J.Buffer:void 0,ot=(at?at.isBuffer:void 0)||function(){return!1},lt={};lt["[object Float32Array]"]=lt["[object Float64Array]"]=lt["[object Int8Array]"]=lt["[object Int16Array]"]=lt["[object Int32Array]"]=lt["[object Uint8Array]"]=lt["[object Uint8ClampedArray]"]=lt["[object Uint16Array]"]=lt["[object Uint32Array]"]=!0,lt["[object Arguments]"]=lt["[object Array]"]=lt["[object ArrayBuffer]"]=lt["[object Boolean]"]=lt["[object DataView]"]=lt["[object Date]"]=lt["[object Error]"]=lt["[object Function]"]=lt["[object Map]"]=lt["[object Number]"]=lt["[object Object]"]=lt["[object RegExp]"]=lt["[object Set]"]=lt["[object String]"]=lt["[object WeakMap]"]=!1;var ht="object"==typeof exports&&exports&&!exports.nodeType&&exports,ct=ht&&"object"==typeof module&&module&&!module.nodeType&&module,dt=ct&&ct.exports===ht&&X.process,ut=function(){try{var e=ct&&ct.require&&ct.require("util").types;return e||dt&&dt.binding&&dt.binding("util")}catch(e){}}(),ft=ut&&ut.isTypedArray,gt=ft?function(e){return function(t){return e(t)}}(ft):function(e){return he(e)&&ze(e.length)&&!!lt[le(e)]};function mt(e,t){var i=ce(e),r=!i&&rt(e),s=!i&&!r&&ot(e),n=!i&&!r&&!s&>(e),a=i||r||s||n,o=a?function(e,t){for(var i=-1,r=Array(e);++i-1},At.prototype.set=function(e,t){var i=this.__data__,r=Lt(i,e);return r<0?(++this.size,i.push([e,t])):i[r][1]=t,this};var Rt=De(J,"Map");function kt(e,t){var i,r,s=e.__data__;return("string"==(r=typeof(i=t))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==i:null===i)?s["string"==typeof t?"string":"hash"]:s.map}function _t(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t1?t[r-1]:void 0,n=r>2?t[2]:void 0;for(s=qt.length>3&&"function"==typeof s?(r--,s):void 0,n&&function(e,t,i){if(!de(i))return!1;var r=typeof t;return!!("number"==r?Xe(i)&&Ge(t,i.length):"string"==r&&t in i)&&Ve(i[t],e)}(t[0],t[1],n)&&(s=r<3?void 0:s,r=1),e=Object(e);++i{if("undefined"==typeof document)return!1;const e=ti[0],t={};for(const i of ti){const r=i?.[1];if(r in document){for(const[r,s]of i.entries())t[e[r]]=s;return t}}return!1})(),ri={change:ii.fullscreenchange,error:ii.fullscreenerror};let si={request:(e=document.documentElement,t)=>new Promise(((i,r)=>{const s=()=>{si.off("change",s),i()};si.on("change",s);const n=e[ii.requestFullscreen](t);n instanceof Promise&&n.then(s).catch(r)})),exit:()=>new Promise(((e,t)=>{if(!si.isFullscreen)return void e();const i=()=>{si.off("change",i),e()};si.on("change",i);const r=document[ii.exitFullscreen]();r instanceof Promise&&r.then(i).catch(t)})),toggle:(e,t)=>si.isFullscreen?si.exit():si.request(e,t),onchange(e){si.on("change",e)},onerror(e){si.on("error",e)},on(e,t){const i=ri[e];i&&document.addEventListener(i,t,!1)},off(e,t){const i=ri[e];i&&document.removeEventListener(i,t,!1)},raw:ii};Object.defineProperties(si,{isFullscreen:{get:()=>Boolean(document[ii.fullscreenElement])},element:{enumerable:!0,get:()=>document[ii.fullscreenElement]??void 0},isEnabled:{enumerable:!0,get:()=>Boolean(document[ii.fullscreenEnabled])}}),ii||(si={isEnabled:!1});var ni=si,ai={exports:{}};!function(e,t){function i(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}!function(r,s){var n="function",a="undefined",o="object",l="string",h="major",c="model",d="name",u="type",f="vendor",g="version",m="architecture",p="console",v="mobile",y="tablet",T="smarttv",E="wearable",S="embedded",b="Amazon",L="Apple",w="ASUS",A="BlackBerry",R="Browser",k="Chrome",_="Firefox",D="Google",x="Huawei",C="LG",I="Microsoft",P="Motorola",O="Opera",M="Samsung",F="Sharp",N="Sony",U="Xiaomi",B="Zebra",$="Facebook",G="Chromium OS",K="Mac OS",V=function(e){for(var t={},i=0;i0?2===h.length?i(h[1])==n?this[h[0]]=h[1].call(this,d):this[h[0]]=h[1]:3===h.length?i(h[1])!==n||h[1].exec&&h[1].test?this[h[0]]=d?d.replace(h[1],h[2]):s:this[h[0]]=d?h[1].call(this,d,h[2]):s:4===h.length&&(this[h[0]]=d?h[3].call(this,d.replace(h[1],h[2])):s):this[h]=d||s;u+=2}},q=function(e,t){for(var r in t)if(i(t[r])===o&&t[r].length>0){for(var n=0;n2&&(e[c]="iPad",e[u]=y),e},this.getEngine=function(){var e={};return e[d]=s,e[g]=s,Y.call(e,S,L.engine),e},this.getOS=function(){var e={};return e[d]=s,e[g]=s,Y.call(e,S,L.os),w&&!e[d]&&b&&"Unknown"!=b.platform&&(e[d]=b.platform.replace(/chrome os/i,G).replace(/macos/i,K)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return S},this.setUA=function(e){return S=(void 0===e?"undefined":i(e))===l&&e.length>500?W(e,500):e,this},this.setUA(S),this};Q.VERSION="1.0.37",Q.BROWSER=V([d,g,h]),Q.CPU=V([m]),Q.DEVICE=V([c,f,u,p,v,T,y,E,S]),Q.ENGINE=Q.OS=V([d,g]),i(t)!==a?(i(e)!==a&&e.exports&&(t=e.exports=Q),t.UAParser=Q):(void 0===r?"undefined":i(r))!==a&&(r.UAParser=Q);var J=(void 0===r?"undefined":i(r))!==a&&(r.jQuery||r.Zepto);if(J&&!J.ua){var Z=new Q;J.ua=Z.getResult(),J.ua.get=function(){return Z.getUA()},J.ua.set=function(e){Z.setUA(e);var t=Z.getResult();for(var i in t)J.ua[i]=t[i]}}}("object"===("undefined"==typeof window?"undefined":i(window))?window:Qt)}(ai,ai.exports);var oi,li,hi,ci,di=Jt(ai.exports),ui=(oi="undefined"!=typeof self?self:window,li={navigator:void 0!==oi.navigator?oi.navigator:{userAgent:""},infoMap:{engine:["WebKit","Trident","Gecko","Presto"],browser:["Safari","Chrome","Edge","IE","Firefox","Firefox Focus","Chromium","Opera","Vivaldi","Yandex","Arora","Lunascape","QupZilla","Coc Coc","Kindle","Iceweasel","Konqueror","Iceape","SeaMonkey","Epiphany","360","360SE","360EE","UC","QQBrowser","QQ","Baidu","Maxthon","Sogou","LBBROWSER","2345Explorer","TheWorld","XiaoMi","Quark","Qiyu","Wechat","Taobao","Alipay","Weibo","Douban","Suning","iQiYi"],os:["Windows","Linux","Mac OS","Android","Ubuntu","FreeBSD","Debian","iOS","Windows Phone","BlackBerry","MeeGo","Symbian","Chrome OS","WebOS"],device:["Mobile","Tablet","iPad"]}},hi={getMatchMap:function(e){return{Trident:e.indexOf("Trident")>-1||e.indexOf("NET CLR")>-1,Presto:e.indexOf("Presto")>-1,WebKit:e.indexOf("AppleWebKit")>-1,Gecko:e.indexOf("Gecko/")>-1,Safari:e.indexOf("Safari")>-1,Chrome:e.indexOf("Chrome")>-1||e.indexOf("CriOS")>-1,IE:e.indexOf("MSIE")>-1||e.indexOf("Trident")>-1,Edge:e.indexOf("Edge")>-1,Firefox:e.indexOf("Firefox")>-1||e.indexOf("FxiOS")>-1,"Firefox Focus":e.indexOf("Focus")>-1,Chromium:e.indexOf("Chromium")>-1,Opera:e.indexOf("Opera")>-1||e.indexOf("OPR")>-1,Vivaldi:e.indexOf("Vivaldi")>-1,Yandex:e.indexOf("YaBrowser")>-1,Arora:e.indexOf("Arora")>-1,Lunascape:e.indexOf("Lunascape")>-1,QupZilla:e.indexOf("QupZilla")>-1,"Coc Coc":e.indexOf("coc_coc_browser")>-1,Kindle:e.indexOf("Kindle")>-1||e.indexOf("Silk/")>-1,Iceweasel:e.indexOf("Iceweasel")>-1,Konqueror:e.indexOf("Konqueror")>-1,Iceape:e.indexOf("Iceape")>-1,SeaMonkey:e.indexOf("SeaMonkey")>-1,Epiphany:e.indexOf("Epiphany")>-1,360:e.indexOf("QihooBrowser")>-1||e.indexOf("QHBrowser")>-1,"360EE":e.indexOf("360EE")>-1,"360SE":e.indexOf("360SE")>-1,UC:e.indexOf("UC")>-1||e.indexOf(" UBrowser")>-1,QQBrowser:e.indexOf("QQBrowser")>-1,QQ:e.indexOf("QQ/")>-1,Baidu:e.indexOf("Baidu")>-1||e.indexOf("BIDUBrowser")>-1,Maxthon:e.indexOf("Maxthon")>-1,Sogou:e.indexOf("MetaSr")>-1||e.indexOf("Sogou")>-1,LBBROWSER:e.indexOf("LBBROWSER")>-1,"2345Explorer":e.indexOf("2345Explorer")>-1,TheWorld:e.indexOf("TheWorld")>-1,XiaoMi:e.indexOf("MiuiBrowser")>-1,Quark:e.indexOf("Quark")>-1,Qiyu:e.indexOf("Qiyu")>-1,Wechat:e.indexOf("MicroMessenger")>-1,Taobao:e.indexOf("AliApp(TB")>-1,Alipay:e.indexOf("AliApp(AP")>-1,Weibo:e.indexOf("Weibo")>-1,Douban:e.indexOf("com.douban.frodo")>-1,Suning:e.indexOf("SNEBUY-APP")>-1,iQiYi:e.indexOf("IqiyiApp")>-1,Windows:e.indexOf("Windows")>-1,Linux:e.indexOf("Linux")>-1||e.indexOf("X11")>-1,"Mac OS":e.indexOf("Macintosh")>-1,Android:e.indexOf("Android")>-1||e.indexOf("Adr")>-1,Ubuntu:e.indexOf("Ubuntu")>-1,FreeBSD:e.indexOf("FreeBSD")>-1,Debian:e.indexOf("Debian")>-1,"Windows Phone":e.indexOf("IEMobile")>-1||e.indexOf("Windows Phone")>-1,BlackBerry:e.indexOf("BlackBerry")>-1||e.indexOf("RIM")>-1,MeeGo:e.indexOf("MeeGo")>-1,Symbian:e.indexOf("Symbian")>-1,iOS:e.indexOf("like Mac OS X")>-1,"Chrome OS":e.indexOf("CrOS")>-1,WebOS:e.indexOf("hpwOS")>-1,Mobile:e.indexOf("Mobi")>-1||e.indexOf("iPh")>-1||e.indexOf("480")>-1,Tablet:e.indexOf("Tablet")>-1||e.indexOf("Nexus 7")>-1,iPad:e.indexOf("iPad")>-1}},matchInfoMap:function(e){var t,i=(null==(t=li.navigator)?void 0:t.userAgent)||"",r=hi.getMatchMap(i);for(var s in li.infoMap)for(var n=0;n36&&oi.showModalDialog?s=!0:+n>45&&(s=i("type","application/vnd.chromium.remoting-viewer"))}if(r.Baidu&&r.Opera&&(r.Baidu=!1),r.Mobile&&(r.Mobile=!t.includes("iPad")),s&&(i("type","application/gameplugin")||li.navigator&&void 0===li.navigator.connection.saveData?r["360SE"]=!0:r["360EE"]=!0),r.IE||r.Edge)switch(window.screenTop-window.screenY){case 71:case 74:case 99:case 75:case 105:break;case 102:r["360EE"]=!0;break;case 104:r["360SE"]=!0}var a={Safari:function(){return t.replace(/^.*Version\/([\d.]+).*$/,"$1")},Chrome:function(){return t.replace(/^.*Chrome\/([\d.]+).*$/,"$1").replace(/^.*CriOS\/([\d.]+).*$/,"$1")},IE:function(){return t.replace(/^.*MSIE ([\d.]+).*$/,"$1").replace(/^.*rv:([\d.]+).*$/,"$1")},Edge:function(){return t.replace(/^.*Edge\/([\d.]+).*$/,"$1")},Firefox:function(){return t.replace(/^.*Firefox\/([\d.]+).*$/,"$1").replace(/^.*FxiOS\/([\d.]+).*$/,"$1")},"Firefox Focus":function(){return t.replace(/^.*Focus\/([\d.]+).*$/,"$1")},Chromium:function(){return t.replace(/^.*Chromium\/([\d.]+).*$/,"$1")},Opera:function(){return t.replace(/^.*Opera\/([\d.]+).*$/,"$1").replace(/^.*OPR\/([\d.]+).*$/,"$1")},Vivaldi:function(){return t.replace(/^.*Vivaldi\/([\d.]+).*$/,"$1")},Yandex:function(){return t.replace(/^.*YaBrowser\/([\d.]+).*$/,"$1")},Arora:function(){return t.replace(/^.*Arora\/([\d.]+).*$/,"$1")},Lunascape:function(){return t.replace(/^.*Lunascape[\/\s]([\d.]+).*$/,"$1")},QupZilla:function(){return t.replace(/^.*QupZilla[\/\s]([\d.]+).*$/,"$1")},"Coc Coc":function(){return t.replace(/^.*coc_coc_browser\/([\d.]+).*$/,"$1")},Kindle:function(){return t.replace(/^.*Version\/([\d.]+).*$/,"$1")},Iceweasel:function(){return t.replace(/^.*Iceweasel\/([\d.]+).*$/,"$1")},Konqueror:function(){return t.replace(/^.*Konqueror\/([\d.]+).*$/,"$1")},Iceape:function(){return t.replace(/^.*Iceape\/([\d.]+).*$/,"$1")},SeaMonkey:function(){return t.replace(/^.*SeaMonkey\/([\d.]+).*$/,"$1")},Epiphany:function(){return t.replace(/^.*Epiphany\/([\d.]+).*$/,"$1")},360:function(){return t.replace(/^.*QihooBrowser\/([\d.]+).*$/,"$1")},"360SE":function(){return{63:"10.0",55:"9.1",45:"8.1",42:"8.0",31:"7.0",21:"6.3"}[+t.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},"360EE":function(){return{69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[+t.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},Maxthon:function(){return t.replace(/^.*Maxthon\/([\d.]+).*$/,"$1")},QQBrowser:function(){return t.replace(/^.*QQBrowser\/([\d.]+).*$/,"$1")},QQ:function(){return t.replace(/^.*QQ\/([\d.]+).*$/,"$1")},Baidu:function(){return t.replace(/^.*BIDUBrowser[\s\/]([\d.]+).*$/,"$1")},UC:function(){return t.replace(/^.*UC?Browser\/([\d.]+).*$/,"$1")},Sogou:function(){return t.replace(/^.*SE ([\d.X]+).*$/,"$1").replace(/^.*SogouMobileBrowser\/([\d.]+).*$/,"$1")},LBBROWSER:function(){return{57:"6.5",49:"6.0",46:"5.9",42:"5.3",39:"5.2",34:"5.0",29:"4.5",21:"4.0"}[+navigator.userAgent.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},"2345Explorer":function(){return t.replace(/^.*2345Explorer\/([\d.]+).*$/,"$1")},TheWorld:function(){return t.replace(/^.*TheWorld ([\d.]+).*$/,"$1")},XiaoMi:function(){return t.replace(/^.*MiuiBrowser\/([\d.]+).*$/,"$1")},Quark:function(){return t.replace(/^.*Quark\/([\d.]+).*$/,"$1")},Qiyu:function(){return t.replace(/^.*Qiyu\/([\d.]+).*$/,"$1")},Wechat:function(){return t.replace(/^.*MicroMessenger\/([\d.]+).*$/,"$1")},Taobao:function(){return t.replace(/^.*AliApp\(TB\/([\d.]+).*$/,"$1")},Alipay:function(){return t.replace(/^.*AliApp\(AP\/([\d.]+).*$/,"$1")},Weibo:function(){return t.replace(/^.*weibo__([\d.]+).*$/,"$1")},Douban:function(){return t.replace(/^.*com.douban.frodo\/([\d.]+).*$/,"$1")},Suning:function(){return t.replace(/^.*SNEBUY-APP([\d.]+).*$/,"$1")},iQiYi:function(){return t.replace(/^.*IqiyiVersion\/([\d.]+).*$/,"$1")}};return e.browserVersion="",a[e.browser]&&(e.browserVersion=a[e.browser](),e.browserVersion==t&&(e.browserVersion="")),"Edge"==e.browser&&(e.engine="EdgeHTML"),"Chrome"==e.browser&&parseInt(e.browserVersion)>27&&(e.engine="Blink"),"Opera"==e.browser&&parseInt(e.browserVersion)>12&&(e.engine="Blink"),"Yandex"==e.browser&&(e.engine="Blink"),e.browser+" (version: "+e.browserVersion+"; kernel: "+e.engine+")"}},ci={DeviceInfoObj:function(e){var t,i=function(t){var i;null==(i=e.info)||i.forEach((function(e){e.toLowerCase()===t.toLowerCase()&&(s[t]=r[t])}))};e=e||{domain:""};var r={deviceType:hi.getDeviceType(),OS:hi.getOS(),OSVersion:hi.getOSVersion(),sh:oi.screen.height,sw:oi.screen.width,lang:hi.getLanguage(),netWork:hi.getNetwork(),orientation:hi.getOrientationStatu(),browserInfo:hi.getBrowserInfo(),fingerprint:hi.createFingerprint(e.domain),userAgent:null==(t=li.navigator)?void 0:t.userAgent};if(!e.info||0===e.info.length)return r;var s={};for(var n in r)i(n);return s}},{getDeviceInfo:function(e){return ci.DeviceInfoObj(e)}}),fi=function(){function e(){}return e.add=function(t,i){e.queues.push({url:t,data:i})},e.fire=function(){if(e.queues&&0!==e.queues.length){e.isStop=!1;var t=e.queues[0];t.url&&e.api.report(t.data),e.queues.splice(0,1),e.fire()}else e.isStop=!0},e}();fi.isStop=!0,fi.queues=[];var gi=function(){function e(e){this.url=e}var t=e.prototype;return t.report=function(e){this.checkUrl(this.url)&&this.sendInfo(e)},t.sendInfo=function(e){navigator.sendBeacon?this.sendBeacon(this.url,e):this.sendImage(this.url,e)},t.sendImage=function(e,t){var i=this.changeJSON2Query(t),r=new Image;r.onload=r.onerror=function(){r=null},r.src=e+"?"+i+"&random="+Math.random()},t.sendBeacon=function(e,t){try{navigator.sendBeacon(e,this.formatParamsByURLSearchParams(t))}catch(e){}},t.formatParamsByURLSearchParams=function(e){var t=new URLSearchParams;for(var i in e)"object"==typeof e[i]&&(e[i]=JSON.stringify(e[i])),t.append(i,e[i]);return t},t.changeJSON2Query=function(e){var t="";for(var i in e){""!=t&&(t+="&");var r=e[i];t+=i+"="+encodeURIComponent("object"==typeof r?JSON.stringify(r):r)}return t},t.checkUrl=function(e){return!!e&&/^[hH][tT][tT][pP]([sS]?):\/\//.test(e)},e}();function mi(){return mi=Object.assign||function(e){for(var t=1;t0&&t>0))throw new Error("width value "+e+" or height value "+t+" unqualified!");this.width=e,this.height=t},i.play=function(e){throw new Error("Method play not implemented.")},i.pause=function(){throw new Error("Method pause not implemented.")},i.fullscreen=function(){var e,t,i,r;return null==(t=this.logger)||null==(e=t.log)||e.call(t,"[fullscreen]"),null==(r=this.event)||null==(i=r.emit)||i.call(r,"fullscreen"),Ti.send(1,{name:"fullscreen"}),ni.isEnabled&&!this.isMobile?ni.request(this.$container):(this.logger.warn("Not support fullscreen"),Promise.resolve())},i.exitFullscreen=function(){var e,t,i,r;return null==(t=this.logger)||null==(e=t.log)||e.call(t,"[exitFullscreen]"),null==(r=this.event)||null==(i=r.emit)||i.call(r,"exitFullscreen"),Ti.send(1,{name:"exitFullscreen"}),ni.isEnabled&&!this.isMobile?ni.exit():(this.logger.warn("Not support exitFullscreen"),Promise.resolve())},i.setVolume=function(e){throw new Error("Method setVolume not implemented.")},i.resize=function(e,t){Ti.send(1,{name:"resize"});try{var i,r,s,n;this._checkSize(e,t),this.$container.style.width=e+"px",this.$container.style.height=t+"px",null==(r=this.logger)||null==(i=r.log)||i.call(r,"[resize] width: "+e+", height: "+t),null==(n=this.event)||null==(s=n.emit)||s.call(n,"resize",{data:{width:e,height:t}})}catch(e){}},i.destroy=function(){var e,t=this;this.browser&&(this.browser=null),ni.isEnabled&&this._screenfullChange&&(null==ni||null==(e=ni.off)||e.call(ni,"change",this._screenfullChange),this._screenfullChange=null),this.logger&&(this.logger=null),this.event&&setTimeout((function(){t.event.removeAllListeners(),t.event=null}),100)},i.setLogger=function(e){Ti.send(1,{name:"setLogger"}),this.options=zt(this.options,{loggerOptions:e}),this.logger.setOptions(this.options.loggerOptions)},i.getVersion=function(){throw new Error("Method getVersion not implemented.")},i.getOptions=function(){return Ti.send(1,{name:"getOptions"}),this.options},t.supportType=function(e){return!1},t}(ei),bi=function(){function e(e,t){if(this._$container=e,"string"==typeof e&&(this._$container=document.getElementById(e)),!this._$container)throw new Error("VideoCanvas create fail!");this._options=t,this._createDom()}return e.prototype._createDom=function(){var e,t,i,r,s,n,a=this;this.$video||(this.$video=document.createElement("video"),this._options.autoPlay&&(this.$video.muted=!(null==(e=window)?void 0:e.___HUMAN_TOUCH_SCREEN___),this.$video.autoplay=!0,"object"==((s=null==(t=window)?void 0:t.WeixinJSBridge)&&"undefined"!=typeof Symbol&&s.constructor===Symbol?"symbol":typeof s)&&"function"==typeof(null==(r=window)||null==(i=r.WeixinJSBridge)?void 0:i.invoke)&&document.addEventListener("WeixinJSBridgeReady",(function(){a.$video.play(),a.$video.pause()}),!1),this.$video.addEventListener("loadeddata",(function(){setTimeout((function(){a.$video.play()}),10)}))),this.$video.volume=+this._options.volume||0,this.$video.controls=!!this._options.controls,this.$video.preload=this._options.preload||"auto",this.$video.disablePictureInPicture=!0,this.$video.setAttribute("playsInline","true"),this.$video.setAttribute("webkit-playsinline","true"),this.$video.setAttribute("controlsList",this._options.controlsList||""),(this._options.isMobile&&navigator.userAgent.includes("MQQBrowser")||navigator.userAgent.includes("QQTheme"))&&(this.$video.setAttribute("x5-video-player-type","h5"),this.$video.setAttribute("x5-video-player-fullscreen","false"),this.$video.setAttribute("x5-video-orientation","portraint")),this._options.loop&&this.$video.setAttribute("loop","true"),this.$video.style.cssText+="width: 100%; height: 100%; object-fit: contain; position: absolute; z-index: 1; outline: none;",this._$container.innerHTML="",this._$container.appendChild(this.$video),this._options.disableContextmenu&&(null==(n=this.$video)||n.addEventListener("contextmenu",(function(e){return e.preventDefault(),!1}))))},e}(),Li="ezui-hls",wi={width:600,height:400,volume:0,retry:20,autoPlay:!0,staticPath:"",isLive:!0,loggerOptions:{name:"HLS",level:"INFO",showTime:!0}},Ai={disableContextmenu:!0},Ri=function(){function e(e){void 0===e&&(e={}),this.options=Object.assign({},Ai,e),this.logger=this.options.logger,this.event=this.options.event,this._classVideo=Li+"-video",this._$container=document.getElementById(this.options.id),this._render()}var t=e.prototype;return t._render=function(){var e,t;if("video"===this.options.nodeName)this.$video=new bi(this._$container,this.options).$video;else{var i;if(this.$video=document.createElement(this.options.nodeName),this._$container.innerHTML="",this._$container.appendChild(this.$video),this.options.disableContextmenu)null==(i=this.$video)||i.addEventListener("contextmenu",(function(e){return e.preventDefault(),!1}));this.$video.classList.add(this._classVideo),this.$video.style.cssText+="object-fit: contain; z-index:1;"}null==(t=this.event)||null==(e=t.emit)||e.call(t,"rendered")},t._isVideo=function(){return"VIDEO"===this.$video.nodeName},t.destroy=function(){if(this.$video&&this._$container&&this.$video){try{this._$container.removeChild(this.$video)}catch(e){}this.$video=null}},e}();function ki(e,t,i){return t&&function(e,t){for(var i=0;i=1&&(null==(i=e)||null==(t=i.onLoadCacheFinished)||t.call(i),window.clearInterval(e.cacheInterval),e.cacheInterval=null,e.isCaching===b&&e.play(e.playParams),e.isCaching=S)}),40))}},r._playFunc=function(){var e=!1;if(R()-this.calculateStartTime>=this.frameTime-this.preCostTime){e=!0;var t=!0;if(this.calculateStartTime=R(),this.options.audioNone)this.playFrameYUV(t);else{this.fix_poc_err_skip>0&&(this.fix_poc_err_skip--,t=!1);var i=this.videoPTS-this.audio.getAlignVPTS();if(i>0)return void(this.playParams.seekEvent&&!this.options.audioNone&&this.audio.setVolume(0));if(t){if(!(t=-1*i<=1*this.frameTimeSec)){for(var r=parseInt(i/this.frameTimeSec+""),s=0;s",e,r,i),r>=i&&(t.playFrameYUV(!0),i+=1)}),this.frameTime||5)}else(this.videoPTS>=this.playParams.seekPos&&!this.isNewSeek||0===this.playParams.seekPos||0===this.playParams.seekPos)&&(this.frameTime=1e3/this.options.fps,this.frameTimeSec=this.frameTime/1e3,this.options.audioNone||this.audio.play(),this._volume=this.options.audioNone?0:this.audio.volume,this.loop=window.setInterval((function(){var e=R();t._playFunc(),t.preCostTime=R()-e}),this.frameTime||5));return this.setVolume(this._volume),Promise.resolve()},r.stop=function(){this.destroy(),this.stream=new Uint8Array},r.destroy=function(){return void 0!==this.gl&&null!==this.gl&&(this.gl.destroyContext(),this.gl=null),this.endAudio(),this.cacheLoop&&window.clearInterval(this.cacheLoop),this.cacheLoop=null,this.loop&&window.clearInterval(this.loop),this.loop=null,this.pause(),this.decoderWorker.postMessage(P(B)),this.stream=null,this.frameList=null,this.durationMs=-1,this.videoPTS=0,this.isPlaying=!1,this.$video.remove(),!0},r.nextNalu=function(e){if(void 0===e&&(e=1),this.stream.length<=4)return!1;for(var t=-1,i=0;i=this.stream.length){if(-1===t)return!1;var r=this.stream.subarray(t);return this.stream=new Uint8Array,r}var s="0 0 1"===this.stream.slice(0,3).join(" "),n="0 0 0 1"===this.stream.slice(0,4).join(" ");if(s||n){if(-1===t)t=i;else{if(e<=1){var a=this.stream.subarray(t,i);return this.stream=this.stream.subarray(i),a}e-=1}i+=3}}return!1},r.playFrameYUV=function(e){void 0===e&&(e=!1);var t=this.cacheYuvBuf.shiftYuv();if(!t)return this.noCacheFrame+=1,e&&!this.playParams.seekEvent&&this.loadCache(),!1;this.noCacheFrame=0;var i=t.pts;return this.videoPTS=i,this.drawImage(t.width,t.height,t.imageBufferY,t.imageBufferB,t.imageBufferR),t=null,e&&!this.playParams.seekEvent&&this.isPlaying&&this.loadCache(),!0},r.drawImage=function(e,t,i,r,s){this.$video.width===e&&this.$video.height===t||(this.$video.width=e,this.$video.height=t),this.isCheckDisplay||this.checkDisplaySize(e,t);var n=e*t,a=e/2*(t/2),o=new Uint8Array(n+2*a);o.set(i,0),o.set(r,n),o.set(s,n+a),this.gl.renderFrame(i,r,s,e,t),o=null},r.checkDisplaySize=function(e,t){var i,r=e/(null==(i=this.options)?void 0:i.width)>t/this.options.height,s=+(this.options.width/e).toFixed(2),n=+(this.options.height/t).toFixed(2),a=r?s:n,o=this.options.fixed,l=o?this.options.width:parseInt(e*a+""),h=o?this.options.height:parseInt(t*a+"");return this.$video.style.maxWidth="100%",this.$video.style.maxHeight="100%",this.options.width/this.options.height>=1&&l/h>=1?this.$video.style.width="100%":this.$video.style.height="100%",this.isCheckDisplay=!0,[l,h]},r._onWorkerMessage=function(){var e=this;this.decoderWorker.onmessage=function(t){var i=t.data;if(i.cmd===N){var r=i.data,s=r.ptsSec,n=r.strideY,a=r.height;r.width;var o=r.bufY,l=r.bufU,h=r.bufV,c=new x(s,n,a,o,l,h);e.cacheYuvBuf.appendCacheByCacheYuv(c),c=null}}},r.initVideoAndAudio=function(){this.$video.width=this.options.width,this.$video.height=this.options.height,this.gl=new I(this.$video,{preserveDrawingBuffer:!1}),this.options.audioNone||(this.audio=new _({logger:this.logger,sampleRate:this.options.sampleRate,appendType:this.options.appendHevcType,volume:this.options.volume,isLive:this.options.isLive})),this.isPlayLoadingFinish=1},ki(i,[{key:"volume",get:function(){var e;return(null==(e=this.audio)?void 0:e.volume)||this._volume},set:function(e){this.setVolume(e)}}]),i}(Ri),Ci=[/#EXT-X-PROGRAM-DATE-TIME.+\n/g],Ii={lineDelimiter:/\r?\n/,extensionHeader:"#EXTM3U",tagPrefix:"#EXT",segmentPrefix:"#EXTINF",segmentParse:/^#EXTINF: *([0-9.]+)(, *(.+?)?)?$/,tagParse:/^#EXT-X-([A-Z-]+)(:(.+))?$/,version:"VERSION",allowCache:"ALLOW-CACHE",combined:"COMBINED",endList:"ENDLIST",targetDuration:"TARGETDURATION",mediaSequence:"MEDIA-SEQUENCE",discontinuity:"DISCONTINUITY",streamInf:"STREAM-INF",isComment:function(e){return e&&"#"===e[0]&&!e.startsWith(Ii.tagPrefix)},isBlank:function(e){return""===e},canStrip:function(e){return Ii.isBlank(e)||Ii.isComment(e)},defaultMinDur:99999},Pi=function(){function e(e){this._retry=10,this.logger=null==e?void 0:e.logger,this.initState=!0,this.controller=new AbortController,this._slices=[],this._type=o,this._preURI="",this.duration=-1,this.onTransportStream=null,this.onFinished=null}var t=e.prototype;return t.destroy=function(){this.initState=!1},t.fetchM3u8=function(e){var t=this,i=this;if(this.initState){var r=function(t){return new Promise((function(i,r){var s=new XMLHttpRequest;s.open("GET",t),s.onload=function(){this.status>=200&&this.status<300&&(t!==this.responseURL?(e=this.responseURL,i(this.responseURL)):i(""))},s.onreadystatechange=function(){4===s.readyState&&200===s.status&&i(s.responseText)},s.onerror=function(){r(new Error("Network error."))},s.send()}))};r(e).then((function(s){if(t._retry=10,i._uriParse(e)){var n=i._m3u8Parse(s);if("number"==typeof n&&n>=0)var a=setTimeout((function(){i.fetchM3u8(e),clearTimeout(a)}),200*n)}return r=null,s})).catch((function(s){if(t.logger.error("[M3u8Base] fetch m3u8 url Error ==> ",s),r=null,t._retry>=1)var n=setTimeout((function(){i.fetchM3u8(e),clearTimeout(n)}),500);t._retry--}))}},t._uriParse=function(e){this._preURI="";var t=e.split("://"),i=null,r=null;if(t.length<1)return this.logger.log("HLS URI ERROR : "+e),!1;t.length>1?(i=t[0],r=t[1].split("/"),this._preURI=i+"://"):r=t[0].split("/");for(var s=0;su&&(s=u);var f,g=r[o+=1],m=null;if(g.includes("http"))m=g;else{if("/"===g[0]){var p=this._preURI.split("//"),v=p[p.length-1].split("/");this._preURI=p[0]+"//"+v[0]}m=this._preURI+g}if(!this._slices.includes(m))this._slices.push(m),null==this||null==(f=this.onTransportStream)||f.call(this,m,u)}}}this._slices.length>500&&(this._slices=this._slices.slice(-500));var y={type:this._type,duration:-1};return null==this||null==(t=this.onFinished)||t.call(this,y),s},t._readTag=function(e){var t=Ii.tagParse.exec(e);return null!==t?{key:t[1],value:t[3]}:null},e}(),Oi=function(){function e(e){this.sampleRate=e.sampleRate,this.frameDurMs=Math.floor(1024e3/this.sampleRate),this.frameDurSec=this.frameDurMs/1e3}var t=e.prototype;return t.updateOptions=function(e){this.sampleRate=e.sampleRate,this.frameDurMs=1024e3/this.sampleRate,this.frameDurSec=this.frameDurMs/1e3},t._getPktLen=function(e,t,i){return((3&e)<<11)+(t<<3)+((224&i)>>5)},t.sliceAACFrames=function(e,t){for(var i=[],r=e,s=0;s>4==15){var n=this._getPktLen(t[s+3],t[s+4],t[s+5]);if(n<=0)continue;var a=t.subarray(s,s+n),o=new Uint8Array(n);o.set(a,0),i.push({ptime:r,data:o}),r+=this.frameDurSec,s+=n}else s+=1;return i},e}(),Mi="M3U8",Fi="TS",Ni="FETCH",Ui=function(){function e(){}return e.init=function(t){e.collect=new pi(t)},e.send=function(t,i){var r,s;null==(s=e.collect)||null==(r=s.send)||r.call(s,{action:t,logInfo:i})},e.updateParams=function(t){e.collect.updateExtendsInfo(t)},e}();function Bi(e,t,i){return t&&function(e,t){for(var i=0;i ",e),s=null})).catch((function(r){var s,n,a,o;t.logger.error("[MpegTsDemux] demuxerTsInit ERROR fetch ERROR ==> ",r),null==(n=t.event)||null==(s=n.emit)||s.call(n,Fi,{data:r}),null==(o=t.event)||null==(a=o.emit)||a.call(o,Ni,{data:r,type:Fi}),null==i||i.onDemuxedFailed(r,e),Ui.send(100,{url:e,msg:"fetch error"})}))},t._demuxCore=function(e,t){e.length<=0||this.decoderWorker.postMessage(P($,{buff:e,tsUrl:t}))},t.readMediaInfo=function(){return this.mediaInfo},t.readAudioNone=function(){var e;return null==(e=this.mediaInfo)?void 0:e.audioNone},t.isHEVC=function(){return this.mediaInfo.vCodec===n||this.mediaInfo.vCodec===s},t.destroy=function(){this.controller&&this.controller.abort(),this.controller=null,this.mediaInfo=null,this.aacDec=null},t._onWorkerMessage=function(){var e=this;e.logger.log("[demuxer] register _onWorkerMessage"),e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case H:var r,s;if(e.mediaInfo=i.data,e.mediaInfo)null==(s=e.event)||null==(r=s.emit)||r.call(s,"mediaInfo",e.mediaInfo);break;case G:var n;if(e.mediaInfo.vCodec)null==e.aacDec?e.aacDec=new Oi(e.mediaInfo):e.aacDec.updateOptions(e.mediaInfo),null==e||null==(n=e.onDemuxed)||n.call(e)}}))},Bi(e,[{key:"vCodec",get:function(){return this.mediaInfo.vCodec}}]),e}(),Ki=function(){function e(e,t,i,r){this.pts=e,this.dts=e,this.isKey=t,this.data=i,this.video=r}return e.prototype.setFrame=function(e,t,i,r){this.pts=e,this.isKey=t,this.data=i,this.video=r},e}(),Vi=function(){function e(e){this.logger=null==e?void 0:e.logger,this.event=null==e?void 0:e.event,this.decoderWorker=e.decoderWorker,this.m3u8Base=new Pi(e),this.mpegTsDemux=new Gi(e),this.tsList=[],this._startTime=0,this._aStartTime=0,this.lockWait={state:!1,lockMember:{dur:0}},this._timerFeed=null,this.seekPos=-1,this.vPreFramePTS=0,this.aPreFramePTS=0,this.audioNone=!1,this.isHevcParam=!1,this.vCodec="",this.aCodec=null,this.aChannel=0,this.durationMs=-1,this.fps=-1,this.sampleRate=-1,this.size={width:-1,height:-1},this.mediaInfo=null,this._onWorkerMessage(),this.onReadyOBJ=null,this.onFinished=null,this.onDemuxed=null,this.onSamples=null,this.onCacheProcess=null}var t=e.prototype;return t.getCachePTS=function(){return Math.max(this.vPreFramePTS,this.aPreFramePTS)},t.demux=function(e){var t=this,i=this;this.vPreFramePTS=0,this.aPreFramePTS=0,this.m3u8Base.onTransportStream=function(e,t){i.tsList.push({streamURI:e,streamDur:t}),i.lockWait.state=!1},this.m3u8Base.onFinished=function(e){var t;e.type===a?i.durationMs=1e3*e.duration:i.durationMs=-1,null==i||null==(t=i.onFinished)||t.call(i,i.onReadyOBJ,e)},this.mpegTsDemux.onDemuxedFailed=function(e,r){t.logger.error("[M3u8] onDemuxedFailed: ",e,r),i.lockWait.state=!1},this.mpegTsDemux.onDemuxed=function(){var e;t.logger.log("[M3u8] onDemuxed"),null==i.mediaInfo&&(i.mediaInfo=i.mpegTsDemux.readMediaInfo(),t.logger.log("[M3u8] mediaInfo: ",i.mediaInfo),i.isHevcParam=i.mpegTsDemux.isHEVC(),i.vCodec=i.mpegTsDemux.vCodec,i.aCodec=i.mediaInfo.aCodec,i.aChannel=i.mediaInfo.sampleChannel,i.fps=i.mediaInfo.fps,i.sampleRate=i.mediaInfo.sampleRate,(null===i.aCodec||""===i.aCodec||i.aChannel<=0)&&(i.audioNone=!0),i.mediaInfo.width>0&&i.mediaInfo.height>0&&(t.size.width=t.mediaInfo.width,t.size.height=t.mediaInfo.height)),null==i||null==(e=i.onDemuxed)||e.call(i,i.onReadyOBJ),i.mpegTsDemux&&t.decoderWorker.postMessage(P(K))},this.mpegTsDemux.onReady=function(){i._fetchM3u8AndIntervalTs(e)},this._timerTsWasm=window.setInterval((function(){1===Uc.__HLS_WASM_DecoderState__&&(i._fetchM3u8AndIntervalTs(e),window.clearInterval(i._timerTsWasm),i._timerTsWasm=null)}),500)},t._fetchM3u8AndIntervalTs=function(e){var t=this,i=this;this.logger.log("[M3u8] start fetch m3u8 url"),i.m3u8Base.fetchM3u8(e),i._timerFeed=window.setInterval((function(){if(i.tsList.length>0&&!i.lockWait.state)try{var e=i.tsList.shift();if(null!=e){var r=e.streamURI,s=e.streamDur;i.lockWait.state=!0,i.lockWait.lockMember.dur=+s,i.mpegTsDemux.demuxURL(r)}else t.logger.error("[M3u8] onTsReady need wait ")}catch(e){var n,a,o,l;t.logger.error("[M3u8] onTsReady ERROR:",e),null==(a=t.event)||null==(n=a.emit)||n.call(a,Mi,{data:e}),null==(l=t.event)||null==(o=l.emit)||o.call(l,Ni,{data:e,type:Mi}),i.lockWait.state=!1}}),50)},t.destroy=function(){var e;this.m3u8Base&&(null==(e=this.m3u8Base)||e.destroy(),this.m3u8Base=null);this._timerFeed&&(window.clearInterval(this._timerFeed),this._timerFeed=null),this.mpegTsDemux&&(this.mpegTsDemux.destroy(),this.mpegTsDemux=null)},t.bindReady=function(e){this.onReadyOBJ=e},t.getACodec=function(){return this.aCodec},t.getVCodec=function(){return this.vCodec},t.getDurationMs=function(){return this.durationMs},t.getFPS=function(){return this.fps},t.getSampleRate=function(){return this.sampleRate},t.getSampleChannel=function(){return this.aChannel},t.getSize=function(){return this.size},t._onWorkerMessage=function(){this.logger.log("[M3U8] register _onWorkerMessage");var e=this;e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case K:var s,n=i.data,a=n.type,o=n.pts,l=n.ptime,h=n.keyframe,c=n.data,d=n.layer;if(c=new Uint8Array(c),1===a&&e.mpegTsDemux.mediaInfo.aCodec===r&&(c=e.mpegTsDemux.aacDec.sliceAACFrames(l,c)),0===a){var u=function(e){var t=e.nalu,i=e.vlc.vlc;null==t.vps&&(t.vps=new Uint8Array);var r=new Uint8Array(t.vps.length+t.sps.length+t.pps.length+t.sei.length+i.length);return r.set(t.vps,0),r.set(t.sps,t.vps.length),r.set(t.pps,t.vps.length+t.sps.length),r.set(t.sei,t.vps.length+t.sps.length+t.pps.length),r.set(i,t.vps.length+t.sps.length+t.pps.length+t.sei.length),r}(d),f=o,g=new Ki(f,1===h,u,!0);e.vPreFramePTS=f,null==e||e.onSamples(e.onReadyOBJ,g)}else if(1===a){var m;if("aac"===(null==(m=e.mediaInfo)?void 0:m.aCodec)){for(var p=c,v=0;v`):sr}(t)}))}const lr=ar,hr=/^(\d+)x(\d+)$/,cr=/(.+?)=(".*?"|.*?)(?:,|$)/g;class dr{constructor(e){"string"==typeof e&&(e=dr.parseAttrList(e)),Qi(this,e)}get clientAttrs(){return Object.keys(this).filter((e=>"X-"===e.substring(0,2)))}decimalInteger(e){const t=parseInt(this[e],10);return t>Number.MAX_SAFE_INTEGER?1/0:t}hexadecimalInteger(e){if(this[e]){let t=(this[e]||"0x").slice(2);t=(1&t.length?"0":"")+t;const i=new Uint8Array(t.length/2);for(let e=0;eNumber.MAX_SAFE_INTEGER?1/0:t}decimalFloatingPoint(e){return parseFloat(this[e])}optionalFloat(e,t){const i=this[e];return i?parseFloat(i):t}enumeratedString(e){return this[e]}bool(e){return"YES"===this[e]}decimalResolution(e){const t=hr.exec(this[e]);if(null!==t)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}}static parseAttrList(e){let t;const i={};for(cr.lastIndex=0;null!==(t=cr.exec(e));){let e=t[2];0===e.indexOf('"')&&e.lastIndexOf('"')===e.length-1&&(e=e.slice(1,-1));i[t[1].trim()]=e}return i}}function ur(e){return"SCTE35-OUT"===e||"SCTE35-IN"===e}class fr{constructor(e,t){if(this.attr=void 0,this._startDate=void 0,this._endDate=void 0,this._badValueForSameId=void 0,t){const i=t.attr;for(const t in i)if(Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==i[t]){lr.warn(`DATERANGE tag attribute: "${t}" does not match for tags with ID: "${e.ID}"`),this._badValueForSameId=t;break}e=Qi(new dr({}),i,e)}if(this.attr=e,this._startDate=new Date(e["START-DATE"]),"END-DATE"in this.attr){const e=new Date(this.attr["END-DATE"]);Ji(e.getTime())&&(this._endDate=e)}}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;const e=this.duration;return null!==e?new Date(this._startDate.getTime()+1e3*e):null}get duration(){if("DURATION"in this.attr){const e=this.attr.decimalFloatingPoint("DURATION");if(Ji(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&&Ji(this.startDate.getTime())&&(null===this.duration||this.duration>=0)&&(!this.endOnNext||!!this.class)}}class gr{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}}}var mr="audio",pr="video",vr="audiovideo";class yr{constructor(e){this._byteRange=null,this._url=null,this.baseurl=void 0,this.relurl=void 0,this.elementaryStreams={[mr]:null,[pr]:null,[vr]:null},this.baseurl=e}setByteRange(e,t){const i=e.split("@",2);let r;r=1===i.length?(null==t?void 0:t.byteRangeEndOffset)||0:parseInt(i[1]),this._byteRange=[r,parseInt(i[0])+r]}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=Wi.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url||""}set url(e){this._url=e}}class Tr extends yr{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 gr,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(){const{levelkeys:e}=this;if(!e&&!this._decryptdata)return null;if(!this._decryptdata&&this.levelkeys&&!this.levelkeys.NONE){const e=this.levelkeys.identity;if(e)this._decryptdata=e.getDecryptData(this.sn);else{const e=Object.keys(this.levelkeys);if(1===e.length)return this._decryptdata=this.levelkeys[e[0]].getDecryptData(this.sn)}}return this._decryptdata}get end(){return this.start+this.duration}get endProgramDateTime(){if(null===this.programDateTime)return null;if(!Ji(this.programDateTime))return null;const e=Ji(this.duration)?this.duration:0;return this.programDateTime+1e3*e}get encrypted(){var e;if(null!=(e=this._decryptdata)&&e.encrypted)return!0;if(this.levelkeys){const e=Object.keys(this.levelkeys),t=e.length;if(t>1||1===t&&this.levelkeys[e[0]].encrypted)return!0}return!1}setKeyFormat(e){if(this.levelkeys){const t=this.levelkeys[e];t&&!this._decryptdata&&(this._decryptdata=t.getDecryptData(this.sn))}}abortRequests(){var e,t;null==(e=this.loader)||e.abort(),null==(t=this.keyLoader)||t.abort()}setElementaryStreamInfo(e,t,i,r,s,n=!1){const{elementaryStreams:a}=this,o=a[e];o?(o.startPTS=Math.min(o.startPTS,t),o.endPTS=Math.max(o.endPTS,i),o.startDTS=Math.min(o.startDTS,r),o.endDTS=Math.max(o.endDTS,s)):a[e]={startPTS:t,endPTS:i,startDTS:r,endDTS:s,partial:n}}clearElementaryStreamInfo(){const{elementaryStreams:e}=this;e[mr]=null,e[pr]=null,e[vr]=null}}class Er extends yr{constructor(e,t,i,r,s){super(i),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 gr,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=r;const n=e.enumeratedString("BYTERANGE");n&&this.setByteRange(n,s),s&&(this.fragOffset=s.fragOffset+s.duration)}get start(){return this.fragment.start+this.fragOffset}get end(){return this.start+this.duration}get loaded(){const{elementaryStreams:e}=this;return!!(e.audio||e.video||e.audiovideo)}}class Sr{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)return this.advanced=!0,void(this.updated=!0);const t=this.lastPartSn-e.lastPartSn,i=this.lastPartIndex-e.lastPartIndex;this.updated=this.endSN!==e.endSN||!!i||!!t||!this.live,this.advanced=this.endSN>e.endSN||t>0||0===t&&i>0,this.updated||this.advanced?this.misses=Math.floor(.6*e.misses):this.misses=e.misses+1,this.availabilityDelay=e.availabilityDelay}get hasProgramDateTime(){return!!this.fragments.length&&Ji(this.fragments[this.fragments.length-1].programDateTime)}get levelTargetDuration(){return this.averagetargetduration||this.targetduration||10}get drift(){const e=this.driftEndTime-this.driftStartTime;if(e>0){return 1e3*(this.driftEnd-this.driftStart)/e}return 1}get edge(){return this.partEnd||this.fragmentEnd}get partEnd(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].end:this.fragmentEnd}get fragmentEnd(){var e;return null!=(e=this.fragments)&&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 null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].index:-1}get lastPartSn(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}}function br(e){return Uint8Array.from(atob(e),(e=>e.charCodeAt(0)))}function Lr(e){const t=e.split(":");let i=null;if("data"===t[0]&&2===t.length){const e=t[1].split(";"),r=e[e.length-1].split(",");if(2===r.length){const t="base64"===r[0],s=r[1];t?(e.splice(-1,1),i=br(s)):i=function(e){const t=wr(e).subarray(0,16),i=new Uint8Array(16);return i.set(t,16-t.length),i}(s)}}return i}function wr(e){return Uint8Array.from(unescape(encodeURIComponent(e)),(e=>e.charCodeAt(0)))}const Ar="undefined"!=typeof self?self:void 0;var Rr={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.fps",PLAYREADY:"com.microsoft.playready",WIDEVINE:"com.widevine.alpha"},kr="org.w3.clearkey",_r="com.apple.streamingkeydelivery",Dr="com.microsoft.playready",xr="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed";function Cr(e){switch(e){case _r:return Rr.FAIRPLAY;case Dr:return Rr.PLAYREADY;case xr:return Rr.WIDEVINE;case kr:return Rr.CLEARKEY}}var Ir="edef8ba979d64acea3c827dcd51d21ed";function Pr(e){switch(e){case Rr.FAIRPLAY:return _r;case Rr.PLAYREADY:return Dr;case Rr.WIDEVINE:return xr;case Rr.CLEARKEY:return kr}}function Or(e){const{drmSystems:t,widevineLicenseUrl:i}=e,r=t?[Rr.FAIRPLAY,Rr.WIDEVINE,Rr.PLAYREADY,Rr.CLEARKEY].filter((e=>!!t[e])):[];return!r[Rr.WIDEVINE]&&i&&r.push(Rr.WIDEVINE),r}const Mr=null!=Ar&&null!=(Fr=Ar.navigator)&&Fr.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null;var Fr;function Nr(e,t,i){return Uint8Array.prototype.slice?e.slice(t,i):new Uint8Array(Array.prototype.slice.call(e,t,i))}const Ur=(e,t)=>t+10<=e.length&&73===e[t]&&68===e[t+1]&&51===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128,Br=(e,t)=>t+10<=e.length&&51===e[t]&&68===e[t+1]&&73===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128,$r=(e,t)=>{const i=t;let r=0;for(;Ur(e,t);){r+=10;r+=Gr(e,t+6),Br(e,t+10)&&(r+=10),t+=r}if(r>0)return e.subarray(i,i+r)},Gr=(e,t)=>{let i=0;return i=(127&e[t])<<21,i|=(127&e[t+1])<<14,i|=(127&e[t+2])<<7,i|=127&e[t+3],i},Kr=(e,t)=>Ur(e,t)&&Gr(e,t+6)+10<=e.length-t,Vr=e=>{const t=Wr(e);for(let e=0;ee&&"PRIV"===e.key&&"com.apple.streaming.transportStreamTimestamp"===e.info,jr=e=>{const t=String.fromCharCode(e[0],e[1],e[2],e[3]),i=Gr(e,4);return{type:t,size:i,data:e.subarray(10,10+i)}},Wr=e=>{let t=0;const i=[];for(;Ur(e,t);){const r=Gr(e,t+6);t+=10;const s=t+r;for(;t+8"PRIV"===e.type?qr(e):"W"===e.type[0]?Xr(e):zr(e),qr=e=>{if(e.size<2)return;const t=Jr(e.data,!0),i=new Uint8Array(e.data.subarray(t.length+1));return{key:e.type,info:t,data:i.buffer}},zr=e=>{if(e.size<2)return;if("TXXX"===e.type){let t=1;const i=Jr(e.data.subarray(t),!0);t+=i.length+1;const r=Jr(e.data.subarray(t));return{key:e.type,info:i,data:r}}const t=Jr(e.data.subarray(1));return{key:e.type,data:t}},Xr=e=>{if("WXXX"===e.type){if(e.size<2)return;let t=1;const i=Jr(e.data.subarray(t),!0);t+=i.length+1;const r=Jr(e.data.subarray(t));return{key:e.type,info:i,data:r}}const t=Jr(e.data);return{key:e.type,data:t}},Qr=e=>{if(8===e.data.byteLength){const t=new Uint8Array(e.data),i=1&t[3];let r=(t[4]<<23)+(t[5]<<15)+(t[6]<<7)+t[7];return r/=45,i&&(r+=47721858.84),Math.round(r)}},Jr=(e,t=!1)=>{const i=es();if(i){const r=i.decode(e);if(t){const e=r.indexOf("\0");return-1!==e?r.substring(0,e):r}return r.replace(/\0/g,"")}const r=e.length;let s,n,a,o="",l=0;for(;l>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:o+=String.fromCharCode(s);break;case 12:case 13:n=e[l++],o+=String.fromCharCode((31&s)<<6|63&n);break;case 14:n=e[l++],a=e[l++],o+=String.fromCharCode((15&s)<<12|(63&n)<<6|63&a)}}return o};let Zr;function es(){if(!navigator.userAgent.includes("PlayStation 4"))return Zr||void 0===self.TextDecoder||(Zr=new self.TextDecoder("utf-8")),Zr}const ts=function(e){let t="";for(let i=0;i>24,e[t+1]=i>>16&255,e[t+2]=i>>8&255,e[t+3]=255&i}function ds(e,t){const i=[];if(!t.length)return i;const r=e.byteLength;for(let s=0;s1?s+n:r;if(ns(e.subarray(s+4,s+8))===t[0])if(1===t.length)i.push(e.subarray(s+8,a));else{const r=ds(e.subarray(s+8,a),t.slice(1));r.length&&rs.apply(i,r)}s=a}return i}function us(e){const t=[],i=e[0];let r=8;const s=os(e,r);r+=4;let n=0,a=0;0===i?(n=os(e,r),a=os(e,r+4),r+=8):(n=ls(e,r),a=ls(e,r+8),r+=16),r+=2;let o=e.length+a;const l=as(e,r);r+=2;for(let i=0;i>>31)return lr.warn("SIDX has hierarchical references (not supported)"),null;const l=os(e,i);i+=4,t.push({referenceSize:a,subsegmentDuration:l,info:{duration:l/s,start:o,end:o+a-1}}),o+=a,i+=4,r=i}return{earliestPresentationTime:n,timescale:s,version:i,referencesCount:l,references:t}}function fs(e){const t=[],i=ds(e,["moov","trak"]);for(let e=0;e{const i=os(e,4),r=t[i];r&&(r.default={duration:os(e,12),flags:os(e,20)})})),t}function gs(e){const t=e.subarray(8),i=t.subarray(86),r=ns(t.subarray(4,8));let s=r;const n="enca"===r||"encv"===r;if(n){const e=ds(t,[r])[0];ds(e.subarray("enca"===r?28:78),["sinf"]).forEach((e=>{const t=ds(e,["schm"])[0];if(t){const i=ns(t.subarray(4,8));if("cbcs"===i||"cenc"===i){const t=ds(e,["frma"])[0];t&&(s=ns(t))}}}))}switch(s){case"avc1":case"avc2":case"avc3":case"avc4":{const e=ds(i,["avcC"])[0];s+="."+ps(e[1])+ps(e[2])+ps(e[3]);break}case"mp4a":{const e=ds(t,[r])[0],i=ds(e.subarray(28),["esds"])[0];if(i&&i.length>12){let e=4;if(3!==i[e++])break;e=ms(i,e),e+=2;const t=i[e++];if(128&t&&(e+=2),64&t&&(e+=i[e++]),4!==i[e++])break;e=ms(i,e);const r=i[e++];if(64!==r)break;if(s+="."+ps(r),e+=12,5!==i[e++])break;e=ms(i,e);const n=i[e++];let a=(248&n)>>3;31===a&&(a+=1+((7&n)<<3)+((224&i[e])>>5)),s+="."+a}break}case"hvc1":case"hev1":{const e=ds(i,["hvcC"])[0],t=e[1],r=["","A","B","C"][t>>6],n=31&t,a=os(e,2),o=(32&t)>>5?"H":"L",l=e[12],h=e.subarray(6,12);s+="."+r+n,s+="."+a.toString(16).toUpperCase(),s+="."+o+l;let c="";for(let e=h.length;e--;){const t=h[e];if(t||c){c="."+t.toString(16).toUpperCase()+c}}s+=c;break}case"dvh1":case"dvhe":{const e=ds(i,["dvcC"])[0],t=e[2]>>1&127,r=e[2]<<5&32|e[3]>>3&31;s+="."+vs(t)+"."+vs(r);break}case"vp09":{const e=ds(i,["vpcC"])[0],t=e[4],r=e[5],n=e[6]>>4&15;s+="."+vs(t)+"."+vs(r)+"."+vs(n);break}case"av01":{const e=ds(i,["av1C"])[0],t=e[1]>>>5,r=31&e[1],n=e[2]>>>7?"H":"M",a=(64&e[2])>>6,o=(32&e[2])>>5,l=2===t&&a?o?12:10:a?10:8,h=(16&e[2])>>4,c=(8&e[2])>>3,d=(4&e[2])>>2,u=3&e[2],f=1,g=1,m=1,p=0;s+="."+t+"."+vs(r)+n+"."+vs(l)+"."+h+"."+c+d+u+"."+vs(f)+"."+vs(g)+"."+vs(m)+"."+p;break}}return{codec:s,encrypted:n}}function ms(e,t){const i=t+5;for(;128&e[t++]&&t{const l=o.byteOffset-8;ds(o,["traf"]).map((o=>{const h=ds(o,["tfdt"]).map((e=>{const t=e[0];let i=os(e,4);return 1===t&&(i*=Math.pow(2,32),i+=os(e,8)),i/s}))[0];return void 0!==h&&(e=h),ds(o,["tfhd"]).map((h=>{const c=os(h,4),d=16777215&os(h,0);let u=0;const f=!!(16&d);let g=0;const m=!!(32&d);let p=8;c===n&&(!!(1&d)&&(p+=8),!!(2&d)&&(p+=4),!!(8&d)&&(u=os(h,p),p+=4),f&&(g=os(h,p),p+=4),m&&(p+=4),"video"===t.type&&(a=function(e){if(!e)return!1;const t=e.indexOf("."),i=t<0?e:e.substring(0,t);return"hvc1"===i||"hev1"===i||"dvh1"===i||"dvhe"===i}(t.codec)),ds(o,["trun"]).map((n=>{const o=n[0],h=16777215&os(n,0),c=!!(1&h);let d=0;const f=!!(4&h),m=!!(256&h);let p=0;const v=!!(512&h);let y=0;const T=!!(1024&h),E=!!(2048&h);let S=0;const b=os(n,4);let L=8;c&&(d=os(n,L),L+=4),f&&(L+=4);let w=d+l;for(let l=0;l>1&63;return 39===e||40===e}return 6===(31&t)}function Ls(e,t,i,r){const s=ws(e);let n=0;n+=t;let a=0,o=0,l=0;for(;n=s.length)break;l=s[n++],a+=l}while(255===l);o=0;do{if(n>=s.length)break;l=s[n++],o+=l}while(255===l);const e=s.length-n;let t=n;if(oe){lr.error(`Malformed SEI payload. ${o} is too small, only ${e} bytes left to parse.`);break}if(4===a){if(181===s[t++]){const e=as(s,t);if(t+=2,49===e){const e=os(s,t);if(t+=4,1195456820===e){const e=s[t++];if(3===e){const n=s[t++],o=64&n,l=o?2+3*(31&n):0,h=new Uint8Array(l);if(o){h[0]=n;for(let e=1;e16){const e=[];for(let i=0;i<16;i++){const r=s[t++].toString(16);e.push(1==r.length?"0"+r:r),3!==i&&5!==i&&7!==i&&9!==i||e.push("-")}const n=o-16,l=new Uint8Array(n);for(let e=0;e0&&new DataView(a.buffer).setUint32(0,i.byteLength,!1),function(e,...t){const i=t.length;let r=8,s=i;for(;s--;)r+=t[s].byteLength;const n=new Uint8Array(r);for(n[0]=r>>24&255,n[1]=r>>16&255,n[2]=r>>8&255,n[3]=255&r,n.set(e,4),s=0,r=8;s>8*(15-i)&255;return t}(e);return new ks(this.method,this.uri,"identity",this.keyFormatVersions,t)}const t=Lr(this.uri);if(t)switch(this.keyFormat){case xr:this.pssh=t,t.length>=22&&(this.keyId=t.subarray(t.length-22,t.length-6));break;case Dr:{const e=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);this.pssh=As(e,0,t);const i=new Uint16Array(t.buffer,t.byteOffset,t.byteLength/2),r=String.fromCharCode.apply(null,Array.from(i)),s=r.substring(r.indexOf("<"),r.length),n=(new DOMParser).parseFromString(s,"text/xml").getElementsByTagName("KID")[0];if(n){const e=n.childNodes[0]?n.childNodes[0].nodeValue:n.getAttribute("VALUE");if(e){const t=br(e).subarray(0,16);!function(e){const t=function(e,t,i){const r=e[t];e[t]=e[i],e[i]=r};t(e,0,3),t(e,1,2),t(e,4,5),t(e,6,7)}(t),this.keyId=t}}break}default:{let e=t.subarray(0,16);if(16!==e.length){const t=new Uint8Array(16);t.set(e,16-e.length),e=t}this.keyId=e;break}}if(!this.keyId||16!==this.keyId.byteLength){let e=Rs[this.uri];if(!e){const t=Object.keys(Rs).length%Number.MAX_SAFE_INTEGER;e=new Uint8Array(16);new DataView(e.buffer,12,4).setUint32(0,t),Rs[this.uri]=e}this.keyId=e}return this}}const _s=/\{\$([a-zA-Z0-9-_]+)\}/g;function Ds(e){return _s.test(e)}function xs(e,t,i){if(null!==e.variableList||e.hasVariableRefs)for(let r=i.length;r--;){const s=i[r],n=t[s];n&&(t[s]=Cs(e,n))}}function Cs(e,t){if(null!==e.variableList||e.hasVariableRefs){const i=e.variableList;return t.replace(_s,(t=>{const r=t.substring(2,t.length-1),s=null==i?void 0:i[r];return void 0===s?(e.playlistParsingError||(e.playlistParsingError=new Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: "${r}"`)),t):s}))}return t}function Is(e,t,i){let r,s,n=e.variableList;if(n||(e.variableList=n={}),"QUERYPARAM"in t){r=t.QUERYPARAM;try{const e=new self.URL(i).searchParams;if(!e.has(r))throw new Error(`"${r}" does not match any query parameter in URI: "${i}"`);s=e.get(r)}catch(t){e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE QUERYPARAM: ${t.message}`))}}else r=t.NAME,s=t.VALUE;r in n?e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE duplicate Variable Name declarations: "${r}"`)):n[r]=s||""}function Ps(e,t,i){const r=t.IMPORT;if(i&&r in i){let t=e.variableList;t||(e.variableList=t={}),t[r]=i[r]}else e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "${r}"`))}function Os(e=!0){if("undefined"==typeof self)return;return(e||!self.MediaSource)&&self.ManagedMediaSource||self.MediaSource||self.WebKitMediaSource}const 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,rv60:1,s263:1,svc1:1,svc2:1,"vc-1":1,vp08:1,vp09:.9},text:{stpp:1,wvtt:1}};function Fs(e,t,i=!0){return!e.split(",").some((e=>!Ns(e,t,i)))}function Ns(e,t,i=!0){var r;const s=Os(i);return null!=(r=null==s?void 0:s.isTypeSupported(Us(e,t)))&&r}function Us(e,t){return`${t}/mp4;codecs="${e}"`}function Bs(e){if(e){const t=e.substring(0,4);return Ms.video[t]}return 2}function $s(e){return e.split(",").reduce(((e,t)=>{const i=Ms.video[t];return i?(2*i+e)/(e?3:2):(Ms.audio[t]+e)/(e?2:1)}),0)}const Gs={};const Ks=/flac|opus/i;function Vs(e,t=!0){return e.replace(Ks,(e=>function(e,t=!0){if(Gs[e])return Gs[e];const i={flac:["flac","fLaC","FLAC"],opus:["opus","Opus"]}[e];for(let r=0;r0&&r.length({id:e.attrs.AUDIO,audioCodec:e.audioCodec}))),SUBTITLES:n.map((e=>({id:e.attrs.SUBTITLES,textCodec:e.textCodec}))),"CLOSED-CAPTIONS":[]};let o=0;for(Ws.lastIndex=0;null!==(r=Ws.exec(e));){const e=new dr(r[1]),n=e.TYPE;if(n){const r=a[n],l=s[n]||[];s[n]=l,xs(i,e,["URI","GROUP-ID","LANGUAGE","ASSOC-LANGUAGE","STABLE-RENDITION-ID","NAME","INSTREAM-ID","CHARACTERISTICS","CHANNELS"]);const h=e.LANGUAGE,c=e["ASSOC-LANGUAGE"],d=e.CHANNELS,u=e.CHARACTERISTICS,f=e["INSTREAM-ID"],g={attrs:e,bitrate:0,id:o++,groupId:e["GROUP-ID"]||"",name:e.NAME||h||"",type:n,default:e.bool("DEFAULT"),autoselect:e.bool("AUTOSELECT"),forced:e.bool("FORCED"),lang:h,url:e.URI?Xs.resolve(e.URI,t):""};if(c&&(g.assocLang=c),d&&(g.channels=d),u&&(g.characteristics=u),f&&(g.instreamId=f),null!=r&&r.length){const e=Xs.findGroup(r,g.groupId)||r[0];en(g,e,"audioCodec"),en(g,e,"textCodec")}l.push(g)}}return s}static parseLevelPlaylist(e,t,i,r,s,n){const a=new Sr(t),o=a.fragments;let l,h,c,d=null,u=0,f=0,g=0,m=0,p=null,v=new Tr(r,t),y=-1,T=!1,E=null;for(qs.lastIndex=0,a.m3u8=e,a.hasVariableRefs=Ds(e);null!==(l=qs.exec(e));){T&&(T=!1,v=new Tr(r,t),v.start=g,v.sn=u,v.cc=m,v.level=i,d&&(v.initSegment=d,v.rawProgramDateTime=d.rawProgramDateTime,d.rawProgramDateTime=null,E&&(v.setByteRange(E),E=null)));const e=l[1];if(e){v.duration=parseFloat(e);const t=(" "+l[2]).slice(1);v.title=t||null,v.tagList.push(t?["INF",e,t]:["INF",e])}else if(l[3]){if(Ji(v.duration)){v.start=g,c&&sn(v,c,a),v.sn=u,v.level=i,v.cc=m,o.push(v);const e=(" "+l[3]).slice(1);v.relurl=Cs(a,e),tn(v,p),p=v,g+=v.duration,u++,f=0,T=!0}}else if(l[4]){const e=(" "+l[4]).slice(1);p?v.setByteRange(e,p):v.setByteRange(e)}else if(l[5])v.rawProgramDateTime=(" "+l[5]).slice(1),v.tagList.push(["PROGRAM-DATE-TIME",v.rawProgramDateTime]),-1===y&&(y=o.length);else{if(l=l[0].match(zs),!l){lr.warn("No matches on slow regex match for level playlist!");continue}for(h=1;h0&&e.bool("CAN-SKIP-DATERANGES"),a.partHoldBack=e.optionalFloat("PART-HOLD-BACK",0),a.holdBack=e.optionalFloat("HOLD-BACK",0);break}case"PART-INF":{const e=new dr(s);a.partTarget=e.decimalFloatingPoint("PART-TARGET");break}case"PART":{let e=a.partList;e||(e=a.partList=[]);const i=f>0?e[e.length-1]:void 0,r=f++,n=new dr(s);xs(a,n,["BYTERANGE","URI"]);const o=new Er(n,v,t,r,i);e.push(o),v.duration+=o.duration;break}case"PRELOAD-HINT":{const e=new dr(s);xs(a,e,["URI"]),a.preloadHint=e;break}case"RENDITION-REPORT":{const e=new dr(s);xs(a,e,["URI"]),a.renditionReports=a.renditionReports||[],a.renditionReports.push(e);break}default:lr.warn(`line parsed but not handled: ${l}`)}}}p&&!p.relurl?(o.pop(),g-=p.duration,a.partList&&(a.fragmentHint=p)):a.partList&&(tn(v,p),v.cc=m,a.fragmentHint=v,c&&sn(v,c,a));const S=o.length,b=o[0],L=o[S-1];if(g+=a.skippedSegments*a.targetduration,g>0&&S&&L){a.averagetargetduration=g/S;const e=L.sn;a.endSN="initSegment"!==e?e:0,a.live||(L.endList=!0),b&&(a.startCC=b.cc)}else a.endSN=0,a.startCC=0;return a.fragmentHint&&(g+=a.fragmentHint.duration),a.totalduration=g,a.endCC=m,y>0&&function(e,t){let i=e[t];for(let r=t;r--;){const t=e[r];if(!t)return;t.programDateTime=i.programDateTime-1e3*t.duration,i=t}}(o,y),a}}function Qs(e,t,i){var r,s;const n=new dr(e);xs(i,n,["KEYFORMAT","KEYFORMATVERSIONS","URI","IV","URI"]);const a=null!=(r=n.METHOD)?r:"",o=n.URI,l=n.hexadecimalInteger("IV"),h=n.KEYFORMATVERSIONS,c=null!=(s=n.KEYFORMAT)?s:"identity";o&&n.IV&&!l&&lr.error(`Invalid IV: ${n.IV}`);const d=o?Xs.resolve(o,t):"",u=(h||"1").split("/").map(Number).filter(Number.isFinite);return new ks(a,d,c,u,l)}function Js(e){const t=new dr(e).decimalFloatingPoint("TIME-OFFSET");return Ji(t)?t:null}function Zs(e,t){let i=(e||"").split(/[ ,]+/).filter((e=>e));["video","audio","text"].forEach((e=>{const r=i.filter((t=>function(e,t){const i=Ms[t];return!!i&&!!i[e.slice(0,4)]}(t,e)));r.length&&(t[`${e}Codec`]=r.join(","),i=i.filter((e=>-1===r.indexOf(e))))})),t.unknownCodecs=i}function en(e,t,i){const r=t[i];r&&(e[i]=r)}function tn(e,t){e.rawProgramDateTime?e.programDateTime=Date.parse(e.rawProgramDateTime):null!=t&&t.programDateTime&&(e.programDateTime=t.endProgramDateTime),Ji(e.programDateTime)||(e.programDateTime=null,e.rawProgramDateTime=null)}function rn(e,t,i,r){e.relurl=t.URI,t.BYTERANGE&&e.setByteRange(t.BYTERANGE),e.level=i,e.sn="initSegment",r&&(e.levelkeys=r),e.initSegment=null}function sn(e,t,i){e.levelkeys=t;const{encryptedFragments:r}=i;r.length&&r[r.length-1].levelkeys===t||!Object.keys(t).some((e=>t[e].isCommonEncryption))||r.push(e)}var nn="manifest",an="level",on="audioTrack",ln="subtitleTrack",hn="main",cn="audio",dn="subtitle";function un(e){const{type:t}=e;switch(t){case on:return cn;case ln:return dn;default:return hn}}function fn(e,t){let i=e.url;return void 0!==i&&0!==i.indexOf("data:")||(i=t.url),i}class gn{constructor(e){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.hls=e,this.registerListeners()}startLoad(e){}stopLoad(){this.destroyInternalLoaders()}registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.LEVEL_LOADING,this.onLevelLoading,this),e.on(tr.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.on(tr.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.LEVEL_LOADING,this.onLevelLoading,this),e.off(tr.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.off(tr.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}createInternalLoader(e){const t=this.hls.config,i=t.pLoader,r=t.loader,s=new(i||r)(t);return this.loaders[e.type]=s,s}getInternalLoader(e){return this.loaders[e.type]}resetInternalLoader(e){this.loaders[e]&&delete this.loaders[e]}destroyInternalLoaders(){for(const e in this.loaders){const t=this.loaders[e];t&&t.destroy(),this.resetInternalLoader(e)}}destroy(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()}onManifestLoading(e,t){const{url:i}=t;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:nn,url:i,deliveryDirectives:null})}onLevelLoading(e,t){const{id:i,level:r,pathwayId:s,url:n,deliveryDirectives:a}=t;this.load({id:i,level:r,pathwayId:s,responseType:"text",type:an,url:n,deliveryDirectives:a})}onAudioTrackLoading(e,t){const{id:i,groupId:r,url:s,deliveryDirectives:n}=t;this.load({id:i,groupId:r,level:null,responseType:"text",type:on,url:s,deliveryDirectives:n})}onSubtitleTrackLoading(e,t){const{id:i,groupId:r,url:s,deliveryDirectives:n}=t;this.load({id:i,groupId:r,level:null,responseType:"text",type:ln,url:s,deliveryDirectives:n})}load(e){var t;const i=this.hls.config;let r,s=this.getInternalLoader(e);if(s){const t=s.context;if(t&&t.url===e.url&&t.level===e.level)return void lr.trace("[playlist-loader]: playlist request ongoing");lr.log(`[playlist-loader]: aborting previous loader for type: ${e.type}`),s.abort()}if(r=e.type===nn?i.manifestLoadPolicy.default:Qi({},i.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),s=this.createInternalLoader(e),Ji(null==(t=e.deliveryDirectives)?void 0:t.part)){let t;if(e.type===an&&null!==e.level?t=this.hls.levels[e.level].details:e.type===on&&null!==e.id?t=this.hls.audioTracks[e.id].details:e.type===ln&&null!==e.id&&(t=this.hls.subtitleTracks[e.id].details),t){const e=t.partTarget,i=t.targetduration;if(e&&i){const t=1e3*Math.max(3*e,.8*i);r=Qi({},r,{maxTimeToFirstByteMs:Math.min(t,r.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(t,r.maxTimeToFirstByteMs)})}}}const n=r.errorRetry||r.timeoutRetry||{},a={loadPolicy:r,timeout:r.maxLoadTimeMs,maxRetry:n.maxNumRetry||0,retryDelay:n.retryDelayMs||0,maxRetryDelay:n.maxRetryDelayMs||0},o={onSuccess:(e,t,i,r)=>{const s=this.getInternalLoader(i);this.resetInternalLoader(i.type);const n=e.data;0===n.indexOf("#EXTM3U")?(t.parsing.start=performance.now(),Xs.isMediaPlaylist(n)?this.handleTrackOrLevelPlaylist(e,t,i,r||null,s):this.handleMasterPlaylist(e,t,i,r)):this.handleManifestParsingError(e,i,new Error("no EXTM3U delimiter"),r||null,t)},onError:(e,t,i,r)=>{this.handleNetworkError(t,i,!1,e,r)},onTimeout:(e,t,i)=>{this.handleNetworkError(t,i,!0,void 0,e)}};s.load(e,a,o)}handleMasterPlaylist(e,t,i,r){const s=this.hls,n=e.data,a=fn(e,i),o=Xs.parseMasterPlaylist(n,a);if(o.playlistParsingError)return void this.handleManifestParsingError(e,i,o.playlistParsingError,r,t);const{contentSteering:l,levels:h,sessionData:c,sessionKeys:d,startTimeOffset:u,variableList:f}=o;this.variableList=f;const{AUDIO:g=[],SUBTITLES:m,"CLOSED-CAPTIONS":p}=Xs.parseMasterPlaylistMedia(n,a,o);if(g.length){g.some((e=>!e.url))||!h[0].audioCodec||h[0].attrs.AUDIO||(lr.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 dr({}),bitrate:0,url:""}))}s.trigger(tr.MANIFEST_LOADED,{levels:h,audioTracks:g,subtitles:m,captions:p,contentSteering:l,url:a,stats:t,networkDetails:r,sessionData:c,sessionKeys:d,startTimeOffset:u,variableList:f})}handleTrackOrLevelPlaylist(e,t,i,r,s){const n=this.hls,{id:a,level:o,type:l}=i,h=fn(e,i),c=Ji(o)?o:Ji(a)?a:0,d=un(i),u=Xs.parseLevelPlaylist(e.data,h,c,d,0,this.variableList);if(l===nn){const e={attrs:new dr({}),bitrate:0,details:u,name:"",url:h};n.trigger(tr.MANIFEST_LOADED,{levels:[e],audioTracks:[],url:h,stats:t,networkDetails:r,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}t.parsing.end=performance.now(),i.levelDetails=u,this.handlePlaylistLoaded(u,e,t,i,r,s)}handleManifestParsingError(e,t,i,r,s){this.hls.trigger(tr.ERROR,{type:ir.NETWORK_ERROR,details:rr.MANIFEST_PARSING_ERROR,fatal:t.type===nn,url:e.url,err:i,error:i,reason:i.message,response:e,context:t,networkDetails:r,stats:s})}handleNetworkError(e,t,i=!1,r,s){let n=`A network ${i?"timeout":"error"+(r?" (status "+r.code+")":"")} occurred while loading ${e.type}`;e.type===an?n+=`: ${e.level} id: ${e.id}`:e.type!==on&&e.type!==ln||(n+=` id: ${e.id} group-id: "${e.groupId}"`);const a=new Error(n);lr.warn(`[playlist-loader]: ${n}`);let o=rr.UNKNOWN,l=!1;const h=this.getInternalLoader(e);switch(e.type){case nn:o=i?rr.MANIFEST_LOAD_TIMEOUT:rr.MANIFEST_LOAD_ERROR,l=!0;break;case an:o=i?rr.LEVEL_LOAD_TIMEOUT:rr.LEVEL_LOAD_ERROR,l=!1;break;case on:o=i?rr.AUDIO_TRACK_LOAD_TIMEOUT:rr.AUDIO_TRACK_LOAD_ERROR,l=!1;break;case ln:o=i?rr.SUBTITLE_TRACK_LOAD_TIMEOUT:rr.SUBTITLE_LOAD_ERROR,l=!1}h&&this.resetInternalLoader(e.type);const c={type:ir.NETWORK_ERROR,details:o,fatal:l,url:e.url,loader:h,context:e,error:a,networkDetails:t,stats:s};if(r){const i=(null==t?void 0:t.url)||e.url;c.response=qi({url:i,data:void 0},r)}this.hls.trigger(tr.ERROR,c)}handlePlaylistLoaded(e,t,i,r,s,n){const a=this.hls,{type:o,level:l,id:h,groupId:c,deliveryDirectives:d}=r,u=fn(t,r),f=un(r),g="number"==typeof r.level&&f===hn?l:void 0;if(!e.fragments.length){const e=new Error("No Segments found in Playlist");return void a.trigger(tr.ERROR,{type:ir.NETWORK_ERROR,details:rr.LEVEL_EMPTY_ERROR,fatal:!1,url:u,error:e,reason:e.message,response:t,context:r,level:g,parent:f,networkDetails:s,stats:i})}e.targetduration||(e.playlistParsingError=new Error("Missing Target Duration"));const m=e.playlistParsingError;if(m)a.trigger(tr.ERROR,{type:ir.NETWORK_ERROR,details:rr.LEVEL_PARSING_ERROR,fatal:!1,url:u,error:m,reason:m.message,response:t,context:r,level:g,parent:f,networkDetails:s,stats:i});else switch(e.live&&n&&(n.getCacheAge&&(e.ageHeader=n.getCacheAge()||0),n.getCacheAge&&!isNaN(e.ageHeader)||(e.ageHeader=0)),o){case nn:case an:a.trigger(tr.LEVEL_LOADED,{details:e,level:g||0,id:h||0,stats:i,networkDetails:s,deliveryDirectives:d});break;case on:a.trigger(tr.AUDIO_TRACK_LOADED,{details:e,id:h||0,groupId:c||"",stats:i,networkDetails:s,deliveryDirectives:d});break;case ln:a.trigger(tr.SUBTITLE_TRACK_LOADED,{details:e,id:h||0,groupId:c||"",stats:i,networkDetails:s,deliveryDirectives:d})}}}function mn(e,t){let i;try{i=new Event("addtrack")}catch(e){i=document.createEvent("Event"),i.initEvent("addtrack",!1,!1)}i.track=e,t.dispatchEvent(i)}function pn(e,t){const i=e.mode;if("disabled"===i&&(e.mode="hidden"),e.cues&&!e.cues.getCueById(t.id))try{if(e.addCue(t),!e.cues.getCueById(t.id))throw new Error(`addCue is failed for: ${t}`)}catch(i){lr.debug(`[texttrack-utils]: ${i}`);try{const i=new self.TextTrackCue(t.startTime,t.endTime,t.text);i.id=t.id,e.addCue(i)}catch(e){lr.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${e}`)}}"disabled"===i&&(e.mode=i)}function vn(e){const t=e.mode;if("disabled"===t&&(e.mode="hidden"),e.cues)for(let t=e.cues.length;t--;)e.removeCue(e.cues[t]);"disabled"===t&&(e.mode=t)}function yn(e,t,i,r){const s=e.mode;if("disabled"===s&&(e.mode="hidden"),e.cues&&e.cues.length>0){const s=function(e,t,i){const r=[],s=function(e,t){if(te[i].endTime)return-1;let r=0,s=i;for(;r<=s;){const n=Math.floor((s+r)/2);if(te[n].startTime&&r-1)for(let n=s,a=e.length;n=t&&s.endTime<=i)r.push(s);else if(s.startTime>i)return r}return r}(e.cues,t,i);for(let t=0;t{const e=Ln();try{e&&new e(0,Number.POSITIVE_INFINITY,"")}catch(e){return Number.MAX_VALUE}return Number.POSITIVE_INFINITY})();function Rn(e,t){return e.getTime()/1e3-t}class kn{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(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(tr.LEVEL_UPDATED,this.onLevelUpdated,this)}_unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.off(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(tr.LEVEL_UPDATED,this.onLevelUpdated,this)}onMediaAttached(e,t){this.media=t.media}onMediaDetaching(){this.id3Track&&(vn(this.id3Track),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={})}onManifestLoading(){this.dateRangeCuesAppended={}}createTrack(e){const t=this.getID3Track(e.textTracks);return t.mode="hidden",t}getID3Track(e){if(this.media){for(let t=0;tAn&&(r=An);r-i<=0&&(r=i+.25);for(let e=0;ee.type===En&&o:"video"===r?e=>e.type===bn&&a:e=>e.type===En&&o||e.type===bn&&a,yn(s,t,i,e)}}onLevelUpdated(e,{details:t}){if(!this.media||!t.hasProgramDateTime||!this.hls.config.enableDateRangeMetadataCues)return;const{dateRangeCuesAppended:i,id3Track:r}=this,{dateRanges:s}=t,n=Object.keys(s);if(r){const e=Object.keys(i).filter((e=>!n.includes(e)));for(let t=e.length;t--;){const s=e[t];Object.keys(i[s].cues).forEach((e=>{r.removeCue(i[s].cues[e])})),delete i[s]}}const a=t.fragments[t.fragments.length-1];if(0===n.length||!Ji(null==a?void 0:a.programDateTime))return;this.id3Track||(this.id3Track=this.createTrack(this.media));const o=a.programDateTime/1e3-a.start,l=Ln();for(let e=0;e{if(t!==r.id){const i=s[t];if(i.class===r.class&&i.startDate>r.startDate&&(!e||r.startDatethis.timeupdate(),this.hls=e,this.config=e.config,this.registerListeners()}get latency(){return this._latency||0}get maxLatency(){const{config:e,levelDetails:t}=this;return void 0!==e.liveMaxLatencyDuration?e.liveMaxLatencyDuration:t?e.liveMaxLatencyDurationCount*t.targetduration:0}get targetLatency(){const{levelDetails:e}=this;if(null===e)return null;const{holdBack:t,partHoldBack:i,targetduration:r}=e,{liveSyncDuration:s,liveSyncDurationCount:n,lowLatencyMode:a}=this.config,o=this.hls.userConfig;let l=a&&i||t;(o.liveSyncDuration||o.liveSyncDurationCount||0===l)&&(l=void 0!==s?s:n*r);const h=r;return l+Math.min(1*this.stallCount,h)}get liveSyncPosition(){const e=this.estimateLiveEdge(),t=this.targetLatency,i=this.levelDetails;if(null===e||null===t||null===i)return null;const r=i.edge,s=e-t-this.edgeStalled,n=r-i.totalduration,a=r-(this.config.lowLatencyMode&&i.partTarget||i.targetduration);return Math.min(Math.max(n,s),a)}get drift(){const{levelDetails:e}=this;return null===e?1:e.drift}get edgeStalled(){const{levelDetails:e}=this;if(null===e)return 0;const t=3*(this.config.lowLatencyMode&&e.partTarget||e.targetduration);return Math.max(e.age-t,0)}get forwardBufferLength(){const{media:e,levelDetails:t}=this;if(!e||!t)return 0;const i=e.buffered.length;return(i?e.buffered.end(i-1):t.edge)-this.currentTime}destroy(){this.unregisterListeners(),this.onMediaDetaching(),this.levelDetails=null,this.hls=this.timeupdateHandler=null}registerListeners(){this.hls.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(tr.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.on(tr.ERROR,this.onError,this)}unregisterListeners(){this.hls.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(tr.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.off(tr.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 i;t.details===rr.BUFFER_STALLED_ERROR&&(this.stallCount++,null!=(i=this.levelDetails)&&i.live&&lr.warn("[playback-rate-controller]: Stall detected, adjusting target latency"))}timeupdate(){const{media:e,levelDetails:t}=this;if(!e||!t)return;this.currentTime=e.currentTime;const i=this.computeLatency();if(null===i)return;this._latency=i;const{lowLatencyMode:r,maxLiveSyncPlaybackRate:s}=this.config;if(!r||1===s||!t.live)return;const n=this.targetLatency;if(null===n)return;const a=i-n;if(a.05&&this.forwardBufferLength>1){const t=Math.min(2,Math.max(1,s)),i=Math.round(2/(1+Math.exp(-.75*a-this.edgeStalled))*20)/20;e.playbackRate=Math.min(t,Math.max(1,i))}else 1!==e.playbackRate&&0!==e.playbackRate&&(e.playbackRate=1)}estimateLiveEdge(){const{levelDetails:e}=this;return null===e?null:e.edge+e.age}computeLatency(){const e=this.estimateLiveEdge();return null===e?null:e-this.currentTime}}const Dn=["NONE","TYPE-0","TYPE-1",null];const xn=["SDR","PQ","HLG"];var Cn="",In="YES",Pn="v2";function On(e){const{canSkipUntil:t,canSkipDateRanges:i,age:r}=e;return t&&r!!e)).map((e=>e.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 Nn(this._audioGroups,e)}hasSubtitleGroup(e){return Nn(this._subtitleGroups,e)}get audioGroups(){return this._audioGroups}get subtitleGroups(){return this._subtitleGroups}addGroupId(e,t){if(t)if("audio"===e){let e=this._audioGroups;e||(e=this._audioGroups=[]),-1===e.indexOf(t)&&e.push(t)}else if("text"===e){let e=this._subtitleGroups;e||(e=this._subtitleGroups=[]),-1===e.indexOf(t)&&e.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 null==(e=this.audioGroups)?void 0:e[0]}get textGroupId(){var e;return null==(e=this.subtitleGroups)?void 0:e[0]}addFallback(){}}function Nn(e,t){return!(!t||!e)&&-1!==e.indexOf(t)}function Un(e,t){const i=t.startPTS;if(Ji(i)){let r,s=0;t.sn>e.sn?(s=i-e.start,r=e):(s=e.start-i,r=t),r.duration!==s&&(r.duration=s)}else if(t.sn>e.sn){e.cc===t.cc&&e.minEndPTS?t.start=e.start+(e.minEndPTS-e.start):t.start=e.start+e.duration}else t.start=Math.max(e.start-t.duration,0)}function Bn(e,t,i,r,s,n){r-i<=0&&(lr.warn("Fragment should have a positive duration",t),r=i+t.duration,n=s+t.duration);let a=i,o=r;const l=t.startPTS,h=t.endPTS;if(Ji(l)){const e=Math.abs(l-i);Ji(t.deltaPTS)?t.deltaPTS=Math.max(e,t.deltaPTS):t.deltaPTS=e,a=Math.max(i,l),i=Math.min(i,l),s=Math.min(s,t.startDTS),o=Math.min(r,h),r=Math.max(r,h),n=Math.max(n,t.endDTS)}const c=i-t.start;0!==t.start&&(t.start=i),t.duration=r-t.start,t.startPTS=i,t.maxStartPTS=a,t.startDTS=s,t.endPTS=r,t.minEndPTS=o,t.endDTS=n;const d=t.sn;if(!e||de.endSN)return 0;let u;const f=d-e.startSN,g=e.fragments;for(g[f]=t,u=f;u>0;u--)Un(g[u],g[u-1]);for(u=f;u=0;e--){const t=r[e].initSegment;if(t){i=t;break}}e.fragmentHint&&delete e.fragmentHint.endPTS;let s,n=0;if(function(e,t,i){const r=t.skippedSegments,s=Math.max(e.startSN,t.startSN)-t.startSN,n=(e.fragmentHint?1:0)+(r?t.endSN:Math.min(e.endSN,t.endSN))-t.startSN,a=t.startSN-e.startSN,o=t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments,l=e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments;for(let e=s;e<=n;e++){const s=l[a+e];let n=o[e];r&&!n&&e{e.relurl&&(n=e.cc-r.cc),Ji(e.startPTS)&&Ji(e.endPTS)&&(r.start=r.startPTS=e.startPTS,r.startDTS=e.startDTS,r.maxStartPTS=e.maxStartPTS,r.endPTS=e.endPTS,r.endDTS=e.endDTS,r.minEndPTS=e.minEndPTS,r.duration=e.endPTS-e.startPTS,r.duration&&(s=r),t.PTSKnown=t.alignedSliding=!0),r.elementaryStreams=e.elementaryStreams,r.loader=e.loader,r.stats=e.stats,e.initSegment&&(r.initSegment=e.initSegment,i=e.initSegment)})),i){(t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments).forEach((e=>{var t;!e||e.initSegment&&e.initSegment.relurl!==(null==(t=i)?void 0:t.relurl)||(e.initSegment=i)}))}if(t.skippedSegments)if(t.deltaUpdateFailed=t.fragments.some((e=>!e)),t.deltaUpdateFailed){lr.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(let e=t.skippedSegments;e--;)t.fragments.shift();t.startSN=t.fragments[0].sn,t.startCC=t.fragments[0].cc}else t.canSkipDateRanges&&(t.dateRanges=function(e,t,i){const r=Qi({},e);i&&i.forEach((e=>{delete r[e]}));return Object.keys(t).forEach((e=>{const i=new fr(t[e].attr,r[e]);i.isValid?r[e]=i:lr.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: "${JSON.stringify(t[e].attr)}"`)})),r}(e.dateRanges,t.dateRanges,t.recentlyRemovedDateranges));const a=t.fragments;if(n){lr.warn("discontinuity sliding from playlist, take drift into account");for(let e=0;e{t.elementaryStreams=e.elementaryStreams,t.stats=e.stats})),s?Bn(t,s,s.startPTS,s.endPTS,s.startDTS,s.endDTS):Gn(e,t),a.length&&(t.totalduration=t.edge-a[0].start),t.driftStartTime=e.driftStartTime,t.driftStart=e.driftStart;const o=t.advancedDateTime;if(t.advanced&&o){const e=t.edge;t.driftStart||(t.driftStartTime=o,t.driftStart=e),t.driftEndTime=o,t.driftEnd=e}else t.driftEndTime=e.driftEndTime,t.driftEnd=e.driftEnd,t.advancedDateTime=e.advancedDateTime}function Gn(e,t){const i=t.startSN+t.skippedSegments-e.startSN,r=e.fragments;i<0||i>=r.length||Kn(t,r[i].start)}function Kn(e,t){if(t){const i=e.fragments;for(let r=e.skippedSegments;r{const{details:i}=e;null!=i&&i.fragments&&i.fragments.forEach((e=>{e.level=t}))}))}function Wn(e){switch(e.details){case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_TIMEOUT:case rr.LEVEL_LOAD_TIMEOUT:case rr.MANIFEST_LOAD_TIMEOUT:return!0}return!1}function Yn(e,t){const i=Wn(t);return e.default[(i?"timeout":"error")+"Retry"]}function qn(e,t){const i="linear"===e.backoff?1:Math.pow(2,t);return Math.min(i*e.retryDelayMs,e.maxRetryDelayMs)}function zn(e){return qi(qi({},e),{errorRetry:null,timeoutRetry:null})}function Xn(e,t,i,r){if(!e)return!1;const s=null==r?void 0:r.code,n=t499)}(s)||!!i);return e.shouldRetry?e.shouldRetry(e,t,i,r,n):n}const Qn=function(e,t){let i=0,r=e.length-1,s=null,n=null;for(;i<=r;){s=(i+r)/2|0,n=e[s];const a=t(n);if(a>0)i=s+1;else{if(!(a<0))return n;r=s-1}}return null};function Jn(e,t,i=0,r=0,s=.005){let n=null;if(e){n=t[e.sn-t[0].sn+1]||null;const r=e.endDTS-i;r>0&&r<15e-7&&(i+=15e-7)}else 0===i&&0===t[0].start&&(n=t[0]);if(n&&((!e||e.level===n.level)&&0===Zn(i,r,n)||function(e,t,i){if(t&&0===t.start&&t.level0){const r=t.tagList.reduce(((e,t)=>("INF"===t[0]&&(e+=parseFloat(t[1])),e)),i);return e.start<=r}return!1}(n,e,Math.min(s,r))))return n;const a=Qn(t,Zn.bind(null,i,r));return!a||a===e&&n?n:a}function Zn(e=0,t=0,i){if(i.start<=e&&i.start+i.duration>e)return 0;const r=Math.min(t,i.duration+(i.deltaPTS?i.deltaPTS:0));return i.start+i.duration-r<=e?1:i.start-r>e&&i.start?-1:0}function ea(e,t,i){const r=1e3*Math.min(t,i.duration+(i.deltaPTS?i.deltaPTS:0));return(i.endProgramDateTime||0)-r>e}var ta=0,ia=2,ra=3,sa=5,na=0,aa=1,oa=2;class la{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=lr.log.bind(lr,`${t}:`),this.warn=lr.warn.bind(lr,`${t}:`),this.hls=e}destroy(){this.clearTimer(),this.hls=this.log=this.warn=null}clearTimer(){-1!==this.timer&&(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,i){const r=null==t?void 0:t.renditionReports;if(r){let s=-1;for(let i=0;i=0&&e>t.partTarget&&(a+=1)}const o=i&&On(i);return new Mn(n,a>=0?a:void 0,o)}}}loadPlaylist(e){-1===this.requestScheduled&&(this.requestScheduled=self.performance.now())}shouldLoadPlaylist(e){return this.canLoad&&!!e&&!!e.url&&(!e.details||e.details.live)}shouldReloadPlaylist(e){return-1===this.timer&&-1===this.requestScheduled&&this.shouldLoadPlaylist(e)}playlistLoaded(e,t,i){const{details:r,stats:s}=t,n=self.performance.now(),a=s.loading.first?Math.max(0,n-s.loading.first):0;if(r.advancedDateTime=Date.now()-a,r.live||null!=i&&i.live){if(r.reloaded(i),i&&this.log(`live playlist ${e} ${r.advanced?"REFRESHED "+r.lastPartSn+"-"+r.lastPartIndex:r.updated?"UPDATED":"MISSED"}`),i&&r.fragments.length>0&&$n(i,r),!this.canLoad||!r.live)return;let a,o,l;if(r.canBlockReload&&r.endSN&&r.advanced){const e=this.hls.config.lowLatencyMode,s=r.lastPartSn,n=r.endSN,h=r.lastPartIndex,c=s===n;-1!==h?(o=c?n+1:s,l=c?e?0:h:h+1):o=n+1;const d=r.age,u=d+r.ageHeader;let f=Math.min(u-r.partTarget,1.5*r.targetduration);if(f>0){if(i&&f>i.tuneInGoal)this.warn(`CDN Tune-in goal increased from: ${i.tuneInGoal} to: ${f} with playlist age: ${r.age}`),f=0;else{const e=Math.floor(f/r.targetduration);if(o+=e,void 0!==l){l+=Math.round(f%r.targetduration/r.partTarget)}this.log(`CDN Tune-in age: ${r.ageHeader}s last advanced ${d.toFixed(2)}s goal: ${f} skip sn ${e} to part ${l}`)}r.tuneInGoal=f}if(a=this.getDeliveryDirectives(r,t.deliveryDirectives,o,l),e||!c)return void this.loadPlaylist(a)}else(r.canBlockReload||r.canSkipUntil)&&(a=this.getDeliveryDirectives(r,t.deliveryDirectives,o,l));const h=this.hls.mainForwardBufferInfo,c=h?h.end-h.len:0,d=function(e,t=1/0){let i=1e3*e.targetduration;if(e.updated){const r=e.fragments,s=4;if(r.length&&i*s>t){const e=1e3*r[r.length-1].duration;ethis.requestScheduled+d&&(this.requestScheduled=s.loading.start),void 0!==o&&r.canBlockReload?this.requestScheduled=s.loading.first+d-(1e3*r.partTarget||1e3):-1===this.requestScheduled||this.requestScheduled+dthis.loadPlaylist(a)),u)}else this.clearTimer()}getDeliveryDirectives(e,t,i,r){let s=On(e);return null!=t&&t.skip&&e.deltaUpdateFailed&&(i=t.msn,r=t.part,s=Cn),new Mn(i,r,s)}checkRetry(e){const t=e.details,i=Wn(e),r=e.errorAction,{action:s,retryCount:n=0,retryConfig:a}=r||{},o=!!r&&!!a&&(s===sa||!r.resolved&&s===ia);if(o){var l;if(this.requestScheduled=-1,n>=a.maxNumRetry)return!1;if(i&&null!=(l=e.context)&&l.deliveryDirectives)this.warn(`Retrying playlist loading ${n+1}/${a.maxNumRetry} after "${t}" without delivery-directives`),this.loadPlaylist();else{const e=qn(a,n);this.timer=self.setTimeout((()=>this.loadPlaylist()),e),this.warn(`Retrying playlist loading ${n+1}/${a.maxNumRetry} after "${t}" in ${e}ms`)}e.levelRetry=!0,r.resolved=!0}return o}}class ha{constructor(e,t=0,i=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_=i}sample(e,t){const i=Math.pow(this.alpha_,e);this.estimate_=t*(1-i)+i*this.estimate_,this.totalWeight_+=e}getTotalWeight(){return this.totalWeight_}getEstimate(){if(this.alpha_){const e=1-Math.pow(this.alpha_,this.totalWeight_);if(e)return this.estimate_/e}return this.estimate_}}class ca{constructor(e,t,i,r=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_=i,this.minWeight_=.001,this.minDelayMs_=50,this.slow_=new ha(e),this.fast_=new ha(t),this.defaultTTFB_=r,this.ttfb_=new ha(e)}update(e,t){const{slow_:i,fast_:r,ttfb_:s}=this;i.halfLife!==e&&(this.slow_=new ha(e,i.getEstimate(),i.getTotalWeight())),r.halfLife!==t&&(this.fast_=new ha(t,r.getEstimate(),r.getTotalWeight())),s.halfLife!==e&&(this.ttfb_=new ha(e,s.getEstimate(),s.getTotalWeight()))}sample(e,t){const i=(e=Math.max(e,this.minDelayMs_))/1e3,r=8*t/i;this.fast_.sample(i,r),this.slow_.sample(i,r)}sampleTTFB(e){const t=e/1e3,i=Math.sqrt(2)*Math.exp(-Math.pow(t,2)/2);this.ttfb_.sample(i,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(){}}const da={supported:!0,configurations:[],decodingInfoResults:[{supported:!0,powerEfficient:!0,smooth:!0}]},ua={};function fa(e,t,i,r,s,n){const a=e.audioCodec?e.audioGroups:null,o=null==n?void 0:n.audioCodec,l=null==n?void 0:n.channels,h=l?parseInt(l):o?1/0:2;let c=null;if(null!=a&&a.length)try{c=1===a.length&&a[0]?t.groups[a[0]].channels:a.reduce(((e,i)=>{if(i){const r=t.groups[i];if(!r)throw new Error(`Audio track group ${i} not found`);Object.keys(r.channels).forEach((t=>{e[t]=(e[t]||0)+r.channels[t]}))}return e}),{2:0})}catch(e){return!0}return void 0!==e.videoCodec&&(e.width>1920&&e.height>1088||e.height>1920&&e.width>1088||e.frameRate>Math.max(r,30)||"SDR"!==e.videoRange&&e.videoRange!==i||e.bitrate>Math.max(s,8e6))||!!c&&Ji(h)&&Object.keys(c).some((e=>parseInt(e)>h))}function ga(e,t,i){const r=e.videoCodec,s=e.audioCodec;if(!r||!s||!i)return Promise.resolve(da);const n={width:e.width,height:e.height,bitrate:Math.ceil(Math.max(.9*e.bitrate,e.averageBitrate)),framerate:e.frameRate||30},a=e.videoRange;"SDR"!==a&&(n.transferFunction=a.toLowerCase());const o=r.split(",").map((e=>({type:"media-source",video:qi(qi({},n),{},{contentType:Us(e,"video")})})));return s&&e.audioGroups&&e.audioGroups.forEach((e=>{var i;e&&(null==(i=t.groups[e])||i.tracks.forEach((t=>{if(t.groupId===e){const e=t.channels||"",i=parseFloat(e);Ji(i)&&i>2&&o.push.apply(o,s.split(",").map((e=>({type:"media-source",audio:{contentType:Us(e,"audio"),channels:""+i}}))))}})))})),Promise.all(o.map((e=>{const t=function(e){const{audio:t,video:i}=e,r=i||t;if(r){const e=r.contentType.split('"')[1];if(i)return`r${i.height}x${i.width}f${Math.ceil(i.framerate)}${i.transferFunction||"sd"}_${e}_${Math.ceil(i.bitrate/1e5)}`;if(t)return`c${t.channels}${t.spatialRendering?"s":"n"}_${e}`}return""}(e);return ua[t]||(ua[t]=i.decodingInfo(e))}))).then((e=>({supported:!e.some((e=>!e.supported)),configurations:o,decodingInfoResults:e}))).catch((e=>({supported:!1,configurations:o,decodingInfoResults:[],error:e})))}function ma(e,t){let i=!1,r=[];return e&&(i="SDR"!==e,r=[e]),t&&(r=t.allowedVideoRanges||xn.slice(0),i=void 0!==t.preferHDR?t.preferHDR:function(){if("function"==typeof matchMedia){const e=matchMedia("(dynamic-range: high)"),t=matchMedia("bad query");if(e.media!==t.media)return!0===e.matches}return!1}(),r=i?r.filter((e=>"SDR"!==e)):["SDR"]),{preferHDR:i,allowedVideoRanges:r}}function pa(e,t){lr.log(`[abr] start candidates with "${e}" ignored because ${t}`)}function va(e,t,i){if("attrs"in e){const i=t.indexOf(e);if(-1!==i)return i}for(let r=0;r-1===r.indexOf(e)))}(o,t.characteristics))&&(void 0===i||i(e,t))}function Ta(e,t){const{audioCodec:i,channels:r}=e;return!(void 0!==i&&(t.audioCodec||"").substring(0,4)!==i.substring(0,4)||void 0!==r&&r!==(t.channels||"2"))}function Ea(e,t,i){for(let r=t;r;r--)if(i(e[r]))return r;for(let r=t+1;r1&&this.tickImmediate(),this._tickCallCount=0)}tickImmediate(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)}doTick(){}}var ba="NOT_LOADED",La="APPENDING",wa="PARTIAL",Aa="OK";class Ra{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(){const{hls:e}=this;e.on(tr.BUFFER_APPENDED,this.onBufferAppended,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.on(tr.FRAG_LOADED,this.onFragLoaded,this)}_unregisterListeners(){const{hls:e}=this;e.off(tr.BUFFER_APPENDED,this.onBufferAppended,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.off(tr.FRAG_LOADED,this.onFragLoaded,this)}destroy(){this._unregisterListeners(),this.fragments=this.activePartLists=this.endListFragments=this.timeRanges=null}getAppendedFrag(e,t){const i=this.activePartLists[t];if(i)for(let t=i.length;t--;){const r=i[t];if(!r)break;const s=r.end;if(r.start<=e&&null!==s&&e<=s)return r}return this.getBufferedFrag(e,t)}getBufferedFrag(e,t){const{fragments:i}=this,r=Object.keys(i);for(let s=r.length;s--;){const n=i[r[s]];if((null==n?void 0:n.body.type)===t&&n.buffered){const t=n.body;if(t.start<=e&&e<=t.end)return t}}return null}detectEvictedFragments(e,t,i,r){this.timeRanges&&(this.timeRanges[e]=t);const s=(null==r?void 0:r.fragment.sn)||-1;Object.keys(this.fragments).forEach((r=>{const n=this.fragments[r];if(!n)return;if(s>=n.body.sn)return;if(!n.buffered&&!n.loaded)return void(n.body.type===i&&this.removeFragment(n.body));const a=n.range[e];a&&a.time.some((e=>{const i=!this.isTimeBuffered(e.startPTS,e.endPTS,t);return i&&this.removeFragment(n.body),i}))}))}detectPartialFragments(e){const t=this.timeRanges,{frag:i,part:r}=e;if(!t||"initSegment"===i.sn)return;const s=_a(i),n=this.fragments[s];if(!n||n.buffered&&i.gap)return;const a=!i.relurl;if(Object.keys(t).forEach((e=>{const s=i.elementaryStreams[e];if(!s)return;const o=t[e],l=a||!0===s.partial;n.range[e]=this.getBufferedTimes(i,r,l,o)})),n.loaded=null,Object.keys(n.range).length){n.buffered=!0;(n.body.endList=i.endList||n.body.endList)&&(this.endListFragments[n.body.type]=n),ka(n)||this.removeParts(i.sn-1,i.type)}else this.removeFragment(n.body)}removeParts(e,t){const i=this.activePartLists[t];i&&(this.activePartLists[t]=i.filter((t=>t.fragment.sn>=e)))}fragBuffered(e,t){const i=_a(e);let r=this.fragments[i];!r&&t&&(r=this.fragments[i]={body:e,appendedPTS:null,loaded:null,buffered:!1,range:Object.create(null)},e.gap&&(this.hasGaps=!0)),r&&(r.loaded=null,r.buffered=!0)}getBufferedTimes(e,t,i,r){const s={time:[],partial:i},n=e.start,a=e.end,o=e.minEndPTS||a,l=e.maxStartPTS||n;for(let e=0;e=t&&o<=i){s.time.push({startPTS:Math.max(n,r.start(e)),endPTS:Math.min(a,r.end(e))});break}if(nt){const t=Math.max(n,r.start(e)),i=Math.min(a,r.end(e));i>t&&(s.partial=!0,s.time.push({startPTS:t,endPTS:i}))}else if(a<=t)break}return s}getPartialFragment(e){let t,i,r,s=null,n=0;const{bufferPadding:a,fragments:o}=this;return Object.keys(o).forEach((l=>{const h=o[l];h&&ka(h)&&(i=h.body.start-a,r=h.body.end+a,e>=i&&e<=r&&(t=Math.min(e-i,r-e),n<=t&&(s=h.body,n=t)))})),s}isEndListAppended(e){const t=this.endListFragments[e];return void 0!==t&&(t.buffered||ka(t))}getState(e){const t=_a(e),i=this.fragments[t];return i?i.buffered?ka(i)?wa:Aa:La:ba}isTimeBuffered(e,t,i){let r,s;for(let n=0;n=r&&t<=s)return!0;if(t<=r)return!1}return!1}onFragLoaded(e,t){const{frag:i,part:r}=t;if("initSegment"===i.sn||i.bitrateTest)return;const s=r?null:t,n=_a(i);this.fragments[n]={body:i,appendedPTS:null,loaded:s,buffered:!1,range:Object.create(null)}}onBufferAppended(e,t){const{frag:i,part:r,timeRanges:s}=t;if("initSegment"===i.sn)return;const n=i.type;if(r){let e=this.activePartLists[n];e||(this.activePartLists[n]=e=[]),e.push(r)}this.timeRanges=s,Object.keys(s).forEach((e=>{const t=s[e];this.detectEvictedFragments(e,t,n,r)}))}onFragBuffered(e,t){this.detectPartialFragments(t)}hasFragment(e){const t=_a(e);return!!this.fragments[t]}hasParts(e){var t;return!(null==(t=this.activePartLists[e])||!t.length)}removeFragmentsInRange(e,t,i,r,s){r&&!this.hasGaps||Object.keys(this.fragments).forEach((n=>{const a=this.fragments[n];if(!a)return;const o=a.body;o.type!==i||r&&!o.gap||o.starte&&(a.buffered||s)&&this.removeFragment(o)}))}removeFragment(e){const t=_a(e);e.stats.loaded=0,e.clearElementaryStreamInfo();const i=this.activePartLists[e.type];if(i){const t=e.sn;this.activePartLists[e.type]=i.filter((e=>e.fragment.sn!==t))}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 ka(e){var t,i,r;return e.buffered&&(e.body.gap||(null==(t=e.range.video)?void 0:t.partial)||(null==(i=e.range.audio)?void 0:i.partial)||(null==(r=e.range.audiovideo)?void 0:r.partial))}function _a(e){return`${e.type}_${e.level}_${e.sn}`}const Da={length:0,start:()=>0,end:()=>0};class xa{static isBuffered(e,t){try{if(e){const i=xa.getBuffered(e);for(let e=0;e=i.start(e)&&t<=i.end(e))return!0}}catch(e){}return!1}static bufferInfo(e,t,i){try{if(e){const r=xa.getBuffered(e),s=[];let n;for(n=0;nn&&(r[s-1].end=e[t].end):r.push(e[t])}else r.push(e[t])}else r=e;let s,n=0,a=t,o=t;for(let e=0;e=l&&ti.startCC||e&&e.cc{if(this.loader&&this.loader.destroy(),e.gap){if(e.tagList.some((e=>"GAP"===e[0])))return void o($a(e));e.gap=!1}const l=this.loader=e.loader=s?new s(r):new n(r),h=Ba(e),c=zn(r.fragLoadPolicy.default),d={loadPolicy:c,timeout:c.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:"initSegment"===e.sn?1/0:Na};e.stats=l.stats,l.load(h,d,{onSuccess:(t,i,r,s)=>{this.resetLoader(e,l);let n=t.data;r.resetIV&&e.decryptdata&&(e.decryptdata.iv=new Uint8Array(n.slice(0,16)),n=n.slice(16)),a({frag:e,part:null,payload:n,networkDetails:s})},onError:(t,r,s,n)=>{this.resetLoader(e,l),o(new Ga({type:ir.NETWORK_ERROR,details:rr.FRAG_LOAD_ERROR,fatal:!1,frag:e,response:qi({url:i,data:void 0},t),error:new Error(`HTTP Error ${t.code} ${t.text}`),networkDetails:s,stats:n}))},onAbort:(t,i,r)=>{this.resetLoader(e,l),o(new Ga({type:ir.NETWORK_ERROR,details:rr.INTERNAL_ABORTED,fatal:!1,frag:e,error:new Error("Aborted"),networkDetails:r,stats:t}))},onTimeout:(t,i,r)=>{this.resetLoader(e,l),o(new Ga({type:ir.NETWORK_ERROR,details:rr.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,error:new Error(`Timeout after ${d.timeout}ms`),networkDetails:r,stats:t}))},onProgress:(i,r,s,n)=>{t&&t({frag:e,part:null,payload:s,networkDetails:n})}})}))}loadPart(e,t,i){this.abort();const r=this.config,s=r.fLoader,n=r.loader;return new Promise(((a,o)=>{if(this.loader&&this.loader.destroy(),e.gap||t.gap)return void o($a(e,t));const l=this.loader=e.loader=s?new s(r):new n(r),h=Ba(e,t),c=zn(r.fragLoadPolicy.default),d={loadPolicy:c,timeout:c.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:Na};t.stats=l.stats,l.load(h,d,{onSuccess:(r,s,n,o)=>{this.resetLoader(e,l),this.updateStatsFromPart(e,t);const h={frag:e,part:t,payload:r.data,networkDetails:o};i(h),a(h)},onError:(i,r,s,n)=>{this.resetLoader(e,l),o(new Ga({type:ir.NETWORK_ERROR,details:rr.FRAG_LOAD_ERROR,fatal:!1,frag:e,part:t,response:qi({url:h.url,data:void 0},i),error:new Error(`HTTP Error ${i.code} ${i.text}`),networkDetails:s,stats:n}))},onAbort:(i,r,s)=>{e.stats.aborted=t.stats.aborted,this.resetLoader(e,l),o(new Ga({type:ir.NETWORK_ERROR,details:rr.INTERNAL_ABORTED,fatal:!1,frag:e,part:t,error:new Error("Aborted"),networkDetails:s,stats:i}))},onTimeout:(i,r,s)=>{this.resetLoader(e,l),o(new Ga({type:ir.NETWORK_ERROR,details:rr.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,part:t,error:new Error(`Timeout after ${d.timeout}ms`),networkDetails:s,stats:i}))}})}))}updateStatsFromPart(e,t){const i=e.stats,r=t.stats,s=r.total;if(i.loaded+=r.loaded,s){const r=Math.round(e.duration/t.duration),n=Math.min(Math.round(i.loaded/s),r),a=(r-n)*Math.round(i.loaded/n);i.total=i.loaded+a}else i.total=Math.max(i.loaded,i.total);const n=i.loading,a=r.loading;n.start?n.first+=a.first-a.start:(n.start=a.start,n.first=a.first),n.end=a.end}resetLoader(e,t){e.loader=null,this.loader===t&&(self.clearTimeout(this.partLoadTimeout),this.loader=null),t.destroy()}}function Ba(e,t=null){const i=t||e,r={frag:e,part:t,responseType:"arraybuffer",url:i.url,headers:{},rangeStart:0,rangeEnd:0},s=i.byteRangeStartOffset,n=i.byteRangeEndOffset;if(Ji(s)&&Ji(n)){var a;let t=s,i=n;if("initSegment"===e.sn&&"AES-128"===(null==(a=e.decryptdata)?void 0:a.method)){const e=n-s;e%16&&(i=n+(16-e%16)),0!==s&&(r.resetIV=!0,t=s-16)}r.rangeStart=t,r.rangeEnd=i}return r}function $a(e,t){const i=new Error(`GAP ${e.gap?"tag":"attribute"} found`),r={type:ir.MEDIA_ERROR,details:rr.FRAG_GAP,fatal:!1,frag:e,error:i,networkDetails:null};return t&&(r.part=t),(t||e).stats.aborted=!0,new Ga(r)}class Ga extends Error{constructor(e){super(e.error.message),this.data=void 0,this.data=e}}class Ka{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)}}class Va{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"])}}class Ha{constructor(){this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.ksRows=0,this.keySize=0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.initTable()}uint8ArrayToUint32Array_(e){const t=new DataView(e),i=new Uint32Array(4);for(let e=0;e<4;e++)i[e]=t.getUint32(4*e);return i}initTable(){const e=this.sBox,t=this.invSBox,i=this.subMix,r=i[0],s=i[1],n=i[2],a=i[3],o=this.invSubMix,l=o[0],h=o[1],c=o[2],d=o[3],u=new Uint32Array(256);let f=0,g=0,m=0;for(m=0;m<256;m++)u[m]=m<128?m<<1:m<<1^283;for(m=0;m<256;m++){let i=g^g<<1^g<<2^g<<3^g<<4;i=i>>>8^255&i^99,e[f]=i,t[i]=f;const o=u[f],m=u[o],p=u[m];let v=257*u[i]^16843008*i;r[f]=v<<24|v>>>8,s[f]=v<<16|v>>>16,n[f]=v<<8|v>>>24,a[f]=v,v=16843009*p^65537*m^257*o^16843008*f,l[i]=v<<24|v>>>8,h[i]=v<<16|v>>>16,c[i]=v<<8|v>>>24,d[i]=v,f?(f=o^u[u[u[p^o]]],g^=u[u[g]]):f=g=1}}expandKey(e){const t=this.uint8ArrayToUint32Array_(e);let i=!0,r=0;for(;r{if(!this.subtle)return Promise.reject(new Error("web crypto not initialized"));this.logOnce("WebCrypto AES decrypt");return new Ka(this.subtle,new Uint8Array(i)).decrypt(e.buffer,t)})).catch((r=>(lr.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${r.name}: ${r.message}`),this.onWebCryptoError(e,t,i))))}onWebCryptoError(e,t,i){this.useSoftware=!0,this.logEnabled=!0,this.softwareDecrypt(e,t,i);const r=this.flush();if(r)return r.buffer;throw new Error("WebCrypto and softwareDecrypt: failed to decrypt data")}getValidChunk(e){let t=e;const i=e.length-e.length%16;return i!==e.length&&(t=Nr(e,0,i),this.remainderData=Nr(e,i)),t}logOnce(e){this.logEnabled&&(lr.log(`[decrypter]: ${e}`),this.logEnabled=!1)}}const Wa=function(e){let t="";const i=e.length;for(let r=0;ra.end){const e=n>s;(n{if(this.fragContextChanged(e))return this.warn(`Fragment ${e.sn}${t.part?" p: "+t.part.index:""} of level ${e.level} was dropped during download.`),void this.fragmentTracker.removeFragment(e);e.stats.chunkCount++,this._handleFragmentLoadProgress(t)})).then((t=>{if(!t)return;const i=this.state;this.fragContextChanged(e)?(i===Xa||!this.fragCurrent&&i===Za)&&(this.fragmentTracker.removeFragment(e),this.state=qa):("payload"in t&&(this.log(`Loaded fragment ${e.sn} of level ${e.level}`),this.hls.trigger(tr.FRAG_LOADED,t)),this._handleFragmentLoadComplete(t))})).catch((t=>{this.state!==Ya&&this.state!==io&&(this.warn(`Frag error: ${(null==t?void 0:t.message)||t}`),this.resetFragmentLoading(e))}))}clearTrackerIfNeeded(e){var t;const{fragmentTracker:i}=this;if(i.getState(e)===La){const t=e.type,r=this.getFwdBufferInfo(this.mediaBuffer,t),s=Math.max(e.duration,r?r.len:this.config.maxBufferLength),n=this.backtrackFragment;(1===(n?e.sn-n.sn:0)||this.reduceMaxBufferLength(s))&&i.removeFragment(e)}else 0===(null==(t=this.mediaBuffer)?void 0:t.buffered.length)?i.removeAllFragments():i.hasParts(e.type)&&(i.detectPartialFragments({frag:e,part:null,stats:e.stats,id:e.type}),i.getState(e)===wa&&i.removeFragment(e))}checkLiveUpdate(e){if(e.updated&&!e.live){const t=e.fragments[e.fragments.length-1];this.fragmentTracker.detectPartialFragments({frag:t,part:null,stats:t.stats,id:t.type})}e.fragments[0]||(e.deltaUpdateFailed=!0)}flushMainBuffer(e,t,i=null){if(!(e-t))return;const r={startOffset:e,endOffset:t,type:i};this.hls.trigger(tr.BUFFER_FLUSHING,r)}_loadInitSegment(e,t){this._doFragLoad(e,t).then((t=>{if(!t||this.fragContextChanged(e)||!this.levels)throw new Error("init load aborted");return t})).then((t=>{const{hls:i}=this,{payload:r}=t,s=e.decryptdata;if(r&&r.byteLength>0&&null!=s&&s.key&&s.iv&&"AES-128"===s.method){const n=self.performance.now();return this.decrypter.decrypt(new Uint8Array(r),s.key.buffer,s.iv.buffer).catch((t=>{throw i.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.FRAG_DECRYPT_ERROR,fatal:!1,error:t,reason:t.message,frag:e}),t})).then((r=>{const s=self.performance.now();return i.trigger(tr.FRAG_DECRYPTED,{frag:e,payload:r,stats:{tstart:n,tdecrypt:s}}),t.payload=r,this.completeInitSegmentLoad(t)}))}return this.completeInitSegmentLoad(t)})).catch((t=>{this.state!==Ya&&this.state!==io&&(this.warn(t),this.resetFragmentLoading(e))}))}completeInitSegmentLoad(e){const{levels:t}=this;if(!t)throw new Error("init load aborted, missing levels");const i=e.frag.stats;this.state=qa,e.frag.data=new Uint8Array(e.payload),i.parsing.start=i.buffering.start=self.performance.now(),i.parsing.end=i.buffering.end=self.performance.now(),this.tick()}fragContextChanged(e){const{fragCurrent:t}=this;return!e||!t||e.sn!==t.sn||e.level!==t.level}fragBufferedComplete(e,t){var i,r,s,n;const a=this.mediaBuffer?this.mediaBuffer:this.media;if(this.log(`Buffered ${e.type} sn: ${e.sn}${t?" part: "+t.index:""} of ${this.playlistType===hn?"level":"track"} ${e.level} (frag:[${(null!=(i=e.startPTS)?i:NaN).toFixed(3)}-${(null!=(r=e.endPTS)?r:NaN).toFixed(3)}] > buffer:${a?Wa(xa.getBuffered(a)):"(detached)"})`),"initSegment"!==e.sn){var o;if(e.type!==dn){const t=e.elementaryStreams;if(!Object.keys(t).some((e=>!!t[e])))return void(this.state=qa)}const t=null==(o=this.levels)?void 0:o[e.level];null!=t&&t.fragmentError&&(this.log(`Resetting level fragment error count of ${t.fragmentError} on frag buffered`),t.fragmentError=0)}this.state=qa,a&&(!this.loadedmetadata&&e.type==hn&&a.buffered.length&&(null==(s=this.fragCurrent)?void 0:s.sn)===(null==(n=this.fragPrevious)?void 0:n.sn)&&(this.loadedmetadata=!0,this.seekToStartPos()),this.tick())}seekToStartPos(){}_handleFragmentLoadComplete(e){const{transmuxer:t}=this;if(!t)return;const{frag:i,part:r,partsLoaded:s}=e,n=!s||0===s.length||s.some((e=>!e)),a=new Ca(i.level,i.sn,i.stats.chunkCount+1,0,r?r.index:-1,!n);t.flush(a)}_handleFragmentLoadProgress(e){}_doFragLoad(e,t,i=null,r){var s;const n=null==t?void 0:t.details;if(!this.levels||!n)throw new Error(`frag load aborted, missing level${n?"":" detail"}s`);let a=null;if(!e.encrypted||null!=(s=e.decryptdata)&&s.key?!e.encrypted&&n.encryptedFragments.length&&this.keyLoader.loadClear(e,n.encryptedFragments):(this.log(`Loading key for ${e.sn} of [${n.startSN}-${n.endSN}], ${"[stream-controller]"===this.logPrefix?"level":"track"} ${e.level}`),this.state=za,this.fragCurrent=e,a=this.keyLoader.load(e).then((e=>{if(!this.fragContextChanged(e.frag))return this.hls.trigger(tr.KEY_LOADED,e),this.state===za&&(this.state=qa),e})),this.hls.trigger(tr.KEY_LOADING,{frag:e}),null===this.fragCurrent&&(a=Promise.reject(new Error("frag load aborted, context changed in KEY_LOADING")))),i=Math.max(e.start,i||0),this.config.lowLatencyMode&&"initSegment"!==e.sn){const s=n.partList;if(s&&r){i>e.end&&n.fragmentHint&&(e=n.fragmentHint);const o=this.getNextPart(s,e,i);if(o>-1){const l=s[o];let h;return this.log(`Loading part sn: ${e.sn} p: ${l.index} cc: ${e.cc} of playlist [${n.startSN}-${n.endSN}] parts [0-${o}-${s.length-1}] ${"[stream-controller]"===this.logPrefix?"level":"track"}: ${e.level}, target: ${parseFloat(i.toFixed(3))}`),this.nextLoadPosition=l.start+l.duration,this.state=Xa,h=a?a.then((i=>!i||this.fragContextChanged(i.frag)?null:this.doFragPartsLoad(e,l,t,r))).catch((e=>this.handleFragLoadError(e))):this.doFragPartsLoad(e,l,t,r).catch((e=>this.handleFragLoadError(e))),this.hls.trigger(tr.FRAG_LOADING,{frag:e,part:l,targetBufferTime:i}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")):h}if(!e.url||this.loadedEndOfParts(s,i))return Promise.resolve(null)}}this.log(`Loading fragment ${e.sn} cc: ${e.cc} ${n?"of ["+n.startSN+"-"+n.endSN+"] ":""}${"[stream-controller]"===this.logPrefix?"level":"track"}: ${e.level}, target: ${parseFloat(i.toFixed(3))}`),Ji(e.sn)&&!this.bitrateTest&&(this.nextLoadPosition=e.start+e.duration),this.state=Xa;const o=this.config.progressive;let l;return l=o&&a?a.then((t=>!t||this.fragContextChanged(null==t?void 0:t.frag)?null:this.fragmentLoader.load(e,r))).catch((e=>this.handleFragLoadError(e))):Promise.all([this.fragmentLoader.load(e,o?r:void 0),a]).then((([e])=>(!o&&e&&r&&r(e),e))).catch((e=>this.handleFragLoadError(e))),this.hls.trigger(tr.FRAG_LOADING,{frag:e,targetBufferTime:i}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")):l}doFragPartsLoad(e,t,i,r){return new Promise(((s,n)=>{var a;const o=[],l=null==(a=i.details)?void 0:a.partList,h=t=>{this.fragmentLoader.loadPart(e,t,r).then((r=>{o[t.index]=r;const n=r.part;this.hls.trigger(tr.FRAG_LOADED,r);const a=Vn(i,e.sn,t.index+1)||Hn(l,e.sn,t.index+1);if(!a)return s({frag:e,part:n,partsLoaded:o});h(a)})).catch(n)};h(t)}))}handleFragLoadError(e){if("data"in e){const t=e.data;e.data&&t.details===rr.INTERNAL_ABORTED?this.handleFragLoadAborted(t.frag,t.part):this.hls.trigger(tr.ERROR,t)}else this.hls.trigger(tr.ERROR,{type:ir.OTHER_ERROR,details:rr.INTERNAL_EXCEPTION,err:e,error:e,fatal:!0});return null}_handleTransmuxerFlush(e){const t=this.getCurrentContext(e);if(!t||this.state!==Za)return void(this.fragCurrent||this.state===Ya||this.state===io||(this.state=qa));const{frag:i,part:r,level:s}=t,n=self.performance.now();i.stats.parsing.end=n,r&&(r.stats.parsing.end=n),this.updateLevelTiming(i,r,s,e.partial)}getCurrentContext(e){const{levels:t,fragCurrent:i}=this,{level:r,sn:s,part:n}=e;if(null==t||!t[r])return this.warn(`Levels object was unset while buffering fragment ${s} of level ${r}. The current chunk will not be buffered.`),null;const a=t[r],o=n>-1?Vn(a,s,n):null,l=o?o.fragment:function(e,t,i){if(null==e||!e.details)return null;const r=e.details;let s=r.fragments[t-r.startSN];return s||(s=r.fragmentHint,s&&s.sn===t?s:tn&&this.flushMainBuffer(a,e.start)}getFwdBufferInfo(e,t){const i=this.getLoadPosition();return Ji(i)?this.getFwdBufferInfoAtPos(e,i,t):null}getFwdBufferInfoAtPos(e,t,i){const{config:{maxBufferHole:r}}=this,s=xa.bufferInfo(e,t,r);if(0===s.len&&void 0!==s.nextStart){const n=this.fragmentTracker.getBufferedFrag(t,i);if(n&&s.nextStart=i&&(t.maxMaxBufferLength=r,this.warn(`Reduce max buffer length to ${r}s`),!0)}getAppendedFrag(e,t=hn){const i=this.fragmentTracker.getAppendedFrag(e,hn);return i&&"fragment"in i?i.fragment:i}getNextFragment(e,t){const i=t.fragments,r=i.length;if(!r)return null;const{config:s}=this,n=i[0].start;let a;if(t.live){const o=s.initialLiveManifestSize;if(rt}getNextFragmentLoopLoading(e,t,i,r,s){const n=e.gap,a=this.getNextFragment(this.nextLoadPosition,t);if(null===a)return a;if(e=a,n&&e&&!e.gap&&i.nextStart){const t=this.getFwdBufferInfoAtPos(this.mediaBuffer?this.mediaBuffer:this.media,i.nextStart,r);if(null!==t&&i.len+t.len>=s)return this.log(`buffer full after gaps in "${r}" playlist starting at sn: ${e.sn}`),null}return e}mapToInitFragWhenRequired(e){return null==e||!e.initSegment||null!=e&&e.initSegment.data||this.bitrateTest?e:e.initSegment}getNextPart(e,t,i){let r=-1,s=!1,n=!0;for(let a=0,o=e.length;a-1&&ii.start&&i.loaded}getInitialLiveFragment(e,t){const i=this.fragPrevious;let r=null;if(i){if(e.hasProgramDateTime&&(this.log(`Live playlist, switching playlist, load frag with same PDT: ${i.programDateTime}`),r=function(e,t,i){if(null===t||!Array.isArray(e)||!e.length||!Ji(t))return null;if(t<(e[0].programDateTime||0))return null;if(t>=(e[e.length-1].endProgramDateTime||0))return null;i=i||0;for(let r=0;r=e.startSN&&s<=e.endSN){const n=t[s-e.startSN];i.cc===n.cc&&(r=n,this.log(`Live playlist, switching playlist, load frag with next SN: ${r.sn}`))}r||(r=function(e,t){return Qn(e,(e=>e.cct?-1:0))}(t,i.cc),r&&this.log(`Live playlist, switching playlist, load frag with same CC: ${r.sn}`))}}else{const t=this.hls.liveSyncPosition;null!==t&&(r=this.getFragmentAtPosition(t,this.bitrateTest?e.fragmentEnd:e.edge,e))}return r}getFragmentAtPosition(e,t,i){const{config:r}=this;let{fragPrevious:s}=this,{fragments:n,endSN:a}=i;const{fragmentHint:o}=i,{maxFragLookUpTolerance:l}=r,h=i.partList,c=!!(r.lowLatencyMode&&null!=h&&h.length&&o);let d;if(c&&o&&!this.bitrateTest&&(n=n.concat(o),a=o.sn),et-l?0:l)}else d=n[n.length-1];if(d){const e=d.sn-i.startSN,t=this.fragmentTracker.getState(d);if((t===Aa||t===wa&&d.gap)&&(s=d),s&&d.sn===s.sn&&(!c||h[0].fragment.sn>d.sn)){if(s&&d.level===s.level){const t=n[e+1];d=d.sn=n-t.maxFragLookUpTolerance&&s<=a;if(null!==r&&i.duration>r&&(s${e.startSN} prev-sn: ${s?s.sn:"na"} fragments: ${r}`),n}return s}waitForCdnTuneIn(e){return e.live&&e.canBlockReload&&e.partTarget&&e.tuneInGoal>Math.max(e.partHoldBack,3*e.partTarget)}setStartPosition(e,t){let i=this.startPosition;if(i ${null==(r=this.fragCurrent)?void 0:r.url}`);const s=t.details===rr.FRAG_GAP;s&&this.fragmentTracker.fragBuffered(i,!0);const n=t.errorAction,{action:a,retryCount:o=0,retryConfig:l}=n||{};if(n&&a===sa&&l){this.resetStartWhenNotLoaded(this.levelLastLoaded);const r=qn(l,o);this.warn(`Fragment ${i.sn} of ${e} ${i.level} errored with ${t.details}, retrying loading ${o+1}/${l.maxNumRetry} in ${r}ms`),n.resolved=!0,this.retryDate=self.performance.now()+r,this.state=Qa}else if(l&&n){if(this.resetFragmentErrors(e),!(o.5;r&&this.reduceMaxBufferLength(i.len);const s=!r;return s&&this.warn(`Buffer full error while media.currentTime is not buffered, flush ${t} buffer`),e.frag&&(this.fragmentTracker.removeFragment(e.frag),this.nextLoadPosition=e.frag.start),this.resetLoadingState(),s}return!1}resetFragmentErrors(e){e===cn&&(this.fragCurrent=null),this.loadedmetadata||(this.startFragRequested=!1),this.state!==Ya&&(this.state=qa)}afterBufferFlushed(e,t,i){if(!e)return;const r=xa.getBuffered(e);this.fragmentTracker.detectEvictedFragments(t,r,i),this.state===to&&this.resetLoadingState()}resetLoadingState(){this.log("Reset loading state"),this.fragCurrent=null,this.fragPrevious=null,this.state=qa}resetStartWhenNotLoaded(e){if(!this.loadedmetadata){this.startFragRequested=!1;const t=e?e.details:null;null!=t&&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,i,r){var s;const n=i.details;if(!n)return void this.warn("level.details undefined");if(!Object.keys(e.elementaryStreams).reduce(((t,s)=>{const a=e.elementaryStreams[s];if(a){const o=a.endPTS-a.startPTS;if(o<=0)return this.warn(`Could not parse fragment ${e.sn} ${s} duration reliably (${o})`),t||!1;const l=r?0:Bn(n,e,a.startPTS,a.endPTS,a.startDTS,a.endDTS);return this.hls.trigger(tr.LEVEL_PTS_UPDATED,{details:n,level:i,drift:l,type:s,frag:e,start:a.startPTS,end:a.endPTS}),!0}return t}),!1)&&null===(null==(s=this.transmuxer)?void 0:s.error)){const t=new Error(`Found no media in fragment ${e.sn} of level ${e.level} resetting transmuxer to fallback to playlist timing`);if(0===i.fragmentError&&(i.fragmentError++,e.gap=!0,this.fragmentTracker.removeFragment(e),this.fragmentTracker.fragBuffered(e,!0)),this.warn(t.message),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.FRAG_PARSING_ERROR,fatal:!1,error:t,frag:e,reason:`Found no media in msn ${e.sn} of level "${i.url}"`}),!this.hls)return;this.resetTransmuxer()}this.state=eo,this.hls.trigger(tr.FRAG_PARSED,{frag:e,part:t})}resetTransmuxer(){this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null)}recoverWorkerError(e){"demuxerWorker"===e.event&&(this.fragmentTracker.removeAllFragments(),this.resetTransmuxer(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState())}set state(e){const t=this._state;t!==e&&(this._state=e,this.log(`${t}->${e}`))}get state(){return this._state}}class ao{constructor(){this.chunks=[],this.dataLength=0}push(e){this.chunks.push(e),this.dataLength+=e.length}flush(){const{chunks:e,dataLength:t}=this;let i;return e.length?(i=1===e.length?e[0]:function(e,t){const i=new Uint8Array(t);let r=0;for(let t=0;t0&&a.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:r,type:En,duration:Number.POSITIVE_INFINITY});s{if(Ji(e))return 90*e;return 9e4*t+(i?9e4*i.baseTime/i.timescale:0)};function co(e,t){return 255===e[t]&&240==(246&e[t+1])}function uo(e,t){return 1&e[t+1]?7:9}function fo(e,t){return(3&e[t+3])<<11|e[t+4]<<3|(224&e[t+5])>>>5}function go(e,t){return t+1=e.length)return!1;const r=fo(e,t);if(r<=i)return!1;const s=t+r;return s===e.length||go(e,s)}return!1}function po(e,t,i,r,s){if(!e.samplerate){const n=function(e,t,i,r){let s,n,a,o;const l=navigator.userAgent.toLowerCase(),h=r,c=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];s=1+((192&t[i+2])>>>6);const d=(60&t[i+2])>>>2;if(!(d>c.length-1))return a=(1&t[i+2])<<2,a|=(192&t[i+3])>>>6,lr.log(`manifest codec:${r}, ADTS type:${s}, samplingIndex:${d}`),/firefox/i.test(l)?d>=6?(s=5,o=new Array(4),n=d-3):(s=2,o=new Array(2),n=d):-1!==l.indexOf("android")?(s=2,o=new Array(2),n=d):(s=5,o=new Array(4),r&&(-1!==r.indexOf("mp4a.40.29")||-1!==r.indexOf("mp4a.40.5"))||!r&&d>=6?n=d-3:((r&&-1!==r.indexOf("mp4a.40.2")&&(d>=6&&1===a||/vivaldi/i.test(l))||!r&&1===a)&&(s=2,o=new Array(2)),n=d)),o[0]=s<<3,o[0]|=(14&d)>>1,o[1]|=(1&d)<<7,o[1]|=a<<3,5===s&&(o[1]|=(14&n)>>1,o[2]=(1&n)<<7,o[2]|=8,o[3]=0),{config:o,samplerate:c[d],channelCount:a,codec:"mp4a.40."+s,manifestCodec:h};{const t=new Error(`invalid ADTS sampling index:${d}`);e.emit(tr.ERROR,tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.FRAG_PARSING_ERROR,fatal:!0,error:t,reason:t.message})}}(t,i,r,s);if(!n)return;e.config=n.config,e.samplerate=n.samplerate,e.channelCount=n.channelCount,e.codec=n.codec,e.manifestCodec=n.manifestCodec,lr.log(`parsed codec:${e.codec}, rate:${n.samplerate}, channels:${n.channelCount}`)}}function vo(e){return 9216e4/e}function yo(e,t,i,r,s){const n=r+s*vo(e.samplerate),a=function(e,t){const i=uo(e,t);if(t+i<=e.length){const r=fo(e,t)-i;if(r>0)return{headerLength:i,frameLength:r}}}(t,i);let o;if(a){const{frameLength:r,headerLength:s}=a,l=s+r,h=Math.max(0,i+l-t.length);h?(o=new Uint8Array(l-s),o.set(t.subarray(i+s,t.length),0)):o=t.subarray(i+s,i+l);const c={unit:o,pts:n};return h||e.samples.push(c),{sample:c,length:l,missing:h}}const l=t.length-i;o=new Uint8Array(l),o.set(t.subarray(i,t.length),0);return{sample:{unit:o,pts:n},length:l,missing:-1}}let To=null;const Eo=[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],So=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],bo=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],Lo=[0,1,1,4];function wo(e,t,i,r,s){if(i+24>t.length)return;const n=Ao(t,i);if(n&&i+n.frameLength<=t.length){const a=r+s*(9e4*n.samplesPerFrame/n.sampleRate),o={unit:t.subarray(i,i+n.frameLength),pts:a,dts:a};return e.config=[],e.channelCount=n.channelCount,e.samplerate=n.sampleRate,e.samples.push(o),{sample:o,length:n.frameLength,missing:0}}}function Ao(e,t){const i=e[t+1]>>3&3,r=e[t+1]>>1&3,s=e[t+2]>>4&15,n=e[t+2]>>2&3;if(1!==i&&0!==s&&15!==s&&3!==n){const a=e[t+2]>>1&1,o=e[t+3]>>6,l=1e3*Eo[14*(3===i?3-r:3===r?3:4)+s-1],h=So[3*(3===i?0:2===i?1:2)+n],c=3===o?1:2,d=bo[i][r],u=Lo[r],f=8*d*u,g=Math.floor(d*l/h+a)*u;if(null===To){const e=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);To=e?parseInt(e[1]):0}return!!To&&To<=87&&2===r&&l>=224e3&&0===o&&(e[t+3]=128|e[t+3]),{sampleRate:h,channelCount:c,frameLength:g,samplesPerFrame:f}}}function Ro(e,t){return!(255!==e[t]||224&~e[t+1]||!(6&e[t+1]))}function ko(e,t){return t+1{let i=0,r=5;t+=r;const s=new Uint32Array(1),n=new Uint32Array(1),a=new Uint8Array(1);for(;r>0;){a[0]=e[t];const o=Math.min(r,8),l=8-o;n[0]=4278190080>>>24+l<>l,i=i?i<t.length)return-1;if(11!==t[i]||119!==t[i+1])return-1;const n=t[i+4]>>6;if(n>=3)return-1;const a=[48e3,44100,32e3][n],o=63&t[i+4],l=2*[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][3*o+n];if(i+l>t.length)return-1;const h=t[i+6]>>5;let c=0;2===h?c+=2:(1&h&&1!==h&&(c+=2),4&h&&(c+=2));const d=(t[i+6]<<8|t[i+7])>>12-c&1,u=[2,1,2,3,3,4,4,5][h]+d,f=t[i+5]>>3,g=7&t[i+5],m=new Uint8Array([n<<6|f<<1|g>>2,(3&g)<<6|h<<3|d<<2|o>>4,o<<4&224]),p=r+s*(1536/a*9e4),v=t.subarray(i,i+l);return e.config=m,e.channelCount=u,e.samplerate=a,e.samples.push({unit:v,pts:p}),l}class Po{constructor(){this.VideoSample=null}createVideoSample(e,t,i,r){return{key:e,frame:!1,pts:t,dts:i,units:[],debug:r,length:0}}getLastNalUnit(e){var t;let i,r=this.VideoSample;if(r&&0!==r.units.length||(r=e[e.length-1]),null!=(t=r)&&t.units){const e=r.units;i=e[e.length-1]}return i}pushAccessUnit(e,t){if(e.units.length&&e.frame){if(void 0===e.pts){const i=t.samples,r=i.length;if(!r)return void t.dropped++;{const t=i[r-1];e.pts=t.pts,e.dts=t.dts}}t.samples.push(e)}e.debug.length&&lr.log(e.pts+"/"+e.dts+":"+e.debug)}}class Oo{constructor(e){this.data=void 0,this.bytesAvailable=void 0,this.word=void 0,this.bitsAvailable=void 0,this.data=e,this.bytesAvailable=e.byteLength,this.word=0,this.bitsAvailable=0}loadWord(){const e=this.data,t=this.bytesAvailable,i=e.byteLength-t,r=new Uint8Array(4),s=Math.min(4,t);if(0===s)throw new Error("no bytes available");r.set(e.subarray(i,i+s)),this.word=new DataView(r.buffer).getUint32(0),this.bitsAvailable=8*s,this.bytesAvailable-=s}skipBits(e){let t;e=Math.min(e,8*this.bytesAvailable+this.bitsAvailable),this.bitsAvailable>e?(this.word<<=e,this.bitsAvailable-=e):(t=(e-=this.bitsAvailable)>>3,e-=t<<3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)}readBits(e){let t=Math.min(this.bitsAvailable,e);const i=this.word>>>32-t;if(e>32&&lr.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=t,this.bitsAvailable>0)this.word<<=t;else{if(!(this.bytesAvailable>0))throw new Error("no bits available");this.loadWord()}return t=e-t,t>0&&this.bitsAvailable?i<>>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(){const e=this.skipLZ();return this.readBits(e+1)-1}readEG(){const e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){return this.readBits(8)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}skipScalingList(e){let t,i=8,r=8;for(let s=0;s{var n;switch(r.type){case 1:{let t=!1;a=!0;const s=r.data;if(l&&s.length>4){const e=new Oo(s).readSliceType();2!==e&&4!==e&&7!==e&&9!==e||(t=!0)}var h;if(t)null!=(h=o)&&h.frame&&!o.key&&(this.pushAccessUnit(o,e),o=this.VideoSample=null);o||(o=this.VideoSample=this.createVideoSample(!0,i.pts,i.dts,"")),o.frame=!0,o.key=t;break}case 5:a=!0,null!=(n=o)&&n.frame&&!o.key&&(this.pushAccessUnit(o,e),o=this.VideoSample=null),o||(o=this.VideoSample=this.createVideoSample(!0,i.pts,i.dts,"")),o.key=!0,o.frame=!0;break;case 6:a=!0,Ls(r.data,1,i.pts,t.samples);break;case 7:{var c,d;a=!0,l=!0;const t=r.data,i=new Oo(t).readSPS();if(!e.sps||e.width!==i.width||e.height!==i.height||(null==(c=e.pixelRatio)?void 0:c[0])!==i.pixelRatio[0]||(null==(d=e.pixelRatio)?void 0:d[1])!==i.pixelRatio[1]){e.width=i.width,e.height=i.height,e.pixelRatio=i.pixelRatio,e.sps=[t],e.duration=s;const r=t.subarray(1,4);let n="avc1.";for(let e=0;e<3;e++){let t=r[e].toString(16);t.length<2&&(t="0"+t),n+=t}e.codec=n}break}case 8:a=!0,e.pps=[r.data];break;case 9:a=!0,e.audFound=!0,o&&this.pushAccessUnit(o,e),o=this.VideoSample=this.createVideoSample(!1,i.pts,i.dts,"");break;case 12:a=!0;break;default:a=!1,o&&(o.debug+="unknown NAL "+r.type+" ")}if(o&&a){o.units.push(r)}})),r&&o&&(this.pushAccessUnit(o,e),this.VideoSample=null)}parseAVCNALu(e,t){const i=t.byteLength;let r=e.naluState||0;const s=r,n=[];let a,o,l,h=0,c=-1,d=0;for(-1===r&&(c=0,d=31&t[0],r=0,h=1);h=0){const e={data:t.subarray(c,o),type:d};n.push(e)}else{const i=this.getLastNalUnit(e.samples);i&&(s&&h<=4-s&&i.state&&(i.data=i.data.subarray(0,i.data.byteLength-s)),o>0&&(i.data=Es(i.data,t.subarray(0,o)),i.state=0))}h=0&&r>=0){const e={data:t.subarray(c,i),type:d,state:r};n.push(e)}if(0===n.length){const i=this.getLastNalUnit(e.samples);i&&(i.data=Es(i.data,t))}return e.naluState=r,n}}class Fo{constructor(e,t,i){this.keyData=void 0,this.decrypter=void 0,this.keyData=i,this.decrypter=new ja(t,{removePKCS7Padding:!1})}decryptBuffer(e){return this.decrypter.decrypt(e,this.keyData.key.buffer,this.keyData.iv.buffer)}decryptAacSample(e,t,i){const r=e[t].unit;if(r.length<=16)return;const s=r.subarray(16,r.length-r.length%16),n=s.buffer.slice(s.byteOffset,s.byteOffset+s.length);this.decryptBuffer(n).then((s=>{const n=new Uint8Array(s);r.set(n,16),this.decrypter.isSync()||this.decryptAacSamples(e,t+1,i)}))}decryptAacSamples(e,t,i){for(;;t++){if(t>=e.length)return void i();if(!(e[t].unit.length<32)&&(this.decryptAacSample(e,t,i),!this.decrypter.isSync()))return}}getAvcEncryptedData(e){const t=16*Math.floor((e.length-48)/160)+16,i=new Int8Array(t);let r=0;for(let t=32;t{s.data=this.getAvcDecryptedUnit(n,a),this.decrypter.isSync()||this.decryptAvcSamples(e,t,i+1,r)}))}decryptAvcSamples(e,t,i,r){if(e instanceof Uint8Array)throw new Error("Cannot decrypt samples of type Uint8Array");for(;;t++,i=0){if(t>=e.length)return void r();const s=e[t].units;for(;!(i>=s.length);i++){const n=s[i];if(!(n.data.length<=48||1!==n.type&&5!==n.type||(this.decryptAvcSample(e,t,i,r,n),this.decrypter.isSync())))return}}}}const No=188;class Uo{constructor(e,t,i){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.typeSupported=i,this.videoParser=new Mo}static probe(e){const t=Uo.syncOffset(e);return t>0&&lr.warn(`MPEG2-TS detected but first sync word found @ offset ${t}`),-1!==t}static syncOffset(e){const t=e.length;let i=Math.min(940,t-No)+1,r=0;for(;r1&&(0===n&&a>2||o+No>i))return n}r++}return-1}static createTrack(e,t){return{container:"video"===e||"audio"===e?"video/mp2t":void 0,type:e,id:ss[e],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:"audio"===e?t:void 0}}resetInitSegment(e,t,i,r){this.pmtParsed=!1,this._pmtId=-1,this._videoTrack=Uo.createTrack("video"),this._audioTrack=Uo.createTrack("audio",r),this._id3Track=Uo.createTrack("id3"),this._txtTrack=Uo.createTrack("text"),this._audioTrack.segmentCodec="aac",this.aacOverFlow=null,this.remainderData=null,this.audioCodec=t,this.videoCodec=i,this._duration=r}resetTimeStamp(){}resetContiguity(){const{_audioTrack:e,_videoTrack:t,_id3Track:i}=this;e&&(e.pesData=null),t&&(t.pesData=null),i&&(i.pesData=null),this.aacOverFlow=null,this.remainderData=null}demux(e,t,i=!1,r=!1){let s;i||(this.sampleAes=null);const n=this._videoTrack,a=this._audioTrack,o=this._id3Track,l=this._txtTrack;let h=n.pid,c=n.pesData,d=a.pid,u=o.pid,f=a.pesData,g=o.pesData,m=null,p=this.pmtParsed,v=this._pmtId,y=e.length;if(this.remainderData&&(y=(e=Es(this.remainderData,e)).length,this.remainderData=null),y>4>1){if(E=t+5+e[t+4],E===t+No)continue}else E=t+4;switch(y){case h:r&&(c&&(s=Ho(c))&&this.videoParser.parseAVCPES(n,l,s,!1,this._duration),c={data:[],size:0}),c&&(c.data.push(e.subarray(E,t+No)),c.size+=t+No-E);break;case d:if(r){if(f&&(s=Ho(f)))switch(a.segmentCodec){case"aac":this.parseAACPES(a,s);break;case"mp3":this.parseMPEGPES(a,s);break;case"ac3":this.parseAC3PES(a,s)}f={data:[],size:0}}f&&(f.data.push(e.subarray(E,t+No)),f.size+=t+No-E);break;case u:r&&(g&&(s=Ho(g))&&this.parseID3PES(o,s),g={data:[],size:0}),g&&(g.data.push(e.subarray(E,t+No)),g.size+=t+No-E);break;case 0:r&&(E+=e[E]+1),v=this._pmtId=$o(e,E);break;case v:{r&&(E+=e[E]+1);const s=Go(e,E,this.typeSupported,i,this.observer);h=s.videoPid,h>0&&(n.pid=h,n.segmentCodec=s.segmentVideoCodec),d=s.audioPid,d>0&&(a.pid=d,a.segmentCodec=s.segmentAudioCodec),u=s.id3Pid,u>0&&(o.pid=u),null===m||p||(lr.warn(`MPEG-TS PMT found at ${t} after unknown PID '${m}'. Backtracking to sync byte @${T} to parse all TS packets.`),m=null,t=T-188),p=this.pmtParsed=!0;break}case 17:case 8191:break;default:m=y}}else E++;E>0&&Ko(this.observer,new Error(`Found ${E} TS packet/s that do not start with 0x47`)),n.pesData=c,a.pesData=f,o.pesData=g;const S={audioTrack:a,videoTrack:n,id3Track:o,textTrack:l};return r&&this.extractRemainingSamples(S),S}flush(){const{remainderData:e}=this;let t;return this.remainderData=null,t=e?this.demux(e,-1,!1,!0):{videoTrack:this._videoTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(t),this.sampleAes?this.decrypt(t,this.sampleAes):t}extractRemainingSamples(e){const{audioTrack:t,videoTrack:i,id3Track:r,textTrack:s}=e,n=i.pesData,a=t.pesData,o=r.pesData;let l;if(n&&(l=Ho(n))?(this.videoParser.parseAVCPES(i,s,l,!0,this._duration),i.pesData=null):i.pesData=n,a&&(l=Ho(a))){switch(t.segmentCodec){case"aac":this.parseAACPES(t,l);break;case"mp3":this.parseMPEGPES(t,l);break;case"ac3":this.parseAC3PES(t,l)}t.pesData=null}else null!=a&&a.size&&lr.log("last AAC PES packet truncated,might overlap between fragments"),t.pesData=a;o&&(l=Ho(o))?(this.parseID3PES(r,l),r.pesData=null):r.pesData=o}demuxSampleAes(e,t,i){const r=this.demux(e,i,!0,!this.config.progressive),s=this.sampleAes=new Fo(this.observer,this.config,t);return this.decrypt(r,s)}decrypt(e,t){return new Promise((i=>{const{audioTrack:r,videoTrack:s}=e;r.samples&&"aac"===r.segmentCodec?t.decryptAacSamples(r.samples,0,(()=>{s.samples?t.decryptAvcSamples(s.samples,0,0,(()=>{i(e)})):i(e)})):s.samples&&t.decryptAvcSamples(s.samples,0,0,(()=>{i(e)}))}))}destroy(){this._duration=0}parseAACPES(e,t){let i=0;const r=this.aacOverFlow;let s,n,a,o=t.data;if(r){this.aacOverFlow=null;const t=r.missing,s=r.sample.unit.byteLength;if(-1===t)o=Es(r.sample.unit,o);else{const n=s-t;r.sample.unit.set(o.subarray(0,t),n),e.samples.push(r.sample),i=r.missing}}for(s=i,n=o.length;s0;)o+=n}}parseID3PES(e,t){if(void 0===t.pts)return void lr.warn("[tsdemuxer]: ID3 PES unknown PTS");const i=Qi({},t,{type:this._videoTrack?bn:En,duration:Number.POSITIVE_INFINITY});e.samples.push(i)}}function Bo(e,t){return((31&e[t+1])<<8)+e[t+2]}function $o(e,t){return(31&e[t+10])<<8|e[t+11]}function Go(e,t,i,r,s){const n={audioPid:-1,videoPid:-1,id3Pid:-1,segmentVideoCodec:"avc",segmentAudioCodec:"aac"},a=t+3+((15&e[t+1])<<8|e[t+2])-4;for(t+=12+((15&e[t+10])<<8|e[t+11]);t0){let r=t+5,s=o;for(;s>2;){if(106===e[r])!0!==i.ac3?lr.log("AC-3 audio found, not supported in this browser for now"):(n.audioPid=a,n.segmentAudioCodec="ac3");const t=e[r+1]+2;r+=t,s-=t}}break;case 194:case 135:return Ko(s,new Error("Unsupported EC-3 in M2TS found")),n;case 36:return Ko(s,new Error("Unsupported HEVC in M2TS found")),n}t+=o+5}return n}function Ko(e,t,i){lr.warn(`parsing error: ${t.message}`),e.emit(tr.ERROR,tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.FRAG_PARSING_ERROR,fatal:!1,levelRetry:i,error:t,reason:t.message})}function Vo(e){lr.log(`${e} with AES-128-CBC encryption found in unencrypted stream`)}function Ho(e){let t,i,r,s,n,a=0;const o=e.data;if(!e||0===e.size)return null;for(;o[0].length<19&&o.length>1;)o[0]=Es(o[0],o[1]),o.splice(1,1);t=o[0];if(1===(t[0]<<16)+(t[1]<<8)+t[2]){if(i=(t[4]<<8)+t[5],i&&i>e.size-6)return null;const l=t[7];192&l&&(s=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,64&l?(n=536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2,s-n>54e5&&(lr.warn(`${Math.round((s-n)/9e4)}s delta between PTS and DTS, align them`),s=n)):n=s),r=t[8];let h=r+9;if(e.size<=h)return null;e.size-=h;const c=new Uint8Array(e.size);for(let e=0,i=o.length;ei){h-=i;continue}t=t.subarray(h),i-=h,h=0}c.set(t,a),a+=i}return i&&(i-=r+3),{data:c,pts:s,dts:n,len:i}}return null}class jo{static getSilentFrame(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)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(6===t)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])}else{if(1===t)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(2===t)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(3===t)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])}}}const Wo=Math.pow(2,32)-1;class Yo{static init(){let e;for(e in Yo.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:[]},Yo.types)Yo.types.hasOwnProperty(e)&&(Yo.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);const t=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),i=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]);Yo.HDLR_TYPES={video:t,audio:i};const r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),s=new Uint8Array([0,0,0,0,0,0,0,0]);Yo.STTS=Yo.STSC=Yo.STCO=s,Yo.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),Yo.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),Yo.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),Yo.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);const n=new Uint8Array([105,115,111,109]),a=new Uint8Array([97,118,99,49]),o=new Uint8Array([0,0,0,1]);Yo.FTYP=Yo.box(Yo.types.ftyp,n,o,n,a),Yo.DINF=Yo.box(Yo.types.dinf,Yo.box(Yo.types.dref,r))}static box(e,...t){let i=8,r=t.length;const s=r;for(;r--;)i+=t[r].byteLength;const n=new Uint8Array(i);for(n[0]=i>>24&255,n[1]=i>>16&255,n[2]=i>>8&255,n[3]=255&i,n.set(e,4),r=0,i=8;r>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,r>>24,r>>16&255,r>>8&255,255&r,85,196,0,0]))}static mdia(e){return Yo.box(Yo.types.mdia,Yo.mdhd(e.timescale,e.duration),Yo.hdlr(e.type),Yo.minf(e))}static mfhd(e){return Yo.box(Yo.types.mfhd,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e]))}static minf(e){return"audio"===e.type?Yo.box(Yo.types.minf,Yo.box(Yo.types.smhd,Yo.SMHD),Yo.DINF,Yo.stbl(e)):Yo.box(Yo.types.minf,Yo.box(Yo.types.vmhd,Yo.VMHD),Yo.DINF,Yo.stbl(e))}static moof(e,t,i){return Yo.box(Yo.types.moof,Yo.mfhd(e),Yo.traf(i,t))}static moov(e){let t=e.length;const i=[];for(;t--;)i[t]=Yo.trak(e[t]);return Yo.box.apply(null,[Yo.types.moov,Yo.mvhd(e[0].timescale,e[0].duration)].concat(i).concat(Yo.mvex(e)))}static mvex(e){let t=e.length;const i=[];for(;t--;)i[t]=Yo.trex(e[t]);return Yo.box.apply(null,[Yo.types.mvex,...i])}static mvhd(e,t){t*=e;const i=Math.floor(t/(Wo+1)),r=Math.floor(t%(Wo+1)),s=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,255&e,i>>24,i>>16&255,i>>8&255,255&i,r>>24,r>>16&255,r>>8&255,255&r,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 Yo.box(Yo.types.mvhd,s)}static sdtp(e){const t=e.samples||[],i=new Uint8Array(4+t.length);let r,s;for(r=0;r>>8&255),s.push(255&r),s=s.concat(Array.prototype.slice.call(i));for(t=0;t>>8&255),n.push(255&r),n=n.concat(Array.prototype.slice.call(i));const a=Yo.box(Yo.types.avcC,new Uint8Array([1,s[3],s[4],s[5],255,224|e.sps.length].concat(s).concat([e.pps.length]).concat(n))),o=e.width,l=e.height,h=e.pixelRatio[0],c=e.pixelRatio[1];return Yo.box(Yo.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,o>>8&255,255&o,l>>8&255,255&l,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]),a,Yo.box(Yo.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),Yo.box(Yo.types.pasp,new Uint8Array([h>>24,h>>16&255,h>>8&255,255&h,c>>24,c>>16&255,c>>8&255,255&c])))}static esds(e){const 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){const 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,255&t,0,0])}static mp4a(e){return Yo.box(Yo.types.mp4a,Yo.audioStsd(e),Yo.box(Yo.types.esds,Yo.esds(e)))}static mp3(e){return Yo.box(Yo.types[".mp3"],Yo.audioStsd(e))}static ac3(e){return Yo.box(Yo.types["ac-3"],Yo.audioStsd(e),Yo.box(Yo.types.dac3,e.config))}static stsd(e){return"audio"===e.type?"mp3"===e.segmentCodec&&"mp3"===e.codec?Yo.box(Yo.types.stsd,Yo.STSD,Yo.mp3(e)):"ac3"===e.segmentCodec?Yo.box(Yo.types.stsd,Yo.STSD,Yo.ac3(e)):Yo.box(Yo.types.stsd,Yo.STSD,Yo.mp4a(e)):Yo.box(Yo.types.stsd,Yo.STSD,Yo.avc1(e))}static tkhd(e){const t=e.id,i=e.duration*e.timescale,r=e.width,s=e.height,n=Math.floor(i/(Wo+1)),a=Math.floor(i%(Wo+1));return Yo.box(Yo.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,255&t,0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n,a>>24,a>>16&255,a>>8&255,255&a,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,r>>8&255,255&r,0,0,s>>8&255,255&s,0,0]))}static traf(e,t){const i=Yo.sdtp(e),r=e.id,s=Math.floor(t/(Wo+1)),n=Math.floor(t%(Wo+1));return Yo.box(Yo.types.traf,Yo.box(Yo.types.tfhd,new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r])),Yo.box(Yo.types.tfdt,new Uint8Array([1,0,0,0,s>>24,s>>16&255,s>>8&255,255&s,n>>24,n>>16&255,n>>8&255,255&n])),Yo.trun(e,i.length+16+20+8+16+8+8),i)}static trak(e){return e.duration=e.duration||4294967295,Yo.box(Yo.types.trak,Yo.tkhd(e),Yo.mdia(e))}static trex(e){const t=e.id;return Yo.box(Yo.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}static trun(e,t){const i=e.samples||[],r=i.length,s=12+16*r,n=new Uint8Array(s);let a,o,l,h,c,d;for(t+=8+s,n.set(["video"===e.type?1:0,0,15,1,r>>>24&255,r>>>16&255,r>>>8&255,255&r,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0),a=0;a>>24&255,l>>>16&255,l>>>8&255,255&l,h>>>24&255,h>>>16&255,h>>>8&255,255&h,c.isLeading<<2|c.dependsOn,c.isDependedOn<<6|c.hasRedundancy<<4|c.paddingValue<<1|c.isNonSync,61440&c.degradPrio,15&c.degradPrio,d>>>24&255,d>>>16&255,d>>>8&255,255&d],12+16*a);return Yo.box(Yo.types.trun,n)}static initSegment(e){Yo.types||Yo.init();const t=Yo.moov(e);return Es(Yo.FTYP,t)}}Yo.types=void 0,Yo.HDLR_TYPES=void 0,Yo.STTS=void 0,Yo.STSC=void 0,Yo.STCO=void 0,Yo.STSZ=void 0,Yo.VMHD=void 0,Yo.SMHD=void 0,Yo.STSD=void 0,Yo.FTYP=void 0,Yo.DINF=void 0;const qo=9e4;function zo(e,t,i=1,r=!1){const s=e*t*i;return r?Math.round(s):s}function Xo(e,t=!1){return zo(e,1e3,1/qo,t)}let Qo,Jo=null,Zo=null;class el{constructor(e,t,i,r=""){if(this.observer=void 0,this.config=void 0,this.typeSupported=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=i,this.ISGenerated=!1,null===Jo){const e=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);Jo=e?parseInt(e[1]):0}if(null===Zo){const e=navigator.userAgent.match(/Safari\/(\d+)/i);Zo=e?parseInt(e[1]):0}}destroy(){this.config=this.videoTrackConfig=this._initPTS=this._initDTS=null}resetTimeStamp(e){lr.log("[mp4-remuxer]: initPTS & initDTS reset"),this._initPTS=this._initDTS=e}resetNextTimestamp(){lr.log("[mp4-remuxer]: reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1}resetInitSegment(){lr.log("[mp4-remuxer]: ISGenerated flag reset"),this.ISGenerated=!1,this.videoTrackConfig=void 0}getVideoStartPts(e){let t=!1;const i=e.reduce(((e,i)=>{const r=i.pts-e;return r<-4294967296?(t=!0,tl(e,i.pts)):r>0?e:i.pts}),e[0].pts);return t&&lr.debug("PTS rollover detected"),i}remux(e,t,i,r,s,n,a,o){let l,h,c,d,u,f,g=s,m=s;const p=e.pid>-1,v=t.pid>-1,y=t.samples.length,T=e.samples.length>0,E=a&&y>0||y>1;if((!p||T)&&(!v||E)||this.ISGenerated||a){if(this.ISGenerated){var S,b,L,w;const e=this.videoTrackConfig;!e||t.width===e.width&&t.height===e.height&&(null==(S=t.pixelRatio)?void 0:S[0])===(null==(b=e.pixelRatio)?void 0:b[0])&&(null==(L=t.pixelRatio)?void 0:L[1])===(null==(w=e.pixelRatio)?void 0:w[1])||this.resetInitSegment()}else c=this.generateIS(e,t,s,n);const i=this.isVideoContiguous;let r,a=-1;if(E&&(a=function(e){for(let t=0;t0){lr.warn(`[mp4-remuxer]: Dropped ${a} out of ${y} video samples due to a missing keyframe`);const e=this.getVideoStartPts(t.samples);t.samples=t.samples.slice(a),t.dropped+=a,m+=(t.samples[0].pts-e)/t.inputTimeScale,r=m}else-1===a&&(lr.warn(`[mp4-remuxer]: No keyframe found out of ${y} video samples`),f=!1);if(this.ISGenerated){if(T&&E){const i=this.getVideoStartPts(t.samples),r=(tl(e.samples[0].pts,i)-i)/t.inputTimeScale;g+=Math.max(0,r),m+=Math.max(0,-r)}if(T){if(e.samplerate||(lr.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"),c=this.generateIS(e,t,s,n)),h=this.remuxAudio(e,g,this.isAudioContiguous,n,v||E||o===cn?m:void 0),E){const r=h?h.endPTS-h.startPTS:0;t.inputTimeScale||(lr.warn("[mp4-remuxer]: regenerate InitSegment as video detected"),c=this.generateIS(e,t,s,n)),l=this.remuxVideo(t,m,i,r)}}else E&&(l=this.remuxVideo(t,m,i,0));l&&(l.firstKeyFrame=a,l.independent=-1!==a,l.firstKeyFramePTS=r)}}return this.ISGenerated&&this._initPTS&&this._initDTS&&(i.samples.length&&(u=il(i,s,this._initPTS,this._initDTS)),r.samples.length&&(d=rl(r,s,this._initPTS))),{audio:h,video:l,initSegment:c,independent:f,text:d,id3:u}}generateIS(e,t,i,r){const s=e.samples,n=t.samples,a=this.typeSupported,o={},l=this._initPTS;let h,c,d,u=!l||r,f="audio/mp4";if(u&&(h=c=1/0),e.config&&s.length){switch(e.timescale=e.samplerate,e.segmentCodec){case"mp3":a.mpeg?(f="audio/mpeg",e.codec=""):a.mp3&&(e.codec="mp3");break;case"ac3":e.codec="ac-3"}o.audio={id:"audio",container:f,codec:e.codec,initSegment:"mp3"===e.segmentCodec&&a.mpeg?new Uint8Array(0):Yo.initSegment([e]),metadata:{channelCount:e.channelCount}},u&&(d=e.inputTimeScale,l&&d===l.timescale?u=!1:h=c=s[0].pts-Math.round(d*i))}if(t.sps&&t.pps&&n.length){if(t.timescale=t.inputTimeScale,o.video={id:"main",container:"video/mp4",codec:t.codec,initSegment:Yo.initSegment([t]),metadata:{width:t.width,height:t.height}},u)if(d=t.inputTimeScale,l&&d===l.timescale)u=!1;else{const e=this.getVideoStartPts(n),t=Math.round(d*i);c=Math.min(c,tl(n[0].dts,e)-t),h=Math.min(h,e-t)}this.videoTrackConfig={width:t.width,height:t.height,pixelRatio:t.pixelRatio}}if(Object.keys(o).length)return this.ISGenerated=!0,u?(this._initPTS={baseTime:h,timescale:d},this._initDTS={baseTime:c,timescale:d}):h=d=void 0,{tracks:o,initPTS:h,timescale:d}}remuxVideo(e,t,i,r){const s=e.inputTimeScale,n=e.samples,a=[],o=n.length,l=this._initPTS;let h,c,d=this.nextAvcDts,u=8,f=this.videoSampleDuration,g=Number.POSITIVE_INFINITY,m=Number.NEGATIVE_INFINITY,p=!1;if(!i||null===d){const e=t*s,r=n[0].pts-tl(n[0].dts,n[0].pts);Jo&&null!==d&&Math.abs(e-r-d)<15e3?i=!0:d=e-r}const v=l.baseTime*s/l.timescale;for(let e=0;e0?e-1:e].dts&&(p=!0)}p&&n.sort((function(e,t){const i=e.dts-t.dts,r=e.pts-t.pts;return i||r})),h=n[0].dts,c=n[n.length-1].dts;const y=c-h,T=y?Math.round(y/(o-1)):f||e.inputTimeScale/30;if(i){const e=h-d,i=e>T,r=e<-1;if((i||r)&&(i?lr.warn(`AVC: ${Xo(e,!0)} ms (${e}dts) hole between fragments detected at ${t.toFixed(3)}`):lr.warn(`AVC: ${Xo(-e,!0)} ms (${e}dts) overlapping between fragments detected at ${t.toFixed(3)}`),!r||d>=n[0].pts||Jo)){h=d;const t=n[0].pts-e;if(i)n[0].dts=h,n[0].pts=t;else for(let i=0;it);i++)n[i].dts-=e,n[i].pts-=e;lr.log(`Video: Initial PTS/DTS adjusted: ${Xo(t,!0)}/${Xo(h,!0)}, delta: ${Xo(e,!0)} ms`)}}h=Math.max(0,h);let E=0,S=0,b=h;for(let e=0;e0?t.dts-n[e-1].dts:T;if(l=e>0?t.pts-n[e-1].pts:T,i.stretchShortVideoTrack&&null!==this.nextAudioPts){const e=Math.floor(i.maxBufferHole*s),n=(r?g+r*s:this.nextAudioPts)-t.pts;n>e?(f=n-a,f<0?f=a:R=!0,lr.log(`[mp4-remuxer]: It is approximately ${n/90} ms to the next segment; using duration ${f/90} ms for the last video frame.`)):f=a}else f=a}const c=Math.round(t.pts-t.dts);k=Math.min(k,f),D=Math.max(D,f),_=Math.min(_,l),x=Math.max(x,l),a.push(new sl(t.key,f,h,c))}if(a.length)if(Jo){if(Jo<70){const e=a[0].flags;e.dependsOn=2,e.isNonSync=0}}else if(Zo&&x-_0&&(r&&Math.abs(p-m)<9e3||Math.abs(tl(f[0].pts-v,p)-m)<20*l),f.forEach((function(e){e.pts=tl(e.pts-v,p)})),!i||m<0){if(f=f.filter((e=>e.pts>=0)),!f.length)return;m=0===s?0:r&&!u?Math.max(0,p):f[0].pts}if("aac"===e.segmentCodec){const t=this.config.maxAudioFramesDrift;for(let i=0,r=m;i=t*l&&h<1e4&&u){let t=Math.round(o/l);r=a-t*l,r<0&&(t--,r+=l),0===i&&(this.nextAudioPts=m=r),lr.warn(`[mp4-remuxer]: Injecting ${t} audio frame @ ${(r/n).toFixed(3)}s due to ${Math.round(1e3*o/n)} ms gap.`);for(let n=0;n0))return;S+=g;try{y=new Uint8Array(S)}catch(e){return void this.observer.emit(tr.ERROR,tr.ERROR,{type:ir.MUX_ERROR,details:rr.REMUX_ALLOC_ERROR,fatal:!1,error:e,bytes:S,reason:`fail allocating audio mdat ${S}`})}if(!c){new DataView(y.buffer).setUint32(0,S),y.set(Yo.types.mdat,4)}}y.set(s,g);const l=s.byteLength;g+=l,d.push(new sl(!0,o,l,0)),E=n}const L=d.length;if(!L)return;const w=d[d.length-1];this.nextAudioPts=m=E+a*w.duration;const A=c?new Uint8Array(0):Yo.moof(e.sequenceNumber++,T/a,Qi({},e,{samples:d}));e.samples=[];const R=T/n,k=m/n,_={data1:A,data2:y,startPTS:R,endPTS:k,startDTS:R,endDTS:k,type:"audio",hasAudio:!0,hasVideo:!1,nb:L};return this.isAudioContiguous=!0,_}remuxEmptyAudio(e,t,i,r){const s=e.inputTimeScale,n=s/(e.samplerate?e.samplerate:s),a=this.nextAudioPts,o=this._initDTS,l=9e4*o.baseTime/o.timescale,h=(null!==a?a:r.startDTS*s)+l,c=r.endDTS*s+l,d=1024*n,u=Math.ceil((c-h)/d),f=jo.getSilentFrame(e.manifestCodec||e.codec,e.channelCount);if(lr.warn("[mp4-remuxer]: remux empty Audio"),!f)return void lr.trace("[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec");const g=[];for(let e=0;e4294967296;)e+=i;return e}function il(e,t,i,r){const s=e.samples.length;if(!s)return;const n=e.inputTimeScale;for(let a=0;ae.pts-t.pts));const n=e.samples;return e.samples=[],{samples:n}}class sl{constructor(e,t,i,r){this.size=void 0,this.duration=void 0,this.cts=void 0,this.flags=void 0,this.duration=t,this.size=i,this.cts=r,this.flags={isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:e?2:1,isNonSync:e?0:1}}}function nl(e,t){const i=null==e?void 0:e.codec;if(i&&i.length>4)return i;if(t===mr){if("ec-3"===i||"ac-3"===i||"alac"===i)return i;if("fLaC"===i||"Opus"===i){return Vs(i,!1)}const e="mp4a.40.5";return lr.info(`Parsed audio codec "${i}" or audio object type not handled. Using "${e}"`),e}return lr.warn(`Unhandled video codec "${i}"`),"hvc1"===i||"hev1"===i?"hvc1.1.6.L120.90":"av01"===i?"av01.0.04M.08":"avc1.42e01e"}try{Qo=self.performance.now.bind(self.performance)}catch(e){lr.debug("Unable to use Performance API on this environment"),Qo=null==Ar?void 0:Ar.Date.now}const al=[{demux: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,i,r){const s=this.videoTrack=oo("video",1),n=this.audioTrack=oo("audio",1),a=this.txtTrack=oo("text",1);if(this.id3Track=oo("id3",1),this.timeOffset=0,null==e||!e.byteLength)return;const o=fs(e);if(o.video){const{id:e,timescale:t,codec:i}=o.video;s.id=e,s.timescale=a.timescale=t,s.codec=i}if(o.audio){const{id:e,timescale:t,codec:i}=o.audio;n.id=e,n.timescale=t,n.codec=i}a.id=ss.text,s.sampleDuration=0,s.duration=n.duration=r}resetContiguity(){this.remainderData=null}static probe(e){return function(e){const t=e.byteLength;for(let i=0;i8&&109===e[i+4]&&111===e[i+5]&&111===e[i+6]&&102===e[i+7])return!0;i=r>1?i+r:t}return!1}(e)}demux(e,t){this.timeOffset=t;let i=e;const r=this.videoTrack,s=this.txtTrack;if(this.config.progressive){this.remainderData&&(i=Es(this.remainderData,e));const t=function(e){const t={valid:null,remainder:null},i=ds(e,["moof"]);if(i.length<2)return t.remainder=e,t;const r=i[i.length-1];return t.valid=Nr(e,0,r.byteOffset-8),t.remainder=Nr(e,r.byteOffset-8),t}(i);this.remainderData=t.remainder,r.samples=t.valid||new Uint8Array}else r.samples=i;const n=this.extractID3Track(r,t);return s.samples=Ss(t,r),{videoTrack:r,audioTrack:this.audioTrack,id3Track:n,textTrack:this.txtTrack}}flush(){const e=this.timeOffset,t=this.videoTrack,i=this.txtTrack;t.samples=this.remainderData||new Uint8Array,this.remainderData=null;const r=this.extractID3Track(t,this.timeOffset);return i.samples=Ss(e,t),{videoTrack:t,audioTrack:oo(),id3Track:r,textTrack:oo()}}extractID3Track(e,t){const i=this.id3Track;if(e.samples.length){const r=ds(e.samples,["emsg"]);r&&r.forEach((e=>{const r=function(e){const t=e[0];let i="",r="",s=0,n=0,a=0,o=0,l=0,h=0;if(0===t){for(;"\0"!==ns(e.subarray(h,h+1));)i+=ns(e.subarray(h,h+1)),h+=1;for(i+=ns(e.subarray(h,h+1)),h+=1;"\0"!==ns(e.subarray(h,h+1));)r+=ns(e.subarray(h,h+1)),h+=1;r+=ns(e.subarray(h,h+1)),h+=1,s=os(e,12),n=os(e,16),o=os(e,20),l=os(e,24),h=28}else if(1===t){h+=4,s=os(e,h),h+=4;const t=os(e,h);h+=4;const n=os(e,h);for(h+=4,a=2**32*t+n,Zi(a)||(a=Number.MAX_SAFE_INTEGER,lr.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")),o=os(e,h),h+=4,l=os(e,h),h+=4;"\0"!==ns(e.subarray(h,h+1));)i+=ns(e.subarray(h,h+1)),h+=1;for(i+=ns(e.subarray(h,h+1)),h+=1;"\0"!==ns(e.subarray(h,h+1));)r+=ns(e.subarray(h,h+1)),h+=1;r+=ns(e.subarray(h,h+1)),h+=1}return{schemeIdUri:i,value:r,timeScale:s,presentationTime:a,presentationTimeDelta:n,eventDuration:o,id:l,payload:e.subarray(h,e.byteLength)}}(e);if(Do.test(r.schemeIdUri)){const e=Ji(r.presentationTime)?r.presentationTime/r.timeScale:t+r.presentationTimeDelta/r.timeScale;let s=4294967295===r.eventDuration?Number.POSITIVE_INFINITY:r.eventDuration/r.timeScale;s<=.001&&(s=Number.POSITIVE_INFINITY);const n=r.payload;i.samples.push({data:n,len:n.byteLength,dts:e,pts:e,type:bn,duration:s})}}))}return i}demuxSampleAes(e,t,i){return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))}destroy(){}},remux: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,i,r){this.audioCodec=t,this.videoCodec=i,this.generateInitSegment(function(e,t){if(!e||!t)return e;const i=t.keyId;i&&t.isCommonEncryption&&ds(e,["moov","trak"]).forEach((e=>{const t=ds(e,["mdia","minf","stbl","stsd"])[0].subarray(8);let r=ds(t,["enca"]);const s=r.length>0;s||(r=ds(t,["encv"])),r.forEach((e=>{ds(s?e.subarray(28):e.subarray(78),["sinf"]).forEach((e=>{const t=ys(e);if(t){const e=t.subarray(8,24);e.some((e=>0!==e))||(lr.log(`[eme] Patching keyId in 'enc${s?"a":"v"}>sinf>>tenc' box: ${ts(e)} -> ${ts(i)}`),t.set(i,8))}}))}))}));return e}(e,r)),this.emitInitSegment=!0}generateInitSegment(e){let{audioCodec:t,videoCodec:i}=this;if(null==e||!e.byteLength)return this.initTracks=void 0,void(this.initData=void 0);const r=this.initData=fs(e);r.audio&&(t=nl(r.audio,mr)),r.video&&(i=nl(r.video,pr));const s={};r.audio&&r.video?s.audiovideo={container:"video/mp4",codec:t+","+i,initSegment:e,id:"main"}:r.audio?s.audio={container:"audio/mp4",codec:t,initSegment:e,id:"audio"}:r.video?s.video={container:"video/mp4",codec:i,initSegment:e,id:"main"}:lr.warn("[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes."),this.initTracks=s}remux(e,t,i,r,s,n){var a,o;let{initPTS:l,lastEndTime:h}=this;const c={audio:void 0,video:void 0,text:r,id3:i,initSegment:void 0};Ji(h)||(h=this.lastEndTime=s||0);const d=t.samples;if(null==d||!d.length)return c;const u={initPTS:void 0,timescale:1};let f=this.initData;if(null!=(a=f)&&a.length||(this.generateInitSegment(d),f=this.initData),null==(o=f)||!o.length)return lr.warn("[passthrough-remuxer.ts]: Failed to generate initSegment."),c;this.emitInitSegment&&(u.tracks=this.initTracks,this.emitInitSegment=!1);const g=function(e,t){let i=0,r=0,s=0;const n=ds(e,["moof","traf"]);for(let e=0;ee+t.info.duration||0),0);i=Math.max(i,e+n.earliestPresentationTime/n.timescale),r=i-t}}if(r&&Ji(r))return r}return r||s}(d,f),m=function(e,t){return ds(t,["moof","traf"]).reduce(((t,i)=>{const r=ds(i,["tfdt"])[0],s=r[0],n=ds(i,["tfhd"]).reduce(((t,i)=>{const n=os(i,4),a=e[n];if(a){let e=os(r,4);if(1===s){if(e===is)return lr.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time"),t;e*=is+1,e+=os(r,8)}const i=e/(a.timescale||9e4);if(Ji(i)&&(null===t||is}(l,p,s,g)||u.timescale!==l.timescale&&n)&&(u.initPTS=p-s,l&&1===l.timescale&&lr.warn("Adjusting initPTS by "+(u.initPTS-l.baseTime)),this.initPTS=l={baseTime:u.initPTS,timescale:1});const v=e?p-l.baseTime/l.timescale:h,y=v+g;!function(e,t,i){ds(t,["moof","traf"]).forEach((t=>{ds(t,["tfhd"]).forEach((r=>{const s=os(r,4),n=e[s];if(!n)return;const a=n.timescale||9e4;ds(t,["tfdt"]).forEach((e=>{const t=e[0],r=i*a;if(r){let i=os(e,4);if(0===t)i-=r,i=Math.max(i,0),cs(e,4,i);else{i*=Math.pow(2,32),i+=os(e,8),i-=r,i=Math.max(i,0);const t=Math.floor(i/(is+1)),s=Math.floor(i%(is+1));cs(e,4,t),cs(e,8,s)}}}))}))}))}(f,d,l.baseTime/l.timescale),g>0?this.lastEndTime=y:(lr.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());const T=!!f.audio,E=!!f.video;let S="";T&&(S+="audio"),E&&(S+="video");const b={data1:d,startPTS:v,startDTS:v,endPTS:y,endDTS:y,type:S,hasAudio:T,hasVideo:E,nb:1,dropped:0};return c.audio="audio"===b.type?b:void 0,c.video="audio"!==b.type?b:void 0,c.initSegment=u,c.id3=il(i,s,l,l),r.samples.length&&(c.text=rl(r,s,l)),c}}},{demux:Uo,remux:el},{demux:class extends lo{constructor(e,t){super(),this.observer=void 0,this.config=void 0,this.observer=e,this.config=t}resetInitSegment(e,t,i,r){super.resetInitSegment(e,t,i,r),this._audioTrack={container:"audio/adts",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"aac",samples:[],manifestCodec:t,duration:r,inputTimeScale:9e4,dropped:0}}static probe(e){if(!e)return!1;const t=$r(e,0);let i=(null==t?void 0:t.length)||0;if(_o(e,i))return!1;for(let t=e.length;i0&&null!=(null==t?void 0:t.key)&&null!==t.iv&&null!=t.method&&(i=t);return i}(n,t);if(T&&"AES-128"===T.method){const e=this.getDecrypter();if(!e.isSync())return this.decryptionPromise=e.webCryptoDecrypt(n,T.key.buffer,T.iv.buffer).then((e=>{const t=this.push(e,null,i);return this.decryptionPromise=null,t})),this.decryptionPromise;{let t=e.softwareDecrypt(n,T.key.buffer,T.iv.buffer);if(i.part>-1&&(t=e.flush()),!t)return s.executeEnd=Qo(),ll(i);n=new Uint8Array(t)}}const E=this.needsProbing(h,c);if(E){const e=this.configureTransmuxer(n);if(e)return lr.warn(`[transmuxer] ${e.message}`),this.observer.emit(tr.ERROR,tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.FRAG_PARSING_ERROR,fatal:!1,error:e,reason:e.message}),s.executeEnd=Qo(),ll(i)}(h||c||f||E)&&this.resetInitSegment(y,g,m,v,t),(h||f||E)&&this.resetInitialTimestamp(p),l||this.resetContiguity();const S=this.transmux(n,T,u,d,i),b=this.currentTransmuxState;return b.contiguous=!0,b.discontinuity=!1,b.trackSwitch=!1,s.executeEnd=Qo(),S}flush(e){const t=e.transmuxing;t.executeStart=Qo();const{decrypter:i,currentTransmuxState:r,decryptionPromise:s}=this;if(s)return s.then((()=>this.flush(e)));const n=[],{timeOffset:a}=r;if(i){const t=i.flush();t&&n.push(this.push(t,null,e))}const{demuxer:o,remuxer:l}=this;if(!o||!l)return t.executeEnd=Qo(),[ll(e)];const h=o.flush(a);return hl(h)?h.then((t=>(this.flushRemux(n,t,e),n))):(this.flushRemux(n,h,e),n)}flushRemux(e,t,i){const{audioTrack:r,videoTrack:s,id3Track:n,textTrack:a}=t,{accurateTimeOffset:o,timeOffset:l}=this.currentTransmuxState;lr.log(`[transmuxer.ts]: Flushed fragment ${i.sn}${i.part>-1?" p: "+i.part:""} of level ${i.level}`);const h=this.remuxer.remux(r,s,n,a,l,o,!0,this.id);e.push({remuxResult:h,chunkMeta:i}),i.transmuxing.executeEnd=Qo()}resetInitialTimestamp(e){const{demuxer:t,remuxer:i}=this;t&&i&&(t.resetTimeStamp(e),i.resetTimeStamp(e))}resetContiguity(){const{demuxer:e,remuxer:t}=this;e&&t&&(e.resetContiguity(),t.resetNextTimestamp())}resetInitSegment(e,t,i,r,s){const{demuxer:n,remuxer:a}=this;n&&a&&(n.resetInitSegment(e,t,i,r),a.resetInitSegment(e,t,i,s))}destroy(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)}transmux(e,t,i,r,s){let n;return n=t&&"SAMPLE-AES"===t.method?this.transmuxSampleAes(e,t,i,r,s):this.transmuxUnencrypted(e,i,r,s),n}transmuxUnencrypted(e,t,i,r){const{audioTrack:s,videoTrack:n,id3Track:a,textTrack:o}=this.demuxer.demux(e,t,!1,!this.config.progressive);return{remuxResult:this.remuxer.remux(s,n,a,o,t,i,!1,this.id),chunkMeta:r}}transmuxSampleAes(e,t,i,r,s){return this.demuxer.demuxSampleAes(e,t,i).then((e=>({remuxResult:this.remuxer.remux(e.audioTrack,e.videoTrack,e.id3Track,e.textTrack,i,r,!1,this.id),chunkMeta:s})))}configureTransmuxer(e){const{config:t,observer:i,typeSupported:r,vendor:s}=this;let n;for(let t=0,i=al.length;t({remuxResult:{},chunkMeta:e});function hl(e){return"then"in e&&e.then instanceof Function}class cl{constructor(e,t,i,r,s){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=i,this.duration=r,this.defaultInitPts=s||null}}class dl{constructor(e,t,i,r,s,n){this.discontinuity=void 0,this.contiguous=void 0,this.accurateTimeOffset=void 0,this.trackSwitch=void 0,this.timeOffset=void 0,this.initSegmentChange=void 0,this.discontinuity=e,this.contiguous=t,this.accurateTimeOffset=i,this.trackSwitch=r,this.timeOffset=s,this.initSegmentChange=n}}var ul={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,i="~";function r(){}function s(e,t,i){this.fn=e,this.context=t,this.once=i||!1}function n(e,t,r,n,a){if("function"!=typeof r)throw new TypeError("The listener must be a function");var o=new s(r,n||e,a),l=i?i+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function a(e,t){0==--e._eventsCount?e._events=new r:delete e._events[t]}function o(){this._events=new r,this._eventsCount=0}Object.create&&(r.prototype=Object.create(null),(new r).__proto__||(i=!1)),o.prototype.eventNames=function(){var e,r,s=[];if(0===this._eventsCount)return s;for(r in e=this._events)t.call(e,r)&&s.push(i?r.slice(1):r);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},o.prototype.listeners=function(e){var t=i?i+e:e,r=this._events[t];if(!r)return[];if(r.fn)return[r.fn];for(var s=0,n=r.length,a=new Array(n);s{(t=t||{}).frag=this.frag,t.id=this.id,e===tr.ERROR&&(this.error=t.error),this.hls.trigger(e,t)};this.observer=new fl,this.observer.on(tr.FRAG_DECRYPTED,n),this.observer.on(tr.ERROR,n);const a=Os(s.preferManagedMediaSource)||{isTypeSupported:()=>!1},o={mpeg:a.isTypeSupported("audio/mpeg"),mp3:a.isTypeSupported('audio/mp4; codecs="mp3"'),ac3:a.isTypeSupported('audio/mp4; codecs="ac-3"')};if(this.useWorker&&"undefined"!=typeof Worker){if(s.workerPath||"function"==typeof __HLS_WORKER_BUNDLE__){try{s.workerPath?(lr.log(`loading Web Worker ${s.workerPath} for "${t}"`),this.workerContext=function(e){const t=new self.URL(e,self.location.href).href;return{worker:new self.Worker(t),scriptURL:t}}(s.workerPath)):(lr.log(`injecting Web Worker for "${t}"`),this.workerContext=function(){const e=new self.Blob([`var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(${__HLS_WORKER_BUNDLE__.toString()})(true);`],{type:"text/javascript"}),t=self.URL.createObjectURL(e);return{worker:new self.Worker(t),objectURL:t}}()),this.onwmsg=e=>this.onWorkerMessage(e);const{worker:e}=this.workerContext;e.addEventListener("message",this.onwmsg),e.onerror=e=>{const i=new Error(`${e.message} (${e.filename}:${e.lineno})`);s.enableWorker=!1,lr.warn(`Error in "${t}" Web Worker, fallback to inline`),this.hls.trigger(tr.ERROR,{type:ir.OTHER_ERROR,details:rr.INTERNAL_EXCEPTION,fatal:!1,event:"demuxerWorker",error:i})},e.postMessage({cmd:"init",typeSupported:o,vendor:"",id:t,config:JSON.stringify(s)})}catch(e){lr.warn(`Error setting up "${t}" Web Worker, fallback to inline`,e),this.resetWorker(),this.error=null,this.transmuxer=new ol(this.observer,o,s,"",t)}return}}this.transmuxer=new ol(this.observer,o,s,"",t)}resetWorker(){if(this.workerContext){const{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{const e=this.transmuxer;e&&(e.destroy(),this.transmuxer=null)}const e=this.observer;e&&e.removeAllListeners(),this.frag=null,this.observer=null,this.hls=null}push(e,t,i,r,s,n,a,o,l,h){var c,d;l.transmuxing.start=self.performance.now();const{transmuxer:u}=this,f=n?n.start:s.start,g=s.decryptdata,m=this.frag,p=!(m&&s.cc===m.cc),v=!(m&&l.level===m.level),y=m?l.sn-m.sn:-1,T=this.part?l.part-this.part.index:-1,E=0===y&&l.id>1&&l.id===(null==m?void 0:m.stats.chunkCount),S=!v&&(1===y||0===y&&(1===T||E&&T<=0)),b=self.performance.now();(v||y||0===s.stats.parsing.start)&&(s.stats.parsing.start=b),!n||!T&&S||(n.stats.parsing.start=b);const L=!(m&&(null==(c=s.initSegment)?void 0:c.url)===(null==(d=m.initSegment)?void 0:d.url)),w=new dl(p,S,o,v,f,L);if(!S||p||L){lr.log(`[transmuxer-interface, ${s.type}]: Starting new transmux session for sn: ${l.sn} p: ${l.part} level: ${l.level} id: ${l.id}\n discontinuity: ${p}\n trackSwitch: ${v}\n contiguous: ${S}\n accurateTimeOffset: ${o}\n timeOffset: ${f}\n initSegmentChange: ${L}`);const e=new cl(i,r,t,a,h);this.configureTransmuxer(e)}if(this.frag=s,this.part=n,this.workerContext)this.workerContext.worker.postMessage({cmd:"demux",data:e,decryptdata:g,chunkMeta:l,state:w},e instanceof ArrayBuffer?[e]:[]);else if(u){const t=u.push(e,g,l,w);hl(t)?(u.async=!0,t.then((e=>{this.handleTransmuxComplete(e)})).catch((e=>{this.transmuxerError(e,l,"transmuxer-interface push error")}))):(u.async=!1,this.handleTransmuxComplete(t))}}flush(e){e.transmuxing.start=self.performance.now();const{transmuxer:t}=this;if(this.workerContext)this.workerContext.worker.postMessage({cmd:"flush",chunkMeta:e});else if(t){let i=t.flush(e);hl(i)||t.async?(hl(i)||(i=Promise.resolve(i)),i.then((t=>{this.handleFlushResult(t,e)})).catch((t=>{this.transmuxerError(t,e,"transmuxer-interface flush error")}))):this.handleFlushResult(i,e)}}transmuxerError(e,t,i){this.hls&&(this.error=e,this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.FRAG_PARSING_ERROR,chunkMeta:t,frag:this.frag||void 0,fatal:!1,error:e,err:e,reason:i}))}handleFlushResult(e,t){e.forEach((e=>{this.handleTransmuxComplete(e)})),this.onFlush(t)}onWorkerMessage(e){const t=e.data;if(null==t||!t.event)return void lr.warn("worker message received with no "+(t?"event name":"data"));const i=this.hls;if(this.hls)switch(t.event){case"init":{var r;const e=null==(r=this.workerContext)?void 0:r.objectURL;e&&self.URL.revokeObjectURL(e);break}case"transmuxComplete":this.handleTransmuxComplete(t.data);break;case"flush":this.onFlush(t.data);break;case"workerLog":lr[t.data.logType]&&lr[t.data.logType](t.data.message);break;default:t.data=t.data||{},t.data.frag=this.frag,t.data.id=this.id,i.trigger(t.event,t.data)}}configureTransmuxer(e){const{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 ml(e,t){if(e.length!==t.length)return!1;for(let i=0;ie[i]!==t[i]))}function vl(e,t){return t.label.toLowerCase()===e.name.toLowerCase()&&(!t.language||t.language.toLowerCase()===(e.lang||"").toLowerCase())}class yl{constructor(e){this.buffered=void 0;const t=(t,i,r)=>{if((i>>>=0)>r-1)throw new DOMException(`Failed to execute '${t}' on 'TimeRanges': The index provided (${i}) is greater than the maximum bound (${r})`);return e[i][t]};this.buffered={get length(){return e.length},end:i=>t("end",i,e.length),start:i=>t("start",i,e.length)}}}class Tl{constructor(e){this.buffers=void 0,this.queues={video:[],audio:[],audiovideo:[]},this.buffers=e}append(e,t,i){const r=this.queues[t];r.push(e),1!==r.length||i||this.executeNext(t)}insertAbort(e,t){this.queues[t].unshift(e),this.executeNext(t)}appendBlocker(e){let t;const i=new Promise((e=>{t=e})),r={execute:t,onStart:()=>{},onComplete:()=>{},onError:()=>{}};return this.append(r,e),i}executeNext(e){const t=this.queues[e];if(t.length){const i=t[0];try{i.execute()}catch(t){lr.warn(`[buffer-operation-queue]: Exception executing "${e}" SourceBuffer operation: ${t}`),i.onError(t);const r=this.buffers[e];null!=r&&r.updating||this.shiftAndExecuteNext(e)}}}shiftAndExecuteNext(e){this.queues[e].shift(),this.executeNext(e)}current(e){return this.queues[e][0]}}const El=/(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/;function Sl(e){const t=e.querySelectorAll("source");[].slice.call(t).forEach((t=>{e.removeChild(t)}))} +/** + * + * This code was ported from the dash.js project at: + * https://github.com/Dash-Industry-Forum/dash.js/blob/development/externals/cea608-parser.js + * https://github.com/Dash-Industry-Forum/dash.js/commit/8269b26a761e0853bb21d78780ed945144ecdd4d#diff-71bc295a2d6b6b7093a1d3290d53a4b2 + * + * The original copyright appears below: + * + * The copyright in this software is being made available under the BSD License, + * included below. This software may be subject to other third party and contributor + * rights, including patent rights, and no such rights are granted under this license. + * + * Copyright (c) 2015-2016, DASH Industry Forum. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * 2. Neither the name of Dash Industry Forum nor the names of its + * contributors may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +const bl={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},Ll=e=>String.fromCharCode(bl[e]||e),wl=15,Al=100,Rl={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},kl={17:2,18:4,21:6,22:8,23:10,19:13,20:15},_l={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},Dl={25:2,26:4,29:6,30:8,31:10,27:13,28:15},xl=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];class Cl{constructor(){this.time=null,this.verboseLevel=0}log(e,t){if(this.verboseLevel>=e){const i="function"==typeof t?t():t;lr.log(`${this.time} [${e}] ${i}`)}}}const Il=function(e){const t=[];for(let i=0;iAl&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=Al)}moveCursor(e){const t=this.pos+e;if(e>1)for(let e=this.pos+1;e=144&&this.backSpace();const t=Ll(e);this.pos>=Al?this.logger.log(0,(()=>"Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!")):(this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1))}clearFromPos(e){let t;for(t=e;t"pacData = "+JSON.stringify(e)));let t=e.row-1;if(this.nrRollUpRows&&t"bkgData = "+JSON.stringify(e))),this.backSpace(),this.setPen(e),this.insertChar(32)}setRollUpRows(e){this.nrRollUpRows=e}rollUp(){if(null===this.nrRollUpRows)return void this.logger.log(3,"roll_up but nrRollUpRows not set yet");this.logger.log(1,(()=>this.getDisplayText()));const e=this.currRow+1-this.nrRollUpRows,t=this.rows.splice(e,1)[0];t.clear(),this.rows.splice(this.currRow,0,t),this.logger.log(2,"Rolling up")}getDisplayText(e){e=e||!1;const t=[];let i="",r=-1;for(let i=0;i0&&(i=e?"["+t.join(" | ")+"]":t.join("\n")),i}getTextAndFormat(){return this.rows}}class Nl{constructor(e,t,i){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 Fl(i),this.nonDisplayedMemory=new Fl(i),this.lastOutputScreen=new Fl(i),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=i}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],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)),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)}insertChars(e){for(let t=0;tt+": "+this.writeScreen.getDisplayText(!0))),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(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"),"MODE_TEXT"!==this.mode&&(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"),"MODE_POP-ON"===this.mode){const e=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=e,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,(()=>"DISP: "+this.displayedMemory.getDisplayText()))}this.outputDataUpdate(!0)}ccTO(e){this.logger.log(2,"TO("+e+") - Tab Offset"),this.writeScreen.moveCursor(e)}ccMIDROW(e){const t={flash:!1};if(t.underline=e%2==1,t.italics=e>=46,t.italics)t.foreground="white";else{const i=Math.floor(e/2)-16,r=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=r[i]}this.logger.log(2,"MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)}outputDataUpdate(e=!1){const t=this.logger.time;null!==t&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?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.cueStartTime=t,this.lastOutputScreen.copy(this.displayedMemory))}cueSplitAtTime(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))}}class Ul{constructor(e,t,i){this.channels=void 0,this.currentChannel=0,this.cmdHistory={a:null,b:null},this.logger=void 0;const r=this.logger=new Cl;this.channels=[null,new Nl(e,t,r),new Nl(e+1,i,r)]}getHandler(e){return this.channels[e].getHandler()}setHandler(e,t){this.channels[e].setHandler(t)}addData(e,t){this.logger.time=e;for(let e=0;e"["+Il([t[e],t[e+1]])+"] -> ("+Il([i,r])+")"));const a=this.cmdHistory;if(i>=16&&i<=31){if($l(i,r,a)){Bl(null,null,a),this.logger.log(3,(()=>"Repeated command ("+Il([i,r])+") is dropped"));continue}Bl(i,r,this.cmdHistory),s=this.parseCmd(i,r),s||(s=this.parseMidrow(i,r)),s||(s=this.parsePAC(i,r)),s||(s=this.parseBackgroundAttributes(i,r))}else Bl(null,null,a);if(!s&&(n=this.parseChars(i,r),n)){const e=this.currentChannel;if(e&&e>0){this.channels[e].insertChars(n)}else this.logger.log(2,"No channel found yet. TEXT-MODE?")}s||n||this.logger.log(2,(()=>"Couldn't parse cleaned data "+Il([i,r])+" orig: "+Il([t[e],t[e+1]])))}}parseCmd(e,t){if(!((20===e||28===e||21===e||29===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=33&&t<=35))return!1;const i=20===e||21===e||23===e?1:2,r=this.channels[i];return 20===e||21===e||28===e||29===e?32===t?r.ccRCL():33===t?r.ccBS():34===t?r.ccAOF():35===t?r.ccAON():36===t?r.ccDER():37===t?r.ccRU(2):38===t?r.ccRU(3):39===t?r.ccRU(4):40===t?r.ccFON():41===t?r.ccRDC():42===t?r.ccTR():43===t?r.ccRTD():44===t?r.ccEDM():45===t?r.ccCR():46===t?r.ccENM():47===t&&r.ccEOC():r.ccTO(t-32),this.currentChannel=i,!0}parseMidrow(e,t){let i=0;if((17===e||25===e)&&t>=32&&t<=47){if(i=17===e?1:2,i!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;const r=this.channels[i];return!!r&&(r.ccMIDROW(t),this.logger.log(3,(()=>"MIDROW ("+Il([e,t])+")")),!0)}return!1}parsePAC(e,t){let i;if(!((e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127)&&!((16===e||24===e)&&t>=64&&t<=95))return!1;const r=e<=23?1:2;i=t>=64&&t<=95?1===r?Rl[e]:_l[e]:1===r?kl[e]:Dl[e];const s=this.channels[r];return!!s&&(s.setPAC(this.interpretPAC(i,t)),this.currentChannel=r,!0)}interpretPAC(e,t){let i;const r={color:null,italics:!1,indent:null,underline:!1,row:e};return i=t>95?t-96:t-64,r.underline=!(1&~i),i<=13?r.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(i/2)]:i<=15?(r.italics=!0,r.color="white"):r.indent=4*Math.floor((i-16)/2),r}parseChars(e,t){let i,r=null,s=null;if(e>=25?(i=2,s=e-8):(i=1,s=e),s>=17&&s<=19){let e;e=17===s?t+80:18===s?t+112:t+144,this.logger.log(2,(()=>"Special char '"+Ll(e)+"' in channel "+i)),r=[e]}else e>=32&&e<=127&&(r=0===t?[e]:[e,t]);return r&&this.logger.log(3,(()=>"Char codes = "+Il(r).join(","))),r}parseBackgroundAttributes(e,t){if(!((16===e||24===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=45&&t<=47))return!1;let i;const r={};16===e||24===e?(i=Math.floor((t-32)/2),r.background=xl[i],t%2==1&&(r.background=r.background+"_semi")):45===t?r.background="transparent":(r.foreground="black",47===t&&(r.underline=!0));const s=e<=23?1:2;return this.channels[s].setBkgData(r),!0}reset(){for(let e=0;ee)&&(this.startTime=e),this.endTime=t,this.screen=i,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}var Kl=function(){if(null!=Ar&&Ar.VTTCue)return self.VTTCue;const e=["","lr","rl"],t=["start","middle","end","left","right"];function i(e,t){if("string"!=typeof t)return!1;if(!Array.isArray(e))return!1;const i=t.toLowerCase();return!!~e.indexOf(i)&&i}function r(e){return i(t,e)}function s(e,...t){let i=1;for(;i100)throw new Error("Position must be between 0 and 100.");T=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"positionAlign",s({},l,{get:function(){return E},set:function(e){const t=r(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");E=t,this.hasBeenReset=!0}})),Object.defineProperty(o,"size",s({},l,{get:function(){return S},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");S=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"align",s({},l,{get:function(){return b},set:function(e){const t=r(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");b=t,this.hasBeenReset=!0}})),o.displayState=void 0}return n.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},n}();class Vl{decode(e,t){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))}}function Hl(e){function t(e,t,i,r){return 3600*(0|e)+60*(0|t)+(0|i)+parseFloat(r||0)}const i=e.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return i?parseFloat(i[2])>59?t(i[2],i[3],0,i[4]):t(i[1],i[2],i[3],i[4]):null}class jl{constructor(){this.values=Object.create(null)}set(e,t){this.get(e)||""===t||(this.values[e]=t)}get(e,t,i){return i?this.has(e)?this.values[e]:t[i]:this.has(e)?this.values[e]:t}has(e){return e in this.values}alt(e,t,i){for(let r=0;r=0&&i<=100)return this.set(e,i),!0}return!1}}function Wl(e,t,i,r){const s=r?e.split(r):[e];for(const e in s){if("string"!=typeof s[e])continue;const r=s[e].split(i);if(2!==r.length)continue;t(r[0],r[1])}}const Yl=new Kl(0,0,""),ql="middle"===Yl.align?"middle":"center";function zl(e,t,i){const r=e;function s(){const t=Hl(e);if(null===t)throw new Error("Malformed timestamp: "+r);return e=e.replace(/^[^\sa-zA-Z-]+/,""),t}function n(){e=e.replace(/^\s+/,"")}if(n(),t.startTime=s(),n(),"--\x3e"!==e.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+r);e=e.slice(3),n(),t.endTime=s(),n(),function(e,t){const r=new jl;Wl(e,(function(e,t){let s;switch(e){case"region":for(let s=i.length-1;s>=0;s--)if(i[s].id===t){r.set(e,i[s].region);break}break;case"vertical":r.alt(e,t,["rl","lr"]);break;case"line":s=t.split(","),r.integer(e,s[0]),r.percent(e,s[0])&&r.set("snapToLines",!1),r.alt(e,s[0],["auto"]),2===s.length&&r.alt("lineAlign",s[1],["start",ql,"end"]);break;case"position":s=t.split(","),r.percent(e,s[0]),2===s.length&&r.alt("positionAlign",s[1],["start",ql,"end","line-left","line-right","auto"]);break;case"size":r.percent(e,t);break;case"align":r.alt(e,t,["start",ql,"end","left","right"])}}),/:/,/\s/),t.region=r.get("region",null),t.vertical=r.get("vertical","");let s=r.get("line","auto");"auto"===s&&-1===Yl.line&&(s=-1),t.line=s,t.lineAlign=r.get("lineAlign","start"),t.snapToLines=r.get("snapToLines",!0),t.size=r.get("size",100),t.align=r.get("align",ql);let n=r.get("position","auto");"auto"===n&&50===Yl.position&&(n="start"===t.align||"left"===t.align?0:"end"===t.align||"right"===t.align?100:50),t.position=n}(e,t)}function Xl(e){return e.replace(//gi,"\n")}class Ql{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new Vl,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(e){const t=this;function i(){let e=t.buffer,i=0;for(e=Xl(e);i>>0).toString()};function th(e,t,i){return eh(e.toString())+eh(t.toString())+eh(i)}function ih(e,t,i,r,s,n,a){const o=new Ql,l=Jr(new Uint8Array(e)).trim().replace(Jl,"\n").split("\n"),h=[],c=t?function(e,t=1){return zo(e,qo,1/t)}(t.baseTime,t.timescale):0;let d,u="00:00.000",f=0,g=0,m=!0;o.oncue=function(e){const n=i[r];let a=i.ccOffset;const o=(f-c)/9e4;if(null!=n&&n.new&&(void 0!==g?a=i.ccOffset=n.start:function(e,t,i){let r=e[t],s=e[r.prevCC];if(!s||!s.new&&r.new)return e.ccOffset=e.presentationOffset=r.start,void(r.new=!1);for(;null!=(n=s)&&n.new;){var n;e.ccOffset+=r.start-s.start,r.new=!1,r=s,s=e[r.prevCC]}e.presentationOffset=i}(i,r,o)),o){if(!t)return void(d=new Error("Missing initPTS for VTT MPEGTS"));a=o-i.presentationOffset}const l=e.endTime-e.startTime,u=tl(9e4*(e.startTime+a-g),9e4*s)/9e4;e.startTime=Math.max(u,0),e.endTime=Math.max(u+l,0);const m=e.text.trim();e.text=decodeURIComponent(encodeURIComponent(m)),e.id||(e.id=th(e.startTime,e.endTime,m)),e.endTime>0&&h.push(e)},o.onparsingerror=function(e){d=e},o.onflush=function(){d?a(d):n(h)},l.forEach((e=>{if(m){if(Zl(e,"X-TIMESTAMP-MAP=")){m=!1,e.slice(16).split(",").forEach((e=>{Zl(e,"LOCAL:")?u=e.slice(6):Zl(e,"MPEGTS:")&&(f=parseInt(e.slice(7)))}));try{g=function(e){let t=parseInt(e.slice(-3));const i=parseInt(e.slice(-6,-4)),r=parseInt(e.slice(-9,-7)),s=e.length>9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!(Ji(t)&&Ji(i)&&Ji(r)&&Ji(s)))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${e}`);return t+=1e3*i,t+=6e4*r,t+=36e5*s,t}(u)/1e3}catch(e){d=e}return}""===e&&(m=!1)}o.parse(e+"\n")})),o.flush()}const rh="stpp.ttml.im1t",sh=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,nh=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,ah={left:"start",center:"center",right:"end",start:"start",end:"end"};function oh(e,t,i,r){const s=ds(new Uint8Array(e),["mdat"]);if(0===s.length)return void r(new Error("Could not parse IMSC1 mdat"));const n=s.map((e=>Jr(e))),a=function(e,t,i=1,r=!1){return zo(e,t,1/i,r)}(t.baseTime,1,t.timescale);try{n.forEach((e=>i(function(e,t){const i=(new DOMParser).parseFromString(e,"text/xml"),r=i.getElementsByTagName("tt")[0];if(!r)throw new Error("Invalid ttml");const s={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},n=Object.keys(s).reduce(((e,t)=>(e[t]=r.getAttribute(`ttp:${t}`)||s[t],e)),{}),a="preserve"!==r.getAttribute("xml:space"),o=hh(lh(r,"styling","style")),l=hh(lh(r,"layout","region")),h=lh(r,"body","[begin]");return[].map.call(h,(e=>{const i=ch(e,a);if(!i||!e.hasAttribute("begin"))return null;const r=fh(e.getAttribute("begin"),n),s=fh(e.getAttribute("dur"),n);let h=fh(e.getAttribute("end"),n);if(null===r)throw uh(e);if(null===h){if(null===s)throw uh(e);h=r+s}const c=new Kl(r-t,h-t,i);c.id=th(c.startTime,c.endTime,c.text);const d=function(e,t,i){const r="http://www.w3.org/ns/ttml#styling";let s=null;const n=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],a=null!=e&&e.hasAttribute("style")?e.getAttribute("style"):null;a&&i.hasOwnProperty(a)&&(s=i[a]);return n.reduce(((i,n)=>{const a=dh(t,r,n)||dh(e,r,n)||dh(s,r,n);return a&&(i[n]=a),i}),{})}(l[e.getAttribute("region")],o[e.getAttribute("style")],o),{textAlign:u}=d;if(u){const e=ah[u];e&&(c.lineAlign=e),c.align=u}return Qi(c,d),c})).filter((e=>null!==e))}(e,a))))}catch(e){r(e)}}function lh(e,t,i){const r=e.getElementsByTagName(t)[0];return r?[].slice.call(r.querySelectorAll(i)):[]}function hh(e){return e.reduce(((e,t)=>{const i=t.getAttribute("xml:id");return i&&(e[i]=t),e}),{})}function ch(e,t){return[].slice.call(e.childNodes).reduce(((e,i,r)=>{var s;return"br"===i.nodeName&&r?e+"\n":null!=(s=i.childNodes)&&s.length?ch(i,t):t?e+i.textContent.trim().replace(/\s+/g," "):e+i.textContent}),"")}function dh(e,t,i){return e&&e.hasAttributeNS(t,i)?e.getAttributeNS(t,i):null}function uh(e){return new Error(`Could not parse ttml timestamp ${e}`)}function fh(e,t){if(!e)return null;let i=Hl(e);return null===i&&(sh.test(e)?i=function(e,t){const i=sh.exec(e),r=(0|i[4])+(0|i[5])/t.subFrameRate;return 3600*(0|i[1])+60*(0|i[2])+(0|i[3])+r/t.frameRate}(e,t):nh.test(e)&&(i=function(e,t){const i=nh.exec(e),r=Number(i[1]);switch(i[2]){case"h":return 3600*r;case"m":return 60*r;case"ms":return 1e3*r;case"f":return r/t.frameRate;case"t":return r/t.tickRate}return r}(e,t))),i}function gh(e){return e.characteristics&&/transcribes-spoken-dialog/gi.test(e.characteristics)&&/describes-music-and-sound/gi.test(e.characteristics)?"captions":"subtitles"}function mh(e,t){return!!e&&e.kind===gh(t)&&vl(t,e)}class ph{constructor(e){this.hls=void 0,this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=e,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}setStreamController(e){this.streamController=e}destroy(){this.hls&&this.unregisterListener(),this.timer&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null}registerListeners(){const{hls:e}=this;e.on(tr.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.on(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){const{hls:e}=this;e.off(tr.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(e,t){const i=this.hls.levels[t.droppedLevel];this.isLevelAllowed(i)&&this.restrictedLevels.push({bitrate:i.bitrate,height:i.height,width:i.width})}onMediaAttaching(e,t){this.media=t.media instanceof HTMLVideoElement?t.media:null,this.clientRect=null,this.timer&&this.hls.levels.length&&this.detectPlayerSize()}onManifestParsed(e,t){const i=this.hls;this.restrictedLevels=[],this.firstLevel=t.firstLevel,i.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onLevelsUpdated(e,t){this.timer&&Ji(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)return void(this.clientRect=null);const e=this.hls.levels;if(e.length){const t=this.hls,i=this.getMaxLevel(e.length-1);i!==this.autoLevelCapping&&lr.log(`Setting autoLevelCapping to ${i}: ${e[i].height}p@${e[i].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),t.autoLevelCapping=i,t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}}getMaxLevel(e){const t=this.hls.levels;if(!t.length)return-1;const i=t.filter(((t,i)=>this.isLevelAllowed(t)&&i<=e));return this.clientRect=null,ph.getMaxLevelByMediaSize(i,this.mediaWidth,this.mediaHeight)}startCapping(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())}stopCapping(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)}getDimensions(){if(this.clientRect)return this.clientRect;const e=this.media,t={width:0,height:0};if(e){const i=e.getBoundingClientRect();t.width=i.width,t.height=i.height,t.width||t.height||(t.width=i.right-i.left||e.width||0,t.height=i.bottom-i.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(e){}return e}isLevelAllowed(e){return!this.restrictedLevels.some((t=>e.bitrate===t.bitrate&&e.width===t.width&&e.height===t.height))}static getMaxLevelByMediaSize(e,t,i){if(null==e||!e.length)return-1;let r=e.length-1;const s=Math.max(t,i);for(let t=0;t=s||i.height>=s)&&(n=i,!(a=e[t+1])||n.width!==a.width||n.height!==a.height)){r=t;break}}var n,a;return r}}const vh="[eme]";class yh{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=yh.CDMCleanupPromise?[yh.CDMCleanupPromise]:[],this.onMediaEncrypted=this._onMediaEncrypted.bind(this),this.onWaitingForKey=this._onWaitingForKey.bind(this),this.debug=lr.debug.bind(lr,vh),this.log=lr.log.bind(lr,vh),this.warn=lr.warn.bind(lr,vh),this.error=lr.error.bind(lr,vh),this.hls=e,this.config=e.config,this.registerListeners()}destroy(){this.unregisterListeners(),this.onMediaDetached();const 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(tr.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(tr.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this)}unregisterListeners(){this.hls.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(tr.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this)}getLicenseServerUrl(e){const{drmSystems:t,widevineLicenseUrl:i}=this.config,r=t[e];if(r)return r.licenseUrl;if(e===Rr.WIDEVINE&&i)return i;throw new Error(`no license server URL configured for key-system "${e}"`)}getServerCertificateUrl(e){const{drmSystems:t}=this.config,i=t[e];if(i)return i.serverCertificateUrl;this.log(`No Server Certificate in config.drmSystems["${e}"]`)}attemptKeySystemAccess(e){const t=this.hls.levels,i=(e,t,i)=>!!e&&i.indexOf(e)===t,r=t.map((e=>e.audioCodec)).filter(i),s=t.map((e=>e.videoCodec)).filter(i);return r.length+s.length===0&&s.push("avc1.42e01e"),new Promise(((t,i)=>{const n=e=>{const a=e.shift();this.getMediaKeysPromise(a,r,s).then((e=>t({keySystem:a,mediaKeys:e}))).catch((t=>{e.length?n(e):i(t instanceof Th?t:new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_ACCESS,error:t,fatal:!0},t.message))}))};n(e)}))}requestMediaKeySystemAccess(e,t){const{requestMediaKeySystemAccessFunc:i}=this.config;if("function"!=typeof i){let e=`Configured requestMediaKeySystemAccess is not a function ${i}`;return null===Mr&&"http:"===self.location.protocol&&(e=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`),Promise.reject(new Error(e))}return i(e,t)}getMediaKeysPromise(e,t,i){const r=function(e,t,i,r){let s;switch(e){case Rr.FAIRPLAY:s=["cenc","sinf"];break;case Rr.WIDEVINE:case Rr.PLAYREADY:s=["cenc"];break;case Rr.CLEARKEY:s=["cenc","keyids"];break;default:throw new Error(`Unknown key-system: ${e}`)}return function(e,t,i,r){return[{initDataTypes:e,persistentState:r.persistentState||"optional",distinctiveIdentifier:r.distinctiveIdentifier||"optional",sessionTypes:r.sessionTypes||[r.sessionType||"temporary"],audioCapabilities:t.map((e=>({contentType:`audio/mp4; codecs="${e}"`,robustness:r.audioRobustness||"",encryptionScheme:r.audioEncryptionScheme||null}))),videoCapabilities:i.map((e=>({contentType:`video/mp4; codecs="${e}"`,robustness:r.videoRobustness||"",encryptionScheme:r.videoEncryptionScheme||null})))}]}(s,t,i,r)}(e,t,i,this.config.drmSystemOptions),s=this.keySystemAccessPromises[e];let n=null==s?void 0:s.keySystemAccess;if(!n){this.log(`Requesting encrypted media "${e}" key-system access with config: ${JSON.stringify(r)}`),n=this.requestMediaKeySystemAccess(e,r);const t=this.keySystemAccessPromises[e]={keySystemAccess:n};return n.catch((t=>{this.log(`Failed to obtain access to key-system "${e}": ${t}`)})),n.then((i=>{this.log(`Access for key-system "${i.keySystem}" obtained`);const r=this.fetchServerCertificate(e);return this.log(`Create media-keys for "${e}"`),t.mediaKeys=i.createMediaKeys().then((t=>(this.log(`Media-keys created for "${e}"`),r.then((i=>i?this.setMediaKeysServerCertificate(t,e,i):t))))),t.mediaKeys.catch((t=>{this.error(`Failed to create media-keys for "${e}"}: ${t}`)})),t.mediaKeys}))}return n.then((()=>s.mediaKeys))}createMediaKeySessionContext({decryptdata:e,keySystem:t,mediaKeys:i}){this.log(`Creating key-system session "${t}" keyId: ${ts(e.keyId||[])}`);const r=i.createSession(),s={decryptdata:e,keySystem:t,mediaKeys:i,mediaKeysSession:r,keyStatus:"status-pending"};return this.mediaKeySessions.push(s),s}renewKeySession(e){const t=e.decryptdata;if(t.pssh){const i=this.createMediaKeySessionContext(e),r=this.getKeyIdString(t),s="cenc";this.keyIdToKeySessionPromise[r]=this.generateRequestWithPreferredKeySession(i,s,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(null===e.keyId)throw new Error("keyId is null");return ts(e.keyId)}updateKeySession(e,t){var i;const r=e.mediaKeysSession;return this.log(`Updating key-session "${r.sessionId}" for keyID ${ts((null==(i=e.decryptdata)?void 0:i.keyId)||[])}\n } (data length: ${t?t.byteLength:t})`),r.update(t)}selectKeySystemFormat(e){const t=Object.keys(e.levelkeys||{});return this.keyFormatPromise||(this.log(`Selecting key-system from fragment (sn: ${e.sn} ${e.type}: ${e.level}) key formats ${t.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(t)),this.keyFormatPromise}getKeyFormatPromise(e){return new Promise(((t,i)=>{const r=Or(this.config),s=e.map(Cr).filter((e=>!!e&&-1!==r.indexOf(e)));return this.getKeySystemSelectionPromise(s).then((({keySystem:e})=>{const r=Pr(e);r?t(r):i(new Error(`Unable to find format for key-system "${e}"`))})).catch(i)}))}loadKey(e){const t=e.keyInfo.decryptdata,i=this.getKeyIdString(t),r=`(keyId: ${i} format: "${t.keyFormat}" method: ${t.method} uri: ${t.uri})`;this.log(`Starting session for key ${r}`);let s=this.keyIdToKeySessionPromise[i];return s||(s=this.keyIdToKeySessionPromise[i]=this.getKeySystemForKeyPromise(t).then((({keySystem:i,mediaKeys:s})=>(this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${e.frag.sn} ${e.frag.type}: ${e.frag.level} using key ${r}`),this.attemptSetMediaKeys(i,s).then((()=>{this.throwIfDestroyed();const e=this.createMediaKeySessionContext({keySystem:i,mediaKeys:s,decryptdata:t});return this.generateRequestWithPreferredKeySession(e,"cenc",t.pssh,"playlist-key")}))))),s.catch((e=>this.handleError(e)))),s}throwIfDestroyed(e="Invalid state"){if(!this.hls)throw new Error("invalid state")}handleError(e){this.hls&&(this.error(e.message),e instanceof Th?this.hls.trigger(tr.ERROR,e.data):this.hls.trigger(tr.ERROR,{type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_KEYS,error:e,fatal:!0}))}getKeySystemForKeyPromise(e){const t=this.getKeyIdString(e),i=this.keyIdToKeySessionPromise[t];if(!i){const t=Cr(e.keyFormat),i=t?[t]:Or(this.config);return this.attemptKeySystemAccess(i)}return i}getKeySystemSelectionPromise(e){if(e.length||(e=Or(this.config)),0===e.length)throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.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){const{initDataType:t,initData:i}=e;if(this.debug(`"${e.type}" event: init data type: "${t}"`),null===i)return;let r,s;if("sinf"===t&&this.config.drmSystems[Rr.FAIRPLAY]){const e=ns(new Uint8Array(i));try{const t=br(JSON.parse(e).sinf),i=ys(new Uint8Array(t));if(!i)return;r=i.subarray(8,24),s=Rr.FAIRPLAY}catch(e){return void this.warn('Failed to parse sinf "encrypted" event message initData')}}else{const e=function(e){if(!(e instanceof ArrayBuffer)||e.byteLength<32)return null;const t={version:0,systemId:"",kids:null,data:null},i=new DataView(e),r=i.getUint32(0);if(e.byteLength!==r&&r>44)return null;if(1886614376!==i.getUint32(4))return null;if(t.version=i.getUint32(8)>>>24,t.version>1)return null;t.systemId=ts(new Uint8Array(e,12,16));const s=i.getUint32(28);if(0===t.version){if(r-32this.generateRequestWithPreferredKeySession(s,t,i,"encrypted-event-key-match")));break}}l||(l=a[n]=this.getKeySystemSelectionPromise([s]).then((({keySystem:e,mediaKeys:s})=>{var a;this.throwIfDestroyed();const o=new ks("ISO-23001-7",n,null!=(a=Pr(e))?a:"");return o.pssh=new Uint8Array(i),o.keyId=r,this.attemptSetMediaKeys(e,s).then((()=>{this.throwIfDestroyed();const r=this.createMediaKeySessionContext({decryptdata:o,keySystem:e,mediaKeys:s});return this.generateRequestWithPreferredKeySession(r,t,i,"encrypted-event-no-match")}))}))),l.catch((e=>this.handleError(e)))}_onWaitingForKey(e){this.log(`"${e.type}" event`)}attemptSetMediaKeys(e,t){const i=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${e}"`);const r=Promise.all(i).then((()=>{if(!this.media)throw new Error("Attempted to set mediaKeys without media element attached");return this.media.setMediaKeys(t)}));return this.setMediaKeysQueue.push(r),r.then((()=>{this.log(`Media-keys set for "${e}"`),i.push(r),this.setMediaKeysQueue=this.setMediaKeysQueue.filter((e=>-1===i.indexOf(e)))}))}generateRequestWithPreferredKeySession(e,t,i,r){var s,n;const a=null==(s=this.config.drmSystems)||null==(n=s[e.keySystem])?void 0:n.generateRequest;if(a)try{const r=a.call(this.hls,t,i,e);if(!r)throw new Error("Invalid response from configured generateRequest filter");t=r.initDataType,i=e.decryptdata.pssh=r.initData?new Uint8Array(r.initData):null}catch(e){var o;if(this.warn(e.message),null!=(o=this.hls)&&o.config.debug)throw e}if(null===i)return this.log(`Skipping key-session request for "${r}" (no initData)`),Promise.resolve(e);const l=this.getKeyIdString(e.decryptdata);this.log(`Generating key-session request for "${r}": ${l} (init data type: ${t} length: ${i?i.byteLength:null})`);const h=new fl,c=e._onmessage=t=>{const i=e.mediaKeysSession;if(!i)return void h.emit("error",new Error("invalid state"));const{messageType:r,message:s}=t;this.log(`"${r}" message event for session "${i.sessionId}" message size: ${s.byteLength}`),"license-request"===r||"license-renewal"===r?this.renewLicense(e,s).catch((e=>{this.handleError(e),h.emit("error",e)})):"license-release"===r?e.keySystem===Rr.FAIRPLAY&&(this.updateKeySession(e,wr("acknowledged")),this.removeSession(e)):this.warn(`unhandled media key message type "${r}"`)},d=e._onkeystatuseschange=t=>{if(!e.mediaKeysSession)return void h.emit("error",new Error("invalid state"));this.onKeyStatusChange(e);const i=e.keyStatus;h.emit("keyStatus",i),"expired"===i&&(this.warn(`${e.keySystem} expired for key ${l}`),this.renewKeySession(e))};e.mediaKeysSession.addEventListener("message",c),e.mediaKeysSession.addEventListener("keystatuseschange",d);const u=new Promise(((e,t)=>{h.on("error",t),h.on("keyStatus",(i=>{i.startsWith("usable")?e():"output-restricted"===i?t(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,fatal:!1},"HDCP level output restricted")):"internal-error"===i?t(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_STATUS_INTERNAL_ERROR,fatal:!0},`key status changed to "${i}"`)):"expired"===i?t(new Error("key expired while generating request")):this.warn(`unhandled key status change "${i}"`)}))}));return e.mediaKeysSession.generateRequest(t,i).then((()=>{var t;this.log(`Request generated for key-session "${null==(t=e.mediaKeysSession)?void 0:t.sessionId}" keyId: ${l}`)})).catch((e=>{throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_SESSION,error:e,fatal:!1},`Error generating key-session request: ${e}`)})).then((()=>u)).catch((t=>{throw h.removeAllListeners(),this.removeSession(e),t})).then((()=>(h.removeAllListeners(),e)))}onKeyStatusChange(e){e.mediaKeysSession.keyStatuses.forEach(((t,i)=>{this.log(`key status change "${t}" for keyStatuses keyId: ${ts("buffer"in i?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):new Uint8Array(i))} session keyId: ${ts(new Uint8Array(e.decryptdata.keyId||[]))} uri: ${e.decryptdata.uri}`),e.keyStatus=t}))}fetchServerCertificate(e){const t=this.config,i=new(0,t.loader)(t),r=this.getServerCertificateUrl(e);return r?(this.log(`Fetching server certificate for "${e}"`),new Promise(((s,n)=>{const a={responseType:"arraybuffer",url:r},o=t.certLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(e,t,i,r)=>{s(e.data)},onError:(t,i,s,o)=>{n(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:s,response:qi({url:a.url,data:void 0},t)},`"${e}" certificate request failed (${r}). Status: ${t.code} (${t.text})`))},onTimeout:(t,i,s)=>{n(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:s,response:{url:a.url,data:void 0}},`"${e}" certificate request timed out (${r})`))},onAbort:(e,t,i)=>{n(new Error("aborted"))}};i.load(a,l,h)}))):Promise.resolve()}setMediaKeysServerCertificate(e,t,i){return new Promise(((r,s)=>{e.setServerCertificate(i).then((s=>{this.log(`setServerCertificate ${s?"success":"not supported by CDM"} (${null==i?void 0:i.byteLength}) on "${t}"`),r(e)})).catch((e=>{s(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:e,fatal:!0},e.message))}))}))}renewLicense(e,t){return this.requestLicense(e,new Uint8Array(t)).then((t=>this.updateKeySession(e,new Uint8Array(t)).catch((e=>{throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SESSION_UPDATE_FAILED,error:e,fatal:!0},e.message)}))))}unpackPlayReadyKeyMessage(e,t){const i=String.fromCharCode.apply(null,new Uint16Array(t.buffer));if(!i.includes("PlayReadyKeyMessage"))return e.setRequestHeader("Content-Type","text/xml; charset=utf-8"),t;const r=(new DOMParser).parseFromString(i,"application/xml"),s=r.querySelectorAll("HttpHeader");if(s.length>0){let t;for(let i=0,r=s.length;i in key message");return wr(atob(l))}setupLicenseXHR(e,t,i,r){const s=this.config.licenseXhrSetup;return s?Promise.resolve().then((()=>{if(!i.decryptdata)throw new Error("Key removed");return s.call(this.hls,e,t,i,r)})).catch((n=>{if(!i.decryptdata)throw n;return e.open("POST",t,!0),s.call(this.hls,e,t,i,r)})).then((i=>{e.readyState||e.open("POST",t,!0);return{xhr:e,licenseChallenge:i||r}})):(e.open("POST",t,!0),Promise.resolve({xhr:e,licenseChallenge:r}))}requestLicense(e,t){const i=this.config.keyLoadPolicy.default;return new Promise(((r,s)=>{const n=this.getLicenseServerUrl(e.keySystem);this.log(`Sending license request to URL: ${n}`);const a=new XMLHttpRequest;a.responseType="arraybuffer",a.onreadystatechange=()=>{if(!this.hls||!e.mediaKeysSession)return s(new Error("invalid state"));if(4===a.readyState)if(200===a.status){this._requestLicenseFailureCount=0;let t=a.response;this.log(`License received ${t instanceof ArrayBuffer?t.byteLength:t}`);const i=this.config.licenseResponseCallback;if(i)try{t=i.call(this.hls,a,n,e)}catch(e){this.error(e)}r(t)}else{const o=i.errorRetry,l=o?o.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>l||a.status>=400&&a.status<500)s(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:a,response:{url:n,data:void 0,code:a.status,text:a.statusText}},`License Request XHR failed (${n}). Status: ${a.status} (${a.statusText})`));else{const i=l-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${i} attempts left`),this.requestLicense(e,t).then(r,s)}}},e.licenseXhr&&e.licenseXhr.readyState!==XMLHttpRequest.DONE&&e.licenseXhr.abort(),e.licenseXhr=a,this.setupLicenseXHR(a,n,e,t).then((({xhr:t,licenseChallenge:i})=>{e.keySystem==Rr.PLAYREADY&&(i=this.unpackPlayReadyKeyMessage(t,i)),t.send(i)}))}))}onMediaAttached(e,t){if(!this.config.emeEnabled)return;const i=t.media;this.media=i,i.addEventListener("encrypted",this.onMediaEncrypted),i.addEventListener("waitingforkey",this.onWaitingForKey)}onMediaDetached(){const 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={},ks.clearKeyUriToKeyIdMap();const i=t.length;yh.CDMCleanupPromise=Promise.all(t.map((e=>this.removeSession(e))).concat(null==e?void 0:e.setMediaKeys(null).catch((e=>{this.log(`Could not clear media keys: ${e}`)})))).then((()=>{i&&(this.log("finished closing key sessions and clearing media keys"),t.length=0)})).catch((e=>{this.log(`Could not close sessions and clear media keys: ${e}`)}))}onManifestLoading(){this.keyFormatPromise=null}onManifestLoaded(e,{sessionKeys:t}){if(t&&this.config.emeEnabled&&!this.keyFormatPromise){const e=t.reduce(((e,t)=>(-1===e.indexOf(t.keyFormat)&&e.push(t.keyFormat),e)),[]);this.log(`Selecting key-system from session-keys ${e.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(e)}}removeSession(e){const{mediaKeysSession:t,licenseXhr:i}=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),i&&i.readyState!==XMLHttpRequest.DONE&&i.abort(),e.mediaKeysSession=e.decryptdata=e.licenseXhr=void 0;const r=this.mediaKeySessions.indexOf(e);return r>-1&&this.mediaKeySessions.splice(r,1),t.remove().catch((e=>{this.log(`Could not remove session: ${e}`)})).then((()=>t.close())).catch((e=>{this.log(`Could not close session: ${e}`)}))}}}yh.CDMCleanupPromise=void 0;class Th 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}}var Eh,Sh,bh;!function(e){e.MANIFEST="m",e.AUDIO="a",e.VIDEO="v",e.MUXED="av",e.INIT="i",e.CAPTION="c",e.TIMED_TEXT="tt",e.KEY="k",e.OTHER="o"}(Eh||(Eh={})),function(e){e.DASH="d",e.HLS="h",e.SMOOTH="s",e.OTHER="o"}(Sh||(Sh={})),function(e){e.OBJECT="CMCD-Object",e.REQUEST="CMCD-Request",e.SESSION="CMCD-Session",e.STATUS="CMCD-Status"}(bh||(bh={}));const Lh={[bh.OBJECT]:["br","d","ot","tb"],[bh.REQUEST]:["bl","dl","mtp","nor","nrr","su"],[bh.SESSION]:["cid","pr","sf","sid","st","v"],[bh.STATUS]:["bs","rtp"]};class wh{constructor(e,t){this.value=void 0,this.params=void 0,Array.isArray(e)&&(e=e.map((e=>e instanceof wh?e:new wh(e)))),this.value=e,this.params=t}}class Ah{constructor(e){this.description=void 0,this.description=e}}const Rh="Dict";function kh(e,t,i,r){return new Error(`failed to ${e} "${s=t,Array.isArray(s)?JSON.stringify(s):s instanceof Map?"Map{}":s instanceof Set?"Set{}":"object"==typeof s?JSON.stringify(s):String(s)}" as ${i}`,{cause:r});var s}const _h="Bare Item",Dh="Boolean",xh="Byte Sequence",Ch="Decimal",Ih="Integer";const Ph=/[\x00-\x1f\x7f]+/,Oh="Token",Mh="Key";function Fh(e,t,i){return kh("serialize",e,t,i)}function Nh(e){if(!1===ArrayBuffer.isView(e))throw Fh(e,xh);return`:${t=e,btoa(String.fromCharCode(...t))}:`;var t}function Uh(e){if(function(e){return e<-999999999999999||99999999999999912)throw Fh(e,Ch);const i=t.toString();return i.includes(".")?i:`${i}.0`}const Gh="String";function Kh(e){const t=(i=e).description||i.toString().slice(7,-1);var i;if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(t))throw Fh(t,Oh);return t}function Vh(e){switch(typeof e){case"number":if(!Ji(e))throw Fh(e,_h);return Number.isInteger(e)?Uh(e):$h(e);case"string":return function(e){if(Ph.test(e))throw Fh(e,Gh);return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}(e);case"symbol":return Kh(e);case"boolean":return function(e){if("boolean"!=typeof e)throw Fh(e,Dh);return e?"?1":"?0"}(e);case"object":if(e instanceof Date)return function(e){return`@${Uh(e.getTime()/1e3)}`}(e);if(e instanceof Uint8Array)return Nh(e);if(e instanceof Ah)return Kh(e);default:throw Fh(e,_h)}}function Hh(e){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(e))throw Fh(e,Mh);return e}function jh(e){return null==e?"":Object.entries(e).map((([e,t])=>!0===t?`;${Hh(e)}`:`;${Hh(e)}=${Vh(t)}`)).join("")}function Wh(e){return e instanceof wh?`${Vh(e.value)}${jh(e.params)}`:Vh(e)}function Yh(e,t={whitespace:!0}){if("object"!=typeof e)throw Fh(e,Rh);const i=e instanceof Map?e.entries():Object.entries(e),r=null!=t&&t.whitespace?" ":"";return Array.from(i).map((([e,t])=>{t instanceof wh==!1&&(t=new wh(t));let i=Hh(e);var r;return!0===t.value?i+=jh(t.params):(i+="=",Array.isArray(t.value)?i+=`(${(r=t).value.map(Wh).join(" ")})${jh(r.params)}`:i+=Wh(t)),i})).join(`,${r}`)}const qh=e=>"ot"===e||"sf"===e||"st"===e,zh=e=>"number"==typeof e?Ji(e):null!=e&&""!==e&&!1!==e;const Xh=e=>Math.round(e),Qh=e=>100*Xh(e/100),Jh={br:Xh,d:Xh,bl:Qh,dl:Qh,mtp:Qh,nor:(e,t)=>(null!=t&&t.baseUrl&&(e=function(e,t){const i=new URL(e),r=new URL(t);if(i.origin!==r.origin)return e;const s=i.pathname.split("/").slice(1),n=r.pathname.split("/").slice(1,-1);for(;s[0]===n[0];)s.shift(),n.shift();for(;n.length;)n.shift(),s.unshift("..");return s.join("/")}(e,t.baseUrl)),encodeURIComponent(e)),rtp:Qh,tb:Xh};function Zh(e,t={}){return e?function(e,t){return Yh(e,t)}(function(e,t){const i={};if(null==e||"object"!=typeof e)return i;const r=Object.keys(e).sort(),s=Qi({},Jh,null==t?void 0:t.formatters),n=null==t?void 0:t.filter;return r.forEach((r=>{if(null!=n&&n(r))return;let a=e[r];const o=s[r];o&&(a=o(a,t)),"v"===r&&1===a||"pr"==r&&1===a||zh(a)&&(qh(r)&&"string"==typeof a&&(a=new Ah(a)),i[r]=a)})),i}(e,t),Qi({whitespace:!1},t)):""}function ec(e,t,i){return Qi(e,function(e,t={}){if(!e)return{};const i=Object.entries(e),r=Object.entries(Lh).concat(Object.entries((null==t?void 0:t.customHeaderMap)||{})),s=i.reduce(((e,t)=>{var i;const[s,n]=t,a=(null==(i=r.find((e=>e[1].includes(s))))?void 0:i[0])||bh.REQUEST;return null!=e[a]||(e[a]={}),e[a][s]=n,e}),{});return Object.entries(s).reduce(((e,[i,r])=>(e[i]=Zh(r,t),e)),{})}(t,i))}const tc="CMCD";const ic=/CMCD=[^&#]+/;function rc(e,t,i){const r=function(e,t={}){if(!e)return"";const i=Zh(e,t);return`${tc}=${encodeURIComponent(i)}`}(t,i);if(!r)return e;if(ic.test(e))return e.replace(ic,r);const s=e.includes("?")?"&":"?";return`${e}${s}${r}`}function sc(e,t,i,r){e&&Object.keys(t).forEach((s=>{const n=e.filter((e=>e.groupId===s)).map((e=>{const n=Qi({},e);return n.details=void 0,n.attrs=new dr(n.attrs),n.url=n.attrs.URI=nc(e.url,e.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",i),n.groupId=n.attrs["GROUP-ID"]=t[s],n.attrs["PATHWAY-ID"]=r,n}));e.push(...n)}))}function nc(e,t,i,r){const{HOST:s,PARAMS:n,[i]:a}=r;let o;t&&(o=null==a?void 0:a[t],o&&(e=o));const l=new self.URL(e);return s&&!o&&(l.host=s),n&&Object.keys(n).sort().forEach((e=>{e&&l.searchParams.set(e,n[e])})),l.href}const ac=/^age:\s*[\d.]+\s*$/im;class oc{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 gr,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null}abortInternal(){const e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,4!==e.readyState&&(this.stats.aborted=!0,e.abort()))}abort(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(e,t,i){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=i,this.loadInternal()}loadInternal(){const{config:e,context:t}=this;if(!e||!t)return;const i=this.loader=new self.XMLHttpRequest,r=this.stats;r.loading.first=0,r.loaded=0,r.aborted=!1;const s=this.xhrSetup;s?Promise.resolve().then((()=>{if(this.loader===i&&!this.stats.aborted)return s(i,t.url)})).catch((e=>{if(this.loader===i&&!this.stats.aborted)return i.open("GET",t.url,!0),s(i,t.url)})).then((()=>{this.loader!==i||this.stats.aborted||this.openAndSendXhr(i,t,e)})).catch((e=>{this.callbacks.onError({code:i.status,text:e.message},t,i,r)})):this.openAndSendXhr(i,t,e)}openAndSendXhr(e,t,i){e.readyState||e.open("GET",t.url,!0);const r=t.headers,{maxTimeToFirstByteMs:s,maxLoadTimeMs:n}=i.loadPolicy;if(r)for(const t in r)e.setRequestHeader(t,r[t]);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),i.timeout=s&&Ji(s)?s:n,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),i.timeout),e.send()}readystatechange(){const{context:e,loader:t,stats:i}=this;if(!e||!t)return;const r=t.readyState,s=this.config;if(!i.aborted&&r>=2&&(0===i.loading.first&&(i.loading.first=Math.max(self.performance.now(),i.loading.start),s.timeout!==s.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),s.timeout=s.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),s.loadPolicy.maxLoadTimeMs-(i.loading.first-i.loading.start)))),4===r)){self.clearTimeout(this.requestTimeout),t.onreadystatechange=null,t.onprogress=null;const r=t.status,n="text"!==t.responseType;if(r>=200&&r<300&&(n&&t.response||null!==t.responseText)){i.loading.end=Math.max(self.performance.now(),i.loading.first);const s=n?t.response:t.responseText,a="arraybuffer"===t.responseType?s.byteLength:s.length;if(i.loaded=i.total=a,i.bwEstimate=8e3*i.total/(i.loading.end-i.loading.first),!this.callbacks)return;const o=this.callbacks.onProgress;if(o&&o(i,e,s,t),!this.callbacks)return;const l={url:t.responseURL,data:s,code:r};this.callbacks.onSuccess(l,i,e,t)}else{const n=s.loadPolicy.errorRetry;Xn(n,i.retry,!1,{url:e.url,data:void 0,code:r})?this.retry(n):(lr.error(`${r} while loading ${e.url}`),this.callbacks.onError({code:r,text:t.statusText},e,t,i))}}}loadtimeout(){if(!this.config)return;const e=this.config.loadPolicy.timeoutRetry;if(Xn(e,this.stats.retry,!0))this.retry(e);else{var t;lr.warn(`timeout while loading ${null==(t=this.context)?void 0:t.url}`);const e=this.callbacks;e&&(this.abortInternal(),e.onTimeout(this.stats,this.context,this.loader))}}retry(e){const{context:t,stats:i}=this;this.retryDelay=qn(e,i.retry),i.retry++,lr.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${null==t?void 0:t.url}, retrying ${i.retry}/${e.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)}loadprogress(e){const t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)}getCacheAge(){let e=null;if(this.loader&&ac.test(this.loader.getAllResponseHeaders())){const t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.loader&&new RegExp(`^${e}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(e):null}}const lc=/(\d+)-(\d+)\/(\d+)/;class hc{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||cc,this.controller=new self.AbortController,this.stats=new gr}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(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(e,t,i){const r=this.stats;if(r.loading.start)throw new Error("Loader can only be used once.");r.loading.start=self.performance.now();const s=function(e,t){const i={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(Qi({},e.headers))};e.rangeEnd&&i.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1));return i}(e,this.controller.signal),n=i.onProgress,a="arraybuffer"===e.responseType,o=a?"byteLength":"length",{maxTimeToFirstByteMs:l,maxLoadTimeMs:h}=t.loadPolicy;this.context=e,this.config=t,this.callbacks=i,this.request=this.fetchSetup(e,s),self.clearTimeout(this.requestTimeout),t.timeout=l&&Ji(l)?l:h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(r,e,this.response)}),t.timeout),self.fetch(this.request).then((s=>{this.response=this.loader=s;const o=Math.max(self.performance.now(),r.loading.start);if(self.clearTimeout(this.requestTimeout),t.timeout=h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(r,e,this.response)}),h-(o-r.loading.start)),!s.ok){const{status:e,statusText:t}=s;throw new dc(t||"fetch, bad network response",e,s)}return r.loading.first=o,r.total=function(e){const t=e.get("Content-Range");if(t){const e=function(e){const t=lc.exec(e);if(t)return parseInt(t[2])-parseInt(t[1])+1}(t);if(Ji(e))return e}const i=e.get("Content-Length");if(i)return parseInt(i)}(s.headers)||r.total,n&&Ji(t.highWaterMark)?this.loadProgressively(s,r,e,t.highWaterMark,n):a?s.arrayBuffer():"json"===e.responseType?s.json():s.text()})).then((s=>{const a=this.response;if(!a)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),r.loading.end=Math.max(self.performance.now(),r.loading.first);const l=s[o];l&&(r.loaded=r.total=l);const h={url:a.url,data:s,code:a.status};n&&!Ji(t.highWaterMark)&&n(r,e,s,a),i.onSuccess(h,r,e,a)})).catch((t=>{if(self.clearTimeout(this.requestTimeout),r.aborted)return;const s=t&&t.code||0,n=t?t.message:null;i.onError({code:s,text:n},e,t?t.details:null,r)}))}getCacheAge(){let e=null;if(this.response){const t=this.response.headers.get("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.response?this.response.headers.get(e):null}loadProgressively(e,t,i,r=0,s){const n=new ao,a=e.body.getReader(),o=()=>a.read().then((a=>{if(a.done)return n.dataLength&&s(t,i,n.flush(),e),Promise.resolve(new ArrayBuffer(0));const l=a.value,h=l.length;return t.loaded+=h,h=r&&s(t,i,n.flush(),e)):s(t,i,l,e),o()})).catch((()=>Promise.reject()));return o()}}function cc(e,t){return new self.Request(e.url,t)}class dc extends Error{constructor(e,t,i){super(e),this.code=void 0,this.details=void 0,this.code=t,this.details=i}}const uc=/\s/,fc={newCue(e,t,i,r){const s=[];let n,a,o,l,h;const c=self.VTTCue||self.TextTrackCue;for(let u=0;u=16?l--:l++;const r=Xl(h.trim()),f=th(t,i,r);null!=e&&null!=(d=e.cues)&&d.getCueById(f)||(a=new c(t,i,r),a.id=f,a.line=u+1,a.align="left",a.position=10+Math.min(80,10*Math.floor(8*l/32)),s.push(a))}return e&&s.length&&(s.sort(((e,t)=>"auto"===e.line||"auto"===t.line?0:e.line>8&&t.line>8?t.line-e.line:e.line-t.line)),s.forEach((t=>pn(e,t)))),s}},gc=qi(qi({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:6e7,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:oc,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController: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.codecTiers=null,this.timer=-1,this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this._abandonRulesCheck=()=>{const{fragCurrent:e,partCurrent:t,hls:i}=this,{autoLevelEnabled:r,media:s}=i;if(!e||!s)return;const n=performance.now(),a=t?t.stats:e.stats,o=t?t.duration:e.duration,l=n-a.loading.start,h=i.minAutoLevel;if(a.aborted||a.loaded&&a.loaded===a.total||e.level<=h)return this.clearTimer(),void(this._nextAutoLevel=-1);if(!r||s.paused||!s.playbackRate||!s.readyState)return;const c=i.mainForwardBufferInfo;if(null===c)return;const d=this.bwEstimator.getEstimateTTFB(),u=Math.abs(s.playbackRate);if(l<=Math.max(d,o/(2*u)*1e3))return;const f=c.len/u,g=a.loading.first?a.loading.first-a.loading.start:-1,m=a.loaded&&g>-1,p=this.getBwEstimate(),v=i.levels,y=v[e.level],T=a.total||Math.max(a.loaded,Math.round(o*y.averageBitrate/8));let E=m?l-g:l;E<1&&m&&(E=Math.min(l,8*a.loaded/p));const S=m?1e3*a.loaded/E:0,b=S?(T-a.loaded)/S:8*T/p+d/1e3;if(b<=f)return;const L=S?8*S:p;let w,A=Number.POSITIVE_INFINITY;for(w=e.level-1;w>h;w--){const e=v[w].maxBitrate;if(A=this.getTimeToLoadFrag(d/1e3,L,o*e,!v[w].details),A=b)return;if(A>10*o)return;i.nextLoadLevel=i.nextAutoLevel=w,m?this.bwEstimator.sample(l-Math.min(d,g),a.loaded):this.bwEstimator.sampleTTFB(l);const R=v[w].maxBitrate;this.getBwEstimate()*this.hls.config.abrBandWidthUpFactor>R&&this.resetEstimator(R),this.clearTimer(),lr.warn(`[abr] Fragment ${e.sn}${t?" part "+t.index:""} of level ${e.level} is loading too slowly;\n Time to underbuffer: ${f.toFixed(3)} s\n Estimated load time for current fragment: ${b.toFixed(3)} s\n Estimated load time for down switch fragment: ${A.toFixed(3)} s\n TTFB estimate: ${0|g} ms\n Current BW estimate: ${Ji(p)?0|p:"Unknown"} bps\n New BW estimate: ${0|this.getBwEstimate()} bps\n Switching to level ${w} @ ${0|R} bps`),i.trigger(tr.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e,part:t,stats:a})},this.hls=e,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(e){e&&(lr.log(`setting initial bwe to ${e}`),this.hls.config.abrEwmaDefaultEstimate=e),this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){const e=this.hls.config;return new ca(e.abrEwmaSlowVoD,e.abrEwmaFastVoD,e.abrEwmaDefaultEstimate)}registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.FRAG_LOADING,this.onFragLoading,this),e.on(tr.FRAG_LOADED,this.onFragLoaded,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e&&(e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.FRAG_LOADING,this.onFragLoading,this),e.off(tr.FRAG_LOADED,this.onFragLoaded,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.off(tr.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){const i=t.frag;if(!this.ignoreFragment(i)){var r;if(!i.bitrateTest)this.fragCurrent=i,this.partCurrent=null!=(r=t.part)?r: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 rr.BUFFER_ADD_CODEC_ERROR:case rr.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case rr.FRAG_LOAD_TIMEOUT:{const e=t.frag,{fragCurrent:i,partCurrent:r}=this;if(e&&i&&e.sn===i.sn&&e.level===i.level){const t=performance.now(),i=r?r.stats:e.stats,s=t-i.loading.start,n=i.loading.first?i.loading.first-i.loading.start:-1;if(i.loaded&&n>-1){const e=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(s-Math.min(e,n),i.loaded)}else this.bwEstimator.sampleTTFB(s)}break}}}getTimeToLoadFrag(e,t,i,r){return e+i/t+(r?this.lastLevelLoadSec:0)}onLevelLoaded(e,t){const i=this.hls.config,{loading:r}=t.stats,s=r.end-r.start;Ji(s)&&(this.lastLevelLoadSec=s/1e3),t.details.live?this.bwEstimator.update(i.abrEwmaSlowLive,i.abrEwmaFastLive):this.bwEstimator.update(i.abrEwmaSlowVoD,i.abrEwmaFastVoD)}onFragLoaded(e,{frag:t,part:i}){const r=i?i.stats:t.stats;if(t.type===hn&&this.bwEstimator.sampleTTFB(r.loading.first-r.loading.start),!this.ignoreFragment(t)){if(this.clearTimer(),t.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){const e=i?i.duration:t.duration,s=this.hls.levels[t.level],n=(s.loaded?s.loaded.bytes:0)+r.loaded,a=(s.loaded?s.loaded.duration:0)+e;s.loaded={bytes:n,duration:a},s.realBitrate=Math.round(8*n/a)}if(t.bitrateTest){const e={stats:r,frag:t,part:i,id:t.type};this.onFragBuffered(tr.FRAG_BUFFERED,e),t.bitrateTest=!1}else this.lastLoadedFragLevel=t.level}}onFragBuffered(e,t){const{frag:i,part:r}=t,s=null!=r&&r.stats.loaded?r.stats:i.stats;if(s.aborted)return;if(this.ignoreFragment(i))return;const n=s.parsing.end-s.loading.start-Math.min(s.loading.first-s.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(n,s.loaded),s.bwEstimate=this.getBwEstimate(),i.bitrateTest?this.bitrateTestDelay=n/1e3:this.bitrateTestDelay=0}ignoreFragment(e){return e.type!==hn||"initSegment"===e.sn}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){const{maxAutoLevel:e,minAutoLevel:t}=this.hls,i=this.getBwEstimate(),r=this.hls.config.maxStarvationDelay,s=this.findBestLevel(i,t,e,0,r,1,1);if(s>-1)return s;const n=this.hls.firstLevel,a=Math.min(Math.max(n,t),e);return lr.warn(`[abr] Could not find best starting auto level. Defaulting to first in playlist ${n} clamped to ${a}`),a}get forcedAutoLevel(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}get nextAutoLevel(){const e=this.forcedAutoLevel,t=this.bwEstimator.canEstimate(),i=this.lastLoadedFragLevel>-1;if(!(-1===e||t&&i&&this.nextAutoLevelKey!==this.getAutoLevelKey()))return e;const r=t&&i?this.getNextABRAutoLevel():this.firstAutoLevel;if(-1!==e){const t=this.hls.levels;if(t.length>Math.max(e,r)&&t[e].loadError<=t[r].loadError)return e}return this._nextAutoLevel=r,this.nextAutoLevelKey=this.getAutoLevelKey(),r}getAutoLevelKey(){return`${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){const{fragCurrent:e,partCurrent:t,hls:i}=this,{maxAutoLevel:r,config:s,minAutoLevel:n}=i,a=t?t.duration:e?e.duration:0,o=this.getBwEstimate(),l=this.getStarvationDelay();let h=s.abrBandWidthFactor,c=s.abrBandWidthUpFactor;if(l){const e=this.findBestLevel(o,n,r,l,0,h,c);if(e>=0)return e}let d=a?Math.min(a,s.maxStarvationDelay):s.maxStarvationDelay;if(!l){const e=this.bitrateTestDelay;if(e){d=(a?Math.min(a,s.maxLoadingDelay):s.maxLoadingDelay)-e,lr.info(`[abr] bitrate test took ${Math.round(1e3*e)}ms, set first fragment max fetchDuration to ${Math.round(1e3*d)} ms`),h=c=1}}const u=this.findBestLevel(o,n,r,l,d,h,c);if(lr.info(`[abr] ${l?"rebuffering expected":"buffer is empty"}, optimal quality level ${u}`),u>-1)return u;const f=i.levels[n],g=i.levels[i.loadLevel];return(null==f?void 0:f.bitrate)<(null==g?void 0:g.bitrate)?n:i.loadLevel}getStarvationDelay(){const e=this.hls,t=e.media;if(!t)return 1/0;const i=t&&0!==t.playbackRate?Math.abs(t.playbackRate):1,r=e.mainForwardBufferInfo;return(r?r.len:0)/i}getBwEstimate(){return this.bwEstimator.canEstimate()?this.bwEstimator.getEstimate():this.hls.config.abrEwmaDefaultEstimate}findBestLevel(e,t,i,r,s,n,a){var o;const l=r+s,h=this.lastLoadedFragLevel,c=-1===h?this.hls.firstLevel:h,{fragCurrent:d,partCurrent:u}=this,{levels:f,allAudioTracks:g,loadLevel:m,config:p}=this.hls;if(1===f.length)return 0;const v=f[c],y=!(null==v||null==(o=v.details)||!o.live),T=-1===m||-1===h;let E,S="SDR",b=(null==v?void 0:v.frameRate)||0;const{audioPreference:L,videoPreference:w}=p,A=this.audioTracksByGroup||(this.audioTracksByGroup=function(e){return e.reduce(((e,t)=>{let i=e.groups[t.groupId];i||(i=e.groups[t.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),i.tracks.push(t);const r=t.channels||"2";return i.channels[r]=(i.channels[r]||0)+1,i.hasDefault=i.hasDefault||t.default,i.hasAutoSelect=i.hasAutoSelect||t.autoselect,i.hasDefault&&(e.hasDefaultAudio=!0),i.hasAutoSelect&&(e.hasAutoSelectAudio=!0),e}),{hasDefaultAudio:!1,hasAutoSelectAudio:!1,groups:{}})}(g));if(T){if(-1!==this.firstSelection)return this.firstSelection;const r=this.codecTiers||(this.codecTiers=function(e,t,i,r){return e.slice(i,r+1).reduce(((e,i)=>{if(!i.codecSet)return e;const r=i.audioGroups;let s=e[i.codecSet];s||(e[i.codecSet]=s={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!r,fragmentError:0}),s.minBitrate=Math.min(s.minBitrate,i.bitrate);const n=Math.min(i.height,i.width);return s.minHeight=Math.min(s.minHeight,n),s.minFramerate=Math.min(s.minFramerate,i.frameRate),s.maxScore=Math.max(s.maxScore,i.score),s.fragmentError+=i.fragmentError,s.videoRanges[i.videoRange]=(s.videoRanges[i.videoRange]||0)+1,r&&r.forEach((e=>{if(!e)return;const i=t.groups[e];i&&(s.hasDefaultAudio=s.hasDefaultAudio||t.hasDefaultAudio?i.hasDefault:i.hasAutoSelect||!t.hasDefaultAudio&&!t.hasAutoSelectAudio,Object.keys(i.channels).forEach((e=>{s.channels[e]=(s.channels[e]||0)+i.channels[e]})))})),e}),{})}(f,A,t,i)),s=function(e,t,i,r,s){const n=Object.keys(e),a=null==r?void 0:r.channels,o=null==r?void 0:r.audioCodec,l=a&&2===parseInt(a);let h=!0,c=!1,d=1/0,u=1/0,f=1/0,g=0,m=[];const{preferHDR:p,allowedVideoRanges:v}=ma(t,s);for(let t=n.length;t--;){const i=e[n[t]];h=i.channels[2]>0,d=Math.min(d,i.minHeight),u=Math.min(u,i.minFramerate),f=Math.min(f,i.minBitrate);const r=v.filter((e=>i.videoRanges[e]>0));r.length>0&&(c=!0,m=r)}d=Ji(d)?d:0,u=Ji(u)?u:0;const y=Math.max(1080,d),T=Math.max(30,u);return f=Ji(f)?f:i,i=Math.max(f,i),c||(t=void 0,m=[]),{codecSet:n.reduce(((t,r)=>{const s=e[r];if(r===t)return t;if(s.minBitrate>i)return pa(r,`min bitrate of ${s.minBitrate} > current estimate of ${i}`),t;if(!s.hasDefaultAudio)return pa(r,"no renditions with default or auto-select sound found"),t;if(o&&r.indexOf(o.substring(0,4))%5!=0)return pa(r,`audio codec preference "${o}" not found`),t;if(a&&!l){if(!s.channels[a])return pa(r,`no renditions with ${a} channel sound found (channels options: ${Object.keys(s.channels)})`),t}else if((!o||l)&&h&&0===s.channels[2])return pa(r,"no renditions with stereo sound found"),t;return s.minHeight>y?(pa(r,`min resolution of ${s.minHeight} > maximum of ${y}`),t):s.minFramerate>T?(pa(r,`min framerate of ${s.minFramerate} > maximum of ${T}`),t):m.some((e=>s.videoRanges[e]>0))?s.maxScore=$s(t)||s.fragmentError>e[t].fragmentError)?t:(g=s.maxScore,r):(pa(r,`no variants with VIDEO-RANGE of ${JSON.stringify(m)} found`),t)}),void 0),videoRanges:m,preferHDR:p,minFramerate:u,minBitrate:f}}(r,S,e,L,w),{codecSet:n,videoRanges:a,minFramerate:o,minBitrate:l,preferHDR:h}=s;E=n,S=h?a[a.length-1]:a[0],b=o,e=Math.max(e,l),lr.log(`[abr] picked start tier ${JSON.stringify(s)}`)}else E=null==v?void 0:v.codecSet,S=null==v?void 0:v.videoRange;const R=u?u.duration:d?d.duration:0,k=this.bwEstimator.getEstimateTTFB()/1e3,_=[];for(let o=i;o>=t;o--){var D;const t=f[o],d=o>c;if(!t)continue;if(p.useMediaCapabilities&&!t.supportedResult&&!t.supportedPromise){const i=navigator.mediaCapabilities;"function"==typeof(null==i?void 0:i.decodingInfo)&&fa(t,A,S,b,e,L)?(t.supportedPromise=ga(t,A,i),t.supportedPromise.then((e=>{if(!this.hls)return;t.supportedResult=e;const i=this.hls.levels,r=i.indexOf(t);e.error?lr.warn(`[abr] MediaCapabilities decodingInfo error: "${e.error}" for level ${r} ${JSON.stringify(e)}`):e.supported||(lr.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${r} ${JSON.stringify(e)}`),r>-1&&i.length>1&&(lr.log(`[abr] Removing unsupported level ${r}`),this.hls.removeLevel(r)))}))):t.supportedResult=da}if(E&&t.codecSet!==E||S&&t.videoRange!==S||d&&b>t.frameRate||!d&&b>0&&b=2*R&&0===s?f[o].averageBitrate:f[o].maxBitrate,I=this.getTimeToLoadFrag(k,x,C*w,void 0===g);if(x>=C&&(o===h||0===t.loadError&&0===t.fragmentError)&&(I<=k||!Ji(I)||y&&!this.bitrateTestDelay||I${o} adjustedbw(${Math.round(x)})-bitrate=${Math.round(x-C)} ttfb:${k.toFixed(1)} avgDuration:${w.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${I.toFixed(1)} firstSelection:${T} codecSet:${E} videoRange:${S} hls.loadLevel:${m}`)),T&&(this.firstSelection=o),o}}return-1}set nextAutoLevel(e){const{maxAutoLevel:t,minAutoLevel:i}=this.hls,r=Math.min(Math.max(e,i),t);this._nextAutoLevel!==r&&(this.nextAutoLevelKey="",this._nextAutoLevel=r)}},bufferController: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=e=>{this.hls&&this.hls.pauseBuffering()},this._onStartStreaming=e=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=()=>{const{media:e,mediaSource:t}=this;this.log("Media source opened"),e&&(e.removeEventListener("emptied",this._onMediaEmptied),this.updateMediaElementDuration(),this.hls.trigger(tr.MEDIA_ATTACHED,{media:e,mediaSource:t})),t&&t.removeEventListener("sourceopen",this._onMediaSourceOpen),this.checkPendingTracks()},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{const{mediaSrc:e,_objectUrl:t}=this;e!==t&&lr.error(`Media element src was set while attaching MediaSource (${t} > ${e})`)},this.hls=e;const t="[buffer-controller]";var i;this.appendSource=(i=Os(e.config.preferManagedMediaSource),"undefined"!=typeof self&&i===self.ManagedMediaSource),this.log=lr.log.bind(lr,t),this.warn=lr.warn.bind(lr,t),this.error=lr.error.bind(lr,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(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.BUFFER_RESET,this.onBufferReset,this),e.on(tr.BUFFER_APPENDING,this.onBufferAppending,this),e.on(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.on(tr.BUFFER_EOS,this.onBufferEos,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(tr.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(tr.FRAG_PARSED,this.onFragParsed,this),e.on(tr.FRAG_CHANGED,this.onFragChanged,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.BUFFER_RESET,this.onBufferReset,this),e.off(tr.BUFFER_APPENDING,this.onBufferAppending,this),e.off(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.off(tr.BUFFER_EOS,this.onBufferEos,this),e.off(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(tr.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(tr.FRAG_PARSED,this.onFragParsed,this),e.off(tr.FRAG_CHANGED,this.onFragChanged,this)}_initSourceBuffer(){this.sourceBuffer={},this.operationQueue=new Tl(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 i=2;(t.audio&&!t.video||!t.altAudio)&&(i=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=i,this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`)}onMediaAttaching(e,t){const i=this.media=t.media,r=Os(this.appendSource);if(i&&r){var s;const e=this.mediaSource=new r;this.log(`created media source: ${null==(s=e.constructor)?void 0:s.name}`),e.addEventListener("sourceopen",this._onMediaSourceOpen),e.addEventListener("sourceended",this._onMediaSourceEnded),e.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(e.addEventListener("startstreaming",this._onStartStreaming),e.addEventListener("endstreaming",this._onEndStreaming));const t=this._objectUrl=self.URL.createObjectURL(e);if(this.appendSource)try{i.removeAttribute("src");const r=self.ManagedMediaSource;i.disableRemotePlayback=i.disableRemotePlayback||r&&e instanceof r,Sl(i),function(e,t){const i=self.document.createElement("source");i.type="video/mp4",i.src=t,e.appendChild(i)}(i,t),i.load()}catch(e){i.src=t}else i.src=t;i.addEventListener("emptied",this._onMediaEmptied)}}onMediaDetaching(){const{media:e,mediaSource:t,_objectUrl:i}=this;if(t){if(this.log("media source detaching"),"open"===t.readyState)try{t.endOfStream()}catch(e){this.warn(`onMediaDetaching: ${e.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),i&&self.URL.revokeObjectURL(i),this.mediaSrc===i?(e.removeAttribute("src"),this.appendSource&&Sl(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(tr.MEDIA_DETACHED,void 0)}onBufferReset(){this.getSourceBufferTypes().forEach((e=>{this.resetBuffer(e)})),this._initSourceBuffer()}resetBuffer(e){const t=this.sourceBuffer[e];try{var i;if(t)this.removeBufferListeners(e),this.sourceBuffer[e]=void 0,null!=(i=this.mediaSource)&&i.sourceBuffers.length&&this.mediaSource.removeSourceBuffer(t)}catch(t){this.warn(`onBufferReset ${e}`,t)}}onBufferCodecs(e,t){const i=this.getSourceBufferTypes().length,r=Object.keys(t);if(r.forEach((e=>{if(i){const i=this.tracks[e];if(i&&"function"==typeof i.buffer.changeType){var r;const{id:s,codec:n,levelCodec:a,container:o,metadata:l}=t[e],h=Hs(i.codec,i.levelCodec),c=null==h?void 0:h.replace(El,"$1");let d=Hs(n,a);const u=null==(r=d)?void 0:r.replace(El,"$1");if(d&&c!==u){"audio"===e.slice(0,5)&&(d=Vs(d,this.appendSource));const t=`${o};codecs=${d}`;this.appendChangeType(e,t),this.log(`switching codec ${h} to ${d}`),this.tracks[e]={buffer:i.buffer,codec:n,container:o,levelCodec:a,metadata:l,id:s}}}}else this.pendingTracks[e]=t[e]})),i)return;const s=Math.max(this.bufferCodecEventsExpected-1,0);this.bufferCodecEventsExpected!==s&&(this.log(`${s} bufferCodec event(s) expected ${r.join(",")}`),this.bufferCodecEventsExpected=s),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks()}appendChangeType(e,t){const{operationQueue:i}=this,r={execute:()=>{const r=this.sourceBuffer[e];r&&(this.log(`changing ${e} sourceBuffer type to ${t}`),r.changeType(t)),i.shiftAndExecuteNext(e)},onStart:()=>{},onComplete:()=>{},onError:t=>{this.warn(`Failed to change ${e} SourceBuffer type`,t)}};i.append(r,e,!!this.pendingTracks[e])}onBufferAppending(e,t){const{hls:i,operationQueue:r,tracks:s}=this,{data:n,type:a,frag:o,part:l,chunkMeta:h}=t,c=h.buffering[a],d=self.performance.now();c.start=d;const u=o.stats.buffering,f=l?l.stats.buffering:null;0===u.start&&(u.start=d),f&&0===f.start&&(f.start=d);const g=s.audio;let m=!1;"audio"===a&&"audio/mpeg"===(null==g?void 0:g.container)&&(m=!this.lastMpegAudioChunk||1===h.id||this.lastMpegAudioChunk.sn!==h.sn,this.lastMpegAudioChunk=h);const p=o.start,v={execute:()=>{if(c.executeStart=self.performance.now(),m){const e=this.sourceBuffer[a];if(e){const t=p-e.timestampOffset;Math.abs(t)>=.1&&(this.log(`Updating audio SourceBuffer timestampOffset to ${p} (delta: ${t}) sn: ${o.sn})`),e.timestampOffset=p)}}this.appendExecutor(n,a)},onStart:()=>{},onComplete:()=>{const e=self.performance.now();c.executeEnd=c.end=e,0===u.first&&(u.first=e),f&&0===f.first&&(f.first=e);const{sourceBuffer:t}=this,i={};for(const e in t)i[e]=xa.getBuffered(t[e]);this.appendErrors[a]=0,"audio"===a||"video"===a?this.appendErrors.audiovideo=0:(this.appendErrors.audio=0,this.appendErrors.video=0),this.hls.trigger(tr.BUFFER_APPENDED,{type:a,frag:o,part:l,chunkMeta:h,parent:o.type,timeRanges:i})},onError:e=>{const t={type:ir.MEDIA_ERROR,parent:o.type,details:rr.BUFFER_APPEND_ERROR,sourceBufferName:a,frag:o,part:l,chunkMeta:h,error:e,err:e,fatal:!1};if(e.code===DOMException.QUOTA_EXCEEDED_ERR)t.details=rr.BUFFER_FULL_ERROR;else{const e=++this.appendErrors[a];t.details=rr.BUFFER_APPEND_ERROR,this.warn(`Failed ${e}/${i.config.appendErrorMaxRetry} times to append segment in "${a}" sourceBuffer`),e>=i.config.appendErrorMaxRetry&&(t.fatal=!0)}i.trigger(tr.ERROR,t)}};r.append(v,a,!!this.pendingTracks[a])}onBufferFlushing(e,t){const{operationQueue:i}=this,r=e=>({execute:this.removeExecutor.bind(this,e,t.startOffset,t.endOffset),onStart:()=>{},onComplete:()=>{this.hls.trigger(tr.BUFFER_FLUSHED,{type:e})},onError:t=>{this.warn(`Failed to remove from ${e} SourceBuffer`,t)}});t.type?i.append(r(t.type),t.type):this.getSourceBufferTypes().forEach((e=>{i.append(r(e),e)}))}onFragParsed(e,t){const{frag:i,part:r}=t,s=[],n=r?r.elementaryStreams:i.elementaryStreams;n[vr]?s.push("audiovideo"):(n[mr]&&s.push("audio"),n[pr]&&s.push("video"));0===s.length&&this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${i.type} level: ${i.level} sn: ${i.sn}`),this.blockBuffers((()=>{const e=self.performance.now();i.stats.buffering.end=e,r&&(r.stats.buffering.end=e);const t=r?r.stats:i.stats;this.hls.trigger(tr.FRAG_BUFFERED,{frag:i,part:r,stats:t,id:i.type})}),s)}onFragChanged(e,t){this.trimBuffers()}onBufferEos(e,t){this.getSourceBufferTypes().reduce(((e,i)=>{const r=this.sourceBuffer[i];return!r||t.type&&t.type!==i||(r.ending=!0,r.ended||(r.ended=!0,this.log(`${i} sourceBuffer now EOS`))),e&&!(r&&!r.ended)}),!0)&&(this.log("Queueing mediaSource.endOfStream()"),this.blockBuffers((()=>{this.getSourceBufferTypes().forEach((e=>{const t=this.sourceBuffer[e];t&&(t.ending=!1)}));const{mediaSource:e}=this;e&&"open"===e.readyState?(this.log("Calling mediaSource.endOfStream()"),e.endOfStream()):e&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${e.readyState}`)})))}onLevelUpdated(e,{details:t}){t.fragments.length&&(this.details=t,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())}trimBuffers(){const{hls:e,details:t,media:i}=this;if(!i||null===t)return;if(!this.getSourceBufferTypes().length)return;const r=e.config,s=i.currentTime,n=t.levelTargetDuration,a=t.live&&null!==r.liveBackBufferLength?r.liveBackBufferLength:r.backBufferLength;if(Ji(a)&&a>0){const e=Math.max(a,n),t=Math.floor(s/n)*n-e;this.flushBackBuffer(s,n,t)}if(Ji(r.frontBufferFlushThreshold)&&r.frontBufferFlushThreshold>0){const e=Math.max(r.maxBufferLength,r.frontBufferFlushThreshold),t=Math.max(e,n),i=Math.floor(s/n)*n+t;this.flushFrontBuffer(s,n,i)}}flushBackBuffer(e,t,i){const{details:r,sourceBuffer:s}=this;this.getSourceBufferTypes().forEach((n=>{const a=s[n];if(a){const s=xa.getBuffered(a);if(s.length>0&&i>s.start(0)){if(this.hls.trigger(tr.BACK_BUFFER_REACHED,{bufferEnd:i}),null!=r&&r.live)this.hls.trigger(tr.LIVE_BACK_BUFFER_REACHED,{bufferEnd:i});else if(a.ended&&s.end(s.length-1)-e<2*t)return void this.log(`Cannot flush ${n} back buffer while SourceBuffer is in ended state`);this.hls.trigger(tr.BUFFER_FLUSHING,{startOffset:0,endOffset:i,type:n})}}}))}flushFrontBuffer(e,t,i){const{sourceBuffer:r}=this;this.getSourceBufferTypes().forEach((s=>{const n=r[s];if(n){const r=xa.getBuffered(n),a=r.length;if(a<2)return;const o=r.start(a-1),l=r.end(a-1);if(i>o||e>=o&&e<=l)return;if(n.ended&&e-l<2*t)return void this.log(`Cannot flush ${s} front buffer while SourceBuffer is in ended state`);this.hls.trigger(tr.BUFFER_FLUSHING,{startOffset:o,endOffset:1/0,type:s})}}))}updateMediaElementDuration(){if(!this.details||!this.media||!this.mediaSource||"open"!==this.mediaSource.readyState)return;const{details:e,hls:t,media:i,mediaSource:r}=this,s=e.fragments[0].start+e.totalduration,n=i.duration,a=Ji(r.duration)?r.duration:0;e.live&&t.config.liveDurationInfinity?(r.duration=1/0,this.updateSeekableRange(e)):(s>a&&s>n||!Ji(n))&&(this.log(`Updating Media Source duration to ${s.toFixed(3)}`),r.duration=s)}updateSeekableRange(e){const t=this.mediaSource,i=e.fragments;if(i.length&&e.live&&null!=t&&t.setLiveSeekableRange){const r=Math.max(0,i[0].start),s=Math.max(r,r+e.totalduration);this.log(`Media Source duration is set to ${t.duration}. Setting seekable range to ${r}-${s}.`),t.setLiveSeekableRange(r,s)}}checkPendingTracks(){const{bufferCodecEventsExpected:e,operationQueue:t,pendingTracks:i}=this,r=Object.keys(i).length;if(r&&(!e||2===r||"audiovideo"in i)){this.createSourceBuffers(i),this.pendingTracks={};const e=this.getSourceBufferTypes();if(e.length)this.hls.trigger(tr.BUFFER_CREATED,{tracks:this.tracks}),e.forEach((e=>{t.executeNext(e)}));else{const e=new Error("could not create source buffer for media codec(s)");this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:e,reason:e.message})}}}createSourceBuffers(e){const{sourceBuffer:t,mediaSource:i}=this;if(!i)throw Error("createSourceBuffers called when mediaSource was null");for(const s in e)if(!t[s]){var r;const n=e[s];if(!n)throw Error(`source buffer exists for track ${s}, however track does not`);let a=-1===(null==(r=n.levelCodec)?void 0:r.indexOf(","))?n.levelCodec:n.codec;a&&"audio"===s.slice(0,5)&&(a=Vs(a,this.appendSource));const o=`${n.container};codecs=${a}`;this.log(`creating sourceBuffer(${o})`);try{const e=t[s]=i.addSourceBuffer(o),r=s;this.addBufferListener(r,"updatestart",this._onSBUpdateStart),this.addBufferListener(r,"updateend",this._onSBUpdateEnd),this.addBufferListener(r,"error",this._onSBUpdateError),this.appendSource&&this.addBufferListener(r,"bufferedchange",((e,t)=>{const i=t.removedRanges;null!=i&&i.length&&this.hls.trigger(tr.BUFFER_FLUSHED,{type:s})})),this.tracks[s]={buffer:e,codec:a,container:n.container,levelCodec:n.levelCodec,metadata:n.metadata,id:n.id}}catch(e){this.error(`error while trying to add sourceBuffer: ${e.message}`),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:e,sourceBufferName:s,mimeType:o})}}}get mediaSrc(){var e;const t=(null==(e=this.media)?void 0:e.firstChild)||this.media;return null==t?void 0:t.src}_onSBUpdateStart(e){const{operationQueue:t}=this;t.current(e).onStart()}_onSBUpdateEnd(e){var t;if("closed"===(null==(t=this.mediaSource)?void 0:t.readyState))return void this.resetBuffer(e);const{operationQueue:i}=this;i.current(e).onComplete(),i.shiftAndExecuteNext(e)}_onSBUpdateError(e,t){var i;const r=new Error(`${e} SourceBuffer error. MediaSource readyState: ${null==(i=this.mediaSource)?void 0:i.readyState}`);this.error(`${r}`,t),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_APPENDING_ERROR,sourceBufferName:e,error:r,fatal:!1});const s=this.operationQueue.current(e);s&&s.onError(r)}removeExecutor(e,t,i){const{media:r,mediaSource:s,operationQueue:n,sourceBuffer:a}=this,o=a[e];if(!r||!s||!o)return this.warn(`Attempting to remove from the ${e} SourceBuffer, but it does not exist`),void n.shiftAndExecuteNext(e);const l=Ji(r.duration)?r.duration:1/0,h=Ji(s.duration)?s.duration:1/0,c=Math.max(0,t),d=Math.min(i,l,h);d>c&&(!o.ending||o.ended)?(o.ended=!1,this.log(`Removing [${c},${d}] from the ${e} SourceBuffer`),o.remove(c,d)):n.shiftAndExecuteNext(e)}appendExecutor(e,t){const i=this.sourceBuffer[t];if(i)i.ended=!1,i.appendBuffer(e);else if(!this.pendingTracks[t])throw new Error(`Attempting to append to the ${t} SourceBuffer, but it does not exist`)}blockBuffers(e,t=this.getSourceBufferTypes()){if(!t.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(e);const{operationQueue:i}=this,r=t.map((e=>i.appendBlocker(e)));Promise.all(r).then((()=>{e(),t.forEach((e=>{const t=this.sourceBuffer[e];null!=t&&t.updating||i.shiftAndExecuteNext(e)}))}))}getSourceBufferTypes(){return Object.keys(this.sourceBuffer)}addBufferListener(e,t,i){const r=this.sourceBuffer[e];if(!r)return;const s=i.bind(this,e);this.listeners[e].push({event:t,listener:s}),r.addEventListener(t,s)}removeBufferListeners(e){const t=this.sourceBuffer[e];t&&this.listeners[e].forEach((e=>{t.removeEventListener(e.event,e.listener)}))}},capLevelController:ph,errorController: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=lr.log.bind(lr,"[info]:"),this.warn=lr.warn.bind(lr,"[warning]:"),this.error=lr.error.bind(lr,"[error]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(tr.ERROR,this.onError,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){const e=this.hls;e&&(e.off(tr.ERROR,this.onError,this),e.off(tr.ERROR,this.onErrorOut,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}}startLoad(e){}stopLoad(){this.playlistError=0}getVariantLevelIndex(e){return(null==e?void 0:e.type)===hn?e.level:this.hls.loadLevel}onManifestLoading(){this.playlistError=0,this.penalizedRenditions={}}onLevelUpdated(){this.playlistError=0}onError(e,t){var i,r;if(t.fatal)return;const s=this.hls,n=t.context;switch(t.details){case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:return void(t.errorAction=this.getFragRetryOrSwitchAction(t));case rr.FRAG_PARSING_ERROR:if(null!=(i=t.frag)&&i.gap)return void(t.errorAction={action:ta,flags:na});case rr.FRAG_GAP:case rr.FRAG_DECRYPT_ERROR:return t.errorAction=this.getFragRetryOrSwitchAction(t),void(t.errorAction.action=ia);case rr.LEVEL_EMPTY_ERROR:case rr.LEVEL_PARSING_ERROR:{var a,o;const e=t.parent===hn?t.level:s.loadLevel;t.details===rr.LEVEL_EMPTY_ERROR&&null!=(a=t.context)&&null!=(o=a.levelDetails)&&o.live?t.errorAction=this.getPlaylistRetryOrSwitchAction(t,e):(t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,e))}return;case rr.LEVEL_LOAD_ERROR:case rr.LEVEL_LOAD_TIMEOUT:return void("number"==typeof(null==n?void 0:n.level)&&(t.errorAction=this.getPlaylistRetryOrSwitchAction(t,n.level)));case rr.AUDIO_TRACK_LOAD_ERROR:case rr.AUDIO_TRACK_LOAD_TIMEOUT:case rr.SUBTITLE_LOAD_ERROR:case rr.SUBTITLE_TRACK_LOAD_TIMEOUT:if(n){const e=s.levels[s.loadLevel];if(e&&(n.type===on&&e.hasAudioGroup(n.groupId)||n.type===ln&&e.hasSubtitleGroup(n.groupId)))return t.errorAction=this.getPlaylistRetryOrSwitchAction(t,s.loadLevel),t.errorAction.action=ia,void(t.errorAction.flags=aa)}return;case rr.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:{const e=s.levels[s.loadLevel],i=null==e?void 0:e.attrs["HDCP-LEVEL"];i?t.errorAction={action:ia,flags:oa,hdcpLevel:i}:this.keySystemError(t)}return;case rr.BUFFER_ADD_CODEC_ERROR:case rr.REMUX_ALLOC_ERROR:case rr.BUFFER_APPEND_ERROR:return void(t.errorAction=this.getLevelSwitchAction(t,null!=(r=t.level)?r:s.loadLevel));case rr.INTERNAL_EXCEPTION:case rr.BUFFER_APPENDING_ERROR:case rr.BUFFER_FULL_ERROR:case rr.LEVEL_SWITCH_ERROR:case rr.BUFFER_STALLED_ERROR:case rr.BUFFER_SEEK_OVER_HOLE:case rr.BUFFER_NUDGE_ON_STALL:return void(t.errorAction={action:ta,flags:na})}t.type===ir.KEY_SYSTEM_ERROR&&this.keySystemError(t)}keySystemError(e){const t=this.getVariantLevelIndex(e.frag);e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,t)}getPlaylistRetryOrSwitchAction(e,t){const i=Yn(this.hls.config.playlistLoadPolicy,e),r=this.playlistError++;if(Xn(i,r,Wn(e),e.response))return{action:sa,flags:na,retryConfig:i,retryCount:r};const s=this.getLevelSwitchAction(e,t);return i&&(s.retryConfig=i,s.retryCount=r),s}getFragRetryOrSwitchAction(e){const t=this.hls,i=this.getVariantLevelIndex(e.frag),r=t.levels[i],{fragLoadPolicy:s,keyLoadPolicy:n}=t.config,a=Yn(e.details.startsWith("key")?n:s,e),o=t.levels.reduce(((e,t)=>e+t.fragmentError),0);if(r){e.details!==rr.FRAG_GAP&&r.fragmentError++;if(Xn(a,o,Wn(e),e.response))return{action:sa,flags:na,retryConfig:a,retryCount:o}}const l=this.getLevelSwitchAction(e,i);return a&&(l.retryConfig=a,l.retryCount=o),l}getLevelSwitchAction(e,t){const i=this.hls;null==t&&(t=i.loadLevel);const r=this.hls.levels[t];if(r){var s,n;const t=e.details;r.loadError++,t===rr.BUFFER_APPEND_ERROR&&r.fragmentError++;let l=-1;const{levels:h,loadLevel:c,minAutoLevel:d,maxAutoLevel:u}=i;i.autoLevelEnabled||(i.loadLevel=-1);const f=null==(s=e.frag)?void 0:s.type,g=(f===cn&&t===rr.FRAG_PARSING_ERROR||"audio"===e.sourceBufferName&&(t===rr.BUFFER_ADD_CODEC_ERROR||t===rr.BUFFER_APPEND_ERROR))&&h.some((({audioCodec:e})=>r.audioCodec!==e)),m="video"===e.sourceBufferName&&(t===rr.BUFFER_ADD_CODEC_ERROR||t===rr.BUFFER_APPEND_ERROR)&&h.some((({codecSet:e,audioCodec:t})=>r.codecSet!==e&&r.audioCodec===t)),{type:p,groupId:v}=null!=(n=e.context)?n:{};for(let i=h.length;i--;){const s=(i+c)%h.length;if(s!==c&&s>=d&&s<=u&&0===h[s].loadError){var a,o;const i=h[s];if(t===rr.FRAG_GAP&&f===hn&&e.frag){const t=h[s].details;if(t){const i=Jn(e.frag,t.fragments,e.frag.start);if(null!=i&&i.gap)continue}}else{if(p===on&&i.hasAudioGroup(v)||p===ln&&i.hasSubtitleGroup(v))continue;if(f===cn&&null!=(a=r.audioGroups)&&a.some((e=>i.hasAudioGroup(e)))||f===dn&&null!=(o=r.subtitleGroups)&&o.some((e=>i.hasSubtitleGroup(e)))||g&&r.audioCodec===i.audioCodec||!g&&r.audioCodec!==i.audioCodec||m&&r.codecSet===i.codecSet)continue}l=s;break}}if(l>-1&&i.loadLevel!==l)return e.levelRetry=!0,this.playlistError=0,{action:ia,flags:na,nextAutoLevel:l}}return{action:ia,flags:aa}}onErrorOut(e,t){var i;switch(null==(i=t.errorAction)?void 0:i.action){case ta:break;case ia:this.sendAlternateToPenaltyBox(t),t.errorAction.resolved||t.details===rr.FRAG_GAP?/MediaSource readyState: ended/.test(t.error.message)&&(this.warn(`MediaSource ended after "${t.sourceBufferName}" sourceBuffer append error. Attempting to recover from media error.`),this.hls.recoverMediaError()):t.fatal=!0}t.fatal&&this.hls.stopLoad()}sendAlternateToPenaltyBox(e){const t=this.hls,i=e.errorAction;if(!i)return;const{flags:r,hdcpLevel:s,nextAutoLevel:n}=i;switch(r){case na:this.switchLevel(e,n);break;case oa:s&&(t.maxHdcpLevel=Dn[Dn.indexOf(s)-1],i.resolved=!0),this.warn(`Restricting playback to HDCP-LEVEL of "${t.maxHdcpLevel}" or lower`)}i.resolved||this.switchLevel(e,n)}switchLevel(e,t){void 0!==t&&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)}},fpsController: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(tr.MEDIA_ATTACHING,this.onMediaAttaching,this)}unregisterListeners(){this.hls.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(e,t){const i=this.hls.config;if(i.capLevelOnFPSDrop){const e=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=e,e&&"function"==typeof e.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),i.fpsDroppedMonitoringPeriod)}}checkFPS(e,t,i){const r=performance.now();if(t){if(this.lastTime){const e=r-this.lastTime,s=i-this.lastDroppedFrames,n=t-this.lastDecodedFrames,a=1e3*s/e,o=this.hls;if(o.trigger(tr.FPS_DROP,{currentDropped:s,currentDecoded:n,totalDroppedFrames:i}),a>0&&s>o.config.fpsDroppedMonitoringThreshold*n){let e=o.currentLevel;lr.warn("drop FPS ratio greater than max allowed value for currentLevel: "+e),e>0&&(-1===o.autoLevelCapping||o.autoLevelCapping>=e)&&(e-=1,o.trigger(tr.FPS_DROP_LEVEL_CAPPING,{level:e,droppedLevel:o.currentLevel}),o.autoLevelCapping=e,this.streamController.nextLevelSwitch())}}this.lastTime=r,this.lastDroppedFrames=i,this.lastDecodedFrames=t}}checkFPSInterval(){const e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){const t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)}},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:Mr,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableID3MetadataCues:!0,useMediaCapabilities:!0,certLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null}},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},{cueHandler:fc,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:class extends no{constructor(e,t,i){super(e,t,i,"[subtitle-stream-controller]",dn),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this._registerListeners()}onHandlerDestroying(){this._unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}_registerListeners(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.ERROR,this.onError,this),e.on(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(tr.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(tr.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this)}_unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.ERROR,this.onError,this),e.off(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(tr.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(tr.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.off(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this)}startLoad(e){this.stopLoad(),this.state=qa,this.setInterval(500),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){const{frag:i,success:r}=t;if(this.fragPrevious=i,this.state=qa,!r)return;const s=this.tracksBuffered[this.currentTrackId];if(!s)return;let n;const a=i.start;for(let e=0;e=s[e].start&&a<=s[e].end){n=s[e];break}const o=i.start+i.duration;n?n.end=o:(n={start:a,end:o},s.push(n)),this.fragmentTracker.fragBuffered(i),this.fragBufferedComplete(i,null)}onBufferFlushing(e,t){const{startOffset:i,endOffset:r}=t;if(0===i&&r!==Number.POSITIVE_INFINITY){const e=r-1;if(e<=0)return;t.endOffsetSubtitles=Math.max(0,e),this.tracksBuffered.forEach((t=>{for(let i=0;inew Fn(e))):(this.tracksBuffered=[],this.levels=t.map((e=>{const t=new Fn(e);return this.tracksBuffered[t.id]=[],t})),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,dn),this.fragPrevious=null,this.mediaBuffer=null)}onSubtitleTrackSwitch(e,t){var i;if(this.currentTrackId=t.id,null==(i=this.levels)||!i.length||-1===this.currentTrackId)return void this.clearInterval();const r=this.levels[this.currentTrackId];null!=r&&r.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,r&&this.setInterval(500)}onSubtitleTrackLoaded(e,t){var i;const{currentTrackId:r,levels:s}=this,{details:n,id:a}=t;if(!s)return void this.warn(`Subtitle tracks were reset while loading level ${a}`);const o=s[a];if(a>=s.length||!o)return;this.log(`Subtitle track ${a} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""},duration:${n.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let l=0;if(n.live||null!=(i=o.details)&&i.live){const e=this.mainDetails;if(n.deltaUpdateFailed||!e)return;const t=e.fragments[0];var h;if(o.details)l=this.alignPlaylists(n,o.details,null==(h=this.levelLastLoaded)?void 0:h.details),0===l&&t&&(l=t.start,Kn(n,l));else n.hasProgramDateTime&&e.hasProgramDateTime?(Fa(n,e),l=n.fragments[0].start):t&&(l=t.start,Kn(n,l))}if(o.details=n,this.levelLastLoaded=o,a===r&&(this.startFragRequested||!this.mainDetails&&n.live||this.setStartPosition(this.mainDetails||n,l),this.tick(),n.live&&!this.fragCurrent&&this.media&&this.state===qa)){Jn(null,n.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),o.details=void 0)}}_handleFragmentLoadComplete(e){const{frag:t,payload:i}=e,r=t.decryptdata,s=this.hls;if(!this.fragContextChanged(t)&&i&&i.byteLength>0&&null!=r&&r.key&&r.iv&&"AES-128"===r.method){const e=performance.now();this.decrypter.decrypt(new Uint8Array(i),r.key.buffer,r.iv.buffer).catch((e=>{throw s.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.FRAG_DECRYPT_ERROR,fatal:!1,error:e,reason:e.message,frag:t}),e})).then((i=>{const r=performance.now();s.trigger(tr.FRAG_DECRYPTED,{frag:t,payload:i,stats:{tstart:e,tdecrypt:r}})})).catch((e=>{this.warn(`${e.name}: ${e.message}`),this.state=qa}))}}doTick(){if(this.media){if(this.state===qa){const{currentTrackId:e,levels:t}=this,i=null==t?void 0:t[e];if(!i||!t.length||!i.details)return;const{config:r}=this,s=this.getLoadPosition(),n=xa.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],s,r.maxBufferHole),{end:a,len:o}=n,l=this.getFwdBufferInfo(this.media,hn),h=i.details;if(o>this.getMaxBufferLength(null==l?void 0:l.len)+h.levelTargetDuration)return;const c=h.fragments,d=c.length,u=h.edge;let f=null;const g=this.fragPrevious;if(au-e?0:e;f=Jn(g,c,Math.max(c[0].start,a),t),!f&&g&&g.startthis.pollTrackChange(0),this.useTextTrackPolling=!1,this.subtitlePollingInterval=-1,this._subtitleDisplay=!0,this.onTextTracksChanged=()=>{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let e=null;const t=Tn(this.media.textTracks);for(let i=0;i-1&&this.toggleTrackModes()}registerListeners(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVEL_LOADING,this.onLevelLoading,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVEL_LOADING,this.onLevelLoading,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(tr.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);Tn(this.media.textTracks).forEach((e=>{vn(e)})),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){const{id:i,groupId:r,details:s}=t,n=this.tracksInGroup[i];if(!n||n.groupId!==r)return void this.warn(`Subtitle track with id:${i} and group:${r} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=t.details,this.log(`Subtitle track ${i} "${n.name}" lang:${n.lang} group:${r} loaded [${s.startSN}-${s.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.subtitleGroups||null,r=this.groupIds;let s=this.currentTrack;if(!i||(null==r?void 0:r.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==r?void 0:r.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!s&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.subtitlePreference;if(!s&&t){this.selectDefaultTrack=!1;const i=va(t,e);if(i>-1)s=e[i];else{const e=va(t,this.tracks);s=this.tracks[e]}}let r=this.findTrackId(s);-1===r&&s&&(r=this.findTrackId(null));const n={subtitleTracks:e};this.log(`Updating subtitle tracks, ${e.length} track(s) found in "${null==i?void 0:i.join(",")}" group-id`),this.hls.trigger(tr.SUBTITLE_TRACKS_UPDATED,n),-1!==r&&-1===this.trackId&&this.setSubtitleTrack(r)}else this.shouldReloadPlaylist(s)&&this.setSubtitleTrack(this.trackId)}findTrackId(e){const t=this.tracksInGroup,i=this.selectDefaultTrack;for(let r=0;r-1){const e=this.tracksInGroup[r];return this.setSubtitleTrack(r),e}if(i)return null;{const i=va(e,t);if(i>-1)return t[i]}}}return null}loadPlaylist(e){super.loadPlaylist();const t=this.currentTrack;if(this.shouldLoadPlaylist(t)&&t){const i=t.id,r=t.groupId;let s=t.url;if(e)try{s=e.addDirectives(s)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}this.log(`Loading subtitle playlist for id ${i}`),this.hls.trigger(tr.SUBTITLE_TRACK_LOADING,{url:s,id:i,groupId:r,deliveryDirectives:e||null})}}toggleTrackModes(){const{media:e}=this;if(!e)return;const t=Tn(e.textTracks),i=this.currentTrack;let r;if(i&&(r=t.filter((e=>vl(i,e)))[0],r||this.warn(`Unable to find subtitle TextTrack with name "${i.name}" and language "${i.lang}"`)),[].slice.call(t).forEach((e=>{"disabled"!==e.mode&&e!==r&&(e.mode="disabled")})),r){const e=this.subtitleDisplay?"showing":"hidden";r.mode!==e&&(r.mode=e)}}setSubtitleTrack(e){const t=this.tracksInGroup;if(!this.media)return void(this.queuedDefaultTrack=e);if(e<-1||e>=t.length||!Ji(e))return void this.warn(`Invalid subtitle track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,r=t[e]||null;if(this.trackId=e,this.currentTrack=r,this.toggleTrackModes(),!r)return void this.hls.trigger(tr.SUBTITLE_TRACK_SWITCH,{id:e});const s=!!r.details&&!r.details.live;if(e===this.trackId&&r===i&&s)return;this.log(`Switching to subtitle-track ${e}`+(r?` "${r.name}" lang:${r.lang} group:${r.groupId}`:""));const{id:n,groupId:a="",name:o,type:l,url:h}=r;this.hls.trigger(tr.SUBTITLE_TRACK_SWITCH,{id:n,groupId:a,name:o,type:l,url:h});const c=this.switchParams(r.url,null==i?void 0:i.details,r.details);this.loadPlaylist(c)}},timelineController: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={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},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(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(tr.FRAG_LOADING,this.onFragLoading,this),e.on(tr.FRAG_LOADED,this.onFragLoaded,this),e.on(tr.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(tr.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(tr.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(tr.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(tr.FRAG_LOADING,this.onFragLoading,this),e.off(tr.FRAG_LOADED,this.onFragLoaded,this),e.off(tr.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(tr.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(tr.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(tr.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(tr.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)){const e=new Gl(this,"textTrack1"),t=new Gl(this,"textTrack2"),i=new Gl(this,"textTrack3"),r=new Gl(this,"textTrack4");this.cea608Parser1=new Ul(1,e,t),this.cea608Parser2=new Ul(3,i,r)}}addCues(e,t,i,r,s){let n=!1;for(let e=s.length;e--;){const r=s[e],c=(a=r[0],o=r[1],l=t,h=i,Math.min(o,h)-Math.max(a,l));if(c>=0&&(r[0]=Math.min(r[0],t),r[1]=Math.max(r[1],i),n=!0,c/(i-t)>.5))return}var a,o,l,h;if(n||s.push([t,i]),this.config.renderTextTracksNatively){const s=this.captionsTracks[e];this.Cues.newCue(s,t,i,r)}else{const s=this.Cues.newCue(null,t,i,r);this.hls.trigger(tr.CUES_PARSED,{type:"captions",cues:s,track:e})}}onInitPtsFound(e,{frag:t,id:i,initPTS:r,timescale:s}){const{unparsedVttFrags:n}=this;"main"===i&&(this.initPTS[t.cc]={baseTime:r,timescale:s}),n.length&&(this.unparsedVttFrags=[],n.forEach((e=>{this.onFragLoaded(tr.FRAG_LOADED,e)})))}getExistingTrack(e,t){const{media:i}=this;if(i)for(let r=0;r{vn(e[t]),delete e[t]})),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:e}=this;if(!e)return;const t=e.textTracks;if(t)for(let e=0;ee.textCodec===rh));if(this.config.enableWebVTT||r&&this.config.enableIMSC1){if(ml(this.tracks,i))return void(this.tracks=i);if(this.textTracks=[],this.tracks=i,this.config.renderTextTracksNatively){const e=this.media,t=e?Tn(e.textTracks):null;if(this.tracks.forEach(((e,i)=>{let r;if(t){let i=null;for(let r=0;rnull!==e)).map((e=>e.label));e.length&&lr.warn(`Media element contains unused subtitle tracks: ${e.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const e=this.tracks.map((e=>({label:e.name,kind:e.type.toLowerCase(),default:e.default,subtitleTrack:e})));this.hls.trigger(tr.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:e})}}}onManifestLoaded(e,t){this.config.enableCEA708Captions&&t.captions&&t.captions.forEach((e=>{const t=/(?:CC|SERVICE)([1-4])/.exec(e.instreamId);if(!t)return;const i=`textTrack${t[1]}`,r=this.captionsProperties[i];r&&(r.label=e.name,e.lang&&(r.languageCode=e.lang),r.media=e)}))}closedCaptionsForLevel(e){const t=this.hls.levels[e.level];return null==t?void 0:t.attrs["CLOSED-CAPTIONS"]}onFragLoading(e,t){if(this.enabled&&t.frag.type===hn){var i,r;const{cea608Parser1:e,cea608Parser2:s,lastSn:n}=this,{cc:a,sn:o}=t.frag,l=null!=(i=null==(r=t.part)?void 0:r.index)?i:-1;e&&s&&(o!==n+1||o===n&&l!==this.lastPartIndex+1||a!==this.lastCc)&&(e.reset(),s.reset()),this.lastCc=a,this.lastSn=o,this.lastPartIndex=l}}onFragLoaded(e,t){const{frag:i,payload:r}=t;if(i.type===dn)if(r.byteLength){const e=i.decryptdata,s="stats"in t;if(null==e||!e.encrypted||s){const e=this.tracks[i.level],s=this.vttCCs;s[i.cc]||(s[i.cc]={start:i.start,prevCC:this.prevCC,new:!0},this.prevCC=i.cc),e&&e.textCodec===rh?this._parseIMSC1(i,r):this._parseVTTs(t)}}else this.hls.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:new Error("Empty subtitle payload")})}_parseIMSC1(e,t){const i=this.hls;oh(t,this.initPTS[e.cc],(t=>{this._appendCues(t,e.level),i.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:e})}),(t=>{lr.log(`Failed to parse IMSC1: ${t}`),i.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e,error:t})}))}_parseVTTs(e){var t;const{frag:i,payload:r}=e,{initPTS:s,unparsedVttFrags:n}=this,a=s.length-1;if(!s[i.cc]&&-1===a)return void n.push(e);const o=this.hls;ih(null!=(t=i.initSegment)&&t.data?Es(i.initSegment.data,new Uint8Array(r)):r,this.initPTS[i.cc],this.vttCCs,i.cc,i.start,(e=>{this._appendCues(e,i.level),o.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:i})}),(t=>{const s="Missing initPTS for VTT MPEGTS"===t.message;s?n.push(e):this._fallbackToIMSC1(i,r),lr.log(`Failed to parse VTT cue: ${t}`),s&&a>i.cc||o.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:t})}))}_fallbackToIMSC1(e,t){const i=this.tracks[e.level];i.textCodec||oh(t,this.initPTS[e.cc],(()=>{i.textCodec=rh,this._parseIMSC1(e,t)}),(()=>{i.textCodec="wvtt"}))}_appendCues(e,t){const i=this.hls;if(this.config.renderTextTracksNatively){const i=this.textTracks[t];if(!i||"disabled"===i.mode)return;e.forEach((e=>pn(i,e)))}else{const r=this.tracks[t];if(!r)return;const s=r.default?"default":"subtitles"+t;i.trigger(tr.CUES_PARSED,{type:"subtitles",cues:e,track:s})}}onFragDecrypted(e,t){const{frag:i}=t;i.type===dn&&this.onFragLoaded(tr.FRAG_LOADED,t)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(e,t){this.initCea608Parsers();const{cea608Parser1:i,cea608Parser2:r}=this;if(!this.enabled||!i||!r)return;const{frag:s,samples:n}=t;if(s.type!==hn||"NONE"!==this.closedCaptionsForLevel(s))for(let e=0;eyn(e[r],t,i)))}if(this.config.renderTextTracksNatively&&0===t&&void 0!==r){const{textTracks:e}=this;Object.keys(e).forEach((i=>yn(e[i],t,r)))}}}extractCea608Data(e){const t=[[],[]],i=31&e[0];let r=2;for(let s=0;s0&&-1===e?(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t,this.state=qa):(this.loadedmetadata=!1,this.state=Ja),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}doTick(){switch(this.state){case qa:this.doTickIdle();break;case Ja:{var e;const{levels:t,trackId:i}=this,r=null==t||null==(e=t[i])?void 0:e.details;if(r){if(this.waitForCdnTuneIn(r))break;this.state=ro}break}case Qa:{var t;const e=performance.now(),i=this.retryDate;if(!i||e>=i||null!=(t=this.media)&&t.seeking){const{levels:e,trackId:t}=this;this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded((null==e?void 0:e[t])||null),this.state=qa}break}case ro:{const e=this.waitingData;if(e){const{frag:t,part:i,cache:r,complete:s}=e;if(void 0!==this.initPTS[t.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=Xa;const e={frag:t,part:i,payload:r.flush(),networkDetails:null};this._handleFragmentLoadProgress(e),s&&super._handleFragmentLoadComplete(e)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log(`Waiting fragment cc (${t.cc}) cancelled because video is at cc ${this.videoTrackCC}`),this.clearWaitingFragment();else{const e=this.getLoadPosition(),i=xa.bufferInfo(this.mediaBuffer,e,this.config.maxBufferHole);Zn(i.end,this.config.maxFragLookUpTolerance,t)<0&&(this.log(`Waiting fragment cc (${t.cc}) @ ${t.start} cancelled because another fragment at ${i.end} is needed`),this.clearWaitingFragment())}}else this.state=qa}}this.onTickEnd()}clearWaitingFragment(){const e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=qa)}resetLoadingState(){this.clearWaitingFragment(),super.resetLoadingState()}onTickEnd(){const{media:e}=this;null!=e&&e.readyState&&(this.lastCurrentTime=e.currentTime)}doTickIdle(){const{hls:e,levels:t,media:i,trackId:r}=this,s=e.config;if(!i&&(this.startFragRequested||!s.startFragPrefetch)||null==t||!t[r])return;const n=t[r],a=n.details;if(!a||a.live&&this.levelLastLoaded!==n||this.waitForCdnTuneIn(a))return void(this.state=Ja);const o=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&o&&(this.bufferFlushed=!1,this.afterBufferFlushed(o,mr,cn));const l=this.getFwdBufferInfo(o,cn);if(null===l)return;const{bufferedTrack:h,switchingTrack:c}=this;if(!c&&this._streamEnded(l,a))return e.trigger(tr.BUFFER_EOS,{type:"audio"}),void(this.state=to);const d=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,hn),u=l.len,f=this.getMaxBufferLength(null==d?void 0:d.len),g=a.fragments,m=g[0].start;let p=this.flushing?this.getLoadPosition():l.end;if(c&&i){const e=this.getLoadPosition();h&&!pl(c.attrs,h.attrs)&&(p=e),a.PTSKnown&&em||l.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),i.currentTime=m+.05)}if(u>=f&&!c&&pd.end+a.targetduration;if(T||(null==d||!d.len)&&l.len){const e=this.getAppendedFrag(v.start,hn);if(null===e)return;if(y||(y=!!e.gap||!!T&&0===d.len),T&&!y||y&&l.nextStart&&l.nextStartnew Fn(e)))}onAudioTrackSwitching(e,t){const i=!!t.url;this.trackId=t.id;const{fragCurrent:r}=this;r&&(r.abortRequests(),this.removeUnbufferedFrags(r.start)),this.resetLoadingState(),i?this.setInterval(100):this.resetTransmuxer(),i?(this.switchingTrack=t,this.state=qa,this.flushAudioIfNeeded(t)):(this.switchingTrack=null,this.bufferedTrack=t,this.state=Ya),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,null!==this.cachedTrackLoadedData&&(this.hls.trigger(tr.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)}onAudioTrackLoaded(e,t){var i;if(null==this.mainDetails)return void(this.cachedTrackLoadedData=t);const{levels:r}=this,{details:s,id:n}=t;if(!r)return void this.warn(`Audio tracks were reset while loading level ${n}`);this.log(`Audio track ${n} loaded [${s.startSN},${s.endSN}]${s.lastPartSn?`[part-${s.lastPartSn}-${s.lastPartIndex}]`:""},duration:${s.totalduration}`);const a=r[n];let o=0;if(s.live||null!=(i=a.details)&&i.live){this.checkLiveUpdate(s);const e=this.mainDetails;if(s.deltaUpdateFailed||!e)return;var l;if(!a.details&&s.hasProgramDateTime&&e.hasProgramDateTime)Fa(s,e),o=s.fragments[0].start;else o=this.alignPlaylists(s,a.details,null==(l=this.levelLastLoaded)?void 0:l.details)}a.details=s,this.levelLastLoaded=a,this.startFragRequested||!this.mainDetails&&s.live||this.setStartPosition(this.mainDetails||s,o),this.state!==Ja||this.waitForCdnTuneIn(s)||(this.state=qa),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:r,payload:s}=e,{config:n,trackId:a,levels:o}=this;if(!o)return void this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const l=o[a];if(!l)return void this.warn("Audio track is undefined on fragment load progress");const h=l.details;if(!h)return this.warn("Audio track details undefined on fragment load progress"),void this.removeUnbufferedFrags(i.start);const c=n.defaultAudioCodec||l.audioCodec||"mp4a.40.2";let d=this.transmuxer;d||(d=this.transmuxer=new gl(this.hls,cn,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));const u=this.initPTS[i.cc],f=null==(t=i.initSegment)?void 0:t.data;if(void 0!==u){const e=!1,t=r?r.index:-1,n=-1!==t,a=new Ca(i.level,i.sn,i.stats.chunkCount,s.byteLength,t,n);d.push(s,f,c,"",i,r,h.totalduration,e,a,u)}else{this.log(`Unknown video PTS for cc ${i.cc}, waiting for video PTS before demuxing audio frag ${i.sn} of [${h.startSN} ,${h.endSN}],track ${a}`);const{cache:e}=this.waitingData=this.waitingData||{frag:i,part:r,cache:new ao,complete:!1};e.push(new Uint8Array(s)),this.waitingVideoCC=this.videoTrackCC,this.state=ro}}_handleFragmentLoadComplete(e){this.waitingData?this.waitingData.complete=!0:super._handleFragmentLoadComplete(e)}onBufferReset(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1}onBufferCreated(e,t){const i=t.tracks.audio;i&&(this.mediaBuffer=i.buffer||null),t.tracks.video&&(this.videoBuffer=t.tracks.video.buffer||null)}onFragBuffered(e,t){const{frag:i,part:r}=t;if(i.type===cn)if(this.fragContextChanged(i))this.warn(`Fragment ${i.sn}${r?" p: "+r.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);else{if("initSegment"!==i.sn){this.fragPrevious=i;const e=this.switchingTrack;e&&(this.bufferedTrack=e,this.switchingTrack=null,this.hls.trigger(tr.AUDIO_TRACK_SWITCHED,qi({},e)))}this.fragBufferedComplete(i,r)}else if(!this.loadedmetadata&&i.type===hn){const e=this.videoBuffer||this.media;if(e){xa.getBuffered(e).length&&(this.loadedmetadata=!0)}}}onError(e,t){var i;if(t.fatal)this.state=io;else switch(t.details){case rr.FRAG_GAP:case rr.FRAG_PARSING_ERROR:case rr.FRAG_DECRYPT_ERROR:case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(cn,t);break;case rr.AUDIO_TRACK_LOAD_ERROR:case rr.AUDIO_TRACK_LOAD_TIMEOUT:case rr.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==Ja||(null==(i=t.context)?void 0:i.type)!==on||(this.state=qa);break;case rr.BUFFER_APPEND_ERROR:case rr.BUFFER_FULL_ERROR:if(!t.parent||"audio"!==t.parent)return;if(t.details===rr.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&(this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"));break;case rr.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}onBufferFlushing(e,{type:t}){t!==pr&&(this.flushing=!0)}onBufferFlushed(e,{type:t}){if(t!==pr){this.flushing=!1,this.bufferFlushed=!0,this.state===to&&(this.state=qa);const e=this.mediaBuffer||this.media;e&&(this.afterBufferFlushed(e,t,cn),this.tick())}}_handleTransmuxComplete(e){var t;const i="audio",{hls:r}=this,{remuxResult:s,chunkMeta:n}=e,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{details:c}=h,{audio:d,text:u,id3:f,initSegment:g}=s;if(!this.fragContextChanged(o)&&c){if(this.state=Za,this.switchingTrack&&d&&this.completeAudioSwitch(this.switchingTrack),null!=g&&g.tracks){const e=o.initSegment||o;this._bufferInitSegment(h,g.tracks,e,n),r.trigger(tr.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:g.tracks})}if(d){const{startPTS:e,endPTS:t,startDTS:i,endDTS:r}=d;l&&(l.elementaryStreams[mr]={startPTS:e,endPTS:t,startDTS:i,endDTS:r}),o.setElementaryStreamInfo(mr,e,t,i,r),this.bufferFragmentData(d,o,l,n)}if(null!=f&&null!=(t=f.samples)&&t.length){const e=Qi({id:i,frag:o,details:c},f);r.trigger(tr.FRAG_PARSING_METADATA,e)}if(u){const e=Qi({id:i,frag:o,details:c},u);r.trigger(tr.FRAG_PARSING_USERDATA,e)}}else this.fragmentTracker.removeFragment(o)}_bufferInitSegment(e,t,i,r){if(this.state!==Za)return;t.video&&delete t.video;const s=t.audio;if(!s)return;s.id="audio";const n=e.audioCodec;this.log(`Init audio buffer, container:${s.container}, codecs[level/parsed]=[${n}/${s.codec}]`),n&&1===n.split(",").length&&(s.levelCodec=n),this.hls.trigger(tr.BUFFER_CODECS,t);const a=s.initSegment;if(null!=a&&a.byteLength){const e={type:"audio",frag:i,part:null,chunkMeta:r,parent:i.type,data:a};this.hls.trigger(tr.BUFFER_APPENDING,e)}this.tickImmediate()}loadFragment(e,t,i){const r=this.fragmentTracker.getState(e);var s;if(this.fragCurrent=e,this.switchingTrack||r===ba||r===wa)if("initSegment"===e.sn)this._loadInitSegment(e,t);else if(null!=(s=t.details)&&s.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=ro;const i=this.mainDetails;i&&i.fragments[0].start!==t.details.fragments[0].start&&Fa(t.details,i)}else this.startFragRequested=!0,super.loadFragment(e,t,i);else this.clearTrackerIfNeeded(e)}flushAudioIfNeeded(e){const{media:t,bufferedTrack:i}=this,r=null==i?void 0:i.attrs,s=e.attrs;t&&r&&(r.CHANNELS!==s.CHANNELS||i.name!==e.name||i.lang!==e.lang)&&(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null)}completeAudioSwitch(e){const{hls:t}=this;this.flushAudioIfNeeded(e),this.bufferedTrack=e,this.switchingTrack=null,t.trigger(tr.AUDIO_TRACK_SWITCHED,qi({},e))}},audioTrackController:class extends la{constructor(e){super(e,"[audio-track-controller]"),this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVEL_LOADING,this.onLevelLoading,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVEL_LOADING,this.onLevelLoading,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(tr.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.audioTracks||[]}onAudioTrackLoaded(e,t){const{id:i,groupId:r,details:s}=t,n=this.tracksInGroup[i];if(!n||n.groupId!==r)return void this.warn(`Audio track with id:${i} and group:${r} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=t.details,this.log(`Audio track ${i} "${n.name}" lang:${n.lang} group:${r} loaded [${s.startSN}-${s.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.audioGroups||null,r=this.groupIds;let s=this.currentTrack;if(!i||(null==r?void 0:r.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==r?void 0:r.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!s&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.audioPreference;if(!s&&t){const i=va(t,e,Ta);if(i>-1)s=e[i];else{const e=va(t,this.tracks);s=this.tracks[e]}}let r=this.findTrackId(s);-1===r&&s&&(r=this.findTrackId(null));const a={audioTracks:e};this.log(`Updating audio tracks, ${e.length} track(s) found in group(s): ${null==i?void 0:i.join(",")}`),this.hls.trigger(tr.AUDIO_TRACKS_UPDATED,a);const o=this.trackId;if(-1!==r&&-1===o)this.setAudioTrack(r);else if(e.length&&-1===o){var n;const t=new Error(`No audio track selected for current audio group-ID(s): ${null==(n=this.groupIds)?void 0:n.join(",")} track count: ${e.length}`);this.warn(t.message),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:t})}}else this.shouldReloadPlaylist(s)&&this.setAudioTrack(this.trackId)}onError(e,t){!t.fatal&&t.context&&(t.context.type!==on||t.context.id!==this.trackId||this.groupIds&&-1===this.groupIds.indexOf(t.context.groupId)||(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){const t=this.hls;if(t.config.audioPreference=e,e){const i=this.allAudioTracks;if(this.selectDefaultTrack=!1,i.length){const r=this.currentTrack;if(r&&ya(e,r,Ta))return r;const s=va(e,this.tracksInGroup,Ta);if(s>-1){const e=this.tracksInGroup[s];return this.setAudioTrack(s),e}if(r){let r=t.loadLevel;-1===r&&(r=t.firstAutoLevel);const s=function(e,t,i,r,s){const n=t[r],a=t.reduce(((e,t,i)=>{const r=t.uri;return(e[r]||(e[r]=[])).push(i),e}),{})[n.uri];a.length>1&&(r=Math.max.apply(Math,a));const o=n.videoRange,l=n.frameRate,h=n.codecSet.substring(0,4),c=Ea(t,r,(t=>{if(t.videoRange!==o||t.frameRate!==l||t.codecSet.substring(0,4)!==h)return!1;const r=t.audioGroups,n=i.filter((e=>!r||-1!==r.indexOf(e.groupId)));return va(e,n,s)>-1}));return c>-1?c:Ea(t,r,(t=>{const r=t.audioGroups,n=i.filter((e=>!r||-1!==r.indexOf(e.groupId)));return va(e,n,s)>-1}))}(e,t.levels,i,r,Ta);if(-1===s)return null;t.nextLoadLevel=s}if(e.channels||e.audioCodec){const t=va(e,i);if(t>-1)return i[t]}}}return null}setAudioTrack(e){const t=this.tracksInGroup;if(e<0||e>=t.length)return void this.warn(`Invalid audio track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,r=t[e],s=r.details&&!r.details.live;if(e===this.trackId&&r===i&&s)return;if(this.log(`Switching to audio-track ${e} "${r.name}" lang:${r.lang} group:${r.groupId} channels:${r.channels}`),this.trackId=e,this.currentTrack=r,this.hls.trigger(tr.AUDIO_TRACK_SWITCHING,qi({},r)),s)return;const n=this.switchParams(r.url,null==i?void 0:i.details,r.details);this.loadPlaylist(n)}findTrackId(e){const t=this.tracksInGroup;for(let i=0;i{this.initialized&&(this.starved=!0),this.buffering=!0},this.onPlaying=()=>{this.initialized||(this.initialized=!0),this.buffering=!1},this.applyPlaylistData=e=>{try{this.apply(e,{ot:Eh.MANIFEST,su:!this.initialized})}catch(e){lr.warn("Could not generate manifest CMCD data.",e)}},this.applyFragmentData=e=>{try{const t=e.frag,i=this.hls.levels[t.level],r=this.getObjectType(t),s={d:1e3*t.duration,ot:r};r!==Eh.VIDEO&&r!==Eh.AUDIO&&r!=Eh.MUXED||(s.br=i.bitrate/1e3,s.tb=this.getTopBandwidth(r)/1e3,s.bl=this.getBufferLength(r)),this.apply(e,s)}catch(e){lr.warn("Could not generate segment CMCD data.",e)}},this.hls=e;const t=this.config=e.config,{cmcd:i}=t;null!=i&&(t.pLoader=this.createPlaylistLoader(),t.fLoader=this.createFragmentLoader(),this.sid=i.sessionId||function(){try{return crypto.randomUUID()}catch(e){try{const e=URL.createObjectURL(new Blob),t=e.toString();return URL.revokeObjectURL(e),t.slice(t.lastIndexOf("/")+1)}catch(e){let t=(new Date).getTime();const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const i=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?i:3&i|8).toString(16)}));return i}}}(),this.cid=i.contentId,this.useHeaders=!0===i.useHeaders,this.includeKeys=i.includeKeys,this.registerListeners())}registerListeners(){const e=this.hls;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHED,this.onMediaDetached,this),e.on(tr.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){const e=this.hls;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHED,this.onMediaDetached,this),e.off(tr.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 i,r;this.audioBuffer=null==(i=t.tracks.audio)?void 0:i.buffer,this.videoBuffer=null==(r=t.tracks.video)?void 0:r.buffer}createData(){var e;return{v:1,sf:Sh.HLS,sid:this.sid,cid:this.cid,pr:null==(e=this.media)?void 0:e.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}}apply(e,t={}){Qi(t,this.createData());const i=t.ot===Eh.INIT||t.ot===Eh.VIDEO||t.ot===Eh.MUXED;this.starved&&i&&(t.bs=!0,t.su=!0,this.starved=!1),null==t.su&&(t.su=this.buffering);const{includeKeys:r}=this;r&&(t=Object.keys(t).reduce(((e,i)=>(r.includes(i)&&(e[i]=t[i]),e)),{})),this.useHeaders?(e.headers||(e.headers={}),ec(e.headers,t)):e.url=rc(e.url,t)}getObjectType(e){const{type:t}=e;return"subtitle"===t?Eh.TIMED_TEXT:"initSegment"===e.sn?Eh.INIT:"audio"===t?Eh.AUDIO:"main"===t?this.hls.audioTracks.length?Eh.VIDEO:Eh.MUXED:void 0}getTopBandwidth(e){let t,i=0;const r=this.hls;if(e===Eh.AUDIO)t=r.audioTracks;else{const e=r.maxAutoLevel,i=e>-1?e+1:r.levels.length;t=r.levels.slice(0,i)}for(const e of t)e.bitrate>i&&(i=e.bitrate);return i>0?i:NaN}getBufferLength(e){const t=this.hls.media,i=e===Eh.AUDIO?this.audioBuffer:this.videoBuffer;if(!i||!t)return NaN;return 1e3*xa.bufferInfo(i,t.currentTime,this.config.maxBufferHole).len}createPlaylistLoader(){const{pLoader:e}=this.config,t=this.applyPlaylistData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,r){t(e),this.loader.load(e,i,r)}}}createFragmentLoader(){const{fLoader:e}=this.config,t=this.applyFragmentData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,r){t(e),this.loader.load(e,i,r)}}}},contentSteeringController: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=lr.log.bind(lr,"[content-steering]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const e=this.hls;e&&(e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.ERROR,this.onError,this))}startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){const e=1e3*this.timeToLoad-(performance.now()-this.updated);if(e>0)return void this.scheduleRefresh(this.uri,e)}this.loadSteeringManifest(this.uri)}}stopLoad(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()}clearTimeout(){-1!==this.reloadTimer&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(e){const t=this.levels;t&&(this.levels=t.filter((t=>t!==e)))}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(e,t){const{contentSteering:i}=t;null!==i&&(this.pathwayId=i.pathwayId,this.uri=i.uri,this.started&&this.startLoad())}onManifestParsed(e,t){this.audioTracks=t.audioTracks,this.subtitleTracks=t.subtitleTracks}onError(e,t){const{errorAction:i}=t;if((null==i?void 0:i.action)===ia&&i.flags===aa){const e=this.levels;let r=this.pathwayPriority,s=this.pathwayId;if(t.context){const{groupId:i,pathwayId:r,type:n}=t.context;i&&e?s=this.getPathwayForGroupId(i,n,s):r&&(s=r)}s in this.penalizedPathways||(this.penalizedPathways[s]=performance.now()),!r&&e&&(r=e.reduce(((e,t)=>(-1===e.indexOf(t.pathwayId)&&e.push(t.pathwayId),e)),[])),r&&r.length>1&&(this.updatePathwayPriority(r),i.resolved=this.pathwayId!==s),i.resolved||lr.warn(`Could not resolve ${t.details} ("${t.error.message}") with content-steering for Pathway: ${s} levels: ${e?e.length:e} priorities: ${JSON.stringify(r)} penalized: ${JSON.stringify(this.penalizedPathways)}`)}}filterParsedLevels(e){this.levels=e;let t=this.getLevelsForPathway(this.pathwayId);if(0===t.length){const i=e[0].pathwayId;this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to "${i}"`),t=this.getLevelsForPathway(i),this.pathwayId=i}return t.length!==e.length?(this.log(`Found ${t.length}/${e.length} levels in Pathway "${this.pathwayId}"`),t):e}getLevelsForPathway(e){return null===this.levels?[]:this.levels.filter((t=>e===t.pathwayId))}updatePathwayPriority(e){let t;this.pathwayPriority=e;const i=this.penalizedPathways,r=performance.now();Object.keys(i).forEach((e=>{r-i[e]>3e5&&delete i[e]}));for(let r=0;r0){this.log(`Setting Pathway to "${s}"`),this.pathwayId=s,jn(t),this.hls.trigger(tr.LEVELS_UPDATED,{levels:t});const e=this.hls.levels[n];a&&e&&this.levels&&(e.attrs["STABLE-VARIANT-ID"]!==a.attrs["STABLE-VARIANT-ID"]&&e.bitrate!==a.bitrate&&this.log(`Unstable Pathways change from bitrate ${a.bitrate} to ${e.bitrate}`),this.hls.nextLoadLevel=n);break}}}getPathwayForGroupId(e,t,i){const r=this.getLevelsForPathway(i).concat(this.levels||[]);for(let i=0;i{const{ID:s,"BASE-ID":n,"URI-REPLACEMENT":a}=e;if(t.some((e=>e.pathwayId===s)))return;const o=this.getLevelsForPathway(n).map((e=>{const t=new dr(e.attrs);t["PATHWAY-ID"]=s;const n=t.AUDIO&&`${t.AUDIO}_clone_${s}`,o=t.SUBTITLES&&`${t.SUBTITLES}_clone_${s}`;n&&(i[t.AUDIO]=n,t.AUDIO=n),o&&(r[t.SUBTITLES]=o,t.SUBTITLES=o);const l=nc(e.uri,t["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",a),h=new Fn({attrs:t,audioCodec:e.audioCodec,bitrate:e.bitrate,height:e.height,name:e.name,url:l,videoCodec:e.videoCodec,width:e.width});if(e.audioGroups)for(let t=1;t{this.log(`Loaded steering manifest: "${r}"`);const n=e.data;if(1!==n.VERSION)return void this.log(`Steering VERSION ${n.VERSION} not supported!`);this.updated=performance.now(),this.timeToLoad=n.TTL;const{"RELOAD-URI":a,"PATHWAY-CLONES":o,"PATHWAY-PRIORITY":l}=n;if(a)try{this.uri=new self.URL(a,r).href}catch(e){return this.enabled=!1,void this.log(`Failed to parse Steering Manifest RELOAD-URI: ${a}`)}this.scheduleRefresh(this.uri||i.url),o&&this.clonePathways(o);const h={steeringManifest:n,url:r.toString()};this.hls.trigger(tr.STEERING_MANIFEST_LOADED,h),l&&this.updatePathwayPriority(l)},onError:(e,t,i,r)=>{if(this.log(`Error loading steering manifest: ${e.code} ${e.text} (${t.url})`),this.stopLoad(),410===e.code)return this.enabled=!1,void this.log(`Steering manifest ${t.url} no longer available`);let s=1e3*this.timeToLoad;if(429!==e.code)this.scheduleRefresh(this.uri||t.url,s);else{const e=this.loader;if("function"==typeof(null==e?void 0:e.getResponseHeader)){const t=e.getResponseHeader("Retry-After");t&&(s=1e3*parseFloat(t))}this.log(`Steering manifest ${t.url} rate limited`)}},onTimeout:(e,t,i)=>{this.log(`Timeout loading steering manifest (${t.url})`),this.scheduleRefresh(this.uri||t.url)}};this.log(`Requesting steering manifest: ${r}`),this.loader.load(s,o,l)}scheduleRefresh(e,t=1e3*this.timeToLoad){this.clearTimeout(),this.reloadTimer=self.setTimeout((()=>{var t;const i=null==(t=this.hls)?void 0:t.media;!i||i.ended?this.scheduleRefresh(e,1e3*this.timeToLoad):this.loadSteeringManifest(e)}),t)}}});function mc(e){return e&&"object"==typeof e?Array.isArray(e)?e.map(mc):Object.keys(e).reduce(((t,i)=>(t[i]=mc(e[i]),t)),{}):e}function pc(e){const t=e.loader;if(t!==hc&&t!==oc)lr.log("[config]: Custom loader detected, cannot enable progressive streaming"),e.progressive=!1;else{(function(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(e){}return!1})()&&(e.loader=hc,e.progressive=!0,e.enableSoftwareAES=!0,lr.log("[config]: Progressive streaming enabled, using FetchLoader"))}}let vc;class yc extends la{constructor(e,t){super(e,"[level-controller]"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=t,this._registerListeners()}_registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.on(tr.ERROR,this.onError,this)}_unregisterListeners(){const{hls:e}=this;e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.off(tr.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach((e=>{e.loadError=0,e.fragmentError=0})),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(e,t){this.resetLevels()}onManifestLoaded(e,t){const i=this.hls.config.preferManagedMediaSource,r=[],s={},n={};let a=!1,o=!1,l=!1;t.levels.forEach((e=>{var t,h;const c=e.attrs;let{audioCodec:d,videoCodec:u}=e;-1!==(null==(t=d)?void 0:t.indexOf("mp4a.40.34"))&&(vc||(vc=/chrome|firefox/i.test(navigator.userAgent)),vc&&(e.audioCodec=d=void 0)),d&&(e.audioCodec=d=Vs(d,i)),0===(null==(h=u)?void 0:h.indexOf("avc1"))&&(u=e.videoCodec=function(e){const t=e.split(".");if(t.length>2){let e=t.shift()+".";return e+=parseInt(t.shift()).toString(16),e+=("000"+parseInt(t.shift()).toString(16)).slice(-4),e}return e}(u));const{width:f,height:g,unknownCodecs:m}=e;if(a||(a=!(!f||!g)),o||(o=!!u),l||(l=!!d),null!=m&&m.length||d&&!Fs(d,"audio",i)||u&&!Fs(u,"video",i))return;const{CODECS:p,"FRAME-RATE":v,"HDCP-LEVEL":y,"PATHWAY-ID":T,RESOLUTION:E,"VIDEO-RANGE":S}=c,b=`${`${T||"."}-`}${e.bitrate}-${E}-${v}-${p}-${S}-${y}`;if(s[b])if(s[b].uri===e.url||e.attrs["PATHWAY-ID"])s[b].addGroupId("audio",c.AUDIO),s[b].addGroupId("text",c.SUBTITLES);else{const t=n[b]+=1;e.attrs["PATHWAY-ID"]=new Array(t+1).join(".");const i=new Fn(e);s[b]=i,r.push(i)}else{const t=new Fn(e);s[b]=t,n[b]=1,r.push(t)}})),this.filterAndSortMediaOptions(r,t,a,o,l)}filterAndSortMediaOptions(e,t,i,r,s){let n=[],a=[],o=e;if((i||r)&&s&&(o=o.filter((({videoCodec:e,videoRange:t,width:i,height:r})=>{return(!!e||!(!i||!r))&&(!!(s=t)&&xn.indexOf(s)>-1);var s}))),0===o.length)return void 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)}`);const e=new Error("no level with compatible codecs found in manifest");this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,error:e,reason:e.message})}}));if(t.audioTracks){const{preferManagedMediaSource:e}=this.hls.config;n=t.audioTracks.filter((t=>!t.audioCodec||Fs(t.audioCodec,"audio",e))),Tc(n)}t.subtitles&&(a=t.subtitles,Tc(a));const l=o.slice(0);o.sort(((e,t)=>{if(e.attrs["HDCP-LEVEL"]!==t.attrs["HDCP-LEVEL"])return(e.attrs["HDCP-LEVEL"]||"")>(t.attrs["HDCP-LEVEL"]||"")?1:-1;if(i&&e.height!==t.height)return e.height-t.height;if(e.frameRate!==t.frameRate)return e.frameRate-t.frameRate;if(e.videoRange!==t.videoRange)return xn.indexOf(e.videoRange)-xn.indexOf(t.videoRange);if(e.videoCodec!==t.videoCodec){const i=Bs(e.videoCodec),r=Bs(t.videoCodec);if(i!==r)return r-i}if(e.uri===t.uri&&e.codecSet!==t.codecSet){const i=$s(e.codecSet),r=$s(t.codecSet);if(i!==r)return r-i}return e.averageBitrate!==t.averageBitrate?e.averageBitrate-t.averageBitrate:0}));let h=l[0];if(this.steering&&(o=this.steering.filterParsedLevels(o),o.length!==l.length))for(let e=0;ei&&i===gc.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=e)}break}const d=s&&!r,u={levels:o,audioTracks:n,subtitleTracks:a,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:s,video:r,altAudio:!d&&n.some((e=>!!e.url))};this.hls.trigger(tr.MANIFEST_PARSED,u),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}get levels(){return 0===this._levels.length?null:this._levels}get level(){return this.currentLevelIndex}set level(e){const t=this._levels;if(0===t.length)return;if(e<0||e>=t.length){const i=new Error("invalid level idx"),r=e<0;if(this.hls.trigger(tr.ERROR,{type:ir.OTHER_ERROR,details:rr.LEVEL_SWITCH_ERROR,level:e,fatal:r,error:i,reason:i.message}),r)return;e=Math.min(e,t.length-1)}const i=this.currentLevelIndex,r=this.currentLevel,s=r?r.attrs["PATHWAY-ID"]:void 0,n=t[e],a=n.attrs["PATHWAY-ID"];if(this.currentLevelIndex=e,this.currentLevel=n,i===e&&n.details&&r&&s===a)return;this.log(`Switching to level ${e} (${n.height?n.height+"p ":""}${n.videoRange?n.videoRange+" ":""}${n.codecSet?n.codecSet+" ":""}@${n.bitrate})${a?" with Pathway "+a:""} from level ${i}${s?" with Pathway "+s:""}`);const o={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(tr.LEVEL_SWITCHING,o);const l=n.details;if(!l||l.live){const e=this.switchParams(n.uri,null==r?void 0:r.details,l);this.loadPlaylist(e)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(e){this.manualLevelIndex=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}get firstLevel(){return this._firstLevel}set firstLevel(e){this._firstLevel=e}get startLevel(){if(void 0===this._startLevel){const e=this.hls.config.startLevel;return void 0!==e?e:this.hls.firstAutoLevel}return this._startLevel}set startLevel(e){this._startLevel=e}onError(e,t){!t.fatal&&t.context&&t.context.type===an&&t.context.level===this.level&&this.checkRetry(t)}onFragBuffered(e,{frag:t}){if(void 0!==t&&t.type===hn){const e=t.elementaryStreams;if(!Object.keys(e).some((t=>!!e[t])))return;const i=this._levels[t.level];null!=i&&i.loadError&&(this.log(`Resetting level error count of ${i.loadError} on frag buffered`),i.loadError=0)}}onLevelLoaded(e,t){var i;const{level:r,details:s}=t,n=this._levels[r];var a;if(!n)return this.warn(`Invalid level index ${r}`),void(null!=(a=t.deliveryDirectives)&&a.skip&&(s.deltaUpdateFailed=!0));r===this.currentLevelIndex?(0===n.fragmentError&&(n.loadError=0),this.playlistLoaded(r,t,n.details)):null!=(i=t.deliveryDirectives)&&i.skip&&(s.deltaUpdateFailed=!0)}loadPlaylist(e){super.loadPlaylist();const t=this.currentLevelIndex,i=this.currentLevel;if(i&&this.shouldLoadPlaylist(i)){let r=i.uri;if(e)try{r=e.addDirectives(r)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}const s=i.attrs["PATHWAY-ID"];this.log(`Loading level index ${t}${void 0!==(null==e?void 0:e.msn)?" at sn "+e.msn+" part "+e.part:""} with${s?" Pathway "+s:""} ${r}`),this.clearTimer(),this.hls.trigger(tr.LEVEL_LOADING,{url:r,level:t,pathwayId:i.attrs["PATHWAY-ID"],id:0,deliveryDirectives:e||null})}}get nextLoadLevel(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(e){this.level=e,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=e)}removeLevel(e){var t;const i=this._levels.filter(((t,i)=>i!==e||(this.steering&&this.steering.removeLevel(t),t===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,t.details&&t.details.fragments.forEach((e=>e.level=-1))),!1)));jn(i),this._levels=i,this.currentLevelIndex>-1&&null!=(t=this.currentLevel)&&t.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.hls.trigger(tr.LEVELS_UPDATED,{levels:i})}onLevelsUpdated(e,{levels:t}){this._levels=t}checkMaxAutoUpdated(){const{autoLevelCapping:e,maxAutoLevel:t,maxHdcpLevel:i}=this.hls;this._maxAutoLevel!==t&&(this._maxAutoLevel=t,this.hls.trigger(tr.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:e,levels:this.levels,maxAutoLevel:t,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:i}))}}function Tc(e){const t={};e.forEach((e=>{const i=e.groupId||"";e.id=t[i]=t[i]||0,t[i]++}))}class Ec{constructor(e){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=e}abort(e){for(const i in this.keyUriToKeyInfo){const r=this.keyUriToKeyInfo[i].loader;if(r){var t;if(e&&e!==(null==(t=r.context)?void 0:t.frag.type))return;r.abort()}}}detach(){for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e];(t.mediaKeySessionContext||t.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[e]}}destroy(){this.detach();for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e].loader;t&&t.destroy()}this.keyUriToKeyInfo={}}createKeyLoadError(e,t=rr.KEY_LOAD_ERROR,i,r,s){return new Ga({type:ir.NETWORK_ERROR,details:t,fatal:!1,frag:e,response:s,error:i,networkDetails:r})}loadClear(e,t){if(this.emeController&&this.config.emeEnabled){const{sn:i,cc:r}=e;for(let e=0;e{s.setKeyFormat(e)}));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 i,r;t&&e.setKeyFormat(t);const s=e.decryptdata;if(!s){const i=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,rr.KEY_LOAD_ERROR,i))}const n=s.uri;if(!n)return Promise.reject(this.createKeyLoadError(e,rr.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${n}"`)));let a=this.keyUriToKeyInfo[n];if(null!=(i=a)&&i.decryptdata.key)return s.key=a.decryptdata.key,Promise.resolve({frag:e,keyInfo:a});var o;if(null!=(r=a)&&r.keyLoadPromise)switch(null==(o=a.mediaKeySessionContext)?void 0:o.keyStatus){case void 0:case"status-pending":case"usable":case"usable-in-future":return a.keyLoadPromise.then((t=>(s.key=t.keyInfo.decryptdata.key,{frag:e,keyInfo:a})))}switch(a=this.keyUriToKeyInfo[n]={decryptdata:s,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},s.method){case"ISO-23001-7":case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return"identity"===s.keyFormat?this.loadKeyHTTP(a,e):this.loadKeyEME(a,e);case"AES-128":return this.loadKeyHTTP(a,e);default:return Promise.reject(this.createKeyLoadError(e,rr.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${s.method}"`)))}}loadKeyEME(e,t){const i={frag:t,keyInfo:e};if(this.emeController&&this.config.emeEnabled){const t=this.emeController.loadKey(i);if(t)return(e.keyLoadPromise=t.then((t=>(e.mediaKeySessionContext=t,i)))).catch((t=>{throw e.keyLoadPromise=null,t}))}return Promise.resolve(i)}loadKeyHTTP(e,t){const i=this.config,r=new(0,i.loader)(i);return t.keyLoader=e.loader=r,e.keyLoadPromise=new Promise(((s,n)=>{const a={keyInfo:e,frag:t,responseType:"arraybuffer",url:e.decryptdata.uri},o=i.keyLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(e,t,i,r)=>{const{frag:a,keyInfo:o,url:l}=i;if(!a.decryptdata||o!==this.keyUriToKeyInfo[l])return n(this.createKeyLoadError(a,rr.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),r));o.decryptdata.key=a.decryptdata.key=new Uint8Array(e.data),a.keyLoader=null,o.loader=null,s({frag:a,keyInfo:o})},onError:(e,i,r,s)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.KEY_LOAD_ERROR,new Error(`HTTP Error ${e.code} loading key ${e.text}`),r,qi({url:a.url,data:void 0},e)))},onTimeout:(e,i,r)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),r))},onAbort:(e,i,r)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.INTERNAL_ABORTED,new Error("key loading aborted"),r))}};r.load(a,l,h)}))}resetLoader(e){const{frag:t,keyInfo:i,url:r}=e,s=i.loader;t.keyLoader===s&&(t.keyLoader=null,i.loader=null),delete this.keyUriToKeyInfo[r],s&&s.destroy()}}function Sc(){return self.SourceBuffer||self.WebKitSourceBuffer}function bc(){if(!Os())return!1;const e=Sc();return!e||e.prototype&&"function"==typeof e.prototype.appendBuffer&&"function"==typeof e.prototype.remove}class Lc{constructor(e,t,i,r){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=i,this.hls=r}destroy(){this.media=null,this.hls=this.fragmentTracker=null}poll(e,t){const{config:i,media:r,stalled:s}=this;if(null===r)return;const{currentTime:n,seeking:a}=r,o=this.seeking&&!a,l=!this.seeking&&a;if(this.seeking=a,n!==e){if(this.moved=!0,a||(this.nudgeRetry=0),null!==s){if(this.stallReported){const e=self.performance.now()-s;lr.warn(`playback not stuck anymore @${n}, after ${Math.round(e)}ms`),this.stallReported=!1}this.stalled=null}return}if(l||o)return void(this.stalled=null);if(r.paused&&!a||r.ended||0===r.playbackRate||!xa.getBuffered(r).length)return void(this.nudgeRetry=0);const h=xa.bufferInfo(r,n,0),c=h.nextStart||0;if(a){const e=h.len>2,i=!c||t&&t.start<=n||c-n>2&&!this.fragmentTracker.getPartialFragment(n);if(e||i)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var d;if(!(h.len>0)&&!c)return;const e=Math.max(c,h.start||0)-n,t=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,i=(null==t||null==(d=t.details)?void 0:d.live)?2*t.details.targetduration:2,s=this.fragmentTracker.getPartialFragment(n);if(e>0&&(e<=i||s))return void(r.paused||this._trySkipBufferHole(s))}const u=self.performance.now();if(null===s)return void(this.stalled=u);const f=u-s;if(!a&&f>=250&&(this._reportStall(h),!this.media))return;const g=xa.bufferInfo(r,n,i.maxBufferHole);this._tryFixBufferStall(g,f)}_tryFixBufferStall(e,t){const{config:i,fragmentTracker:r,media:s}=this;if(null===s)return;const n=s.currentTime,a=r.getPartialFragment(n);if(a){if(this._trySkipBufferHole(a)||!this.media)return}(e.len>i.maxBufferHole||e.nextStart&&e.nextStart-n1e3*i.highBufferWatchdogPeriod&&(lr.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}_reportStall(e){const{hls:t,media:i,stallReported:r}=this;if(!r&&i){this.stallReported=!0;const r=new Error(`Playback stalling at @${i.currentTime} due to low buffer (${JSON.stringify(e)})`);lr.warn(r.message),t.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_STALLED_ERROR,fatal:!1,error:r,buffer:e.len})}}_trySkipBufferHole(e){const{config:t,hls:i,media:r}=this;if(null===r)return 0;const s=r.currentTime,n=xa.bufferInfo(r,s,0),a=s0&&n.len<1&&r.readyState<3,h=a-s;if(h>0&&(o||l)){if(h>t.maxBufferHole){const{fragmentTracker:t}=this;let i=!1;if(0===s){const e=t.getAppendedFrag(0,hn);e&&a1?(e=0,this.bitrateTest=!0):e=i.firstAutoLevel),i.nextLoadLevel=e,this.level=i.loadLevel,this.loadedmetadata=!1}t>0&&-1===e&&(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t),this.state=qa,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=Ya}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case so:{const{levels:e,level:t}=this,i=null==e?void 0:e[t],r=null==i?void 0:i.details;if(r&&(!r.live||this.levelLastLoaded===i)){if(this.waitForCdnTuneIn(r))break;this.state=qa;break}if(this.hls.nextLoadLevel!==this.level){this.state=qa;break}break}case Qa:{var e;const t=self.performance.now(),i=this.retryDate;if(!i||t>=i||null!=(e=this.media)&&e.seeking){const{levels:e,level:t}=this,i=null==e?void 0:e[t];this.resetStartWhenNotLoaded(i||null),this.state=qa}}}this.state===qa&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){super.onTickEnd(),this.checkBuffer(),this.checkFragmentChanged()}doTickIdle(){const{hls:e,levelLastLoaded:t,levels:i,media:r}=this;if(null===t||!r&&(this.startFragRequested||!e.config.startFragPrefetch))return;if(this.altAudio&&this.audioOnly)return;const s=e.nextLoadLevel;if(null==i||!i[s])return;const n=i[s],a=this.getMainFwdBufferInfo();if(null===a)return;const o=this.getLevelDetails();if(o&&this._streamEnded(a,o)){const e={};return this.altAudio&&(e.type="video"),this.hls.trigger(tr.BUFFER_EOS,e),void(this.state=to)}e.loadLevel!==s&&-1===e.manualLevel&&this.log(`Adapting to level ${s} from level ${this.level}`),this.level=e.nextLoadLevel=s;const l=n.details;if(!l||this.state===so||l.live&&this.levelLastLoaded!==n)return this.level=s,void(this.state=so);const h=a.len,c=this.getMaxBufferLength(n.maxBitrate);if(h>=c)return;this.backtrackFragment&&this.backtrackFragment.start>a.end&&(this.backtrackFragment=null);const d=this.backtrackFragment?this.backtrackFragment.start:a.end;let u=this.getNextFragment(d,l);if(this.couldBacktrack&&!this.fragPrevious&&u&&"initSegment"!==u.sn&&this.fragmentTracker.getState(u)!==Aa){var f;const e=(null!=(f=this.backtrackFragment)?f:u).sn-l.startSN,t=l.fragments[e-1];t&&u.cc===t.cc&&(u=t,this.fragmentTracker.removeFragment(t))}else this.backtrackFragment&&a.len&&(this.backtrackFragment=null);if(u&&this.isLoopLoading(u,d)){if(!u.gap){const e=this.audioOnly&&!this.altAudio?mr:pr,t=(e===pr?this.videoBuffer:this.mediaBuffer)||this.media;t&&this.afterBufferFlushed(t,e,hn)}u=this.getNextFragmentLoopLoading(u,l,a,hn,c)}u&&(!u.initSegment||u.initSegment.data||this.bitrateTest||(u=u.initSegment),this.loadFragment(u,n,d))}loadFragment(e,t,i){const r=this.fragmentTracker.getState(e);this.fragCurrent=e,r===ba||r===wa?"initSegment"===e.sn?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,i)):this.clearTrackerIfNeeded(e)}getBufferedFrag(e){return this.fragmentTracker.getBufferedFrag(e,hn)}followingBufferedFrag(e){return e?this.getBufferedFrag(e.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:e,media:t}=this;if(null!=t&&t.readyState){let i;const r=this.getAppendedFrag(t.currentTime);r&&r.start>1&&this.flushMainBuffer(0,r.start-1);const s=this.getLevelDetails();if(null!=s&&s.live){const e=this.getMainFwdBufferInfo();if(!e||e.len<2*s.targetduration)return}if(!t.paused&&e){const t=e[this.hls.nextLoadLevel],r=this.fragLastKbps;i=r&&this.fragCurrent?this.fragCurrent.duration*t.maxBitrate/(1e3*r)+1:0}else i=0;const n=this.getBufferedFrag(t.currentTime+i);if(n){const e=this.followingBufferedFrag(n);if(e){this.abortCurrentFrag();const t=e.maxStartPTS?e.maxStartPTS:e.start,i=e.duration,r=Math.max(n.end,t+Math.min(Math.max(i-this.config.maxFragLookUpTolerance,i*(this.couldBacktrack?.5:.125)),i*(this.couldBacktrack?.75:.25)));this.flushMainBuffer(r,Number.POSITIVE_INFINITY)}}}}abortCurrentFrag(){const e=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,e&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.state){case za:case Xa:case Qa:case Za:case eo:this.state=qa}this.nextLoadPosition=this.getLoadPosition()}flushMainBuffer(e,t){super.flushMainBuffer(e,t,this.altAudio?"video":null)}onMediaAttached(e,t){super.onMediaAttached(e,t);const i=t.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),i.addEventListener("playing",this.onvplaying),i.addEventListener("seeked",this.onvseeked),this.gapController=new Lc(this.config,i,this.fragmentTracker,this.hls)}onMediaDetaching(){const{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(){const e=this.media,t=e?e.currentTime:null;Ji(t)&&this.log(`Media seeked to ${t.toFixed(3)}`);const i=this.getMainFwdBufferInfo();null!==i&&0!==i.len?this.tick():this.warn(`Main forward buffer length on "seeked" event ${i?i.len:"empty"})`)}onManifestLoading(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(tr.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 i=!1,r=!1;t.levels.forEach((e=>{const t=e.audioCodec;t&&(i=i||-1!==t.indexOf("mp4a.40.2"),r=r||-1!==t.indexOf("mp4a.40.5"))})),this.audioCodecSwitch=i&&r&&!function(){var e;const t=Sc();return"function"==typeof(null==t||null==(e=t.prototype)?void 0:e.changeType)}(),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){const{levels:i}=this;if(!i||this.state!==qa)return;const r=i[t.level];(!r.details||r.details.live&&this.levelLastLoaded!==r||this.waitForCdnTuneIn(r.details))&&(this.state=so)}onLevelLoaded(e,t){var i;const{levels:r}=this,s=t.level,n=t.details,a=n.totalduration;if(!r)return void this.warn(`Levels were reset while loading level ${s}`);this.log(`Level ${s} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""}, cc [${n.startCC}, ${n.endCC}] duration:${a}`);const o=r[s],l=this.fragCurrent;!l||this.state!==Xa&&this.state!==Qa||l.level!==t.level&&l.loader&&this.abortCurrentFrag();let h=0;if(n.live||null!=(i=o.details)&&i.live){var c;if(this.checkLiveUpdate(n),n.deltaUpdateFailed)return;h=this.alignPlaylists(n,o.details,null==(c=this.levelLastLoaded)?void 0:c.details)}if(o.details=n,this.levelLastLoaded=o,this.hls.trigger(tr.LEVEL_UPDATED,{details:n,level:s}),this.state===so){if(this.waitForCdnTuneIn(n))return;this.state=qa}this.startFragRequested?n.live&&this.synchronizeToLiveEdge(n):this.setStartPosition(n,h),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:r,payload:s}=e,{levels:n}=this;if(!n)return void this.warn(`Levels were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const a=n[i.level],o=a.details;if(!o)return this.warn(`Dropping fragment ${i.sn} of level ${i.level} after level details were reset`),void this.fragmentTracker.removeFragment(i);const l=a.videoCodec,h=o.PTSKnown||!o.live,c=null==(t=i.initSegment)?void 0:t.data,d=this._getAudioCodec(a),u=this.transmuxer=this.transmuxer||new gl(this.hls,hn,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),f=r?r.index:-1,g=-1!==f,m=new Ca(i.level,i.sn,i.stats.chunkCount,s.byteLength,f,g),p=this.initPTS[i.cc];u.push(s,c,d,l,i,r,o.totalduration,h,m,p)}onAudioTrackSwitching(e,t){const i=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;const e=this.fragCurrent;e&&(this.log("Switching to main audio track, cancel main fragment load"),e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();const e=this.hls;i&&(e.trigger(tr.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),e.trigger(tr.AUDIO_TRACK_SWITCHED,t)}}onAudioTrackSwitched(e,t){const i=t.id,r=!!this.hls.audioTracks[i].url;if(r){const e=this.videoBuffer;e&&this.mediaBuffer!==e&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=e)}this.altAudio=r,this.tick()}onBufferCreated(e,t){const i=t.tracks;let r,s,n=!1;for(const e in i){const t=i[e];if("main"===t.id){if(s=e,r=t,"video"===e){const t=i[e];t&&(this.videoBuffer=t.buffer)}}else n=!0}n&&r?(this.log(`Alternate track found, use ${s}.buffered to schedule main fragment loading`),this.mediaBuffer=r.buffer):this.mediaBuffer=this.media}onFragBuffered(e,t){const{frag:i,part:r}=t;if(i&&i.type!==hn)return;if(this.fragContextChanged(i))return this.warn(`Fragment ${i.sn}${r?" p: "+r.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}`),void(this.state===eo&&(this.state=qa));const s=r?r.stats:i.stats;this.fragLastKbps=Math.round(8*s.total/(s.buffering.end-s.loading.first)),"initSegment"!==i.sn&&(this.fragPrevious=i),this.fragBufferedComplete(i,r)}onError(e,t){var i;if(t.fatal)this.state=io;else switch(t.details){case rr.FRAG_GAP:case rr.FRAG_PARSING_ERROR:case rr.FRAG_DECRYPT_ERROR:case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(hn,t);break;case rr.LEVEL_LOAD_ERROR:case rr.LEVEL_LOAD_TIMEOUT:case rr.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==so||(null==(i=t.context)?void 0:i.type)!==an||(this.state=qa);break;case rr.BUFFER_APPEND_ERROR:case rr.BUFFER_FULL_ERROR:if(!t.parent||"main"!==t.parent)return;if(t.details===rr.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case rr.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}checkBuffer(){const{media:e,gapController:t}=this;if(e&&t&&e.readyState){if(this.loadedmetadata||!xa.getBuffered(e).length){const e=this.state!==qa?this.fragCurrent:null;t.poll(this.lastCurrentTime,e)}this.lastCurrentTime=e.currentTime}}onFragLoadEmergencyAborted(){this.state=qa,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()}onBufferFlushed(e,{type:t}){if(t!==mr||this.audioOnly&&!this.altAudio){const e=(t===pr?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(e,t,hn),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(){const{media:e}=this;if(!e)return;const t=e.currentTime;let i=this.startPosition;if(i>=0&&t0&&(s{const{hls:r}=this;if(!i||this.fragContextChanged(e))return;t.fragmentError=0,this.state=qa,this.startFragRequested=!1,this.bitrateTest=!1;const s=e.stats;s.parsing.start=s.parsing.end=s.buffering.start=s.buffering.end=self.performance.now(),r.trigger(tr.FRAG_LOADED,i),e.bitrateTest=!1}))}_handleTransmuxComplete(e){var t;const i="main",{hls:r}=this,{remuxResult:s,chunkMeta:n}=e,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{video:c,text:d,id3:u,initSegment:f}=s,{details:g}=h,m=this.altAudio?void 0:s.audio;if(this.fragContextChanged(o))this.fragmentTracker.removeFragment(o);else{if(this.state=Za,f){if(null!=f&&f.tracks){const e=o.initSegment||o;this._bufferInitSegment(h,f.tracks,e,n),r.trigger(tr.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:f.tracks})}const e=f.initPTS,t=f.timescale;Ji(e)&&(this.initPTS[o.cc]={baseTime:e,timescale:t},r.trigger(tr.INIT_PTS_FOUND,{frag:o,id:i,initPTS:e,timescale:t}))}if(c&&g&&"initSegment"!==o.sn){const e=g.fragments[o.sn-1-g.startSN],t=o.sn===g.startSN,i=!e||o.cc>e.cc;if(!1!==s.independent){const{startPTS:e,endPTS:r,startDTS:s,endDTS:a}=c;if(l)l.elementaryStreams[c.type]={startPTS:e,endPTS:r,startDTS:s,endDTS:a};else if(c.firstKeyFrame&&c.independent&&1===n.id&&!i&&(this.couldBacktrack=!0),c.dropped&&c.independent){const s=this.getMainFwdBufferInfo(),n=(s?s.end:this.getLoadPosition())+this.config.maxBufferHole,l=c.firstKeyFramePTS?c.firstKeyFramePTS:e;if(!t&&n2&&(o.gap=!0);o.setElementaryStreamInfo(c.type,e,r,s,a),this.backtrackFragment&&(this.backtrackFragment=o),this.bufferFragmentData(c,o,l,n,t||i)}else{if(!t&&!i)return void this.backtrack(o);o.gap=!0}}if(m){const{startPTS:e,endPTS:t,startDTS:i,endDTS:r}=m;l&&(l.elementaryStreams[mr]={startPTS:e,endPTS:t,startDTS:i,endDTS:r}),o.setElementaryStreamInfo(mr,e,t,i,r),this.bufferFragmentData(m,o,l,n)}if(g&&null!=u&&null!=(t=u.samples)&&t.length){const e={id:i,frag:o,details:g,samples:u.samples};r.trigger(tr.FRAG_PARSING_METADATA,e)}if(g&&d){const e={id:i,frag:o,details:g,samples:d.samples};r.trigger(tr.FRAG_PARSING_USERDATA,e)}}}_bufferInitSegment(e,t,i,r){if(this.state!==Za)return;this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&delete t.audio;const{audio:s,video:n,audiovideo:a}=t;if(s){let t=e.audioCodec;const i=navigator.userAgent.toLowerCase();if(this.audioCodecSwitch){t&&(t=-1!==t.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5");const e=s.metadata;e&&"channelCount"in e&&1!==(e.channelCount||1)&&-1===i.indexOf("firefox")&&(t="mp4a.40.5")}t&&-1!==t.indexOf("mp4a.40.5")&&-1!==i.indexOf("android")&&"audio/mpeg"!==s.container&&(t="mp4a.40.2",this.log(`Android: force audio codec to ${t}`)),e.audioCodec&&e.audioCodec!==t&&this.log(`Swapping manifest audio codec "${e.audioCodec}" for "${t}"`),s.levelCodec=t,s.id="main",this.log(`Init audio buffer, container:${s.container}, codecs[selected/level/parsed]=[${t||""}/${e.audioCodec||""}/${s.codec}]`)}n&&(n.levelCodec=e.videoCodec,n.id="main",this.log(`Init video buffer, container:${n.container}, codecs[level/parsed]=[${e.videoCodec||""}/${n.codec}]`)),a&&this.log(`Init audiovideo buffer, container:${a.container}, codecs[level/parsed]=[${e.codecs}/${a.codec}]`),this.hls.trigger(tr.BUFFER_CODECS,t),Object.keys(t).forEach((e=>{const s=t[e].initSegment;null!=s&&s.byteLength&&this.hls.trigger(tr.BUFFER_APPENDING,{type:e,data:s,frag:i,part:null,chunkMeta:r,parent:i.type})})),this.tickImmediate()}getMainFwdBufferInfo(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,hn)}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=qa}checkFragmentChanged(){const e=this.media;let t=null;if(e&&e.readyState>1&&!1===e.seeking){const i=e.currentTime;if(xa.isBuffered(e,i)?t=this.getAppendedFrag(i):xa.isBuffered(e,i+.1)&&(t=this.getAppendedFrag(i+.1)),t){this.backtrackFragment=null;const e=this.fragPlaying,i=t.level;e&&t.sn===e.sn&&e.level===i||(this.fragPlaying=t,this.hls.trigger(tr.FRAG_CHANGED,{frag:t}),e&&e.level===i||this.hls.trigger(tr.LEVEL_SWITCHED,{level:i}))}}}get nextLevel(){const e=this.nextBufferedFrag;return e?e.level:-1}get currentFrag(){const e=this.media;return e?this.fragPlaying||this.getAppendedFrag(e.currentTime):null}get currentProgramDateTime(){const e=this.media;if(e){const t=e.currentTime,i=this.currentFrag;if(i&&Ji(t)&&Ji(i.programDateTime)){const e=i.programDateTime+1e3*(t-i.start);return new Date(e)}}return null}get currentLevel(){const e=this.currentFrag;return e?e.level:-1}get nextBufferedFrag(){const e=this.currentFrag;return e?this.followingBufferedFrag(e):null}get forceStartLoad(){return this._forceStartLoad}}class Ac{static get version(){return"1.5.11"}static isMSESupported(){return bc()}static isSupported(){return function(){if(!bc())return!1;const e=Os();return"function"==typeof(null==e?void 0:e.isTypeSupported)&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some((t=>e.isTypeSupported(Us(t,"video"))))||["mp4a.40.2","fLaC"].some((t=>e.isTypeSupported(Us(t,"audio")))))}()}static getMediaSource(){return Os()}static get Events(){return tr}static get ErrorTypes(){return ir}static get ErrorDetails(){return rr}static get DefaultConfig(){return Ac.defaultConfig?Ac.defaultConfig:gc}static set DefaultConfig(e){Ac.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 fl,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,function(e,t){if("object"==typeof console&&!0===e||"object"==typeof e){or(e,"debug","log","info","warn","error");try{ar.log(`Debug logs enabled for "${t}" in hls.js version 1.5.11`)}catch(e){ar=nr}}else ar=nr}(e.debug||!1,"Hls instance");const t=this.config=function(e,t){if((t.liveSyncDurationCount||t.liveMaxLatencyDurationCount)&&(t.liveSyncDuration||t.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==t.liveMaxLatencyDurationCount&&(void 0===t.liveSyncDurationCount||t.liveMaxLatencyDurationCount<=t.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==t.liveMaxLatencyDuration&&(void 0===t.liveSyncDuration||t.liveMaxLatencyDuration<=t.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');const i=mc(e),r=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach((e=>{const s=`${"level"===e?"playlist":e}LoadPolicy`,n=void 0===t[s],a=[];r.forEach((r=>{const o=`${e}Loading${r}`,l=t[o];if(void 0!==l&&n){a.push(o);const e=i[s].default;switch(t[s]={default:e},r){case"TimeOut":e.maxLoadTimeMs=l,e.maxTimeToFirstByteMs=l;break;case"MaxRetry":e.errorRetry.maxNumRetry=l,e.timeoutRetry.maxNumRetry=l;break;case"RetryDelay":e.errorRetry.retryDelayMs=l,e.timeoutRetry.retryDelayMs=l;break;case"MaxRetryTimeout":e.errorRetry.maxRetryDelayMs=l,e.timeoutRetry.maxRetryDelayMs=l}}})),a.length&&lr.warn(`hls.js config: "${a.join('", "')}" setting(s) are deprecated, use "${s}": ${JSON.stringify(t[s])}`)})),qi(qi({},i),t)}(Ac.DefaultConfig,e);this.userConfig=e,t.progressive&&pc(t);const{abrController:i,bufferController:r,capLevelController:s,errorController:n,fpsController:a}=t,o=new n(this),l=this.abrController=new i(this),h=this.bufferController=new r(this),c=this.capLevelController=new s(this),d=new a(this),u=new gn(this),f=new kn(this),g=t.contentSteeringController,m=g?new g(this):null,p=this.levelController=new yc(this,m),v=new Ra(this),y=new Ec(this.config),T=this.streamController=new wc(this,v,y);c.setStreamController(T),d.setStreamController(T);const E=[u,p,T];m&&E.splice(1,0,m),this.networkControllers=E;const S=[l,h,c,d,f,v];this.audioTrackController=this.createController(t.audioTrackController,E);const b=t.audioStreamController;b&&E.push(new b(this,v,y)),this.subtitleTrackController=this.createController(t.subtitleTrackController,E);const L=t.subtitleStreamController;L&&E.push(new L(this,v,y)),this.createController(t.timelineController,S),y.emeController=this.emeController=this.createController(t.emeController,S),this.cmcdController=this.createController(t.cmcdController,S),this.latencyController=this.createController(_n,S),this.coreComponents=S,E.push(o);const w=o.onErrorOut;"function"==typeof w&&this.on(tr.ERROR,w,o)}createController(e,t){if(e){const i=new e(this);return t&&t.push(i),i}return null}on(e,t,i=this){this._emitter.on(e,t,i)}once(e,t,i=this){this._emitter.once(e,t,i)}removeAllListeners(e){this._emitter.removeAllListeners(e)}off(e,t,i=this,r){this._emitter.off(e,t,i,r)}listeners(e){return this._emitter.listeners(e)}emit(e,t,i){return this._emitter.emit(e,t,i)}trigger(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(t){if(lr.error("An internal error happened while handling event "+e+'. Error message: "'+t.message+'". Here is a stacktrace:',t),!this.triggeringException){this.triggeringException=!0;const i=e===tr.ERROR;this.trigger(tr.ERROR,{type:ir.OTHER_ERROR,details:rr.INTERNAL_EXCEPTION,fatal:i,event:e,error:t}),this.triggeringException=!1}}return!1}listenerCount(e){return this._emitter.listenerCount(e)}destroy(){lr.log("destroy"),this.trigger(tr.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((e=>e.destroy())),this.networkControllers.length=0,this.coreComponents.forEach((e=>e.destroy())),this.coreComponents.length=0;const e=this.config;e.xhrSetup=e.fetchSetup=void 0,this.userConfig=null}attachMedia(e){lr.log("attachMedia"),this._media=e,this.trigger(tr.MEDIA_ATTACHING,{media:e})}detachMedia(){lr.log("detachMedia"),this.trigger(tr.MEDIA_DETACHING,void 0),this._media=null}loadSource(e){this.stopLoad();const t=this.media,i=this.url,r=this.url=Wi.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,lr.log(`loadSource:${r}`),t&&i&&(i!==r||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(t)),this.trigger(tr.MANIFEST_LOADING,{url:e})}startLoad(e=-1){lr.log(`startLoad(${e})`),this.started=!0,this.networkControllers.forEach((t=>{t.startLoad(e)}))}stopLoad(){lr.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(){lr.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){lr.log("recoverMediaError");const e=this._media;this.detachMedia(),e&&this.attachMedia(e)}removeLevel(e){this.levelController.removeLevel(e)}get levels(){const e=this.levelController.levels;return e||[]}get currentLevel(){return this.streamController.currentLevel}set currentLevel(e){lr.log(`set currentLevel:${e}`),this.levelController.manualLevel=e,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(e){lr.log(`set nextLevel:${e}`),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(e){lr.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){lr.log(`set firstLevel:${e}`),this.levelController.firstLevel=e}get startLevel(){const e=this.levelController.startLevel;return-1===e&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:e}set startLevel(e){lr.log(`set startLevel:${e}`),-1!==e&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(e){const t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimate():NaN}set bandwidthEstimate(e){this.abrController.resetEstimator(e)}get ttfbEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimateTTFB():NaN}set autoLevelCapping(e){this._autoLevelCapping!==e&&(lr.log(`set autoLevelCapping:${e}`),this._autoLevelCapping=e,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(e){(function(e){return Dn.indexOf(e)>-1})(e)&&this._maxHdcpLevel!==e&&(this._maxHdcpLevel=e,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return-1===this.levelController.manualLevel}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:e,config:{minAutoBitrate:t}}=this;if(!e)return 0;const i=e.length;for(let r=0;r=t)return r;return 0}get maxAutoLevel(){const{levels:e,autoLevelCapping:t,maxHdcpLevel:i}=this;let r;if(r=-1===t&&null!=e&&e.length?e.length-1:t,i)for(let t=r;t--;){const r=e[t].attrs["HDCP-LEVEL"];if(r&&r<=i)return t}return r}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 null==(t=this.audioTrackController)?void 0:t.setAudioOption(e)}setSubtitleOption(e){var t;return null==(t=this.subtitleTrackController)||t.setSubtitleOption(e),null}get allAudioTracks(){const e=this.audioTrackController;return e?e.allAudioTracks:[]}get audioTracks(){const e=this.audioTrackController;return e?e.audioTracks:[]}get audioTrack(){const e=this.audioTrackController;return e?e.audioTrack:-1}set audioTrack(e){const t=this.audioTrackController;t&&(t.audioTrack=e)}get allSubtitleTracks(){const e=this.subtitleTrackController;return e?e.allSubtitleTracks:[]}get subtitleTracks(){const e=this.subtitleTrackController;return e?e.subtitleTracks:[]}get subtitleTrack(){const e=this.subtitleTrackController;return e?e.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(e){const t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}get subtitleDisplay(){const e=this.subtitleTrackController;return!!e&&e.subtitleDisplay}set subtitleDisplay(e){const t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(e){this.config.lowLatencyMode=e}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}}function Rc(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e.$video.volume=e._options.volume)}),1e3)})),e.event.emit("parsed")}))}))}else if(this.$video.canPlayType("application/vnd.apple.mpegurl")){this.logger.log("Browser support application/vnd.apple.mpegurl : ",this.$video.canPlayType("application/vnd.apple.mpegurl")),this.$video.src=this._options.url;var i=!1;this.$video.addEventListener("canplay",(function(){!i&&e._options.autoPlay&&setTimeout((function(){e.$video.play().then((function(){e.logger.log("autoPlay video!"),setTimeout((function(){e._options.volume>0&&e.setVolume(e._options.volume)}),1e3),i=!0}))}),200)}))}else this.logger.warn("Browser not support hls")},i.isPlayingState=function(){return!this.$video.paused},i.play=function(){if(this.isPlayingState())return Promise.resolve();if(this._options.isLive&&(this.$video.buffered.length>=1&&this.$video.buffered.end(0)>1)){var e=this.$video.buffered.end(0)-1;this.$video.currentTime=e}return this.$video.play()},i.pause=function(){this.$video.pause()},i.setVolume=function(e){this.$video.muted&&(this.$video.muted=!1),this._volume=+(e||0),0===this._volume&&(this.$video.muted=!0),this.$video.volume=this._volume},i.destroy=function(){this.$video&&this.$video.pause(),this._hls&&(this._hls.destroy(),this._hls=null),e.prototype.destroy.call(this)},i._onEvent=function(){var e;(e=this).$video&&(e.$video.addEventListener("canplay",(function(){e.event.emit("canplay")})),e.$video.addEventListener("loadeddata",(function(){e.event.emit("loadeddata")})),e.$video.addEventListener("volumechange",(function(){e.event.emit("volumechange",{data:e.$video.volume})})),e.$video.addEventListener("waiting",(function(){e.event.emit("waiting")})),e.$video.addEventListener("timeupdate",(function(){var t;null==(t=e.event)||t.emit("timeupdate")})),e.$video.addEventListener("seeking",(function(){e.event.emit("seeking",{data:e.$video.currentTime})})),e.$video.addEventListener("seeked",(function(){e.event.emit("seeked")})),e.$video.addEventListener("abort",(function(){e.event.emit("abort")})),e.$video.addEventListener("error",(function(){var t;null==(t=e.event)||t.emit("error",{data:e.$video.error})})),e.$video.addEventListener("ended",(function(){e.event.emit("ended")})))},Rc(t,[{key:"volume",get:function(){return this._volume},set:function(e){this.setVolume(e)}}]),t}(Ri);var xc="wasm_loaded",Cc="wasm_failed",Ic="init";function Pc(e,t){return Pc=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Pc(e,t)}var Oc=function(e){function t(t){var i;return void 0===t&&(t={}),i=e.call(this,t)||this,t.url=function(e,t){void 0===t&&(t=["h264"]);var i=(t||["h264"]).reduce((function(e,t){return t=t.toLowerCase(),e+(Xt[t]||0)}),0),r=e.split("?")[0],s=e.split("?")[1];return s=(s||"").split("&").filter((function(e){return!/^vc=\d?/.test(e)})).join("&"),r+"?"+s+(s?"&":"")+"vc="+i}(null==t?void 0:t.url,["h264","h265"]),function(e,t){if(((null==t?void 0:t.volume)||0)>1?e._volume=1:((null==t?void 0:t.volume)||0)<=0?e._volume=0:e._volume=+((null==t?void 0:t.volume)||0),t.volume=e._volume,e.options=zt({},wi,t),"string"!=typeof e.options.id)throw new Error("id is required!");e.logger=z(e.options.loggerOptions),e.event=new ei,e.logger.log("HlsPlayer version: ",Uc.version),e.logger.log("HlsPlayer options: ",e.options),e.options.logger=e.logger}(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(i),t),i._containerClassName=Li+"-container",i._render(),i}!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Pc(e,t)}(t,e);var i=t.prototype;return i._render=function(){this.$container.classList.add(this._containerClassName)},i.destroy=function(){this.$container&&(this.$container.classList.remove(this._containerClassName),this.$container.innerHTML="",this.$container=null)},t}(Si);function Mc(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e=!0),this.playParam={durationMs:0,fps:0,sampleRate:0,size:{width:0,height:0},audioNone:e,videoCodec:T},!A())throw new Error("Browser not support WebAssembly!");this._onWorkerMessage()},i.play=function(){if(Ui.send(1,{name:"play"}),null===this.player)return Promise.resolve();if(this.playParam.videoCodec===T){var e={seekPos:0,isLive:this.options.isLive,accurateSeek:!0,seekEvent:!1,realPlay:!0};return this.player.play(e)}return this.player.play()},i.pause=function(){return Ui.send(1,{name:"pause"}),null!==this.player&&(this.player.pause(),!0)},i.destroy=function(){var t,i;return Ui.send(1,{name:"destroy"}),void 0!==this.player&&null!==this.player&&(this.playParam.videoCodec===T&&this._m3u8Obj&&(this._m3u8Obj.destroy(),this._m3u8Obj=null),this.player.destroy(),this._decoderWorker&&(this._decoderWorker.postMessage(P(B)),this._decoderWorker.terminate(),this._decoderWorker=null),this.logger.log("destroy"),null==(i=this.event)||null==(t=i.emit)||t.call(i,"destroy"),this.player=null,e.prototype.destroy.call(this),!0)},i.isPlaying=function(){return null!==this.player&&this.player.isPlayingState()},i.setVolume=function(e){var t;(e=+e)>1||e<0?this.logger.warn("volume volume value 0.0 ~ 1.0!"):((t=this).player||(t.event.emit("playerIsNull"),t.logger.warn("Player instance does not exist!"),0))&&(this.player.setVolume(e),this.event.emit("volumeChange",{data:e}))},i.getVersion=function(){return Ui.send(1,{name:"getVersion"}),"0.1.0-beta.1"},i._m3u8Entry=function(){var e=this;this._m3u8Obj=new Vi({logger:this.logger,decoderWorker:this._decoderWorker,event:this.event}),this._m3u8Obj.bindReady(this),this._m3u8Obj.onFinished=function(e,t){},this._m3u8Obj.onCacheProcess=function(t){e.options.isLive||null==e.onCacheProcess||e.onCacheProcess.call(e,t)},this._m3u8Obj.onDemuxed=this._checkPlayer.bind(this),this._m3u8Obj.onSamples=this._hlsOnSamples.bind(this),this._m3u8Obj.demux(this.url)},i._checkPlayer=function(e,t){var i=this;if(null==i.player){var r,s,n;if(!(null==i||null==(r=i._m3u8Obj)?void 0:r.isHevcParam)||t)return null==i||null==(n=i._m3u8Obj)||null==(s=n.destroy)||s.call(n),i._m3u8Obj=null,this._decoderWorker.terminate(),this._decoderWorker=null,void(i.player=new Dc(Fc({},this.options,{event:this.event,logger:this.logger})));var a=i._m3u8Obj.getACodec(),o=i._m3u8Obj.getFPS(),l=i._m3u8Obj.getSampleRate(),h=i._m3u8Obj.getSize(),c=!1;c=i._m3u8Obj.getSampleChannel()<=0||""===a,i._softPlayer(0,o,l,h,c)}},i._hlsOnSamples=function(e,t){var i,r,s,n=this;if(t.video)null==(s=n.player)||null==(r=s.appendHevcFrame)||r.call(s,t);else if(!(null==(i=n._m3u8Obj)?void 0:i.audioNone)){var a,o;null==(o=n.player)||null==(a=o.appendAACFrame)||a.call(o,t)}},i._onWorkerMessage=function(){var e=this,i=this;this._decoderWorker.onmessage=function(r){var s=r.data;switch(s.cmd){case O:t.__HLS_WASM_DecoderState__=0;break;case M:t.__HLS_WASM_DecoderState__=1,e.logger.log("Wasm already init over!"),i.event.emit(xc),i._decoderWorker.postMessage(P("registerWasmPlayer")),i._m3u8Entry();break;case F:t.__HLS_WASM_DecoderState__=-1,e.logger.error("Wasm init failed!",s),i.event.emit(Cc,s),Ui.send("wasm",{name:"wasm loading failed"}),i._checkPlayer(!0)}}},i._softPlayer=function(e,t,i,r,s,n){var a,o,l=this;void 0===s&&(s=!1),void 0===n&&(n=null);var c,d=this;(this.playParam.durationMs=e,this.playParam.fps=t,this.playParam.sampleRate=i,this.playParam.size=r,this.playParam.audioNone=s,this.playParam.videoCodec=n||T,this.logger.log("this.playParam: ",this.playParam),this.logger.log("start init soft player"),this.player=new xi(Fc({},d.options,{sampleRate:i,fps:t,appendHevcType:h,fixed:!1,id:this.options.id,audioNone:s,videoCodec:n,logger:this.logger,event:this.event,decoderWorker:this._decoderWorker})),this.player.onPlayingTime=function(e){var t;null==d||null==(t=d.onPlayTime)||t.call(d,e)},this.player.onPlayingFinish=function(){var e,t;(l.pause(),null!=l.onPlayFinish)&&(null==(t=l)||null==(e=t.onPlayFinish)||e.call(t))},this.player.onLoadCache=function(){var e,t;null==(t=l)||null==(e=t.onLoadCache)||e.call(t)},this.player.onLoadCacheFinished=function(){var e,t;null==(t=l)||null==(e=t.onLoadCacheFinished)||e.call(t)},null==(a=d.player)||a.setDurationMs(e),null==(o=d.player)||o.setFrameRate(t),null!=d.onReadyShowDone)&&(null==d||null==(c=d.onReadyShowDone)||c.call(d));this.event.emit("parsed"),this.player&&this.options.autoPlay&&this.play()},t.supportType=function(e){if(Ui.send(1,{name:"supportType",options:e}),"hls"===e.type)return!0;if(e.url){var t=e.url;t.startsWith("http://")||t.startsWith("https://")||(t=/^\/\//.test(t)?"http:"+t:location.origin+location.pathname+t);try{return/\.m3u8$/i.test(new URL(t).pathname)}catch(e){}}return!1},Mc(t,[{key:"volume",get:function(){return this.player?this.player.volume:this.options.volume},set:function(e){e=+e,this.setVolume(e)}}]),t}(Oc);return Uc.__HLS_WASM_DecoderState__=0,Uc.version="0.1.0-beta.1",Uc})); diff --git a/examples/base-app/package.json b/examples/base-app/package.json index 38abc96..d926868 100644 --- a/examples/base-app/package.json +++ b/examples/base-app/package.json @@ -9,6 +9,6 @@ "http-server": "^14.1.1" }, "dependencies": { - "@ezuikit/player-hls": "^0.1.0-alpha.1" + "@ezuikit/player-hls": "^0.1.0-beta.1" } } diff --git a/examples/base-app/pnpm-lock.yaml b/examples/base-app/pnpm-lock.yaml index 9d15e49..36899f1 100644 --- a/examples/base-app/pnpm-lock.yaml +++ b/examples/base-app/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: '@ezuikit/player-hls': - specifier: ^0.1.0-alpha.1 - version: 0.1.0-alpha.1 + specifier: ^0.1.0-beta.1 + version: 0.1.0-beta.1 devDependencies: http-server: @@ -16,9 +16,10 @@ devDependencies: packages: - /@ezuikit/player-base@0.1.0-alpha.1: - resolution: {integrity: sha512-68O3PtB5g7hm+HSpCqE/ef/Ud0xUPsFv3ckrj6VKm7wyed+9aqTazxv8mDPOXuNStZZULpfn+7Uf0KW7cHAyxg==} + /@ezuikit/player-base@0.1.0: + resolution: {integrity: sha512-IcJqnZr9FmjBCnIrmqY7oHdyDuYxRWhDZB+K+gi+4oenFjFV4aLCCG7RFPxkidHzi3TTF2f1Bm5yObZzNDqkfw==} dependencies: + '@ezuikit/utils-collect': 0.1.0 '@ezuikit/utils-logger': 1.0.1 '@ezuikit/utils-tools': 1.0.3 eventemitter3: 5.0.1 @@ -27,10 +28,10 @@ packages: ua-parser-js: 1.0.37 dev: false - /@ezuikit/player-hls@0.1.0-alpha.1: - resolution: {integrity: sha512-DcR5B3JBwY9pT+wRapk5B8ntqYdHkXjj+S0GfS2Ler41+g/l6YaSC/LsWh525bVRbfMGDxhUD9WBK01CoHn1Bw==} + /@ezuikit/player-hls@0.1.0-beta.1: + resolution: {integrity: sha512-IxepiCKym2sZTnsejGnIt+R5JMadTovAhpDFSbZ4sjFXXnMrRZYTgM9lyIGdjJCaA8LAseA0QmHRRslD/zHjHA==} dependencies: - '@ezuikit/player-base': 0.1.0-alpha.1 + '@ezuikit/player-base': 0.1.0 '@ezuikit/utils-collect': 0.1.0 '@ezuikit/utils-i18n': 1.0.1 '@ezuikit/utils-logger': 1.0.1 From 75fd5aceb86ab48c0881fb7fcccb1d158a6e2b33 Mon Sep 17 00:00:00 2001 From: ShineShao Date: Thu, 1 Aug 2024 10:15:50 +0800 Subject: [PATCH 07/20] feat: update hls 0.1.0-beta.1 --- examples/react-app/package.json | 2 +- examples/react-app/pnpm-lock.yaml | 21 ++++++------ examples/react-app/public/decoder.wasm | Bin 0 -> 1533219 bytes examples/react-app/public/decoder.worker.js | 8 +++++ examples/react-app/src/Player.jsx | 34 ++++++-------------- 5 files changed, 29 insertions(+), 36 deletions(-) create mode 100644 examples/react-app/public/decoder.wasm create mode 100644 examples/react-app/public/decoder.worker.js diff --git a/examples/react-app/package.json b/examples/react-app/package.json index 4e19c4c..c6f13bc 100644 --- a/examples/react-app/package.json +++ b/examples/react-app/package.json @@ -6,7 +6,7 @@ "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", - "@ezuikit/player-hls": "^0.1.0-alpha.1", + "@ezuikit/player-hls": "^0.1.0-beta.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", diff --git a/examples/react-app/pnpm-lock.yaml b/examples/react-app/pnpm-lock.yaml index f216f14..7dce4a4 100644 --- a/examples/react-app/pnpm-lock.yaml +++ b/examples/react-app/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: '@ezuikit/player-hls': - specifier: ^0.1.0-alpha.1 - version: 0.1.0-alpha.1 + specifier: ^0.1.0-beta.1 + version: 0.1.0-beta.1 '@testing-library/jest-dom': specifier: ^5.17.0 version: 5.17.0 @@ -1782,9 +1782,10 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /@ezuikit/player-base@0.1.0-alpha.1: - resolution: {integrity: sha512-68O3PtB5g7hm+HSpCqE/ef/Ud0xUPsFv3ckrj6VKm7wyed+9aqTazxv8mDPOXuNStZZULpfn+7Uf0KW7cHAyxg==} + /@ezuikit/player-base@0.1.0: + resolution: {integrity: sha512-IcJqnZr9FmjBCnIrmqY7oHdyDuYxRWhDZB+K+gi+4oenFjFV4aLCCG7RFPxkidHzi3TTF2f1Bm5yObZzNDqkfw==} dependencies: + '@ezuikit/utils-collect': 0.1.0 '@ezuikit/utils-logger': 1.0.1 '@ezuikit/utils-tools': 1.0.3 eventemitter3: 5.0.1 @@ -1793,11 +1794,11 @@ packages: ua-parser-js: 1.0.37 dev: false - /@ezuikit/player-hls@0.1.0-alpha.1: - resolution: {integrity: sha512-DcR5B3JBwY9pT+wRapk5B8ntqYdHkXjj+S0GfS2Ler41+g/l6YaSC/LsWh525bVRbfMGDxhUD9WBK01CoHn1Bw==} + /@ezuikit/player-hls@0.1.0-beta.1: + resolution: {integrity: sha512-IxepiCKym2sZTnsejGnIt+R5JMadTovAhpDFSbZ4sjFXXnMrRZYTgM9lyIGdjJCaA8LAseA0QmHRRslD/zHjHA==} dependencies: - '@ezuikit/player-base': 0.1.0-alpha.1 - '@ezuikit/utils-collect': 0.1.0-beta.1 + '@ezuikit/player-base': 0.1.0 + '@ezuikit/utils-collect': 0.1.0 '@ezuikit/utils-i18n': 1.0.1 '@ezuikit/utils-logger': 1.0.1 '@ezuikit/utils-tools': 1.0.3 @@ -1809,8 +1810,8 @@ packages: ua-parser-js: 1.0.37 dev: false - /@ezuikit/utils-collect@0.1.0-beta.1: - resolution: {integrity: sha512-+kkEkOVM9bQkWp90ppFpEwuaG8sRCH/F3CamLLgS0CG18gk1Fb5lcvS21hklgxMjS5tLotjwlfs0j+pQydzRYA==} + /@ezuikit/utils-collect@0.1.0: + resolution: {integrity: sha512-85lWlB/VCaooPPkCK3nEB4F3UKgO+HbmoPEq4U1tH/ObVP7IJ7eURrFUmQT1CKsqjH5xz5g4DgZzHWgYrwGcCQ==} dev: false /@ezuikit/utils-i18n@1.0.1: diff --git a/examples/react-app/public/decoder.wasm b/examples/react-app/public/decoder.wasm new file mode 100644 index 0000000000000000000000000000000000000000..5c0c2fa1cbf025dafadc4d515ea8077c6fd0c661 GIT binary patch literal 1533219 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%0A&?-f({xKK*_8^lAHq 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

*75{hIf~S8C+>5I`ZgPH; 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%0DJCcyx5^TC3zfCF%R$p;&S%SHqax#Csumoc( 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⁡TXiOY&% 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%0D5wohB2O%k$frMDo@WXww~X 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 literal 0 HcmV?d00001 diff --git a/examples/react-app/public/decoder.worker.js b/examples/react-app/public/decoder.worker.js new file mode 100644 index 0000000..e229e81 --- /dev/null +++ b/examples/react-app/public/decoder.worker.js @@ -0,0 +1,8 @@ +/* +* +* DecoderWorker.js v0.1.0-beta.1 +* Copyright (c) 2024-8-1 Ezviz-OpenBiz +* . +* +*/ +!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";var e={DEFAULT_SAMPLERATE:44100,DEFAULT_CHANNEL:1,H264AUD:[0,0,0,1,9,224],H265AUD:[0,0,0,1,70,1,80],DEF_AAC:"aac",DEF_MP3:"mp3",DEF_H265:"h265",DEF_HEVC:"hevc",DEF_H264:"h264",DEF_AVC:"avc",CODEC_OFFSET_TABLE:["hevc","h265","avc","h264","aac","mp3"]};function r(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var t={exports:{}};!function(e,r){function t(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var d,f,p=(f="undefined"!=typeof document?null==(d=document.currentScript)?void 0:d.src:void 0,function(e){var r,t=function(){var r=dr.value;r in e||Object.defineProperty(e,r,{configurable:!0,get:function(){q("Access to module property ('"+r+"') is no longer possible via the module constructor argument; Instead, use the result of the module constructor.")}})};void 0===e&&(e={});var n,i,d=Object.assign({},e),p=new Promise((function(e,r){n=e,i=r}));["_malloc","_free","_memory","_registerWasmPlayer","_setCodecType","_exitWasmPlayer","_initDecoder","_decodeCodecContext","_destroy","_demuxTsStream","_getPacket","_getVLCLen","_getVLC","_getVPSLen","_getVPS","_getSPSLen","_getSPS","_getPPSLen","_getPPS","_getSEILen","_getSEI","___indirect_function_table","_ff_h264_cabac_tables","onRuntimeInitialized"].forEach((function(e){Object.getOwnPropertyDescriptor(p,e)||Object.defineProperty(p,e,{get:function(){return q("You are getting "+e+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")},set:function(){return q("You are setting "+e+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})}));var m="object"==("undefined"==typeof window?"undefined":u(window)),h="function"==typeof importScripts,g="object"==("undefined"==typeof process?"undefined":u(process))&&"object"==u(process.versions)&&"string"==typeof process.versions.node,v=!m&&!g&&!h;if(d.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)");var E,y,w,b=Object.assign({},d),_="./this.program",S="";if(v){if("object"==("undefined"==typeof process?"undefined":u(process))||"object"==("undefined"==typeof window?"undefined":u(window))||"function"==typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)")}else{if(!m&&!h)throw new Error("environment detection error");if(h?S=self.location.href:"undefined"!=typeof document&&document.currentScript&&(S=document.currentScript.src),f&&(S=f),S=S.startsWith("blob:")?"":S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1),"object"!=("undefined"==typeof window?"undefined":u(window))&&"function"!=typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");E=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},h&&(w=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),y=function(e,r,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=function(){200==n.status||0==n.status&&n.response?r(n.response):t()},n.onerror=t,n.send(null)}}var O,T,k,A=d.print||console.log.bind(console),M=d.printErr||console.error.bind(console);Object.assign(d,b),b=null,O="fetchSettings",Object.getOwnPropertyDescriptor(d,O)&&q("`Module."+O+"` was supplied but `"+O+"` not included in INCOMING_MODULE_JS_API"),d.arguments&&d.arguments,ie("arguments","arguments_"),d.thisProgram&&(_=d.thisProgram),ie("thisProgram","thisProgram"),d.quit&&d.quit,ie("quit","quit_"),L(void 0===d.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),L(void 0===d.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),L(void 0===d.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),L(void 0===d.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),L(void 0===d.read,"Module.read option was removed (modify read_ in JS)"),L(void 0===d.readAsync,"Module.readAsync option was removed (modify readAsync in JS)"),L(void 0===d.readBinary,"Module.readBinary option was removed (modify readBinary in JS)"),L(void 0===d.setWindowTitle,"Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)"),L(void 0===d.TOTAL_MEMORY,"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),ie("asm","wasmExports"),ie("read","read_"),ie("readAsync","readAsync"),ie("readBinary","readBinary"),ie("setWindowTitle","setWindowTitle"),L(!g,"node environment detected but not enabled at build time. Add `node` to `-sENVIRONMENT` to enable."),L(!v,"shell environment detected but not enabled at build time. Add `shell` to `-sENVIRONMENT` to enable."),d.wasmBinary&&(T=d.wasmBinary),ie("wasmBinary","wasmBinary"),"object"!=("undefined"==typeof WebAssembly?"undefined":u(WebAssembly))&&M("no native wasm support detected");var P,F,C,D,x,I=!1;function L(e,r){e||q("Assertion failed"+(r?": "+r:""))}function N(){var e=k.buffer;d.HEAP8=P=new Int8Array(e),d.HEAP16=C=new Int16Array(e),d.HEAPU8=F=new Uint8Array(e),d.HEAPU16=new Uint16Array(e),d.HEAP32=D=new Int32Array(e),d.HEAPU32=x=new Uint32Array(e),d.HEAPF32=new Float32Array(e),d.HEAPF64=new Float64Array(e)}function R(){if(!I){var e=ir();0==e&&(e+=4);var r=x[e>>2],t=x[e+4>>2];34821223==r&&2310721022==t||q("Stack overflow! Stack cookie has been overwritten at "+le(e)+", expected hex dwords 0x89BACDFE and 0x2135467, but received "+le(t)+" "+le(r)),1668509029!=x[0]&&q("Runtime error: The application has corrupted its heap memory area (address zero)!")}}L(!d.STACK_SIZE,"STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time"),L("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&null!=Int32Array.prototype.subarray&&null!=Int32Array.prototype.set,"JS engine does not provide full typed array support"),L(!d.wasmMemory,"Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally"),L(!d.INITIAL_MEMORY,"Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically"),function(){var e=new Int16Array(1),r=new Int8Array(e.buffer);if(e[0]=25459,115!==r[0]||99!==r[1])throw"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)"}();var U=[],B=[],j=[],$=!1;L(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),L(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),L(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),L(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var W=0,H=null,z=null,V={};function G(e){for(var r=e;;){if(!V[e])return e;e=r+Math.random()}}function Y(e){var r;W++,null==(r=d.monitorRunDependencies)||r.call(d,W),e?(L(!V[e]),V[e]=1,null===H&&"undefined"!=typeof setInterval&&(H=setInterval((function(){if(I)return clearInterval(H),void(H=null);var e=!1;for(var r in V)e||(e=!0,M("still waiting on run dependencies:")),M("dependency: "+r);e&&M("(end of list)")}),1e4))):M("warning: run dependency added without ID")}function Q(e){var r;if(W--,null==(r=d.monitorRunDependencies)||r.call(d,W),e?(L(V[e]),delete V[e]):M("warning: run dependency removed without ID"),0==W&&(null!==H&&(clearInterval(H),H=null),z)){var t=z;z=null,t()}}function q(e){var r;null==(r=d.onAbort)||r.call(d,e),M(e="Aborted("+e+")"),I=!0;var t=new WebAssembly.RuntimeError(e);throw i(t),t}var K,X,J,Z=function(e){return e.startsWith("data:application/octet-stream;base64,")},ee=function(e){return e.startsWith("file://")};function re(e,r){return function(){for(var t=arguments.length,n=new Array(t),o=0;o0;)e.shift()(d)};d.noExitRuntime;var le=function(e){return L("number"==typeof e),"0x"+(e>>>=0).toString(16).padStart(8,"0")},de=function(e){var r;(r=de).shown||(r.shown={}),de.shown[e]||(de.shown[e]=1,M(e))};function fe(){L(null!=xe.varargs);var e=D[+xe.varargs>>2];return xe.varargs+=4,e}var pe=fe,me={isAbs:function(e){return"/"===e.charAt(0)},splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,r){for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:function(e){var r=me.isAbs(e),t="/"===e.substr(-1);return(e=me.normalizeArray(e.split("/").filter((function(e){return!!e})),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:function(e){var r=me.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:function(e){if("/"===e)return"/";var r=(e=(e=me.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===r?e:e.substr(r+1)},join:function(){for(var e=arguments.length,r=new Array(e),t=0;t { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")}())(e)},ge={resolve:function(){for(var e=arguments.length,r=new Array(e),t=0;t=-1&&!o;i--){var a=i>=0?r[i]:Ce.cwd();if("string"!=typeof a)throw new TypeError("Arguments to path.resolve must be strings");if(!a)return"";n=a+"/"+n,o=me.isAbs(a)}return(o?"/":"")+(n=me.normalizeArray(n.split("/").filter((function(e){return!!e})),!o).join("/"))||"."},relative:function(e,r){var t=function(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)};e=ge.resolve(e).substr(1),r=ge.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),i=Math.min(n.length,o.length),a=i,s=0;s=n);)++o;if(o-r>16&&e.buffer&&ve)return ve.decode(e.subarray(r,o));for(var i="";r>10,56320|1023&c)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i},ye=[],we=function(e){for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r},be=function(e,r,t,n){if(L("string"==typeof e,"stringToUTF8Array expects a string (got "+(void 0===e?"undefined":u(e))+")"),!(n>0))return 0;for(var o=t,i=t+n-1,a=0;a=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a)),s<=127){if(t>=i)break;r[t++]=s}else if(s<=2047){if(t+1>=i)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=i)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=i)break;s>1114111&&de("Invalid Unicode code point "+le(s)+" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF)."),r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o};function _e(e,r,t){var n=we(e)+1,o=new Array(n),i=be(e,o,0,o.length);return o.length=i,o}var Se,Oe={ttys:[],init:function(){},shutdown:function(){},register:function(e,r){Oe.ttys[e]={input:[],output:[],ops:r},Ce.registerDevice(e,Oe.stream_ops)},stream_ops:{open:function(e){var r=Oe.ttys[e.node.rdev];if(!r)throw new Ce.ErrnoError(43);e.tty=r,e.seekable=!1},close:function(e){e.tty.ops.fsync(e.tty)},fsync:function(e){e.tty.ops.fsync(e.tty)},read:function(e,r,t,n,o){if(!e.tty||!e.tty.ops.get_char)throw new Ce.ErrnoError(60);for(var i=0,a=0;a0&&(A(Ee(e.output,0)),e.output=[])},ioctl_tcgets:function(e){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets:function(e,r,t){return 0},ioctl_tiocgwinsz:function(e){return[24,80]}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(M(Ee(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},fsync:function(e){e.output&&e.output.length>0&&(M(Ee(e.output,0)),e.output=[])}}},Te=function(e){q("internal error: mmapAlloc called but `emscripten_builtin_memalign` native symbol not exported")},ke={ops_table:null,mount:function(e){return ke.createNode(null,"/",16895,0)},createNode:function(e,r,t,n){var o;if(Ce.isBlkdev(t)||Ce.isFIFO(t))throw new Ce.ErrnoError(63);(o=ke).ops_table||(o.ops_table={dir:{node:{getattr:ke.node_ops.getattr,setattr:ke.node_ops.setattr,lookup:ke.node_ops.lookup,mknod:ke.node_ops.mknod,rename:ke.node_ops.rename,unlink:ke.node_ops.unlink,rmdir:ke.node_ops.rmdir,readdir:ke.node_ops.readdir,symlink:ke.node_ops.symlink},stream:{llseek:ke.stream_ops.llseek}},file:{node:{getattr:ke.node_ops.getattr,setattr:ke.node_ops.setattr},stream:{llseek:ke.stream_ops.llseek,read:ke.stream_ops.read,write:ke.stream_ops.write,allocate:ke.stream_ops.allocate,mmap:ke.stream_ops.mmap,msync:ke.stream_ops.msync}},link:{node:{getattr:ke.node_ops.getattr,setattr:ke.node_ops.setattr,readlink:ke.node_ops.readlink},stream:{}},chrdev:{node:{getattr:ke.node_ops.getattr,setattr:ke.node_ops.setattr},stream:Ce.chrdev_stream_ops}});var i=Ce.createNode(e,r,t,n);return Ce.isDir(i.mode)?(i.node_ops=ke.ops_table.dir.node,i.stream_ops=ke.ops_table.dir.stream,i.contents={}):Ce.isFile(i.mode)?(i.node_ops=ke.ops_table.file.node,i.stream_ops=ke.ops_table.file.stream,i.usedBytes=0,i.contents=null):Ce.isLink(i.mode)?(i.node_ops=ke.ops_table.link.node,i.stream_ops=ke.ops_table.link.stream):Ce.isChrdev(i.mode)&&(i.node_ops=ke.ops_table.chrdev.node,i.stream_ops=ke.ops_table.chrdev.stream),i.timestamp=Date.now(),e&&(e.contents[r]=i,e.timestamp=i.timestamp),i},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r)if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}},node_ops:{getattr:function(e){var r={};return r.dev=Ce.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,Ce.isDir(e.mode)?r.size=4096:Ce.isFile(e.mode)?r.size=e.usedBytes:Ce.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&ke.resizeFileStorage(e,r.size)},lookup:function(e,r){throw Ce.genericErrors[44]},mknod:function(e,r,t,n){return ke.createNode(e,r,t,n)},rename:function(e,r,t){if(Ce.isDir(e.mode)){var n;try{n=Ce.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new Ce.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=Ce.lookupNode(e,r);for(var n in t.contents)throw new Ce.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){for(var r,t=[".",".."],n=l(Object.keys(e.contents));!(r=n()).done;){var o=r.value;t.push(o)}return t},symlink:function(e,r,t){var n=ke.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!Ce.isLink(e.mode))throw new Ce.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var i=e.node.contents;if(o>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-o,n);if(L(a>=0),a>8&&i.subarray)r.set(i.subarray(o,o+a),t);else for(var s=0;s0||t+r8)throw new Ce.ErrnoError(32);for(var t=e.split("/").filter((function(e){return!!e})),n=Ce.root,o="/",i=0;i40)throw new Ce.ErrnoError(32)}}return{path:o,node:n}},getPath:function(e){for(var r;;){if(Ce.isRoot(e)){var t=e.mount.mountpoint;return r?"/"!==t[t.length-1]?t+"/"+r:t+r:t}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:function(e,r){for(var t=0,n=0;n>>0)%Ce.nameTable.length},hashAddNode:function(e){var r=Ce.hashName(e.parent.id,e.name);e.name_next=Ce.nameTable[r],Ce.nameTable[r]=e},hashRemoveNode:function(e){var r=Ce.hashName(e.parent.id,e.name);if(Ce.nameTable[r]===e)Ce.nameTable[r]=e.name_next;else for(var t=Ce.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:function(e,r){var t=Ce.mayLookup(e);if(t)throw new Ce.ErrnoError(t);for(var n=Ce.hashName(e.id,r),o=Ce.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===e.id&&i===r)return o}return Ce.lookup(e,r)},createNode:function(e,r,t,n){L("object"==(void 0===e?"undefined":u(e)));var o=new Ce.FSNode(e,r,t,n);return Ce.hashAddNode(o),o},destroyNode:function(e){Ce.hashRemoveNode(e)},isRoot:function(e){return e===e.parent},isMountpoint:function(e){return!!e.mounted},isFile:function(e){return 32768==(61440&e)},isDir:function(e){return 16384==(61440&e)},isLink:function(e){return 40960==(61440&e)},isChrdev:function(e){return 8192==(61440&e)},isBlkdev:function(e){return 24576==(61440&e)},isFIFO:function(e){return 4096==(61440&e)},isSocket:function(e){return!(49152&~e)},flagsToPermissionString:function(e){var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:function(e,r){return Ce.ignorePermissions||(!r.includes("r")||292&e.mode)&&(!r.includes("w")||146&e.mode)&&(!r.includes("x")||73&e.mode)?0:2},mayLookup:function(e){if(!Ce.isDir(e.mode))return 54;var r=Ce.nodePermissions(e,"x");return r||(e.node_ops.lookup?0:2)},mayCreate:function(e,r){try{return Ce.lookupNode(e,r),20}catch(e){}return Ce.nodePermissions(e,"wx")},mayDelete:function(e,r,t){var n;try{n=Ce.lookupNode(e,r)}catch(e){return e.errno}var o=Ce.nodePermissions(e,"wx");if(o)return o;if(t){if(!Ce.isDir(n.mode))return 54;if(Ce.isRoot(n)||Ce.getPath(n)===Ce.cwd())return 10}else if(Ce.isDir(n.mode))return 31;return 0},mayOpen:function(e,r){return e?Ce.isLink(e.mode)?32:Ce.isDir(e.mode)&&("r"!==Ce.flagsToPermissionString(r)||512&r)?31:Ce.nodePermissions(e,Ce.flagsToPermissionString(r)):44},MAX_OPEN_FDS:4096,nextfd:function(){for(var e=0;e<=Ce.MAX_OPEN_FDS;e++)if(!Ce.streams[e])return e;throw new Ce.ErrnoError(33)},getStreamChecked:function(e){var r=Ce.getStream(e);if(!r)throw new Ce.ErrnoError(8);return r},getStream:function(e){return Ce.streams[e]},createStream:function(e,r){return void 0===r&&(r=-1),e=Object.assign(new Ce.FSStream,e),-1==r&&(r=Ce.nextfd()),e.fd=r,Ce.streams[r]=e,e},closeStream:function(e){Ce.streams[e]=null},dupStream:function(e,r){var t,n;void 0===r&&(r=-1);var o=Ce.createStream(e,r);return null==(n=o.stream_ops)||null==(t=n.dup)||t.call(n,o),o},chrdev_stream_ops:{open:function(e){var r=Ce.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,null==e.stream_ops.open||e.stream_ops.open.call(e.stream_ops,e)},llseek:function(){throw new Ce.ErrnoError(70)}},major:function(e){return e>>8},minor:function(e){return 255&e},makedev:function(e,r){return e<<8|r},registerDevice:function(e,r){Ce.devices[e]={stream_ops:r}},getDevice:function(e){return Ce.devices[e]},getMounts:function(e){for(var r=[],t=[e];t.length;){var n,o=t.pop();r.push(o),(n=t).push.apply(n,[].concat(o.mounts))}return r},syncfs:function(e,r){"function"==typeof e&&(r=e,e=!1),Ce.syncFSRequests++,Ce.syncFSRequests>1&&M("warning: "+Ce.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=Ce.getMounts(Ce.root.mount),n=0;function o(e){return L(Ce.syncFSRequests>0),Ce.syncFSRequests--,r(e)}function i(e){if(e)return i.errored?void 0:(i.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach((function(r){if(!r.type.syncfs)return i(null);r.type.syncfs(r,e,i)}))},mount:function(e,r,t){if("string"==typeof e)throw e;var n,o="/"===t,i=!t;if(o&&Ce.root)throw new Ce.ErrnoError(10);if(!o&&!i){var a=Ce.lookupPath(t,{follow_mount:!1});if(t=a.path,n=a.node,Ce.isMountpoint(n))throw new Ce.ErrnoError(10);if(!Ce.isDir(n.mode))throw new Ce.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?Ce.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:function(e){var r=Ce.lookupPath(e,{follow_mount:!1});if(!Ce.isMountpoint(r.node))throw new Ce.ErrnoError(28);var t=r.node,n=t.mounted,o=Ce.getMounts(n);Object.keys(Ce.nameTable).forEach((function(e){for(var r=Ce.nameTable[e];r;){var t=r.name_next;o.includes(r.mount)&&Ce.destroyNode(r),r=t}})),t.mounted=null;var i=t.mount.mounts.indexOf(n);L(-1!==i),t.mount.mounts.splice(i,1)},lookup:function(e,r){return e.node_ops.lookup(e,r)},mknod:function(e,r,t){var n=Ce.lookupPath(e,{parent:!0}).node,o=me.basename(e);if(!o||"."===o||".."===o)throw new Ce.ErrnoError(28);var i=Ce.mayCreate(n,o);if(i)throw new Ce.ErrnoError(i);if(!n.node_ops.mknod)throw new Ce.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:function(e,r){return r=void 0!==r?r:438,r&=4095,r|=32768,Ce.mknod(e,r,0)},mkdir:function(e,r){return r=void 0!==r?r:511,r&=1023,r|=16384,Ce.mknod(e,r,0)},mkdirTree:function(e,r){for(var t=e.split("/"),n="",o=0;o=0),n<0||o<0)throw new Ce.ErrnoError(28);if(Ce.isClosed(e))throw new Ce.ErrnoError(8);if(1==(2097155&e.flags))throw new Ce.ErrnoError(8);if(Ce.isDir(e.node.mode))throw new Ce.ErrnoError(31);if(!e.stream_ops.read)throw new Ce.ErrnoError(28);var i=void 0!==o;if(i){if(!e.seekable)throw new Ce.ErrnoError(70)}else o=e.position;var a=e.stream_ops.read(e,r,t,n,o);return i||(e.position+=a),a},write:function(e,r,t,n,o,i){if(L(t>=0),n<0||o<0)throw new Ce.ErrnoError(28);if(Ce.isClosed(e))throw new Ce.ErrnoError(8);if(!(2097155&e.flags))throw new Ce.ErrnoError(8);if(Ce.isDir(e.node.mode))throw new Ce.ErrnoError(31);if(!e.stream_ops.write)throw new Ce.ErrnoError(28);e.seekable&&1024&e.flags&&Ce.llseek(e,0,2);var a=void 0!==o;if(a){if(!e.seekable)throw new Ce.ErrnoError(70)}else o=e.position;var s=e.stream_ops.write(e,r,t,n,o,i);return a||(e.position+=s),s},allocate:function(e,r,t){if(Ce.isClosed(e))throw new Ce.ErrnoError(8);if(r<0||t<=0)throw new Ce.ErrnoError(28);if(!(2097155&e.flags))throw new Ce.ErrnoError(8);if(!Ce.isFile(e.node.mode)&&!Ce.isDir(e.node.mode))throw new Ce.ErrnoError(43);if(!e.stream_ops.allocate)throw new Ce.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap:function(e,r,t,n,o){if(2&n&&!(2&o)&&2!=(2097155&e.flags))throw new Ce.ErrnoError(2);if(1==(2097155&e.flags))throw new Ce.ErrnoError(2);if(!e.stream_ops.mmap)throw new Ce.ErrnoError(43);return e.stream_ops.mmap(e,r,t,n,o)},msync:function(e,r,t,n,o){return L(t>=0),e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0},ioctl:function(e,r,t){if(!e.stream_ops.ioctl)throw new Ce.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile:function(e,r){if(void 0===r&&(r={}),r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw new Error('Invalid encoding type "'+r.encoding+'"');var t,n=Ce.open(e,r.flags),o=Ce.stat(e).size,i=new Uint8Array(o);return Ce.read(n,i,0,o,0),"utf8"===r.encoding?t=Ee(i,0):"binary"===r.encoding&&(t=i),Ce.close(n),t},writeFile:function(e,r,t){void 0===t&&(t={}),t.flags=t.flags||577;var n=Ce.open(e,t.flags,t.mode);if("string"==typeof r){var o=new Uint8Array(we(r)+1),i=be(r,o,0,o.length);Ce.write(n,o,0,i,void 0,t.canOwn)}else{if(!ArrayBuffer.isView(r))throw new Error("Unsupported data type");Ce.write(n,r,0,r.byteLength,void 0,t.canOwn)}Ce.close(n)},cwd:function(){return Ce.currentPath},chdir:function(e){var r=Ce.lookupPath(e,{follow:!0});if(null===r.node)throw new Ce.ErrnoError(44);if(!Ce.isDir(r.node.mode))throw new Ce.ErrnoError(54);var t=Ce.nodePermissions(r.node,"x");if(t)throw new Ce.ErrnoError(t);Ce.currentPath=r.path},createDefaultDirectories:function(){Ce.mkdir("/tmp"),Ce.mkdir("/home"),Ce.mkdir("/home/web_user")},createDefaultDevices:function(){Ce.mkdir("/dev"),Ce.registerDevice(Ce.makedev(1,3),{read:function(){return 0},write:function(e,r,t,n,o){return n}}),Ce.mkdev("/dev/null",Ce.makedev(1,3)),Oe.register(Ce.makedev(5,0),Oe.default_tty_ops),Oe.register(Ce.makedev(6,0),Oe.default_tty1_ops),Ce.mkdev("/dev/tty",Ce.makedev(5,0)),Ce.mkdev("/dev/tty1",Ce.makedev(6,0));var e=new Uint8Array(1024),r=0,t=function(){return 0===r&&(r=he(e).byteLength),e[--r]};Ce.createDevice("/dev","random",t),Ce.createDevice("/dev","urandom",t),Ce.mkdir("/dev/shm"),Ce.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){Ce.mkdir("/proc");var e=Ce.mkdir("/proc/self");Ce.mkdir("/proc/self/fd"),Ce.mount({mount:function(){var r=Ce.createNode(e,"fd",16895,73);return r.node_ops={lookup:function(e,r){var t=+r,n=Ce.getStreamChecked(t),o={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return n.path}}};return o.parent=o,o}},r}},{},"/proc/self/fd")},createStandardStreams:function(){d.stdin?Ce.createDevice("/dev","stdin",d.stdin):Ce.symlink("/dev/tty","/dev/stdin"),d.stdout?Ce.createDevice("/dev","stdout",null,d.stdout):Ce.symlink("/dev/tty","/dev/stdout"),d.stderr?Ce.createDevice("/dev","stderr",null,d.stderr):Ce.symlink("/dev/tty1","/dev/stderr");var e=Ce.open("/dev/stdin",0),r=Ce.open("/dev/stdout",1),t=Ce.open("/dev/stderr",1);L(0===e.fd,"invalid handle for stdin ("+e.fd+")"),L(1===r.fd,"invalid handle for stdout ("+r.fd+")"),L(2===t.fd,"invalid handle for stderr ("+t.fd+")")},staticInit:function(){[44].forEach((function(e){Ce.genericErrors[e]=new Ce.ErrnoError(e),Ce.genericErrors[e].stack=""})),Ce.nameTable=new Array(4096),Ce.mount(ke,{},"/"),Ce.createDefaultDirectories(),Ce.createDefaultDevices(),Ce.createSpecialDirectories(),Ce.filesystems={MEMFS:ke}},init:function(e,r,t){L(!Ce.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"),Ce.init.initialized=!0,d.stdin=e||d.stdin,d.stdout=r||d.stdout,d.stderr=t||d.stderr,Ce.createStandardStreams()},quit:function(){Ce.init.initialized=!1,tr(0);for(var e=0;ethis.length-1||e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},r.setDataGetter=function(e){this.getter=e},r.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",t,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+t+". Status: "+e.status);var r,n=Number(e.getResponseHeader("Content-length")),o=(r=e.getResponseHeader("Accept-Ranges"))&&"bytes"===r,i=(r=e.getResponseHeader("Content-Encoding"))&&"gzip"===r,a=1048576;o||(a=n);var s=this;s.setDataGetter((function(e){var r=e*a,o=(e+1)*a-1;if(o=Math.min(o,n-1),void 0===s.chunks[e]&&(s.chunks[e]=function(e,r){if(e>r)throw new Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==a&&o.setRequestHeader("Range","bytes="+e+"-"+r),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):_e(o.responseText||"")}(r,o)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!i&&n||(a=n=1,n=this.getter(0).length,a=n,A("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=a,this.lengthKnown=!0},o(e,[{key:"length",get:function(){return this.lengthKnown||this.cacheLength(),this._length}},{key:"chunkSize",get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}]),e}();if("undefined"!=typeof XMLHttpRequest){if(!h)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var s={isDevice:!1,contents:new a}}else s={isDevice:!1,url:t};var u=Ce.createFile(e,r,s,n,i);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};function l(e,r,t,n,o){var i=e.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(L(a>=0),i.slice)for(var s=0;s>2]=n.dev,D[t+4>>2]=n.mode,x[t+8>>2]=n.nlink,D[t+12>>2]=n.uid,D[t+16>>2]=n.gid,D[t+20>>2]=n.rdev,J=[n.size>>>0,(X=n.size,+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[t+24>>2]=J[0],D[t+28>>2]=J[1],D[t+32>>2]=4096,D[t+36>>2]=n.blocks;var o=n.atime.getTime(),i=n.mtime.getTime(),a=n.ctime.getTime();return J=[Math.floor(o/1e3)>>>0,(X=Math.floor(o/1e3),+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[t+40>>2]=J[0],D[t+44>>2]=J[1],x[t+48>>2]=o%1e3*1e3,J=[Math.floor(i/1e3)>>>0,(X=Math.floor(i/1e3),+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[t+56>>2]=J[0],D[t+60>>2]=J[1],x[t+64>>2]=i%1e3*1e3,J=[Math.floor(a/1e3)>>>0,(X=Math.floor(a/1e3),+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[t+72>>2]=J[0],D[t+76>>2]=J[1],x[t+80>>2]=a%1e3*1e3,J=[n.ino>>>0,(X=n.ino,+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[t+88>>2]=J[0],D[t+92>>2]=J[1],0},doMsync:function(e,r,t,n,o){if(!Ce.isFile(r.node.mode))throw new Ce.ErrnoError(43);if(2&n)return 0;var i=F.slice(e,e+t);Ce.msync(r,i,o,t,n)},getStreamFromFD:function(e){return Ce.getStreamChecked(e)},varargs:void 0,getStr:function(e){return De(e)}},Ie=function(e,r){return L(e==e>>>0||e==(0|e)),L(r===(0|r)),r+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*r:NaN},Le=[0,31,60,91,121,152,182,213,244,274,305,335],Ne=[0,31,59,90,120,151,181,212,243,273,304,334],Re=function(e){var r;return((r=e.getFullYear())%4!=0||r%100==0&&r%400!=0?Ne:Le)[e.getMonth()]+e.getDate()-1},Ue=function(e,r,t){return L("number"==typeof t,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),be(e,F,r,t)};Se=function(){return performance.now()};var Be,je,$e=function(e){var r=k.buffer,t=(e-r.byteLength+65535)/65536;try{return k.grow(t),N(),1}catch(t){M("growMemory: Attempted to grow heap from "+r.byteLength+" bytes to "+e+" bytes, but got error: "+t)}},We={},He=function(){if(!He.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==("undefined"==typeof navigator?"undefined":u(navigator))&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:_||"./this.program"};for(var r in We)void 0===We[r]?delete e[r]:e[r]=We[r];var t=[];for(var r in e)t.push(r+"="+e[r]);He.strings=t}return He.strings},ze=function(e){return sr(e)},Ve=function(e,r,t,n,o){var i={string:function(e){var r=0;return null!=e&&0!==e&&(r=function(e){var r=we(e)+1,t=ze(r);return Ue(e,t,r),t}(e)),r},array:function(e){var r,t,n=ze(e.length);return t=n,L((r=e).length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)"),P.set(r,t),n}},a=function(e){var r=d["_"+e];return L(r,"Cannot call unknown function "+e+", make sure it is exported"),r}(e),s=[],u=0;if(L("array"!==r,'Return type should not be "array".'),n)for(var c=0;c>7)},Ye=function(e,r){var t;if(L(!r.includes("j"),"i64 not permitted in function signatures when WASM_BIGINT is disabled"),"function"==typeof WebAssembly.Function)return new WebAssembly.Function(function(e){L(!e.includes("j"),"i64 not permitted in function signatures when WASM_BIGINT is disabled");for(var r={i:"i32",j:"i64",f:"f32",d:"f64",e:"externref",p:"i32"},t={parameters:[],results:"v"==e[0]?[]:[r[e[0]]]},n=1;n=Qe.length&&(Qe.length=e+1),Qe[e]=r=Be.get(e)),L(Be.get(e)==r,"JavaScript-side Wasm function table mirror is out of date!"),r},Ke=function(e){return je||(je=new WeakMap,function(e,r){if(je)for(var t=e;t>1]=2,0}return-28}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_openat:function(e,r,t,n){xe.varargs=n;try{r=xe.getStr(r),r=xe.calculateAt(e,r);var o=n?fe():0;return Ce.open(r,t,o).fd}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return-e.errno}},_abort_js:function(){q("native code called abort()")},_emscripten_get_now_is_monotonic:function(){return 1},_emscripten_memcpy_js:function(e,r,t){return F.copyWithin(e,r,r+t)},_gmtime_js:function(e,r,t){var n=Ie(e,r),o=new Date(1e3*n);D[t>>2]=o.getUTCSeconds(),D[t+4>>2]=o.getUTCMinutes(),D[t+8>>2]=o.getUTCHours(),D[t+12>>2]=o.getUTCDate(),D[t+16>>2]=o.getUTCMonth(),D[t+20>>2]=o.getUTCFullYear()-1900,D[t+24>>2]=o.getUTCDay();var i=Date.UTC(o.getUTCFullYear(),0,1,0,0,0,0),a=(o.getTime()-i)/864e5|0;D[t+28>>2]=a},_localtime_js:function(e,r,t){var n=Ie(e,r),o=new Date(1e3*n);D[t>>2]=o.getSeconds(),D[t+4>>2]=o.getMinutes(),D[t+8>>2]=o.getHours(),D[t+12>>2]=o.getDate(),D[t+16>>2]=o.getMonth(),D[t+20>>2]=o.getFullYear()-1900,D[t+24>>2]=o.getDay();var i=0|Re(o);D[t+28>>2]=i,D[t+36>>2]=-60*o.getTimezoneOffset();var a=new Date(o.getFullYear(),0,1),s=new Date(o.getFullYear(),6,1).getTimezoneOffset(),u=a.getTimezoneOffset(),c=0|(s!=u&&o.getTimezoneOffset()==Math.min(u,s));D[t+32>>2]=c},_mktime_js:function(e){var r,t=function(){var r=new Date(D[e+20>>2]+1900,D[e+16>>2],D[e+12>>2],D[e+8>>2],D[e+4>>2],D[e>>2],0),t=D[e+32>>2],n=r.getTimezoneOffset(),o=new Date(r.getFullYear(),0,1),i=new Date(r.getFullYear(),6,1).getTimezoneOffset(),a=o.getTimezoneOffset(),s=Math.min(a,i);if(t<0)D[e+32>>2]=Number(i!=a&&s==n);else if(t>0!=(s==n)){var u=Math.max(a,i),c=t>0?s:u;r.setTime(r.getTime()+6e4*(c-n))}D[e+24>>2]=r.getDay();var l=0|Re(r);D[e+28>>2]=l,D[e>>2]=r.getSeconds(),D[e+4>>2]=r.getMinutes(),D[e+8>>2]=r.getHours(),D[e+12>>2]=r.getDate(),D[e+16>>2]=r.getMonth(),D[e+20>>2]=r.getYear();var d=r.getTime();return isNaN(d)?-1:d/1e3}();return X=t,r=+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0,nr(r),t>>>0},_tzset_js:function(e,r,t,n){var o=(new Date).getFullYear(),i=new Date(o,0,1),a=new Date(o,6,1),s=i.getTimezoneOffset(),u=a.getTimezoneOffset(),c=Math.max(s,u);x[e>>2]=60*c,D[r>>2]=Number(s!=u);var l=function(e){return e.toLocaleTimeString(void 0,{hour12:!1,timeZoneName:"short"}).split(" ")[1]},d=l(i),f=l(a);L(d),L(f),L(we(d)<=16,"timezone name truncated to fit in TZNAME_MAX ("+d+")"),L(we(f)<=16,"timezone name truncated to fit in TZNAME_MAX ("+f+")"),u>>=0)>r);var t=2147483648;if(e>t)return M("Cannot enlarge memory, requested "+e+" bytes, but the limit is "+t+" bytes!"),!1;for(var n,o,i=1;i<=4;i*=2){var a=r*(1+.2/i);a=Math.min(a,e+100663296);var s=Math.min(t,(n=Math.max(e,a))+((o=65536)-n%o)%o);if($e(s))return!0}return M("Failed to grow the heap from "+r+" bytes to "+s+" bytes, not enough memory!"),!1},environ_get:function(e,r){var t=0;return He().forEach((function(n,o){var i=r+t;x[e+4*o>>2]=i,function(e,r){for(var t=0;t>2]=t.length;var n=0;return t.forEach((function(e){return n+=e.length+1})),x[r>>2]=n,0},fd_close:function(e){try{var r=xe.getStreamFromFD(e);return Ce.close(r),0}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return e.errno}},fd_fdstat_get:function(e,r){try{var t=xe.getStreamFromFD(e),n=t.tty?2:Ce.isDir(t.mode)?3:Ce.isLink(t.mode)?7:4;return P[r]=n,C[r+2>>1]=0,J=[0,(X=0,+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[r+8>>2]=J[0],D[r+12>>2]=J[1],J=[0,(X=0,+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[r+16>>2]=J[0],D[r+20>>2]=J[1],0}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return e.errno}},fd_read:function(e,r,t,n){try{var o=function(e,r,t,n){for(var o=0,i=0;i>2],s=x[r+4>>2];r+=8;var u=Ce.read(e,P,a,s,n);if(u<0)return-1;if(o+=u,u>2]=o,0}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return e.errno}},fd_seek:function(e,r,t,n,o){var i=Ie(r,t);try{if(isNaN(i))return 61;var a=xe.getStreamFromFD(e);return Ce.llseek(a,i,n),J=[a.position>>>0,(X=a.position,+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[o>>2]=J[0],D[o+4>>2]=J[1],a.getdents&&0===i&&0===n&&(a.getdents=null),0}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return e.errno}},fd_write:function(e,r,t,n){try{var o=function(e,r,t,n){for(var o=0,i=0;i>2],s=x[r+4>>2];r+=8;var u=Ce.write(e,P,a,s,n);if(u<0)return-1;o+=u}return o}(xe.getStreamFromFD(e),r,t);return x[n>>2]=o,0}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return e.errno}}},er=function(){var e={env:Ze,wasi_snapshot_preview1:Ze};function r(e,r){var t;return er=e.exports,L(k=er.memory,"memory not found in wasm exports"),N(),L(Be=er.__indirect_function_table,"table not found in wasm exports"),t=er.__wasm_call_ctors,B.unshift(t),Q("wasm-instantiate"),er}Y("wasm-instantiate");var t,n,o,a,s=d;if(d.instantiateWasm)try{return d.instantiateWasm(e,r)}catch(e){M("Module.instantiateWasm callback failed with error: "+e),i(e)}return K||(K=te()),(t=T,n=K,o=e,a=function(e){L(d===s,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),s=null,r(e.instance)},t||"function"!=typeof WebAssembly.instantiateStreaming||Z(n)||"function"!=typeof fetch?oe(n,o,a):fetch(n,{credentials:"same-origin"}).then((function(e){return WebAssembly.instantiateStreaming(e,o).then(a,(function(e){return M("wasm streaming compile failed: "+e),M("falling back to ArrayBuffer instantiation"),oe(n,o,a)}))}))).catch(i),{}}();d._malloc=re("malloc",1),d._free=re("free",1),d._registerWasmPlayer=re("registerWasmPlayer",0),d._setCodecType=re("setCodecType",4),d._exitWasmPlayer=re("exitWasmPlayer",1),d._initDecoder=re("initDecoder",1),d._decodeCodecContext=re("decodeCodecContext",5),d._destroy=re("destroy",1),d._demuxTsStream=re("demuxTsStream",3),d._getPacket=re("getPacket",0),d._getVLCLen=re("getVLCLen",0),d._getVLC=re("getVLC",0),d._getVPSLen=re("getVPSLen",0),d._getVPS=re("getVPS",0),d._getSPSLen=re("getSPSLen",0),d._getSPS=re("getSPS",0),d._getPPSLen=re("getPPSLen",0),d._getPPS=re("getPPS",0),d._getSEILen=re("getSEILen",0),d._getSEI=re("getSEI",0);var rr,tr=re("fflush",1),nr=re("_emscripten_tempret_set",1),or=function(){return(or=er.emscripten_stack_init)()},ir=function(){return(ir=er.emscripten_stack_get_end)()},ar=function(e){return(ar=er._emscripten_stack_restore)(e)},sr=function(e){return(sr=er._emscripten_stack_alloc)(e)},ur=function(){return(ur=er.emscripten_stack_get_current)()};function cr(){var e;or(),L(!(3&(e=ir()))),0==e&&(e+=4),x[e>>2]=34821223,x[e+4>>2]=2310721022,x[0]=1668509029}function lr(){function e(){rr||(rr=!0,d.calledRun=!0,I||(L(!$),$=!0,R(),d.noFSInit||Ce.init.initialized||Ce.init(),Ce.ignorePermissions=!1,ce(B),n(d),d.onRuntimeInitialized&&d.onRuntimeInitialized(),L(!d._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),function(){if(R(),d.postRun)for("function"==typeof d.postRun&&(d.postRun=[d.postRun]);d.postRun.length;)e=d.postRun.shift(),j.unshift(e);var e;ce(j)}()))}W>0||(cr(),function(){if(d.preRun)for("function"==typeof d.preRun&&(d.preRun=[d.preRun]);d.preRun.length;)e=d.preRun.shift(),U.unshift(e);var e;ce(U)}(),W>0||(d.setStatus?(d.setStatus("Running..."),setTimeout((function(){setTimeout((function(){d.setStatus("")}),1),e()}),1)):e(),R()))}if(d.dynCall_jiji=re("dynCall_jiji",5),d.dynCall_iiiiij=re("dynCall_iiiiij",7),d.dynCall_jiiij=re("dynCall_jiiij",6),d._ff_h264_cabac_tables=113148,d.run=lr,d.ccall=Ve,d.cwrap=function(e,r,t,n){return function(){for(var n=arguments.length,o=new Array(n),i=0;i0;)d.preInit.pop()();lr(),r=p;for(var dr,fr=l(Object.keys(d));!(dr=fr()).done;)t();return r});"object"===u(r)&&"object"===u(e)&&(e.exports=p)}(t,t.exports);var n,o,i,a,s=r(t.exports),u="wasmLoading",c="wasmLoaded",l="wasmFailed",d="registerWasmPlayer",f="videoCallback",p="decodeCodecContext",m="destroy",h="demuxTsStream",g="demuxCoreReceive",v="readPacket",E="readPacketEnd",y="mediaInfo",w=function(e,r){return{cmd:e,data:r}},b=(n="undefined"!=typeof self?self:window,o={navigator:void 0!==n.navigator?n.navigator:{userAgent:""},infoMap:{engine:["WebKit","Trident","Gecko","Presto"],browser:["Safari","Chrome","Edge","IE","Firefox","Firefox Focus","Chromium","Opera","Vivaldi","Yandex","Arora","Lunascape","QupZilla","Coc Coc","Kindle","Iceweasel","Konqueror","Iceape","SeaMonkey","Epiphany","360","360SE","360EE","UC","QQBrowser","QQ","Baidu","Maxthon","Sogou","LBBROWSER","2345Explorer","TheWorld","XiaoMi","Quark","Qiyu","Wechat","Taobao","Alipay","Weibo","Douban","Suning","iQiYi"],os:["Windows","Linux","Mac OS","Android","Ubuntu","FreeBSD","Debian","iOS","Windows Phone","BlackBerry","MeeGo","Symbian","Chrome OS","WebOS"],device:["Mobile","Tablet","iPad"]}},i={getMatchMap:function(e){return{Trident:e.indexOf("Trident")>-1||e.indexOf("NET CLR")>-1,Presto:e.indexOf("Presto")>-1,WebKit:e.indexOf("AppleWebKit")>-1,Gecko:e.indexOf("Gecko/")>-1,Safari:e.indexOf("Safari")>-1,Chrome:e.indexOf("Chrome")>-1||e.indexOf("CriOS")>-1,IE:e.indexOf("MSIE")>-1||e.indexOf("Trident")>-1,Edge:e.indexOf("Edge")>-1,Firefox:e.indexOf("Firefox")>-1||e.indexOf("FxiOS")>-1,"Firefox Focus":e.indexOf("Focus")>-1,Chromium:e.indexOf("Chromium")>-1,Opera:e.indexOf("Opera")>-1||e.indexOf("OPR")>-1,Vivaldi:e.indexOf("Vivaldi")>-1,Yandex:e.indexOf("YaBrowser")>-1,Arora:e.indexOf("Arora")>-1,Lunascape:e.indexOf("Lunascape")>-1,QupZilla:e.indexOf("QupZilla")>-1,"Coc Coc":e.indexOf("coc_coc_browser")>-1,Kindle:e.indexOf("Kindle")>-1||e.indexOf("Silk/")>-1,Iceweasel:e.indexOf("Iceweasel")>-1,Konqueror:e.indexOf("Konqueror")>-1,Iceape:e.indexOf("Iceape")>-1,SeaMonkey:e.indexOf("SeaMonkey")>-1,Epiphany:e.indexOf("Epiphany")>-1,360:e.indexOf("QihooBrowser")>-1||e.indexOf("QHBrowser")>-1,"360EE":e.indexOf("360EE")>-1,"360SE":e.indexOf("360SE")>-1,UC:e.indexOf("UC")>-1||e.indexOf(" UBrowser")>-1,QQBrowser:e.indexOf("QQBrowser")>-1,QQ:e.indexOf("QQ/")>-1,Baidu:e.indexOf("Baidu")>-1||e.indexOf("BIDUBrowser")>-1,Maxthon:e.indexOf("Maxthon")>-1,Sogou:e.indexOf("MetaSr")>-1||e.indexOf("Sogou")>-1,LBBROWSER:e.indexOf("LBBROWSER")>-1,"2345Explorer":e.indexOf("2345Explorer")>-1,TheWorld:e.indexOf("TheWorld")>-1,XiaoMi:e.indexOf("MiuiBrowser")>-1,Quark:e.indexOf("Quark")>-1,Qiyu:e.indexOf("Qiyu")>-1,Wechat:e.indexOf("MicroMessenger")>-1,Taobao:e.indexOf("AliApp(TB")>-1,Alipay:e.indexOf("AliApp(AP")>-1,Weibo:e.indexOf("Weibo")>-1,Douban:e.indexOf("com.douban.frodo")>-1,Suning:e.indexOf("SNEBUY-APP")>-1,iQiYi:e.indexOf("IqiyiApp")>-1,Windows:e.indexOf("Windows")>-1,Linux:e.indexOf("Linux")>-1||e.indexOf("X11")>-1,"Mac OS":e.indexOf("Macintosh")>-1,Android:e.indexOf("Android")>-1||e.indexOf("Adr")>-1,Ubuntu:e.indexOf("Ubuntu")>-1,FreeBSD:e.indexOf("FreeBSD")>-1,Debian:e.indexOf("Debian")>-1,"Windows Phone":e.indexOf("IEMobile")>-1||e.indexOf("Windows Phone")>-1,BlackBerry:e.indexOf("BlackBerry")>-1||e.indexOf("RIM")>-1,MeeGo:e.indexOf("MeeGo")>-1,Symbian:e.indexOf("Symbian")>-1,iOS:e.indexOf("like Mac OS X")>-1,"Chrome OS":e.indexOf("CrOS")>-1,WebOS:e.indexOf("hpwOS")>-1,Mobile:e.indexOf("Mobi")>-1||e.indexOf("iPh")>-1||e.indexOf("480")>-1,Tablet:e.indexOf("Tablet")>-1||e.indexOf("Nexus 7")>-1,iPad:e.indexOf("iPad")>-1}},matchInfoMap:function(e){var r,t=(null==(r=o.navigator)?void 0:r.userAgent)||"",n=i.getMatchMap(t);for(var a in o.infoMap)for(var s=0;s36&&n.showModalDialog?s=!0:+u>45&&(s=t("type","application/vnd.chromium.remoting-viewer"))}if(a.Baidu&&a.Opera&&(a.Baidu=!1),a.Mobile&&(a.Mobile=!r.includes("iPad")),s&&(t("type","application/gameplugin")||o.navigator&&void 0===o.navigator.connection.saveData?a["360SE"]=!0:a["360EE"]=!0),a.IE||a.Edge)switch(window.screenTop-window.screenY){case 71:case 74:case 99:case 75:case 105:break;case 102:a["360EE"]=!0;break;case 104:a["360SE"]=!0}var c={Safari:function(){return r.replace(/^.*Version\/([\d.]+).*$/,"$1")},Chrome:function(){return r.replace(/^.*Chrome\/([\d.]+).*$/,"$1").replace(/^.*CriOS\/([\d.]+).*$/,"$1")},IE:function(){return r.replace(/^.*MSIE ([\d.]+).*$/,"$1").replace(/^.*rv:([\d.]+).*$/,"$1")},Edge:function(){return r.replace(/^.*Edge\/([\d.]+).*$/,"$1")},Firefox:function(){return r.replace(/^.*Firefox\/([\d.]+).*$/,"$1").replace(/^.*FxiOS\/([\d.]+).*$/,"$1")},"Firefox Focus":function(){return r.replace(/^.*Focus\/([\d.]+).*$/,"$1")},Chromium:function(){return r.replace(/^.*Chromium\/([\d.]+).*$/,"$1")},Opera:function(){return r.replace(/^.*Opera\/([\d.]+).*$/,"$1").replace(/^.*OPR\/([\d.]+).*$/,"$1")},Vivaldi:function(){return r.replace(/^.*Vivaldi\/([\d.]+).*$/,"$1")},Yandex:function(){return r.replace(/^.*YaBrowser\/([\d.]+).*$/,"$1")},Arora:function(){return r.replace(/^.*Arora\/([\d.]+).*$/,"$1")},Lunascape:function(){return r.replace(/^.*Lunascape[\/\s]([\d.]+).*$/,"$1")},QupZilla:function(){return r.replace(/^.*QupZilla[\/\s]([\d.]+).*$/,"$1")},"Coc Coc":function(){return r.replace(/^.*coc_coc_browser\/([\d.]+).*$/,"$1")},Kindle:function(){return r.replace(/^.*Version\/([\d.]+).*$/,"$1")},Iceweasel:function(){return r.replace(/^.*Iceweasel\/([\d.]+).*$/,"$1")},Konqueror:function(){return r.replace(/^.*Konqueror\/([\d.]+).*$/,"$1")},Iceape:function(){return r.replace(/^.*Iceape\/([\d.]+).*$/,"$1")},SeaMonkey:function(){return r.replace(/^.*SeaMonkey\/([\d.]+).*$/,"$1")},Epiphany:function(){return r.replace(/^.*Epiphany\/([\d.]+).*$/,"$1")},360:function(){return r.replace(/^.*QihooBrowser\/([\d.]+).*$/,"$1")},"360SE":function(){return{63:"10.0",55:"9.1",45:"8.1",42:"8.0",31:"7.0",21:"6.3"}[+r.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},"360EE":function(){return{69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[+r.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},Maxthon:function(){return r.replace(/^.*Maxthon\/([\d.]+).*$/,"$1")},QQBrowser:function(){return r.replace(/^.*QQBrowser\/([\d.]+).*$/,"$1")},QQ:function(){return r.replace(/^.*QQ\/([\d.]+).*$/,"$1")},Baidu:function(){return r.replace(/^.*BIDUBrowser[\s\/]([\d.]+).*$/,"$1")},UC:function(){return r.replace(/^.*UC?Browser\/([\d.]+).*$/,"$1")},Sogou:function(){return r.replace(/^.*SE ([\d.X]+).*$/,"$1").replace(/^.*SogouMobileBrowser\/([\d.]+).*$/,"$1")},LBBROWSER:function(){return{57:"6.5",49:"6.0",46:"5.9",42:"5.3",39:"5.2",34:"5.0",29:"4.5",21:"4.0"}[+navigator.userAgent.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},"2345Explorer":function(){return r.replace(/^.*2345Explorer\/([\d.]+).*$/,"$1")},TheWorld:function(){return r.replace(/^.*TheWorld ([\d.]+).*$/,"$1")},XiaoMi:function(){return r.replace(/^.*MiuiBrowser\/([\d.]+).*$/,"$1")},Quark:function(){return r.replace(/^.*Quark\/([\d.]+).*$/,"$1")},Qiyu:function(){return r.replace(/^.*Qiyu\/([\d.]+).*$/,"$1")},Wechat:function(){return r.replace(/^.*MicroMessenger\/([\d.]+).*$/,"$1")},Taobao:function(){return r.replace(/^.*AliApp\(TB\/([\d.]+).*$/,"$1")},Alipay:function(){return r.replace(/^.*AliApp\(AP\/([\d.]+).*$/,"$1")},Weibo:function(){return r.replace(/^.*weibo__([\d.]+).*$/,"$1")},Douban:function(){return r.replace(/^.*com.douban.frodo\/([\d.]+).*$/,"$1")},Suning:function(){return r.replace(/^.*SNEBUY-APP([\d.]+).*$/,"$1")},iQiYi:function(){return r.replace(/^.*IqiyiVersion\/([\d.]+).*$/,"$1")}};return e.browserVersion="",c[e.browser]&&(e.browserVersion=c[e.browser](),e.browserVersion==r&&(e.browserVersion="")),"Edge"==e.browser&&(e.engine="EdgeHTML"),"Chrome"==e.browser&&parseInt(e.browserVersion)>27&&(e.engine="Blink"),"Opera"==e.browser&&parseInt(e.browserVersion)>12&&(e.engine="Blink"),"Yandex"==e.browser&&(e.engine="Blink"),e.browser+" (version: "+e.browserVersion+"; kernel: "+e.engine+")"}},a={DeviceInfoObj:function(e){var r,t=function(r){var t;null==(t=e.info)||t.forEach((function(e){e.toLowerCase()===r.toLowerCase()&&(s[r]=a[r])}))};e=e||{domain:""};var a={deviceType:i.getDeviceType(),OS:i.getOS(),OSVersion:i.getOSVersion(),sh:n.screen.height,sw:n.screen.width,lang:i.getLanguage(),netWork:i.getNetwork(),orientation:i.getOrientationStatu(),browserInfo:i.getBrowserInfo(),fingerprint:i.createFingerprint(e.domain),userAgent:null==(r=o.navigator)?void 0:r.userAgent};if(!e.info||0===e.info.length)return a;var s={};for(var u in a)t(u);return s}},{getDeviceInfo:function(e){return a.DeviceInfoObj(e)}}),_=function(){function e(){}return e.add=function(r,t){e.queues.push({url:r,data:t})},e.fire=function(){if(e.queues&&0!==e.queues.length){e.isStop=!1;var r=e.queues[0];r.url&&e.api.report(r.data),e.queues.splice(0,1),e.fire()}else e.isStop=!0},e}();_.isStop=!0,_.queues=[];var S=function(){function e(e){this.url=e}var r=e.prototype;return r.report=function(e){this.checkUrl(this.url)&&this.sendInfo(e)},r.sendInfo=function(e){navigator.sendBeacon?this.sendBeacon(this.url,e):this.sendImage(this.url,e)},r.sendImage=function(e,r){var t=this.changeJSON2Query(r),n=new Image;n.onload=n.onerror=function(){n=null},n.src=e+"?"+t+"&random="+Math.random()},r.sendBeacon=function(e,r){try{navigator.sendBeacon(e,this.formatParamsByURLSearchParams(r))}catch(e){}},r.formatParamsByURLSearchParams=function(e){var r=new URLSearchParams;for(var t in e)"object"==typeof e[t]&&(e[t]=JSON.stringify(e[t])),r.append(t,e[t]);return r},r.changeJSON2Query=function(e){var r="";for(var t in e){""!=r&&(r+="&");var n=e[t];r+=t+"="+encodeURIComponent("object"==typeof n?JSON.stringify(n):n)}return r},r.checkUrl=function(e){return!!e&&/^[hH][tT][tT][pP]([sS]?):\/\//.test(e)},e}();function O(){return O=Object.assign||function(e){for(var r=1;r0&&(r._free(l),l=null),{};var d=r.HEAPU8.subarray(l,l+c);s.sps=new Uint8Array(c),null==(n=s.sps)||n.set(d,0);var f=r.cwrap("getPPSLen","number",[])(),p=r.cwrap("getPPS","number",[])(),m=r.HEAPU8.subarray(p,p+f);s.pps=new Uint8Array(f),null==(o=s.pps)||o.set(m,0);var h=r.cwrap("getSEILen","number",[])(),g=r.cwrap("getSEI","number",[])(),v=r.HEAPU8.subarray(g,g+h);s.sei=new Uint8Array(h),null==(i=s.sei)||i.set(v,0);var E=r.cwrap("getVLCLen","number",[])(),y=r.cwrap("getVLC","number",[])(),w=r.HEAPU8.subarray(y,y+E);if(u.vlc=new Uint8Array(E),null==(a=u.vlc)||a.set(w,0),(null==t?void 0:t.vCodec)===e.DEF_HEVC||(null==t?void 0:t.vCodec)===e.DEF_H265){var b,_=r.cwrap("getVPSLen","number",[])(),S=r.cwrap("getVPS","number",[])(),O=r.HEAPU8.subarray(S,S+_);s.vps=new Uint8Array(_),null==(b=s.vps)||b.set(O,0),r._free(O),O=null}try{r._free(l)}catch(e){k.send("worker",{name:"readPacket",free:"spsPtr"})}l=null;try{r._free(d)}catch(e){k.send("worker",{name:"readPacket",free:"spsSubPtr"})}d=null;try{r._free(m)}catch(e){k.send("worker",{name:"readPacket",free:"ppsSubPtr"})}m=null;try{r._free(v)}catch(e){k.send("worker",{name:"readPacket",free:"seiSubPtr"})}v=null;try{r._free(w)}catch(e){k.send("worker",{name:"readPacket",free:"vlcSubPtr"})}return w=null,{nalu:s,vlc:u}};function F(){return F=Object.assign||function(e){for(var r=1;r0?r:e.DEFAULT_SAMPLERATE,sampleChannel:t>=0?t:e.DEFAULT_CHANNEL}:{sampleRate:0,sampleChannel:0,audioNone:!0})))}),"viiddddiiiii"),t._setCodecType(n,0,o,i),t.cwrap("initDecoder","number",["number"])(n);break;case p:var u=s.data,c=u.nalBuf,l=u.pts,b=u.flushDecoder,_=t._malloc(c.length);t.HEAP8.set(c,_);var S=parseInt(1e3*l+"");t._decodeCodecContext(n,_,c.length,S,b),t._free(_),_=null;break;case h:var O=s.data,T=O.buff;O.tsUrl,function(e,r,t,n){null!=M&&(e._free(M),M=null),M=e._malloc(r.length),e.HEAP8.set(r,M);try{var o=e.cwrap("demuxTsStream","number",["number","number","number"])(M,r.length,t);e._free(M),M=null,o>=0&&postMessage(w(g))}catch(e){k.send("worker",{name:"demuxTsStream",msg:e})}}(t,T,n);break;case v:!function(e,r){for(;;){var t=e.cwrap("getPacket","number",[])(),n=e.HEAPU32[t/4],o=e.HEAPU32[t/4+1],i=e.HEAPF64[t/8+1],a=e.HEAPF64[t/8+1+1],s=e.HEAPU32[t/4+1+1+2+2],u=e.HEAPU32[t/4+1+1+2+2+1],c=e.HEAPU8.subarray(u,u+o),l=null,d=[0,1].includes(n);if(d)try{l=P(e,r)}catch(e){}if(!d||o<=0)break;var f=a>0?a:i;f<0||0===t||(self.postMessage(w(v,{type:n,size:o,ptime:i,dtime:a,keyframe:s,data:Array.from(c),pts:f,layer:l})),c=null,l=null,t=null)}postMessage(w(E))}(t,a);break;case m:null!==o&&t.removeFunction(o),o=null,null!==i&&t.removeFunction(i),i=null,t.cwrap("destroy","number",["number"])(n),self.close()}}})).catch((function(e){self.postMessage(w(l,{data:e}))}))})); diff --git a/examples/react-app/src/Player.jsx b/examples/react-app/src/Player.jsx index 5f582cc..6c4af0b 100644 --- a/examples/react-app/src/Player.jsx +++ b/examples/react-app/src/Player.jsx @@ -1,6 +1,6 @@ import "./Player.css"; import { useCallback, useEffect, useRef } from "react"; -import HLSPlayer from "@ezuikit/player-hls"; +import HlsPlayer from "@ezuikit/player-hls"; function Player() { const playerRef = useRef(); @@ -9,7 +9,6 @@ function Player() { const volumeRef = useRef(); useEffect(() => { - // createPlayer(); volumeRef.current.addEventListener("blur", (e) => { if (playerRef.current) { let value = (e.target.value || "").trim(); @@ -34,10 +33,9 @@ function Player() { const createPlayer = () => { const url = urlRef.current.value; if (!playerRef.current) { - playerRef.current = new HLSPlayer({ - id: containerRef.current, + playerRef.current = new HlsPlayer({ + id: "player-container", url, - decoder: "decoder.js" // 软解解码资源 (wasm 要和js 在同一个文件夹中) }); playerRef.current.play(); } @@ -70,27 +68,15 @@ function Player() { } }, []); - const handleOpenSound = useCallback(() => { + const handleFullscreen = useCallback(() => { if (playerRef.current) { - playerRef.current.openSound(); + playerRef.current.fullscreen(); } }, []); - const handleCloseSound = useCallback(() => { + const handleCancelFullscreen = useCallback(() => { if (playerRef.current) { - playerRef.current.closeSound(); - } - }, []); - - const handleFullScreen = useCallback(() => { - if (playerRef.current) { - playerRef.current.fullScreen(); - } - }, []); - - const handleCancelFullScreen = useCallback(() => { - if (playerRef.current) { - playerRef.current.cancelFullScreen(); + playerRef.current.cancelFullscreen(); } }, []); @@ -116,10 +102,8 @@ function Player() { - - - - + +

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�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

From cf916bc59316d5b3bcacba46101a1498953ca8b8 Mon Sep 17 00:00:00 2001 From: ShineShao Date: Thu, 1 Aug 2024 10:21:14 +0800 Subject: [PATCH 08/20] feat: update hls 0.1.0-beta.1 --- examples/vue-app/package.json | 2 +- examples/vue-app/pnpm-lock.yaml | 21 +++++++++++---------- examples/vue-app/public/decoder.wasm | Bin 0 -> 1533219 bytes examples/vue-app/public/decoder.worker.js | 8 ++++++++ examples/vue-app/src/components/Player.vue | 12 ++++++------ 5 files changed, 26 insertions(+), 17 deletions(-) create mode 100644 examples/vue-app/public/decoder.wasm create mode 100644 examples/vue-app/public/decoder.worker.js diff --git a/examples/vue-app/package.json b/examples/vue-app/package.json index d2de11a..6757120 100644 --- a/examples/vue-app/package.json +++ b/examples/vue-app/package.json @@ -10,7 +10,7 @@ "format": "prettier --write src/" }, "dependencies": { - "@ezuikit/player-hls": "^0.1.0-alpha.1", + "@ezuikit/player-hls": "^0.1.0-beta.1", "vue": "^3.3.4" }, "devDependencies": { diff --git a/examples/vue-app/pnpm-lock.yaml b/examples/vue-app/pnpm-lock.yaml index 7f5ea37..f4a9951 100644 --- a/examples/vue-app/pnpm-lock.yaml +++ b/examples/vue-app/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: '@ezuikit/player-hls': - specifier: ^0.1.0-alpha.1 - version: 0.1.0-alpha.1 + specifier: ^0.1.0-beta.1 + version: 0.1.0-beta.1 vue: specifier: ^3.3.4 version: 3.4.35 @@ -295,9 +295,10 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@ezuikit/player-base@0.1.0-alpha.1: - resolution: {integrity: sha512-68O3PtB5g7hm+HSpCqE/ef/Ud0xUPsFv3ckrj6VKm7wyed+9aqTazxv8mDPOXuNStZZULpfn+7Uf0KW7cHAyxg==} + /@ezuikit/player-base@0.1.0: + resolution: {integrity: sha512-IcJqnZr9FmjBCnIrmqY7oHdyDuYxRWhDZB+K+gi+4oenFjFV4aLCCG7RFPxkidHzi3TTF2f1Bm5yObZzNDqkfw==} dependencies: + '@ezuikit/utils-collect': 0.1.0 '@ezuikit/utils-logger': 1.0.1 '@ezuikit/utils-tools': 1.0.3 eventemitter3: 5.0.1 @@ -306,11 +307,11 @@ packages: ua-parser-js: 1.0.37 dev: false - /@ezuikit/player-hls@0.1.0-alpha.1: - resolution: {integrity: sha512-DcR5B3JBwY9pT+wRapk5B8ntqYdHkXjj+S0GfS2Ler41+g/l6YaSC/LsWh525bVRbfMGDxhUD9WBK01CoHn1Bw==} + /@ezuikit/player-hls@0.1.0-beta.1: + resolution: {integrity: sha512-IxepiCKym2sZTnsejGnIt+R5JMadTovAhpDFSbZ4sjFXXnMrRZYTgM9lyIGdjJCaA8LAseA0QmHRRslD/zHjHA==} dependencies: - '@ezuikit/player-base': 0.1.0-alpha.1 - '@ezuikit/utils-collect': 0.1.0-beta.1 + '@ezuikit/player-base': 0.1.0 + '@ezuikit/utils-collect': 0.1.0 '@ezuikit/utils-i18n': 1.0.1 '@ezuikit/utils-logger': 1.0.1 '@ezuikit/utils-tools': 1.0.3 @@ -322,8 +323,8 @@ packages: ua-parser-js: 1.0.37 dev: false - /@ezuikit/utils-collect@0.1.0-beta.1: - resolution: {integrity: sha512-+kkEkOVM9bQkWp90ppFpEwuaG8sRCH/F3CamLLgS0CG18gk1Fb5lcvS21hklgxMjS5tLotjwlfs0j+pQydzRYA==} + /@ezuikit/utils-collect@0.1.0: + resolution: {integrity: sha512-85lWlB/VCaooPPkCK3nEB4F3UKgO+HbmoPEq4U1tH/ObVP7IJ7eURrFUmQT1CKsqjH5xz5g4DgZzHWgYrwGcCQ==} dev: false /@ezuikit/utils-i18n@1.0.1: diff --git a/examples/vue-app/public/decoder.wasm b/examples/vue-app/public/decoder.wasm new file mode 100644 index 0000000000000000000000000000000000000000..5c0c2fa1cbf025dafadc4d515ea8077c6fd0c661 GIT binary patch literal 1533219 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%0A&?-f({xKK*_8^lAHq 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

*75{hIf~S8C+>5I`ZgPH; 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%0DJCcyx5^TC3zfCF%R$p;&S%SHqax#Csumoc( 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⁡TXiOY&% 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%0D5wohB2O%k$frMDo@WXww~X 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 literal 0 HcmV?d00001 diff --git a/examples/vue-app/public/decoder.worker.js b/examples/vue-app/public/decoder.worker.js new file mode 100644 index 0000000..e229e81 --- /dev/null +++ b/examples/vue-app/public/decoder.worker.js @@ -0,0 +1,8 @@ +/* +* +* DecoderWorker.js v0.1.0-beta.1 +* Copyright (c) 2024-8-1 Ezviz-OpenBiz +* . +* +*/ +!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";var e={DEFAULT_SAMPLERATE:44100,DEFAULT_CHANNEL:1,H264AUD:[0,0,0,1,9,224],H265AUD:[0,0,0,1,70,1,80],DEF_AAC:"aac",DEF_MP3:"mp3",DEF_H265:"h265",DEF_HEVC:"hevc",DEF_H264:"h264",DEF_AVC:"avc",CODEC_OFFSET_TABLE:["hevc","h265","avc","h264","aac","mp3"]};function r(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var t={exports:{}};!function(e,r){function t(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var d,f,p=(f="undefined"!=typeof document?null==(d=document.currentScript)?void 0:d.src:void 0,function(e){var r,t=function(){var r=dr.value;r in e||Object.defineProperty(e,r,{configurable:!0,get:function(){q("Access to module property ('"+r+"') is no longer possible via the module constructor argument; Instead, use the result of the module constructor.")}})};void 0===e&&(e={});var n,i,d=Object.assign({},e),p=new Promise((function(e,r){n=e,i=r}));["_malloc","_free","_memory","_registerWasmPlayer","_setCodecType","_exitWasmPlayer","_initDecoder","_decodeCodecContext","_destroy","_demuxTsStream","_getPacket","_getVLCLen","_getVLC","_getVPSLen","_getVPS","_getSPSLen","_getSPS","_getPPSLen","_getPPS","_getSEILen","_getSEI","___indirect_function_table","_ff_h264_cabac_tables","onRuntimeInitialized"].forEach((function(e){Object.getOwnPropertyDescriptor(p,e)||Object.defineProperty(p,e,{get:function(){return q("You are getting "+e+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")},set:function(){return q("You are setting "+e+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})}));var m="object"==("undefined"==typeof window?"undefined":u(window)),h="function"==typeof importScripts,g="object"==("undefined"==typeof process?"undefined":u(process))&&"object"==u(process.versions)&&"string"==typeof process.versions.node,v=!m&&!g&&!h;if(d.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)");var E,y,w,b=Object.assign({},d),_="./this.program",S="";if(v){if("object"==("undefined"==typeof process?"undefined":u(process))||"object"==("undefined"==typeof window?"undefined":u(window))||"function"==typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)")}else{if(!m&&!h)throw new Error("environment detection error");if(h?S=self.location.href:"undefined"!=typeof document&&document.currentScript&&(S=document.currentScript.src),f&&(S=f),S=S.startsWith("blob:")?"":S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1),"object"!=("undefined"==typeof window?"undefined":u(window))&&"function"!=typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");E=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},h&&(w=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),y=function(e,r,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=function(){200==n.status||0==n.status&&n.response?r(n.response):t()},n.onerror=t,n.send(null)}}var O,T,k,A=d.print||console.log.bind(console),M=d.printErr||console.error.bind(console);Object.assign(d,b),b=null,O="fetchSettings",Object.getOwnPropertyDescriptor(d,O)&&q("`Module."+O+"` was supplied but `"+O+"` not included in INCOMING_MODULE_JS_API"),d.arguments&&d.arguments,ie("arguments","arguments_"),d.thisProgram&&(_=d.thisProgram),ie("thisProgram","thisProgram"),d.quit&&d.quit,ie("quit","quit_"),L(void 0===d.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),L(void 0===d.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),L(void 0===d.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),L(void 0===d.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),L(void 0===d.read,"Module.read option was removed (modify read_ in JS)"),L(void 0===d.readAsync,"Module.readAsync option was removed (modify readAsync in JS)"),L(void 0===d.readBinary,"Module.readBinary option was removed (modify readBinary in JS)"),L(void 0===d.setWindowTitle,"Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)"),L(void 0===d.TOTAL_MEMORY,"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),ie("asm","wasmExports"),ie("read","read_"),ie("readAsync","readAsync"),ie("readBinary","readBinary"),ie("setWindowTitle","setWindowTitle"),L(!g,"node environment detected but not enabled at build time. Add `node` to `-sENVIRONMENT` to enable."),L(!v,"shell environment detected but not enabled at build time. Add `shell` to `-sENVIRONMENT` to enable."),d.wasmBinary&&(T=d.wasmBinary),ie("wasmBinary","wasmBinary"),"object"!=("undefined"==typeof WebAssembly?"undefined":u(WebAssembly))&&M("no native wasm support detected");var P,F,C,D,x,I=!1;function L(e,r){e||q("Assertion failed"+(r?": "+r:""))}function N(){var e=k.buffer;d.HEAP8=P=new Int8Array(e),d.HEAP16=C=new Int16Array(e),d.HEAPU8=F=new Uint8Array(e),d.HEAPU16=new Uint16Array(e),d.HEAP32=D=new Int32Array(e),d.HEAPU32=x=new Uint32Array(e),d.HEAPF32=new Float32Array(e),d.HEAPF64=new Float64Array(e)}function R(){if(!I){var e=ir();0==e&&(e+=4);var r=x[e>>2],t=x[e+4>>2];34821223==r&&2310721022==t||q("Stack overflow! Stack cookie has been overwritten at "+le(e)+", expected hex dwords 0x89BACDFE and 0x2135467, but received "+le(t)+" "+le(r)),1668509029!=x[0]&&q("Runtime error: The application has corrupted its heap memory area (address zero)!")}}L(!d.STACK_SIZE,"STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time"),L("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&null!=Int32Array.prototype.subarray&&null!=Int32Array.prototype.set,"JS engine does not provide full typed array support"),L(!d.wasmMemory,"Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally"),L(!d.INITIAL_MEMORY,"Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically"),function(){var e=new Int16Array(1),r=new Int8Array(e.buffer);if(e[0]=25459,115!==r[0]||99!==r[1])throw"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)"}();var U=[],B=[],j=[],$=!1;L(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),L(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),L(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),L(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var W=0,H=null,z=null,V={};function G(e){for(var r=e;;){if(!V[e])return e;e=r+Math.random()}}function Y(e){var r;W++,null==(r=d.monitorRunDependencies)||r.call(d,W),e?(L(!V[e]),V[e]=1,null===H&&"undefined"!=typeof setInterval&&(H=setInterval((function(){if(I)return clearInterval(H),void(H=null);var e=!1;for(var r in V)e||(e=!0,M("still waiting on run dependencies:")),M("dependency: "+r);e&&M("(end of list)")}),1e4))):M("warning: run dependency added without ID")}function Q(e){var r;if(W--,null==(r=d.monitorRunDependencies)||r.call(d,W),e?(L(V[e]),delete V[e]):M("warning: run dependency removed without ID"),0==W&&(null!==H&&(clearInterval(H),H=null),z)){var t=z;z=null,t()}}function q(e){var r;null==(r=d.onAbort)||r.call(d,e),M(e="Aborted("+e+")"),I=!0;var t=new WebAssembly.RuntimeError(e);throw i(t),t}var K,X,J,Z=function(e){return e.startsWith("data:application/octet-stream;base64,")},ee=function(e){return e.startsWith("file://")};function re(e,r){return function(){for(var t=arguments.length,n=new Array(t),o=0;o0;)e.shift()(d)};d.noExitRuntime;var le=function(e){return L("number"==typeof e),"0x"+(e>>>=0).toString(16).padStart(8,"0")},de=function(e){var r;(r=de).shown||(r.shown={}),de.shown[e]||(de.shown[e]=1,M(e))};function fe(){L(null!=xe.varargs);var e=D[+xe.varargs>>2];return xe.varargs+=4,e}var pe=fe,me={isAbs:function(e){return"/"===e.charAt(0)},splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,r){for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:function(e){var r=me.isAbs(e),t="/"===e.substr(-1);return(e=me.normalizeArray(e.split("/").filter((function(e){return!!e})),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:function(e){var r=me.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:function(e){if("/"===e)return"/";var r=(e=(e=me.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===r?e:e.substr(r+1)},join:function(){for(var e=arguments.length,r=new Array(e),t=0;t { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")}())(e)},ge={resolve:function(){for(var e=arguments.length,r=new Array(e),t=0;t=-1&&!o;i--){var a=i>=0?r[i]:Ce.cwd();if("string"!=typeof a)throw new TypeError("Arguments to path.resolve must be strings");if(!a)return"";n=a+"/"+n,o=me.isAbs(a)}return(o?"/":"")+(n=me.normalizeArray(n.split("/").filter((function(e){return!!e})),!o).join("/"))||"."},relative:function(e,r){var t=function(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)};e=ge.resolve(e).substr(1),r=ge.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),i=Math.min(n.length,o.length),a=i,s=0;s=n);)++o;if(o-r>16&&e.buffer&&ve)return ve.decode(e.subarray(r,o));for(var i="";r>10,56320|1023&c)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i},ye=[],we=function(e){for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r},be=function(e,r,t,n){if(L("string"==typeof e,"stringToUTF8Array expects a string (got "+(void 0===e?"undefined":u(e))+")"),!(n>0))return 0;for(var o=t,i=t+n-1,a=0;a=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a)),s<=127){if(t>=i)break;r[t++]=s}else if(s<=2047){if(t+1>=i)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=i)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=i)break;s>1114111&&de("Invalid Unicode code point "+le(s)+" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF)."),r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o};function _e(e,r,t){var n=we(e)+1,o=new Array(n),i=be(e,o,0,o.length);return o.length=i,o}var Se,Oe={ttys:[],init:function(){},shutdown:function(){},register:function(e,r){Oe.ttys[e]={input:[],output:[],ops:r},Ce.registerDevice(e,Oe.stream_ops)},stream_ops:{open:function(e){var r=Oe.ttys[e.node.rdev];if(!r)throw new Ce.ErrnoError(43);e.tty=r,e.seekable=!1},close:function(e){e.tty.ops.fsync(e.tty)},fsync:function(e){e.tty.ops.fsync(e.tty)},read:function(e,r,t,n,o){if(!e.tty||!e.tty.ops.get_char)throw new Ce.ErrnoError(60);for(var i=0,a=0;a0&&(A(Ee(e.output,0)),e.output=[])},ioctl_tcgets:function(e){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets:function(e,r,t){return 0},ioctl_tiocgwinsz:function(e){return[24,80]}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(M(Ee(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},fsync:function(e){e.output&&e.output.length>0&&(M(Ee(e.output,0)),e.output=[])}}},Te=function(e){q("internal error: mmapAlloc called but `emscripten_builtin_memalign` native symbol not exported")},ke={ops_table:null,mount:function(e){return ke.createNode(null,"/",16895,0)},createNode:function(e,r,t,n){var o;if(Ce.isBlkdev(t)||Ce.isFIFO(t))throw new Ce.ErrnoError(63);(o=ke).ops_table||(o.ops_table={dir:{node:{getattr:ke.node_ops.getattr,setattr:ke.node_ops.setattr,lookup:ke.node_ops.lookup,mknod:ke.node_ops.mknod,rename:ke.node_ops.rename,unlink:ke.node_ops.unlink,rmdir:ke.node_ops.rmdir,readdir:ke.node_ops.readdir,symlink:ke.node_ops.symlink},stream:{llseek:ke.stream_ops.llseek}},file:{node:{getattr:ke.node_ops.getattr,setattr:ke.node_ops.setattr},stream:{llseek:ke.stream_ops.llseek,read:ke.stream_ops.read,write:ke.stream_ops.write,allocate:ke.stream_ops.allocate,mmap:ke.stream_ops.mmap,msync:ke.stream_ops.msync}},link:{node:{getattr:ke.node_ops.getattr,setattr:ke.node_ops.setattr,readlink:ke.node_ops.readlink},stream:{}},chrdev:{node:{getattr:ke.node_ops.getattr,setattr:ke.node_ops.setattr},stream:Ce.chrdev_stream_ops}});var i=Ce.createNode(e,r,t,n);return Ce.isDir(i.mode)?(i.node_ops=ke.ops_table.dir.node,i.stream_ops=ke.ops_table.dir.stream,i.contents={}):Ce.isFile(i.mode)?(i.node_ops=ke.ops_table.file.node,i.stream_ops=ke.ops_table.file.stream,i.usedBytes=0,i.contents=null):Ce.isLink(i.mode)?(i.node_ops=ke.ops_table.link.node,i.stream_ops=ke.ops_table.link.stream):Ce.isChrdev(i.mode)&&(i.node_ops=ke.ops_table.chrdev.node,i.stream_ops=ke.ops_table.chrdev.stream),i.timestamp=Date.now(),e&&(e.contents[r]=i,e.timestamp=i.timestamp),i},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r)if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}},node_ops:{getattr:function(e){var r={};return r.dev=Ce.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,Ce.isDir(e.mode)?r.size=4096:Ce.isFile(e.mode)?r.size=e.usedBytes:Ce.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&ke.resizeFileStorage(e,r.size)},lookup:function(e,r){throw Ce.genericErrors[44]},mknod:function(e,r,t,n){return ke.createNode(e,r,t,n)},rename:function(e,r,t){if(Ce.isDir(e.mode)){var n;try{n=Ce.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new Ce.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=Ce.lookupNode(e,r);for(var n in t.contents)throw new Ce.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){for(var r,t=[".",".."],n=l(Object.keys(e.contents));!(r=n()).done;){var o=r.value;t.push(o)}return t},symlink:function(e,r,t){var n=ke.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!Ce.isLink(e.mode))throw new Ce.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var i=e.node.contents;if(o>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-o,n);if(L(a>=0),a>8&&i.subarray)r.set(i.subarray(o,o+a),t);else for(var s=0;s0||t+r8)throw new Ce.ErrnoError(32);for(var t=e.split("/").filter((function(e){return!!e})),n=Ce.root,o="/",i=0;i40)throw new Ce.ErrnoError(32)}}return{path:o,node:n}},getPath:function(e){for(var r;;){if(Ce.isRoot(e)){var t=e.mount.mountpoint;return r?"/"!==t[t.length-1]?t+"/"+r:t+r:t}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:function(e,r){for(var t=0,n=0;n>>0)%Ce.nameTable.length},hashAddNode:function(e){var r=Ce.hashName(e.parent.id,e.name);e.name_next=Ce.nameTable[r],Ce.nameTable[r]=e},hashRemoveNode:function(e){var r=Ce.hashName(e.parent.id,e.name);if(Ce.nameTable[r]===e)Ce.nameTable[r]=e.name_next;else for(var t=Ce.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:function(e,r){var t=Ce.mayLookup(e);if(t)throw new Ce.ErrnoError(t);for(var n=Ce.hashName(e.id,r),o=Ce.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===e.id&&i===r)return o}return Ce.lookup(e,r)},createNode:function(e,r,t,n){L("object"==(void 0===e?"undefined":u(e)));var o=new Ce.FSNode(e,r,t,n);return Ce.hashAddNode(o),o},destroyNode:function(e){Ce.hashRemoveNode(e)},isRoot:function(e){return e===e.parent},isMountpoint:function(e){return!!e.mounted},isFile:function(e){return 32768==(61440&e)},isDir:function(e){return 16384==(61440&e)},isLink:function(e){return 40960==(61440&e)},isChrdev:function(e){return 8192==(61440&e)},isBlkdev:function(e){return 24576==(61440&e)},isFIFO:function(e){return 4096==(61440&e)},isSocket:function(e){return!(49152&~e)},flagsToPermissionString:function(e){var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:function(e,r){return Ce.ignorePermissions||(!r.includes("r")||292&e.mode)&&(!r.includes("w")||146&e.mode)&&(!r.includes("x")||73&e.mode)?0:2},mayLookup:function(e){if(!Ce.isDir(e.mode))return 54;var r=Ce.nodePermissions(e,"x");return r||(e.node_ops.lookup?0:2)},mayCreate:function(e,r){try{return Ce.lookupNode(e,r),20}catch(e){}return Ce.nodePermissions(e,"wx")},mayDelete:function(e,r,t){var n;try{n=Ce.lookupNode(e,r)}catch(e){return e.errno}var o=Ce.nodePermissions(e,"wx");if(o)return o;if(t){if(!Ce.isDir(n.mode))return 54;if(Ce.isRoot(n)||Ce.getPath(n)===Ce.cwd())return 10}else if(Ce.isDir(n.mode))return 31;return 0},mayOpen:function(e,r){return e?Ce.isLink(e.mode)?32:Ce.isDir(e.mode)&&("r"!==Ce.flagsToPermissionString(r)||512&r)?31:Ce.nodePermissions(e,Ce.flagsToPermissionString(r)):44},MAX_OPEN_FDS:4096,nextfd:function(){for(var e=0;e<=Ce.MAX_OPEN_FDS;e++)if(!Ce.streams[e])return e;throw new Ce.ErrnoError(33)},getStreamChecked:function(e){var r=Ce.getStream(e);if(!r)throw new Ce.ErrnoError(8);return r},getStream:function(e){return Ce.streams[e]},createStream:function(e,r){return void 0===r&&(r=-1),e=Object.assign(new Ce.FSStream,e),-1==r&&(r=Ce.nextfd()),e.fd=r,Ce.streams[r]=e,e},closeStream:function(e){Ce.streams[e]=null},dupStream:function(e,r){var t,n;void 0===r&&(r=-1);var o=Ce.createStream(e,r);return null==(n=o.stream_ops)||null==(t=n.dup)||t.call(n,o),o},chrdev_stream_ops:{open:function(e){var r=Ce.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,null==e.stream_ops.open||e.stream_ops.open.call(e.stream_ops,e)},llseek:function(){throw new Ce.ErrnoError(70)}},major:function(e){return e>>8},minor:function(e){return 255&e},makedev:function(e,r){return e<<8|r},registerDevice:function(e,r){Ce.devices[e]={stream_ops:r}},getDevice:function(e){return Ce.devices[e]},getMounts:function(e){for(var r=[],t=[e];t.length;){var n,o=t.pop();r.push(o),(n=t).push.apply(n,[].concat(o.mounts))}return r},syncfs:function(e,r){"function"==typeof e&&(r=e,e=!1),Ce.syncFSRequests++,Ce.syncFSRequests>1&&M("warning: "+Ce.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=Ce.getMounts(Ce.root.mount),n=0;function o(e){return L(Ce.syncFSRequests>0),Ce.syncFSRequests--,r(e)}function i(e){if(e)return i.errored?void 0:(i.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach((function(r){if(!r.type.syncfs)return i(null);r.type.syncfs(r,e,i)}))},mount:function(e,r,t){if("string"==typeof e)throw e;var n,o="/"===t,i=!t;if(o&&Ce.root)throw new Ce.ErrnoError(10);if(!o&&!i){var a=Ce.lookupPath(t,{follow_mount:!1});if(t=a.path,n=a.node,Ce.isMountpoint(n))throw new Ce.ErrnoError(10);if(!Ce.isDir(n.mode))throw new Ce.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?Ce.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:function(e){var r=Ce.lookupPath(e,{follow_mount:!1});if(!Ce.isMountpoint(r.node))throw new Ce.ErrnoError(28);var t=r.node,n=t.mounted,o=Ce.getMounts(n);Object.keys(Ce.nameTable).forEach((function(e){for(var r=Ce.nameTable[e];r;){var t=r.name_next;o.includes(r.mount)&&Ce.destroyNode(r),r=t}})),t.mounted=null;var i=t.mount.mounts.indexOf(n);L(-1!==i),t.mount.mounts.splice(i,1)},lookup:function(e,r){return e.node_ops.lookup(e,r)},mknod:function(e,r,t){var n=Ce.lookupPath(e,{parent:!0}).node,o=me.basename(e);if(!o||"."===o||".."===o)throw new Ce.ErrnoError(28);var i=Ce.mayCreate(n,o);if(i)throw new Ce.ErrnoError(i);if(!n.node_ops.mknod)throw new Ce.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:function(e,r){return r=void 0!==r?r:438,r&=4095,r|=32768,Ce.mknod(e,r,0)},mkdir:function(e,r){return r=void 0!==r?r:511,r&=1023,r|=16384,Ce.mknod(e,r,0)},mkdirTree:function(e,r){for(var t=e.split("/"),n="",o=0;o=0),n<0||o<0)throw new Ce.ErrnoError(28);if(Ce.isClosed(e))throw new Ce.ErrnoError(8);if(1==(2097155&e.flags))throw new Ce.ErrnoError(8);if(Ce.isDir(e.node.mode))throw new Ce.ErrnoError(31);if(!e.stream_ops.read)throw new Ce.ErrnoError(28);var i=void 0!==o;if(i){if(!e.seekable)throw new Ce.ErrnoError(70)}else o=e.position;var a=e.stream_ops.read(e,r,t,n,o);return i||(e.position+=a),a},write:function(e,r,t,n,o,i){if(L(t>=0),n<0||o<0)throw new Ce.ErrnoError(28);if(Ce.isClosed(e))throw new Ce.ErrnoError(8);if(!(2097155&e.flags))throw new Ce.ErrnoError(8);if(Ce.isDir(e.node.mode))throw new Ce.ErrnoError(31);if(!e.stream_ops.write)throw new Ce.ErrnoError(28);e.seekable&&1024&e.flags&&Ce.llseek(e,0,2);var a=void 0!==o;if(a){if(!e.seekable)throw new Ce.ErrnoError(70)}else o=e.position;var s=e.stream_ops.write(e,r,t,n,o,i);return a||(e.position+=s),s},allocate:function(e,r,t){if(Ce.isClosed(e))throw new Ce.ErrnoError(8);if(r<0||t<=0)throw new Ce.ErrnoError(28);if(!(2097155&e.flags))throw new Ce.ErrnoError(8);if(!Ce.isFile(e.node.mode)&&!Ce.isDir(e.node.mode))throw new Ce.ErrnoError(43);if(!e.stream_ops.allocate)throw new Ce.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap:function(e,r,t,n,o){if(2&n&&!(2&o)&&2!=(2097155&e.flags))throw new Ce.ErrnoError(2);if(1==(2097155&e.flags))throw new Ce.ErrnoError(2);if(!e.stream_ops.mmap)throw new Ce.ErrnoError(43);return e.stream_ops.mmap(e,r,t,n,o)},msync:function(e,r,t,n,o){return L(t>=0),e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0},ioctl:function(e,r,t){if(!e.stream_ops.ioctl)throw new Ce.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile:function(e,r){if(void 0===r&&(r={}),r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw new Error('Invalid encoding type "'+r.encoding+'"');var t,n=Ce.open(e,r.flags),o=Ce.stat(e).size,i=new Uint8Array(o);return Ce.read(n,i,0,o,0),"utf8"===r.encoding?t=Ee(i,0):"binary"===r.encoding&&(t=i),Ce.close(n),t},writeFile:function(e,r,t){void 0===t&&(t={}),t.flags=t.flags||577;var n=Ce.open(e,t.flags,t.mode);if("string"==typeof r){var o=new Uint8Array(we(r)+1),i=be(r,o,0,o.length);Ce.write(n,o,0,i,void 0,t.canOwn)}else{if(!ArrayBuffer.isView(r))throw new Error("Unsupported data type");Ce.write(n,r,0,r.byteLength,void 0,t.canOwn)}Ce.close(n)},cwd:function(){return Ce.currentPath},chdir:function(e){var r=Ce.lookupPath(e,{follow:!0});if(null===r.node)throw new Ce.ErrnoError(44);if(!Ce.isDir(r.node.mode))throw new Ce.ErrnoError(54);var t=Ce.nodePermissions(r.node,"x");if(t)throw new Ce.ErrnoError(t);Ce.currentPath=r.path},createDefaultDirectories:function(){Ce.mkdir("/tmp"),Ce.mkdir("/home"),Ce.mkdir("/home/web_user")},createDefaultDevices:function(){Ce.mkdir("/dev"),Ce.registerDevice(Ce.makedev(1,3),{read:function(){return 0},write:function(e,r,t,n,o){return n}}),Ce.mkdev("/dev/null",Ce.makedev(1,3)),Oe.register(Ce.makedev(5,0),Oe.default_tty_ops),Oe.register(Ce.makedev(6,0),Oe.default_tty1_ops),Ce.mkdev("/dev/tty",Ce.makedev(5,0)),Ce.mkdev("/dev/tty1",Ce.makedev(6,0));var e=new Uint8Array(1024),r=0,t=function(){return 0===r&&(r=he(e).byteLength),e[--r]};Ce.createDevice("/dev","random",t),Ce.createDevice("/dev","urandom",t),Ce.mkdir("/dev/shm"),Ce.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){Ce.mkdir("/proc");var e=Ce.mkdir("/proc/self");Ce.mkdir("/proc/self/fd"),Ce.mount({mount:function(){var r=Ce.createNode(e,"fd",16895,73);return r.node_ops={lookup:function(e,r){var t=+r,n=Ce.getStreamChecked(t),o={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return n.path}}};return o.parent=o,o}},r}},{},"/proc/self/fd")},createStandardStreams:function(){d.stdin?Ce.createDevice("/dev","stdin",d.stdin):Ce.symlink("/dev/tty","/dev/stdin"),d.stdout?Ce.createDevice("/dev","stdout",null,d.stdout):Ce.symlink("/dev/tty","/dev/stdout"),d.stderr?Ce.createDevice("/dev","stderr",null,d.stderr):Ce.symlink("/dev/tty1","/dev/stderr");var e=Ce.open("/dev/stdin",0),r=Ce.open("/dev/stdout",1),t=Ce.open("/dev/stderr",1);L(0===e.fd,"invalid handle for stdin ("+e.fd+")"),L(1===r.fd,"invalid handle for stdout ("+r.fd+")"),L(2===t.fd,"invalid handle for stderr ("+t.fd+")")},staticInit:function(){[44].forEach((function(e){Ce.genericErrors[e]=new Ce.ErrnoError(e),Ce.genericErrors[e].stack=""})),Ce.nameTable=new Array(4096),Ce.mount(ke,{},"/"),Ce.createDefaultDirectories(),Ce.createDefaultDevices(),Ce.createSpecialDirectories(),Ce.filesystems={MEMFS:ke}},init:function(e,r,t){L(!Ce.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"),Ce.init.initialized=!0,d.stdin=e||d.stdin,d.stdout=r||d.stdout,d.stderr=t||d.stderr,Ce.createStandardStreams()},quit:function(){Ce.init.initialized=!1,tr(0);for(var e=0;ethis.length-1||e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},r.setDataGetter=function(e){this.getter=e},r.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",t,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+t+". Status: "+e.status);var r,n=Number(e.getResponseHeader("Content-length")),o=(r=e.getResponseHeader("Accept-Ranges"))&&"bytes"===r,i=(r=e.getResponseHeader("Content-Encoding"))&&"gzip"===r,a=1048576;o||(a=n);var s=this;s.setDataGetter((function(e){var r=e*a,o=(e+1)*a-1;if(o=Math.min(o,n-1),void 0===s.chunks[e]&&(s.chunks[e]=function(e,r){if(e>r)throw new Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==a&&o.setRequestHeader("Range","bytes="+e+"-"+r),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):_e(o.responseText||"")}(r,o)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!i&&n||(a=n=1,n=this.getter(0).length,a=n,A("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=a,this.lengthKnown=!0},o(e,[{key:"length",get:function(){return this.lengthKnown||this.cacheLength(),this._length}},{key:"chunkSize",get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}]),e}();if("undefined"!=typeof XMLHttpRequest){if(!h)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var s={isDevice:!1,contents:new a}}else s={isDevice:!1,url:t};var u=Ce.createFile(e,r,s,n,i);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};function l(e,r,t,n,o){var i=e.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(L(a>=0),i.slice)for(var s=0;s>2]=n.dev,D[t+4>>2]=n.mode,x[t+8>>2]=n.nlink,D[t+12>>2]=n.uid,D[t+16>>2]=n.gid,D[t+20>>2]=n.rdev,J=[n.size>>>0,(X=n.size,+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[t+24>>2]=J[0],D[t+28>>2]=J[1],D[t+32>>2]=4096,D[t+36>>2]=n.blocks;var o=n.atime.getTime(),i=n.mtime.getTime(),a=n.ctime.getTime();return J=[Math.floor(o/1e3)>>>0,(X=Math.floor(o/1e3),+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[t+40>>2]=J[0],D[t+44>>2]=J[1],x[t+48>>2]=o%1e3*1e3,J=[Math.floor(i/1e3)>>>0,(X=Math.floor(i/1e3),+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[t+56>>2]=J[0],D[t+60>>2]=J[1],x[t+64>>2]=i%1e3*1e3,J=[Math.floor(a/1e3)>>>0,(X=Math.floor(a/1e3),+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[t+72>>2]=J[0],D[t+76>>2]=J[1],x[t+80>>2]=a%1e3*1e3,J=[n.ino>>>0,(X=n.ino,+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[t+88>>2]=J[0],D[t+92>>2]=J[1],0},doMsync:function(e,r,t,n,o){if(!Ce.isFile(r.node.mode))throw new Ce.ErrnoError(43);if(2&n)return 0;var i=F.slice(e,e+t);Ce.msync(r,i,o,t,n)},getStreamFromFD:function(e){return Ce.getStreamChecked(e)},varargs:void 0,getStr:function(e){return De(e)}},Ie=function(e,r){return L(e==e>>>0||e==(0|e)),L(r===(0|r)),r+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*r:NaN},Le=[0,31,60,91,121,152,182,213,244,274,305,335],Ne=[0,31,59,90,120,151,181,212,243,273,304,334],Re=function(e){var r;return((r=e.getFullYear())%4!=0||r%100==0&&r%400!=0?Ne:Le)[e.getMonth()]+e.getDate()-1},Ue=function(e,r,t){return L("number"==typeof t,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),be(e,F,r,t)};Se=function(){return performance.now()};var Be,je,$e=function(e){var r=k.buffer,t=(e-r.byteLength+65535)/65536;try{return k.grow(t),N(),1}catch(t){M("growMemory: Attempted to grow heap from "+r.byteLength+" bytes to "+e+" bytes, but got error: "+t)}},We={},He=function(){if(!He.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==("undefined"==typeof navigator?"undefined":u(navigator))&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:_||"./this.program"};for(var r in We)void 0===We[r]?delete e[r]:e[r]=We[r];var t=[];for(var r in e)t.push(r+"="+e[r]);He.strings=t}return He.strings},ze=function(e){return sr(e)},Ve=function(e,r,t,n,o){var i={string:function(e){var r=0;return null!=e&&0!==e&&(r=function(e){var r=we(e)+1,t=ze(r);return Ue(e,t,r),t}(e)),r},array:function(e){var r,t,n=ze(e.length);return t=n,L((r=e).length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)"),P.set(r,t),n}},a=function(e){var r=d["_"+e];return L(r,"Cannot call unknown function "+e+", make sure it is exported"),r}(e),s=[],u=0;if(L("array"!==r,'Return type should not be "array".'),n)for(var c=0;c>7)},Ye=function(e,r){var t;if(L(!r.includes("j"),"i64 not permitted in function signatures when WASM_BIGINT is disabled"),"function"==typeof WebAssembly.Function)return new WebAssembly.Function(function(e){L(!e.includes("j"),"i64 not permitted in function signatures when WASM_BIGINT is disabled");for(var r={i:"i32",j:"i64",f:"f32",d:"f64",e:"externref",p:"i32"},t={parameters:[],results:"v"==e[0]?[]:[r[e[0]]]},n=1;n=Qe.length&&(Qe.length=e+1),Qe[e]=r=Be.get(e)),L(Be.get(e)==r,"JavaScript-side Wasm function table mirror is out of date!"),r},Ke=function(e){return je||(je=new WeakMap,function(e,r){if(je)for(var t=e;t>1]=2,0}return-28}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_openat:function(e,r,t,n){xe.varargs=n;try{r=xe.getStr(r),r=xe.calculateAt(e,r);var o=n?fe():0;return Ce.open(r,t,o).fd}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return-e.errno}},_abort_js:function(){q("native code called abort()")},_emscripten_get_now_is_monotonic:function(){return 1},_emscripten_memcpy_js:function(e,r,t){return F.copyWithin(e,r,r+t)},_gmtime_js:function(e,r,t){var n=Ie(e,r),o=new Date(1e3*n);D[t>>2]=o.getUTCSeconds(),D[t+4>>2]=o.getUTCMinutes(),D[t+8>>2]=o.getUTCHours(),D[t+12>>2]=o.getUTCDate(),D[t+16>>2]=o.getUTCMonth(),D[t+20>>2]=o.getUTCFullYear()-1900,D[t+24>>2]=o.getUTCDay();var i=Date.UTC(o.getUTCFullYear(),0,1,0,0,0,0),a=(o.getTime()-i)/864e5|0;D[t+28>>2]=a},_localtime_js:function(e,r,t){var n=Ie(e,r),o=new Date(1e3*n);D[t>>2]=o.getSeconds(),D[t+4>>2]=o.getMinutes(),D[t+8>>2]=o.getHours(),D[t+12>>2]=o.getDate(),D[t+16>>2]=o.getMonth(),D[t+20>>2]=o.getFullYear()-1900,D[t+24>>2]=o.getDay();var i=0|Re(o);D[t+28>>2]=i,D[t+36>>2]=-60*o.getTimezoneOffset();var a=new Date(o.getFullYear(),0,1),s=new Date(o.getFullYear(),6,1).getTimezoneOffset(),u=a.getTimezoneOffset(),c=0|(s!=u&&o.getTimezoneOffset()==Math.min(u,s));D[t+32>>2]=c},_mktime_js:function(e){var r,t=function(){var r=new Date(D[e+20>>2]+1900,D[e+16>>2],D[e+12>>2],D[e+8>>2],D[e+4>>2],D[e>>2],0),t=D[e+32>>2],n=r.getTimezoneOffset(),o=new Date(r.getFullYear(),0,1),i=new Date(r.getFullYear(),6,1).getTimezoneOffset(),a=o.getTimezoneOffset(),s=Math.min(a,i);if(t<0)D[e+32>>2]=Number(i!=a&&s==n);else if(t>0!=(s==n)){var u=Math.max(a,i),c=t>0?s:u;r.setTime(r.getTime()+6e4*(c-n))}D[e+24>>2]=r.getDay();var l=0|Re(r);D[e+28>>2]=l,D[e>>2]=r.getSeconds(),D[e+4>>2]=r.getMinutes(),D[e+8>>2]=r.getHours(),D[e+12>>2]=r.getDate(),D[e+16>>2]=r.getMonth(),D[e+20>>2]=r.getYear();var d=r.getTime();return isNaN(d)?-1:d/1e3}();return X=t,r=+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0,nr(r),t>>>0},_tzset_js:function(e,r,t,n){var o=(new Date).getFullYear(),i=new Date(o,0,1),a=new Date(o,6,1),s=i.getTimezoneOffset(),u=a.getTimezoneOffset(),c=Math.max(s,u);x[e>>2]=60*c,D[r>>2]=Number(s!=u);var l=function(e){return e.toLocaleTimeString(void 0,{hour12:!1,timeZoneName:"short"}).split(" ")[1]},d=l(i),f=l(a);L(d),L(f),L(we(d)<=16,"timezone name truncated to fit in TZNAME_MAX ("+d+")"),L(we(f)<=16,"timezone name truncated to fit in TZNAME_MAX ("+f+")"),u>>=0)>r);var t=2147483648;if(e>t)return M("Cannot enlarge memory, requested "+e+" bytes, but the limit is "+t+" bytes!"),!1;for(var n,o,i=1;i<=4;i*=2){var a=r*(1+.2/i);a=Math.min(a,e+100663296);var s=Math.min(t,(n=Math.max(e,a))+((o=65536)-n%o)%o);if($e(s))return!0}return M("Failed to grow the heap from "+r+" bytes to "+s+" bytes, not enough memory!"),!1},environ_get:function(e,r){var t=0;return He().forEach((function(n,o){var i=r+t;x[e+4*o>>2]=i,function(e,r){for(var t=0;t>2]=t.length;var n=0;return t.forEach((function(e){return n+=e.length+1})),x[r>>2]=n,0},fd_close:function(e){try{var r=xe.getStreamFromFD(e);return Ce.close(r),0}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return e.errno}},fd_fdstat_get:function(e,r){try{var t=xe.getStreamFromFD(e),n=t.tty?2:Ce.isDir(t.mode)?3:Ce.isLink(t.mode)?7:4;return P[r]=n,C[r+2>>1]=0,J=[0,(X=0,+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[r+8>>2]=J[0],D[r+12>>2]=J[1],J=[0,(X=0,+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[r+16>>2]=J[0],D[r+20>>2]=J[1],0}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return e.errno}},fd_read:function(e,r,t,n){try{var o=function(e,r,t,n){for(var o=0,i=0;i>2],s=x[r+4>>2];r+=8;var u=Ce.read(e,P,a,s,n);if(u<0)return-1;if(o+=u,u>2]=o,0}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return e.errno}},fd_seek:function(e,r,t,n,o){var i=Ie(r,t);try{if(isNaN(i))return 61;var a=xe.getStreamFromFD(e);return Ce.llseek(a,i,n),J=[a.position>>>0,(X=a.position,+Math.abs(X)>=1?X>0?+Math.floor(X/4294967296)>>>0:~~+Math.ceil((X-+(~~X>>>0))/4294967296)>>>0:0)],D[o>>2]=J[0],D[o+4>>2]=J[1],a.getdents&&0===i&&0===n&&(a.getdents=null),0}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return e.errno}},fd_write:function(e,r,t,n){try{var o=function(e,r,t,n){for(var o=0,i=0;i>2],s=x[r+4>>2];r+=8;var u=Ce.write(e,P,a,s,n);if(u<0)return-1;o+=u}return o}(xe.getStreamFromFD(e),r,t);return x[n>>2]=o,0}catch(e){if(void 0===Ce||"ErrnoError"!==e.name)throw e;return e.errno}}},er=function(){var e={env:Ze,wasi_snapshot_preview1:Ze};function r(e,r){var t;return er=e.exports,L(k=er.memory,"memory not found in wasm exports"),N(),L(Be=er.__indirect_function_table,"table not found in wasm exports"),t=er.__wasm_call_ctors,B.unshift(t),Q("wasm-instantiate"),er}Y("wasm-instantiate");var t,n,o,a,s=d;if(d.instantiateWasm)try{return d.instantiateWasm(e,r)}catch(e){M("Module.instantiateWasm callback failed with error: "+e),i(e)}return K||(K=te()),(t=T,n=K,o=e,a=function(e){L(d===s,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),s=null,r(e.instance)},t||"function"!=typeof WebAssembly.instantiateStreaming||Z(n)||"function"!=typeof fetch?oe(n,o,a):fetch(n,{credentials:"same-origin"}).then((function(e){return WebAssembly.instantiateStreaming(e,o).then(a,(function(e){return M("wasm streaming compile failed: "+e),M("falling back to ArrayBuffer instantiation"),oe(n,o,a)}))}))).catch(i),{}}();d._malloc=re("malloc",1),d._free=re("free",1),d._registerWasmPlayer=re("registerWasmPlayer",0),d._setCodecType=re("setCodecType",4),d._exitWasmPlayer=re("exitWasmPlayer",1),d._initDecoder=re("initDecoder",1),d._decodeCodecContext=re("decodeCodecContext",5),d._destroy=re("destroy",1),d._demuxTsStream=re("demuxTsStream",3),d._getPacket=re("getPacket",0),d._getVLCLen=re("getVLCLen",0),d._getVLC=re("getVLC",0),d._getVPSLen=re("getVPSLen",0),d._getVPS=re("getVPS",0),d._getSPSLen=re("getSPSLen",0),d._getSPS=re("getSPS",0),d._getPPSLen=re("getPPSLen",0),d._getPPS=re("getPPS",0),d._getSEILen=re("getSEILen",0),d._getSEI=re("getSEI",0);var rr,tr=re("fflush",1),nr=re("_emscripten_tempret_set",1),or=function(){return(or=er.emscripten_stack_init)()},ir=function(){return(ir=er.emscripten_stack_get_end)()},ar=function(e){return(ar=er._emscripten_stack_restore)(e)},sr=function(e){return(sr=er._emscripten_stack_alloc)(e)},ur=function(){return(ur=er.emscripten_stack_get_current)()};function cr(){var e;or(),L(!(3&(e=ir()))),0==e&&(e+=4),x[e>>2]=34821223,x[e+4>>2]=2310721022,x[0]=1668509029}function lr(){function e(){rr||(rr=!0,d.calledRun=!0,I||(L(!$),$=!0,R(),d.noFSInit||Ce.init.initialized||Ce.init(),Ce.ignorePermissions=!1,ce(B),n(d),d.onRuntimeInitialized&&d.onRuntimeInitialized(),L(!d._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),function(){if(R(),d.postRun)for("function"==typeof d.postRun&&(d.postRun=[d.postRun]);d.postRun.length;)e=d.postRun.shift(),j.unshift(e);var e;ce(j)}()))}W>0||(cr(),function(){if(d.preRun)for("function"==typeof d.preRun&&(d.preRun=[d.preRun]);d.preRun.length;)e=d.preRun.shift(),U.unshift(e);var e;ce(U)}(),W>0||(d.setStatus?(d.setStatus("Running..."),setTimeout((function(){setTimeout((function(){d.setStatus("")}),1),e()}),1)):e(),R()))}if(d.dynCall_jiji=re("dynCall_jiji",5),d.dynCall_iiiiij=re("dynCall_iiiiij",7),d.dynCall_jiiij=re("dynCall_jiiij",6),d._ff_h264_cabac_tables=113148,d.run=lr,d.ccall=Ve,d.cwrap=function(e,r,t,n){return function(){for(var n=arguments.length,o=new Array(n),i=0;i0;)d.preInit.pop()();lr(),r=p;for(var dr,fr=l(Object.keys(d));!(dr=fr()).done;)t();return r});"object"===u(r)&&"object"===u(e)&&(e.exports=p)}(t,t.exports);var n,o,i,a,s=r(t.exports),u="wasmLoading",c="wasmLoaded",l="wasmFailed",d="registerWasmPlayer",f="videoCallback",p="decodeCodecContext",m="destroy",h="demuxTsStream",g="demuxCoreReceive",v="readPacket",E="readPacketEnd",y="mediaInfo",w=function(e,r){return{cmd:e,data:r}},b=(n="undefined"!=typeof self?self:window,o={navigator:void 0!==n.navigator?n.navigator:{userAgent:""},infoMap:{engine:["WebKit","Trident","Gecko","Presto"],browser:["Safari","Chrome","Edge","IE","Firefox","Firefox Focus","Chromium","Opera","Vivaldi","Yandex","Arora","Lunascape","QupZilla","Coc Coc","Kindle","Iceweasel","Konqueror","Iceape","SeaMonkey","Epiphany","360","360SE","360EE","UC","QQBrowser","QQ","Baidu","Maxthon","Sogou","LBBROWSER","2345Explorer","TheWorld","XiaoMi","Quark","Qiyu","Wechat","Taobao","Alipay","Weibo","Douban","Suning","iQiYi"],os:["Windows","Linux","Mac OS","Android","Ubuntu","FreeBSD","Debian","iOS","Windows Phone","BlackBerry","MeeGo","Symbian","Chrome OS","WebOS"],device:["Mobile","Tablet","iPad"]}},i={getMatchMap:function(e){return{Trident:e.indexOf("Trident")>-1||e.indexOf("NET CLR")>-1,Presto:e.indexOf("Presto")>-1,WebKit:e.indexOf("AppleWebKit")>-1,Gecko:e.indexOf("Gecko/")>-1,Safari:e.indexOf("Safari")>-1,Chrome:e.indexOf("Chrome")>-1||e.indexOf("CriOS")>-1,IE:e.indexOf("MSIE")>-1||e.indexOf("Trident")>-1,Edge:e.indexOf("Edge")>-1,Firefox:e.indexOf("Firefox")>-1||e.indexOf("FxiOS")>-1,"Firefox Focus":e.indexOf("Focus")>-1,Chromium:e.indexOf("Chromium")>-1,Opera:e.indexOf("Opera")>-1||e.indexOf("OPR")>-1,Vivaldi:e.indexOf("Vivaldi")>-1,Yandex:e.indexOf("YaBrowser")>-1,Arora:e.indexOf("Arora")>-1,Lunascape:e.indexOf("Lunascape")>-1,QupZilla:e.indexOf("QupZilla")>-1,"Coc Coc":e.indexOf("coc_coc_browser")>-1,Kindle:e.indexOf("Kindle")>-1||e.indexOf("Silk/")>-1,Iceweasel:e.indexOf("Iceweasel")>-1,Konqueror:e.indexOf("Konqueror")>-1,Iceape:e.indexOf("Iceape")>-1,SeaMonkey:e.indexOf("SeaMonkey")>-1,Epiphany:e.indexOf("Epiphany")>-1,360:e.indexOf("QihooBrowser")>-1||e.indexOf("QHBrowser")>-1,"360EE":e.indexOf("360EE")>-1,"360SE":e.indexOf("360SE")>-1,UC:e.indexOf("UC")>-1||e.indexOf(" UBrowser")>-1,QQBrowser:e.indexOf("QQBrowser")>-1,QQ:e.indexOf("QQ/")>-1,Baidu:e.indexOf("Baidu")>-1||e.indexOf("BIDUBrowser")>-1,Maxthon:e.indexOf("Maxthon")>-1,Sogou:e.indexOf("MetaSr")>-1||e.indexOf("Sogou")>-1,LBBROWSER:e.indexOf("LBBROWSER")>-1,"2345Explorer":e.indexOf("2345Explorer")>-1,TheWorld:e.indexOf("TheWorld")>-1,XiaoMi:e.indexOf("MiuiBrowser")>-1,Quark:e.indexOf("Quark")>-1,Qiyu:e.indexOf("Qiyu")>-1,Wechat:e.indexOf("MicroMessenger")>-1,Taobao:e.indexOf("AliApp(TB")>-1,Alipay:e.indexOf("AliApp(AP")>-1,Weibo:e.indexOf("Weibo")>-1,Douban:e.indexOf("com.douban.frodo")>-1,Suning:e.indexOf("SNEBUY-APP")>-1,iQiYi:e.indexOf("IqiyiApp")>-1,Windows:e.indexOf("Windows")>-1,Linux:e.indexOf("Linux")>-1||e.indexOf("X11")>-1,"Mac OS":e.indexOf("Macintosh")>-1,Android:e.indexOf("Android")>-1||e.indexOf("Adr")>-1,Ubuntu:e.indexOf("Ubuntu")>-1,FreeBSD:e.indexOf("FreeBSD")>-1,Debian:e.indexOf("Debian")>-1,"Windows Phone":e.indexOf("IEMobile")>-1||e.indexOf("Windows Phone")>-1,BlackBerry:e.indexOf("BlackBerry")>-1||e.indexOf("RIM")>-1,MeeGo:e.indexOf("MeeGo")>-1,Symbian:e.indexOf("Symbian")>-1,iOS:e.indexOf("like Mac OS X")>-1,"Chrome OS":e.indexOf("CrOS")>-1,WebOS:e.indexOf("hpwOS")>-1,Mobile:e.indexOf("Mobi")>-1||e.indexOf("iPh")>-1||e.indexOf("480")>-1,Tablet:e.indexOf("Tablet")>-1||e.indexOf("Nexus 7")>-1,iPad:e.indexOf("iPad")>-1}},matchInfoMap:function(e){var r,t=(null==(r=o.navigator)?void 0:r.userAgent)||"",n=i.getMatchMap(t);for(var a in o.infoMap)for(var s=0;s36&&n.showModalDialog?s=!0:+u>45&&(s=t("type","application/vnd.chromium.remoting-viewer"))}if(a.Baidu&&a.Opera&&(a.Baidu=!1),a.Mobile&&(a.Mobile=!r.includes("iPad")),s&&(t("type","application/gameplugin")||o.navigator&&void 0===o.navigator.connection.saveData?a["360SE"]=!0:a["360EE"]=!0),a.IE||a.Edge)switch(window.screenTop-window.screenY){case 71:case 74:case 99:case 75:case 105:break;case 102:a["360EE"]=!0;break;case 104:a["360SE"]=!0}var c={Safari:function(){return r.replace(/^.*Version\/([\d.]+).*$/,"$1")},Chrome:function(){return r.replace(/^.*Chrome\/([\d.]+).*$/,"$1").replace(/^.*CriOS\/([\d.]+).*$/,"$1")},IE:function(){return r.replace(/^.*MSIE ([\d.]+).*$/,"$1").replace(/^.*rv:([\d.]+).*$/,"$1")},Edge:function(){return r.replace(/^.*Edge\/([\d.]+).*$/,"$1")},Firefox:function(){return r.replace(/^.*Firefox\/([\d.]+).*$/,"$1").replace(/^.*FxiOS\/([\d.]+).*$/,"$1")},"Firefox Focus":function(){return r.replace(/^.*Focus\/([\d.]+).*$/,"$1")},Chromium:function(){return r.replace(/^.*Chromium\/([\d.]+).*$/,"$1")},Opera:function(){return r.replace(/^.*Opera\/([\d.]+).*$/,"$1").replace(/^.*OPR\/([\d.]+).*$/,"$1")},Vivaldi:function(){return r.replace(/^.*Vivaldi\/([\d.]+).*$/,"$1")},Yandex:function(){return r.replace(/^.*YaBrowser\/([\d.]+).*$/,"$1")},Arora:function(){return r.replace(/^.*Arora\/([\d.]+).*$/,"$1")},Lunascape:function(){return r.replace(/^.*Lunascape[\/\s]([\d.]+).*$/,"$1")},QupZilla:function(){return r.replace(/^.*QupZilla[\/\s]([\d.]+).*$/,"$1")},"Coc Coc":function(){return r.replace(/^.*coc_coc_browser\/([\d.]+).*$/,"$1")},Kindle:function(){return r.replace(/^.*Version\/([\d.]+).*$/,"$1")},Iceweasel:function(){return r.replace(/^.*Iceweasel\/([\d.]+).*$/,"$1")},Konqueror:function(){return r.replace(/^.*Konqueror\/([\d.]+).*$/,"$1")},Iceape:function(){return r.replace(/^.*Iceape\/([\d.]+).*$/,"$1")},SeaMonkey:function(){return r.replace(/^.*SeaMonkey\/([\d.]+).*$/,"$1")},Epiphany:function(){return r.replace(/^.*Epiphany\/([\d.]+).*$/,"$1")},360:function(){return r.replace(/^.*QihooBrowser\/([\d.]+).*$/,"$1")},"360SE":function(){return{63:"10.0",55:"9.1",45:"8.1",42:"8.0",31:"7.0",21:"6.3"}[+r.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},"360EE":function(){return{69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[+r.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},Maxthon:function(){return r.replace(/^.*Maxthon\/([\d.]+).*$/,"$1")},QQBrowser:function(){return r.replace(/^.*QQBrowser\/([\d.]+).*$/,"$1")},QQ:function(){return r.replace(/^.*QQ\/([\d.]+).*$/,"$1")},Baidu:function(){return r.replace(/^.*BIDUBrowser[\s\/]([\d.]+).*$/,"$1")},UC:function(){return r.replace(/^.*UC?Browser\/([\d.]+).*$/,"$1")},Sogou:function(){return r.replace(/^.*SE ([\d.X]+).*$/,"$1").replace(/^.*SogouMobileBrowser\/([\d.]+).*$/,"$1")},LBBROWSER:function(){return{57:"6.5",49:"6.0",46:"5.9",42:"5.3",39:"5.2",34:"5.0",29:"4.5",21:"4.0"}[+navigator.userAgent.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},"2345Explorer":function(){return r.replace(/^.*2345Explorer\/([\d.]+).*$/,"$1")},TheWorld:function(){return r.replace(/^.*TheWorld ([\d.]+).*$/,"$1")},XiaoMi:function(){return r.replace(/^.*MiuiBrowser\/([\d.]+).*$/,"$1")},Quark:function(){return r.replace(/^.*Quark\/([\d.]+).*$/,"$1")},Qiyu:function(){return r.replace(/^.*Qiyu\/([\d.]+).*$/,"$1")},Wechat:function(){return r.replace(/^.*MicroMessenger\/([\d.]+).*$/,"$1")},Taobao:function(){return r.replace(/^.*AliApp\(TB\/([\d.]+).*$/,"$1")},Alipay:function(){return r.replace(/^.*AliApp\(AP\/([\d.]+).*$/,"$1")},Weibo:function(){return r.replace(/^.*weibo__([\d.]+).*$/,"$1")},Douban:function(){return r.replace(/^.*com.douban.frodo\/([\d.]+).*$/,"$1")},Suning:function(){return r.replace(/^.*SNEBUY-APP([\d.]+).*$/,"$1")},iQiYi:function(){return r.replace(/^.*IqiyiVersion\/([\d.]+).*$/,"$1")}};return e.browserVersion="",c[e.browser]&&(e.browserVersion=c[e.browser](),e.browserVersion==r&&(e.browserVersion="")),"Edge"==e.browser&&(e.engine="EdgeHTML"),"Chrome"==e.browser&&parseInt(e.browserVersion)>27&&(e.engine="Blink"),"Opera"==e.browser&&parseInt(e.browserVersion)>12&&(e.engine="Blink"),"Yandex"==e.browser&&(e.engine="Blink"),e.browser+" (version: "+e.browserVersion+"; kernel: "+e.engine+")"}},a={DeviceInfoObj:function(e){var r,t=function(r){var t;null==(t=e.info)||t.forEach((function(e){e.toLowerCase()===r.toLowerCase()&&(s[r]=a[r])}))};e=e||{domain:""};var a={deviceType:i.getDeviceType(),OS:i.getOS(),OSVersion:i.getOSVersion(),sh:n.screen.height,sw:n.screen.width,lang:i.getLanguage(),netWork:i.getNetwork(),orientation:i.getOrientationStatu(),browserInfo:i.getBrowserInfo(),fingerprint:i.createFingerprint(e.domain),userAgent:null==(r=o.navigator)?void 0:r.userAgent};if(!e.info||0===e.info.length)return a;var s={};for(var u in a)t(u);return s}},{getDeviceInfo:function(e){return a.DeviceInfoObj(e)}}),_=function(){function e(){}return e.add=function(r,t){e.queues.push({url:r,data:t})},e.fire=function(){if(e.queues&&0!==e.queues.length){e.isStop=!1;var r=e.queues[0];r.url&&e.api.report(r.data),e.queues.splice(0,1),e.fire()}else e.isStop=!0},e}();_.isStop=!0,_.queues=[];var S=function(){function e(e){this.url=e}var r=e.prototype;return r.report=function(e){this.checkUrl(this.url)&&this.sendInfo(e)},r.sendInfo=function(e){navigator.sendBeacon?this.sendBeacon(this.url,e):this.sendImage(this.url,e)},r.sendImage=function(e,r){var t=this.changeJSON2Query(r),n=new Image;n.onload=n.onerror=function(){n=null},n.src=e+"?"+t+"&random="+Math.random()},r.sendBeacon=function(e,r){try{navigator.sendBeacon(e,this.formatParamsByURLSearchParams(r))}catch(e){}},r.formatParamsByURLSearchParams=function(e){var r=new URLSearchParams;for(var t in e)"object"==typeof e[t]&&(e[t]=JSON.stringify(e[t])),r.append(t,e[t]);return r},r.changeJSON2Query=function(e){var r="";for(var t in e){""!=r&&(r+="&");var n=e[t];r+=t+"="+encodeURIComponent("object"==typeof n?JSON.stringify(n):n)}return r},r.checkUrl=function(e){return!!e&&/^[hH][tT][tT][pP]([sS]?):\/\//.test(e)},e}();function O(){return O=Object.assign||function(e){for(var r=1;r0&&(r._free(l),l=null),{};var d=r.HEAPU8.subarray(l,l+c);s.sps=new Uint8Array(c),null==(n=s.sps)||n.set(d,0);var f=r.cwrap("getPPSLen","number",[])(),p=r.cwrap("getPPS","number",[])(),m=r.HEAPU8.subarray(p,p+f);s.pps=new Uint8Array(f),null==(o=s.pps)||o.set(m,0);var h=r.cwrap("getSEILen","number",[])(),g=r.cwrap("getSEI","number",[])(),v=r.HEAPU8.subarray(g,g+h);s.sei=new Uint8Array(h),null==(i=s.sei)||i.set(v,0);var E=r.cwrap("getVLCLen","number",[])(),y=r.cwrap("getVLC","number",[])(),w=r.HEAPU8.subarray(y,y+E);if(u.vlc=new Uint8Array(E),null==(a=u.vlc)||a.set(w,0),(null==t?void 0:t.vCodec)===e.DEF_HEVC||(null==t?void 0:t.vCodec)===e.DEF_H265){var b,_=r.cwrap("getVPSLen","number",[])(),S=r.cwrap("getVPS","number",[])(),O=r.HEAPU8.subarray(S,S+_);s.vps=new Uint8Array(_),null==(b=s.vps)||b.set(O,0),r._free(O),O=null}try{r._free(l)}catch(e){k.send("worker",{name:"readPacket",free:"spsPtr"})}l=null;try{r._free(d)}catch(e){k.send("worker",{name:"readPacket",free:"spsSubPtr"})}d=null;try{r._free(m)}catch(e){k.send("worker",{name:"readPacket",free:"ppsSubPtr"})}m=null;try{r._free(v)}catch(e){k.send("worker",{name:"readPacket",free:"seiSubPtr"})}v=null;try{r._free(w)}catch(e){k.send("worker",{name:"readPacket",free:"vlcSubPtr"})}return w=null,{nalu:s,vlc:u}};function F(){return F=Object.assign||function(e){for(var r=1;r0?r:e.DEFAULT_SAMPLERATE,sampleChannel:t>=0?t:e.DEFAULT_CHANNEL}:{sampleRate:0,sampleChannel:0,audioNone:!0})))}),"viiddddiiiii"),t._setCodecType(n,0,o,i),t.cwrap("initDecoder","number",["number"])(n);break;case p:var u=s.data,c=u.nalBuf,l=u.pts,b=u.flushDecoder,_=t._malloc(c.length);t.HEAP8.set(c,_);var S=parseInt(1e3*l+"");t._decodeCodecContext(n,_,c.length,S,b),t._free(_),_=null;break;case h:var O=s.data,T=O.buff;O.tsUrl,function(e,r,t,n){null!=M&&(e._free(M),M=null),M=e._malloc(r.length),e.HEAP8.set(r,M);try{var o=e.cwrap("demuxTsStream","number",["number","number","number"])(M,r.length,t);e._free(M),M=null,o>=0&&postMessage(w(g))}catch(e){k.send("worker",{name:"demuxTsStream",msg:e})}}(t,T,n);break;case v:!function(e,r){for(;;){var t=e.cwrap("getPacket","number",[])(),n=e.HEAPU32[t/4],o=e.HEAPU32[t/4+1],i=e.HEAPF64[t/8+1],a=e.HEAPF64[t/8+1+1],s=e.HEAPU32[t/4+1+1+2+2],u=e.HEAPU32[t/4+1+1+2+2+1],c=e.HEAPU8.subarray(u,u+o),l=null,d=[0,1].includes(n);if(d)try{l=P(e,r)}catch(e){}if(!d||o<=0)break;var f=a>0?a:i;f<0||0===t||(self.postMessage(w(v,{type:n,size:o,ptime:i,dtime:a,keyframe:s,data:Array.from(c),pts:f,layer:l})),c=null,l=null,t=null)}postMessage(w(E))}(t,a);break;case m:null!==o&&t.removeFunction(o),o=null,null!==i&&t.removeFunction(i),i=null,t.cwrap("destroy","number",["number"])(n),self.close()}}})).catch((function(e){self.postMessage(w(l,{data:e}))}))})); diff --git a/examples/vue-app/src/components/Player.vue b/examples/vue-app/src/components/Player.vue index 555ccaa..82ac0e2 100644 --- a/examples/vue-app/src/components/Player.vue +++ b/examples/vue-app/src/components/Player.vue @@ -1,16 +1,16 @@ From 58f2a06a787145c2e42e0c1125e5b82adccd1503 Mon Sep 17 00:00:00 2001 From: ShineShao Date: Thu, 1 Aug 2024 10:22:25 +0800 Subject: [PATCH 09/20] docs: update --- README.md | 6 +++--- examples/base-app/README.md | 2 -- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 4a4ab9a..941d7a6 100644 --- a/README.md +++ b/README.md @@ -24,13 +24,13 @@ pnpm add @ezuikit/player-hls ```ts // 推荐 -import HLSPlayer from '@ezuikit/player-hls'; +import HlsPlayer from '@ezuikit/player-hls'; // 默认自动播放 -const player = new HLSPlayer({ +const player = new HlsPlayer({ id: 'app', url: 'https://open.ys7.com/v3/openlive/E71992743_1_1.m3u8', - staticPath: "/" // decoder静态资源文件夹 + staticPath: "/" // decoder静态资源文件夹 默认根目录 }); // 不会立即生效 diff --git a/examples/base-app/README.md b/examples/base-app/README.md index 2fbb336..3700a35 100644 --- a/examples/base-app/README.md +++ b/examples/base-app/README.md @@ -1,7 +1,5 @@ ## 使用 - - ```bash # 安装 http-server From 4c3bb8f58d53c18869e3d5656d11a4943c722d27 Mon Sep 17 00:00:00 2001 From: ShineShao Date: Thu, 1 Aug 2024 11:18:50 +0800 Subject: [PATCH 10/20] feat: version 0.1.0-beta.2 --- dist/decoder.worker.js | 2 +- dist/index.esm.js | 4 ++-- dist/index.js | 4 ++-- dist/index.umd.js | 4 ++-- dist/types/index.d.ts | 4 ++-- package.json | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/dist/decoder.worker.js b/dist/decoder.worker.js index e229e81..e544318 100644 --- a/dist/decoder.worker.js +++ b/dist/decoder.worker.js @@ -1,6 +1,6 @@ /* * -* DecoderWorker.js v0.1.0-beta.1 +* DecoderWorker.js v0.1.0-beta.2 * Copyright (c) 2024-8-1 Ezviz-OpenBiz * . * diff --git a/dist/index.esm.js b/dist/index.esm.js index d717b34..55da091 100644 --- a/dist/index.esm.js +++ b/dist/index.esm.js @@ -1,8 +1,8 @@ /* * -* HlsPlayer.js v0.1.0-beta.1 +* HlsPlayer.js v0.1.0-beta.2 * Copyright (c) 2024-8-1 Ezviz-OpenBiz * . * */ -import e,{Video as t}from"@ezuikit/player-base";import i from"@ezuikit/utils-collect";import n from"hls.js";import{addVc as s,getStaticPath as r}from"@ezuikit/utils-tools";import o from"@ezuikit/utils-logger";import{merge as a}from"lodash-es";import l from"eventemitter3";var u=1,h=2,c=3,d="aac",p="h265",f="hevc",m="m3u8",v="hls",g=0,y=1,_=600,T=400,w=30,P=40,C=!1,x=44100,S=20,L="ONCE",b="SWAP",R=0,D=265,E=1001,k=1002,M=1003;var A,I=function(){return window.WebAssembly&&"object"==("undefined"==typeof WebAssembly?"undefined":(e=WebAssembly)&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e);var e};function B(){return(new Date).getTime()}var F=window.AudioContext||(null==(A=window)?void 0:A.webkitAudioContext),N=function(){function e(e){var t=this;this.options={sampleRate:e.sampleRate||x,appendType:e.appendType||g,playMode:e.playMode||b,isLive:e.isLive},this.logger=null==e?void 0:e.logger,this.sourceChannel=-1,this.audioCtx=new F({latencyHint:"interactive",sampleRate:e.sampleRate}),this.gainNode=null,this.sourceList=[],this.startStatus=!1,this.sampleQueue=[],this.nextBuffer=null,this.playTimestamp=0,this.playStartTime=0,this.durationMs=-1,this.volume=e.volume||0,this.onLoadCache=null,this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList[0].onended=function(){t.swapSource(0,1)},this.sourceList[1].onended=function(){t.swapSource(1,0)},this.gainNode=this.audioCtx.createGain(),this.gainNode.gain.value=this.volume,this.gainNode.connect(this.audioCtx.destination),this.runNextBuffer()}var t=e.prototype;return t.resetStartParam=function(){this.playTimestamp=0,this.playStartTime=0},t.setOnLoadCache=function(e){this.onLoadCache=e},t.setDurationMs=function(e){void 0===e&&(e=-1),this.durationMs=e},t.setVolume=function(e){void 0===e&&(e=0),this.volume=e,this.gainNode.gain.value=e},t.getAlignVPTS=function(){return this.playTimestamp+(B()-this.playStartTime)/1e3},t.swapSource=function(e,t){if(void 0===e&&(e=-1),void 0===t&&(t=-1),!this.startStatus)return null;if(e<0||e>=this.sourceList.length)return null;if(t<0||t>=this.sourceList.length)return null;try{this.sourceChannel===e&&null!==this.sourceList[e]&&(this.sourceList[e].disconnect(this.gainNode),this.sourceList[e]=null)}catch(t){this.logger.error("[DEFINE ERROR] this audioCore disconnect source Index:"+e+" error happened!",t)}(this.sourceChannel=t,-2===this.decodeSample(t,e)&&this.options.isLive)&&(this.getAlignVPTS()>=this.durationMs/1e3-.04?this.pause():null==this||this.onLoadCache());return null},t.addSample=function(e){return void 0===e&&(e=null),!(null==e||!e||void 0===e)&&(0===this.sampleQueue.length&&(this.seekPos=null==e?void 0:e.pts),this.sampleQueue.push(e),!0)},t.runNextBuffer=function(){var e=this;window.setInterval((function(){if(!(null!=e.nextBuffer||e.sampleQueue.length=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){s.swapSource(e,t)}),0===this.sampleQueue.length)return this.options.isLive?(this.sourceList[e].connect(this.gainNode),this.sourceList[e].startState||null==(n=this.sourceList[e])||null==(i=n.start)||i.call(n),this.sourceList[e].onended=function(){s.swapSource(e,t)},this.sourceList[e].stop(),0):-2;if(this.sourceList[e].buffer)return this.swapSource(e,t),0;if(null==this.nextBuffer||this.nextBuffer.data.length<1){var r,o,a=this.sourceList[e];return a.connect(this.gainNode),(null==a?void 0:a.startState)||null==(o=this.sourceList[e])||null==(r=o.start)||r.call(o),a.startState=!0,a.stop(),1}var l=this.nextBuffer.data.buffer;this.playTimestamp=this.nextBuffer.pts,this.playStartTime=B();try{this.audioCtx.decodeAudioData(l,(function(t){var i,n;null!==s.sourceList[e]&&(s.sourceList[e].buffer=t,s.sourceList[e].connect(s.gainNode),s.sourceList[e].startState||null==(n=s.sourceList[e])||null==(i=n.start)||i.call(n),s.sourceList[e].startState=!0)}),(function(e){s.logger.error("Error audioCore with decoding audio data",e)}))}catch(e){return this.nextBuffer=null,this.logger.log("decodeAudioData error",e),-3}return this.nextBuffer=null,0},t.decodeWholeSamples=function(e){var t=this;if(void 0===e&&(e=-1),this.sourceChannel=e,e<0||e>=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){}),0===this.sampleQueue.length)return-2;for(var i=null,n=null,s=0;s",e)}},e}(),O=function(){function e(e){this.limit=e.limit||200,this.logger=null==e?void 0:e.logger,this.yuvCache=[]}var t=e.prototype;return t.appendCacheByCacheYuv=function(e){return this.yuvCache.push(e),this.yuvCache.length>=this.limit?(this.shiftYuv(),h):u},t.getState=function(){return this.yuvCache.length<=0?c:this.yuvCache.length>=this.limit?h:u},t.cleanPipeline=function(){this.yuvCache=[],this.yuvCache.length=0},t.shiftYuv=function(){return this.yuvCache.length<=0?null:this.yuvCache.shift()},e}(),U=function(){function e(e,t,i,n,s,r){this.pts=e,this.width=t,this.height=i,this.imageBufferY=n,this.imageBufferB=s,this.imageBufferR=r}return e.prototype.setYuv=function(e,t,i,n,s,r){this.pts=e,this.width=t,this.height=i,this.imageBufferY=n,this.imageBufferB=s,this.imageBufferR=r},e}(),$=function(){function e(e){this.gl=e,this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)}var t=e.prototype;return t.bind=function(e,t,i){var n=this.gl;n.activeTexture([n.TEXTURE0,n.TEXTURE1,n.TEXTURE2][e]),n.bindTexture(n.TEXTURE_2D,this.texture),n.uniform1i(n.getUniformLocation(t,i),e)},t.fill=function(e,t,i){var n=this.gl;n.bindTexture(n.TEXTURE_2D,this.texture),n.texImage2D(n.TEXTURE_2D,0,n.LUMINANCE,e,t,0,n.LUMINANCE,n.UNSIGNED_BYTE,i)},e}(),W=function(){function e(e,t){this.gl=null,this.gl=e.getContext("webgl")||e.getContext("experimental-webgl"),this.program=this.gl.createProgram();var i=["attribute highp vec4 aVertexPosition;","attribute vec2 aTextureCoord;","varying highp vec2 vTextureCoord;","void main(void) {"," gl_Position = aVertexPosition;"," vTextureCoord = aTextureCoord;","}"].join("\n"),n=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(n,i),this.gl.compileShader(n);var s=["precision highp float;","varying lowp vec2 vTextureCoord;","uniform sampler2D YTexture;","uniform sampler2D UTexture;","uniform sampler2D VTexture;","const mat4 YUV2RGB = mat4","("," 1.1643828125, 0, 1.59602734375, -.87078515625,"," 1.1643828125, -.39176171875, -.81296875, .52959375,"," 1.1643828125, 2.017234375, 0, -1.081390625,"," 0, 0, 0, 1",");","void main(void) {"," gl_FragColor = vec4( texture2D(YTexture, vTextureCoord).x, texture2D(UTexture, vTextureCoord).x, texture2D(VTexture, vTextureCoord).x, 1) * YUV2RGB;","}"].join("\n"),r=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(r,s),this.gl.compileShader(r),this.gl.attachShader(this.program,n),this.gl.attachShader(this.program,r),this.gl.linkProgram(this.program),this.gl.useProgram(this.program),this.gl.getProgramParameter(this.program,this.gl.LINK_STATUS);var o=this.gl.getAttribLocation(this.program,"aVertexPosition");this.gl.enableVertexAttribArray(o);var a=this.gl.getAttribLocation(this.program,"aTextureCoord");this.gl.enableVertexAttribArray(a),this.verticesBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.verticesBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(o,3,this.gl.FLOAT,!1,0,0),this.texCoordBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texCoordBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(a,2,this.gl.FLOAT,!1,0,0),this.gl.y=new $(this.gl),this.gl.u=new $(this.gl),this.gl.v=new $(this.gl),this.gl.y.bind(0,this.program,"YTexture"),this.gl.u.bind(1,this.program,"UTexture"),this.gl.v.bind(2,this.program,"VTexture")}var t=e.prototype;return t.renderFrame=function(e,t,i,n,s){this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.y.fill(n,s,e),this.gl.u.fill(n>>1,s>>1,t),this.gl.v.fill(n>>1,s>>1,i),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4)},t.destroyContext=function(){try{this.gl.deleteProgram(this.program),this.gl.deleteBuffer(this.verticesBuffer),this.gl.deleteBuffer(this.texCoordBuffer),this.gl.deleteTexture(this.gl.y.texture),this.gl.deleteTexture(this.gl.u.texture),this.gl.deleteTexture(this.gl.v.texture),this.gl=null,this.program=null,this.verticesBuffer=null,this.texCoordBuffer=null}catch(e){}},e}(),V=function(e,t){return{cmd:e,data:t}},j="wasmLoading",Y="wasmLoaded",H="wasmFailed",X="videoCallback",Q="decodeCodecContext",z="destroy",G="demuxTsStream",J="demuxCoreReceive",q="readPacket",K="readPacketEnd",Z="mediaInfo",ee="ezui-hls",te={width:600,height:400,volume:0,retry:20,autoPlay:!0,staticPath:"",isLive:!0,loggerOptions:{name:"HLS",level:"INFO",showTime:!0}},ie={disableContextmenu:!0},ne=function(){function e(e){void 0===e&&(e={}),this.options=Object.assign({},ie,e),this.logger=this.options.logger,this.event=this.options.event,this._classVideo=ee+"-video",this._$container=document.getElementById(this.options.id),this._render()}var i=e.prototype;return i._render=function(){var e,i;if("video"===this.options.nodeName)this.$video=new t(this._$container,this.options).$video;else{var n;if(this.$video=document.createElement(this.options.nodeName),this._$container.innerHTML="",this._$container.appendChild(this.$video),this.options.disableContextmenu)null==(n=this.$video)||n.addEventListener("contextmenu",(function(e){return e.preventDefault(),!1}));this.$video.classList.add(this._classVideo),this.$video.style.cssText+="object-fit: contain; z-index:1;"}null==(i=this.event)||null==(e=i.emit)||e.call(i,"rendered")},i._isVideo=function(){return"VIDEO"===this.$video.nodeName},i.destroy=function(){if(this.$video&&this._$container&&this.$video){try{this._$container.removeChild(this.$video)}catch(e){}this.$video=null}},e}();function se(e,t,i){return t&&function(e,t){for(var i=0;i=1&&(null==(i=e)||null==(t=i.onLoadCacheFinished)||t.call(i),window.clearInterval(e.cacheInterval),e.cacheInterval=null,e.isCaching===k&&e.play(e.playParams),e.isCaching=E)}),40))}},i._playFunc=function(){var e=!1;if(B()-this.calculateStartTime>=this.frameTime-this.preCostTime){e=!0;var t=!0;if(this.calculateStartTime=B(),this.options.audioNone)this.playFrameYUV(t);else{this.fix_poc_err_skip>0&&(this.fix_poc_err_skip--,t=!1);var i=this.videoPTS-this.audio.getAlignVPTS();if(i>0)return void(this.playParams.seekEvent&&!this.options.audioNone&&this.audio.setVolume(0));if(t){if(!(t=-1*i<=1*this.frameTimeSec)){for(var n=parseInt(i/this.frameTimeSec+""),s=0;s",e,n,i),n>=i&&(t.playFrameYUV(!0),i+=1)}),this.frameTime||5)}else(this.videoPTS>=this.playParams.seekPos&&!this.isNewSeek||0===this.playParams.seekPos||0===this.playParams.seekPos)&&(this.frameTime=1e3/this.options.fps,this.frameTimeSec=this.frameTime/1e3,this.options.audioNone||this.audio.play(),this._volume=this.options.audioNone?0:this.audio.volume,this.loop=window.setInterval((function(){var e=B();t._playFunc(),t.preCostTime=B()-e}),this.frameTime||5));return this.setVolume(this._volume),Promise.resolve()},i.stop=function(){this.destroy(),this.stream=new Uint8Array},i.destroy=function(){return void 0!==this.gl&&null!==this.gl&&(this.gl.destroyContext(),this.gl=null),this.endAudio(),this.cacheLoop&&window.clearInterval(this.cacheLoop),this.cacheLoop=null,this.loop&&window.clearInterval(this.loop),this.loop=null,this.pause(),this.decoderWorker.postMessage(V(z)),this.stream=null,this.frameList=null,this.durationMs=-1,this.videoPTS=0,this.isPlaying=!1,this.$video.remove(),!0},i.nextNalu=function(e){if(void 0===e&&(e=1),this.stream.length<=4)return!1;for(var t=-1,i=0;i=this.stream.length){if(-1===t)return!1;var n=this.stream.subarray(t);return this.stream=new Uint8Array,n}var s="0 0 1"===this.stream.slice(0,3).join(" "),r="0 0 0 1"===this.stream.slice(0,4).join(" ");if(s||r){if(-1===t)t=i;else{if(e<=1){var o=this.stream.subarray(t,i);return this.stream=this.stream.subarray(i),o}e-=1}i+=3}}return!1},i.playFrameYUV=function(e){void 0===e&&(e=!1);var t=this.cacheYuvBuf.shiftYuv();if(!t)return this.noCacheFrame+=1,e&&!this.playParams.seekEvent&&this.loadCache(),!1;this.noCacheFrame=0;var i=t.pts;return this.videoPTS=i,this.drawImage(t.width,t.height,t.imageBufferY,t.imageBufferB,t.imageBufferR),t=null,e&&!this.playParams.seekEvent&&this.isPlaying&&this.loadCache(),!0},i.drawImage=function(e,t,i,n,s){this.$video.width===e&&this.$video.height===t||(this.$video.width=e,this.$video.height=t),this.isCheckDisplay||this.checkDisplaySize(e,t);var r=e*t,o=e/2*(t/2),a=new Uint8Array(r+2*o);a.set(i,0),a.set(n,r),a.set(s,r+o),this.gl.renderFrame(i,n,s,e,t),a=null},i.checkDisplaySize=function(e,t){var i,n=e/(null==(i=this.options)?void 0:i.width)>t/this.options.height,s=+(this.options.width/e).toFixed(2),r=+(this.options.height/t).toFixed(2),o=n?s:r,a=this.options.fixed,l=a?this.options.width:parseInt(e*o+""),u=a?this.options.height:parseInt(t*o+"");return this.$video.style.maxWidth="100%",this.$video.style.maxHeight="100%",this.options.width/this.options.height>=1&&l/u>=1?this.$video.style.width="100%":this.$video.style.height="100%",this.isCheckDisplay=!0,[l,u]},i._onWorkerMessage=function(){var e=this;this.decoderWorker.onmessage=function(t){var i=t.data;if(i.cmd===X){var n=i.data,s=n.ptsSec,r=n.strideY,o=n.height;n.width;var a=n.bufY,l=n.bufU,u=n.bufV,h=new U(s,r,o,a,l,u);e.cacheYuvBuf.appendCacheByCacheYuv(h),h=null}}},i.initVideoAndAudio=function(){this.$video.width=this.options.width,this.$video.height=this.options.height,this.gl=new W(this.$video,{preserveDrawingBuffer:!1}),this.options.audioNone||(this.audio=new N({logger:this.logger,sampleRate:this.options.sampleRate,appendType:this.options.appendHevcType,volume:this.options.volume,isLive:this.options.isLive})),this.isPlayLoadingFinish=1},se(t,[{key:"volume",get:function(){var e;return(null==(e=this.audio)?void 0:e.volume)||this._volume},set:function(e){this.setVolume(e)}}]),t}(ne),le=[/#EXT-X-PROGRAM-DATE-TIME.+\n/g],ue={lineDelimiter:/\r?\n/,extensionHeader:"#EXTM3U",tagPrefix:"#EXT",segmentPrefix:"#EXTINF",segmentParse:/^#EXTINF: *([0-9.]+)(, *(.+?)?)?$/,tagParse:/^#EXT-X-([A-Z-]+)(:(.+))?$/,version:"VERSION",allowCache:"ALLOW-CACHE",combined:"COMBINED",endList:"ENDLIST",targetDuration:"TARGETDURATION",mediaSequence:"MEDIA-SEQUENCE",discontinuity:"DISCONTINUITY",streamInf:"STREAM-INF",isComment:function(e){return e&&"#"===e[0]&&!e.startsWith(ue.tagPrefix)},isBlank:function(e){return""===e},canStrip:function(e){return ue.isBlank(e)||ue.isComment(e)},defaultMinDur:99999},he=function(){function e(e){this._retry=10,this.logger=null==e?void 0:e.logger,this.initState=!0,this.controller=new AbortController,this._slices=[],this._type=v,this._preURI="",this.duration=-1,this.onTransportStream=null,this.onFinished=null}var t=e.prototype;return t.destroy=function(){this.initState=!1},t.fetchM3u8=function(e){var t=this,i=this;if(this.initState){var n=function(t){return new Promise((function(i,n){var s=new XMLHttpRequest;s.open("GET",t),s.onload=function(){this.status>=200&&this.status<300&&(t!==this.responseURL?(e=this.responseURL,i(this.responseURL)):i(""))},s.onreadystatechange=function(){4===s.readyState&&200===s.status&&i(s.responseText)},s.onerror=function(){n(new Error("Network error."))},s.send()}))};n(e).then((function(s){if(t._retry=10,i._uriParse(e)){var r=i._m3u8Parse(s);if("number"==typeof r&&r>=0)var o=setTimeout((function(){i.fetchM3u8(e),clearTimeout(o)}),200*r)}return n=null,s})).catch((function(s){if(t.logger.error("[M3u8Base] fetch m3u8 url Error ==> ",s),n=null,t._retry>=1)var r=setTimeout((function(){i.fetchM3u8(e),clearTimeout(r)}),500);t._retry--}))}},t._uriParse=function(e){this._preURI="";var t=e.split("://"),i=null,n=null;if(t.length<1)return this.logger.log("HLS URI ERROR : "+e),!1;t.length>1?(i=t[0],n=t[1].split("/"),this._preURI=i+"://"):n=t[0].split("/");for(var s=0;sc&&(s=c);var d,p=n[o+=1],f=null;if(p.includes("http"))f=p;else{if("/"===p[0]){var v=this._preURI.split("//"),g=v[v.length-1].split("/");this._preURI=v[0]+"//"+g[0]}f=this._preURI+p}if(!this._slices.includes(f))this._slices.push(f),null==this||null==(d=this.onTransportStream)||d.call(this,f,c)}}}this._slices.length>500&&(this._slices=this._slices.slice(-500));var y={type:this._type,duration:-1};return null==this||null==(t=this.onFinished)||t.call(this,y),s},t._readTag=function(e){var t=ue.tagParse.exec(e);return null!==t?{key:t[1],value:t[3]}:null},e}(),ce=function(){function e(e){this.sampleRate=e.sampleRate,this.frameDurMs=Math.floor(1024e3/this.sampleRate),this.frameDurSec=this.frameDurMs/1e3}var t=e.prototype;return t.updateOptions=function(e){this.sampleRate=e.sampleRate,this.frameDurMs=1024e3/this.sampleRate,this.frameDurSec=this.frameDurMs/1e3},t._getPktLen=function(e,t,i){return((3&e)<<11)+(t<<3)+((224&i)>>5)},t.sliceAACFrames=function(e,t){for(var i=[],n=e,s=0;s>4==15){var r=this._getPktLen(t[s+3],t[s+4],t[s+5]);if(r<=0)continue;var o=t.subarray(s,s+r),a=new Uint8Array(r);a.set(o,0),i.push({ptime:n,data:a}),n+=this.frameDurSec,s+=r}else s+=1;return i},e}(),de="M3U8",pe="TS",fe="FETCH",me=function(){function e(){}return e.init=function(t){e.collect=new i(t)},e.send=function(t,i){var n,s;null==(s=e.collect)||null==(n=s.send)||n.call(s,{action:t,logInfo:i})},e.updateParams=function(t){e.collect.updateExtendsInfo(t)},e}();function ve(e,t,i){return t&&function(e,t){for(var i=0;i ",e),s=null})).catch((function(n){var s,r,o,a;t.logger.error("[MpegTsDemux] demuxerTsInit ERROR fetch ERROR ==> ",n),null==(r=t.event)||null==(s=r.emit)||s.call(r,pe,{data:n}),null==(a=t.event)||null==(o=a.emit)||o.call(a,fe,{data:n,type:pe}),null==i||i.onDemuxedFailed(n,e),me.send(100,{url:e,msg:"fetch error"})}))},t._demuxCore=function(e,t){e.length<=0||this.decoderWorker.postMessage(V(G,{buff:e,tsUrl:t}))},t.readMediaInfo=function(){return this.mediaInfo},t.readAudioNone=function(){var e;return null==(e=this.mediaInfo)?void 0:e.audioNone},t.isHEVC=function(){return this.mediaInfo.vCodec===f||this.mediaInfo.vCodec===p},t.destroy=function(){this.controller&&this.controller.abort(),this.controller=null,this.mediaInfo=null,this.aacDec=null},t._onWorkerMessage=function(){var e=this;e.logger.log("[demuxer] register _onWorkerMessage"),e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case Z:var n,s;if(e.mediaInfo=i.data,e.mediaInfo)null==(s=e.event)||null==(n=s.emit)||n.call(s,"mediaInfo",e.mediaInfo);break;case J:var r;if(e.mediaInfo.vCodec)null==e.aacDec?e.aacDec=new ce(e.mediaInfo):e.aacDec.updateOptions(e.mediaInfo),null==e||null==(r=e.onDemuxed)||r.call(e)}}))},ve(e,[{key:"vCodec",get:function(){return this.mediaInfo.vCodec}}]),e}(),_e=function(){function e(e,t,i,n){this.pts=e,this.dts=e,this.isKey=t,this.data=i,this.video=n}return e.prototype.setFrame=function(e,t,i,n){this.pts=e,this.isKey=t,this.data=i,this.video=n},e}(),Te=function(){function e(e){this.logger=null==e?void 0:e.logger,this.event=null==e?void 0:e.event,this.decoderWorker=e.decoderWorker,this.m3u8Base=new he(e),this.mpegTsDemux=new ye(e),this.tsList=[],this._startTime=0,this._aStartTime=0,this.lockWait={state:!1,lockMember:{dur:0}},this._timerFeed=null,this.seekPos=-1,this.vPreFramePTS=0,this.aPreFramePTS=0,this.audioNone=!1,this.isHevcParam=!1,this.vCodec="",this.aCodec=null,this.aChannel=0,this.durationMs=-1,this.fps=-1,this.sampleRate=-1,this.size={width:-1,height:-1},this.mediaInfo=null,this._onWorkerMessage(),this.onReadyOBJ=null,this.onFinished=null,this.onDemuxed=null,this.onSamples=null,this.onCacheProcess=null}var t=e.prototype;return t.getCachePTS=function(){return Math.max(this.vPreFramePTS,this.aPreFramePTS)},t.demux=function(e){var t=this,i=this;this.vPreFramePTS=0,this.aPreFramePTS=0,this.m3u8Base.onTransportStream=function(e,t){i.tsList.push({streamURI:e,streamDur:t}),i.lockWait.state=!1},this.m3u8Base.onFinished=function(e){var t;e.type===m?i.durationMs=1e3*e.duration:i.durationMs=-1,null==i||null==(t=i.onFinished)||t.call(i,i.onReadyOBJ,e)},this.mpegTsDemux.onDemuxedFailed=function(e,n){t.logger.error("[M3u8] onDemuxedFailed: ",e,n),i.lockWait.state=!1},this.mpegTsDemux.onDemuxed=function(){var e;t.logger.log("[M3u8] onDemuxed"),null==i.mediaInfo&&(i.mediaInfo=i.mpegTsDemux.readMediaInfo(),t.logger.log("[M3u8] mediaInfo: ",i.mediaInfo),i.isHevcParam=i.mpegTsDemux.isHEVC(),i.vCodec=i.mpegTsDemux.vCodec,i.aCodec=i.mediaInfo.aCodec,i.aChannel=i.mediaInfo.sampleChannel,i.fps=i.mediaInfo.fps,i.sampleRate=i.mediaInfo.sampleRate,(null===i.aCodec||""===i.aCodec||i.aChannel<=0)&&(i.audioNone=!0),i.mediaInfo.width>0&&i.mediaInfo.height>0&&(t.size.width=t.mediaInfo.width,t.size.height=t.mediaInfo.height)),null==i||null==(e=i.onDemuxed)||e.call(i,i.onReadyOBJ),i.mpegTsDemux&&t.decoderWorker.postMessage(V(q))},this.mpegTsDemux.onReady=function(){i._fetchM3u8AndIntervalTs(e)},this._timerTsWasm=window.setInterval((function(){1===Ae.__HLS_WASM_DecoderState__&&(i._fetchM3u8AndIntervalTs(e),window.clearInterval(i._timerTsWasm),i._timerTsWasm=null)}),500)},t._fetchM3u8AndIntervalTs=function(e){var t=this,i=this;this.logger.log("[M3u8] start fetch m3u8 url"),i.m3u8Base.fetchM3u8(e),i._timerFeed=window.setInterval((function(){if(i.tsList.length>0&&!i.lockWait.state)try{var e=i.tsList.shift();if(null!=e){var n=e.streamURI,s=e.streamDur;i.lockWait.state=!0,i.lockWait.lockMember.dur=+s,i.mpegTsDemux.demuxURL(n)}else t.logger.error("[M3u8] onTsReady need wait ")}catch(e){var r,o,a,l;t.logger.error("[M3u8] onTsReady ERROR:",e),null==(o=t.event)||null==(r=o.emit)||r.call(o,de,{data:e}),null==(l=t.event)||null==(a=l.emit)||a.call(l,fe,{data:e,type:de}),i.lockWait.state=!1}}),50)},t.destroy=function(){var e;this.m3u8Base&&(null==(e=this.m3u8Base)||e.destroy(),this.m3u8Base=null);this._timerFeed&&(window.clearInterval(this._timerFeed),this._timerFeed=null),this.mpegTsDemux&&(this.mpegTsDemux.destroy(),this.mpegTsDemux=null)},t.bindReady=function(e){this.onReadyOBJ=e},t.getACodec=function(){return this.aCodec},t.getVCodec=function(){return this.vCodec},t.getDurationMs=function(){return this.durationMs},t.getFPS=function(){return this.fps},t.getSampleRate=function(){return this.sampleRate},t.getSampleChannel=function(){return this.aChannel},t.getSize=function(){return this.size},t._onWorkerMessage=function(){this.logger.log("[M3U8] register _onWorkerMessage");var e=this;e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case q:var n,s=i.data,r=s.type,o=s.pts,a=s.ptime,l=s.keyframe,u=s.data,h=s.layer;if(u=new Uint8Array(u),1===r&&e.mpegTsDemux.mediaInfo.aCodec===d&&(u=e.mpegTsDemux.aacDec.sliceAACFrames(a,u)),0===r){var c=function(e){var t=e.nalu,i=e.vlc.vlc;null==t.vps&&(t.vps=new Uint8Array);var n=new Uint8Array(t.vps.length+t.sps.length+t.pps.length+t.sei.length+i.length);return n.set(t.vps,0),n.set(t.sps,t.vps.length),n.set(t.pps,t.vps.length+t.sps.length),n.set(t.sei,t.vps.length+t.sps.length+t.pps.length),n.set(i,t.vps.length+t.sps.length+t.pps.length+t.sei.length),n}(h),p=o,f=new _e(p,1===l,c,!0);e.vPreFramePTS=p,null==e||e.onSamples(e.onReadyOBJ,f)}else if(1===r){var m;if("aac"===(null==(m=e.mediaInfo)?void 0:m.aCodec)){for(var v=u,g=0;g0&&(e.$video.volume=e._options.volume)}),1e3)})),e.event.emit("parsed")}))}))}else if(this.$video.canPlayType("application/vnd.apple.mpegurl")){this.logger.log("Browser support application/vnd.apple.mpegurl : ",this.$video.canPlayType("application/vnd.apple.mpegurl")),this.$video.src=this._options.url;var i=!1;this.$video.addEventListener("canplay",(function(){!i&&e._options.autoPlay&&setTimeout((function(){e.$video.play().then((function(){e.logger.log("autoPlay video!"),setTimeout((function(){e._options.volume>0&&e.setVolume(e._options.volume)}),1e3),i=!0}))}),200)}))}else this.logger.warn("Browser not support hls")},i.isPlayingState=function(){return!this.$video.paused},i.play=function(){if(this.isPlayingState())return Promise.resolve();if(this._options.isLive&&(this.$video.buffered.length>=1&&this.$video.buffered.end(0)>1)){var e=this.$video.buffered.end(0)-1;this.$video.currentTime=e}return this.$video.play()},i.pause=function(){this.$video.pause()},i.setVolume=function(e){this.$video.muted&&(this.$video.muted=!1),this._volume=+(e||0),0===this._volume&&(this.$video.muted=!0),this.$video.volume=this._volume},i.destroy=function(){this.$video&&this.$video.pause(),this._hls&&(this._hls.destroy(),this._hls=null),e.prototype.destroy.call(this)},i._onEvent=function(){var e;(e=this).$video&&(e.$video.addEventListener("canplay",(function(){e.event.emit("canplay")})),e.$video.addEventListener("loadeddata",(function(){e.event.emit("loadeddata")})),e.$video.addEventListener("volumechange",(function(){e.event.emit("volumechange",{data:e.$video.volume})})),e.$video.addEventListener("waiting",(function(){e.event.emit("waiting")})),e.$video.addEventListener("timeupdate",(function(){var t;null==(t=e.event)||t.emit("timeupdate")})),e.$video.addEventListener("seeking",(function(){e.event.emit("seeking",{data:e.$video.currentTime})})),e.$video.addEventListener("seeked",(function(){e.event.emit("seeked")})),e.$video.addEventListener("abort",(function(){e.event.emit("abort")})),e.$video.addEventListener("error",(function(){var t;null==(t=e.event)||t.emit("error",{data:e.$video.error})})),e.$video.addEventListener("ended",(function(){e.event.emit("ended")})))},we(t,[{key:"volume",get:function(){return this._volume},set:function(e){this.setVolume(e)}}]),t}(ne);var Se="wasm_loaded",Le="wasm_failed",be="init";function Re(e,t){return Re=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Re(e,t)}var De=function(e){function t(t){var i;return void 0===t&&(t={}),i=e.call(this,t)||this,t.url=s(null==t?void 0:t.url,["h264","h265"]),function(e,t){if(((null==t?void 0:t.volume)||0)>1?e._volume=1:((null==t?void 0:t.volume)||0)<=0?e._volume=0:e._volume=+((null==t?void 0:t.volume)||0),t.volume=e._volume,e.options=a({},te,t),"string"!=typeof e.options.id)throw new Error("id is required!");e.logger=o(e.options.loggerOptions),e.event=new l,e.logger.log("HlsPlayer version: ",Ae.version),e.logger.log("HlsPlayer options: ",e.options),e.options.logger=e.logger}(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(i),t),i._containerClassName=ee+"-container",i._render(),i}!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Re(e,t)}(t,e);var i=t.prototype;return i._render=function(){this.$container.classList.add(this._containerClassName)},i.destroy=function(){this.$container&&(this.$container.classList.remove(this._containerClassName),this.$container.innerHTML="",this.$container=null)},t}(e);function Ee(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e=!0),this.playParam={durationMs:0,fps:0,sampleRate:0,size:{width:0,height:0},audioNone:e,videoCodec:R},!I())throw new Error("Browser not support WebAssembly!");this._onWorkerMessage()},i.play=function(){if(me.send(1,{name:"play"}),null===this.player)return Promise.resolve();if(this.playParam.videoCodec===R){var e={seekPos:0,isLive:this.options.isLive,accurateSeek:!0,seekEvent:!1,realPlay:!0};return this.player.play(e)}return this.player.play()},i.pause=function(){return me.send(1,{name:"pause"}),null!==this.player&&(this.player.pause(),!0)},i.destroy=function(){var t,i;return me.send(1,{name:"destroy"}),void 0!==this.player&&null!==this.player&&(this.playParam.videoCodec===R&&this._m3u8Obj&&(this._m3u8Obj.destroy(),this._m3u8Obj=null),this.player.destroy(),this._decoderWorker&&(this._decoderWorker.postMessage(V(z)),this._decoderWorker.terminate(),this._decoderWorker=null),this.logger.log("destroy"),null==(i=this.event)||null==(t=i.emit)||t.call(i,"destroy"),this.player=null,e.prototype.destroy.call(this),!0)},i.isPlaying=function(){return null!==this.player&&this.player.isPlayingState()},i.setVolume=function(e){var t;(e=+e)>1||e<0?this.logger.warn("volume volume value 0.0 ~ 1.0!"):((t=this).player||(t.event.emit("playerIsNull"),t.logger.warn("Player instance does not exist!"),0))&&(this.player.setVolume(e),this.event.emit("volumeChange",{data:e}))},i.getVersion=function(){return me.send(1,{name:"getVersion"}),"0.1.0-beta.1"},i._m3u8Entry=function(){var e=this;this._m3u8Obj=new Te({logger:this.logger,decoderWorker:this._decoderWorker,event:this.event}),this._m3u8Obj.bindReady(this),this._m3u8Obj.onFinished=function(e,t){},this._m3u8Obj.onCacheProcess=function(t){e.options.isLive||null==e.onCacheProcess||e.onCacheProcess.call(e,t)},this._m3u8Obj.onDemuxed=this._checkPlayer.bind(this),this._m3u8Obj.onSamples=this._hlsOnSamples.bind(this),this._m3u8Obj.demux(this.url)},i._checkPlayer=function(e,t){var i=this;if(null==i.player){var n,s,r;if(!(null==i||null==(n=i._m3u8Obj)?void 0:n.isHevcParam)||t)return null==i||null==(r=i._m3u8Obj)||null==(s=r.destroy)||s.call(r),i._m3u8Obj=null,this._decoderWorker.terminate(),this._decoderWorker=null,void(i.player=new xe(ke({},this.options,{event:this.event,logger:this.logger})));var o=i._m3u8Obj.getACodec(),a=i._m3u8Obj.getFPS(),l=i._m3u8Obj.getSampleRate(),u=i._m3u8Obj.getSize(),h=!1;h=i._m3u8Obj.getSampleChannel()<=0||""===o,i._softPlayer(0,a,l,u,h)}},i._hlsOnSamples=function(e,t){var i,n,s,r=this;if(t.video)null==(s=r.player)||null==(n=s.appendHevcFrame)||n.call(s,t);else if(!(null==(i=r._m3u8Obj)?void 0:i.audioNone)){var o,a;null==(a=r.player)||null==(o=a.appendAACFrame)||o.call(a,t)}},i._onWorkerMessage=function(){var e=this,i=this;this._decoderWorker.onmessage=function(n){var s=n.data;switch(s.cmd){case j:t.__HLS_WASM_DecoderState__=0;break;case Y:t.__HLS_WASM_DecoderState__=1,e.logger.log("Wasm already init over!"),i.event.emit(Se),i._decoderWorker.postMessage(V("registerWasmPlayer")),i._m3u8Entry();break;case H:t.__HLS_WASM_DecoderState__=-1,e.logger.error("Wasm init failed!",s),i.event.emit(Le,s),me.send("wasm",{name:"wasm loading failed"}),i._checkPlayer(!0)}}},i._softPlayer=function(e,t,i,n,s,r){var o,a,l=this;void 0===s&&(s=!1),void 0===r&&(r=null);var u,h=this;(this.playParam.durationMs=e,this.playParam.fps=t,this.playParam.sampleRate=i,this.playParam.size=n,this.playParam.audioNone=s,this.playParam.videoCodec=r||R,this.logger.log("this.playParam: ",this.playParam),this.logger.log("start init soft player"),this.player=new ae(ke({},h.options,{sampleRate:i,fps:t,appendHevcType:y,fixed:!1,id:this.options.id,audioNone:s,videoCodec:r,logger:this.logger,event:this.event,decoderWorker:this._decoderWorker})),this.player.onPlayingTime=function(e){var t;null==h||null==(t=h.onPlayTime)||t.call(h,e)},this.player.onPlayingFinish=function(){var e,t;(l.pause(),null!=l.onPlayFinish)&&(null==(t=l)||null==(e=t.onPlayFinish)||e.call(t))},this.player.onLoadCache=function(){var e,t;null==(t=l)||null==(e=t.onLoadCache)||e.call(t)},this.player.onLoadCacheFinished=function(){var e,t;null==(t=l)||null==(e=t.onLoadCacheFinished)||e.call(t)},null==(o=h.player)||o.setDurationMs(e),null==(a=h.player)||a.setFrameRate(t),null!=h.onReadyShowDone)&&(null==h||null==(u=h.onReadyShowDone)||u.call(h));this.event.emit("parsed"),this.player&&this.options.autoPlay&&this.play()},t.supportType=function(e){if(me.send(1,{name:"supportType",options:e}),"hls"===e.type)return!0;if(e.url){var t=e.url;t.startsWith("http://")||t.startsWith("https://")||(t=/^\/\//.test(t)?"http:"+t:location.origin+location.pathname+t);try{return/\.m3u8$/i.test(new URL(t).pathname)}catch(e){}}return!1},Ee(t,[{key:"volume",get:function(){return this.player?this.player.volume:this.options.volume},set:function(e){e=+e,this.setVolume(e)}}]),t}(De);Ae.__HLS_WASM_DecoderState__=0,Ae.version="0.1.0-beta.1";export{Ae as default}; +import e,{Video as t}from"@ezuikit/player-base";import i from"@ezuikit/utils-collect";import n from"hls.js";import{addVc as s,getStaticPath as r}from"@ezuikit/utils-tools";import o from"@ezuikit/utils-logger";import{merge as a}from"lodash-es";import l from"eventemitter3";var u=1,h=2,c=3,d="aac",p="h265",f="hevc",m="m3u8",v="hls",g=0,y=1,_=600,T=400,w=30,P=40,C=!1,x=44100,S=20,L="ONCE",b="SWAP",R=0,D=265,E=1001,k=1002,M=1003;var A,I=function(){return window.WebAssembly&&"object"==("undefined"==typeof WebAssembly?"undefined":(e=WebAssembly)&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e);var e};function B(){return(new Date).getTime()}var F=window.AudioContext||(null==(A=window)?void 0:A.webkitAudioContext),N=function(){function e(e){var t=this;this.options={sampleRate:e.sampleRate||x,appendType:e.appendType||g,playMode:e.playMode||b,isLive:e.isLive},this.logger=null==e?void 0:e.logger,this.sourceChannel=-1,this.audioCtx=new F({latencyHint:"interactive",sampleRate:e.sampleRate}),this.gainNode=null,this.sourceList=[],this.startStatus=!1,this.sampleQueue=[],this.nextBuffer=null,this.playTimestamp=0,this.playStartTime=0,this.durationMs=-1,this.volume=e.volume||0,this.onLoadCache=null,this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList[0].onended=function(){t.swapSource(0,1)},this.sourceList[1].onended=function(){t.swapSource(1,0)},this.gainNode=this.audioCtx.createGain(),this.gainNode.gain.value=this.volume,this.gainNode.connect(this.audioCtx.destination),this.runNextBuffer()}var t=e.prototype;return t.resetStartParam=function(){this.playTimestamp=0,this.playStartTime=0},t.setOnLoadCache=function(e){this.onLoadCache=e},t.setDurationMs=function(e){void 0===e&&(e=-1),this.durationMs=e},t.setVolume=function(e){void 0===e&&(e=0),this.volume=e,this.gainNode.gain.value=e},t.getAlignVPTS=function(){return this.playTimestamp+(B()-this.playStartTime)/1e3},t.swapSource=function(e,t){if(void 0===e&&(e=-1),void 0===t&&(t=-1),!this.startStatus)return null;if(e<0||e>=this.sourceList.length)return null;if(t<0||t>=this.sourceList.length)return null;try{this.sourceChannel===e&&null!==this.sourceList[e]&&(this.sourceList[e].disconnect(this.gainNode),this.sourceList[e]=null)}catch(t){this.logger.error("[DEFINE ERROR] this audioCore disconnect source Index:"+e+" error happened!",t)}(this.sourceChannel=t,-2===this.decodeSample(t,e)&&this.options.isLive)&&(this.getAlignVPTS()>=this.durationMs/1e3-.04?this.pause():null==this||this.onLoadCache());return null},t.addSample=function(e){return void 0===e&&(e=null),!(null==e||!e||void 0===e)&&(0===this.sampleQueue.length&&(this.seekPos=null==e?void 0:e.pts),this.sampleQueue.push(e),!0)},t.runNextBuffer=function(){var e=this;window.setInterval((function(){if(!(null!=e.nextBuffer||e.sampleQueue.length=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){s.swapSource(e,t)}),0===this.sampleQueue.length)return this.options.isLive?(this.sourceList[e].connect(this.gainNode),this.sourceList[e].startState||null==(n=this.sourceList[e])||null==(i=n.start)||i.call(n),this.sourceList[e].onended=function(){s.swapSource(e,t)},this.sourceList[e].stop(),0):-2;if(this.sourceList[e].buffer)return this.swapSource(e,t),0;if(null==this.nextBuffer||this.nextBuffer.data.length<1){var r,o,a=this.sourceList[e];return a.connect(this.gainNode),(null==a?void 0:a.startState)||null==(o=this.sourceList[e])||null==(r=o.start)||r.call(o),a.startState=!0,a.stop(),1}var l=this.nextBuffer.data.buffer;this.playTimestamp=this.nextBuffer.pts,this.playStartTime=B();try{this.audioCtx.decodeAudioData(l,(function(t){var i,n;null!==s.sourceList[e]&&(s.sourceList[e].buffer=t,s.sourceList[e].connect(s.gainNode),s.sourceList[e].startState||null==(n=s.sourceList[e])||null==(i=n.start)||i.call(n),s.sourceList[e].startState=!0)}),(function(e){s.logger.error("Error audioCore with decoding audio data",e)}))}catch(e){return this.nextBuffer=null,this.logger.log("decodeAudioData error",e),-3}return this.nextBuffer=null,0},t.decodeWholeSamples=function(e){var t=this;if(void 0===e&&(e=-1),this.sourceChannel=e,e<0||e>=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){}),0===this.sampleQueue.length)return-2;for(var i=null,n=null,s=0;s",e)}},e}(),O=function(){function e(e){this.limit=e.limit||200,this.logger=null==e?void 0:e.logger,this.yuvCache=[]}var t=e.prototype;return t.appendCacheByCacheYuv=function(e){return this.yuvCache.push(e),this.yuvCache.length>=this.limit?(this.shiftYuv(),h):u},t.getState=function(){return this.yuvCache.length<=0?c:this.yuvCache.length>=this.limit?h:u},t.cleanPipeline=function(){this.yuvCache=[],this.yuvCache.length=0},t.shiftYuv=function(){return this.yuvCache.length<=0?null:this.yuvCache.shift()},e}(),U=function(){function e(e,t,i,n,s,r){this.pts=e,this.width=t,this.height=i,this.imageBufferY=n,this.imageBufferB=s,this.imageBufferR=r}return e.prototype.setYuv=function(e,t,i,n,s,r){this.pts=e,this.width=t,this.height=i,this.imageBufferY=n,this.imageBufferB=s,this.imageBufferR=r},e}(),$=function(){function e(e){this.gl=e,this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)}var t=e.prototype;return t.bind=function(e,t,i){var n=this.gl;n.activeTexture([n.TEXTURE0,n.TEXTURE1,n.TEXTURE2][e]),n.bindTexture(n.TEXTURE_2D,this.texture),n.uniform1i(n.getUniformLocation(t,i),e)},t.fill=function(e,t,i){var n=this.gl;n.bindTexture(n.TEXTURE_2D,this.texture),n.texImage2D(n.TEXTURE_2D,0,n.LUMINANCE,e,t,0,n.LUMINANCE,n.UNSIGNED_BYTE,i)},e}(),W=function(){function e(e,t){this.gl=null,this.gl=e.getContext("webgl")||e.getContext("experimental-webgl"),this.program=this.gl.createProgram();var i=["attribute highp vec4 aVertexPosition;","attribute vec2 aTextureCoord;","varying highp vec2 vTextureCoord;","void main(void) {"," gl_Position = aVertexPosition;"," vTextureCoord = aTextureCoord;","}"].join("\n"),n=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(n,i),this.gl.compileShader(n);var s=["precision highp float;","varying lowp vec2 vTextureCoord;","uniform sampler2D YTexture;","uniform sampler2D UTexture;","uniform sampler2D VTexture;","const mat4 YUV2RGB = mat4","("," 1.1643828125, 0, 1.59602734375, -.87078515625,"," 1.1643828125, -.39176171875, -.81296875, .52959375,"," 1.1643828125, 2.017234375, 0, -1.081390625,"," 0, 0, 0, 1",");","void main(void) {"," gl_FragColor = vec4( texture2D(YTexture, vTextureCoord).x, texture2D(UTexture, vTextureCoord).x, texture2D(VTexture, vTextureCoord).x, 1) * YUV2RGB;","}"].join("\n"),r=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(r,s),this.gl.compileShader(r),this.gl.attachShader(this.program,n),this.gl.attachShader(this.program,r),this.gl.linkProgram(this.program),this.gl.useProgram(this.program),this.gl.getProgramParameter(this.program,this.gl.LINK_STATUS);var o=this.gl.getAttribLocation(this.program,"aVertexPosition");this.gl.enableVertexAttribArray(o);var a=this.gl.getAttribLocation(this.program,"aTextureCoord");this.gl.enableVertexAttribArray(a),this.verticesBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.verticesBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(o,3,this.gl.FLOAT,!1,0,0),this.texCoordBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texCoordBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(a,2,this.gl.FLOAT,!1,0,0),this.gl.y=new $(this.gl),this.gl.u=new $(this.gl),this.gl.v=new $(this.gl),this.gl.y.bind(0,this.program,"YTexture"),this.gl.u.bind(1,this.program,"UTexture"),this.gl.v.bind(2,this.program,"VTexture")}var t=e.prototype;return t.renderFrame=function(e,t,i,n,s){this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.y.fill(n,s,e),this.gl.u.fill(n>>1,s>>1,t),this.gl.v.fill(n>>1,s>>1,i),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4)},t.destroyContext=function(){try{this.gl.deleteProgram(this.program),this.gl.deleteBuffer(this.verticesBuffer),this.gl.deleteBuffer(this.texCoordBuffer),this.gl.deleteTexture(this.gl.y.texture),this.gl.deleteTexture(this.gl.u.texture),this.gl.deleteTexture(this.gl.v.texture),this.gl=null,this.program=null,this.verticesBuffer=null,this.texCoordBuffer=null}catch(e){}},e}(),V=function(e,t){return{cmd:e,data:t}},j="wasmLoading",Y="wasmLoaded",H="wasmFailed",X="videoCallback",Q="decodeCodecContext",z="destroy",G="demuxTsStream",J="demuxCoreReceive",q="readPacket",K="readPacketEnd",Z="mediaInfo",ee="ezui-hls",te={width:600,height:400,volume:0,retry:20,autoPlay:!0,staticPath:"",isLive:!0,loggerOptions:{name:"HLS",level:"INFO",showTime:!0}},ie={disableContextmenu:!0},ne=function(){function e(e){void 0===e&&(e={}),this.options=Object.assign({},ie,e),this.logger=this.options.logger,this.event=this.options.event,this._classVideo=ee+"-video",this._$container=document.getElementById(this.options.id),this._render()}var i=e.prototype;return i._render=function(){var e,i;if("video"===this.options.nodeName)this.$video=new t(this._$container,this.options).$video;else{var n;if(this.$video=document.createElement(this.options.nodeName),this._$container.innerHTML="",this._$container.appendChild(this.$video),this.options.disableContextmenu)null==(n=this.$video)||n.addEventListener("contextmenu",(function(e){return e.preventDefault(),!1}));this.$video.classList.add(this._classVideo),this.$video.style.cssText+="object-fit: contain; z-index:1;"}null==(i=this.event)||null==(e=i.emit)||e.call(i,"rendered")},i._isVideo=function(){return"VIDEO"===this.$video.nodeName},i.destroy=function(){if(this.$video&&this._$container&&this.$video){try{this._$container.removeChild(this.$video)}catch(e){}this.$video=null}},e}();function se(e,t,i){return t&&function(e,t){for(var i=0;i=1&&(null==(i=e)||null==(t=i.onLoadCacheFinished)||t.call(i),window.clearInterval(e.cacheInterval),e.cacheInterval=null,e.isCaching===k&&e.play(e.playParams),e.isCaching=E)}),40))}},i._playFunc=function(){var e=!1;if(B()-this.calculateStartTime>=this.frameTime-this.preCostTime){e=!0;var t=!0;if(this.calculateStartTime=B(),this.options.audioNone)this.playFrameYUV(t);else{this.fix_poc_err_skip>0&&(this.fix_poc_err_skip--,t=!1);var i=this.videoPTS-this.audio.getAlignVPTS();if(i>0)return void(this.playParams.seekEvent&&!this.options.audioNone&&this.audio.setVolume(0));if(t){if(!(t=-1*i<=1*this.frameTimeSec)){for(var n=parseInt(i/this.frameTimeSec+""),s=0;s",e,n,i),n>=i&&(t.playFrameYUV(!0),i+=1)}),this.frameTime||5)}else(this.videoPTS>=this.playParams.seekPos&&!this.isNewSeek||0===this.playParams.seekPos||0===this.playParams.seekPos)&&(this.frameTime=1e3/this.options.fps,this.frameTimeSec=this.frameTime/1e3,this.options.audioNone||this.audio.play(),this._volume=this.options.audioNone?0:this.audio.volume,this.loop=window.setInterval((function(){var e=B();t._playFunc(),t.preCostTime=B()-e}),this.frameTime||5));return this.setVolume(this._volume),Promise.resolve()},i.stop=function(){this.destroy(),this.stream=new Uint8Array},i.destroy=function(){return void 0!==this.gl&&null!==this.gl&&(this.gl.destroyContext(),this.gl=null),this.endAudio(),this.cacheLoop&&window.clearInterval(this.cacheLoop),this.cacheLoop=null,this.loop&&window.clearInterval(this.loop),this.loop=null,this.pause(),this.decoderWorker.postMessage(V(z)),this.stream=null,this.frameList=null,this.durationMs=-1,this.videoPTS=0,this.isPlaying=!1,this.$video.remove(),!0},i.nextNalu=function(e){if(void 0===e&&(e=1),this.stream.length<=4)return!1;for(var t=-1,i=0;i=this.stream.length){if(-1===t)return!1;var n=this.stream.subarray(t);return this.stream=new Uint8Array,n}var s="0 0 1"===this.stream.slice(0,3).join(" "),r="0 0 0 1"===this.stream.slice(0,4).join(" ");if(s||r){if(-1===t)t=i;else{if(e<=1){var o=this.stream.subarray(t,i);return this.stream=this.stream.subarray(i),o}e-=1}i+=3}}return!1},i.playFrameYUV=function(e){void 0===e&&(e=!1);var t=this.cacheYuvBuf.shiftYuv();if(!t)return this.noCacheFrame+=1,e&&!this.playParams.seekEvent&&this.loadCache(),!1;this.noCacheFrame=0;var i=t.pts;return this.videoPTS=i,this.drawImage(t.width,t.height,t.imageBufferY,t.imageBufferB,t.imageBufferR),t=null,e&&!this.playParams.seekEvent&&this.isPlaying&&this.loadCache(),!0},i.drawImage=function(e,t,i,n,s){this.$video.width===e&&this.$video.height===t||(this.$video.width=e,this.$video.height=t),this.isCheckDisplay||this.checkDisplaySize(e,t);var r=e*t,o=e/2*(t/2),a=new Uint8Array(r+2*o);a.set(i,0),a.set(n,r),a.set(s,r+o),this.gl.renderFrame(i,n,s,e,t),a=null},i.checkDisplaySize=function(e,t){var i,n=e/(null==(i=this.options)?void 0:i.width)>t/this.options.height,s=+(this.options.width/e).toFixed(2),r=+(this.options.height/t).toFixed(2),o=n?s:r,a=this.options.fixed,l=a?this.options.width:parseInt(e*o+""),u=a?this.options.height:parseInt(t*o+"");return this.$video.style.maxWidth="100%",this.$video.style.maxHeight="100%",this.options.width/this.options.height>=1&&l/u>=1?this.$video.style.width="100%":this.$video.style.height="100%",this.isCheckDisplay=!0,[l,u]},i._onWorkerMessage=function(){var e=this;this.decoderWorker.onmessage=function(t){var i=t.data;if(i.cmd===X){var n=i.data,s=n.ptsSec,r=n.strideY,o=n.height;n.width;var a=n.bufY,l=n.bufU,u=n.bufV,h=new U(s,r,o,a,l,u);e.cacheYuvBuf.appendCacheByCacheYuv(h),h=null}}},i.initVideoAndAudio=function(){this.$video.width=this.options.width,this.$video.height=this.options.height,this.gl=new W(this.$video,{preserveDrawingBuffer:!1}),this.options.audioNone||(this.audio=new N({logger:this.logger,sampleRate:this.options.sampleRate,appendType:this.options.appendHevcType,volume:this.options.volume,isLive:this.options.isLive})),this.isPlayLoadingFinish=1},se(t,[{key:"volume",get:function(){var e;return(null==(e=this.audio)?void 0:e.volume)||this._volume},set:function(e){this.setVolume(e)}}]),t}(ne),le=[/#EXT-X-PROGRAM-DATE-TIME.+\n/g],ue={lineDelimiter:/\r?\n/,extensionHeader:"#EXTM3U",tagPrefix:"#EXT",segmentPrefix:"#EXTINF",segmentParse:/^#EXTINF: *([0-9.]+)(, *(.+?)?)?$/,tagParse:/^#EXT-X-([A-Z-]+)(:(.+))?$/,version:"VERSION",allowCache:"ALLOW-CACHE",combined:"COMBINED",endList:"ENDLIST",targetDuration:"TARGETDURATION",mediaSequence:"MEDIA-SEQUENCE",discontinuity:"DISCONTINUITY",streamInf:"STREAM-INF",isComment:function(e){return e&&"#"===e[0]&&!e.startsWith(ue.tagPrefix)},isBlank:function(e){return""===e},canStrip:function(e){return ue.isBlank(e)||ue.isComment(e)},defaultMinDur:99999},he=function(){function e(e){this._retry=10,this.logger=null==e?void 0:e.logger,this.initState=!0,this.controller=new AbortController,this._slices=[],this._type=v,this._preURI="",this.duration=-1,this.onTransportStream=null,this.onFinished=null}var t=e.prototype;return t.destroy=function(){this.initState=!1},t.fetchM3u8=function(e){var t=this,i=this;if(this.initState){var n=function(t){return new Promise((function(i,n){var s=new XMLHttpRequest;s.open("GET",t),s.onload=function(){this.status>=200&&this.status<300&&(t!==this.responseURL?(e=this.responseURL,i(this.responseURL)):i(""))},s.onreadystatechange=function(){4===s.readyState&&200===s.status&&i(s.responseText)},s.onerror=function(){n(new Error("Network error."))},s.send()}))};n(e).then((function(s){if(t._retry=10,i._uriParse(e)){var r=i._m3u8Parse(s);if("number"==typeof r&&r>=0)var o=setTimeout((function(){i.fetchM3u8(e),clearTimeout(o)}),200*r)}return n=null,s})).catch((function(s){if(t.logger.error("[M3u8Base] fetch m3u8 url Error ==> ",s),n=null,t._retry>=1)var r=setTimeout((function(){i.fetchM3u8(e),clearTimeout(r)}),500);t._retry--}))}},t._uriParse=function(e){this._preURI="";var t=e.split("://"),i=null,n=null;if(t.length<1)return this.logger.log("HLS URI ERROR : "+e),!1;t.length>1?(i=t[0],n=t[1].split("/"),this._preURI=i+"://"):n=t[0].split("/");for(var s=0;sc&&(s=c);var d,p=n[o+=1],f=null;if(p.includes("http"))f=p;else{if("/"===p[0]){var v=this._preURI.split("//"),g=v[v.length-1].split("/");this._preURI=v[0]+"//"+g[0]}f=this._preURI+p}if(!this._slices.includes(f))this._slices.push(f),null==this||null==(d=this.onTransportStream)||d.call(this,f,c)}}}this._slices.length>500&&(this._slices=this._slices.slice(-500));var y={type:this._type,duration:-1};return null==this||null==(t=this.onFinished)||t.call(this,y),s},t._readTag=function(e){var t=ue.tagParse.exec(e);return null!==t?{key:t[1],value:t[3]}:null},e}(),ce=function(){function e(e){this.sampleRate=e.sampleRate,this.frameDurMs=Math.floor(1024e3/this.sampleRate),this.frameDurSec=this.frameDurMs/1e3}var t=e.prototype;return t.updateOptions=function(e){this.sampleRate=e.sampleRate,this.frameDurMs=1024e3/this.sampleRate,this.frameDurSec=this.frameDurMs/1e3},t._getPktLen=function(e,t,i){return((3&e)<<11)+(t<<3)+((224&i)>>5)},t.sliceAACFrames=function(e,t){for(var i=[],n=e,s=0;s>4==15){var r=this._getPktLen(t[s+3],t[s+4],t[s+5]);if(r<=0)continue;var o=t.subarray(s,s+r),a=new Uint8Array(r);a.set(o,0),i.push({ptime:n,data:a}),n+=this.frameDurSec,s+=r}else s+=1;return i},e}(),de="M3U8",pe="TS",fe="FETCH",me=function(){function e(){}return e.init=function(t){e.collect=new i(t)},e.send=function(t,i){var n,s;null==(s=e.collect)||null==(n=s.send)||n.call(s,{action:t,logInfo:i})},e.updateParams=function(t){e.collect.updateExtendsInfo(t)},e}();function ve(e,t,i){return t&&function(e,t){for(var i=0;i ",e),s=null})).catch((function(n){var s,r,o,a;t.logger.error("[MpegTsDemux] demuxerTsInit ERROR fetch ERROR ==> ",n),null==(r=t.event)||null==(s=r.emit)||s.call(r,pe,{data:n}),null==(a=t.event)||null==(o=a.emit)||o.call(a,fe,{data:n,type:pe}),null==i||i.onDemuxedFailed(n,e),me.send(100,{url:e,msg:"fetch error"})}))},t._demuxCore=function(e,t){e.length<=0||this.decoderWorker.postMessage(V(G,{buff:e,tsUrl:t}))},t.readMediaInfo=function(){return this.mediaInfo},t.readAudioNone=function(){var e;return null==(e=this.mediaInfo)?void 0:e.audioNone},t.isHEVC=function(){return this.mediaInfo.vCodec===f||this.mediaInfo.vCodec===p},t.destroy=function(){this.controller&&this.controller.abort(),this.controller=null,this.mediaInfo=null,this.aacDec=null},t._onWorkerMessage=function(){var e=this;e.logger.log("[demuxer] register _onWorkerMessage"),e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case Z:var n,s;if(e.mediaInfo=i.data,e.mediaInfo)null==(s=e.event)||null==(n=s.emit)||n.call(s,"mediaInfo",e.mediaInfo);break;case J:var r;if(e.mediaInfo.vCodec)null==e.aacDec?e.aacDec=new ce(e.mediaInfo):e.aacDec.updateOptions(e.mediaInfo),null==e||null==(r=e.onDemuxed)||r.call(e)}}))},ve(e,[{key:"vCodec",get:function(){return this.mediaInfo.vCodec}}]),e}(),_e=function(){function e(e,t,i,n){this.pts=e,this.dts=e,this.isKey=t,this.data=i,this.video=n}return e.prototype.setFrame=function(e,t,i,n){this.pts=e,this.isKey=t,this.data=i,this.video=n},e}(),Te=function(){function e(e){this.logger=null==e?void 0:e.logger,this.event=null==e?void 0:e.event,this.decoderWorker=e.decoderWorker,this.m3u8Base=new he(e),this.mpegTsDemux=new ye(e),this.tsList=[],this._startTime=0,this._aStartTime=0,this.lockWait={state:!1,lockMember:{dur:0}},this._timerFeed=null,this.seekPos=-1,this.vPreFramePTS=0,this.aPreFramePTS=0,this.audioNone=!1,this.isHevcParam=!1,this.vCodec="",this.aCodec=null,this.aChannel=0,this.durationMs=-1,this.fps=-1,this.sampleRate=-1,this.size={width:-1,height:-1},this.mediaInfo=null,this._onWorkerMessage(),this.onReadyOBJ=null,this.onFinished=null,this.onDemuxed=null,this.onSamples=null,this.onCacheProcess=null}var t=e.prototype;return t.getCachePTS=function(){return Math.max(this.vPreFramePTS,this.aPreFramePTS)},t.demux=function(e){var t=this,i=this;this.vPreFramePTS=0,this.aPreFramePTS=0,this.m3u8Base.onTransportStream=function(e,t){i.tsList.push({streamURI:e,streamDur:t}),i.lockWait.state=!1},this.m3u8Base.onFinished=function(e){var t;e.type===m?i.durationMs=1e3*e.duration:i.durationMs=-1,null==i||null==(t=i.onFinished)||t.call(i,i.onReadyOBJ,e)},this.mpegTsDemux.onDemuxedFailed=function(e,n){t.logger.error("[M3u8] onDemuxedFailed: ",e,n),i.lockWait.state=!1},this.mpegTsDemux.onDemuxed=function(){var e;t.logger.log("[M3u8] onDemuxed"),null==i.mediaInfo&&(i.mediaInfo=i.mpegTsDemux.readMediaInfo(),t.logger.log("[M3u8] mediaInfo: ",i.mediaInfo),i.isHevcParam=i.mpegTsDemux.isHEVC(),i.vCodec=i.mpegTsDemux.vCodec,i.aCodec=i.mediaInfo.aCodec,i.aChannel=i.mediaInfo.sampleChannel,i.fps=i.mediaInfo.fps,i.sampleRate=i.mediaInfo.sampleRate,(null===i.aCodec||""===i.aCodec||i.aChannel<=0)&&(i.audioNone=!0),i.mediaInfo.width>0&&i.mediaInfo.height>0&&(t.size.width=t.mediaInfo.width,t.size.height=t.mediaInfo.height)),null==i||null==(e=i.onDemuxed)||e.call(i,i.onReadyOBJ),i.mpegTsDemux&&t.decoderWorker.postMessage(V(q))},this.mpegTsDemux.onReady=function(){i._fetchM3u8AndIntervalTs(e)},this._timerTsWasm=window.setInterval((function(){1===Ae.__HLS_WASM_DecoderState__&&(i._fetchM3u8AndIntervalTs(e),window.clearInterval(i._timerTsWasm),i._timerTsWasm=null)}),500)},t._fetchM3u8AndIntervalTs=function(e){var t=this,i=this;this.logger.log("[M3u8] start fetch m3u8 url"),i.m3u8Base.fetchM3u8(e),i._timerFeed=window.setInterval((function(){if(i.tsList.length>0&&!i.lockWait.state)try{var e=i.tsList.shift();if(null!=e){var n=e.streamURI,s=e.streamDur;i.lockWait.state=!0,i.lockWait.lockMember.dur=+s,i.mpegTsDemux.demuxURL(n)}else t.logger.error("[M3u8] onTsReady need wait ")}catch(e){var r,o,a,l;t.logger.error("[M3u8] onTsReady ERROR:",e),null==(o=t.event)||null==(r=o.emit)||r.call(o,de,{data:e}),null==(l=t.event)||null==(a=l.emit)||a.call(l,fe,{data:e,type:de}),i.lockWait.state=!1}}),50)},t.destroy=function(){var e;this.m3u8Base&&(null==(e=this.m3u8Base)||e.destroy(),this.m3u8Base=null);this._timerFeed&&(window.clearInterval(this._timerFeed),this._timerFeed=null),this.mpegTsDemux&&(this.mpegTsDemux.destroy(),this.mpegTsDemux=null)},t.bindReady=function(e){this.onReadyOBJ=e},t.getACodec=function(){return this.aCodec},t.getVCodec=function(){return this.vCodec},t.getDurationMs=function(){return this.durationMs},t.getFPS=function(){return this.fps},t.getSampleRate=function(){return this.sampleRate},t.getSampleChannel=function(){return this.aChannel},t.getSize=function(){return this.size},t._onWorkerMessage=function(){this.logger.log("[M3U8] register _onWorkerMessage");var e=this;e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case q:var n,s=i.data,r=s.type,o=s.pts,a=s.ptime,l=s.keyframe,u=s.data,h=s.layer;if(u=new Uint8Array(u),1===r&&e.mpegTsDemux.mediaInfo.aCodec===d&&(u=e.mpegTsDemux.aacDec.sliceAACFrames(a,u)),0===r){var c=function(e){var t=e.nalu,i=e.vlc.vlc;null==t.vps&&(t.vps=new Uint8Array);var n=new Uint8Array(t.vps.length+t.sps.length+t.pps.length+t.sei.length+i.length);return n.set(t.vps,0),n.set(t.sps,t.vps.length),n.set(t.pps,t.vps.length+t.sps.length),n.set(t.sei,t.vps.length+t.sps.length+t.pps.length),n.set(i,t.vps.length+t.sps.length+t.pps.length+t.sei.length),n}(h),p=o,f=new _e(p,1===l,c,!0);e.vPreFramePTS=p,null==e||e.onSamples(e.onReadyOBJ,f)}else if(1===r){var m;if("aac"===(null==(m=e.mediaInfo)?void 0:m.aCodec)){for(var v=u,g=0;g0&&(e.$video.volume=e._options.volume)}),1e3)})),e.event.emit("parsed")}))}))}else if(this.$video.canPlayType("application/vnd.apple.mpegurl")){this.logger.log("Browser support application/vnd.apple.mpegurl : ",this.$video.canPlayType("application/vnd.apple.mpegurl")),this.$video.src=this._options.url;var i=!1;this.$video.addEventListener("canplay",(function(){!i&&e._options.autoPlay&&setTimeout((function(){e.$video.play().then((function(){e.logger.log("autoPlay video!"),setTimeout((function(){e._options.volume>0&&e.setVolume(e._options.volume)}),1e3),i=!0}))}),200)}))}else this.logger.warn("Browser not support hls")},i.isPlayingState=function(){return!this.$video.paused},i.play=function(){if(this.isPlayingState())return Promise.resolve();if(this._options.isLive&&(this.$video.buffered.length>=1&&this.$video.buffered.end(0)>1)){var e=this.$video.buffered.end(0)-1;this.$video.currentTime=e}return this.$video.play()},i.pause=function(){this.$video.pause()},i.setVolume=function(e){this.$video.muted&&(this.$video.muted=!1),this._volume=+(e||0),0===this._volume&&(this.$video.muted=!0),this.$video.volume=this._volume},i.destroy=function(){this.$video&&this.$video.pause(),this._hls&&(this._hls.destroy(),this._hls=null),e.prototype.destroy.call(this)},i._onEvent=function(){var e;(e=this).$video&&(e.$video.addEventListener("canplay",(function(){e.event.emit("canplay")})),e.$video.addEventListener("loadeddata",(function(){e.event.emit("loadeddata")})),e.$video.addEventListener("volumechange",(function(){e.event.emit("volumechange",{data:e.$video.volume})})),e.$video.addEventListener("waiting",(function(){e.event.emit("waiting")})),e.$video.addEventListener("timeupdate",(function(){var t;null==(t=e.event)||t.emit("timeupdate")})),e.$video.addEventListener("seeking",(function(){e.event.emit("seeking",{data:e.$video.currentTime})})),e.$video.addEventListener("seeked",(function(){e.event.emit("seeked")})),e.$video.addEventListener("abort",(function(){e.event.emit("abort")})),e.$video.addEventListener("error",(function(){var t;null==(t=e.event)||t.emit("error",{data:e.$video.error})})),e.$video.addEventListener("ended",(function(){e.event.emit("ended")})))},we(t,[{key:"volume",get:function(){return this._volume},set:function(e){this.setVolume(e)}}]),t}(ne);var Se="wasm_loaded",Le="wasm_failed",be="init";function Re(e,t){return Re=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Re(e,t)}var De=function(e){function t(t){var i;return void 0===t&&(t={}),i=e.call(this,t)||this,t.url=s(null==t?void 0:t.url,["h264","h265"]),function(e,t){if(((null==t?void 0:t.volume)||0)>1?e._volume=1:((null==t?void 0:t.volume)||0)<=0?e._volume=0:e._volume=+((null==t?void 0:t.volume)||0),t.volume=e._volume,e.options=a({},te,t),"string"!=typeof e.options.id)throw new Error("id is required!");e.logger=o(e.options.loggerOptions),e.event=new l,e.logger.log("HlsPlayer version: ",Ae.version),e.logger.log("HlsPlayer options: ",e.options),e.options.logger=e.logger}(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(i),t),i._containerClassName=ee+"-container",i._render(),i}!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Re(e,t)}(t,e);var i=t.prototype;return i._render=function(){this.$container.classList.add(this._containerClassName)},i.destroy=function(){this.$container&&(this.$container.classList.remove(this._containerClassName),this.$container.innerHTML="",this.$container=null)},t}(e);function Ee(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e=!0),this.playParam={durationMs:0,fps:0,sampleRate:0,size:{width:0,height:0},audioNone:e,videoCodec:R},!I())throw new Error("Browser not support WebAssembly!");this._onWorkerMessage()},i.play=function(){if(me.send(1,{name:"play"}),null===this.player)return Promise.resolve();if(this.playParam.videoCodec===R){var e={seekPos:0,isLive:this.options.isLive,accurateSeek:!0,seekEvent:!1,realPlay:!0};return this.player.play(e)}return this.player.play()},i.pause=function(){return me.send(1,{name:"pause"}),null!==this.player&&(this.player.pause(),!0)},i.destroy=function(){var t,i;return me.send(1,{name:"destroy"}),void 0!==this.player&&null!==this.player&&(this.playParam.videoCodec===R&&this._m3u8Obj&&(this._m3u8Obj.destroy(),this._m3u8Obj=null),this.player.destroy(),this._decoderWorker&&(this._decoderWorker.postMessage(V(z)),this._decoderWorker.terminate(),this._decoderWorker=null),this.logger.log("destroy"),null==(i=this.event)||null==(t=i.emit)||t.call(i,"destroy"),this.player=null,e.prototype.destroy.call(this),!0)},i.isPlaying=function(){return null!==this.player&&this.player.isPlayingState()},i.setVolume=function(e){var t;(e=+e)>1||e<0?this.logger.warn("volume volume value 0.0 ~ 1.0!"):((t=this).player||(t.event.emit("playerIsNull"),t.logger.warn("Player instance does not exist!"),0))&&(this.player.setVolume(e),this.event.emit("volumeChange",{data:e}))},i.getVersion=function(){return me.send(1,{name:"getVersion"}),"0.1.0-beta.2"},i._m3u8Entry=function(){var e=this;this._m3u8Obj=new Te({logger:this.logger,decoderWorker:this._decoderWorker,event:this.event}),this._m3u8Obj.bindReady(this),this._m3u8Obj.onFinished=function(e,t){},this._m3u8Obj.onCacheProcess=function(t){e.options.isLive||null==e.onCacheProcess||e.onCacheProcess.call(e,t)},this._m3u8Obj.onDemuxed=this._checkPlayer.bind(this),this._m3u8Obj.onSamples=this._hlsOnSamples.bind(this),this._m3u8Obj.demux(this.url)},i._checkPlayer=function(e,t){var i=this;if(null==i.player){var n,s,r;if(!(null==i||null==(n=i._m3u8Obj)?void 0:n.isHevcParam)||t)return null==i||null==(r=i._m3u8Obj)||null==(s=r.destroy)||s.call(r),i._m3u8Obj=null,this._decoderWorker.terminate(),this._decoderWorker=null,void(i.player=new xe(ke({},this.options,{event:this.event,logger:this.logger})));var o=i._m3u8Obj.getACodec(),a=i._m3u8Obj.getFPS(),l=i._m3u8Obj.getSampleRate(),u=i._m3u8Obj.getSize(),h=!1;h=i._m3u8Obj.getSampleChannel()<=0||""===o,i._softPlayer(0,a,l,u,h)}},i._hlsOnSamples=function(e,t){var i,n,s,r=this;if(t.video)null==(s=r.player)||null==(n=s.appendHevcFrame)||n.call(s,t);else if(!(null==(i=r._m3u8Obj)?void 0:i.audioNone)){var o,a;null==(a=r.player)||null==(o=a.appendAACFrame)||o.call(a,t)}},i._onWorkerMessage=function(){var e=this,i=this;this._decoderWorker.onmessage=function(n){var s=n.data;switch(s.cmd){case j:t.__HLS_WASM_DecoderState__=0;break;case Y:t.__HLS_WASM_DecoderState__=1,e.logger.log("Wasm already init over!"),i.event.emit(Se),i._decoderWorker.postMessage(V("registerWasmPlayer")),i._m3u8Entry();break;case H:t.__HLS_WASM_DecoderState__=-1,e.logger.error("Wasm init failed!",s),i.event.emit(Le,s),me.send("wasm",{name:"wasm loading failed"}),i._checkPlayer(!0)}}},i._softPlayer=function(e,t,i,n,s,r){var o,a,l=this;void 0===s&&(s=!1),void 0===r&&(r=null);var u,h=this;(this.playParam.durationMs=e,this.playParam.fps=t,this.playParam.sampleRate=i,this.playParam.size=n,this.playParam.audioNone=s,this.playParam.videoCodec=r||R,this.logger.log("this.playParam: ",this.playParam),this.logger.log("start init soft player"),this.player=new ae(ke({},h.options,{sampleRate:i,fps:t,appendHevcType:y,fixed:!1,id:this.options.id,audioNone:s,videoCodec:r,logger:this.logger,event:this.event,decoderWorker:this._decoderWorker})),this.player.onPlayingTime=function(e){var t;null==h||null==(t=h.onPlayTime)||t.call(h,e)},this.player.onPlayingFinish=function(){var e,t;(l.pause(),null!=l.onPlayFinish)&&(null==(t=l)||null==(e=t.onPlayFinish)||e.call(t))},this.player.onLoadCache=function(){var e,t;null==(t=l)||null==(e=t.onLoadCache)||e.call(t)},this.player.onLoadCacheFinished=function(){var e,t;null==(t=l)||null==(e=t.onLoadCacheFinished)||e.call(t)},null==(o=h.player)||o.setDurationMs(e),null==(a=h.player)||a.setFrameRate(t),null!=h.onReadyShowDone)&&(null==h||null==(u=h.onReadyShowDone)||u.call(h));this.event.emit("parsed"),this.player&&this.options.autoPlay&&this.play()},t.supportType=function(e){if(me.send(1,{name:"supportType",options:e}),"hls"===e.type)return!0;if(e.url){var t=e.url;t.startsWith("http://")||t.startsWith("https://")||(t=/^\/\//.test(t)?"http:"+t:location.origin+location.pathname+t);try{return/\.m3u8$/i.test(new URL(t).pathname)}catch(e){}}return!1},Ee(t,[{key:"volume",get:function(){return this.player?this.player.volume:this.options.volume},set:function(e){e=+e,this.setVolume(e)}}]),t}(De);Ae.__HLS_WASM_DecoderState__=0,Ae.version="0.1.0-beta.2";export{Ae as default}; diff --git a/dist/index.js b/dist/index.js index ac400c5..049f803 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,8 +1,8 @@ /* * -* HlsPlayer.js v0.1.0-beta.1 +* HlsPlayer.js v0.1.0-beta.2 * Copyright (c) 2024-8-1 Ezviz-OpenBiz * . * */ -"use strict";var e=require("@ezuikit/player-base"),t=require("@ezuikit/utils-collect"),i=require("hls.js"),n=require("@ezuikit/utils-tools"),s=require("@ezuikit/utils-logger"),r=require("lodash-es"),o=require("eventemitter3"),a=1,l=2,u=3,h="aac",c="h265",d="hevc",p="m3u8",f="hls",m=0,v=1,g=600,y=400,_=30,T=40,P=!1,w=44100,C=20,x="ONCE",S="SWAP",L=0,b=265,R=1001,D=1002,E=1003;var k,M=function(){return window.WebAssembly&&"object"==("undefined"==typeof WebAssembly?"undefined":(e=WebAssembly)&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e);var e};function A(){return(new Date).getTime()}var I=window.AudioContext||(null==(k=window)?void 0:k.webkitAudioContext),B=function(){function e(e){var t=this;this.options={sampleRate:e.sampleRate||w,appendType:e.appendType||m,playMode:e.playMode||S,isLive:e.isLive},this.logger=null==e?void 0:e.logger,this.sourceChannel=-1,this.audioCtx=new I({latencyHint:"interactive",sampleRate:e.sampleRate}),this.gainNode=null,this.sourceList=[],this.startStatus=!1,this.sampleQueue=[],this.nextBuffer=null,this.playTimestamp=0,this.playStartTime=0,this.durationMs=-1,this.volume=e.volume||0,this.onLoadCache=null,this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList[0].onended=function(){t.swapSource(0,1)},this.sourceList[1].onended=function(){t.swapSource(1,0)},this.gainNode=this.audioCtx.createGain(),this.gainNode.gain.value=this.volume,this.gainNode.connect(this.audioCtx.destination),this.runNextBuffer()}var t=e.prototype;return t.resetStartParam=function(){this.playTimestamp=0,this.playStartTime=0},t.setOnLoadCache=function(e){this.onLoadCache=e},t.setDurationMs=function(e){void 0===e&&(e=-1),this.durationMs=e},t.setVolume=function(e){void 0===e&&(e=0),this.volume=e,this.gainNode.gain.value=e},t.getAlignVPTS=function(){return this.playTimestamp+(A()-this.playStartTime)/1e3},t.swapSource=function(e,t){if(void 0===e&&(e=-1),void 0===t&&(t=-1),!this.startStatus)return null;if(e<0||e>=this.sourceList.length)return null;if(t<0||t>=this.sourceList.length)return null;try{this.sourceChannel===e&&null!==this.sourceList[e]&&(this.sourceList[e].disconnect(this.gainNode),this.sourceList[e]=null)}catch(t){this.logger.error("[DEFINE ERROR] this audioCore disconnect source Index:"+e+" error happened!",t)}(this.sourceChannel=t,-2===this.decodeSample(t,e)&&this.options.isLive)&&(this.getAlignVPTS()>=this.durationMs/1e3-.04?this.pause():null==this||this.onLoadCache());return null},t.addSample=function(e){return void 0===e&&(e=null),!(null==e||!e||void 0===e)&&(0===this.sampleQueue.length&&(this.seekPos=null==e?void 0:e.pts),this.sampleQueue.push(e),!0)},t.runNextBuffer=function(){var e=this;window.setInterval((function(){if(!(null!=e.nextBuffer||e.sampleQueue.length=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){s.swapSource(e,t)}),0===this.sampleQueue.length)return this.options.isLive?(this.sourceList[e].connect(this.gainNode),this.sourceList[e].startState||null==(n=this.sourceList[e])||null==(i=n.start)||i.call(n),this.sourceList[e].onended=function(){s.swapSource(e,t)},this.sourceList[e].stop(),0):-2;if(this.sourceList[e].buffer)return this.swapSource(e,t),0;if(null==this.nextBuffer||this.nextBuffer.data.length<1){var r,o,a=this.sourceList[e];return a.connect(this.gainNode),(null==a?void 0:a.startState)||null==(o=this.sourceList[e])||null==(r=o.start)||r.call(o),a.startState=!0,a.stop(),1}var l=this.nextBuffer.data.buffer;this.playTimestamp=this.nextBuffer.pts,this.playStartTime=A();try{this.audioCtx.decodeAudioData(l,(function(t){var i,n;null!==s.sourceList[e]&&(s.sourceList[e].buffer=t,s.sourceList[e].connect(s.gainNode),s.sourceList[e].startState||null==(n=s.sourceList[e])||null==(i=n.start)||i.call(n),s.sourceList[e].startState=!0)}),(function(e){s.logger.error("Error audioCore with decoding audio data",e)}))}catch(e){return this.nextBuffer=null,this.logger.log("decodeAudioData error",e),-3}return this.nextBuffer=null,0},t.decodeWholeSamples=function(e){var t=this;if(void 0===e&&(e=-1),this.sourceChannel=e,e<0||e>=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){}),0===this.sampleQueue.length)return-2;for(var i=null,n=null,s=0;s",e)}},e}(),F=function(){function e(e){this.limit=e.limit||200,this.logger=null==e?void 0:e.logger,this.yuvCache=[]}var t=e.prototype;return t.appendCacheByCacheYuv=function(e){return this.yuvCache.push(e),this.yuvCache.length>=this.limit?(this.shiftYuv(),l):a},t.getState=function(){return this.yuvCache.length<=0?u:this.yuvCache.length>=this.limit?l:a},t.cleanPipeline=function(){this.yuvCache=[],this.yuvCache.length=0},t.shiftYuv=function(){return this.yuvCache.length<=0?null:this.yuvCache.shift()},e}(),N=function(){function e(e,t,i,n,s,r){this.pts=e,this.width=t,this.height=i,this.imageBufferY=n,this.imageBufferB=s,this.imageBufferR=r}return e.prototype.setYuv=function(e,t,i,n,s,r){this.pts=e,this.width=t,this.height=i,this.imageBufferY=n,this.imageBufferB=s,this.imageBufferR=r},e}(),O=function(){function e(e){this.gl=e,this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)}var t=e.prototype;return t.bind=function(e,t,i){var n=this.gl;n.activeTexture([n.TEXTURE0,n.TEXTURE1,n.TEXTURE2][e]),n.bindTexture(n.TEXTURE_2D,this.texture),n.uniform1i(n.getUniformLocation(t,i),e)},t.fill=function(e,t,i){var n=this.gl;n.bindTexture(n.TEXTURE_2D,this.texture),n.texImage2D(n.TEXTURE_2D,0,n.LUMINANCE,e,t,0,n.LUMINANCE,n.UNSIGNED_BYTE,i)},e}(),U=function(){function e(e,t){this.gl=null,this.gl=e.getContext("webgl")||e.getContext("experimental-webgl"),this.program=this.gl.createProgram();var i=["attribute highp vec4 aVertexPosition;","attribute vec2 aTextureCoord;","varying highp vec2 vTextureCoord;","void main(void) {"," gl_Position = aVertexPosition;"," vTextureCoord = aTextureCoord;","}"].join("\n"),n=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(n,i),this.gl.compileShader(n);var s=["precision highp float;","varying lowp vec2 vTextureCoord;","uniform sampler2D YTexture;","uniform sampler2D UTexture;","uniform sampler2D VTexture;","const mat4 YUV2RGB = mat4","("," 1.1643828125, 0, 1.59602734375, -.87078515625,"," 1.1643828125, -.39176171875, -.81296875, .52959375,"," 1.1643828125, 2.017234375, 0, -1.081390625,"," 0, 0, 0, 1",");","void main(void) {"," gl_FragColor = vec4( texture2D(YTexture, vTextureCoord).x, texture2D(UTexture, vTextureCoord).x, texture2D(VTexture, vTextureCoord).x, 1) * YUV2RGB;","}"].join("\n"),r=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(r,s),this.gl.compileShader(r),this.gl.attachShader(this.program,n),this.gl.attachShader(this.program,r),this.gl.linkProgram(this.program),this.gl.useProgram(this.program),this.gl.getProgramParameter(this.program,this.gl.LINK_STATUS);var o=this.gl.getAttribLocation(this.program,"aVertexPosition");this.gl.enableVertexAttribArray(o);var a=this.gl.getAttribLocation(this.program,"aTextureCoord");this.gl.enableVertexAttribArray(a),this.verticesBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.verticesBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(o,3,this.gl.FLOAT,!1,0,0),this.texCoordBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texCoordBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(a,2,this.gl.FLOAT,!1,0,0),this.gl.y=new O(this.gl),this.gl.u=new O(this.gl),this.gl.v=new O(this.gl),this.gl.y.bind(0,this.program,"YTexture"),this.gl.u.bind(1,this.program,"UTexture"),this.gl.v.bind(2,this.program,"VTexture")}var t=e.prototype;return t.renderFrame=function(e,t,i,n,s){this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.y.fill(n,s,e),this.gl.u.fill(n>>1,s>>1,t),this.gl.v.fill(n>>1,s>>1,i),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4)},t.destroyContext=function(){try{this.gl.deleteProgram(this.program),this.gl.deleteBuffer(this.verticesBuffer),this.gl.deleteBuffer(this.texCoordBuffer),this.gl.deleteTexture(this.gl.y.texture),this.gl.deleteTexture(this.gl.u.texture),this.gl.deleteTexture(this.gl.v.texture),this.gl=null,this.program=null,this.verticesBuffer=null,this.texCoordBuffer=null}catch(e){}},e}(),$=function(e,t){return{cmd:e,data:t}},W="wasmLoading",V="wasmLoaded",j="wasmFailed",Y="videoCallback",H="decodeCodecContext",X="destroy",Q="demuxTsStream",z="demuxCoreReceive",q="readPacket",G="readPacketEnd",J="mediaInfo",K="ezui-hls",Z={width:600,height:400,volume:0,retry:20,autoPlay:!0,staticPath:"",isLive:!0,loggerOptions:{name:"HLS",level:"INFO",showTime:!0}},ee={disableContextmenu:!0},te=function(){function t(e){void 0===e&&(e={}),this.options=Object.assign({},ee,e),this.logger=this.options.logger,this.event=this.options.event,this._classVideo=K+"-video",this._$container=document.getElementById(this.options.id),this._render()}var i=t.prototype;return i._render=function(){var t,i;if("video"===this.options.nodeName)this.$video=new e.Video(this._$container,this.options).$video;else{var n;if(this.$video=document.createElement(this.options.nodeName),this._$container.innerHTML="",this._$container.appendChild(this.$video),this.options.disableContextmenu)null==(n=this.$video)||n.addEventListener("contextmenu",(function(e){return e.preventDefault(),!1}));this.$video.classList.add(this._classVideo),this.$video.style.cssText+="object-fit: contain; z-index:1;"}null==(i=this.event)||null==(t=i.emit)||t.call(i,"rendered")},i._isVideo=function(){return"VIDEO"===this.$video.nodeName},i.destroy=function(){if(this.$video&&this._$container&&this.$video){try{this._$container.removeChild(this.$video)}catch(e){}this.$video=null}},t}();function ie(e,t,i){return t&&function(e,t){for(var i=0;i=1&&(null==(i=e)||null==(t=i.onLoadCacheFinished)||t.call(i),window.clearInterval(e.cacheInterval),e.cacheInterval=null,e.isCaching===D&&e.play(e.playParams),e.isCaching=R)}),40))}},i._playFunc=function(){var e=!1;if(A()-this.calculateStartTime>=this.frameTime-this.preCostTime){e=!0;var t=!0;if(this.calculateStartTime=A(),this.options.audioNone)this.playFrameYUV(t);else{this.fix_poc_err_skip>0&&(this.fix_poc_err_skip--,t=!1);var i=this.videoPTS-this.audio.getAlignVPTS();if(i>0)return void(this.playParams.seekEvent&&!this.options.audioNone&&this.audio.setVolume(0));if(t){if(!(t=-1*i<=1*this.frameTimeSec)){for(var n=parseInt(i/this.frameTimeSec+""),s=0;s",e,n,i),n>=i&&(t.playFrameYUV(!0),i+=1)}),this.frameTime||5)}else(this.videoPTS>=this.playParams.seekPos&&!this.isNewSeek||0===this.playParams.seekPos||0===this.playParams.seekPos)&&(this.frameTime=1e3/this.options.fps,this.frameTimeSec=this.frameTime/1e3,this.options.audioNone||this.audio.play(),this._volume=this.options.audioNone?0:this.audio.volume,this.loop=window.setInterval((function(){var e=A();t._playFunc(),t.preCostTime=A()-e}),this.frameTime||5));return this.setVolume(this._volume),Promise.resolve()},i.stop=function(){this.destroy(),this.stream=new Uint8Array},i.destroy=function(){return void 0!==this.gl&&null!==this.gl&&(this.gl.destroyContext(),this.gl=null),this.endAudio(),this.cacheLoop&&window.clearInterval(this.cacheLoop),this.cacheLoop=null,this.loop&&window.clearInterval(this.loop),this.loop=null,this.pause(),this.decoderWorker.postMessage($(X)),this.stream=null,this.frameList=null,this.durationMs=-1,this.videoPTS=0,this.isPlaying=!1,this.$video.remove(),!0},i.nextNalu=function(e){if(void 0===e&&(e=1),this.stream.length<=4)return!1;for(var t=-1,i=0;i=this.stream.length){if(-1===t)return!1;var n=this.stream.subarray(t);return this.stream=new Uint8Array,n}var s="0 0 1"===this.stream.slice(0,3).join(" "),r="0 0 0 1"===this.stream.slice(0,4).join(" ");if(s||r){if(-1===t)t=i;else{if(e<=1){var o=this.stream.subarray(t,i);return this.stream=this.stream.subarray(i),o}e-=1}i+=3}}return!1},i.playFrameYUV=function(e){void 0===e&&(e=!1);var t=this.cacheYuvBuf.shiftYuv();if(!t)return this.noCacheFrame+=1,e&&!this.playParams.seekEvent&&this.loadCache(),!1;this.noCacheFrame=0;var i=t.pts;return this.videoPTS=i,this.drawImage(t.width,t.height,t.imageBufferY,t.imageBufferB,t.imageBufferR),t=null,e&&!this.playParams.seekEvent&&this.isPlaying&&this.loadCache(),!0},i.drawImage=function(e,t,i,n,s){this.$video.width===e&&this.$video.height===t||(this.$video.width=e,this.$video.height=t),this.isCheckDisplay||this.checkDisplaySize(e,t);var r=e*t,o=e/2*(t/2),a=new Uint8Array(r+2*o);a.set(i,0),a.set(n,r),a.set(s,r+o),this.gl.renderFrame(i,n,s,e,t),a=null},i.checkDisplaySize=function(e,t){var i,n=e/(null==(i=this.options)?void 0:i.width)>t/this.options.height,s=+(this.options.width/e).toFixed(2),r=+(this.options.height/t).toFixed(2),o=n?s:r,a=this.options.fixed,l=a?this.options.width:parseInt(e*o+""),u=a?this.options.height:parseInt(t*o+"");return this.$video.style.maxWidth="100%",this.$video.style.maxHeight="100%",this.options.width/this.options.height>=1&&l/u>=1?this.$video.style.width="100%":this.$video.style.height="100%",this.isCheckDisplay=!0,[l,u]},i._onWorkerMessage=function(){var e=this;this.decoderWorker.onmessage=function(t){var i=t.data;if(i.cmd===Y){var n=i.data,s=n.ptsSec,r=n.strideY,o=n.height;n.width;var a=n.bufY,l=n.bufU,u=n.bufV,h=new N(s,r,o,a,l,u);e.cacheYuvBuf.appendCacheByCacheYuv(h),h=null}}},i.initVideoAndAudio=function(){this.$video.width=this.options.width,this.$video.height=this.options.height,this.gl=new U(this.$video,{preserveDrawingBuffer:!1}),this.options.audioNone||(this.audio=new B({logger:this.logger,sampleRate:this.options.sampleRate,appendType:this.options.appendHevcType,volume:this.options.volume,isLive:this.options.isLive})),this.isPlayLoadingFinish=1},ie(t,[{key:"volume",get:function(){var e;return(null==(e=this.audio)?void 0:e.volume)||this._volume},set:function(e){this.setVolume(e)}}]),t}(te),oe=[/#EXT-X-PROGRAM-DATE-TIME.+\n/g],ae={lineDelimiter:/\r?\n/,extensionHeader:"#EXTM3U",tagPrefix:"#EXT",segmentPrefix:"#EXTINF",segmentParse:/^#EXTINF: *([0-9.]+)(, *(.+?)?)?$/,tagParse:/^#EXT-X-([A-Z-]+)(:(.+))?$/,version:"VERSION",allowCache:"ALLOW-CACHE",combined:"COMBINED",endList:"ENDLIST",targetDuration:"TARGETDURATION",mediaSequence:"MEDIA-SEQUENCE",discontinuity:"DISCONTINUITY",streamInf:"STREAM-INF",isComment:function(e){return e&&"#"===e[0]&&!e.startsWith(ae.tagPrefix)},isBlank:function(e){return""===e},canStrip:function(e){return ae.isBlank(e)||ae.isComment(e)},defaultMinDur:99999},le=function(){function e(e){this._retry=10,this.logger=null==e?void 0:e.logger,this.initState=!0,this.controller=new AbortController,this._slices=[],this._type=f,this._preURI="",this.duration=-1,this.onTransportStream=null,this.onFinished=null}var t=e.prototype;return t.destroy=function(){this.initState=!1},t.fetchM3u8=function(e){var t=this,i=this;if(this.initState){var n=function(t){return new Promise((function(i,n){var s=new XMLHttpRequest;s.open("GET",t),s.onload=function(){this.status>=200&&this.status<300&&(t!==this.responseURL?(e=this.responseURL,i(this.responseURL)):i(""))},s.onreadystatechange=function(){4===s.readyState&&200===s.status&&i(s.responseText)},s.onerror=function(){n(new Error("Network error."))},s.send()}))};n(e).then((function(s){if(t._retry=10,i._uriParse(e)){var r=i._m3u8Parse(s);if("number"==typeof r&&r>=0)var o=setTimeout((function(){i.fetchM3u8(e),clearTimeout(o)}),200*r)}return n=null,s})).catch((function(s){if(t.logger.error("[M3u8Base] fetch m3u8 url Error ==> ",s),n=null,t._retry>=1)var r=setTimeout((function(){i.fetchM3u8(e),clearTimeout(r)}),500);t._retry--}))}},t._uriParse=function(e){this._preURI="";var t=e.split("://"),i=null,n=null;if(t.length<1)return this.logger.log("HLS URI ERROR : "+e),!1;t.length>1?(i=t[0],n=t[1].split("/"),this._preURI=i+"://"):n=t[0].split("/");for(var s=0;sc&&(s=c);var d,f=n[o+=1],m=null;if(f.includes("http"))m=f;else{if("/"===f[0]){var v=this._preURI.split("//"),g=v[v.length-1].split("/");this._preURI=v[0]+"//"+g[0]}m=this._preURI+f}if(!this._slices.includes(m))this._slices.push(m),null==this||null==(d=this.onTransportStream)||d.call(this,m,c)}}}this._slices.length>500&&(this._slices=this._slices.slice(-500));var y={type:this._type,duration:-1};return null==this||null==(t=this.onFinished)||t.call(this,y),s},t._readTag=function(e){var t=ae.tagParse.exec(e);return null!==t?{key:t[1],value:t[3]}:null},e}(),ue=function(){function e(e){this.sampleRate=e.sampleRate,this.frameDurMs=Math.floor(1024e3/this.sampleRate),this.frameDurSec=this.frameDurMs/1e3}var t=e.prototype;return t.updateOptions=function(e){this.sampleRate=e.sampleRate,this.frameDurMs=1024e3/this.sampleRate,this.frameDurSec=this.frameDurMs/1e3},t._getPktLen=function(e,t,i){return((3&e)<<11)+(t<<3)+((224&i)>>5)},t.sliceAACFrames=function(e,t){for(var i=[],n=e,s=0;s>4==15){var r=this._getPktLen(t[s+3],t[s+4],t[s+5]);if(r<=0)continue;var o=t.subarray(s,s+r),a=new Uint8Array(r);a.set(o,0),i.push({ptime:n,data:a}),n+=this.frameDurSec,s+=r}else s+=1;return i},e}(),he="M3U8",ce="TS",de="FETCH",pe=function(){function e(){}return e.init=function(i){e.collect=new t(i)},e.send=function(t,i){var n,s;null==(s=e.collect)||null==(n=s.send)||n.call(s,{action:t,logInfo:i})},e.updateParams=function(t){e.collect.updateExtendsInfo(t)},e}();function fe(e,t,i){return t&&function(e,t){for(var i=0;i ",e),s=null})).catch((function(n){var s,r,o,a;t.logger.error("[MpegTsDemux] demuxerTsInit ERROR fetch ERROR ==> ",n),null==(r=t.event)||null==(s=r.emit)||s.call(r,ce,{data:n}),null==(a=t.event)||null==(o=a.emit)||o.call(a,de,{data:n,type:ce}),null==i||i.onDemuxedFailed(n,e),pe.send(100,{url:e,msg:"fetch error"})}))},t._demuxCore=function(e,t){e.length<=0||this.decoderWorker.postMessage($(Q,{buff:e,tsUrl:t}))},t.readMediaInfo=function(){return this.mediaInfo},t.readAudioNone=function(){var e;return null==(e=this.mediaInfo)?void 0:e.audioNone},t.isHEVC=function(){return this.mediaInfo.vCodec===d||this.mediaInfo.vCodec===c},t.destroy=function(){this.controller&&this.controller.abort(),this.controller=null,this.mediaInfo=null,this.aacDec=null},t._onWorkerMessage=function(){var e=this;e.logger.log("[demuxer] register _onWorkerMessage"),e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case J:var n,s;if(e.mediaInfo=i.data,e.mediaInfo)null==(s=e.event)||null==(n=s.emit)||n.call(s,"mediaInfo",e.mediaInfo);break;case z:var r;if(e.mediaInfo.vCodec)null==e.aacDec?e.aacDec=new ue(e.mediaInfo):e.aacDec.updateOptions(e.mediaInfo),null==e||null==(r=e.onDemuxed)||r.call(e)}}))},fe(e,[{key:"vCodec",get:function(){return this.mediaInfo.vCodec}}]),e}(),ge=function(){function e(e,t,i,n){this.pts=e,this.dts=e,this.isKey=t,this.data=i,this.video=n}return e.prototype.setFrame=function(e,t,i,n){this.pts=e,this.isKey=t,this.data=i,this.video=n},e}(),ye=function(){function e(e){this.logger=null==e?void 0:e.logger,this.event=null==e?void 0:e.event,this.decoderWorker=e.decoderWorker,this.m3u8Base=new le(e),this.mpegTsDemux=new ve(e),this.tsList=[],this._startTime=0,this._aStartTime=0,this.lockWait={state:!1,lockMember:{dur:0}},this._timerFeed=null,this.seekPos=-1,this.vPreFramePTS=0,this.aPreFramePTS=0,this.audioNone=!1,this.isHevcParam=!1,this.vCodec="",this.aCodec=null,this.aChannel=0,this.durationMs=-1,this.fps=-1,this.sampleRate=-1,this.size={width:-1,height:-1},this.mediaInfo=null,this._onWorkerMessage(),this.onReadyOBJ=null,this.onFinished=null,this.onDemuxed=null,this.onSamples=null,this.onCacheProcess=null}var t=e.prototype;return t.getCachePTS=function(){return Math.max(this.vPreFramePTS,this.aPreFramePTS)},t.demux=function(e){var t=this,i=this;this.vPreFramePTS=0,this.aPreFramePTS=0,this.m3u8Base.onTransportStream=function(e,t){i.tsList.push({streamURI:e,streamDur:t}),i.lockWait.state=!1},this.m3u8Base.onFinished=function(e){var t;e.type===p?i.durationMs=1e3*e.duration:i.durationMs=-1,null==i||null==(t=i.onFinished)||t.call(i,i.onReadyOBJ,e)},this.mpegTsDemux.onDemuxedFailed=function(e,n){t.logger.error("[M3u8] onDemuxedFailed: ",e,n),i.lockWait.state=!1},this.mpegTsDemux.onDemuxed=function(){var e;t.logger.log("[M3u8] onDemuxed"),null==i.mediaInfo&&(i.mediaInfo=i.mpegTsDemux.readMediaInfo(),t.logger.log("[M3u8] mediaInfo: ",i.mediaInfo),i.isHevcParam=i.mpegTsDemux.isHEVC(),i.vCodec=i.mpegTsDemux.vCodec,i.aCodec=i.mediaInfo.aCodec,i.aChannel=i.mediaInfo.sampleChannel,i.fps=i.mediaInfo.fps,i.sampleRate=i.mediaInfo.sampleRate,(null===i.aCodec||""===i.aCodec||i.aChannel<=0)&&(i.audioNone=!0),i.mediaInfo.width>0&&i.mediaInfo.height>0&&(t.size.width=t.mediaInfo.width,t.size.height=t.mediaInfo.height)),null==i||null==(e=i.onDemuxed)||e.call(i,i.onReadyOBJ),i.mpegTsDemux&&t.decoderWorker.postMessage($(q))},this.mpegTsDemux.onReady=function(){i._fetchM3u8AndIntervalTs(e)},this._timerTsWasm=window.setInterval((function(){1===ke.__HLS_WASM_DecoderState__&&(i._fetchM3u8AndIntervalTs(e),window.clearInterval(i._timerTsWasm),i._timerTsWasm=null)}),500)},t._fetchM3u8AndIntervalTs=function(e){var t=this,i=this;this.logger.log("[M3u8] start fetch m3u8 url"),i.m3u8Base.fetchM3u8(e),i._timerFeed=window.setInterval((function(){if(i.tsList.length>0&&!i.lockWait.state)try{var e=i.tsList.shift();if(null!=e){var n=e.streamURI,s=e.streamDur;i.lockWait.state=!0,i.lockWait.lockMember.dur=+s,i.mpegTsDemux.demuxURL(n)}else t.logger.error("[M3u8] onTsReady need wait ")}catch(e){var r,o,a,l;t.logger.error("[M3u8] onTsReady ERROR:",e),null==(o=t.event)||null==(r=o.emit)||r.call(o,he,{data:e}),null==(l=t.event)||null==(a=l.emit)||a.call(l,de,{data:e,type:he}),i.lockWait.state=!1}}),50)},t.destroy=function(){var e;this.m3u8Base&&(null==(e=this.m3u8Base)||e.destroy(),this.m3u8Base=null);this._timerFeed&&(window.clearInterval(this._timerFeed),this._timerFeed=null),this.mpegTsDemux&&(this.mpegTsDemux.destroy(),this.mpegTsDemux=null)},t.bindReady=function(e){this.onReadyOBJ=e},t.getACodec=function(){return this.aCodec},t.getVCodec=function(){return this.vCodec},t.getDurationMs=function(){return this.durationMs},t.getFPS=function(){return this.fps},t.getSampleRate=function(){return this.sampleRate},t.getSampleChannel=function(){return this.aChannel},t.getSize=function(){return this.size},t._onWorkerMessage=function(){this.logger.log("[M3U8] register _onWorkerMessage");var e=this;e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case q:var n,s=i.data,r=s.type,o=s.pts,a=s.ptime,l=s.keyframe,u=s.data,c=s.layer;if(u=new Uint8Array(u),1===r&&e.mpegTsDemux.mediaInfo.aCodec===h&&(u=e.mpegTsDemux.aacDec.sliceAACFrames(a,u)),0===r){var d=function(e){var t=e.nalu,i=e.vlc.vlc;null==t.vps&&(t.vps=new Uint8Array);var n=new Uint8Array(t.vps.length+t.sps.length+t.pps.length+t.sei.length+i.length);return n.set(t.vps,0),n.set(t.sps,t.vps.length),n.set(t.pps,t.vps.length+t.sps.length),n.set(t.sei,t.vps.length+t.sps.length+t.pps.length),n.set(i,t.vps.length+t.sps.length+t.pps.length+t.sei.length),n}(c),p=o,f=new ge(p,1===l,d,!0);e.vPreFramePTS=p,null==e||e.onSamples(e.onReadyOBJ,f)}else if(1===r){var m;if("aac"===(null==(m=e.mediaInfo)?void 0:m.aCodec)){for(var v=u,g=0;g0&&(e.$video.volume=e._options.volume)}),1e3)})),e.event.emit("parsed")}))}))}else if(this.$video.canPlayType("application/vnd.apple.mpegurl")){this.logger.log("Browser support application/vnd.apple.mpegurl : ",this.$video.canPlayType("application/vnd.apple.mpegurl")),this.$video.src=this._options.url;var n=!1;this.$video.addEventListener("canplay",(function(){!n&&e._options.autoPlay&&setTimeout((function(){e.$video.play().then((function(){e.logger.log("autoPlay video!"),setTimeout((function(){e._options.volume>0&&e.setVolume(e._options.volume)}),1e3),n=!0}))}),200)}))}else this.logger.warn("Browser not support hls")},n.isPlayingState=function(){return!this.$video.paused},n.play=function(){if(this.isPlayingState())return Promise.resolve();if(this._options.isLive&&(this.$video.buffered.length>=1&&this.$video.buffered.end(0)>1)){var e=this.$video.buffered.end(0)-1;this.$video.currentTime=e}return this.$video.play()},n.pause=function(){this.$video.pause()},n.setVolume=function(e){this.$video.muted&&(this.$video.muted=!1),this._volume=+(e||0),0===this._volume&&(this.$video.muted=!0),this.$video.volume=this._volume},n.destroy=function(){this.$video&&this.$video.pause(),this._hls&&(this._hls.destroy(),this._hls=null),e.prototype.destroy.call(this)},n._onEvent=function(){var e;(e=this).$video&&(e.$video.addEventListener("canplay",(function(){e.event.emit("canplay")})),e.$video.addEventListener("loadeddata",(function(){e.event.emit("loadeddata")})),e.$video.addEventListener("volumechange",(function(){e.event.emit("volumechange",{data:e.$video.volume})})),e.$video.addEventListener("waiting",(function(){e.event.emit("waiting")})),e.$video.addEventListener("timeupdate",(function(){var t;null==(t=e.event)||t.emit("timeupdate")})),e.$video.addEventListener("seeking",(function(){e.event.emit("seeking",{data:e.$video.currentTime})})),e.$video.addEventListener("seeked",(function(){e.event.emit("seeked")})),e.$video.addEventListener("abort",(function(){e.event.emit("abort")})),e.$video.addEventListener("error",(function(){var t;null==(t=e.event)||t.emit("error",{data:e.$video.error})})),e.$video.addEventListener("ended",(function(){e.event.emit("ended")})))},_e(t,[{key:"volume",get:function(){return this._volume},set:function(e){this.setVolume(e)}}]),t}(te);var Ce="wasm_loaded",xe="wasm_failed",Se="init";function Le(e,t){return Le=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Le(e,t)}var be=function(e){function t(t){var i;return void 0===t&&(t={}),i=e.call(this,t)||this,t.url=n.addVc(null==t?void 0:t.url,["h264","h265"]),function(e,t){if(((null==t?void 0:t.volume)||0)>1?e._volume=1:((null==t?void 0:t.volume)||0)<=0?e._volume=0:e._volume=+((null==t?void 0:t.volume)||0),t.volume=e._volume,e.options=r.merge({},Z,t),"string"!=typeof e.options.id)throw new Error("id is required!");e.logger=s(e.options.loggerOptions),e.event=new o,e.logger.log("HlsPlayer version: ",ke.version),e.logger.log("HlsPlayer options: ",e.options),e.options.logger=e.logger}(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(i),t),i._containerClassName=K+"-container",i._render(),i}!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Le(e,t)}(t,e);var i=t.prototype;return i._render=function(){this.$container.classList.add(this._containerClassName)},i.destroy=function(){this.$container&&(this.$container.classList.remove(this._containerClassName),this.$container.innerHTML="",this.$container=null)},t}(e);function Re(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e=!0),this.playParam={durationMs:0,fps:0,sampleRate:0,size:{width:0,height:0},audioNone:e,videoCodec:L},!M())throw new Error("Browser not support WebAssembly!");this._onWorkerMessage()},i.play=function(){if(pe.send(1,{name:"play"}),null===this.player)return Promise.resolve();if(this.playParam.videoCodec===L){var e={seekPos:0,isLive:this.options.isLive,accurateSeek:!0,seekEvent:!1,realPlay:!0};return this.player.play(e)}return this.player.play()},i.pause=function(){return pe.send(1,{name:"pause"}),null!==this.player&&(this.player.pause(),!0)},i.destroy=function(){var t,i;return pe.send(1,{name:"destroy"}),void 0!==this.player&&null!==this.player&&(this.playParam.videoCodec===L&&this._m3u8Obj&&(this._m3u8Obj.destroy(),this._m3u8Obj=null),this.player.destroy(),this._decoderWorker&&(this._decoderWorker.postMessage($(X)),this._decoderWorker.terminate(),this._decoderWorker=null),this.logger.log("destroy"),null==(i=this.event)||null==(t=i.emit)||t.call(i,"destroy"),this.player=null,e.prototype.destroy.call(this),!0)},i.isPlaying=function(){return null!==this.player&&this.player.isPlayingState()},i.setVolume=function(e){var t;(e=+e)>1||e<0?this.logger.warn("volume volume value 0.0 ~ 1.0!"):((t=this).player||(t.event.emit("playerIsNull"),t.logger.warn("Player instance does not exist!"),0))&&(this.player.setVolume(e),this.event.emit("volumeChange",{data:e}))},i.getVersion=function(){return pe.send(1,{name:"getVersion"}),"0.1.0-beta.1"},i._m3u8Entry=function(){var e=this;this._m3u8Obj=new ye({logger:this.logger,decoderWorker:this._decoderWorker,event:this.event}),this._m3u8Obj.bindReady(this),this._m3u8Obj.onFinished=function(e,t){},this._m3u8Obj.onCacheProcess=function(t){e.options.isLive||null==e.onCacheProcess||e.onCacheProcess.call(e,t)},this._m3u8Obj.onDemuxed=this._checkPlayer.bind(this),this._m3u8Obj.onSamples=this._hlsOnSamples.bind(this),this._m3u8Obj.demux(this.url)},i._checkPlayer=function(e,t){var i=this;if(null==i.player){var n,s,r;if(!(null==i||null==(n=i._m3u8Obj)?void 0:n.isHevcParam)||t)return null==i||null==(r=i._m3u8Obj)||null==(s=r.destroy)||s.call(r),i._m3u8Obj=null,this._decoderWorker.terminate(),this._decoderWorker=null,void(i.player=new we(De({},this.options,{event:this.event,logger:this.logger})));var o=i._m3u8Obj.getACodec(),a=i._m3u8Obj.getFPS(),l=i._m3u8Obj.getSampleRate(),u=i._m3u8Obj.getSize(),h=!1;h=i._m3u8Obj.getSampleChannel()<=0||""===o,i._softPlayer(0,a,l,u,h)}},i._hlsOnSamples=function(e,t){var i,n,s,r=this;if(t.video)null==(s=r.player)||null==(n=s.appendHevcFrame)||n.call(s,t);else if(!(null==(i=r._m3u8Obj)?void 0:i.audioNone)){var o,a;null==(a=r.player)||null==(o=a.appendAACFrame)||o.call(a,t)}},i._onWorkerMessage=function(){var e=this,i=this;this._decoderWorker.onmessage=function(n){var s=n.data;switch(s.cmd){case W:t.__HLS_WASM_DecoderState__=0;break;case V:t.__HLS_WASM_DecoderState__=1,e.logger.log("Wasm already init over!"),i.event.emit(Ce),i._decoderWorker.postMessage($("registerWasmPlayer")),i._m3u8Entry();break;case j:t.__HLS_WASM_DecoderState__=-1,e.logger.error("Wasm init failed!",s),i.event.emit(xe,s),pe.send("wasm",{name:"wasm loading failed"}),i._checkPlayer(!0)}}},i._softPlayer=function(e,t,i,n,s,r){var o,a,l=this;void 0===s&&(s=!1),void 0===r&&(r=null);var u,h=this;(this.playParam.durationMs=e,this.playParam.fps=t,this.playParam.sampleRate=i,this.playParam.size=n,this.playParam.audioNone=s,this.playParam.videoCodec=r||L,this.logger.log("this.playParam: ",this.playParam),this.logger.log("start init soft player"),this.player=new re(De({},h.options,{sampleRate:i,fps:t,appendHevcType:v,fixed:!1,id:this.options.id,audioNone:s,videoCodec:r,logger:this.logger,event:this.event,decoderWorker:this._decoderWorker})),this.player.onPlayingTime=function(e){var t;null==h||null==(t=h.onPlayTime)||t.call(h,e)},this.player.onPlayingFinish=function(){var e,t;(l.pause(),null!=l.onPlayFinish)&&(null==(t=l)||null==(e=t.onPlayFinish)||e.call(t))},this.player.onLoadCache=function(){var e,t;null==(t=l)||null==(e=t.onLoadCache)||e.call(t)},this.player.onLoadCacheFinished=function(){var e,t;null==(t=l)||null==(e=t.onLoadCacheFinished)||e.call(t)},null==(o=h.player)||o.setDurationMs(e),null==(a=h.player)||a.setFrameRate(t),null!=h.onReadyShowDone)&&(null==h||null==(u=h.onReadyShowDone)||u.call(h));this.event.emit("parsed"),this.player&&this.options.autoPlay&&this.play()},t.supportType=function(e){if(pe.send(1,{name:"supportType",options:e}),"hls"===e.type)return!0;if(e.url){var t=e.url;t.startsWith("http://")||t.startsWith("https://")||(t=/^\/\//.test(t)?"http:"+t:location.origin+location.pathname+t);try{return/\.m3u8$/i.test(new URL(t).pathname)}catch(e){}}return!1},Re(t,[{key:"volume",get:function(){return this.player?this.player.volume:this.options.volume},set:function(e){e=+e,this.setVolume(e)}}]),t}(be);ke.__HLS_WASM_DecoderState__=0,ke.version="0.1.0-beta.1",module.exports=ke; +"use strict";var e=require("@ezuikit/player-base"),t=require("@ezuikit/utils-collect"),i=require("hls.js"),n=require("@ezuikit/utils-tools"),s=require("@ezuikit/utils-logger"),r=require("lodash-es"),o=require("eventemitter3"),a=1,l=2,u=3,h="aac",c="h265",d="hevc",p="m3u8",f="hls",m=0,v=1,g=600,y=400,_=30,T=40,P=!1,w=44100,C=20,x="ONCE",S="SWAP",L=0,b=265,R=1001,D=1002,E=1003;var k,M=function(){return window.WebAssembly&&"object"==("undefined"==typeof WebAssembly?"undefined":(e=WebAssembly)&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e);var e};function A(){return(new Date).getTime()}var I=window.AudioContext||(null==(k=window)?void 0:k.webkitAudioContext),B=function(){function e(e){var t=this;this.options={sampleRate:e.sampleRate||w,appendType:e.appendType||m,playMode:e.playMode||S,isLive:e.isLive},this.logger=null==e?void 0:e.logger,this.sourceChannel=-1,this.audioCtx=new I({latencyHint:"interactive",sampleRate:e.sampleRate}),this.gainNode=null,this.sourceList=[],this.startStatus=!1,this.sampleQueue=[],this.nextBuffer=null,this.playTimestamp=0,this.playStartTime=0,this.durationMs=-1,this.volume=e.volume||0,this.onLoadCache=null,this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList[0].onended=function(){t.swapSource(0,1)},this.sourceList[1].onended=function(){t.swapSource(1,0)},this.gainNode=this.audioCtx.createGain(),this.gainNode.gain.value=this.volume,this.gainNode.connect(this.audioCtx.destination),this.runNextBuffer()}var t=e.prototype;return t.resetStartParam=function(){this.playTimestamp=0,this.playStartTime=0},t.setOnLoadCache=function(e){this.onLoadCache=e},t.setDurationMs=function(e){void 0===e&&(e=-1),this.durationMs=e},t.setVolume=function(e){void 0===e&&(e=0),this.volume=e,this.gainNode.gain.value=e},t.getAlignVPTS=function(){return this.playTimestamp+(A()-this.playStartTime)/1e3},t.swapSource=function(e,t){if(void 0===e&&(e=-1),void 0===t&&(t=-1),!this.startStatus)return null;if(e<0||e>=this.sourceList.length)return null;if(t<0||t>=this.sourceList.length)return null;try{this.sourceChannel===e&&null!==this.sourceList[e]&&(this.sourceList[e].disconnect(this.gainNode),this.sourceList[e]=null)}catch(t){this.logger.error("[DEFINE ERROR] this audioCore disconnect source Index:"+e+" error happened!",t)}(this.sourceChannel=t,-2===this.decodeSample(t,e)&&this.options.isLive)&&(this.getAlignVPTS()>=this.durationMs/1e3-.04?this.pause():null==this||this.onLoadCache());return null},t.addSample=function(e){return void 0===e&&(e=null),!(null==e||!e||void 0===e)&&(0===this.sampleQueue.length&&(this.seekPos=null==e?void 0:e.pts),this.sampleQueue.push(e),!0)},t.runNextBuffer=function(){var e=this;window.setInterval((function(){if(!(null!=e.nextBuffer||e.sampleQueue.length=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){s.swapSource(e,t)}),0===this.sampleQueue.length)return this.options.isLive?(this.sourceList[e].connect(this.gainNode),this.sourceList[e].startState||null==(n=this.sourceList[e])||null==(i=n.start)||i.call(n),this.sourceList[e].onended=function(){s.swapSource(e,t)},this.sourceList[e].stop(),0):-2;if(this.sourceList[e].buffer)return this.swapSource(e,t),0;if(null==this.nextBuffer||this.nextBuffer.data.length<1){var r,o,a=this.sourceList[e];return a.connect(this.gainNode),(null==a?void 0:a.startState)||null==(o=this.sourceList[e])||null==(r=o.start)||r.call(o),a.startState=!0,a.stop(),1}var l=this.nextBuffer.data.buffer;this.playTimestamp=this.nextBuffer.pts,this.playStartTime=A();try{this.audioCtx.decodeAudioData(l,(function(t){var i,n;null!==s.sourceList[e]&&(s.sourceList[e].buffer=t,s.sourceList[e].connect(s.gainNode),s.sourceList[e].startState||null==(n=s.sourceList[e])||null==(i=n.start)||i.call(n),s.sourceList[e].startState=!0)}),(function(e){s.logger.error("Error audioCore with decoding audio data",e)}))}catch(e){return this.nextBuffer=null,this.logger.log("decodeAudioData error",e),-3}return this.nextBuffer=null,0},t.decodeWholeSamples=function(e){var t=this;if(void 0===e&&(e=-1),this.sourceChannel=e,e<0||e>=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){}),0===this.sampleQueue.length)return-2;for(var i=null,n=null,s=0;s",e)}},e}(),F=function(){function e(e){this.limit=e.limit||200,this.logger=null==e?void 0:e.logger,this.yuvCache=[]}var t=e.prototype;return t.appendCacheByCacheYuv=function(e){return this.yuvCache.push(e),this.yuvCache.length>=this.limit?(this.shiftYuv(),l):a},t.getState=function(){return this.yuvCache.length<=0?u:this.yuvCache.length>=this.limit?l:a},t.cleanPipeline=function(){this.yuvCache=[],this.yuvCache.length=0},t.shiftYuv=function(){return this.yuvCache.length<=0?null:this.yuvCache.shift()},e}(),N=function(){function e(e,t,i,n,s,r){this.pts=e,this.width=t,this.height=i,this.imageBufferY=n,this.imageBufferB=s,this.imageBufferR=r}return e.prototype.setYuv=function(e,t,i,n,s,r){this.pts=e,this.width=t,this.height=i,this.imageBufferY=n,this.imageBufferB=s,this.imageBufferR=r},e}(),O=function(){function e(e){this.gl=e,this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)}var t=e.prototype;return t.bind=function(e,t,i){var n=this.gl;n.activeTexture([n.TEXTURE0,n.TEXTURE1,n.TEXTURE2][e]),n.bindTexture(n.TEXTURE_2D,this.texture),n.uniform1i(n.getUniformLocation(t,i),e)},t.fill=function(e,t,i){var n=this.gl;n.bindTexture(n.TEXTURE_2D,this.texture),n.texImage2D(n.TEXTURE_2D,0,n.LUMINANCE,e,t,0,n.LUMINANCE,n.UNSIGNED_BYTE,i)},e}(),U=function(){function e(e,t){this.gl=null,this.gl=e.getContext("webgl")||e.getContext("experimental-webgl"),this.program=this.gl.createProgram();var i=["attribute highp vec4 aVertexPosition;","attribute vec2 aTextureCoord;","varying highp vec2 vTextureCoord;","void main(void) {"," gl_Position = aVertexPosition;"," vTextureCoord = aTextureCoord;","}"].join("\n"),n=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(n,i),this.gl.compileShader(n);var s=["precision highp float;","varying lowp vec2 vTextureCoord;","uniform sampler2D YTexture;","uniform sampler2D UTexture;","uniform sampler2D VTexture;","const mat4 YUV2RGB = mat4","("," 1.1643828125, 0, 1.59602734375, -.87078515625,"," 1.1643828125, -.39176171875, -.81296875, .52959375,"," 1.1643828125, 2.017234375, 0, -1.081390625,"," 0, 0, 0, 1",");","void main(void) {"," gl_FragColor = vec4( texture2D(YTexture, vTextureCoord).x, texture2D(UTexture, vTextureCoord).x, texture2D(VTexture, vTextureCoord).x, 1) * YUV2RGB;","}"].join("\n"),r=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(r,s),this.gl.compileShader(r),this.gl.attachShader(this.program,n),this.gl.attachShader(this.program,r),this.gl.linkProgram(this.program),this.gl.useProgram(this.program),this.gl.getProgramParameter(this.program,this.gl.LINK_STATUS);var o=this.gl.getAttribLocation(this.program,"aVertexPosition");this.gl.enableVertexAttribArray(o);var a=this.gl.getAttribLocation(this.program,"aTextureCoord");this.gl.enableVertexAttribArray(a),this.verticesBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.verticesBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(o,3,this.gl.FLOAT,!1,0,0),this.texCoordBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texCoordBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(a,2,this.gl.FLOAT,!1,0,0),this.gl.y=new O(this.gl),this.gl.u=new O(this.gl),this.gl.v=new O(this.gl),this.gl.y.bind(0,this.program,"YTexture"),this.gl.u.bind(1,this.program,"UTexture"),this.gl.v.bind(2,this.program,"VTexture")}var t=e.prototype;return t.renderFrame=function(e,t,i,n,s){this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.y.fill(n,s,e),this.gl.u.fill(n>>1,s>>1,t),this.gl.v.fill(n>>1,s>>1,i),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4)},t.destroyContext=function(){try{this.gl.deleteProgram(this.program),this.gl.deleteBuffer(this.verticesBuffer),this.gl.deleteBuffer(this.texCoordBuffer),this.gl.deleteTexture(this.gl.y.texture),this.gl.deleteTexture(this.gl.u.texture),this.gl.deleteTexture(this.gl.v.texture),this.gl=null,this.program=null,this.verticesBuffer=null,this.texCoordBuffer=null}catch(e){}},e}(),$=function(e,t){return{cmd:e,data:t}},W="wasmLoading",V="wasmLoaded",j="wasmFailed",Y="videoCallback",H="decodeCodecContext",X="destroy",Q="demuxTsStream",z="demuxCoreReceive",q="readPacket",G="readPacketEnd",J="mediaInfo",K="ezui-hls",Z={width:600,height:400,volume:0,retry:20,autoPlay:!0,staticPath:"",isLive:!0,loggerOptions:{name:"HLS",level:"INFO",showTime:!0}},ee={disableContextmenu:!0},te=function(){function t(e){void 0===e&&(e={}),this.options=Object.assign({},ee,e),this.logger=this.options.logger,this.event=this.options.event,this._classVideo=K+"-video",this._$container=document.getElementById(this.options.id),this._render()}var i=t.prototype;return i._render=function(){var t,i;if("video"===this.options.nodeName)this.$video=new e.Video(this._$container,this.options).$video;else{var n;if(this.$video=document.createElement(this.options.nodeName),this._$container.innerHTML="",this._$container.appendChild(this.$video),this.options.disableContextmenu)null==(n=this.$video)||n.addEventListener("contextmenu",(function(e){return e.preventDefault(),!1}));this.$video.classList.add(this._classVideo),this.$video.style.cssText+="object-fit: contain; z-index:1;"}null==(i=this.event)||null==(t=i.emit)||t.call(i,"rendered")},i._isVideo=function(){return"VIDEO"===this.$video.nodeName},i.destroy=function(){if(this.$video&&this._$container&&this.$video){try{this._$container.removeChild(this.$video)}catch(e){}this.$video=null}},t}();function ie(e,t,i){return t&&function(e,t){for(var i=0;i=1&&(null==(i=e)||null==(t=i.onLoadCacheFinished)||t.call(i),window.clearInterval(e.cacheInterval),e.cacheInterval=null,e.isCaching===D&&e.play(e.playParams),e.isCaching=R)}),40))}},i._playFunc=function(){var e=!1;if(A()-this.calculateStartTime>=this.frameTime-this.preCostTime){e=!0;var t=!0;if(this.calculateStartTime=A(),this.options.audioNone)this.playFrameYUV(t);else{this.fix_poc_err_skip>0&&(this.fix_poc_err_skip--,t=!1);var i=this.videoPTS-this.audio.getAlignVPTS();if(i>0)return void(this.playParams.seekEvent&&!this.options.audioNone&&this.audio.setVolume(0));if(t){if(!(t=-1*i<=1*this.frameTimeSec)){for(var n=parseInt(i/this.frameTimeSec+""),s=0;s",e,n,i),n>=i&&(t.playFrameYUV(!0),i+=1)}),this.frameTime||5)}else(this.videoPTS>=this.playParams.seekPos&&!this.isNewSeek||0===this.playParams.seekPos||0===this.playParams.seekPos)&&(this.frameTime=1e3/this.options.fps,this.frameTimeSec=this.frameTime/1e3,this.options.audioNone||this.audio.play(),this._volume=this.options.audioNone?0:this.audio.volume,this.loop=window.setInterval((function(){var e=A();t._playFunc(),t.preCostTime=A()-e}),this.frameTime||5));return this.setVolume(this._volume),Promise.resolve()},i.stop=function(){this.destroy(),this.stream=new Uint8Array},i.destroy=function(){return void 0!==this.gl&&null!==this.gl&&(this.gl.destroyContext(),this.gl=null),this.endAudio(),this.cacheLoop&&window.clearInterval(this.cacheLoop),this.cacheLoop=null,this.loop&&window.clearInterval(this.loop),this.loop=null,this.pause(),this.decoderWorker.postMessage($(X)),this.stream=null,this.frameList=null,this.durationMs=-1,this.videoPTS=0,this.isPlaying=!1,this.$video.remove(),!0},i.nextNalu=function(e){if(void 0===e&&(e=1),this.stream.length<=4)return!1;for(var t=-1,i=0;i=this.stream.length){if(-1===t)return!1;var n=this.stream.subarray(t);return this.stream=new Uint8Array,n}var s="0 0 1"===this.stream.slice(0,3).join(" "),r="0 0 0 1"===this.stream.slice(0,4).join(" ");if(s||r){if(-1===t)t=i;else{if(e<=1){var o=this.stream.subarray(t,i);return this.stream=this.stream.subarray(i),o}e-=1}i+=3}}return!1},i.playFrameYUV=function(e){void 0===e&&(e=!1);var t=this.cacheYuvBuf.shiftYuv();if(!t)return this.noCacheFrame+=1,e&&!this.playParams.seekEvent&&this.loadCache(),!1;this.noCacheFrame=0;var i=t.pts;return this.videoPTS=i,this.drawImage(t.width,t.height,t.imageBufferY,t.imageBufferB,t.imageBufferR),t=null,e&&!this.playParams.seekEvent&&this.isPlaying&&this.loadCache(),!0},i.drawImage=function(e,t,i,n,s){this.$video.width===e&&this.$video.height===t||(this.$video.width=e,this.$video.height=t),this.isCheckDisplay||this.checkDisplaySize(e,t);var r=e*t,o=e/2*(t/2),a=new Uint8Array(r+2*o);a.set(i,0),a.set(n,r),a.set(s,r+o),this.gl.renderFrame(i,n,s,e,t),a=null},i.checkDisplaySize=function(e,t){var i,n=e/(null==(i=this.options)?void 0:i.width)>t/this.options.height,s=+(this.options.width/e).toFixed(2),r=+(this.options.height/t).toFixed(2),o=n?s:r,a=this.options.fixed,l=a?this.options.width:parseInt(e*o+""),u=a?this.options.height:parseInt(t*o+"");return this.$video.style.maxWidth="100%",this.$video.style.maxHeight="100%",this.options.width/this.options.height>=1&&l/u>=1?this.$video.style.width="100%":this.$video.style.height="100%",this.isCheckDisplay=!0,[l,u]},i._onWorkerMessage=function(){var e=this;this.decoderWorker.onmessage=function(t){var i=t.data;if(i.cmd===Y){var n=i.data,s=n.ptsSec,r=n.strideY,o=n.height;n.width;var a=n.bufY,l=n.bufU,u=n.bufV,h=new N(s,r,o,a,l,u);e.cacheYuvBuf.appendCacheByCacheYuv(h),h=null}}},i.initVideoAndAudio=function(){this.$video.width=this.options.width,this.$video.height=this.options.height,this.gl=new U(this.$video,{preserveDrawingBuffer:!1}),this.options.audioNone||(this.audio=new B({logger:this.logger,sampleRate:this.options.sampleRate,appendType:this.options.appendHevcType,volume:this.options.volume,isLive:this.options.isLive})),this.isPlayLoadingFinish=1},ie(t,[{key:"volume",get:function(){var e;return(null==(e=this.audio)?void 0:e.volume)||this._volume},set:function(e){this.setVolume(e)}}]),t}(te),oe=[/#EXT-X-PROGRAM-DATE-TIME.+\n/g],ae={lineDelimiter:/\r?\n/,extensionHeader:"#EXTM3U",tagPrefix:"#EXT",segmentPrefix:"#EXTINF",segmentParse:/^#EXTINF: *([0-9.]+)(, *(.+?)?)?$/,tagParse:/^#EXT-X-([A-Z-]+)(:(.+))?$/,version:"VERSION",allowCache:"ALLOW-CACHE",combined:"COMBINED",endList:"ENDLIST",targetDuration:"TARGETDURATION",mediaSequence:"MEDIA-SEQUENCE",discontinuity:"DISCONTINUITY",streamInf:"STREAM-INF",isComment:function(e){return e&&"#"===e[0]&&!e.startsWith(ae.tagPrefix)},isBlank:function(e){return""===e},canStrip:function(e){return ae.isBlank(e)||ae.isComment(e)},defaultMinDur:99999},le=function(){function e(e){this._retry=10,this.logger=null==e?void 0:e.logger,this.initState=!0,this.controller=new AbortController,this._slices=[],this._type=f,this._preURI="",this.duration=-1,this.onTransportStream=null,this.onFinished=null}var t=e.prototype;return t.destroy=function(){this.initState=!1},t.fetchM3u8=function(e){var t=this,i=this;if(this.initState){var n=function(t){return new Promise((function(i,n){var s=new XMLHttpRequest;s.open("GET",t),s.onload=function(){this.status>=200&&this.status<300&&(t!==this.responseURL?(e=this.responseURL,i(this.responseURL)):i(""))},s.onreadystatechange=function(){4===s.readyState&&200===s.status&&i(s.responseText)},s.onerror=function(){n(new Error("Network error."))},s.send()}))};n(e).then((function(s){if(t._retry=10,i._uriParse(e)){var r=i._m3u8Parse(s);if("number"==typeof r&&r>=0)var o=setTimeout((function(){i.fetchM3u8(e),clearTimeout(o)}),200*r)}return n=null,s})).catch((function(s){if(t.logger.error("[M3u8Base] fetch m3u8 url Error ==> ",s),n=null,t._retry>=1)var r=setTimeout((function(){i.fetchM3u8(e),clearTimeout(r)}),500);t._retry--}))}},t._uriParse=function(e){this._preURI="";var t=e.split("://"),i=null,n=null;if(t.length<1)return this.logger.log("HLS URI ERROR : "+e),!1;t.length>1?(i=t[0],n=t[1].split("/"),this._preURI=i+"://"):n=t[0].split("/");for(var s=0;sc&&(s=c);var d,f=n[o+=1],m=null;if(f.includes("http"))m=f;else{if("/"===f[0]){var v=this._preURI.split("//"),g=v[v.length-1].split("/");this._preURI=v[0]+"//"+g[0]}m=this._preURI+f}if(!this._slices.includes(m))this._slices.push(m),null==this||null==(d=this.onTransportStream)||d.call(this,m,c)}}}this._slices.length>500&&(this._slices=this._slices.slice(-500));var y={type:this._type,duration:-1};return null==this||null==(t=this.onFinished)||t.call(this,y),s},t._readTag=function(e){var t=ae.tagParse.exec(e);return null!==t?{key:t[1],value:t[3]}:null},e}(),ue=function(){function e(e){this.sampleRate=e.sampleRate,this.frameDurMs=Math.floor(1024e3/this.sampleRate),this.frameDurSec=this.frameDurMs/1e3}var t=e.prototype;return t.updateOptions=function(e){this.sampleRate=e.sampleRate,this.frameDurMs=1024e3/this.sampleRate,this.frameDurSec=this.frameDurMs/1e3},t._getPktLen=function(e,t,i){return((3&e)<<11)+(t<<3)+((224&i)>>5)},t.sliceAACFrames=function(e,t){for(var i=[],n=e,s=0;s>4==15){var r=this._getPktLen(t[s+3],t[s+4],t[s+5]);if(r<=0)continue;var o=t.subarray(s,s+r),a=new Uint8Array(r);a.set(o,0),i.push({ptime:n,data:a}),n+=this.frameDurSec,s+=r}else s+=1;return i},e}(),he="M3U8",ce="TS",de="FETCH",pe=function(){function e(){}return e.init=function(i){e.collect=new t(i)},e.send=function(t,i){var n,s;null==(s=e.collect)||null==(n=s.send)||n.call(s,{action:t,logInfo:i})},e.updateParams=function(t){e.collect.updateExtendsInfo(t)},e}();function fe(e,t,i){return t&&function(e,t){for(var i=0;i ",e),s=null})).catch((function(n){var s,r,o,a;t.logger.error("[MpegTsDemux] demuxerTsInit ERROR fetch ERROR ==> ",n),null==(r=t.event)||null==(s=r.emit)||s.call(r,ce,{data:n}),null==(a=t.event)||null==(o=a.emit)||o.call(a,de,{data:n,type:ce}),null==i||i.onDemuxedFailed(n,e),pe.send(100,{url:e,msg:"fetch error"})}))},t._demuxCore=function(e,t){e.length<=0||this.decoderWorker.postMessage($(Q,{buff:e,tsUrl:t}))},t.readMediaInfo=function(){return this.mediaInfo},t.readAudioNone=function(){var e;return null==(e=this.mediaInfo)?void 0:e.audioNone},t.isHEVC=function(){return this.mediaInfo.vCodec===d||this.mediaInfo.vCodec===c},t.destroy=function(){this.controller&&this.controller.abort(),this.controller=null,this.mediaInfo=null,this.aacDec=null},t._onWorkerMessage=function(){var e=this;e.logger.log("[demuxer] register _onWorkerMessage"),e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case J:var n,s;if(e.mediaInfo=i.data,e.mediaInfo)null==(s=e.event)||null==(n=s.emit)||n.call(s,"mediaInfo",e.mediaInfo);break;case z:var r;if(e.mediaInfo.vCodec)null==e.aacDec?e.aacDec=new ue(e.mediaInfo):e.aacDec.updateOptions(e.mediaInfo),null==e||null==(r=e.onDemuxed)||r.call(e)}}))},fe(e,[{key:"vCodec",get:function(){return this.mediaInfo.vCodec}}]),e}(),ge=function(){function e(e,t,i,n){this.pts=e,this.dts=e,this.isKey=t,this.data=i,this.video=n}return e.prototype.setFrame=function(e,t,i,n){this.pts=e,this.isKey=t,this.data=i,this.video=n},e}(),ye=function(){function e(e){this.logger=null==e?void 0:e.logger,this.event=null==e?void 0:e.event,this.decoderWorker=e.decoderWorker,this.m3u8Base=new le(e),this.mpegTsDemux=new ve(e),this.tsList=[],this._startTime=0,this._aStartTime=0,this.lockWait={state:!1,lockMember:{dur:0}},this._timerFeed=null,this.seekPos=-1,this.vPreFramePTS=0,this.aPreFramePTS=0,this.audioNone=!1,this.isHevcParam=!1,this.vCodec="",this.aCodec=null,this.aChannel=0,this.durationMs=-1,this.fps=-1,this.sampleRate=-1,this.size={width:-1,height:-1},this.mediaInfo=null,this._onWorkerMessage(),this.onReadyOBJ=null,this.onFinished=null,this.onDemuxed=null,this.onSamples=null,this.onCacheProcess=null}var t=e.prototype;return t.getCachePTS=function(){return Math.max(this.vPreFramePTS,this.aPreFramePTS)},t.demux=function(e){var t=this,i=this;this.vPreFramePTS=0,this.aPreFramePTS=0,this.m3u8Base.onTransportStream=function(e,t){i.tsList.push({streamURI:e,streamDur:t}),i.lockWait.state=!1},this.m3u8Base.onFinished=function(e){var t;e.type===p?i.durationMs=1e3*e.duration:i.durationMs=-1,null==i||null==(t=i.onFinished)||t.call(i,i.onReadyOBJ,e)},this.mpegTsDemux.onDemuxedFailed=function(e,n){t.logger.error("[M3u8] onDemuxedFailed: ",e,n),i.lockWait.state=!1},this.mpegTsDemux.onDemuxed=function(){var e;t.logger.log("[M3u8] onDemuxed"),null==i.mediaInfo&&(i.mediaInfo=i.mpegTsDemux.readMediaInfo(),t.logger.log("[M3u8] mediaInfo: ",i.mediaInfo),i.isHevcParam=i.mpegTsDemux.isHEVC(),i.vCodec=i.mpegTsDemux.vCodec,i.aCodec=i.mediaInfo.aCodec,i.aChannel=i.mediaInfo.sampleChannel,i.fps=i.mediaInfo.fps,i.sampleRate=i.mediaInfo.sampleRate,(null===i.aCodec||""===i.aCodec||i.aChannel<=0)&&(i.audioNone=!0),i.mediaInfo.width>0&&i.mediaInfo.height>0&&(t.size.width=t.mediaInfo.width,t.size.height=t.mediaInfo.height)),null==i||null==(e=i.onDemuxed)||e.call(i,i.onReadyOBJ),i.mpegTsDemux&&t.decoderWorker.postMessage($(q))},this.mpegTsDemux.onReady=function(){i._fetchM3u8AndIntervalTs(e)},this._timerTsWasm=window.setInterval((function(){1===ke.__HLS_WASM_DecoderState__&&(i._fetchM3u8AndIntervalTs(e),window.clearInterval(i._timerTsWasm),i._timerTsWasm=null)}),500)},t._fetchM3u8AndIntervalTs=function(e){var t=this,i=this;this.logger.log("[M3u8] start fetch m3u8 url"),i.m3u8Base.fetchM3u8(e),i._timerFeed=window.setInterval((function(){if(i.tsList.length>0&&!i.lockWait.state)try{var e=i.tsList.shift();if(null!=e){var n=e.streamURI,s=e.streamDur;i.lockWait.state=!0,i.lockWait.lockMember.dur=+s,i.mpegTsDemux.demuxURL(n)}else t.logger.error("[M3u8] onTsReady need wait ")}catch(e){var r,o,a,l;t.logger.error("[M3u8] onTsReady ERROR:",e),null==(o=t.event)||null==(r=o.emit)||r.call(o,he,{data:e}),null==(l=t.event)||null==(a=l.emit)||a.call(l,de,{data:e,type:he}),i.lockWait.state=!1}}),50)},t.destroy=function(){var e;this.m3u8Base&&(null==(e=this.m3u8Base)||e.destroy(),this.m3u8Base=null);this._timerFeed&&(window.clearInterval(this._timerFeed),this._timerFeed=null),this.mpegTsDemux&&(this.mpegTsDemux.destroy(),this.mpegTsDemux=null)},t.bindReady=function(e){this.onReadyOBJ=e},t.getACodec=function(){return this.aCodec},t.getVCodec=function(){return this.vCodec},t.getDurationMs=function(){return this.durationMs},t.getFPS=function(){return this.fps},t.getSampleRate=function(){return this.sampleRate},t.getSampleChannel=function(){return this.aChannel},t.getSize=function(){return this.size},t._onWorkerMessage=function(){this.logger.log("[M3U8] register _onWorkerMessage");var e=this;e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case q:var n,s=i.data,r=s.type,o=s.pts,a=s.ptime,l=s.keyframe,u=s.data,c=s.layer;if(u=new Uint8Array(u),1===r&&e.mpegTsDemux.mediaInfo.aCodec===h&&(u=e.mpegTsDemux.aacDec.sliceAACFrames(a,u)),0===r){var d=function(e){var t=e.nalu,i=e.vlc.vlc;null==t.vps&&(t.vps=new Uint8Array);var n=new Uint8Array(t.vps.length+t.sps.length+t.pps.length+t.sei.length+i.length);return n.set(t.vps,0),n.set(t.sps,t.vps.length),n.set(t.pps,t.vps.length+t.sps.length),n.set(t.sei,t.vps.length+t.sps.length+t.pps.length),n.set(i,t.vps.length+t.sps.length+t.pps.length+t.sei.length),n}(c),p=o,f=new ge(p,1===l,d,!0);e.vPreFramePTS=p,null==e||e.onSamples(e.onReadyOBJ,f)}else if(1===r){var m;if("aac"===(null==(m=e.mediaInfo)?void 0:m.aCodec)){for(var v=u,g=0;g0&&(e.$video.volume=e._options.volume)}),1e3)})),e.event.emit("parsed")}))}))}else if(this.$video.canPlayType("application/vnd.apple.mpegurl")){this.logger.log("Browser support application/vnd.apple.mpegurl : ",this.$video.canPlayType("application/vnd.apple.mpegurl")),this.$video.src=this._options.url;var n=!1;this.$video.addEventListener("canplay",(function(){!n&&e._options.autoPlay&&setTimeout((function(){e.$video.play().then((function(){e.logger.log("autoPlay video!"),setTimeout((function(){e._options.volume>0&&e.setVolume(e._options.volume)}),1e3),n=!0}))}),200)}))}else this.logger.warn("Browser not support hls")},n.isPlayingState=function(){return!this.$video.paused},n.play=function(){if(this.isPlayingState())return Promise.resolve();if(this._options.isLive&&(this.$video.buffered.length>=1&&this.$video.buffered.end(0)>1)){var e=this.$video.buffered.end(0)-1;this.$video.currentTime=e}return this.$video.play()},n.pause=function(){this.$video.pause()},n.setVolume=function(e){this.$video.muted&&(this.$video.muted=!1),this._volume=+(e||0),0===this._volume&&(this.$video.muted=!0),this.$video.volume=this._volume},n.destroy=function(){this.$video&&this.$video.pause(),this._hls&&(this._hls.destroy(),this._hls=null),e.prototype.destroy.call(this)},n._onEvent=function(){var e;(e=this).$video&&(e.$video.addEventListener("canplay",(function(){e.event.emit("canplay")})),e.$video.addEventListener("loadeddata",(function(){e.event.emit("loadeddata")})),e.$video.addEventListener("volumechange",(function(){e.event.emit("volumechange",{data:e.$video.volume})})),e.$video.addEventListener("waiting",(function(){e.event.emit("waiting")})),e.$video.addEventListener("timeupdate",(function(){var t;null==(t=e.event)||t.emit("timeupdate")})),e.$video.addEventListener("seeking",(function(){e.event.emit("seeking",{data:e.$video.currentTime})})),e.$video.addEventListener("seeked",(function(){e.event.emit("seeked")})),e.$video.addEventListener("abort",(function(){e.event.emit("abort")})),e.$video.addEventListener("error",(function(){var t;null==(t=e.event)||t.emit("error",{data:e.$video.error})})),e.$video.addEventListener("ended",(function(){e.event.emit("ended")})))},_e(t,[{key:"volume",get:function(){return this._volume},set:function(e){this.setVolume(e)}}]),t}(te);var Ce="wasm_loaded",xe="wasm_failed",Se="init";function Le(e,t){return Le=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Le(e,t)}var be=function(e){function t(t){var i;return void 0===t&&(t={}),i=e.call(this,t)||this,t.url=n.addVc(null==t?void 0:t.url,["h264","h265"]),function(e,t){if(((null==t?void 0:t.volume)||0)>1?e._volume=1:((null==t?void 0:t.volume)||0)<=0?e._volume=0:e._volume=+((null==t?void 0:t.volume)||0),t.volume=e._volume,e.options=r.merge({},Z,t),"string"!=typeof e.options.id)throw new Error("id is required!");e.logger=s(e.options.loggerOptions),e.event=new o,e.logger.log("HlsPlayer version: ",ke.version),e.logger.log("HlsPlayer options: ",e.options),e.options.logger=e.logger}(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(i),t),i._containerClassName=K+"-container",i._render(),i}!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Le(e,t)}(t,e);var i=t.prototype;return i._render=function(){this.$container.classList.add(this._containerClassName)},i.destroy=function(){this.$container&&(this.$container.classList.remove(this._containerClassName),this.$container.innerHTML="",this.$container=null)},t}(e);function Re(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e=!0),this.playParam={durationMs:0,fps:0,sampleRate:0,size:{width:0,height:0},audioNone:e,videoCodec:L},!M())throw new Error("Browser not support WebAssembly!");this._onWorkerMessage()},i.play=function(){if(pe.send(1,{name:"play"}),null===this.player)return Promise.resolve();if(this.playParam.videoCodec===L){var e={seekPos:0,isLive:this.options.isLive,accurateSeek:!0,seekEvent:!1,realPlay:!0};return this.player.play(e)}return this.player.play()},i.pause=function(){return pe.send(1,{name:"pause"}),null!==this.player&&(this.player.pause(),!0)},i.destroy=function(){var t,i;return pe.send(1,{name:"destroy"}),void 0!==this.player&&null!==this.player&&(this.playParam.videoCodec===L&&this._m3u8Obj&&(this._m3u8Obj.destroy(),this._m3u8Obj=null),this.player.destroy(),this._decoderWorker&&(this._decoderWorker.postMessage($(X)),this._decoderWorker.terminate(),this._decoderWorker=null),this.logger.log("destroy"),null==(i=this.event)||null==(t=i.emit)||t.call(i,"destroy"),this.player=null,e.prototype.destroy.call(this),!0)},i.isPlaying=function(){return null!==this.player&&this.player.isPlayingState()},i.setVolume=function(e){var t;(e=+e)>1||e<0?this.logger.warn("volume volume value 0.0 ~ 1.0!"):((t=this).player||(t.event.emit("playerIsNull"),t.logger.warn("Player instance does not exist!"),0))&&(this.player.setVolume(e),this.event.emit("volumeChange",{data:e}))},i.getVersion=function(){return pe.send(1,{name:"getVersion"}),"0.1.0-beta.2"},i._m3u8Entry=function(){var e=this;this._m3u8Obj=new ye({logger:this.logger,decoderWorker:this._decoderWorker,event:this.event}),this._m3u8Obj.bindReady(this),this._m3u8Obj.onFinished=function(e,t){},this._m3u8Obj.onCacheProcess=function(t){e.options.isLive||null==e.onCacheProcess||e.onCacheProcess.call(e,t)},this._m3u8Obj.onDemuxed=this._checkPlayer.bind(this),this._m3u8Obj.onSamples=this._hlsOnSamples.bind(this),this._m3u8Obj.demux(this.url)},i._checkPlayer=function(e,t){var i=this;if(null==i.player){var n,s,r;if(!(null==i||null==(n=i._m3u8Obj)?void 0:n.isHevcParam)||t)return null==i||null==(r=i._m3u8Obj)||null==(s=r.destroy)||s.call(r),i._m3u8Obj=null,this._decoderWorker.terminate(),this._decoderWorker=null,void(i.player=new we(De({},this.options,{event:this.event,logger:this.logger})));var o=i._m3u8Obj.getACodec(),a=i._m3u8Obj.getFPS(),l=i._m3u8Obj.getSampleRate(),u=i._m3u8Obj.getSize(),h=!1;h=i._m3u8Obj.getSampleChannel()<=0||""===o,i._softPlayer(0,a,l,u,h)}},i._hlsOnSamples=function(e,t){var i,n,s,r=this;if(t.video)null==(s=r.player)||null==(n=s.appendHevcFrame)||n.call(s,t);else if(!(null==(i=r._m3u8Obj)?void 0:i.audioNone)){var o,a;null==(a=r.player)||null==(o=a.appendAACFrame)||o.call(a,t)}},i._onWorkerMessage=function(){var e=this,i=this;this._decoderWorker.onmessage=function(n){var s=n.data;switch(s.cmd){case W:t.__HLS_WASM_DecoderState__=0;break;case V:t.__HLS_WASM_DecoderState__=1,e.logger.log("Wasm already init over!"),i.event.emit(Ce),i._decoderWorker.postMessage($("registerWasmPlayer")),i._m3u8Entry();break;case j:t.__HLS_WASM_DecoderState__=-1,e.logger.error("Wasm init failed!",s),i.event.emit(xe,s),pe.send("wasm",{name:"wasm loading failed"}),i._checkPlayer(!0)}}},i._softPlayer=function(e,t,i,n,s,r){var o,a,l=this;void 0===s&&(s=!1),void 0===r&&(r=null);var u,h=this;(this.playParam.durationMs=e,this.playParam.fps=t,this.playParam.sampleRate=i,this.playParam.size=n,this.playParam.audioNone=s,this.playParam.videoCodec=r||L,this.logger.log("this.playParam: ",this.playParam),this.logger.log("start init soft player"),this.player=new re(De({},h.options,{sampleRate:i,fps:t,appendHevcType:v,fixed:!1,id:this.options.id,audioNone:s,videoCodec:r,logger:this.logger,event:this.event,decoderWorker:this._decoderWorker})),this.player.onPlayingTime=function(e){var t;null==h||null==(t=h.onPlayTime)||t.call(h,e)},this.player.onPlayingFinish=function(){var e,t;(l.pause(),null!=l.onPlayFinish)&&(null==(t=l)||null==(e=t.onPlayFinish)||e.call(t))},this.player.onLoadCache=function(){var e,t;null==(t=l)||null==(e=t.onLoadCache)||e.call(t)},this.player.onLoadCacheFinished=function(){var e,t;null==(t=l)||null==(e=t.onLoadCacheFinished)||e.call(t)},null==(o=h.player)||o.setDurationMs(e),null==(a=h.player)||a.setFrameRate(t),null!=h.onReadyShowDone)&&(null==h||null==(u=h.onReadyShowDone)||u.call(h));this.event.emit("parsed"),this.player&&this.options.autoPlay&&this.play()},t.supportType=function(e){if(pe.send(1,{name:"supportType",options:e}),"hls"===e.type)return!0;if(e.url){var t=e.url;t.startsWith("http://")||t.startsWith("https://")||(t=/^\/\//.test(t)?"http:"+t:location.origin+location.pathname+t);try{return/\.m3u8$/i.test(new URL(t).pathname)}catch(e){}}return!1},Re(t,[{key:"volume",get:function(){return this.player?this.player.volume:this.options.volume},set:function(e){e=+e,this.setVolume(e)}}]),t}(be);ke.__HLS_WASM_DecoderState__=0,ke.version="0.1.0-beta.2",module.exports=ke; diff --git a/dist/index.umd.js b/dist/index.umd.js index 1d738f6..97aedb7 100644 --- a/dist/index.umd.js +++ b/dist/index.umd.js @@ -1,6 +1,6 @@ /* * -* HlsPlayer.js v0.1.0-beta.1 +* HlsPlayer.js v0.1.0-beta.2 * Copyright (c) 2024-8-1 Ezviz-OpenBiz * . * @@ -57,4 +57,4 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ -const bl={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},Ll=e=>String.fromCharCode(bl[e]||e),wl=15,Al=100,Rl={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},kl={17:2,18:4,21:6,22:8,23:10,19:13,20:15},_l={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},Dl={25:2,26:4,29:6,30:8,31:10,27:13,28:15},xl=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];class Cl{constructor(){this.time=null,this.verboseLevel=0}log(e,t){if(this.verboseLevel>=e){const i="function"==typeof t?t():t;lr.log(`${this.time} [${e}] ${i}`)}}}const Il=function(e){const t=[];for(let i=0;iAl&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=Al)}moveCursor(e){const t=this.pos+e;if(e>1)for(let e=this.pos+1;e=144&&this.backSpace();const t=Ll(e);this.pos>=Al?this.logger.log(0,(()=>"Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!")):(this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1))}clearFromPos(e){let t;for(t=e;t"pacData = "+JSON.stringify(e)));let t=e.row-1;if(this.nrRollUpRows&&t"bkgData = "+JSON.stringify(e))),this.backSpace(),this.setPen(e),this.insertChar(32)}setRollUpRows(e){this.nrRollUpRows=e}rollUp(){if(null===this.nrRollUpRows)return void this.logger.log(3,"roll_up but nrRollUpRows not set yet");this.logger.log(1,(()=>this.getDisplayText()));const e=this.currRow+1-this.nrRollUpRows,t=this.rows.splice(e,1)[0];t.clear(),this.rows.splice(this.currRow,0,t),this.logger.log(2,"Rolling up")}getDisplayText(e){e=e||!1;const t=[];let i="",r=-1;for(let i=0;i0&&(i=e?"["+t.join(" | ")+"]":t.join("\n")),i}getTextAndFormat(){return this.rows}}class Nl{constructor(e,t,i){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 Fl(i),this.nonDisplayedMemory=new Fl(i),this.lastOutputScreen=new Fl(i),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=i}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],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)),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)}insertChars(e){for(let t=0;tt+": "+this.writeScreen.getDisplayText(!0))),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(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"),"MODE_TEXT"!==this.mode&&(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"),"MODE_POP-ON"===this.mode){const e=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=e,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,(()=>"DISP: "+this.displayedMemory.getDisplayText()))}this.outputDataUpdate(!0)}ccTO(e){this.logger.log(2,"TO("+e+") - Tab Offset"),this.writeScreen.moveCursor(e)}ccMIDROW(e){const t={flash:!1};if(t.underline=e%2==1,t.italics=e>=46,t.italics)t.foreground="white";else{const i=Math.floor(e/2)-16,r=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=r[i]}this.logger.log(2,"MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)}outputDataUpdate(e=!1){const t=this.logger.time;null!==t&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?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.cueStartTime=t,this.lastOutputScreen.copy(this.displayedMemory))}cueSplitAtTime(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))}}class Ul{constructor(e,t,i){this.channels=void 0,this.currentChannel=0,this.cmdHistory={a:null,b:null},this.logger=void 0;const r=this.logger=new Cl;this.channels=[null,new Nl(e,t,r),new Nl(e+1,i,r)]}getHandler(e){return this.channels[e].getHandler()}setHandler(e,t){this.channels[e].setHandler(t)}addData(e,t){this.logger.time=e;for(let e=0;e"["+Il([t[e],t[e+1]])+"] -> ("+Il([i,r])+")"));const a=this.cmdHistory;if(i>=16&&i<=31){if($l(i,r,a)){Bl(null,null,a),this.logger.log(3,(()=>"Repeated command ("+Il([i,r])+") is dropped"));continue}Bl(i,r,this.cmdHistory),s=this.parseCmd(i,r),s||(s=this.parseMidrow(i,r)),s||(s=this.parsePAC(i,r)),s||(s=this.parseBackgroundAttributes(i,r))}else Bl(null,null,a);if(!s&&(n=this.parseChars(i,r),n)){const e=this.currentChannel;if(e&&e>0){this.channels[e].insertChars(n)}else this.logger.log(2,"No channel found yet. TEXT-MODE?")}s||n||this.logger.log(2,(()=>"Couldn't parse cleaned data "+Il([i,r])+" orig: "+Il([t[e],t[e+1]])))}}parseCmd(e,t){if(!((20===e||28===e||21===e||29===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=33&&t<=35))return!1;const i=20===e||21===e||23===e?1:2,r=this.channels[i];return 20===e||21===e||28===e||29===e?32===t?r.ccRCL():33===t?r.ccBS():34===t?r.ccAOF():35===t?r.ccAON():36===t?r.ccDER():37===t?r.ccRU(2):38===t?r.ccRU(3):39===t?r.ccRU(4):40===t?r.ccFON():41===t?r.ccRDC():42===t?r.ccTR():43===t?r.ccRTD():44===t?r.ccEDM():45===t?r.ccCR():46===t?r.ccENM():47===t&&r.ccEOC():r.ccTO(t-32),this.currentChannel=i,!0}parseMidrow(e,t){let i=0;if((17===e||25===e)&&t>=32&&t<=47){if(i=17===e?1:2,i!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;const r=this.channels[i];return!!r&&(r.ccMIDROW(t),this.logger.log(3,(()=>"MIDROW ("+Il([e,t])+")")),!0)}return!1}parsePAC(e,t){let i;if(!((e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127)&&!((16===e||24===e)&&t>=64&&t<=95))return!1;const r=e<=23?1:2;i=t>=64&&t<=95?1===r?Rl[e]:_l[e]:1===r?kl[e]:Dl[e];const s=this.channels[r];return!!s&&(s.setPAC(this.interpretPAC(i,t)),this.currentChannel=r,!0)}interpretPAC(e,t){let i;const r={color:null,italics:!1,indent:null,underline:!1,row:e};return i=t>95?t-96:t-64,r.underline=!(1&~i),i<=13?r.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(i/2)]:i<=15?(r.italics=!0,r.color="white"):r.indent=4*Math.floor((i-16)/2),r}parseChars(e,t){let i,r=null,s=null;if(e>=25?(i=2,s=e-8):(i=1,s=e),s>=17&&s<=19){let e;e=17===s?t+80:18===s?t+112:t+144,this.logger.log(2,(()=>"Special char '"+Ll(e)+"' in channel "+i)),r=[e]}else e>=32&&e<=127&&(r=0===t?[e]:[e,t]);return r&&this.logger.log(3,(()=>"Char codes = "+Il(r).join(","))),r}parseBackgroundAttributes(e,t){if(!((16===e||24===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=45&&t<=47))return!1;let i;const r={};16===e||24===e?(i=Math.floor((t-32)/2),r.background=xl[i],t%2==1&&(r.background=r.background+"_semi")):45===t?r.background="transparent":(r.foreground="black",47===t&&(r.underline=!0));const s=e<=23?1:2;return this.channels[s].setBkgData(r),!0}reset(){for(let e=0;ee)&&(this.startTime=e),this.endTime=t,this.screen=i,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}var Kl=function(){if(null!=Ar&&Ar.VTTCue)return self.VTTCue;const e=["","lr","rl"],t=["start","middle","end","left","right"];function i(e,t){if("string"!=typeof t)return!1;if(!Array.isArray(e))return!1;const i=t.toLowerCase();return!!~e.indexOf(i)&&i}function r(e){return i(t,e)}function s(e,...t){let i=1;for(;i100)throw new Error("Position must be between 0 and 100.");T=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"positionAlign",s({},l,{get:function(){return E},set:function(e){const t=r(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");E=t,this.hasBeenReset=!0}})),Object.defineProperty(o,"size",s({},l,{get:function(){return S},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");S=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"align",s({},l,{get:function(){return b},set:function(e){const t=r(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");b=t,this.hasBeenReset=!0}})),o.displayState=void 0}return n.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},n}();class Vl{decode(e,t){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))}}function Hl(e){function t(e,t,i,r){return 3600*(0|e)+60*(0|t)+(0|i)+parseFloat(r||0)}const i=e.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return i?parseFloat(i[2])>59?t(i[2],i[3],0,i[4]):t(i[1],i[2],i[3],i[4]):null}class jl{constructor(){this.values=Object.create(null)}set(e,t){this.get(e)||""===t||(this.values[e]=t)}get(e,t,i){return i?this.has(e)?this.values[e]:t[i]:this.has(e)?this.values[e]:t}has(e){return e in this.values}alt(e,t,i){for(let r=0;r=0&&i<=100)return this.set(e,i),!0}return!1}}function Wl(e,t,i,r){const s=r?e.split(r):[e];for(const e in s){if("string"!=typeof s[e])continue;const r=s[e].split(i);if(2!==r.length)continue;t(r[0],r[1])}}const Yl=new Kl(0,0,""),ql="middle"===Yl.align?"middle":"center";function zl(e,t,i){const r=e;function s(){const t=Hl(e);if(null===t)throw new Error("Malformed timestamp: "+r);return e=e.replace(/^[^\sa-zA-Z-]+/,""),t}function n(){e=e.replace(/^\s+/,"")}if(n(),t.startTime=s(),n(),"--\x3e"!==e.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+r);e=e.slice(3),n(),t.endTime=s(),n(),function(e,t){const r=new jl;Wl(e,(function(e,t){let s;switch(e){case"region":for(let s=i.length-1;s>=0;s--)if(i[s].id===t){r.set(e,i[s].region);break}break;case"vertical":r.alt(e,t,["rl","lr"]);break;case"line":s=t.split(","),r.integer(e,s[0]),r.percent(e,s[0])&&r.set("snapToLines",!1),r.alt(e,s[0],["auto"]),2===s.length&&r.alt("lineAlign",s[1],["start",ql,"end"]);break;case"position":s=t.split(","),r.percent(e,s[0]),2===s.length&&r.alt("positionAlign",s[1],["start",ql,"end","line-left","line-right","auto"]);break;case"size":r.percent(e,t);break;case"align":r.alt(e,t,["start",ql,"end","left","right"])}}),/:/,/\s/),t.region=r.get("region",null),t.vertical=r.get("vertical","");let s=r.get("line","auto");"auto"===s&&-1===Yl.line&&(s=-1),t.line=s,t.lineAlign=r.get("lineAlign","start"),t.snapToLines=r.get("snapToLines",!0),t.size=r.get("size",100),t.align=r.get("align",ql);let n=r.get("position","auto");"auto"===n&&50===Yl.position&&(n="start"===t.align||"left"===t.align?0:"end"===t.align||"right"===t.align?100:50),t.position=n}(e,t)}function Xl(e){return e.replace(//gi,"\n")}class Ql{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new Vl,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(e){const t=this;function i(){let e=t.buffer,i=0;for(e=Xl(e);i>>0).toString()};function th(e,t,i){return eh(e.toString())+eh(t.toString())+eh(i)}function ih(e,t,i,r,s,n,a){const o=new Ql,l=Jr(new Uint8Array(e)).trim().replace(Jl,"\n").split("\n"),h=[],c=t?function(e,t=1){return zo(e,qo,1/t)}(t.baseTime,t.timescale):0;let d,u="00:00.000",f=0,g=0,m=!0;o.oncue=function(e){const n=i[r];let a=i.ccOffset;const o=(f-c)/9e4;if(null!=n&&n.new&&(void 0!==g?a=i.ccOffset=n.start:function(e,t,i){let r=e[t],s=e[r.prevCC];if(!s||!s.new&&r.new)return e.ccOffset=e.presentationOffset=r.start,void(r.new=!1);for(;null!=(n=s)&&n.new;){var n;e.ccOffset+=r.start-s.start,r.new=!1,r=s,s=e[r.prevCC]}e.presentationOffset=i}(i,r,o)),o){if(!t)return void(d=new Error("Missing initPTS for VTT MPEGTS"));a=o-i.presentationOffset}const l=e.endTime-e.startTime,u=tl(9e4*(e.startTime+a-g),9e4*s)/9e4;e.startTime=Math.max(u,0),e.endTime=Math.max(u+l,0);const m=e.text.trim();e.text=decodeURIComponent(encodeURIComponent(m)),e.id||(e.id=th(e.startTime,e.endTime,m)),e.endTime>0&&h.push(e)},o.onparsingerror=function(e){d=e},o.onflush=function(){d?a(d):n(h)},l.forEach((e=>{if(m){if(Zl(e,"X-TIMESTAMP-MAP=")){m=!1,e.slice(16).split(",").forEach((e=>{Zl(e,"LOCAL:")?u=e.slice(6):Zl(e,"MPEGTS:")&&(f=parseInt(e.slice(7)))}));try{g=function(e){let t=parseInt(e.slice(-3));const i=parseInt(e.slice(-6,-4)),r=parseInt(e.slice(-9,-7)),s=e.length>9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!(Ji(t)&&Ji(i)&&Ji(r)&&Ji(s)))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${e}`);return t+=1e3*i,t+=6e4*r,t+=36e5*s,t}(u)/1e3}catch(e){d=e}return}""===e&&(m=!1)}o.parse(e+"\n")})),o.flush()}const rh="stpp.ttml.im1t",sh=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,nh=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,ah={left:"start",center:"center",right:"end",start:"start",end:"end"};function oh(e,t,i,r){const s=ds(new Uint8Array(e),["mdat"]);if(0===s.length)return void r(new Error("Could not parse IMSC1 mdat"));const n=s.map((e=>Jr(e))),a=function(e,t,i=1,r=!1){return zo(e,t,1/i,r)}(t.baseTime,1,t.timescale);try{n.forEach((e=>i(function(e,t){const i=(new DOMParser).parseFromString(e,"text/xml"),r=i.getElementsByTagName("tt")[0];if(!r)throw new Error("Invalid ttml");const s={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},n=Object.keys(s).reduce(((e,t)=>(e[t]=r.getAttribute(`ttp:${t}`)||s[t],e)),{}),a="preserve"!==r.getAttribute("xml:space"),o=hh(lh(r,"styling","style")),l=hh(lh(r,"layout","region")),h=lh(r,"body","[begin]");return[].map.call(h,(e=>{const i=ch(e,a);if(!i||!e.hasAttribute("begin"))return null;const r=fh(e.getAttribute("begin"),n),s=fh(e.getAttribute("dur"),n);let h=fh(e.getAttribute("end"),n);if(null===r)throw uh(e);if(null===h){if(null===s)throw uh(e);h=r+s}const c=new Kl(r-t,h-t,i);c.id=th(c.startTime,c.endTime,c.text);const d=function(e,t,i){const r="http://www.w3.org/ns/ttml#styling";let s=null;const n=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],a=null!=e&&e.hasAttribute("style")?e.getAttribute("style"):null;a&&i.hasOwnProperty(a)&&(s=i[a]);return n.reduce(((i,n)=>{const a=dh(t,r,n)||dh(e,r,n)||dh(s,r,n);return a&&(i[n]=a),i}),{})}(l[e.getAttribute("region")],o[e.getAttribute("style")],o),{textAlign:u}=d;if(u){const e=ah[u];e&&(c.lineAlign=e),c.align=u}return Qi(c,d),c})).filter((e=>null!==e))}(e,a))))}catch(e){r(e)}}function lh(e,t,i){const r=e.getElementsByTagName(t)[0];return r?[].slice.call(r.querySelectorAll(i)):[]}function hh(e){return e.reduce(((e,t)=>{const i=t.getAttribute("xml:id");return i&&(e[i]=t),e}),{})}function ch(e,t){return[].slice.call(e.childNodes).reduce(((e,i,r)=>{var s;return"br"===i.nodeName&&r?e+"\n":null!=(s=i.childNodes)&&s.length?ch(i,t):t?e+i.textContent.trim().replace(/\s+/g," "):e+i.textContent}),"")}function dh(e,t,i){return e&&e.hasAttributeNS(t,i)?e.getAttributeNS(t,i):null}function uh(e){return new Error(`Could not parse ttml timestamp ${e}`)}function fh(e,t){if(!e)return null;let i=Hl(e);return null===i&&(sh.test(e)?i=function(e,t){const i=sh.exec(e),r=(0|i[4])+(0|i[5])/t.subFrameRate;return 3600*(0|i[1])+60*(0|i[2])+(0|i[3])+r/t.frameRate}(e,t):nh.test(e)&&(i=function(e,t){const i=nh.exec(e),r=Number(i[1]);switch(i[2]){case"h":return 3600*r;case"m":return 60*r;case"ms":return 1e3*r;case"f":return r/t.frameRate;case"t":return r/t.tickRate}return r}(e,t))),i}function gh(e){return e.characteristics&&/transcribes-spoken-dialog/gi.test(e.characteristics)&&/describes-music-and-sound/gi.test(e.characteristics)?"captions":"subtitles"}function mh(e,t){return!!e&&e.kind===gh(t)&&vl(t,e)}class ph{constructor(e){this.hls=void 0,this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=e,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}setStreamController(e){this.streamController=e}destroy(){this.hls&&this.unregisterListener(),this.timer&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null}registerListeners(){const{hls:e}=this;e.on(tr.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.on(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){const{hls:e}=this;e.off(tr.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(e,t){const i=this.hls.levels[t.droppedLevel];this.isLevelAllowed(i)&&this.restrictedLevels.push({bitrate:i.bitrate,height:i.height,width:i.width})}onMediaAttaching(e,t){this.media=t.media instanceof HTMLVideoElement?t.media:null,this.clientRect=null,this.timer&&this.hls.levels.length&&this.detectPlayerSize()}onManifestParsed(e,t){const i=this.hls;this.restrictedLevels=[],this.firstLevel=t.firstLevel,i.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onLevelsUpdated(e,t){this.timer&&Ji(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)return void(this.clientRect=null);const e=this.hls.levels;if(e.length){const t=this.hls,i=this.getMaxLevel(e.length-1);i!==this.autoLevelCapping&&lr.log(`Setting autoLevelCapping to ${i}: ${e[i].height}p@${e[i].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),t.autoLevelCapping=i,t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}}getMaxLevel(e){const t=this.hls.levels;if(!t.length)return-1;const i=t.filter(((t,i)=>this.isLevelAllowed(t)&&i<=e));return this.clientRect=null,ph.getMaxLevelByMediaSize(i,this.mediaWidth,this.mediaHeight)}startCapping(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())}stopCapping(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)}getDimensions(){if(this.clientRect)return this.clientRect;const e=this.media,t={width:0,height:0};if(e){const i=e.getBoundingClientRect();t.width=i.width,t.height=i.height,t.width||t.height||(t.width=i.right-i.left||e.width||0,t.height=i.bottom-i.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(e){}return e}isLevelAllowed(e){return!this.restrictedLevels.some((t=>e.bitrate===t.bitrate&&e.width===t.width&&e.height===t.height))}static getMaxLevelByMediaSize(e,t,i){if(null==e||!e.length)return-1;let r=e.length-1;const s=Math.max(t,i);for(let t=0;t=s||i.height>=s)&&(n=i,!(a=e[t+1])||n.width!==a.width||n.height!==a.height)){r=t;break}}var n,a;return r}}const vh="[eme]";class yh{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=yh.CDMCleanupPromise?[yh.CDMCleanupPromise]:[],this.onMediaEncrypted=this._onMediaEncrypted.bind(this),this.onWaitingForKey=this._onWaitingForKey.bind(this),this.debug=lr.debug.bind(lr,vh),this.log=lr.log.bind(lr,vh),this.warn=lr.warn.bind(lr,vh),this.error=lr.error.bind(lr,vh),this.hls=e,this.config=e.config,this.registerListeners()}destroy(){this.unregisterListeners(),this.onMediaDetached();const 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(tr.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(tr.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this)}unregisterListeners(){this.hls.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(tr.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this)}getLicenseServerUrl(e){const{drmSystems:t,widevineLicenseUrl:i}=this.config,r=t[e];if(r)return r.licenseUrl;if(e===Rr.WIDEVINE&&i)return i;throw new Error(`no license server URL configured for key-system "${e}"`)}getServerCertificateUrl(e){const{drmSystems:t}=this.config,i=t[e];if(i)return i.serverCertificateUrl;this.log(`No Server Certificate in config.drmSystems["${e}"]`)}attemptKeySystemAccess(e){const t=this.hls.levels,i=(e,t,i)=>!!e&&i.indexOf(e)===t,r=t.map((e=>e.audioCodec)).filter(i),s=t.map((e=>e.videoCodec)).filter(i);return r.length+s.length===0&&s.push("avc1.42e01e"),new Promise(((t,i)=>{const n=e=>{const a=e.shift();this.getMediaKeysPromise(a,r,s).then((e=>t({keySystem:a,mediaKeys:e}))).catch((t=>{e.length?n(e):i(t instanceof Th?t:new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_ACCESS,error:t,fatal:!0},t.message))}))};n(e)}))}requestMediaKeySystemAccess(e,t){const{requestMediaKeySystemAccessFunc:i}=this.config;if("function"!=typeof i){let e=`Configured requestMediaKeySystemAccess is not a function ${i}`;return null===Mr&&"http:"===self.location.protocol&&(e=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`),Promise.reject(new Error(e))}return i(e,t)}getMediaKeysPromise(e,t,i){const r=function(e,t,i,r){let s;switch(e){case Rr.FAIRPLAY:s=["cenc","sinf"];break;case Rr.WIDEVINE:case Rr.PLAYREADY:s=["cenc"];break;case Rr.CLEARKEY:s=["cenc","keyids"];break;default:throw new Error(`Unknown key-system: ${e}`)}return function(e,t,i,r){return[{initDataTypes:e,persistentState:r.persistentState||"optional",distinctiveIdentifier:r.distinctiveIdentifier||"optional",sessionTypes:r.sessionTypes||[r.sessionType||"temporary"],audioCapabilities:t.map((e=>({contentType:`audio/mp4; codecs="${e}"`,robustness:r.audioRobustness||"",encryptionScheme:r.audioEncryptionScheme||null}))),videoCapabilities:i.map((e=>({contentType:`video/mp4; codecs="${e}"`,robustness:r.videoRobustness||"",encryptionScheme:r.videoEncryptionScheme||null})))}]}(s,t,i,r)}(e,t,i,this.config.drmSystemOptions),s=this.keySystemAccessPromises[e];let n=null==s?void 0:s.keySystemAccess;if(!n){this.log(`Requesting encrypted media "${e}" key-system access with config: ${JSON.stringify(r)}`),n=this.requestMediaKeySystemAccess(e,r);const t=this.keySystemAccessPromises[e]={keySystemAccess:n};return n.catch((t=>{this.log(`Failed to obtain access to key-system "${e}": ${t}`)})),n.then((i=>{this.log(`Access for key-system "${i.keySystem}" obtained`);const r=this.fetchServerCertificate(e);return this.log(`Create media-keys for "${e}"`),t.mediaKeys=i.createMediaKeys().then((t=>(this.log(`Media-keys created for "${e}"`),r.then((i=>i?this.setMediaKeysServerCertificate(t,e,i):t))))),t.mediaKeys.catch((t=>{this.error(`Failed to create media-keys for "${e}"}: ${t}`)})),t.mediaKeys}))}return n.then((()=>s.mediaKeys))}createMediaKeySessionContext({decryptdata:e,keySystem:t,mediaKeys:i}){this.log(`Creating key-system session "${t}" keyId: ${ts(e.keyId||[])}`);const r=i.createSession(),s={decryptdata:e,keySystem:t,mediaKeys:i,mediaKeysSession:r,keyStatus:"status-pending"};return this.mediaKeySessions.push(s),s}renewKeySession(e){const t=e.decryptdata;if(t.pssh){const i=this.createMediaKeySessionContext(e),r=this.getKeyIdString(t),s="cenc";this.keyIdToKeySessionPromise[r]=this.generateRequestWithPreferredKeySession(i,s,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(null===e.keyId)throw new Error("keyId is null");return ts(e.keyId)}updateKeySession(e,t){var i;const r=e.mediaKeysSession;return this.log(`Updating key-session "${r.sessionId}" for keyID ${ts((null==(i=e.decryptdata)?void 0:i.keyId)||[])}\n } (data length: ${t?t.byteLength:t})`),r.update(t)}selectKeySystemFormat(e){const t=Object.keys(e.levelkeys||{});return this.keyFormatPromise||(this.log(`Selecting key-system from fragment (sn: ${e.sn} ${e.type}: ${e.level}) key formats ${t.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(t)),this.keyFormatPromise}getKeyFormatPromise(e){return new Promise(((t,i)=>{const r=Or(this.config),s=e.map(Cr).filter((e=>!!e&&-1!==r.indexOf(e)));return this.getKeySystemSelectionPromise(s).then((({keySystem:e})=>{const r=Pr(e);r?t(r):i(new Error(`Unable to find format for key-system "${e}"`))})).catch(i)}))}loadKey(e){const t=e.keyInfo.decryptdata,i=this.getKeyIdString(t),r=`(keyId: ${i} format: "${t.keyFormat}" method: ${t.method} uri: ${t.uri})`;this.log(`Starting session for key ${r}`);let s=this.keyIdToKeySessionPromise[i];return s||(s=this.keyIdToKeySessionPromise[i]=this.getKeySystemForKeyPromise(t).then((({keySystem:i,mediaKeys:s})=>(this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${e.frag.sn} ${e.frag.type}: ${e.frag.level} using key ${r}`),this.attemptSetMediaKeys(i,s).then((()=>{this.throwIfDestroyed();const e=this.createMediaKeySessionContext({keySystem:i,mediaKeys:s,decryptdata:t});return this.generateRequestWithPreferredKeySession(e,"cenc",t.pssh,"playlist-key")}))))),s.catch((e=>this.handleError(e)))),s}throwIfDestroyed(e="Invalid state"){if(!this.hls)throw new Error("invalid state")}handleError(e){this.hls&&(this.error(e.message),e instanceof Th?this.hls.trigger(tr.ERROR,e.data):this.hls.trigger(tr.ERROR,{type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_KEYS,error:e,fatal:!0}))}getKeySystemForKeyPromise(e){const t=this.getKeyIdString(e),i=this.keyIdToKeySessionPromise[t];if(!i){const t=Cr(e.keyFormat),i=t?[t]:Or(this.config);return this.attemptKeySystemAccess(i)}return i}getKeySystemSelectionPromise(e){if(e.length||(e=Or(this.config)),0===e.length)throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.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){const{initDataType:t,initData:i}=e;if(this.debug(`"${e.type}" event: init data type: "${t}"`),null===i)return;let r,s;if("sinf"===t&&this.config.drmSystems[Rr.FAIRPLAY]){const e=ns(new Uint8Array(i));try{const t=br(JSON.parse(e).sinf),i=ys(new Uint8Array(t));if(!i)return;r=i.subarray(8,24),s=Rr.FAIRPLAY}catch(e){return void this.warn('Failed to parse sinf "encrypted" event message initData')}}else{const e=function(e){if(!(e instanceof ArrayBuffer)||e.byteLength<32)return null;const t={version:0,systemId:"",kids:null,data:null},i=new DataView(e),r=i.getUint32(0);if(e.byteLength!==r&&r>44)return null;if(1886614376!==i.getUint32(4))return null;if(t.version=i.getUint32(8)>>>24,t.version>1)return null;t.systemId=ts(new Uint8Array(e,12,16));const s=i.getUint32(28);if(0===t.version){if(r-32this.generateRequestWithPreferredKeySession(s,t,i,"encrypted-event-key-match")));break}}l||(l=a[n]=this.getKeySystemSelectionPromise([s]).then((({keySystem:e,mediaKeys:s})=>{var a;this.throwIfDestroyed();const o=new ks("ISO-23001-7",n,null!=(a=Pr(e))?a:"");return o.pssh=new Uint8Array(i),o.keyId=r,this.attemptSetMediaKeys(e,s).then((()=>{this.throwIfDestroyed();const r=this.createMediaKeySessionContext({decryptdata:o,keySystem:e,mediaKeys:s});return this.generateRequestWithPreferredKeySession(r,t,i,"encrypted-event-no-match")}))}))),l.catch((e=>this.handleError(e)))}_onWaitingForKey(e){this.log(`"${e.type}" event`)}attemptSetMediaKeys(e,t){const i=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${e}"`);const r=Promise.all(i).then((()=>{if(!this.media)throw new Error("Attempted to set mediaKeys without media element attached");return this.media.setMediaKeys(t)}));return this.setMediaKeysQueue.push(r),r.then((()=>{this.log(`Media-keys set for "${e}"`),i.push(r),this.setMediaKeysQueue=this.setMediaKeysQueue.filter((e=>-1===i.indexOf(e)))}))}generateRequestWithPreferredKeySession(e,t,i,r){var s,n;const a=null==(s=this.config.drmSystems)||null==(n=s[e.keySystem])?void 0:n.generateRequest;if(a)try{const r=a.call(this.hls,t,i,e);if(!r)throw new Error("Invalid response from configured generateRequest filter");t=r.initDataType,i=e.decryptdata.pssh=r.initData?new Uint8Array(r.initData):null}catch(e){var o;if(this.warn(e.message),null!=(o=this.hls)&&o.config.debug)throw e}if(null===i)return this.log(`Skipping key-session request for "${r}" (no initData)`),Promise.resolve(e);const l=this.getKeyIdString(e.decryptdata);this.log(`Generating key-session request for "${r}": ${l} (init data type: ${t} length: ${i?i.byteLength:null})`);const h=new fl,c=e._onmessage=t=>{const i=e.mediaKeysSession;if(!i)return void h.emit("error",new Error("invalid state"));const{messageType:r,message:s}=t;this.log(`"${r}" message event for session "${i.sessionId}" message size: ${s.byteLength}`),"license-request"===r||"license-renewal"===r?this.renewLicense(e,s).catch((e=>{this.handleError(e),h.emit("error",e)})):"license-release"===r?e.keySystem===Rr.FAIRPLAY&&(this.updateKeySession(e,wr("acknowledged")),this.removeSession(e)):this.warn(`unhandled media key message type "${r}"`)},d=e._onkeystatuseschange=t=>{if(!e.mediaKeysSession)return void h.emit("error",new Error("invalid state"));this.onKeyStatusChange(e);const i=e.keyStatus;h.emit("keyStatus",i),"expired"===i&&(this.warn(`${e.keySystem} expired for key ${l}`),this.renewKeySession(e))};e.mediaKeysSession.addEventListener("message",c),e.mediaKeysSession.addEventListener("keystatuseschange",d);const u=new Promise(((e,t)=>{h.on("error",t),h.on("keyStatus",(i=>{i.startsWith("usable")?e():"output-restricted"===i?t(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,fatal:!1},"HDCP level output restricted")):"internal-error"===i?t(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_STATUS_INTERNAL_ERROR,fatal:!0},`key status changed to "${i}"`)):"expired"===i?t(new Error("key expired while generating request")):this.warn(`unhandled key status change "${i}"`)}))}));return e.mediaKeysSession.generateRequest(t,i).then((()=>{var t;this.log(`Request generated for key-session "${null==(t=e.mediaKeysSession)?void 0:t.sessionId}" keyId: ${l}`)})).catch((e=>{throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_SESSION,error:e,fatal:!1},`Error generating key-session request: ${e}`)})).then((()=>u)).catch((t=>{throw h.removeAllListeners(),this.removeSession(e),t})).then((()=>(h.removeAllListeners(),e)))}onKeyStatusChange(e){e.mediaKeysSession.keyStatuses.forEach(((t,i)=>{this.log(`key status change "${t}" for keyStatuses keyId: ${ts("buffer"in i?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):new Uint8Array(i))} session keyId: ${ts(new Uint8Array(e.decryptdata.keyId||[]))} uri: ${e.decryptdata.uri}`),e.keyStatus=t}))}fetchServerCertificate(e){const t=this.config,i=new(0,t.loader)(t),r=this.getServerCertificateUrl(e);return r?(this.log(`Fetching server certificate for "${e}"`),new Promise(((s,n)=>{const a={responseType:"arraybuffer",url:r},o=t.certLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(e,t,i,r)=>{s(e.data)},onError:(t,i,s,o)=>{n(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:s,response:qi({url:a.url,data:void 0},t)},`"${e}" certificate request failed (${r}). Status: ${t.code} (${t.text})`))},onTimeout:(t,i,s)=>{n(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:s,response:{url:a.url,data:void 0}},`"${e}" certificate request timed out (${r})`))},onAbort:(e,t,i)=>{n(new Error("aborted"))}};i.load(a,l,h)}))):Promise.resolve()}setMediaKeysServerCertificate(e,t,i){return new Promise(((r,s)=>{e.setServerCertificate(i).then((s=>{this.log(`setServerCertificate ${s?"success":"not supported by CDM"} (${null==i?void 0:i.byteLength}) on "${t}"`),r(e)})).catch((e=>{s(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:e,fatal:!0},e.message))}))}))}renewLicense(e,t){return this.requestLicense(e,new Uint8Array(t)).then((t=>this.updateKeySession(e,new Uint8Array(t)).catch((e=>{throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SESSION_UPDATE_FAILED,error:e,fatal:!0},e.message)}))))}unpackPlayReadyKeyMessage(e,t){const i=String.fromCharCode.apply(null,new Uint16Array(t.buffer));if(!i.includes("PlayReadyKeyMessage"))return e.setRequestHeader("Content-Type","text/xml; charset=utf-8"),t;const r=(new DOMParser).parseFromString(i,"application/xml"),s=r.querySelectorAll("HttpHeader");if(s.length>0){let t;for(let i=0,r=s.length;i in key message");return wr(atob(l))}setupLicenseXHR(e,t,i,r){const s=this.config.licenseXhrSetup;return s?Promise.resolve().then((()=>{if(!i.decryptdata)throw new Error("Key removed");return s.call(this.hls,e,t,i,r)})).catch((n=>{if(!i.decryptdata)throw n;return e.open("POST",t,!0),s.call(this.hls,e,t,i,r)})).then((i=>{e.readyState||e.open("POST",t,!0);return{xhr:e,licenseChallenge:i||r}})):(e.open("POST",t,!0),Promise.resolve({xhr:e,licenseChallenge:r}))}requestLicense(e,t){const i=this.config.keyLoadPolicy.default;return new Promise(((r,s)=>{const n=this.getLicenseServerUrl(e.keySystem);this.log(`Sending license request to URL: ${n}`);const a=new XMLHttpRequest;a.responseType="arraybuffer",a.onreadystatechange=()=>{if(!this.hls||!e.mediaKeysSession)return s(new Error("invalid state"));if(4===a.readyState)if(200===a.status){this._requestLicenseFailureCount=0;let t=a.response;this.log(`License received ${t instanceof ArrayBuffer?t.byteLength:t}`);const i=this.config.licenseResponseCallback;if(i)try{t=i.call(this.hls,a,n,e)}catch(e){this.error(e)}r(t)}else{const o=i.errorRetry,l=o?o.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>l||a.status>=400&&a.status<500)s(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:a,response:{url:n,data:void 0,code:a.status,text:a.statusText}},`License Request XHR failed (${n}). Status: ${a.status} (${a.statusText})`));else{const i=l-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${i} attempts left`),this.requestLicense(e,t).then(r,s)}}},e.licenseXhr&&e.licenseXhr.readyState!==XMLHttpRequest.DONE&&e.licenseXhr.abort(),e.licenseXhr=a,this.setupLicenseXHR(a,n,e,t).then((({xhr:t,licenseChallenge:i})=>{e.keySystem==Rr.PLAYREADY&&(i=this.unpackPlayReadyKeyMessage(t,i)),t.send(i)}))}))}onMediaAttached(e,t){if(!this.config.emeEnabled)return;const i=t.media;this.media=i,i.addEventListener("encrypted",this.onMediaEncrypted),i.addEventListener("waitingforkey",this.onWaitingForKey)}onMediaDetached(){const 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={},ks.clearKeyUriToKeyIdMap();const i=t.length;yh.CDMCleanupPromise=Promise.all(t.map((e=>this.removeSession(e))).concat(null==e?void 0:e.setMediaKeys(null).catch((e=>{this.log(`Could not clear media keys: ${e}`)})))).then((()=>{i&&(this.log("finished closing key sessions and clearing media keys"),t.length=0)})).catch((e=>{this.log(`Could not close sessions and clear media keys: ${e}`)}))}onManifestLoading(){this.keyFormatPromise=null}onManifestLoaded(e,{sessionKeys:t}){if(t&&this.config.emeEnabled&&!this.keyFormatPromise){const e=t.reduce(((e,t)=>(-1===e.indexOf(t.keyFormat)&&e.push(t.keyFormat),e)),[]);this.log(`Selecting key-system from session-keys ${e.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(e)}}removeSession(e){const{mediaKeysSession:t,licenseXhr:i}=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),i&&i.readyState!==XMLHttpRequest.DONE&&i.abort(),e.mediaKeysSession=e.decryptdata=e.licenseXhr=void 0;const r=this.mediaKeySessions.indexOf(e);return r>-1&&this.mediaKeySessions.splice(r,1),t.remove().catch((e=>{this.log(`Could not remove session: ${e}`)})).then((()=>t.close())).catch((e=>{this.log(`Could not close session: ${e}`)}))}}}yh.CDMCleanupPromise=void 0;class Th 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}}var Eh,Sh,bh;!function(e){e.MANIFEST="m",e.AUDIO="a",e.VIDEO="v",e.MUXED="av",e.INIT="i",e.CAPTION="c",e.TIMED_TEXT="tt",e.KEY="k",e.OTHER="o"}(Eh||(Eh={})),function(e){e.DASH="d",e.HLS="h",e.SMOOTH="s",e.OTHER="o"}(Sh||(Sh={})),function(e){e.OBJECT="CMCD-Object",e.REQUEST="CMCD-Request",e.SESSION="CMCD-Session",e.STATUS="CMCD-Status"}(bh||(bh={}));const Lh={[bh.OBJECT]:["br","d","ot","tb"],[bh.REQUEST]:["bl","dl","mtp","nor","nrr","su"],[bh.SESSION]:["cid","pr","sf","sid","st","v"],[bh.STATUS]:["bs","rtp"]};class wh{constructor(e,t){this.value=void 0,this.params=void 0,Array.isArray(e)&&(e=e.map((e=>e instanceof wh?e:new wh(e)))),this.value=e,this.params=t}}class Ah{constructor(e){this.description=void 0,this.description=e}}const Rh="Dict";function kh(e,t,i,r){return new Error(`failed to ${e} "${s=t,Array.isArray(s)?JSON.stringify(s):s instanceof Map?"Map{}":s instanceof Set?"Set{}":"object"==typeof s?JSON.stringify(s):String(s)}" as ${i}`,{cause:r});var s}const _h="Bare Item",Dh="Boolean",xh="Byte Sequence",Ch="Decimal",Ih="Integer";const Ph=/[\x00-\x1f\x7f]+/,Oh="Token",Mh="Key";function Fh(e,t,i){return kh("serialize",e,t,i)}function Nh(e){if(!1===ArrayBuffer.isView(e))throw Fh(e,xh);return`:${t=e,btoa(String.fromCharCode(...t))}:`;var t}function Uh(e){if(function(e){return e<-999999999999999||99999999999999912)throw Fh(e,Ch);const i=t.toString();return i.includes(".")?i:`${i}.0`}const Gh="String";function Kh(e){const t=(i=e).description||i.toString().slice(7,-1);var i;if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(t))throw Fh(t,Oh);return t}function Vh(e){switch(typeof e){case"number":if(!Ji(e))throw Fh(e,_h);return Number.isInteger(e)?Uh(e):$h(e);case"string":return function(e){if(Ph.test(e))throw Fh(e,Gh);return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}(e);case"symbol":return Kh(e);case"boolean":return function(e){if("boolean"!=typeof e)throw Fh(e,Dh);return e?"?1":"?0"}(e);case"object":if(e instanceof Date)return function(e){return`@${Uh(e.getTime()/1e3)}`}(e);if(e instanceof Uint8Array)return Nh(e);if(e instanceof Ah)return Kh(e);default:throw Fh(e,_h)}}function Hh(e){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(e))throw Fh(e,Mh);return e}function jh(e){return null==e?"":Object.entries(e).map((([e,t])=>!0===t?`;${Hh(e)}`:`;${Hh(e)}=${Vh(t)}`)).join("")}function Wh(e){return e instanceof wh?`${Vh(e.value)}${jh(e.params)}`:Vh(e)}function Yh(e,t={whitespace:!0}){if("object"!=typeof e)throw Fh(e,Rh);const i=e instanceof Map?e.entries():Object.entries(e),r=null!=t&&t.whitespace?" ":"";return Array.from(i).map((([e,t])=>{t instanceof wh==!1&&(t=new wh(t));let i=Hh(e);var r;return!0===t.value?i+=jh(t.params):(i+="=",Array.isArray(t.value)?i+=`(${(r=t).value.map(Wh).join(" ")})${jh(r.params)}`:i+=Wh(t)),i})).join(`,${r}`)}const qh=e=>"ot"===e||"sf"===e||"st"===e,zh=e=>"number"==typeof e?Ji(e):null!=e&&""!==e&&!1!==e;const Xh=e=>Math.round(e),Qh=e=>100*Xh(e/100),Jh={br:Xh,d:Xh,bl:Qh,dl:Qh,mtp:Qh,nor:(e,t)=>(null!=t&&t.baseUrl&&(e=function(e,t){const i=new URL(e),r=new URL(t);if(i.origin!==r.origin)return e;const s=i.pathname.split("/").slice(1),n=r.pathname.split("/").slice(1,-1);for(;s[0]===n[0];)s.shift(),n.shift();for(;n.length;)n.shift(),s.unshift("..");return s.join("/")}(e,t.baseUrl)),encodeURIComponent(e)),rtp:Qh,tb:Xh};function Zh(e,t={}){return e?function(e,t){return Yh(e,t)}(function(e,t){const i={};if(null==e||"object"!=typeof e)return i;const r=Object.keys(e).sort(),s=Qi({},Jh,null==t?void 0:t.formatters),n=null==t?void 0:t.filter;return r.forEach((r=>{if(null!=n&&n(r))return;let a=e[r];const o=s[r];o&&(a=o(a,t)),"v"===r&&1===a||"pr"==r&&1===a||zh(a)&&(qh(r)&&"string"==typeof a&&(a=new Ah(a)),i[r]=a)})),i}(e,t),Qi({whitespace:!1},t)):""}function ec(e,t,i){return Qi(e,function(e,t={}){if(!e)return{};const i=Object.entries(e),r=Object.entries(Lh).concat(Object.entries((null==t?void 0:t.customHeaderMap)||{})),s=i.reduce(((e,t)=>{var i;const[s,n]=t,a=(null==(i=r.find((e=>e[1].includes(s))))?void 0:i[0])||bh.REQUEST;return null!=e[a]||(e[a]={}),e[a][s]=n,e}),{});return Object.entries(s).reduce(((e,[i,r])=>(e[i]=Zh(r,t),e)),{})}(t,i))}const tc="CMCD";const ic=/CMCD=[^&#]+/;function rc(e,t,i){const r=function(e,t={}){if(!e)return"";const i=Zh(e,t);return`${tc}=${encodeURIComponent(i)}`}(t,i);if(!r)return e;if(ic.test(e))return e.replace(ic,r);const s=e.includes("?")?"&":"?";return`${e}${s}${r}`}function sc(e,t,i,r){e&&Object.keys(t).forEach((s=>{const n=e.filter((e=>e.groupId===s)).map((e=>{const n=Qi({},e);return n.details=void 0,n.attrs=new dr(n.attrs),n.url=n.attrs.URI=nc(e.url,e.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",i),n.groupId=n.attrs["GROUP-ID"]=t[s],n.attrs["PATHWAY-ID"]=r,n}));e.push(...n)}))}function nc(e,t,i,r){const{HOST:s,PARAMS:n,[i]:a}=r;let o;t&&(o=null==a?void 0:a[t],o&&(e=o));const l=new self.URL(e);return s&&!o&&(l.host=s),n&&Object.keys(n).sort().forEach((e=>{e&&l.searchParams.set(e,n[e])})),l.href}const ac=/^age:\s*[\d.]+\s*$/im;class oc{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 gr,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null}abortInternal(){const e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,4!==e.readyState&&(this.stats.aborted=!0,e.abort()))}abort(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(e,t,i){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=i,this.loadInternal()}loadInternal(){const{config:e,context:t}=this;if(!e||!t)return;const i=this.loader=new self.XMLHttpRequest,r=this.stats;r.loading.first=0,r.loaded=0,r.aborted=!1;const s=this.xhrSetup;s?Promise.resolve().then((()=>{if(this.loader===i&&!this.stats.aborted)return s(i,t.url)})).catch((e=>{if(this.loader===i&&!this.stats.aborted)return i.open("GET",t.url,!0),s(i,t.url)})).then((()=>{this.loader!==i||this.stats.aborted||this.openAndSendXhr(i,t,e)})).catch((e=>{this.callbacks.onError({code:i.status,text:e.message},t,i,r)})):this.openAndSendXhr(i,t,e)}openAndSendXhr(e,t,i){e.readyState||e.open("GET",t.url,!0);const r=t.headers,{maxTimeToFirstByteMs:s,maxLoadTimeMs:n}=i.loadPolicy;if(r)for(const t in r)e.setRequestHeader(t,r[t]);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),i.timeout=s&&Ji(s)?s:n,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),i.timeout),e.send()}readystatechange(){const{context:e,loader:t,stats:i}=this;if(!e||!t)return;const r=t.readyState,s=this.config;if(!i.aborted&&r>=2&&(0===i.loading.first&&(i.loading.first=Math.max(self.performance.now(),i.loading.start),s.timeout!==s.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),s.timeout=s.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),s.loadPolicy.maxLoadTimeMs-(i.loading.first-i.loading.start)))),4===r)){self.clearTimeout(this.requestTimeout),t.onreadystatechange=null,t.onprogress=null;const r=t.status,n="text"!==t.responseType;if(r>=200&&r<300&&(n&&t.response||null!==t.responseText)){i.loading.end=Math.max(self.performance.now(),i.loading.first);const s=n?t.response:t.responseText,a="arraybuffer"===t.responseType?s.byteLength:s.length;if(i.loaded=i.total=a,i.bwEstimate=8e3*i.total/(i.loading.end-i.loading.first),!this.callbacks)return;const o=this.callbacks.onProgress;if(o&&o(i,e,s,t),!this.callbacks)return;const l={url:t.responseURL,data:s,code:r};this.callbacks.onSuccess(l,i,e,t)}else{const n=s.loadPolicy.errorRetry;Xn(n,i.retry,!1,{url:e.url,data:void 0,code:r})?this.retry(n):(lr.error(`${r} while loading ${e.url}`),this.callbacks.onError({code:r,text:t.statusText},e,t,i))}}}loadtimeout(){if(!this.config)return;const e=this.config.loadPolicy.timeoutRetry;if(Xn(e,this.stats.retry,!0))this.retry(e);else{var t;lr.warn(`timeout while loading ${null==(t=this.context)?void 0:t.url}`);const e=this.callbacks;e&&(this.abortInternal(),e.onTimeout(this.stats,this.context,this.loader))}}retry(e){const{context:t,stats:i}=this;this.retryDelay=qn(e,i.retry),i.retry++,lr.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${null==t?void 0:t.url}, retrying ${i.retry}/${e.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)}loadprogress(e){const t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)}getCacheAge(){let e=null;if(this.loader&&ac.test(this.loader.getAllResponseHeaders())){const t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.loader&&new RegExp(`^${e}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(e):null}}const lc=/(\d+)-(\d+)\/(\d+)/;class hc{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||cc,this.controller=new self.AbortController,this.stats=new gr}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(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(e,t,i){const r=this.stats;if(r.loading.start)throw new Error("Loader can only be used once.");r.loading.start=self.performance.now();const s=function(e,t){const i={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(Qi({},e.headers))};e.rangeEnd&&i.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1));return i}(e,this.controller.signal),n=i.onProgress,a="arraybuffer"===e.responseType,o=a?"byteLength":"length",{maxTimeToFirstByteMs:l,maxLoadTimeMs:h}=t.loadPolicy;this.context=e,this.config=t,this.callbacks=i,this.request=this.fetchSetup(e,s),self.clearTimeout(this.requestTimeout),t.timeout=l&&Ji(l)?l:h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(r,e,this.response)}),t.timeout),self.fetch(this.request).then((s=>{this.response=this.loader=s;const o=Math.max(self.performance.now(),r.loading.start);if(self.clearTimeout(this.requestTimeout),t.timeout=h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(r,e,this.response)}),h-(o-r.loading.start)),!s.ok){const{status:e,statusText:t}=s;throw new dc(t||"fetch, bad network response",e,s)}return r.loading.first=o,r.total=function(e){const t=e.get("Content-Range");if(t){const e=function(e){const t=lc.exec(e);if(t)return parseInt(t[2])-parseInt(t[1])+1}(t);if(Ji(e))return e}const i=e.get("Content-Length");if(i)return parseInt(i)}(s.headers)||r.total,n&&Ji(t.highWaterMark)?this.loadProgressively(s,r,e,t.highWaterMark,n):a?s.arrayBuffer():"json"===e.responseType?s.json():s.text()})).then((s=>{const a=this.response;if(!a)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),r.loading.end=Math.max(self.performance.now(),r.loading.first);const l=s[o];l&&(r.loaded=r.total=l);const h={url:a.url,data:s,code:a.status};n&&!Ji(t.highWaterMark)&&n(r,e,s,a),i.onSuccess(h,r,e,a)})).catch((t=>{if(self.clearTimeout(this.requestTimeout),r.aborted)return;const s=t&&t.code||0,n=t?t.message:null;i.onError({code:s,text:n},e,t?t.details:null,r)}))}getCacheAge(){let e=null;if(this.response){const t=this.response.headers.get("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.response?this.response.headers.get(e):null}loadProgressively(e,t,i,r=0,s){const n=new ao,a=e.body.getReader(),o=()=>a.read().then((a=>{if(a.done)return n.dataLength&&s(t,i,n.flush(),e),Promise.resolve(new ArrayBuffer(0));const l=a.value,h=l.length;return t.loaded+=h,h=r&&s(t,i,n.flush(),e)):s(t,i,l,e),o()})).catch((()=>Promise.reject()));return o()}}function cc(e,t){return new self.Request(e.url,t)}class dc extends Error{constructor(e,t,i){super(e),this.code=void 0,this.details=void 0,this.code=t,this.details=i}}const uc=/\s/,fc={newCue(e,t,i,r){const s=[];let n,a,o,l,h;const c=self.VTTCue||self.TextTrackCue;for(let u=0;u=16?l--:l++;const r=Xl(h.trim()),f=th(t,i,r);null!=e&&null!=(d=e.cues)&&d.getCueById(f)||(a=new c(t,i,r),a.id=f,a.line=u+1,a.align="left",a.position=10+Math.min(80,10*Math.floor(8*l/32)),s.push(a))}return e&&s.length&&(s.sort(((e,t)=>"auto"===e.line||"auto"===t.line?0:e.line>8&&t.line>8?t.line-e.line:e.line-t.line)),s.forEach((t=>pn(e,t)))),s}},gc=qi(qi({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:6e7,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:oc,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController: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.codecTiers=null,this.timer=-1,this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this._abandonRulesCheck=()=>{const{fragCurrent:e,partCurrent:t,hls:i}=this,{autoLevelEnabled:r,media:s}=i;if(!e||!s)return;const n=performance.now(),a=t?t.stats:e.stats,o=t?t.duration:e.duration,l=n-a.loading.start,h=i.minAutoLevel;if(a.aborted||a.loaded&&a.loaded===a.total||e.level<=h)return this.clearTimer(),void(this._nextAutoLevel=-1);if(!r||s.paused||!s.playbackRate||!s.readyState)return;const c=i.mainForwardBufferInfo;if(null===c)return;const d=this.bwEstimator.getEstimateTTFB(),u=Math.abs(s.playbackRate);if(l<=Math.max(d,o/(2*u)*1e3))return;const f=c.len/u,g=a.loading.first?a.loading.first-a.loading.start:-1,m=a.loaded&&g>-1,p=this.getBwEstimate(),v=i.levels,y=v[e.level],T=a.total||Math.max(a.loaded,Math.round(o*y.averageBitrate/8));let E=m?l-g:l;E<1&&m&&(E=Math.min(l,8*a.loaded/p));const S=m?1e3*a.loaded/E:0,b=S?(T-a.loaded)/S:8*T/p+d/1e3;if(b<=f)return;const L=S?8*S:p;let w,A=Number.POSITIVE_INFINITY;for(w=e.level-1;w>h;w--){const e=v[w].maxBitrate;if(A=this.getTimeToLoadFrag(d/1e3,L,o*e,!v[w].details),A=b)return;if(A>10*o)return;i.nextLoadLevel=i.nextAutoLevel=w,m?this.bwEstimator.sample(l-Math.min(d,g),a.loaded):this.bwEstimator.sampleTTFB(l);const R=v[w].maxBitrate;this.getBwEstimate()*this.hls.config.abrBandWidthUpFactor>R&&this.resetEstimator(R),this.clearTimer(),lr.warn(`[abr] Fragment ${e.sn}${t?" part "+t.index:""} of level ${e.level} is loading too slowly;\n Time to underbuffer: ${f.toFixed(3)} s\n Estimated load time for current fragment: ${b.toFixed(3)} s\n Estimated load time for down switch fragment: ${A.toFixed(3)} s\n TTFB estimate: ${0|g} ms\n Current BW estimate: ${Ji(p)?0|p:"Unknown"} bps\n New BW estimate: ${0|this.getBwEstimate()} bps\n Switching to level ${w} @ ${0|R} bps`),i.trigger(tr.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e,part:t,stats:a})},this.hls=e,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(e){e&&(lr.log(`setting initial bwe to ${e}`),this.hls.config.abrEwmaDefaultEstimate=e),this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){const e=this.hls.config;return new ca(e.abrEwmaSlowVoD,e.abrEwmaFastVoD,e.abrEwmaDefaultEstimate)}registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.FRAG_LOADING,this.onFragLoading,this),e.on(tr.FRAG_LOADED,this.onFragLoaded,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e&&(e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.FRAG_LOADING,this.onFragLoading,this),e.off(tr.FRAG_LOADED,this.onFragLoaded,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.off(tr.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){const i=t.frag;if(!this.ignoreFragment(i)){var r;if(!i.bitrateTest)this.fragCurrent=i,this.partCurrent=null!=(r=t.part)?r: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 rr.BUFFER_ADD_CODEC_ERROR:case rr.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case rr.FRAG_LOAD_TIMEOUT:{const e=t.frag,{fragCurrent:i,partCurrent:r}=this;if(e&&i&&e.sn===i.sn&&e.level===i.level){const t=performance.now(),i=r?r.stats:e.stats,s=t-i.loading.start,n=i.loading.first?i.loading.first-i.loading.start:-1;if(i.loaded&&n>-1){const e=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(s-Math.min(e,n),i.loaded)}else this.bwEstimator.sampleTTFB(s)}break}}}getTimeToLoadFrag(e,t,i,r){return e+i/t+(r?this.lastLevelLoadSec:0)}onLevelLoaded(e,t){const i=this.hls.config,{loading:r}=t.stats,s=r.end-r.start;Ji(s)&&(this.lastLevelLoadSec=s/1e3),t.details.live?this.bwEstimator.update(i.abrEwmaSlowLive,i.abrEwmaFastLive):this.bwEstimator.update(i.abrEwmaSlowVoD,i.abrEwmaFastVoD)}onFragLoaded(e,{frag:t,part:i}){const r=i?i.stats:t.stats;if(t.type===hn&&this.bwEstimator.sampleTTFB(r.loading.first-r.loading.start),!this.ignoreFragment(t)){if(this.clearTimer(),t.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){const e=i?i.duration:t.duration,s=this.hls.levels[t.level],n=(s.loaded?s.loaded.bytes:0)+r.loaded,a=(s.loaded?s.loaded.duration:0)+e;s.loaded={bytes:n,duration:a},s.realBitrate=Math.round(8*n/a)}if(t.bitrateTest){const e={stats:r,frag:t,part:i,id:t.type};this.onFragBuffered(tr.FRAG_BUFFERED,e),t.bitrateTest=!1}else this.lastLoadedFragLevel=t.level}}onFragBuffered(e,t){const{frag:i,part:r}=t,s=null!=r&&r.stats.loaded?r.stats:i.stats;if(s.aborted)return;if(this.ignoreFragment(i))return;const n=s.parsing.end-s.loading.start-Math.min(s.loading.first-s.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(n,s.loaded),s.bwEstimate=this.getBwEstimate(),i.bitrateTest?this.bitrateTestDelay=n/1e3:this.bitrateTestDelay=0}ignoreFragment(e){return e.type!==hn||"initSegment"===e.sn}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){const{maxAutoLevel:e,minAutoLevel:t}=this.hls,i=this.getBwEstimate(),r=this.hls.config.maxStarvationDelay,s=this.findBestLevel(i,t,e,0,r,1,1);if(s>-1)return s;const n=this.hls.firstLevel,a=Math.min(Math.max(n,t),e);return lr.warn(`[abr] Could not find best starting auto level. Defaulting to first in playlist ${n} clamped to ${a}`),a}get forcedAutoLevel(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}get nextAutoLevel(){const e=this.forcedAutoLevel,t=this.bwEstimator.canEstimate(),i=this.lastLoadedFragLevel>-1;if(!(-1===e||t&&i&&this.nextAutoLevelKey!==this.getAutoLevelKey()))return e;const r=t&&i?this.getNextABRAutoLevel():this.firstAutoLevel;if(-1!==e){const t=this.hls.levels;if(t.length>Math.max(e,r)&&t[e].loadError<=t[r].loadError)return e}return this._nextAutoLevel=r,this.nextAutoLevelKey=this.getAutoLevelKey(),r}getAutoLevelKey(){return`${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){const{fragCurrent:e,partCurrent:t,hls:i}=this,{maxAutoLevel:r,config:s,minAutoLevel:n}=i,a=t?t.duration:e?e.duration:0,o=this.getBwEstimate(),l=this.getStarvationDelay();let h=s.abrBandWidthFactor,c=s.abrBandWidthUpFactor;if(l){const e=this.findBestLevel(o,n,r,l,0,h,c);if(e>=0)return e}let d=a?Math.min(a,s.maxStarvationDelay):s.maxStarvationDelay;if(!l){const e=this.bitrateTestDelay;if(e){d=(a?Math.min(a,s.maxLoadingDelay):s.maxLoadingDelay)-e,lr.info(`[abr] bitrate test took ${Math.round(1e3*e)}ms, set first fragment max fetchDuration to ${Math.round(1e3*d)} ms`),h=c=1}}const u=this.findBestLevel(o,n,r,l,d,h,c);if(lr.info(`[abr] ${l?"rebuffering expected":"buffer is empty"}, optimal quality level ${u}`),u>-1)return u;const f=i.levels[n],g=i.levels[i.loadLevel];return(null==f?void 0:f.bitrate)<(null==g?void 0:g.bitrate)?n:i.loadLevel}getStarvationDelay(){const e=this.hls,t=e.media;if(!t)return 1/0;const i=t&&0!==t.playbackRate?Math.abs(t.playbackRate):1,r=e.mainForwardBufferInfo;return(r?r.len:0)/i}getBwEstimate(){return this.bwEstimator.canEstimate()?this.bwEstimator.getEstimate():this.hls.config.abrEwmaDefaultEstimate}findBestLevel(e,t,i,r,s,n,a){var o;const l=r+s,h=this.lastLoadedFragLevel,c=-1===h?this.hls.firstLevel:h,{fragCurrent:d,partCurrent:u}=this,{levels:f,allAudioTracks:g,loadLevel:m,config:p}=this.hls;if(1===f.length)return 0;const v=f[c],y=!(null==v||null==(o=v.details)||!o.live),T=-1===m||-1===h;let E,S="SDR",b=(null==v?void 0:v.frameRate)||0;const{audioPreference:L,videoPreference:w}=p,A=this.audioTracksByGroup||(this.audioTracksByGroup=function(e){return e.reduce(((e,t)=>{let i=e.groups[t.groupId];i||(i=e.groups[t.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),i.tracks.push(t);const r=t.channels||"2";return i.channels[r]=(i.channels[r]||0)+1,i.hasDefault=i.hasDefault||t.default,i.hasAutoSelect=i.hasAutoSelect||t.autoselect,i.hasDefault&&(e.hasDefaultAudio=!0),i.hasAutoSelect&&(e.hasAutoSelectAudio=!0),e}),{hasDefaultAudio:!1,hasAutoSelectAudio:!1,groups:{}})}(g));if(T){if(-1!==this.firstSelection)return this.firstSelection;const r=this.codecTiers||(this.codecTiers=function(e,t,i,r){return e.slice(i,r+1).reduce(((e,i)=>{if(!i.codecSet)return e;const r=i.audioGroups;let s=e[i.codecSet];s||(e[i.codecSet]=s={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!r,fragmentError:0}),s.minBitrate=Math.min(s.minBitrate,i.bitrate);const n=Math.min(i.height,i.width);return s.minHeight=Math.min(s.minHeight,n),s.minFramerate=Math.min(s.minFramerate,i.frameRate),s.maxScore=Math.max(s.maxScore,i.score),s.fragmentError+=i.fragmentError,s.videoRanges[i.videoRange]=(s.videoRanges[i.videoRange]||0)+1,r&&r.forEach((e=>{if(!e)return;const i=t.groups[e];i&&(s.hasDefaultAudio=s.hasDefaultAudio||t.hasDefaultAudio?i.hasDefault:i.hasAutoSelect||!t.hasDefaultAudio&&!t.hasAutoSelectAudio,Object.keys(i.channels).forEach((e=>{s.channels[e]=(s.channels[e]||0)+i.channels[e]})))})),e}),{})}(f,A,t,i)),s=function(e,t,i,r,s){const n=Object.keys(e),a=null==r?void 0:r.channels,o=null==r?void 0:r.audioCodec,l=a&&2===parseInt(a);let h=!0,c=!1,d=1/0,u=1/0,f=1/0,g=0,m=[];const{preferHDR:p,allowedVideoRanges:v}=ma(t,s);for(let t=n.length;t--;){const i=e[n[t]];h=i.channels[2]>0,d=Math.min(d,i.minHeight),u=Math.min(u,i.minFramerate),f=Math.min(f,i.minBitrate);const r=v.filter((e=>i.videoRanges[e]>0));r.length>0&&(c=!0,m=r)}d=Ji(d)?d:0,u=Ji(u)?u:0;const y=Math.max(1080,d),T=Math.max(30,u);return f=Ji(f)?f:i,i=Math.max(f,i),c||(t=void 0,m=[]),{codecSet:n.reduce(((t,r)=>{const s=e[r];if(r===t)return t;if(s.minBitrate>i)return pa(r,`min bitrate of ${s.minBitrate} > current estimate of ${i}`),t;if(!s.hasDefaultAudio)return pa(r,"no renditions with default or auto-select sound found"),t;if(o&&r.indexOf(o.substring(0,4))%5!=0)return pa(r,`audio codec preference "${o}" not found`),t;if(a&&!l){if(!s.channels[a])return pa(r,`no renditions with ${a} channel sound found (channels options: ${Object.keys(s.channels)})`),t}else if((!o||l)&&h&&0===s.channels[2])return pa(r,"no renditions with stereo sound found"),t;return s.minHeight>y?(pa(r,`min resolution of ${s.minHeight} > maximum of ${y}`),t):s.minFramerate>T?(pa(r,`min framerate of ${s.minFramerate} > maximum of ${T}`),t):m.some((e=>s.videoRanges[e]>0))?s.maxScore=$s(t)||s.fragmentError>e[t].fragmentError)?t:(g=s.maxScore,r):(pa(r,`no variants with VIDEO-RANGE of ${JSON.stringify(m)} found`),t)}),void 0),videoRanges:m,preferHDR:p,minFramerate:u,minBitrate:f}}(r,S,e,L,w),{codecSet:n,videoRanges:a,minFramerate:o,minBitrate:l,preferHDR:h}=s;E=n,S=h?a[a.length-1]:a[0],b=o,e=Math.max(e,l),lr.log(`[abr] picked start tier ${JSON.stringify(s)}`)}else E=null==v?void 0:v.codecSet,S=null==v?void 0:v.videoRange;const R=u?u.duration:d?d.duration:0,k=this.bwEstimator.getEstimateTTFB()/1e3,_=[];for(let o=i;o>=t;o--){var D;const t=f[o],d=o>c;if(!t)continue;if(p.useMediaCapabilities&&!t.supportedResult&&!t.supportedPromise){const i=navigator.mediaCapabilities;"function"==typeof(null==i?void 0:i.decodingInfo)&&fa(t,A,S,b,e,L)?(t.supportedPromise=ga(t,A,i),t.supportedPromise.then((e=>{if(!this.hls)return;t.supportedResult=e;const i=this.hls.levels,r=i.indexOf(t);e.error?lr.warn(`[abr] MediaCapabilities decodingInfo error: "${e.error}" for level ${r} ${JSON.stringify(e)}`):e.supported||(lr.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${r} ${JSON.stringify(e)}`),r>-1&&i.length>1&&(lr.log(`[abr] Removing unsupported level ${r}`),this.hls.removeLevel(r)))}))):t.supportedResult=da}if(E&&t.codecSet!==E||S&&t.videoRange!==S||d&&b>t.frameRate||!d&&b>0&&b=2*R&&0===s?f[o].averageBitrate:f[o].maxBitrate,I=this.getTimeToLoadFrag(k,x,C*w,void 0===g);if(x>=C&&(o===h||0===t.loadError&&0===t.fragmentError)&&(I<=k||!Ji(I)||y&&!this.bitrateTestDelay||I${o} adjustedbw(${Math.round(x)})-bitrate=${Math.round(x-C)} ttfb:${k.toFixed(1)} avgDuration:${w.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${I.toFixed(1)} firstSelection:${T} codecSet:${E} videoRange:${S} hls.loadLevel:${m}`)),T&&(this.firstSelection=o),o}}return-1}set nextAutoLevel(e){const{maxAutoLevel:t,minAutoLevel:i}=this.hls,r=Math.min(Math.max(e,i),t);this._nextAutoLevel!==r&&(this.nextAutoLevelKey="",this._nextAutoLevel=r)}},bufferController: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=e=>{this.hls&&this.hls.pauseBuffering()},this._onStartStreaming=e=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=()=>{const{media:e,mediaSource:t}=this;this.log("Media source opened"),e&&(e.removeEventListener("emptied",this._onMediaEmptied),this.updateMediaElementDuration(),this.hls.trigger(tr.MEDIA_ATTACHED,{media:e,mediaSource:t})),t&&t.removeEventListener("sourceopen",this._onMediaSourceOpen),this.checkPendingTracks()},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{const{mediaSrc:e,_objectUrl:t}=this;e!==t&&lr.error(`Media element src was set while attaching MediaSource (${t} > ${e})`)},this.hls=e;const t="[buffer-controller]";var i;this.appendSource=(i=Os(e.config.preferManagedMediaSource),"undefined"!=typeof self&&i===self.ManagedMediaSource),this.log=lr.log.bind(lr,t),this.warn=lr.warn.bind(lr,t),this.error=lr.error.bind(lr,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(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.BUFFER_RESET,this.onBufferReset,this),e.on(tr.BUFFER_APPENDING,this.onBufferAppending,this),e.on(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.on(tr.BUFFER_EOS,this.onBufferEos,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(tr.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(tr.FRAG_PARSED,this.onFragParsed,this),e.on(tr.FRAG_CHANGED,this.onFragChanged,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.BUFFER_RESET,this.onBufferReset,this),e.off(tr.BUFFER_APPENDING,this.onBufferAppending,this),e.off(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.off(tr.BUFFER_EOS,this.onBufferEos,this),e.off(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(tr.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(tr.FRAG_PARSED,this.onFragParsed,this),e.off(tr.FRAG_CHANGED,this.onFragChanged,this)}_initSourceBuffer(){this.sourceBuffer={},this.operationQueue=new Tl(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 i=2;(t.audio&&!t.video||!t.altAudio)&&(i=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=i,this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`)}onMediaAttaching(e,t){const i=this.media=t.media,r=Os(this.appendSource);if(i&&r){var s;const e=this.mediaSource=new r;this.log(`created media source: ${null==(s=e.constructor)?void 0:s.name}`),e.addEventListener("sourceopen",this._onMediaSourceOpen),e.addEventListener("sourceended",this._onMediaSourceEnded),e.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(e.addEventListener("startstreaming",this._onStartStreaming),e.addEventListener("endstreaming",this._onEndStreaming));const t=this._objectUrl=self.URL.createObjectURL(e);if(this.appendSource)try{i.removeAttribute("src");const r=self.ManagedMediaSource;i.disableRemotePlayback=i.disableRemotePlayback||r&&e instanceof r,Sl(i),function(e,t){const i=self.document.createElement("source");i.type="video/mp4",i.src=t,e.appendChild(i)}(i,t),i.load()}catch(e){i.src=t}else i.src=t;i.addEventListener("emptied",this._onMediaEmptied)}}onMediaDetaching(){const{media:e,mediaSource:t,_objectUrl:i}=this;if(t){if(this.log("media source detaching"),"open"===t.readyState)try{t.endOfStream()}catch(e){this.warn(`onMediaDetaching: ${e.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),i&&self.URL.revokeObjectURL(i),this.mediaSrc===i?(e.removeAttribute("src"),this.appendSource&&Sl(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(tr.MEDIA_DETACHED,void 0)}onBufferReset(){this.getSourceBufferTypes().forEach((e=>{this.resetBuffer(e)})),this._initSourceBuffer()}resetBuffer(e){const t=this.sourceBuffer[e];try{var i;if(t)this.removeBufferListeners(e),this.sourceBuffer[e]=void 0,null!=(i=this.mediaSource)&&i.sourceBuffers.length&&this.mediaSource.removeSourceBuffer(t)}catch(t){this.warn(`onBufferReset ${e}`,t)}}onBufferCodecs(e,t){const i=this.getSourceBufferTypes().length,r=Object.keys(t);if(r.forEach((e=>{if(i){const i=this.tracks[e];if(i&&"function"==typeof i.buffer.changeType){var r;const{id:s,codec:n,levelCodec:a,container:o,metadata:l}=t[e],h=Hs(i.codec,i.levelCodec),c=null==h?void 0:h.replace(El,"$1");let d=Hs(n,a);const u=null==(r=d)?void 0:r.replace(El,"$1");if(d&&c!==u){"audio"===e.slice(0,5)&&(d=Vs(d,this.appendSource));const t=`${o};codecs=${d}`;this.appendChangeType(e,t),this.log(`switching codec ${h} to ${d}`),this.tracks[e]={buffer:i.buffer,codec:n,container:o,levelCodec:a,metadata:l,id:s}}}}else this.pendingTracks[e]=t[e]})),i)return;const s=Math.max(this.bufferCodecEventsExpected-1,0);this.bufferCodecEventsExpected!==s&&(this.log(`${s} bufferCodec event(s) expected ${r.join(",")}`),this.bufferCodecEventsExpected=s),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks()}appendChangeType(e,t){const{operationQueue:i}=this,r={execute:()=>{const r=this.sourceBuffer[e];r&&(this.log(`changing ${e} sourceBuffer type to ${t}`),r.changeType(t)),i.shiftAndExecuteNext(e)},onStart:()=>{},onComplete:()=>{},onError:t=>{this.warn(`Failed to change ${e} SourceBuffer type`,t)}};i.append(r,e,!!this.pendingTracks[e])}onBufferAppending(e,t){const{hls:i,operationQueue:r,tracks:s}=this,{data:n,type:a,frag:o,part:l,chunkMeta:h}=t,c=h.buffering[a],d=self.performance.now();c.start=d;const u=o.stats.buffering,f=l?l.stats.buffering:null;0===u.start&&(u.start=d),f&&0===f.start&&(f.start=d);const g=s.audio;let m=!1;"audio"===a&&"audio/mpeg"===(null==g?void 0:g.container)&&(m=!this.lastMpegAudioChunk||1===h.id||this.lastMpegAudioChunk.sn!==h.sn,this.lastMpegAudioChunk=h);const p=o.start,v={execute:()=>{if(c.executeStart=self.performance.now(),m){const e=this.sourceBuffer[a];if(e){const t=p-e.timestampOffset;Math.abs(t)>=.1&&(this.log(`Updating audio SourceBuffer timestampOffset to ${p} (delta: ${t}) sn: ${o.sn})`),e.timestampOffset=p)}}this.appendExecutor(n,a)},onStart:()=>{},onComplete:()=>{const e=self.performance.now();c.executeEnd=c.end=e,0===u.first&&(u.first=e),f&&0===f.first&&(f.first=e);const{sourceBuffer:t}=this,i={};for(const e in t)i[e]=xa.getBuffered(t[e]);this.appendErrors[a]=0,"audio"===a||"video"===a?this.appendErrors.audiovideo=0:(this.appendErrors.audio=0,this.appendErrors.video=0),this.hls.trigger(tr.BUFFER_APPENDED,{type:a,frag:o,part:l,chunkMeta:h,parent:o.type,timeRanges:i})},onError:e=>{const t={type:ir.MEDIA_ERROR,parent:o.type,details:rr.BUFFER_APPEND_ERROR,sourceBufferName:a,frag:o,part:l,chunkMeta:h,error:e,err:e,fatal:!1};if(e.code===DOMException.QUOTA_EXCEEDED_ERR)t.details=rr.BUFFER_FULL_ERROR;else{const e=++this.appendErrors[a];t.details=rr.BUFFER_APPEND_ERROR,this.warn(`Failed ${e}/${i.config.appendErrorMaxRetry} times to append segment in "${a}" sourceBuffer`),e>=i.config.appendErrorMaxRetry&&(t.fatal=!0)}i.trigger(tr.ERROR,t)}};r.append(v,a,!!this.pendingTracks[a])}onBufferFlushing(e,t){const{operationQueue:i}=this,r=e=>({execute:this.removeExecutor.bind(this,e,t.startOffset,t.endOffset),onStart:()=>{},onComplete:()=>{this.hls.trigger(tr.BUFFER_FLUSHED,{type:e})},onError:t=>{this.warn(`Failed to remove from ${e} SourceBuffer`,t)}});t.type?i.append(r(t.type),t.type):this.getSourceBufferTypes().forEach((e=>{i.append(r(e),e)}))}onFragParsed(e,t){const{frag:i,part:r}=t,s=[],n=r?r.elementaryStreams:i.elementaryStreams;n[vr]?s.push("audiovideo"):(n[mr]&&s.push("audio"),n[pr]&&s.push("video"));0===s.length&&this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${i.type} level: ${i.level} sn: ${i.sn}`),this.blockBuffers((()=>{const e=self.performance.now();i.stats.buffering.end=e,r&&(r.stats.buffering.end=e);const t=r?r.stats:i.stats;this.hls.trigger(tr.FRAG_BUFFERED,{frag:i,part:r,stats:t,id:i.type})}),s)}onFragChanged(e,t){this.trimBuffers()}onBufferEos(e,t){this.getSourceBufferTypes().reduce(((e,i)=>{const r=this.sourceBuffer[i];return!r||t.type&&t.type!==i||(r.ending=!0,r.ended||(r.ended=!0,this.log(`${i} sourceBuffer now EOS`))),e&&!(r&&!r.ended)}),!0)&&(this.log("Queueing mediaSource.endOfStream()"),this.blockBuffers((()=>{this.getSourceBufferTypes().forEach((e=>{const t=this.sourceBuffer[e];t&&(t.ending=!1)}));const{mediaSource:e}=this;e&&"open"===e.readyState?(this.log("Calling mediaSource.endOfStream()"),e.endOfStream()):e&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${e.readyState}`)})))}onLevelUpdated(e,{details:t}){t.fragments.length&&(this.details=t,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())}trimBuffers(){const{hls:e,details:t,media:i}=this;if(!i||null===t)return;if(!this.getSourceBufferTypes().length)return;const r=e.config,s=i.currentTime,n=t.levelTargetDuration,a=t.live&&null!==r.liveBackBufferLength?r.liveBackBufferLength:r.backBufferLength;if(Ji(a)&&a>0){const e=Math.max(a,n),t=Math.floor(s/n)*n-e;this.flushBackBuffer(s,n,t)}if(Ji(r.frontBufferFlushThreshold)&&r.frontBufferFlushThreshold>0){const e=Math.max(r.maxBufferLength,r.frontBufferFlushThreshold),t=Math.max(e,n),i=Math.floor(s/n)*n+t;this.flushFrontBuffer(s,n,i)}}flushBackBuffer(e,t,i){const{details:r,sourceBuffer:s}=this;this.getSourceBufferTypes().forEach((n=>{const a=s[n];if(a){const s=xa.getBuffered(a);if(s.length>0&&i>s.start(0)){if(this.hls.trigger(tr.BACK_BUFFER_REACHED,{bufferEnd:i}),null!=r&&r.live)this.hls.trigger(tr.LIVE_BACK_BUFFER_REACHED,{bufferEnd:i});else if(a.ended&&s.end(s.length-1)-e<2*t)return void this.log(`Cannot flush ${n} back buffer while SourceBuffer is in ended state`);this.hls.trigger(tr.BUFFER_FLUSHING,{startOffset:0,endOffset:i,type:n})}}}))}flushFrontBuffer(e,t,i){const{sourceBuffer:r}=this;this.getSourceBufferTypes().forEach((s=>{const n=r[s];if(n){const r=xa.getBuffered(n),a=r.length;if(a<2)return;const o=r.start(a-1),l=r.end(a-1);if(i>o||e>=o&&e<=l)return;if(n.ended&&e-l<2*t)return void this.log(`Cannot flush ${s} front buffer while SourceBuffer is in ended state`);this.hls.trigger(tr.BUFFER_FLUSHING,{startOffset:o,endOffset:1/0,type:s})}}))}updateMediaElementDuration(){if(!this.details||!this.media||!this.mediaSource||"open"!==this.mediaSource.readyState)return;const{details:e,hls:t,media:i,mediaSource:r}=this,s=e.fragments[0].start+e.totalduration,n=i.duration,a=Ji(r.duration)?r.duration:0;e.live&&t.config.liveDurationInfinity?(r.duration=1/0,this.updateSeekableRange(e)):(s>a&&s>n||!Ji(n))&&(this.log(`Updating Media Source duration to ${s.toFixed(3)}`),r.duration=s)}updateSeekableRange(e){const t=this.mediaSource,i=e.fragments;if(i.length&&e.live&&null!=t&&t.setLiveSeekableRange){const r=Math.max(0,i[0].start),s=Math.max(r,r+e.totalduration);this.log(`Media Source duration is set to ${t.duration}. Setting seekable range to ${r}-${s}.`),t.setLiveSeekableRange(r,s)}}checkPendingTracks(){const{bufferCodecEventsExpected:e,operationQueue:t,pendingTracks:i}=this,r=Object.keys(i).length;if(r&&(!e||2===r||"audiovideo"in i)){this.createSourceBuffers(i),this.pendingTracks={};const e=this.getSourceBufferTypes();if(e.length)this.hls.trigger(tr.BUFFER_CREATED,{tracks:this.tracks}),e.forEach((e=>{t.executeNext(e)}));else{const e=new Error("could not create source buffer for media codec(s)");this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:e,reason:e.message})}}}createSourceBuffers(e){const{sourceBuffer:t,mediaSource:i}=this;if(!i)throw Error("createSourceBuffers called when mediaSource was null");for(const s in e)if(!t[s]){var r;const n=e[s];if(!n)throw Error(`source buffer exists for track ${s}, however track does not`);let a=-1===(null==(r=n.levelCodec)?void 0:r.indexOf(","))?n.levelCodec:n.codec;a&&"audio"===s.slice(0,5)&&(a=Vs(a,this.appendSource));const o=`${n.container};codecs=${a}`;this.log(`creating sourceBuffer(${o})`);try{const e=t[s]=i.addSourceBuffer(o),r=s;this.addBufferListener(r,"updatestart",this._onSBUpdateStart),this.addBufferListener(r,"updateend",this._onSBUpdateEnd),this.addBufferListener(r,"error",this._onSBUpdateError),this.appendSource&&this.addBufferListener(r,"bufferedchange",((e,t)=>{const i=t.removedRanges;null!=i&&i.length&&this.hls.trigger(tr.BUFFER_FLUSHED,{type:s})})),this.tracks[s]={buffer:e,codec:a,container:n.container,levelCodec:n.levelCodec,metadata:n.metadata,id:n.id}}catch(e){this.error(`error while trying to add sourceBuffer: ${e.message}`),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:e,sourceBufferName:s,mimeType:o})}}}get mediaSrc(){var e;const t=(null==(e=this.media)?void 0:e.firstChild)||this.media;return null==t?void 0:t.src}_onSBUpdateStart(e){const{operationQueue:t}=this;t.current(e).onStart()}_onSBUpdateEnd(e){var t;if("closed"===(null==(t=this.mediaSource)?void 0:t.readyState))return void this.resetBuffer(e);const{operationQueue:i}=this;i.current(e).onComplete(),i.shiftAndExecuteNext(e)}_onSBUpdateError(e,t){var i;const r=new Error(`${e} SourceBuffer error. MediaSource readyState: ${null==(i=this.mediaSource)?void 0:i.readyState}`);this.error(`${r}`,t),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_APPENDING_ERROR,sourceBufferName:e,error:r,fatal:!1});const s=this.operationQueue.current(e);s&&s.onError(r)}removeExecutor(e,t,i){const{media:r,mediaSource:s,operationQueue:n,sourceBuffer:a}=this,o=a[e];if(!r||!s||!o)return this.warn(`Attempting to remove from the ${e} SourceBuffer, but it does not exist`),void n.shiftAndExecuteNext(e);const l=Ji(r.duration)?r.duration:1/0,h=Ji(s.duration)?s.duration:1/0,c=Math.max(0,t),d=Math.min(i,l,h);d>c&&(!o.ending||o.ended)?(o.ended=!1,this.log(`Removing [${c},${d}] from the ${e} SourceBuffer`),o.remove(c,d)):n.shiftAndExecuteNext(e)}appendExecutor(e,t){const i=this.sourceBuffer[t];if(i)i.ended=!1,i.appendBuffer(e);else if(!this.pendingTracks[t])throw new Error(`Attempting to append to the ${t} SourceBuffer, but it does not exist`)}blockBuffers(e,t=this.getSourceBufferTypes()){if(!t.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(e);const{operationQueue:i}=this,r=t.map((e=>i.appendBlocker(e)));Promise.all(r).then((()=>{e(),t.forEach((e=>{const t=this.sourceBuffer[e];null!=t&&t.updating||i.shiftAndExecuteNext(e)}))}))}getSourceBufferTypes(){return Object.keys(this.sourceBuffer)}addBufferListener(e,t,i){const r=this.sourceBuffer[e];if(!r)return;const s=i.bind(this,e);this.listeners[e].push({event:t,listener:s}),r.addEventListener(t,s)}removeBufferListeners(e){const t=this.sourceBuffer[e];t&&this.listeners[e].forEach((e=>{t.removeEventListener(e.event,e.listener)}))}},capLevelController:ph,errorController: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=lr.log.bind(lr,"[info]:"),this.warn=lr.warn.bind(lr,"[warning]:"),this.error=lr.error.bind(lr,"[error]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(tr.ERROR,this.onError,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){const e=this.hls;e&&(e.off(tr.ERROR,this.onError,this),e.off(tr.ERROR,this.onErrorOut,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}}startLoad(e){}stopLoad(){this.playlistError=0}getVariantLevelIndex(e){return(null==e?void 0:e.type)===hn?e.level:this.hls.loadLevel}onManifestLoading(){this.playlistError=0,this.penalizedRenditions={}}onLevelUpdated(){this.playlistError=0}onError(e,t){var i,r;if(t.fatal)return;const s=this.hls,n=t.context;switch(t.details){case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:return void(t.errorAction=this.getFragRetryOrSwitchAction(t));case rr.FRAG_PARSING_ERROR:if(null!=(i=t.frag)&&i.gap)return void(t.errorAction={action:ta,flags:na});case rr.FRAG_GAP:case rr.FRAG_DECRYPT_ERROR:return t.errorAction=this.getFragRetryOrSwitchAction(t),void(t.errorAction.action=ia);case rr.LEVEL_EMPTY_ERROR:case rr.LEVEL_PARSING_ERROR:{var a,o;const e=t.parent===hn?t.level:s.loadLevel;t.details===rr.LEVEL_EMPTY_ERROR&&null!=(a=t.context)&&null!=(o=a.levelDetails)&&o.live?t.errorAction=this.getPlaylistRetryOrSwitchAction(t,e):(t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,e))}return;case rr.LEVEL_LOAD_ERROR:case rr.LEVEL_LOAD_TIMEOUT:return void("number"==typeof(null==n?void 0:n.level)&&(t.errorAction=this.getPlaylistRetryOrSwitchAction(t,n.level)));case rr.AUDIO_TRACK_LOAD_ERROR:case rr.AUDIO_TRACK_LOAD_TIMEOUT:case rr.SUBTITLE_LOAD_ERROR:case rr.SUBTITLE_TRACK_LOAD_TIMEOUT:if(n){const e=s.levels[s.loadLevel];if(e&&(n.type===on&&e.hasAudioGroup(n.groupId)||n.type===ln&&e.hasSubtitleGroup(n.groupId)))return t.errorAction=this.getPlaylistRetryOrSwitchAction(t,s.loadLevel),t.errorAction.action=ia,void(t.errorAction.flags=aa)}return;case rr.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:{const e=s.levels[s.loadLevel],i=null==e?void 0:e.attrs["HDCP-LEVEL"];i?t.errorAction={action:ia,flags:oa,hdcpLevel:i}:this.keySystemError(t)}return;case rr.BUFFER_ADD_CODEC_ERROR:case rr.REMUX_ALLOC_ERROR:case rr.BUFFER_APPEND_ERROR:return void(t.errorAction=this.getLevelSwitchAction(t,null!=(r=t.level)?r:s.loadLevel));case rr.INTERNAL_EXCEPTION:case rr.BUFFER_APPENDING_ERROR:case rr.BUFFER_FULL_ERROR:case rr.LEVEL_SWITCH_ERROR:case rr.BUFFER_STALLED_ERROR:case rr.BUFFER_SEEK_OVER_HOLE:case rr.BUFFER_NUDGE_ON_STALL:return void(t.errorAction={action:ta,flags:na})}t.type===ir.KEY_SYSTEM_ERROR&&this.keySystemError(t)}keySystemError(e){const t=this.getVariantLevelIndex(e.frag);e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,t)}getPlaylistRetryOrSwitchAction(e,t){const i=Yn(this.hls.config.playlistLoadPolicy,e),r=this.playlistError++;if(Xn(i,r,Wn(e),e.response))return{action:sa,flags:na,retryConfig:i,retryCount:r};const s=this.getLevelSwitchAction(e,t);return i&&(s.retryConfig=i,s.retryCount=r),s}getFragRetryOrSwitchAction(e){const t=this.hls,i=this.getVariantLevelIndex(e.frag),r=t.levels[i],{fragLoadPolicy:s,keyLoadPolicy:n}=t.config,a=Yn(e.details.startsWith("key")?n:s,e),o=t.levels.reduce(((e,t)=>e+t.fragmentError),0);if(r){e.details!==rr.FRAG_GAP&&r.fragmentError++;if(Xn(a,o,Wn(e),e.response))return{action:sa,flags:na,retryConfig:a,retryCount:o}}const l=this.getLevelSwitchAction(e,i);return a&&(l.retryConfig=a,l.retryCount=o),l}getLevelSwitchAction(e,t){const i=this.hls;null==t&&(t=i.loadLevel);const r=this.hls.levels[t];if(r){var s,n;const t=e.details;r.loadError++,t===rr.BUFFER_APPEND_ERROR&&r.fragmentError++;let l=-1;const{levels:h,loadLevel:c,minAutoLevel:d,maxAutoLevel:u}=i;i.autoLevelEnabled||(i.loadLevel=-1);const f=null==(s=e.frag)?void 0:s.type,g=(f===cn&&t===rr.FRAG_PARSING_ERROR||"audio"===e.sourceBufferName&&(t===rr.BUFFER_ADD_CODEC_ERROR||t===rr.BUFFER_APPEND_ERROR))&&h.some((({audioCodec:e})=>r.audioCodec!==e)),m="video"===e.sourceBufferName&&(t===rr.BUFFER_ADD_CODEC_ERROR||t===rr.BUFFER_APPEND_ERROR)&&h.some((({codecSet:e,audioCodec:t})=>r.codecSet!==e&&r.audioCodec===t)),{type:p,groupId:v}=null!=(n=e.context)?n:{};for(let i=h.length;i--;){const s=(i+c)%h.length;if(s!==c&&s>=d&&s<=u&&0===h[s].loadError){var a,o;const i=h[s];if(t===rr.FRAG_GAP&&f===hn&&e.frag){const t=h[s].details;if(t){const i=Jn(e.frag,t.fragments,e.frag.start);if(null!=i&&i.gap)continue}}else{if(p===on&&i.hasAudioGroup(v)||p===ln&&i.hasSubtitleGroup(v))continue;if(f===cn&&null!=(a=r.audioGroups)&&a.some((e=>i.hasAudioGroup(e)))||f===dn&&null!=(o=r.subtitleGroups)&&o.some((e=>i.hasSubtitleGroup(e)))||g&&r.audioCodec===i.audioCodec||!g&&r.audioCodec!==i.audioCodec||m&&r.codecSet===i.codecSet)continue}l=s;break}}if(l>-1&&i.loadLevel!==l)return e.levelRetry=!0,this.playlistError=0,{action:ia,flags:na,nextAutoLevel:l}}return{action:ia,flags:aa}}onErrorOut(e,t){var i;switch(null==(i=t.errorAction)?void 0:i.action){case ta:break;case ia:this.sendAlternateToPenaltyBox(t),t.errorAction.resolved||t.details===rr.FRAG_GAP?/MediaSource readyState: ended/.test(t.error.message)&&(this.warn(`MediaSource ended after "${t.sourceBufferName}" sourceBuffer append error. Attempting to recover from media error.`),this.hls.recoverMediaError()):t.fatal=!0}t.fatal&&this.hls.stopLoad()}sendAlternateToPenaltyBox(e){const t=this.hls,i=e.errorAction;if(!i)return;const{flags:r,hdcpLevel:s,nextAutoLevel:n}=i;switch(r){case na:this.switchLevel(e,n);break;case oa:s&&(t.maxHdcpLevel=Dn[Dn.indexOf(s)-1],i.resolved=!0),this.warn(`Restricting playback to HDCP-LEVEL of "${t.maxHdcpLevel}" or lower`)}i.resolved||this.switchLevel(e,n)}switchLevel(e,t){void 0!==t&&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)}},fpsController: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(tr.MEDIA_ATTACHING,this.onMediaAttaching,this)}unregisterListeners(){this.hls.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(e,t){const i=this.hls.config;if(i.capLevelOnFPSDrop){const e=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=e,e&&"function"==typeof e.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),i.fpsDroppedMonitoringPeriod)}}checkFPS(e,t,i){const r=performance.now();if(t){if(this.lastTime){const e=r-this.lastTime,s=i-this.lastDroppedFrames,n=t-this.lastDecodedFrames,a=1e3*s/e,o=this.hls;if(o.trigger(tr.FPS_DROP,{currentDropped:s,currentDecoded:n,totalDroppedFrames:i}),a>0&&s>o.config.fpsDroppedMonitoringThreshold*n){let e=o.currentLevel;lr.warn("drop FPS ratio greater than max allowed value for currentLevel: "+e),e>0&&(-1===o.autoLevelCapping||o.autoLevelCapping>=e)&&(e-=1,o.trigger(tr.FPS_DROP_LEVEL_CAPPING,{level:e,droppedLevel:o.currentLevel}),o.autoLevelCapping=e,this.streamController.nextLevelSwitch())}}this.lastTime=r,this.lastDroppedFrames=i,this.lastDecodedFrames=t}}checkFPSInterval(){const e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){const t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)}},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:Mr,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableID3MetadataCues:!0,useMediaCapabilities:!0,certLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null}},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},{cueHandler:fc,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:class extends no{constructor(e,t,i){super(e,t,i,"[subtitle-stream-controller]",dn),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this._registerListeners()}onHandlerDestroying(){this._unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}_registerListeners(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.ERROR,this.onError,this),e.on(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(tr.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(tr.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this)}_unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.ERROR,this.onError,this),e.off(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(tr.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(tr.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.off(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this)}startLoad(e){this.stopLoad(),this.state=qa,this.setInterval(500),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){const{frag:i,success:r}=t;if(this.fragPrevious=i,this.state=qa,!r)return;const s=this.tracksBuffered[this.currentTrackId];if(!s)return;let n;const a=i.start;for(let e=0;e=s[e].start&&a<=s[e].end){n=s[e];break}const o=i.start+i.duration;n?n.end=o:(n={start:a,end:o},s.push(n)),this.fragmentTracker.fragBuffered(i),this.fragBufferedComplete(i,null)}onBufferFlushing(e,t){const{startOffset:i,endOffset:r}=t;if(0===i&&r!==Number.POSITIVE_INFINITY){const e=r-1;if(e<=0)return;t.endOffsetSubtitles=Math.max(0,e),this.tracksBuffered.forEach((t=>{for(let i=0;inew Fn(e))):(this.tracksBuffered=[],this.levels=t.map((e=>{const t=new Fn(e);return this.tracksBuffered[t.id]=[],t})),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,dn),this.fragPrevious=null,this.mediaBuffer=null)}onSubtitleTrackSwitch(e,t){var i;if(this.currentTrackId=t.id,null==(i=this.levels)||!i.length||-1===this.currentTrackId)return void this.clearInterval();const r=this.levels[this.currentTrackId];null!=r&&r.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,r&&this.setInterval(500)}onSubtitleTrackLoaded(e,t){var i;const{currentTrackId:r,levels:s}=this,{details:n,id:a}=t;if(!s)return void this.warn(`Subtitle tracks were reset while loading level ${a}`);const o=s[a];if(a>=s.length||!o)return;this.log(`Subtitle track ${a} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""},duration:${n.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let l=0;if(n.live||null!=(i=o.details)&&i.live){const e=this.mainDetails;if(n.deltaUpdateFailed||!e)return;const t=e.fragments[0];var h;if(o.details)l=this.alignPlaylists(n,o.details,null==(h=this.levelLastLoaded)?void 0:h.details),0===l&&t&&(l=t.start,Kn(n,l));else n.hasProgramDateTime&&e.hasProgramDateTime?(Fa(n,e),l=n.fragments[0].start):t&&(l=t.start,Kn(n,l))}if(o.details=n,this.levelLastLoaded=o,a===r&&(this.startFragRequested||!this.mainDetails&&n.live||this.setStartPosition(this.mainDetails||n,l),this.tick(),n.live&&!this.fragCurrent&&this.media&&this.state===qa)){Jn(null,n.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),o.details=void 0)}}_handleFragmentLoadComplete(e){const{frag:t,payload:i}=e,r=t.decryptdata,s=this.hls;if(!this.fragContextChanged(t)&&i&&i.byteLength>0&&null!=r&&r.key&&r.iv&&"AES-128"===r.method){const e=performance.now();this.decrypter.decrypt(new Uint8Array(i),r.key.buffer,r.iv.buffer).catch((e=>{throw s.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.FRAG_DECRYPT_ERROR,fatal:!1,error:e,reason:e.message,frag:t}),e})).then((i=>{const r=performance.now();s.trigger(tr.FRAG_DECRYPTED,{frag:t,payload:i,stats:{tstart:e,tdecrypt:r}})})).catch((e=>{this.warn(`${e.name}: ${e.message}`),this.state=qa}))}}doTick(){if(this.media){if(this.state===qa){const{currentTrackId:e,levels:t}=this,i=null==t?void 0:t[e];if(!i||!t.length||!i.details)return;const{config:r}=this,s=this.getLoadPosition(),n=xa.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],s,r.maxBufferHole),{end:a,len:o}=n,l=this.getFwdBufferInfo(this.media,hn),h=i.details;if(o>this.getMaxBufferLength(null==l?void 0:l.len)+h.levelTargetDuration)return;const c=h.fragments,d=c.length,u=h.edge;let f=null;const g=this.fragPrevious;if(au-e?0:e;f=Jn(g,c,Math.max(c[0].start,a),t),!f&&g&&g.startthis.pollTrackChange(0),this.useTextTrackPolling=!1,this.subtitlePollingInterval=-1,this._subtitleDisplay=!0,this.onTextTracksChanged=()=>{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let e=null;const t=Tn(this.media.textTracks);for(let i=0;i-1&&this.toggleTrackModes()}registerListeners(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVEL_LOADING,this.onLevelLoading,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVEL_LOADING,this.onLevelLoading,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(tr.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);Tn(this.media.textTracks).forEach((e=>{vn(e)})),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){const{id:i,groupId:r,details:s}=t,n=this.tracksInGroup[i];if(!n||n.groupId!==r)return void this.warn(`Subtitle track with id:${i} and group:${r} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=t.details,this.log(`Subtitle track ${i} "${n.name}" lang:${n.lang} group:${r} loaded [${s.startSN}-${s.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.subtitleGroups||null,r=this.groupIds;let s=this.currentTrack;if(!i||(null==r?void 0:r.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==r?void 0:r.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!s&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.subtitlePreference;if(!s&&t){this.selectDefaultTrack=!1;const i=va(t,e);if(i>-1)s=e[i];else{const e=va(t,this.tracks);s=this.tracks[e]}}let r=this.findTrackId(s);-1===r&&s&&(r=this.findTrackId(null));const n={subtitleTracks:e};this.log(`Updating subtitle tracks, ${e.length} track(s) found in "${null==i?void 0:i.join(",")}" group-id`),this.hls.trigger(tr.SUBTITLE_TRACKS_UPDATED,n),-1!==r&&-1===this.trackId&&this.setSubtitleTrack(r)}else this.shouldReloadPlaylist(s)&&this.setSubtitleTrack(this.trackId)}findTrackId(e){const t=this.tracksInGroup,i=this.selectDefaultTrack;for(let r=0;r-1){const e=this.tracksInGroup[r];return this.setSubtitleTrack(r),e}if(i)return null;{const i=va(e,t);if(i>-1)return t[i]}}}return null}loadPlaylist(e){super.loadPlaylist();const t=this.currentTrack;if(this.shouldLoadPlaylist(t)&&t){const i=t.id,r=t.groupId;let s=t.url;if(e)try{s=e.addDirectives(s)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}this.log(`Loading subtitle playlist for id ${i}`),this.hls.trigger(tr.SUBTITLE_TRACK_LOADING,{url:s,id:i,groupId:r,deliveryDirectives:e||null})}}toggleTrackModes(){const{media:e}=this;if(!e)return;const t=Tn(e.textTracks),i=this.currentTrack;let r;if(i&&(r=t.filter((e=>vl(i,e)))[0],r||this.warn(`Unable to find subtitle TextTrack with name "${i.name}" and language "${i.lang}"`)),[].slice.call(t).forEach((e=>{"disabled"!==e.mode&&e!==r&&(e.mode="disabled")})),r){const e=this.subtitleDisplay?"showing":"hidden";r.mode!==e&&(r.mode=e)}}setSubtitleTrack(e){const t=this.tracksInGroup;if(!this.media)return void(this.queuedDefaultTrack=e);if(e<-1||e>=t.length||!Ji(e))return void this.warn(`Invalid subtitle track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,r=t[e]||null;if(this.trackId=e,this.currentTrack=r,this.toggleTrackModes(),!r)return void this.hls.trigger(tr.SUBTITLE_TRACK_SWITCH,{id:e});const s=!!r.details&&!r.details.live;if(e===this.trackId&&r===i&&s)return;this.log(`Switching to subtitle-track ${e}`+(r?` "${r.name}" lang:${r.lang} group:${r.groupId}`:""));const{id:n,groupId:a="",name:o,type:l,url:h}=r;this.hls.trigger(tr.SUBTITLE_TRACK_SWITCH,{id:n,groupId:a,name:o,type:l,url:h});const c=this.switchParams(r.url,null==i?void 0:i.details,r.details);this.loadPlaylist(c)}},timelineController: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={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},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(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(tr.FRAG_LOADING,this.onFragLoading,this),e.on(tr.FRAG_LOADED,this.onFragLoaded,this),e.on(tr.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(tr.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(tr.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(tr.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(tr.FRAG_LOADING,this.onFragLoading,this),e.off(tr.FRAG_LOADED,this.onFragLoaded,this),e.off(tr.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(tr.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(tr.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(tr.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(tr.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)){const e=new Gl(this,"textTrack1"),t=new Gl(this,"textTrack2"),i=new Gl(this,"textTrack3"),r=new Gl(this,"textTrack4");this.cea608Parser1=new Ul(1,e,t),this.cea608Parser2=new Ul(3,i,r)}}addCues(e,t,i,r,s){let n=!1;for(let e=s.length;e--;){const r=s[e],c=(a=r[0],o=r[1],l=t,h=i,Math.min(o,h)-Math.max(a,l));if(c>=0&&(r[0]=Math.min(r[0],t),r[1]=Math.max(r[1],i),n=!0,c/(i-t)>.5))return}var a,o,l,h;if(n||s.push([t,i]),this.config.renderTextTracksNatively){const s=this.captionsTracks[e];this.Cues.newCue(s,t,i,r)}else{const s=this.Cues.newCue(null,t,i,r);this.hls.trigger(tr.CUES_PARSED,{type:"captions",cues:s,track:e})}}onInitPtsFound(e,{frag:t,id:i,initPTS:r,timescale:s}){const{unparsedVttFrags:n}=this;"main"===i&&(this.initPTS[t.cc]={baseTime:r,timescale:s}),n.length&&(this.unparsedVttFrags=[],n.forEach((e=>{this.onFragLoaded(tr.FRAG_LOADED,e)})))}getExistingTrack(e,t){const{media:i}=this;if(i)for(let r=0;r{vn(e[t]),delete e[t]})),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:e}=this;if(!e)return;const t=e.textTracks;if(t)for(let e=0;ee.textCodec===rh));if(this.config.enableWebVTT||r&&this.config.enableIMSC1){if(ml(this.tracks,i))return void(this.tracks=i);if(this.textTracks=[],this.tracks=i,this.config.renderTextTracksNatively){const e=this.media,t=e?Tn(e.textTracks):null;if(this.tracks.forEach(((e,i)=>{let r;if(t){let i=null;for(let r=0;rnull!==e)).map((e=>e.label));e.length&&lr.warn(`Media element contains unused subtitle tracks: ${e.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const e=this.tracks.map((e=>({label:e.name,kind:e.type.toLowerCase(),default:e.default,subtitleTrack:e})));this.hls.trigger(tr.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:e})}}}onManifestLoaded(e,t){this.config.enableCEA708Captions&&t.captions&&t.captions.forEach((e=>{const t=/(?:CC|SERVICE)([1-4])/.exec(e.instreamId);if(!t)return;const i=`textTrack${t[1]}`,r=this.captionsProperties[i];r&&(r.label=e.name,e.lang&&(r.languageCode=e.lang),r.media=e)}))}closedCaptionsForLevel(e){const t=this.hls.levels[e.level];return null==t?void 0:t.attrs["CLOSED-CAPTIONS"]}onFragLoading(e,t){if(this.enabled&&t.frag.type===hn){var i,r;const{cea608Parser1:e,cea608Parser2:s,lastSn:n}=this,{cc:a,sn:o}=t.frag,l=null!=(i=null==(r=t.part)?void 0:r.index)?i:-1;e&&s&&(o!==n+1||o===n&&l!==this.lastPartIndex+1||a!==this.lastCc)&&(e.reset(),s.reset()),this.lastCc=a,this.lastSn=o,this.lastPartIndex=l}}onFragLoaded(e,t){const{frag:i,payload:r}=t;if(i.type===dn)if(r.byteLength){const e=i.decryptdata,s="stats"in t;if(null==e||!e.encrypted||s){const e=this.tracks[i.level],s=this.vttCCs;s[i.cc]||(s[i.cc]={start:i.start,prevCC:this.prevCC,new:!0},this.prevCC=i.cc),e&&e.textCodec===rh?this._parseIMSC1(i,r):this._parseVTTs(t)}}else this.hls.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:new Error("Empty subtitle payload")})}_parseIMSC1(e,t){const i=this.hls;oh(t,this.initPTS[e.cc],(t=>{this._appendCues(t,e.level),i.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:e})}),(t=>{lr.log(`Failed to parse IMSC1: ${t}`),i.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e,error:t})}))}_parseVTTs(e){var t;const{frag:i,payload:r}=e,{initPTS:s,unparsedVttFrags:n}=this,a=s.length-1;if(!s[i.cc]&&-1===a)return void n.push(e);const o=this.hls;ih(null!=(t=i.initSegment)&&t.data?Es(i.initSegment.data,new Uint8Array(r)):r,this.initPTS[i.cc],this.vttCCs,i.cc,i.start,(e=>{this._appendCues(e,i.level),o.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:i})}),(t=>{const s="Missing initPTS for VTT MPEGTS"===t.message;s?n.push(e):this._fallbackToIMSC1(i,r),lr.log(`Failed to parse VTT cue: ${t}`),s&&a>i.cc||o.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:t})}))}_fallbackToIMSC1(e,t){const i=this.tracks[e.level];i.textCodec||oh(t,this.initPTS[e.cc],(()=>{i.textCodec=rh,this._parseIMSC1(e,t)}),(()=>{i.textCodec="wvtt"}))}_appendCues(e,t){const i=this.hls;if(this.config.renderTextTracksNatively){const i=this.textTracks[t];if(!i||"disabled"===i.mode)return;e.forEach((e=>pn(i,e)))}else{const r=this.tracks[t];if(!r)return;const s=r.default?"default":"subtitles"+t;i.trigger(tr.CUES_PARSED,{type:"subtitles",cues:e,track:s})}}onFragDecrypted(e,t){const{frag:i}=t;i.type===dn&&this.onFragLoaded(tr.FRAG_LOADED,t)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(e,t){this.initCea608Parsers();const{cea608Parser1:i,cea608Parser2:r}=this;if(!this.enabled||!i||!r)return;const{frag:s,samples:n}=t;if(s.type!==hn||"NONE"!==this.closedCaptionsForLevel(s))for(let e=0;eyn(e[r],t,i)))}if(this.config.renderTextTracksNatively&&0===t&&void 0!==r){const{textTracks:e}=this;Object.keys(e).forEach((i=>yn(e[i],t,r)))}}}extractCea608Data(e){const t=[[],[]],i=31&e[0];let r=2;for(let s=0;s0&&-1===e?(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t,this.state=qa):(this.loadedmetadata=!1,this.state=Ja),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}doTick(){switch(this.state){case qa:this.doTickIdle();break;case Ja:{var e;const{levels:t,trackId:i}=this,r=null==t||null==(e=t[i])?void 0:e.details;if(r){if(this.waitForCdnTuneIn(r))break;this.state=ro}break}case Qa:{var t;const e=performance.now(),i=this.retryDate;if(!i||e>=i||null!=(t=this.media)&&t.seeking){const{levels:e,trackId:t}=this;this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded((null==e?void 0:e[t])||null),this.state=qa}break}case ro:{const e=this.waitingData;if(e){const{frag:t,part:i,cache:r,complete:s}=e;if(void 0!==this.initPTS[t.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=Xa;const e={frag:t,part:i,payload:r.flush(),networkDetails:null};this._handleFragmentLoadProgress(e),s&&super._handleFragmentLoadComplete(e)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log(`Waiting fragment cc (${t.cc}) cancelled because video is at cc ${this.videoTrackCC}`),this.clearWaitingFragment();else{const e=this.getLoadPosition(),i=xa.bufferInfo(this.mediaBuffer,e,this.config.maxBufferHole);Zn(i.end,this.config.maxFragLookUpTolerance,t)<0&&(this.log(`Waiting fragment cc (${t.cc}) @ ${t.start} cancelled because another fragment at ${i.end} is needed`),this.clearWaitingFragment())}}else this.state=qa}}this.onTickEnd()}clearWaitingFragment(){const e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=qa)}resetLoadingState(){this.clearWaitingFragment(),super.resetLoadingState()}onTickEnd(){const{media:e}=this;null!=e&&e.readyState&&(this.lastCurrentTime=e.currentTime)}doTickIdle(){const{hls:e,levels:t,media:i,trackId:r}=this,s=e.config;if(!i&&(this.startFragRequested||!s.startFragPrefetch)||null==t||!t[r])return;const n=t[r],a=n.details;if(!a||a.live&&this.levelLastLoaded!==n||this.waitForCdnTuneIn(a))return void(this.state=Ja);const o=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&o&&(this.bufferFlushed=!1,this.afterBufferFlushed(o,mr,cn));const l=this.getFwdBufferInfo(o,cn);if(null===l)return;const{bufferedTrack:h,switchingTrack:c}=this;if(!c&&this._streamEnded(l,a))return e.trigger(tr.BUFFER_EOS,{type:"audio"}),void(this.state=to);const d=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,hn),u=l.len,f=this.getMaxBufferLength(null==d?void 0:d.len),g=a.fragments,m=g[0].start;let p=this.flushing?this.getLoadPosition():l.end;if(c&&i){const e=this.getLoadPosition();h&&!pl(c.attrs,h.attrs)&&(p=e),a.PTSKnown&&em||l.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),i.currentTime=m+.05)}if(u>=f&&!c&&pd.end+a.targetduration;if(T||(null==d||!d.len)&&l.len){const e=this.getAppendedFrag(v.start,hn);if(null===e)return;if(y||(y=!!e.gap||!!T&&0===d.len),T&&!y||y&&l.nextStart&&l.nextStartnew Fn(e)))}onAudioTrackSwitching(e,t){const i=!!t.url;this.trackId=t.id;const{fragCurrent:r}=this;r&&(r.abortRequests(),this.removeUnbufferedFrags(r.start)),this.resetLoadingState(),i?this.setInterval(100):this.resetTransmuxer(),i?(this.switchingTrack=t,this.state=qa,this.flushAudioIfNeeded(t)):(this.switchingTrack=null,this.bufferedTrack=t,this.state=Ya),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,null!==this.cachedTrackLoadedData&&(this.hls.trigger(tr.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)}onAudioTrackLoaded(e,t){var i;if(null==this.mainDetails)return void(this.cachedTrackLoadedData=t);const{levels:r}=this,{details:s,id:n}=t;if(!r)return void this.warn(`Audio tracks were reset while loading level ${n}`);this.log(`Audio track ${n} loaded [${s.startSN},${s.endSN}]${s.lastPartSn?`[part-${s.lastPartSn}-${s.lastPartIndex}]`:""},duration:${s.totalduration}`);const a=r[n];let o=0;if(s.live||null!=(i=a.details)&&i.live){this.checkLiveUpdate(s);const e=this.mainDetails;if(s.deltaUpdateFailed||!e)return;var l;if(!a.details&&s.hasProgramDateTime&&e.hasProgramDateTime)Fa(s,e),o=s.fragments[0].start;else o=this.alignPlaylists(s,a.details,null==(l=this.levelLastLoaded)?void 0:l.details)}a.details=s,this.levelLastLoaded=a,this.startFragRequested||!this.mainDetails&&s.live||this.setStartPosition(this.mainDetails||s,o),this.state!==Ja||this.waitForCdnTuneIn(s)||(this.state=qa),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:r,payload:s}=e,{config:n,trackId:a,levels:o}=this;if(!o)return void this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const l=o[a];if(!l)return void this.warn("Audio track is undefined on fragment load progress");const h=l.details;if(!h)return this.warn("Audio track details undefined on fragment load progress"),void this.removeUnbufferedFrags(i.start);const c=n.defaultAudioCodec||l.audioCodec||"mp4a.40.2";let d=this.transmuxer;d||(d=this.transmuxer=new gl(this.hls,cn,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));const u=this.initPTS[i.cc],f=null==(t=i.initSegment)?void 0:t.data;if(void 0!==u){const e=!1,t=r?r.index:-1,n=-1!==t,a=new Ca(i.level,i.sn,i.stats.chunkCount,s.byteLength,t,n);d.push(s,f,c,"",i,r,h.totalduration,e,a,u)}else{this.log(`Unknown video PTS for cc ${i.cc}, waiting for video PTS before demuxing audio frag ${i.sn} of [${h.startSN} ,${h.endSN}],track ${a}`);const{cache:e}=this.waitingData=this.waitingData||{frag:i,part:r,cache:new ao,complete:!1};e.push(new Uint8Array(s)),this.waitingVideoCC=this.videoTrackCC,this.state=ro}}_handleFragmentLoadComplete(e){this.waitingData?this.waitingData.complete=!0:super._handleFragmentLoadComplete(e)}onBufferReset(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1}onBufferCreated(e,t){const i=t.tracks.audio;i&&(this.mediaBuffer=i.buffer||null),t.tracks.video&&(this.videoBuffer=t.tracks.video.buffer||null)}onFragBuffered(e,t){const{frag:i,part:r}=t;if(i.type===cn)if(this.fragContextChanged(i))this.warn(`Fragment ${i.sn}${r?" p: "+r.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);else{if("initSegment"!==i.sn){this.fragPrevious=i;const e=this.switchingTrack;e&&(this.bufferedTrack=e,this.switchingTrack=null,this.hls.trigger(tr.AUDIO_TRACK_SWITCHED,qi({},e)))}this.fragBufferedComplete(i,r)}else if(!this.loadedmetadata&&i.type===hn){const e=this.videoBuffer||this.media;if(e){xa.getBuffered(e).length&&(this.loadedmetadata=!0)}}}onError(e,t){var i;if(t.fatal)this.state=io;else switch(t.details){case rr.FRAG_GAP:case rr.FRAG_PARSING_ERROR:case rr.FRAG_DECRYPT_ERROR:case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(cn,t);break;case rr.AUDIO_TRACK_LOAD_ERROR:case rr.AUDIO_TRACK_LOAD_TIMEOUT:case rr.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==Ja||(null==(i=t.context)?void 0:i.type)!==on||(this.state=qa);break;case rr.BUFFER_APPEND_ERROR:case rr.BUFFER_FULL_ERROR:if(!t.parent||"audio"!==t.parent)return;if(t.details===rr.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&(this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"));break;case rr.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}onBufferFlushing(e,{type:t}){t!==pr&&(this.flushing=!0)}onBufferFlushed(e,{type:t}){if(t!==pr){this.flushing=!1,this.bufferFlushed=!0,this.state===to&&(this.state=qa);const e=this.mediaBuffer||this.media;e&&(this.afterBufferFlushed(e,t,cn),this.tick())}}_handleTransmuxComplete(e){var t;const i="audio",{hls:r}=this,{remuxResult:s,chunkMeta:n}=e,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{details:c}=h,{audio:d,text:u,id3:f,initSegment:g}=s;if(!this.fragContextChanged(o)&&c){if(this.state=Za,this.switchingTrack&&d&&this.completeAudioSwitch(this.switchingTrack),null!=g&&g.tracks){const e=o.initSegment||o;this._bufferInitSegment(h,g.tracks,e,n),r.trigger(tr.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:g.tracks})}if(d){const{startPTS:e,endPTS:t,startDTS:i,endDTS:r}=d;l&&(l.elementaryStreams[mr]={startPTS:e,endPTS:t,startDTS:i,endDTS:r}),o.setElementaryStreamInfo(mr,e,t,i,r),this.bufferFragmentData(d,o,l,n)}if(null!=f&&null!=(t=f.samples)&&t.length){const e=Qi({id:i,frag:o,details:c},f);r.trigger(tr.FRAG_PARSING_METADATA,e)}if(u){const e=Qi({id:i,frag:o,details:c},u);r.trigger(tr.FRAG_PARSING_USERDATA,e)}}else this.fragmentTracker.removeFragment(o)}_bufferInitSegment(e,t,i,r){if(this.state!==Za)return;t.video&&delete t.video;const s=t.audio;if(!s)return;s.id="audio";const n=e.audioCodec;this.log(`Init audio buffer, container:${s.container}, codecs[level/parsed]=[${n}/${s.codec}]`),n&&1===n.split(",").length&&(s.levelCodec=n),this.hls.trigger(tr.BUFFER_CODECS,t);const a=s.initSegment;if(null!=a&&a.byteLength){const e={type:"audio",frag:i,part:null,chunkMeta:r,parent:i.type,data:a};this.hls.trigger(tr.BUFFER_APPENDING,e)}this.tickImmediate()}loadFragment(e,t,i){const r=this.fragmentTracker.getState(e);var s;if(this.fragCurrent=e,this.switchingTrack||r===ba||r===wa)if("initSegment"===e.sn)this._loadInitSegment(e,t);else if(null!=(s=t.details)&&s.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=ro;const i=this.mainDetails;i&&i.fragments[0].start!==t.details.fragments[0].start&&Fa(t.details,i)}else this.startFragRequested=!0,super.loadFragment(e,t,i);else this.clearTrackerIfNeeded(e)}flushAudioIfNeeded(e){const{media:t,bufferedTrack:i}=this,r=null==i?void 0:i.attrs,s=e.attrs;t&&r&&(r.CHANNELS!==s.CHANNELS||i.name!==e.name||i.lang!==e.lang)&&(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null)}completeAudioSwitch(e){const{hls:t}=this;this.flushAudioIfNeeded(e),this.bufferedTrack=e,this.switchingTrack=null,t.trigger(tr.AUDIO_TRACK_SWITCHED,qi({},e))}},audioTrackController:class extends la{constructor(e){super(e,"[audio-track-controller]"),this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVEL_LOADING,this.onLevelLoading,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVEL_LOADING,this.onLevelLoading,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(tr.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.audioTracks||[]}onAudioTrackLoaded(e,t){const{id:i,groupId:r,details:s}=t,n=this.tracksInGroup[i];if(!n||n.groupId!==r)return void this.warn(`Audio track with id:${i} and group:${r} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=t.details,this.log(`Audio track ${i} "${n.name}" lang:${n.lang} group:${r} loaded [${s.startSN}-${s.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.audioGroups||null,r=this.groupIds;let s=this.currentTrack;if(!i||(null==r?void 0:r.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==r?void 0:r.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!s&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.audioPreference;if(!s&&t){const i=va(t,e,Ta);if(i>-1)s=e[i];else{const e=va(t,this.tracks);s=this.tracks[e]}}let r=this.findTrackId(s);-1===r&&s&&(r=this.findTrackId(null));const a={audioTracks:e};this.log(`Updating audio tracks, ${e.length} track(s) found in group(s): ${null==i?void 0:i.join(",")}`),this.hls.trigger(tr.AUDIO_TRACKS_UPDATED,a);const o=this.trackId;if(-1!==r&&-1===o)this.setAudioTrack(r);else if(e.length&&-1===o){var n;const t=new Error(`No audio track selected for current audio group-ID(s): ${null==(n=this.groupIds)?void 0:n.join(",")} track count: ${e.length}`);this.warn(t.message),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:t})}}else this.shouldReloadPlaylist(s)&&this.setAudioTrack(this.trackId)}onError(e,t){!t.fatal&&t.context&&(t.context.type!==on||t.context.id!==this.trackId||this.groupIds&&-1===this.groupIds.indexOf(t.context.groupId)||(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){const t=this.hls;if(t.config.audioPreference=e,e){const i=this.allAudioTracks;if(this.selectDefaultTrack=!1,i.length){const r=this.currentTrack;if(r&&ya(e,r,Ta))return r;const s=va(e,this.tracksInGroup,Ta);if(s>-1){const e=this.tracksInGroup[s];return this.setAudioTrack(s),e}if(r){let r=t.loadLevel;-1===r&&(r=t.firstAutoLevel);const s=function(e,t,i,r,s){const n=t[r],a=t.reduce(((e,t,i)=>{const r=t.uri;return(e[r]||(e[r]=[])).push(i),e}),{})[n.uri];a.length>1&&(r=Math.max.apply(Math,a));const o=n.videoRange,l=n.frameRate,h=n.codecSet.substring(0,4),c=Ea(t,r,(t=>{if(t.videoRange!==o||t.frameRate!==l||t.codecSet.substring(0,4)!==h)return!1;const r=t.audioGroups,n=i.filter((e=>!r||-1!==r.indexOf(e.groupId)));return va(e,n,s)>-1}));return c>-1?c:Ea(t,r,(t=>{const r=t.audioGroups,n=i.filter((e=>!r||-1!==r.indexOf(e.groupId)));return va(e,n,s)>-1}))}(e,t.levels,i,r,Ta);if(-1===s)return null;t.nextLoadLevel=s}if(e.channels||e.audioCodec){const t=va(e,i);if(t>-1)return i[t]}}}return null}setAudioTrack(e){const t=this.tracksInGroup;if(e<0||e>=t.length)return void this.warn(`Invalid audio track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,r=t[e],s=r.details&&!r.details.live;if(e===this.trackId&&r===i&&s)return;if(this.log(`Switching to audio-track ${e} "${r.name}" lang:${r.lang} group:${r.groupId} channels:${r.channels}`),this.trackId=e,this.currentTrack=r,this.hls.trigger(tr.AUDIO_TRACK_SWITCHING,qi({},r)),s)return;const n=this.switchParams(r.url,null==i?void 0:i.details,r.details);this.loadPlaylist(n)}findTrackId(e){const t=this.tracksInGroup;for(let i=0;i{this.initialized&&(this.starved=!0),this.buffering=!0},this.onPlaying=()=>{this.initialized||(this.initialized=!0),this.buffering=!1},this.applyPlaylistData=e=>{try{this.apply(e,{ot:Eh.MANIFEST,su:!this.initialized})}catch(e){lr.warn("Could not generate manifest CMCD data.",e)}},this.applyFragmentData=e=>{try{const t=e.frag,i=this.hls.levels[t.level],r=this.getObjectType(t),s={d:1e3*t.duration,ot:r};r!==Eh.VIDEO&&r!==Eh.AUDIO&&r!=Eh.MUXED||(s.br=i.bitrate/1e3,s.tb=this.getTopBandwidth(r)/1e3,s.bl=this.getBufferLength(r)),this.apply(e,s)}catch(e){lr.warn("Could not generate segment CMCD data.",e)}},this.hls=e;const t=this.config=e.config,{cmcd:i}=t;null!=i&&(t.pLoader=this.createPlaylistLoader(),t.fLoader=this.createFragmentLoader(),this.sid=i.sessionId||function(){try{return crypto.randomUUID()}catch(e){try{const e=URL.createObjectURL(new Blob),t=e.toString();return URL.revokeObjectURL(e),t.slice(t.lastIndexOf("/")+1)}catch(e){let t=(new Date).getTime();const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const i=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?i:3&i|8).toString(16)}));return i}}}(),this.cid=i.contentId,this.useHeaders=!0===i.useHeaders,this.includeKeys=i.includeKeys,this.registerListeners())}registerListeners(){const e=this.hls;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHED,this.onMediaDetached,this),e.on(tr.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){const e=this.hls;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHED,this.onMediaDetached,this),e.off(tr.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 i,r;this.audioBuffer=null==(i=t.tracks.audio)?void 0:i.buffer,this.videoBuffer=null==(r=t.tracks.video)?void 0:r.buffer}createData(){var e;return{v:1,sf:Sh.HLS,sid:this.sid,cid:this.cid,pr:null==(e=this.media)?void 0:e.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}}apply(e,t={}){Qi(t,this.createData());const i=t.ot===Eh.INIT||t.ot===Eh.VIDEO||t.ot===Eh.MUXED;this.starved&&i&&(t.bs=!0,t.su=!0,this.starved=!1),null==t.su&&(t.su=this.buffering);const{includeKeys:r}=this;r&&(t=Object.keys(t).reduce(((e,i)=>(r.includes(i)&&(e[i]=t[i]),e)),{})),this.useHeaders?(e.headers||(e.headers={}),ec(e.headers,t)):e.url=rc(e.url,t)}getObjectType(e){const{type:t}=e;return"subtitle"===t?Eh.TIMED_TEXT:"initSegment"===e.sn?Eh.INIT:"audio"===t?Eh.AUDIO:"main"===t?this.hls.audioTracks.length?Eh.VIDEO:Eh.MUXED:void 0}getTopBandwidth(e){let t,i=0;const r=this.hls;if(e===Eh.AUDIO)t=r.audioTracks;else{const e=r.maxAutoLevel,i=e>-1?e+1:r.levels.length;t=r.levels.slice(0,i)}for(const e of t)e.bitrate>i&&(i=e.bitrate);return i>0?i:NaN}getBufferLength(e){const t=this.hls.media,i=e===Eh.AUDIO?this.audioBuffer:this.videoBuffer;if(!i||!t)return NaN;return 1e3*xa.bufferInfo(i,t.currentTime,this.config.maxBufferHole).len}createPlaylistLoader(){const{pLoader:e}=this.config,t=this.applyPlaylistData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,r){t(e),this.loader.load(e,i,r)}}}createFragmentLoader(){const{fLoader:e}=this.config,t=this.applyFragmentData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,r){t(e),this.loader.load(e,i,r)}}}},contentSteeringController: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=lr.log.bind(lr,"[content-steering]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const e=this.hls;e&&(e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.ERROR,this.onError,this))}startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){const e=1e3*this.timeToLoad-(performance.now()-this.updated);if(e>0)return void this.scheduleRefresh(this.uri,e)}this.loadSteeringManifest(this.uri)}}stopLoad(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()}clearTimeout(){-1!==this.reloadTimer&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(e){const t=this.levels;t&&(this.levels=t.filter((t=>t!==e)))}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(e,t){const{contentSteering:i}=t;null!==i&&(this.pathwayId=i.pathwayId,this.uri=i.uri,this.started&&this.startLoad())}onManifestParsed(e,t){this.audioTracks=t.audioTracks,this.subtitleTracks=t.subtitleTracks}onError(e,t){const{errorAction:i}=t;if((null==i?void 0:i.action)===ia&&i.flags===aa){const e=this.levels;let r=this.pathwayPriority,s=this.pathwayId;if(t.context){const{groupId:i,pathwayId:r,type:n}=t.context;i&&e?s=this.getPathwayForGroupId(i,n,s):r&&(s=r)}s in this.penalizedPathways||(this.penalizedPathways[s]=performance.now()),!r&&e&&(r=e.reduce(((e,t)=>(-1===e.indexOf(t.pathwayId)&&e.push(t.pathwayId),e)),[])),r&&r.length>1&&(this.updatePathwayPriority(r),i.resolved=this.pathwayId!==s),i.resolved||lr.warn(`Could not resolve ${t.details} ("${t.error.message}") with content-steering for Pathway: ${s} levels: ${e?e.length:e} priorities: ${JSON.stringify(r)} penalized: ${JSON.stringify(this.penalizedPathways)}`)}}filterParsedLevels(e){this.levels=e;let t=this.getLevelsForPathway(this.pathwayId);if(0===t.length){const i=e[0].pathwayId;this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to "${i}"`),t=this.getLevelsForPathway(i),this.pathwayId=i}return t.length!==e.length?(this.log(`Found ${t.length}/${e.length} levels in Pathway "${this.pathwayId}"`),t):e}getLevelsForPathway(e){return null===this.levels?[]:this.levels.filter((t=>e===t.pathwayId))}updatePathwayPriority(e){let t;this.pathwayPriority=e;const i=this.penalizedPathways,r=performance.now();Object.keys(i).forEach((e=>{r-i[e]>3e5&&delete i[e]}));for(let r=0;r0){this.log(`Setting Pathway to "${s}"`),this.pathwayId=s,jn(t),this.hls.trigger(tr.LEVELS_UPDATED,{levels:t});const e=this.hls.levels[n];a&&e&&this.levels&&(e.attrs["STABLE-VARIANT-ID"]!==a.attrs["STABLE-VARIANT-ID"]&&e.bitrate!==a.bitrate&&this.log(`Unstable Pathways change from bitrate ${a.bitrate} to ${e.bitrate}`),this.hls.nextLoadLevel=n);break}}}getPathwayForGroupId(e,t,i){const r=this.getLevelsForPathway(i).concat(this.levels||[]);for(let i=0;i{const{ID:s,"BASE-ID":n,"URI-REPLACEMENT":a}=e;if(t.some((e=>e.pathwayId===s)))return;const o=this.getLevelsForPathway(n).map((e=>{const t=new dr(e.attrs);t["PATHWAY-ID"]=s;const n=t.AUDIO&&`${t.AUDIO}_clone_${s}`,o=t.SUBTITLES&&`${t.SUBTITLES}_clone_${s}`;n&&(i[t.AUDIO]=n,t.AUDIO=n),o&&(r[t.SUBTITLES]=o,t.SUBTITLES=o);const l=nc(e.uri,t["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",a),h=new Fn({attrs:t,audioCodec:e.audioCodec,bitrate:e.bitrate,height:e.height,name:e.name,url:l,videoCodec:e.videoCodec,width:e.width});if(e.audioGroups)for(let t=1;t{this.log(`Loaded steering manifest: "${r}"`);const n=e.data;if(1!==n.VERSION)return void this.log(`Steering VERSION ${n.VERSION} not supported!`);this.updated=performance.now(),this.timeToLoad=n.TTL;const{"RELOAD-URI":a,"PATHWAY-CLONES":o,"PATHWAY-PRIORITY":l}=n;if(a)try{this.uri=new self.URL(a,r).href}catch(e){return this.enabled=!1,void this.log(`Failed to parse Steering Manifest RELOAD-URI: ${a}`)}this.scheduleRefresh(this.uri||i.url),o&&this.clonePathways(o);const h={steeringManifest:n,url:r.toString()};this.hls.trigger(tr.STEERING_MANIFEST_LOADED,h),l&&this.updatePathwayPriority(l)},onError:(e,t,i,r)=>{if(this.log(`Error loading steering manifest: ${e.code} ${e.text} (${t.url})`),this.stopLoad(),410===e.code)return this.enabled=!1,void this.log(`Steering manifest ${t.url} no longer available`);let s=1e3*this.timeToLoad;if(429!==e.code)this.scheduleRefresh(this.uri||t.url,s);else{const e=this.loader;if("function"==typeof(null==e?void 0:e.getResponseHeader)){const t=e.getResponseHeader("Retry-After");t&&(s=1e3*parseFloat(t))}this.log(`Steering manifest ${t.url} rate limited`)}},onTimeout:(e,t,i)=>{this.log(`Timeout loading steering manifest (${t.url})`),this.scheduleRefresh(this.uri||t.url)}};this.log(`Requesting steering manifest: ${r}`),this.loader.load(s,o,l)}scheduleRefresh(e,t=1e3*this.timeToLoad){this.clearTimeout(),this.reloadTimer=self.setTimeout((()=>{var t;const i=null==(t=this.hls)?void 0:t.media;!i||i.ended?this.scheduleRefresh(e,1e3*this.timeToLoad):this.loadSteeringManifest(e)}),t)}}});function mc(e){return e&&"object"==typeof e?Array.isArray(e)?e.map(mc):Object.keys(e).reduce(((t,i)=>(t[i]=mc(e[i]),t)),{}):e}function pc(e){const t=e.loader;if(t!==hc&&t!==oc)lr.log("[config]: Custom loader detected, cannot enable progressive streaming"),e.progressive=!1;else{(function(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(e){}return!1})()&&(e.loader=hc,e.progressive=!0,e.enableSoftwareAES=!0,lr.log("[config]: Progressive streaming enabled, using FetchLoader"))}}let vc;class yc extends la{constructor(e,t){super(e,"[level-controller]"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=t,this._registerListeners()}_registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.on(tr.ERROR,this.onError,this)}_unregisterListeners(){const{hls:e}=this;e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.off(tr.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach((e=>{e.loadError=0,e.fragmentError=0})),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(e,t){this.resetLevels()}onManifestLoaded(e,t){const i=this.hls.config.preferManagedMediaSource,r=[],s={},n={};let a=!1,o=!1,l=!1;t.levels.forEach((e=>{var t,h;const c=e.attrs;let{audioCodec:d,videoCodec:u}=e;-1!==(null==(t=d)?void 0:t.indexOf("mp4a.40.34"))&&(vc||(vc=/chrome|firefox/i.test(navigator.userAgent)),vc&&(e.audioCodec=d=void 0)),d&&(e.audioCodec=d=Vs(d,i)),0===(null==(h=u)?void 0:h.indexOf("avc1"))&&(u=e.videoCodec=function(e){const t=e.split(".");if(t.length>2){let e=t.shift()+".";return e+=parseInt(t.shift()).toString(16),e+=("000"+parseInt(t.shift()).toString(16)).slice(-4),e}return e}(u));const{width:f,height:g,unknownCodecs:m}=e;if(a||(a=!(!f||!g)),o||(o=!!u),l||(l=!!d),null!=m&&m.length||d&&!Fs(d,"audio",i)||u&&!Fs(u,"video",i))return;const{CODECS:p,"FRAME-RATE":v,"HDCP-LEVEL":y,"PATHWAY-ID":T,RESOLUTION:E,"VIDEO-RANGE":S}=c,b=`${`${T||"."}-`}${e.bitrate}-${E}-${v}-${p}-${S}-${y}`;if(s[b])if(s[b].uri===e.url||e.attrs["PATHWAY-ID"])s[b].addGroupId("audio",c.AUDIO),s[b].addGroupId("text",c.SUBTITLES);else{const t=n[b]+=1;e.attrs["PATHWAY-ID"]=new Array(t+1).join(".");const i=new Fn(e);s[b]=i,r.push(i)}else{const t=new Fn(e);s[b]=t,n[b]=1,r.push(t)}})),this.filterAndSortMediaOptions(r,t,a,o,l)}filterAndSortMediaOptions(e,t,i,r,s){let n=[],a=[],o=e;if((i||r)&&s&&(o=o.filter((({videoCodec:e,videoRange:t,width:i,height:r})=>{return(!!e||!(!i||!r))&&(!!(s=t)&&xn.indexOf(s)>-1);var s}))),0===o.length)return void 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)}`);const e=new Error("no level with compatible codecs found in manifest");this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,error:e,reason:e.message})}}));if(t.audioTracks){const{preferManagedMediaSource:e}=this.hls.config;n=t.audioTracks.filter((t=>!t.audioCodec||Fs(t.audioCodec,"audio",e))),Tc(n)}t.subtitles&&(a=t.subtitles,Tc(a));const l=o.slice(0);o.sort(((e,t)=>{if(e.attrs["HDCP-LEVEL"]!==t.attrs["HDCP-LEVEL"])return(e.attrs["HDCP-LEVEL"]||"")>(t.attrs["HDCP-LEVEL"]||"")?1:-1;if(i&&e.height!==t.height)return e.height-t.height;if(e.frameRate!==t.frameRate)return e.frameRate-t.frameRate;if(e.videoRange!==t.videoRange)return xn.indexOf(e.videoRange)-xn.indexOf(t.videoRange);if(e.videoCodec!==t.videoCodec){const i=Bs(e.videoCodec),r=Bs(t.videoCodec);if(i!==r)return r-i}if(e.uri===t.uri&&e.codecSet!==t.codecSet){const i=$s(e.codecSet),r=$s(t.codecSet);if(i!==r)return r-i}return e.averageBitrate!==t.averageBitrate?e.averageBitrate-t.averageBitrate:0}));let h=l[0];if(this.steering&&(o=this.steering.filterParsedLevels(o),o.length!==l.length))for(let e=0;ei&&i===gc.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=e)}break}const d=s&&!r,u={levels:o,audioTracks:n,subtitleTracks:a,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:s,video:r,altAudio:!d&&n.some((e=>!!e.url))};this.hls.trigger(tr.MANIFEST_PARSED,u),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}get levels(){return 0===this._levels.length?null:this._levels}get level(){return this.currentLevelIndex}set level(e){const t=this._levels;if(0===t.length)return;if(e<0||e>=t.length){const i=new Error("invalid level idx"),r=e<0;if(this.hls.trigger(tr.ERROR,{type:ir.OTHER_ERROR,details:rr.LEVEL_SWITCH_ERROR,level:e,fatal:r,error:i,reason:i.message}),r)return;e=Math.min(e,t.length-1)}const i=this.currentLevelIndex,r=this.currentLevel,s=r?r.attrs["PATHWAY-ID"]:void 0,n=t[e],a=n.attrs["PATHWAY-ID"];if(this.currentLevelIndex=e,this.currentLevel=n,i===e&&n.details&&r&&s===a)return;this.log(`Switching to level ${e} (${n.height?n.height+"p ":""}${n.videoRange?n.videoRange+" ":""}${n.codecSet?n.codecSet+" ":""}@${n.bitrate})${a?" with Pathway "+a:""} from level ${i}${s?" with Pathway "+s:""}`);const o={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(tr.LEVEL_SWITCHING,o);const l=n.details;if(!l||l.live){const e=this.switchParams(n.uri,null==r?void 0:r.details,l);this.loadPlaylist(e)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(e){this.manualLevelIndex=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}get firstLevel(){return this._firstLevel}set firstLevel(e){this._firstLevel=e}get startLevel(){if(void 0===this._startLevel){const e=this.hls.config.startLevel;return void 0!==e?e:this.hls.firstAutoLevel}return this._startLevel}set startLevel(e){this._startLevel=e}onError(e,t){!t.fatal&&t.context&&t.context.type===an&&t.context.level===this.level&&this.checkRetry(t)}onFragBuffered(e,{frag:t}){if(void 0!==t&&t.type===hn){const e=t.elementaryStreams;if(!Object.keys(e).some((t=>!!e[t])))return;const i=this._levels[t.level];null!=i&&i.loadError&&(this.log(`Resetting level error count of ${i.loadError} on frag buffered`),i.loadError=0)}}onLevelLoaded(e,t){var i;const{level:r,details:s}=t,n=this._levels[r];var a;if(!n)return this.warn(`Invalid level index ${r}`),void(null!=(a=t.deliveryDirectives)&&a.skip&&(s.deltaUpdateFailed=!0));r===this.currentLevelIndex?(0===n.fragmentError&&(n.loadError=0),this.playlistLoaded(r,t,n.details)):null!=(i=t.deliveryDirectives)&&i.skip&&(s.deltaUpdateFailed=!0)}loadPlaylist(e){super.loadPlaylist();const t=this.currentLevelIndex,i=this.currentLevel;if(i&&this.shouldLoadPlaylist(i)){let r=i.uri;if(e)try{r=e.addDirectives(r)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}const s=i.attrs["PATHWAY-ID"];this.log(`Loading level index ${t}${void 0!==(null==e?void 0:e.msn)?" at sn "+e.msn+" part "+e.part:""} with${s?" Pathway "+s:""} ${r}`),this.clearTimer(),this.hls.trigger(tr.LEVEL_LOADING,{url:r,level:t,pathwayId:i.attrs["PATHWAY-ID"],id:0,deliveryDirectives:e||null})}}get nextLoadLevel(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(e){this.level=e,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=e)}removeLevel(e){var t;const i=this._levels.filter(((t,i)=>i!==e||(this.steering&&this.steering.removeLevel(t),t===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,t.details&&t.details.fragments.forEach((e=>e.level=-1))),!1)));jn(i),this._levels=i,this.currentLevelIndex>-1&&null!=(t=this.currentLevel)&&t.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.hls.trigger(tr.LEVELS_UPDATED,{levels:i})}onLevelsUpdated(e,{levels:t}){this._levels=t}checkMaxAutoUpdated(){const{autoLevelCapping:e,maxAutoLevel:t,maxHdcpLevel:i}=this.hls;this._maxAutoLevel!==t&&(this._maxAutoLevel=t,this.hls.trigger(tr.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:e,levels:this.levels,maxAutoLevel:t,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:i}))}}function Tc(e){const t={};e.forEach((e=>{const i=e.groupId||"";e.id=t[i]=t[i]||0,t[i]++}))}class Ec{constructor(e){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=e}abort(e){for(const i in this.keyUriToKeyInfo){const r=this.keyUriToKeyInfo[i].loader;if(r){var t;if(e&&e!==(null==(t=r.context)?void 0:t.frag.type))return;r.abort()}}}detach(){for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e];(t.mediaKeySessionContext||t.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[e]}}destroy(){this.detach();for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e].loader;t&&t.destroy()}this.keyUriToKeyInfo={}}createKeyLoadError(e,t=rr.KEY_LOAD_ERROR,i,r,s){return new Ga({type:ir.NETWORK_ERROR,details:t,fatal:!1,frag:e,response:s,error:i,networkDetails:r})}loadClear(e,t){if(this.emeController&&this.config.emeEnabled){const{sn:i,cc:r}=e;for(let e=0;e{s.setKeyFormat(e)}));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 i,r;t&&e.setKeyFormat(t);const s=e.decryptdata;if(!s){const i=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,rr.KEY_LOAD_ERROR,i))}const n=s.uri;if(!n)return Promise.reject(this.createKeyLoadError(e,rr.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${n}"`)));let a=this.keyUriToKeyInfo[n];if(null!=(i=a)&&i.decryptdata.key)return s.key=a.decryptdata.key,Promise.resolve({frag:e,keyInfo:a});var o;if(null!=(r=a)&&r.keyLoadPromise)switch(null==(o=a.mediaKeySessionContext)?void 0:o.keyStatus){case void 0:case"status-pending":case"usable":case"usable-in-future":return a.keyLoadPromise.then((t=>(s.key=t.keyInfo.decryptdata.key,{frag:e,keyInfo:a})))}switch(a=this.keyUriToKeyInfo[n]={decryptdata:s,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},s.method){case"ISO-23001-7":case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return"identity"===s.keyFormat?this.loadKeyHTTP(a,e):this.loadKeyEME(a,e);case"AES-128":return this.loadKeyHTTP(a,e);default:return Promise.reject(this.createKeyLoadError(e,rr.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${s.method}"`)))}}loadKeyEME(e,t){const i={frag:t,keyInfo:e};if(this.emeController&&this.config.emeEnabled){const t=this.emeController.loadKey(i);if(t)return(e.keyLoadPromise=t.then((t=>(e.mediaKeySessionContext=t,i)))).catch((t=>{throw e.keyLoadPromise=null,t}))}return Promise.resolve(i)}loadKeyHTTP(e,t){const i=this.config,r=new(0,i.loader)(i);return t.keyLoader=e.loader=r,e.keyLoadPromise=new Promise(((s,n)=>{const a={keyInfo:e,frag:t,responseType:"arraybuffer",url:e.decryptdata.uri},o=i.keyLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(e,t,i,r)=>{const{frag:a,keyInfo:o,url:l}=i;if(!a.decryptdata||o!==this.keyUriToKeyInfo[l])return n(this.createKeyLoadError(a,rr.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),r));o.decryptdata.key=a.decryptdata.key=new Uint8Array(e.data),a.keyLoader=null,o.loader=null,s({frag:a,keyInfo:o})},onError:(e,i,r,s)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.KEY_LOAD_ERROR,new Error(`HTTP Error ${e.code} loading key ${e.text}`),r,qi({url:a.url,data:void 0},e)))},onTimeout:(e,i,r)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),r))},onAbort:(e,i,r)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.INTERNAL_ABORTED,new Error("key loading aborted"),r))}};r.load(a,l,h)}))}resetLoader(e){const{frag:t,keyInfo:i,url:r}=e,s=i.loader;t.keyLoader===s&&(t.keyLoader=null,i.loader=null),delete this.keyUriToKeyInfo[r],s&&s.destroy()}}function Sc(){return self.SourceBuffer||self.WebKitSourceBuffer}function bc(){if(!Os())return!1;const e=Sc();return!e||e.prototype&&"function"==typeof e.prototype.appendBuffer&&"function"==typeof e.prototype.remove}class Lc{constructor(e,t,i,r){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=i,this.hls=r}destroy(){this.media=null,this.hls=this.fragmentTracker=null}poll(e,t){const{config:i,media:r,stalled:s}=this;if(null===r)return;const{currentTime:n,seeking:a}=r,o=this.seeking&&!a,l=!this.seeking&&a;if(this.seeking=a,n!==e){if(this.moved=!0,a||(this.nudgeRetry=0),null!==s){if(this.stallReported){const e=self.performance.now()-s;lr.warn(`playback not stuck anymore @${n}, after ${Math.round(e)}ms`),this.stallReported=!1}this.stalled=null}return}if(l||o)return void(this.stalled=null);if(r.paused&&!a||r.ended||0===r.playbackRate||!xa.getBuffered(r).length)return void(this.nudgeRetry=0);const h=xa.bufferInfo(r,n,0),c=h.nextStart||0;if(a){const e=h.len>2,i=!c||t&&t.start<=n||c-n>2&&!this.fragmentTracker.getPartialFragment(n);if(e||i)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var d;if(!(h.len>0)&&!c)return;const e=Math.max(c,h.start||0)-n,t=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,i=(null==t||null==(d=t.details)?void 0:d.live)?2*t.details.targetduration:2,s=this.fragmentTracker.getPartialFragment(n);if(e>0&&(e<=i||s))return void(r.paused||this._trySkipBufferHole(s))}const u=self.performance.now();if(null===s)return void(this.stalled=u);const f=u-s;if(!a&&f>=250&&(this._reportStall(h),!this.media))return;const g=xa.bufferInfo(r,n,i.maxBufferHole);this._tryFixBufferStall(g,f)}_tryFixBufferStall(e,t){const{config:i,fragmentTracker:r,media:s}=this;if(null===s)return;const n=s.currentTime,a=r.getPartialFragment(n);if(a){if(this._trySkipBufferHole(a)||!this.media)return}(e.len>i.maxBufferHole||e.nextStart&&e.nextStart-n1e3*i.highBufferWatchdogPeriod&&(lr.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}_reportStall(e){const{hls:t,media:i,stallReported:r}=this;if(!r&&i){this.stallReported=!0;const r=new Error(`Playback stalling at @${i.currentTime} due to low buffer (${JSON.stringify(e)})`);lr.warn(r.message),t.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_STALLED_ERROR,fatal:!1,error:r,buffer:e.len})}}_trySkipBufferHole(e){const{config:t,hls:i,media:r}=this;if(null===r)return 0;const s=r.currentTime,n=xa.bufferInfo(r,s,0),a=s0&&n.len<1&&r.readyState<3,h=a-s;if(h>0&&(o||l)){if(h>t.maxBufferHole){const{fragmentTracker:t}=this;let i=!1;if(0===s){const e=t.getAppendedFrag(0,hn);e&&a1?(e=0,this.bitrateTest=!0):e=i.firstAutoLevel),i.nextLoadLevel=e,this.level=i.loadLevel,this.loadedmetadata=!1}t>0&&-1===e&&(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t),this.state=qa,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=Ya}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case so:{const{levels:e,level:t}=this,i=null==e?void 0:e[t],r=null==i?void 0:i.details;if(r&&(!r.live||this.levelLastLoaded===i)){if(this.waitForCdnTuneIn(r))break;this.state=qa;break}if(this.hls.nextLoadLevel!==this.level){this.state=qa;break}break}case Qa:{var e;const t=self.performance.now(),i=this.retryDate;if(!i||t>=i||null!=(e=this.media)&&e.seeking){const{levels:e,level:t}=this,i=null==e?void 0:e[t];this.resetStartWhenNotLoaded(i||null),this.state=qa}}}this.state===qa&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){super.onTickEnd(),this.checkBuffer(),this.checkFragmentChanged()}doTickIdle(){const{hls:e,levelLastLoaded:t,levels:i,media:r}=this;if(null===t||!r&&(this.startFragRequested||!e.config.startFragPrefetch))return;if(this.altAudio&&this.audioOnly)return;const s=e.nextLoadLevel;if(null==i||!i[s])return;const n=i[s],a=this.getMainFwdBufferInfo();if(null===a)return;const o=this.getLevelDetails();if(o&&this._streamEnded(a,o)){const e={};return this.altAudio&&(e.type="video"),this.hls.trigger(tr.BUFFER_EOS,e),void(this.state=to)}e.loadLevel!==s&&-1===e.manualLevel&&this.log(`Adapting to level ${s} from level ${this.level}`),this.level=e.nextLoadLevel=s;const l=n.details;if(!l||this.state===so||l.live&&this.levelLastLoaded!==n)return this.level=s,void(this.state=so);const h=a.len,c=this.getMaxBufferLength(n.maxBitrate);if(h>=c)return;this.backtrackFragment&&this.backtrackFragment.start>a.end&&(this.backtrackFragment=null);const d=this.backtrackFragment?this.backtrackFragment.start:a.end;let u=this.getNextFragment(d,l);if(this.couldBacktrack&&!this.fragPrevious&&u&&"initSegment"!==u.sn&&this.fragmentTracker.getState(u)!==Aa){var f;const e=(null!=(f=this.backtrackFragment)?f:u).sn-l.startSN,t=l.fragments[e-1];t&&u.cc===t.cc&&(u=t,this.fragmentTracker.removeFragment(t))}else this.backtrackFragment&&a.len&&(this.backtrackFragment=null);if(u&&this.isLoopLoading(u,d)){if(!u.gap){const e=this.audioOnly&&!this.altAudio?mr:pr,t=(e===pr?this.videoBuffer:this.mediaBuffer)||this.media;t&&this.afterBufferFlushed(t,e,hn)}u=this.getNextFragmentLoopLoading(u,l,a,hn,c)}u&&(!u.initSegment||u.initSegment.data||this.bitrateTest||(u=u.initSegment),this.loadFragment(u,n,d))}loadFragment(e,t,i){const r=this.fragmentTracker.getState(e);this.fragCurrent=e,r===ba||r===wa?"initSegment"===e.sn?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,i)):this.clearTrackerIfNeeded(e)}getBufferedFrag(e){return this.fragmentTracker.getBufferedFrag(e,hn)}followingBufferedFrag(e){return e?this.getBufferedFrag(e.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:e,media:t}=this;if(null!=t&&t.readyState){let i;const r=this.getAppendedFrag(t.currentTime);r&&r.start>1&&this.flushMainBuffer(0,r.start-1);const s=this.getLevelDetails();if(null!=s&&s.live){const e=this.getMainFwdBufferInfo();if(!e||e.len<2*s.targetduration)return}if(!t.paused&&e){const t=e[this.hls.nextLoadLevel],r=this.fragLastKbps;i=r&&this.fragCurrent?this.fragCurrent.duration*t.maxBitrate/(1e3*r)+1:0}else i=0;const n=this.getBufferedFrag(t.currentTime+i);if(n){const e=this.followingBufferedFrag(n);if(e){this.abortCurrentFrag();const t=e.maxStartPTS?e.maxStartPTS:e.start,i=e.duration,r=Math.max(n.end,t+Math.min(Math.max(i-this.config.maxFragLookUpTolerance,i*(this.couldBacktrack?.5:.125)),i*(this.couldBacktrack?.75:.25)));this.flushMainBuffer(r,Number.POSITIVE_INFINITY)}}}}abortCurrentFrag(){const e=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,e&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.state){case za:case Xa:case Qa:case Za:case eo:this.state=qa}this.nextLoadPosition=this.getLoadPosition()}flushMainBuffer(e,t){super.flushMainBuffer(e,t,this.altAudio?"video":null)}onMediaAttached(e,t){super.onMediaAttached(e,t);const i=t.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),i.addEventListener("playing",this.onvplaying),i.addEventListener("seeked",this.onvseeked),this.gapController=new Lc(this.config,i,this.fragmentTracker,this.hls)}onMediaDetaching(){const{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(){const e=this.media,t=e?e.currentTime:null;Ji(t)&&this.log(`Media seeked to ${t.toFixed(3)}`);const i=this.getMainFwdBufferInfo();null!==i&&0!==i.len?this.tick():this.warn(`Main forward buffer length on "seeked" event ${i?i.len:"empty"})`)}onManifestLoading(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(tr.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 i=!1,r=!1;t.levels.forEach((e=>{const t=e.audioCodec;t&&(i=i||-1!==t.indexOf("mp4a.40.2"),r=r||-1!==t.indexOf("mp4a.40.5"))})),this.audioCodecSwitch=i&&r&&!function(){var e;const t=Sc();return"function"==typeof(null==t||null==(e=t.prototype)?void 0:e.changeType)}(),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){const{levels:i}=this;if(!i||this.state!==qa)return;const r=i[t.level];(!r.details||r.details.live&&this.levelLastLoaded!==r||this.waitForCdnTuneIn(r.details))&&(this.state=so)}onLevelLoaded(e,t){var i;const{levels:r}=this,s=t.level,n=t.details,a=n.totalduration;if(!r)return void this.warn(`Levels were reset while loading level ${s}`);this.log(`Level ${s} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""}, cc [${n.startCC}, ${n.endCC}] duration:${a}`);const o=r[s],l=this.fragCurrent;!l||this.state!==Xa&&this.state!==Qa||l.level!==t.level&&l.loader&&this.abortCurrentFrag();let h=0;if(n.live||null!=(i=o.details)&&i.live){var c;if(this.checkLiveUpdate(n),n.deltaUpdateFailed)return;h=this.alignPlaylists(n,o.details,null==(c=this.levelLastLoaded)?void 0:c.details)}if(o.details=n,this.levelLastLoaded=o,this.hls.trigger(tr.LEVEL_UPDATED,{details:n,level:s}),this.state===so){if(this.waitForCdnTuneIn(n))return;this.state=qa}this.startFragRequested?n.live&&this.synchronizeToLiveEdge(n):this.setStartPosition(n,h),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:r,payload:s}=e,{levels:n}=this;if(!n)return void this.warn(`Levels were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const a=n[i.level],o=a.details;if(!o)return this.warn(`Dropping fragment ${i.sn} of level ${i.level} after level details were reset`),void this.fragmentTracker.removeFragment(i);const l=a.videoCodec,h=o.PTSKnown||!o.live,c=null==(t=i.initSegment)?void 0:t.data,d=this._getAudioCodec(a),u=this.transmuxer=this.transmuxer||new gl(this.hls,hn,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),f=r?r.index:-1,g=-1!==f,m=new Ca(i.level,i.sn,i.stats.chunkCount,s.byteLength,f,g),p=this.initPTS[i.cc];u.push(s,c,d,l,i,r,o.totalduration,h,m,p)}onAudioTrackSwitching(e,t){const i=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;const e=this.fragCurrent;e&&(this.log("Switching to main audio track, cancel main fragment load"),e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();const e=this.hls;i&&(e.trigger(tr.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),e.trigger(tr.AUDIO_TRACK_SWITCHED,t)}}onAudioTrackSwitched(e,t){const i=t.id,r=!!this.hls.audioTracks[i].url;if(r){const e=this.videoBuffer;e&&this.mediaBuffer!==e&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=e)}this.altAudio=r,this.tick()}onBufferCreated(e,t){const i=t.tracks;let r,s,n=!1;for(const e in i){const t=i[e];if("main"===t.id){if(s=e,r=t,"video"===e){const t=i[e];t&&(this.videoBuffer=t.buffer)}}else n=!0}n&&r?(this.log(`Alternate track found, use ${s}.buffered to schedule main fragment loading`),this.mediaBuffer=r.buffer):this.mediaBuffer=this.media}onFragBuffered(e,t){const{frag:i,part:r}=t;if(i&&i.type!==hn)return;if(this.fragContextChanged(i))return this.warn(`Fragment ${i.sn}${r?" p: "+r.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}`),void(this.state===eo&&(this.state=qa));const s=r?r.stats:i.stats;this.fragLastKbps=Math.round(8*s.total/(s.buffering.end-s.loading.first)),"initSegment"!==i.sn&&(this.fragPrevious=i),this.fragBufferedComplete(i,r)}onError(e,t){var i;if(t.fatal)this.state=io;else switch(t.details){case rr.FRAG_GAP:case rr.FRAG_PARSING_ERROR:case rr.FRAG_DECRYPT_ERROR:case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(hn,t);break;case rr.LEVEL_LOAD_ERROR:case rr.LEVEL_LOAD_TIMEOUT:case rr.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==so||(null==(i=t.context)?void 0:i.type)!==an||(this.state=qa);break;case rr.BUFFER_APPEND_ERROR:case rr.BUFFER_FULL_ERROR:if(!t.parent||"main"!==t.parent)return;if(t.details===rr.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case rr.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}checkBuffer(){const{media:e,gapController:t}=this;if(e&&t&&e.readyState){if(this.loadedmetadata||!xa.getBuffered(e).length){const e=this.state!==qa?this.fragCurrent:null;t.poll(this.lastCurrentTime,e)}this.lastCurrentTime=e.currentTime}}onFragLoadEmergencyAborted(){this.state=qa,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()}onBufferFlushed(e,{type:t}){if(t!==mr||this.audioOnly&&!this.altAudio){const e=(t===pr?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(e,t,hn),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(){const{media:e}=this;if(!e)return;const t=e.currentTime;let i=this.startPosition;if(i>=0&&t0&&(s{const{hls:r}=this;if(!i||this.fragContextChanged(e))return;t.fragmentError=0,this.state=qa,this.startFragRequested=!1,this.bitrateTest=!1;const s=e.stats;s.parsing.start=s.parsing.end=s.buffering.start=s.buffering.end=self.performance.now(),r.trigger(tr.FRAG_LOADED,i),e.bitrateTest=!1}))}_handleTransmuxComplete(e){var t;const i="main",{hls:r}=this,{remuxResult:s,chunkMeta:n}=e,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{video:c,text:d,id3:u,initSegment:f}=s,{details:g}=h,m=this.altAudio?void 0:s.audio;if(this.fragContextChanged(o))this.fragmentTracker.removeFragment(o);else{if(this.state=Za,f){if(null!=f&&f.tracks){const e=o.initSegment||o;this._bufferInitSegment(h,f.tracks,e,n),r.trigger(tr.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:f.tracks})}const e=f.initPTS,t=f.timescale;Ji(e)&&(this.initPTS[o.cc]={baseTime:e,timescale:t},r.trigger(tr.INIT_PTS_FOUND,{frag:o,id:i,initPTS:e,timescale:t}))}if(c&&g&&"initSegment"!==o.sn){const e=g.fragments[o.sn-1-g.startSN],t=o.sn===g.startSN,i=!e||o.cc>e.cc;if(!1!==s.independent){const{startPTS:e,endPTS:r,startDTS:s,endDTS:a}=c;if(l)l.elementaryStreams[c.type]={startPTS:e,endPTS:r,startDTS:s,endDTS:a};else if(c.firstKeyFrame&&c.independent&&1===n.id&&!i&&(this.couldBacktrack=!0),c.dropped&&c.independent){const s=this.getMainFwdBufferInfo(),n=(s?s.end:this.getLoadPosition())+this.config.maxBufferHole,l=c.firstKeyFramePTS?c.firstKeyFramePTS:e;if(!t&&n2&&(o.gap=!0);o.setElementaryStreamInfo(c.type,e,r,s,a),this.backtrackFragment&&(this.backtrackFragment=o),this.bufferFragmentData(c,o,l,n,t||i)}else{if(!t&&!i)return void this.backtrack(o);o.gap=!0}}if(m){const{startPTS:e,endPTS:t,startDTS:i,endDTS:r}=m;l&&(l.elementaryStreams[mr]={startPTS:e,endPTS:t,startDTS:i,endDTS:r}),o.setElementaryStreamInfo(mr,e,t,i,r),this.bufferFragmentData(m,o,l,n)}if(g&&null!=u&&null!=(t=u.samples)&&t.length){const e={id:i,frag:o,details:g,samples:u.samples};r.trigger(tr.FRAG_PARSING_METADATA,e)}if(g&&d){const e={id:i,frag:o,details:g,samples:d.samples};r.trigger(tr.FRAG_PARSING_USERDATA,e)}}}_bufferInitSegment(e,t,i,r){if(this.state!==Za)return;this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&delete t.audio;const{audio:s,video:n,audiovideo:a}=t;if(s){let t=e.audioCodec;const i=navigator.userAgent.toLowerCase();if(this.audioCodecSwitch){t&&(t=-1!==t.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5");const e=s.metadata;e&&"channelCount"in e&&1!==(e.channelCount||1)&&-1===i.indexOf("firefox")&&(t="mp4a.40.5")}t&&-1!==t.indexOf("mp4a.40.5")&&-1!==i.indexOf("android")&&"audio/mpeg"!==s.container&&(t="mp4a.40.2",this.log(`Android: force audio codec to ${t}`)),e.audioCodec&&e.audioCodec!==t&&this.log(`Swapping manifest audio codec "${e.audioCodec}" for "${t}"`),s.levelCodec=t,s.id="main",this.log(`Init audio buffer, container:${s.container}, codecs[selected/level/parsed]=[${t||""}/${e.audioCodec||""}/${s.codec}]`)}n&&(n.levelCodec=e.videoCodec,n.id="main",this.log(`Init video buffer, container:${n.container}, codecs[level/parsed]=[${e.videoCodec||""}/${n.codec}]`)),a&&this.log(`Init audiovideo buffer, container:${a.container}, codecs[level/parsed]=[${e.codecs}/${a.codec}]`),this.hls.trigger(tr.BUFFER_CODECS,t),Object.keys(t).forEach((e=>{const s=t[e].initSegment;null!=s&&s.byteLength&&this.hls.trigger(tr.BUFFER_APPENDING,{type:e,data:s,frag:i,part:null,chunkMeta:r,parent:i.type})})),this.tickImmediate()}getMainFwdBufferInfo(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,hn)}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=qa}checkFragmentChanged(){const e=this.media;let t=null;if(e&&e.readyState>1&&!1===e.seeking){const i=e.currentTime;if(xa.isBuffered(e,i)?t=this.getAppendedFrag(i):xa.isBuffered(e,i+.1)&&(t=this.getAppendedFrag(i+.1)),t){this.backtrackFragment=null;const e=this.fragPlaying,i=t.level;e&&t.sn===e.sn&&e.level===i||(this.fragPlaying=t,this.hls.trigger(tr.FRAG_CHANGED,{frag:t}),e&&e.level===i||this.hls.trigger(tr.LEVEL_SWITCHED,{level:i}))}}}get nextLevel(){const e=this.nextBufferedFrag;return e?e.level:-1}get currentFrag(){const e=this.media;return e?this.fragPlaying||this.getAppendedFrag(e.currentTime):null}get currentProgramDateTime(){const e=this.media;if(e){const t=e.currentTime,i=this.currentFrag;if(i&&Ji(t)&&Ji(i.programDateTime)){const e=i.programDateTime+1e3*(t-i.start);return new Date(e)}}return null}get currentLevel(){const e=this.currentFrag;return e?e.level:-1}get nextBufferedFrag(){const e=this.currentFrag;return e?this.followingBufferedFrag(e):null}get forceStartLoad(){return this._forceStartLoad}}class Ac{static get version(){return"1.5.11"}static isMSESupported(){return bc()}static isSupported(){return function(){if(!bc())return!1;const e=Os();return"function"==typeof(null==e?void 0:e.isTypeSupported)&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some((t=>e.isTypeSupported(Us(t,"video"))))||["mp4a.40.2","fLaC"].some((t=>e.isTypeSupported(Us(t,"audio")))))}()}static getMediaSource(){return Os()}static get Events(){return tr}static get ErrorTypes(){return ir}static get ErrorDetails(){return rr}static get DefaultConfig(){return Ac.defaultConfig?Ac.defaultConfig:gc}static set DefaultConfig(e){Ac.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 fl,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,function(e,t){if("object"==typeof console&&!0===e||"object"==typeof e){or(e,"debug","log","info","warn","error");try{ar.log(`Debug logs enabled for "${t}" in hls.js version 1.5.11`)}catch(e){ar=nr}}else ar=nr}(e.debug||!1,"Hls instance");const t=this.config=function(e,t){if((t.liveSyncDurationCount||t.liveMaxLatencyDurationCount)&&(t.liveSyncDuration||t.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==t.liveMaxLatencyDurationCount&&(void 0===t.liveSyncDurationCount||t.liveMaxLatencyDurationCount<=t.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==t.liveMaxLatencyDuration&&(void 0===t.liveSyncDuration||t.liveMaxLatencyDuration<=t.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');const i=mc(e),r=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach((e=>{const s=`${"level"===e?"playlist":e}LoadPolicy`,n=void 0===t[s],a=[];r.forEach((r=>{const o=`${e}Loading${r}`,l=t[o];if(void 0!==l&&n){a.push(o);const e=i[s].default;switch(t[s]={default:e},r){case"TimeOut":e.maxLoadTimeMs=l,e.maxTimeToFirstByteMs=l;break;case"MaxRetry":e.errorRetry.maxNumRetry=l,e.timeoutRetry.maxNumRetry=l;break;case"RetryDelay":e.errorRetry.retryDelayMs=l,e.timeoutRetry.retryDelayMs=l;break;case"MaxRetryTimeout":e.errorRetry.maxRetryDelayMs=l,e.timeoutRetry.maxRetryDelayMs=l}}})),a.length&&lr.warn(`hls.js config: "${a.join('", "')}" setting(s) are deprecated, use "${s}": ${JSON.stringify(t[s])}`)})),qi(qi({},i),t)}(Ac.DefaultConfig,e);this.userConfig=e,t.progressive&&pc(t);const{abrController:i,bufferController:r,capLevelController:s,errorController:n,fpsController:a}=t,o=new n(this),l=this.abrController=new i(this),h=this.bufferController=new r(this),c=this.capLevelController=new s(this),d=new a(this),u=new gn(this),f=new kn(this),g=t.contentSteeringController,m=g?new g(this):null,p=this.levelController=new yc(this,m),v=new Ra(this),y=new Ec(this.config),T=this.streamController=new wc(this,v,y);c.setStreamController(T),d.setStreamController(T);const E=[u,p,T];m&&E.splice(1,0,m),this.networkControllers=E;const S=[l,h,c,d,f,v];this.audioTrackController=this.createController(t.audioTrackController,E);const b=t.audioStreamController;b&&E.push(new b(this,v,y)),this.subtitleTrackController=this.createController(t.subtitleTrackController,E);const L=t.subtitleStreamController;L&&E.push(new L(this,v,y)),this.createController(t.timelineController,S),y.emeController=this.emeController=this.createController(t.emeController,S),this.cmcdController=this.createController(t.cmcdController,S),this.latencyController=this.createController(_n,S),this.coreComponents=S,E.push(o);const w=o.onErrorOut;"function"==typeof w&&this.on(tr.ERROR,w,o)}createController(e,t){if(e){const i=new e(this);return t&&t.push(i),i}return null}on(e,t,i=this){this._emitter.on(e,t,i)}once(e,t,i=this){this._emitter.once(e,t,i)}removeAllListeners(e){this._emitter.removeAllListeners(e)}off(e,t,i=this,r){this._emitter.off(e,t,i,r)}listeners(e){return this._emitter.listeners(e)}emit(e,t,i){return this._emitter.emit(e,t,i)}trigger(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(t){if(lr.error("An internal error happened while handling event "+e+'. Error message: "'+t.message+'". Here is a stacktrace:',t),!this.triggeringException){this.triggeringException=!0;const i=e===tr.ERROR;this.trigger(tr.ERROR,{type:ir.OTHER_ERROR,details:rr.INTERNAL_EXCEPTION,fatal:i,event:e,error:t}),this.triggeringException=!1}}return!1}listenerCount(e){return this._emitter.listenerCount(e)}destroy(){lr.log("destroy"),this.trigger(tr.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((e=>e.destroy())),this.networkControllers.length=0,this.coreComponents.forEach((e=>e.destroy())),this.coreComponents.length=0;const e=this.config;e.xhrSetup=e.fetchSetup=void 0,this.userConfig=null}attachMedia(e){lr.log("attachMedia"),this._media=e,this.trigger(tr.MEDIA_ATTACHING,{media:e})}detachMedia(){lr.log("detachMedia"),this.trigger(tr.MEDIA_DETACHING,void 0),this._media=null}loadSource(e){this.stopLoad();const t=this.media,i=this.url,r=this.url=Wi.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,lr.log(`loadSource:${r}`),t&&i&&(i!==r||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(t)),this.trigger(tr.MANIFEST_LOADING,{url:e})}startLoad(e=-1){lr.log(`startLoad(${e})`),this.started=!0,this.networkControllers.forEach((t=>{t.startLoad(e)}))}stopLoad(){lr.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(){lr.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){lr.log("recoverMediaError");const e=this._media;this.detachMedia(),e&&this.attachMedia(e)}removeLevel(e){this.levelController.removeLevel(e)}get levels(){const e=this.levelController.levels;return e||[]}get currentLevel(){return this.streamController.currentLevel}set currentLevel(e){lr.log(`set currentLevel:${e}`),this.levelController.manualLevel=e,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(e){lr.log(`set nextLevel:${e}`),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(e){lr.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){lr.log(`set firstLevel:${e}`),this.levelController.firstLevel=e}get startLevel(){const e=this.levelController.startLevel;return-1===e&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:e}set startLevel(e){lr.log(`set startLevel:${e}`),-1!==e&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(e){const t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimate():NaN}set bandwidthEstimate(e){this.abrController.resetEstimator(e)}get ttfbEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimateTTFB():NaN}set autoLevelCapping(e){this._autoLevelCapping!==e&&(lr.log(`set autoLevelCapping:${e}`),this._autoLevelCapping=e,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(e){(function(e){return Dn.indexOf(e)>-1})(e)&&this._maxHdcpLevel!==e&&(this._maxHdcpLevel=e,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return-1===this.levelController.manualLevel}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:e,config:{minAutoBitrate:t}}=this;if(!e)return 0;const i=e.length;for(let r=0;r=t)return r;return 0}get maxAutoLevel(){const{levels:e,autoLevelCapping:t,maxHdcpLevel:i}=this;let r;if(r=-1===t&&null!=e&&e.length?e.length-1:t,i)for(let t=r;t--;){const r=e[t].attrs["HDCP-LEVEL"];if(r&&r<=i)return t}return r}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 null==(t=this.audioTrackController)?void 0:t.setAudioOption(e)}setSubtitleOption(e){var t;return null==(t=this.subtitleTrackController)||t.setSubtitleOption(e),null}get allAudioTracks(){const e=this.audioTrackController;return e?e.allAudioTracks:[]}get audioTracks(){const e=this.audioTrackController;return e?e.audioTracks:[]}get audioTrack(){const e=this.audioTrackController;return e?e.audioTrack:-1}set audioTrack(e){const t=this.audioTrackController;t&&(t.audioTrack=e)}get allSubtitleTracks(){const e=this.subtitleTrackController;return e?e.allSubtitleTracks:[]}get subtitleTracks(){const e=this.subtitleTrackController;return e?e.subtitleTracks:[]}get subtitleTrack(){const e=this.subtitleTrackController;return e?e.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(e){const t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}get subtitleDisplay(){const e=this.subtitleTrackController;return!!e&&e.subtitleDisplay}set subtitleDisplay(e){const t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(e){this.config.lowLatencyMode=e}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}}function Rc(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e.$video.volume=e._options.volume)}),1e3)})),e.event.emit("parsed")}))}))}else if(this.$video.canPlayType("application/vnd.apple.mpegurl")){this.logger.log("Browser support application/vnd.apple.mpegurl : ",this.$video.canPlayType("application/vnd.apple.mpegurl")),this.$video.src=this._options.url;var i=!1;this.$video.addEventListener("canplay",(function(){!i&&e._options.autoPlay&&setTimeout((function(){e.$video.play().then((function(){e.logger.log("autoPlay video!"),setTimeout((function(){e._options.volume>0&&e.setVolume(e._options.volume)}),1e3),i=!0}))}),200)}))}else this.logger.warn("Browser not support hls")},i.isPlayingState=function(){return!this.$video.paused},i.play=function(){if(this.isPlayingState())return Promise.resolve();if(this._options.isLive&&(this.$video.buffered.length>=1&&this.$video.buffered.end(0)>1)){var e=this.$video.buffered.end(0)-1;this.$video.currentTime=e}return this.$video.play()},i.pause=function(){this.$video.pause()},i.setVolume=function(e){this.$video.muted&&(this.$video.muted=!1),this._volume=+(e||0),0===this._volume&&(this.$video.muted=!0),this.$video.volume=this._volume},i.destroy=function(){this.$video&&this.$video.pause(),this._hls&&(this._hls.destroy(),this._hls=null),e.prototype.destroy.call(this)},i._onEvent=function(){var e;(e=this).$video&&(e.$video.addEventListener("canplay",(function(){e.event.emit("canplay")})),e.$video.addEventListener("loadeddata",(function(){e.event.emit("loadeddata")})),e.$video.addEventListener("volumechange",(function(){e.event.emit("volumechange",{data:e.$video.volume})})),e.$video.addEventListener("waiting",(function(){e.event.emit("waiting")})),e.$video.addEventListener("timeupdate",(function(){var t;null==(t=e.event)||t.emit("timeupdate")})),e.$video.addEventListener("seeking",(function(){e.event.emit("seeking",{data:e.$video.currentTime})})),e.$video.addEventListener("seeked",(function(){e.event.emit("seeked")})),e.$video.addEventListener("abort",(function(){e.event.emit("abort")})),e.$video.addEventListener("error",(function(){var t;null==(t=e.event)||t.emit("error",{data:e.$video.error})})),e.$video.addEventListener("ended",(function(){e.event.emit("ended")})))},Rc(t,[{key:"volume",get:function(){return this._volume},set:function(e){this.setVolume(e)}}]),t}(Ri);var xc="wasm_loaded",Cc="wasm_failed",Ic="init";function Pc(e,t){return Pc=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Pc(e,t)}var Oc=function(e){function t(t){var i;return void 0===t&&(t={}),i=e.call(this,t)||this,t.url=function(e,t){void 0===t&&(t=["h264"]);var i=(t||["h264"]).reduce((function(e,t){return t=t.toLowerCase(),e+(Xt[t]||0)}),0),r=e.split("?")[0],s=e.split("?")[1];return s=(s||"").split("&").filter((function(e){return!/^vc=\d?/.test(e)})).join("&"),r+"?"+s+(s?"&":"")+"vc="+i}(null==t?void 0:t.url,["h264","h265"]),function(e,t){if(((null==t?void 0:t.volume)||0)>1?e._volume=1:((null==t?void 0:t.volume)||0)<=0?e._volume=0:e._volume=+((null==t?void 0:t.volume)||0),t.volume=e._volume,e.options=zt({},wi,t),"string"!=typeof e.options.id)throw new Error("id is required!");e.logger=z(e.options.loggerOptions),e.event=new ei,e.logger.log("HlsPlayer version: ",Uc.version),e.logger.log("HlsPlayer options: ",e.options),e.options.logger=e.logger}(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(i),t),i._containerClassName=Li+"-container",i._render(),i}!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Pc(e,t)}(t,e);var i=t.prototype;return i._render=function(){this.$container.classList.add(this._containerClassName)},i.destroy=function(){this.$container&&(this.$container.classList.remove(this._containerClassName),this.$container.innerHTML="",this.$container=null)},t}(Si);function Mc(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e=!0),this.playParam={durationMs:0,fps:0,sampleRate:0,size:{width:0,height:0},audioNone:e,videoCodec:T},!A())throw new Error("Browser not support WebAssembly!");this._onWorkerMessage()},i.play=function(){if(Ui.send(1,{name:"play"}),null===this.player)return Promise.resolve();if(this.playParam.videoCodec===T){var e={seekPos:0,isLive:this.options.isLive,accurateSeek:!0,seekEvent:!1,realPlay:!0};return this.player.play(e)}return this.player.play()},i.pause=function(){return Ui.send(1,{name:"pause"}),null!==this.player&&(this.player.pause(),!0)},i.destroy=function(){var t,i;return Ui.send(1,{name:"destroy"}),void 0!==this.player&&null!==this.player&&(this.playParam.videoCodec===T&&this._m3u8Obj&&(this._m3u8Obj.destroy(),this._m3u8Obj=null),this.player.destroy(),this._decoderWorker&&(this._decoderWorker.postMessage(P(B)),this._decoderWorker.terminate(),this._decoderWorker=null),this.logger.log("destroy"),null==(i=this.event)||null==(t=i.emit)||t.call(i,"destroy"),this.player=null,e.prototype.destroy.call(this),!0)},i.isPlaying=function(){return null!==this.player&&this.player.isPlayingState()},i.setVolume=function(e){var t;(e=+e)>1||e<0?this.logger.warn("volume volume value 0.0 ~ 1.0!"):((t=this).player||(t.event.emit("playerIsNull"),t.logger.warn("Player instance does not exist!"),0))&&(this.player.setVolume(e),this.event.emit("volumeChange",{data:e}))},i.getVersion=function(){return Ui.send(1,{name:"getVersion"}),"0.1.0-beta.1"},i._m3u8Entry=function(){var e=this;this._m3u8Obj=new Vi({logger:this.logger,decoderWorker:this._decoderWorker,event:this.event}),this._m3u8Obj.bindReady(this),this._m3u8Obj.onFinished=function(e,t){},this._m3u8Obj.onCacheProcess=function(t){e.options.isLive||null==e.onCacheProcess||e.onCacheProcess.call(e,t)},this._m3u8Obj.onDemuxed=this._checkPlayer.bind(this),this._m3u8Obj.onSamples=this._hlsOnSamples.bind(this),this._m3u8Obj.demux(this.url)},i._checkPlayer=function(e,t){var i=this;if(null==i.player){var r,s,n;if(!(null==i||null==(r=i._m3u8Obj)?void 0:r.isHevcParam)||t)return null==i||null==(n=i._m3u8Obj)||null==(s=n.destroy)||s.call(n),i._m3u8Obj=null,this._decoderWorker.terminate(),this._decoderWorker=null,void(i.player=new Dc(Fc({},this.options,{event:this.event,logger:this.logger})));var a=i._m3u8Obj.getACodec(),o=i._m3u8Obj.getFPS(),l=i._m3u8Obj.getSampleRate(),h=i._m3u8Obj.getSize(),c=!1;c=i._m3u8Obj.getSampleChannel()<=0||""===a,i._softPlayer(0,o,l,h,c)}},i._hlsOnSamples=function(e,t){var i,r,s,n=this;if(t.video)null==(s=n.player)||null==(r=s.appendHevcFrame)||r.call(s,t);else if(!(null==(i=n._m3u8Obj)?void 0:i.audioNone)){var a,o;null==(o=n.player)||null==(a=o.appendAACFrame)||a.call(o,t)}},i._onWorkerMessage=function(){var e=this,i=this;this._decoderWorker.onmessage=function(r){var s=r.data;switch(s.cmd){case O:t.__HLS_WASM_DecoderState__=0;break;case M:t.__HLS_WASM_DecoderState__=1,e.logger.log("Wasm already init over!"),i.event.emit(xc),i._decoderWorker.postMessage(P("registerWasmPlayer")),i._m3u8Entry();break;case F:t.__HLS_WASM_DecoderState__=-1,e.logger.error("Wasm init failed!",s),i.event.emit(Cc,s),Ui.send("wasm",{name:"wasm loading failed"}),i._checkPlayer(!0)}}},i._softPlayer=function(e,t,i,r,s,n){var a,o,l=this;void 0===s&&(s=!1),void 0===n&&(n=null);var c,d=this;(this.playParam.durationMs=e,this.playParam.fps=t,this.playParam.sampleRate=i,this.playParam.size=r,this.playParam.audioNone=s,this.playParam.videoCodec=n||T,this.logger.log("this.playParam: ",this.playParam),this.logger.log("start init soft player"),this.player=new xi(Fc({},d.options,{sampleRate:i,fps:t,appendHevcType:h,fixed:!1,id:this.options.id,audioNone:s,videoCodec:n,logger:this.logger,event:this.event,decoderWorker:this._decoderWorker})),this.player.onPlayingTime=function(e){var t;null==d||null==(t=d.onPlayTime)||t.call(d,e)},this.player.onPlayingFinish=function(){var e,t;(l.pause(),null!=l.onPlayFinish)&&(null==(t=l)||null==(e=t.onPlayFinish)||e.call(t))},this.player.onLoadCache=function(){var e,t;null==(t=l)||null==(e=t.onLoadCache)||e.call(t)},this.player.onLoadCacheFinished=function(){var e,t;null==(t=l)||null==(e=t.onLoadCacheFinished)||e.call(t)},null==(a=d.player)||a.setDurationMs(e),null==(o=d.player)||o.setFrameRate(t),null!=d.onReadyShowDone)&&(null==d||null==(c=d.onReadyShowDone)||c.call(d));this.event.emit("parsed"),this.player&&this.options.autoPlay&&this.play()},t.supportType=function(e){if(Ui.send(1,{name:"supportType",options:e}),"hls"===e.type)return!0;if(e.url){var t=e.url;t.startsWith("http://")||t.startsWith("https://")||(t=/^\/\//.test(t)?"http:"+t:location.origin+location.pathname+t);try{return/\.m3u8$/i.test(new URL(t).pathname)}catch(e){}}return!1},Mc(t,[{key:"volume",get:function(){return this.player?this.player.volume:this.options.volume},set:function(e){e=+e,this.setVolume(e)}}]),t}(Oc);return Uc.__HLS_WASM_DecoderState__=0,Uc.version="0.1.0-beta.1",Uc})); +const bl={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},Ll=e=>String.fromCharCode(bl[e]||e),wl=15,Al=100,Rl={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},kl={17:2,18:4,21:6,22:8,23:10,19:13,20:15},_l={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},Dl={25:2,26:4,29:6,30:8,31:10,27:13,28:15},xl=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];class Cl{constructor(){this.time=null,this.verboseLevel=0}log(e,t){if(this.verboseLevel>=e){const i="function"==typeof t?t():t;lr.log(`${this.time} [${e}] ${i}`)}}}const Il=function(e){const t=[];for(let i=0;iAl&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=Al)}moveCursor(e){const t=this.pos+e;if(e>1)for(let e=this.pos+1;e=144&&this.backSpace();const t=Ll(e);this.pos>=Al?this.logger.log(0,(()=>"Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!")):(this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1))}clearFromPos(e){let t;for(t=e;t"pacData = "+JSON.stringify(e)));let t=e.row-1;if(this.nrRollUpRows&&t"bkgData = "+JSON.stringify(e))),this.backSpace(),this.setPen(e),this.insertChar(32)}setRollUpRows(e){this.nrRollUpRows=e}rollUp(){if(null===this.nrRollUpRows)return void this.logger.log(3,"roll_up but nrRollUpRows not set yet");this.logger.log(1,(()=>this.getDisplayText()));const e=this.currRow+1-this.nrRollUpRows,t=this.rows.splice(e,1)[0];t.clear(),this.rows.splice(this.currRow,0,t),this.logger.log(2,"Rolling up")}getDisplayText(e){e=e||!1;const t=[];let i="",r=-1;for(let i=0;i0&&(i=e?"["+t.join(" | ")+"]":t.join("\n")),i}getTextAndFormat(){return this.rows}}class Nl{constructor(e,t,i){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 Fl(i),this.nonDisplayedMemory=new Fl(i),this.lastOutputScreen=new Fl(i),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=i}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],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)),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)}insertChars(e){for(let t=0;tt+": "+this.writeScreen.getDisplayText(!0))),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(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"),"MODE_TEXT"!==this.mode&&(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"),"MODE_POP-ON"===this.mode){const e=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=e,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,(()=>"DISP: "+this.displayedMemory.getDisplayText()))}this.outputDataUpdate(!0)}ccTO(e){this.logger.log(2,"TO("+e+") - Tab Offset"),this.writeScreen.moveCursor(e)}ccMIDROW(e){const t={flash:!1};if(t.underline=e%2==1,t.italics=e>=46,t.italics)t.foreground="white";else{const i=Math.floor(e/2)-16,r=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=r[i]}this.logger.log(2,"MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)}outputDataUpdate(e=!1){const t=this.logger.time;null!==t&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?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.cueStartTime=t,this.lastOutputScreen.copy(this.displayedMemory))}cueSplitAtTime(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))}}class Ul{constructor(e,t,i){this.channels=void 0,this.currentChannel=0,this.cmdHistory={a:null,b:null},this.logger=void 0;const r=this.logger=new Cl;this.channels=[null,new Nl(e,t,r),new Nl(e+1,i,r)]}getHandler(e){return this.channels[e].getHandler()}setHandler(e,t){this.channels[e].setHandler(t)}addData(e,t){this.logger.time=e;for(let e=0;e"["+Il([t[e],t[e+1]])+"] -> ("+Il([i,r])+")"));const a=this.cmdHistory;if(i>=16&&i<=31){if($l(i,r,a)){Bl(null,null,a),this.logger.log(3,(()=>"Repeated command ("+Il([i,r])+") is dropped"));continue}Bl(i,r,this.cmdHistory),s=this.parseCmd(i,r),s||(s=this.parseMidrow(i,r)),s||(s=this.parsePAC(i,r)),s||(s=this.parseBackgroundAttributes(i,r))}else Bl(null,null,a);if(!s&&(n=this.parseChars(i,r),n)){const e=this.currentChannel;if(e&&e>0){this.channels[e].insertChars(n)}else this.logger.log(2,"No channel found yet. TEXT-MODE?")}s||n||this.logger.log(2,(()=>"Couldn't parse cleaned data "+Il([i,r])+" orig: "+Il([t[e],t[e+1]])))}}parseCmd(e,t){if(!((20===e||28===e||21===e||29===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=33&&t<=35))return!1;const i=20===e||21===e||23===e?1:2,r=this.channels[i];return 20===e||21===e||28===e||29===e?32===t?r.ccRCL():33===t?r.ccBS():34===t?r.ccAOF():35===t?r.ccAON():36===t?r.ccDER():37===t?r.ccRU(2):38===t?r.ccRU(3):39===t?r.ccRU(4):40===t?r.ccFON():41===t?r.ccRDC():42===t?r.ccTR():43===t?r.ccRTD():44===t?r.ccEDM():45===t?r.ccCR():46===t?r.ccENM():47===t&&r.ccEOC():r.ccTO(t-32),this.currentChannel=i,!0}parseMidrow(e,t){let i=0;if((17===e||25===e)&&t>=32&&t<=47){if(i=17===e?1:2,i!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;const r=this.channels[i];return!!r&&(r.ccMIDROW(t),this.logger.log(3,(()=>"MIDROW ("+Il([e,t])+")")),!0)}return!1}parsePAC(e,t){let i;if(!((e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127)&&!((16===e||24===e)&&t>=64&&t<=95))return!1;const r=e<=23?1:2;i=t>=64&&t<=95?1===r?Rl[e]:_l[e]:1===r?kl[e]:Dl[e];const s=this.channels[r];return!!s&&(s.setPAC(this.interpretPAC(i,t)),this.currentChannel=r,!0)}interpretPAC(e,t){let i;const r={color:null,italics:!1,indent:null,underline:!1,row:e};return i=t>95?t-96:t-64,r.underline=!(1&~i),i<=13?r.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(i/2)]:i<=15?(r.italics=!0,r.color="white"):r.indent=4*Math.floor((i-16)/2),r}parseChars(e,t){let i,r=null,s=null;if(e>=25?(i=2,s=e-8):(i=1,s=e),s>=17&&s<=19){let e;e=17===s?t+80:18===s?t+112:t+144,this.logger.log(2,(()=>"Special char '"+Ll(e)+"' in channel "+i)),r=[e]}else e>=32&&e<=127&&(r=0===t?[e]:[e,t]);return r&&this.logger.log(3,(()=>"Char codes = "+Il(r).join(","))),r}parseBackgroundAttributes(e,t){if(!((16===e||24===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=45&&t<=47))return!1;let i;const r={};16===e||24===e?(i=Math.floor((t-32)/2),r.background=xl[i],t%2==1&&(r.background=r.background+"_semi")):45===t?r.background="transparent":(r.foreground="black",47===t&&(r.underline=!0));const s=e<=23?1:2;return this.channels[s].setBkgData(r),!0}reset(){for(let e=0;ee)&&(this.startTime=e),this.endTime=t,this.screen=i,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}var Kl=function(){if(null!=Ar&&Ar.VTTCue)return self.VTTCue;const e=["","lr","rl"],t=["start","middle","end","left","right"];function i(e,t){if("string"!=typeof t)return!1;if(!Array.isArray(e))return!1;const i=t.toLowerCase();return!!~e.indexOf(i)&&i}function r(e){return i(t,e)}function s(e,...t){let i=1;for(;i100)throw new Error("Position must be between 0 and 100.");T=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"positionAlign",s({},l,{get:function(){return E},set:function(e){const t=r(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");E=t,this.hasBeenReset=!0}})),Object.defineProperty(o,"size",s({},l,{get:function(){return S},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");S=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"align",s({},l,{get:function(){return b},set:function(e){const t=r(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");b=t,this.hasBeenReset=!0}})),o.displayState=void 0}return n.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},n}();class Vl{decode(e,t){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))}}function Hl(e){function t(e,t,i,r){return 3600*(0|e)+60*(0|t)+(0|i)+parseFloat(r||0)}const i=e.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return i?parseFloat(i[2])>59?t(i[2],i[3],0,i[4]):t(i[1],i[2],i[3],i[4]):null}class jl{constructor(){this.values=Object.create(null)}set(e,t){this.get(e)||""===t||(this.values[e]=t)}get(e,t,i){return i?this.has(e)?this.values[e]:t[i]:this.has(e)?this.values[e]:t}has(e){return e in this.values}alt(e,t,i){for(let r=0;r=0&&i<=100)return this.set(e,i),!0}return!1}}function Wl(e,t,i,r){const s=r?e.split(r):[e];for(const e in s){if("string"!=typeof s[e])continue;const r=s[e].split(i);if(2!==r.length)continue;t(r[0],r[1])}}const Yl=new Kl(0,0,""),ql="middle"===Yl.align?"middle":"center";function zl(e,t,i){const r=e;function s(){const t=Hl(e);if(null===t)throw new Error("Malformed timestamp: "+r);return e=e.replace(/^[^\sa-zA-Z-]+/,""),t}function n(){e=e.replace(/^\s+/,"")}if(n(),t.startTime=s(),n(),"--\x3e"!==e.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+r);e=e.slice(3),n(),t.endTime=s(),n(),function(e,t){const r=new jl;Wl(e,(function(e,t){let s;switch(e){case"region":for(let s=i.length-1;s>=0;s--)if(i[s].id===t){r.set(e,i[s].region);break}break;case"vertical":r.alt(e,t,["rl","lr"]);break;case"line":s=t.split(","),r.integer(e,s[0]),r.percent(e,s[0])&&r.set("snapToLines",!1),r.alt(e,s[0],["auto"]),2===s.length&&r.alt("lineAlign",s[1],["start",ql,"end"]);break;case"position":s=t.split(","),r.percent(e,s[0]),2===s.length&&r.alt("positionAlign",s[1],["start",ql,"end","line-left","line-right","auto"]);break;case"size":r.percent(e,t);break;case"align":r.alt(e,t,["start",ql,"end","left","right"])}}),/:/,/\s/),t.region=r.get("region",null),t.vertical=r.get("vertical","");let s=r.get("line","auto");"auto"===s&&-1===Yl.line&&(s=-1),t.line=s,t.lineAlign=r.get("lineAlign","start"),t.snapToLines=r.get("snapToLines",!0),t.size=r.get("size",100),t.align=r.get("align",ql);let n=r.get("position","auto");"auto"===n&&50===Yl.position&&(n="start"===t.align||"left"===t.align?0:"end"===t.align||"right"===t.align?100:50),t.position=n}(e,t)}function Xl(e){return e.replace(//gi,"\n")}class Ql{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new Vl,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(e){const t=this;function i(){let e=t.buffer,i=0;for(e=Xl(e);i>>0).toString()};function th(e,t,i){return eh(e.toString())+eh(t.toString())+eh(i)}function ih(e,t,i,r,s,n,a){const o=new Ql,l=Jr(new Uint8Array(e)).trim().replace(Jl,"\n").split("\n"),h=[],c=t?function(e,t=1){return zo(e,qo,1/t)}(t.baseTime,t.timescale):0;let d,u="00:00.000",f=0,g=0,m=!0;o.oncue=function(e){const n=i[r];let a=i.ccOffset;const o=(f-c)/9e4;if(null!=n&&n.new&&(void 0!==g?a=i.ccOffset=n.start:function(e,t,i){let r=e[t],s=e[r.prevCC];if(!s||!s.new&&r.new)return e.ccOffset=e.presentationOffset=r.start,void(r.new=!1);for(;null!=(n=s)&&n.new;){var n;e.ccOffset+=r.start-s.start,r.new=!1,r=s,s=e[r.prevCC]}e.presentationOffset=i}(i,r,o)),o){if(!t)return void(d=new Error("Missing initPTS for VTT MPEGTS"));a=o-i.presentationOffset}const l=e.endTime-e.startTime,u=tl(9e4*(e.startTime+a-g),9e4*s)/9e4;e.startTime=Math.max(u,0),e.endTime=Math.max(u+l,0);const m=e.text.trim();e.text=decodeURIComponent(encodeURIComponent(m)),e.id||(e.id=th(e.startTime,e.endTime,m)),e.endTime>0&&h.push(e)},o.onparsingerror=function(e){d=e},o.onflush=function(){d?a(d):n(h)},l.forEach((e=>{if(m){if(Zl(e,"X-TIMESTAMP-MAP=")){m=!1,e.slice(16).split(",").forEach((e=>{Zl(e,"LOCAL:")?u=e.slice(6):Zl(e,"MPEGTS:")&&(f=parseInt(e.slice(7)))}));try{g=function(e){let t=parseInt(e.slice(-3));const i=parseInt(e.slice(-6,-4)),r=parseInt(e.slice(-9,-7)),s=e.length>9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!(Ji(t)&&Ji(i)&&Ji(r)&&Ji(s)))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${e}`);return t+=1e3*i,t+=6e4*r,t+=36e5*s,t}(u)/1e3}catch(e){d=e}return}""===e&&(m=!1)}o.parse(e+"\n")})),o.flush()}const rh="stpp.ttml.im1t",sh=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,nh=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,ah={left:"start",center:"center",right:"end",start:"start",end:"end"};function oh(e,t,i,r){const s=ds(new Uint8Array(e),["mdat"]);if(0===s.length)return void r(new Error("Could not parse IMSC1 mdat"));const n=s.map((e=>Jr(e))),a=function(e,t,i=1,r=!1){return zo(e,t,1/i,r)}(t.baseTime,1,t.timescale);try{n.forEach((e=>i(function(e,t){const i=(new DOMParser).parseFromString(e,"text/xml"),r=i.getElementsByTagName("tt")[0];if(!r)throw new Error("Invalid ttml");const s={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},n=Object.keys(s).reduce(((e,t)=>(e[t]=r.getAttribute(`ttp:${t}`)||s[t],e)),{}),a="preserve"!==r.getAttribute("xml:space"),o=hh(lh(r,"styling","style")),l=hh(lh(r,"layout","region")),h=lh(r,"body","[begin]");return[].map.call(h,(e=>{const i=ch(e,a);if(!i||!e.hasAttribute("begin"))return null;const r=fh(e.getAttribute("begin"),n),s=fh(e.getAttribute("dur"),n);let h=fh(e.getAttribute("end"),n);if(null===r)throw uh(e);if(null===h){if(null===s)throw uh(e);h=r+s}const c=new Kl(r-t,h-t,i);c.id=th(c.startTime,c.endTime,c.text);const d=function(e,t,i){const r="http://www.w3.org/ns/ttml#styling";let s=null;const n=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],a=null!=e&&e.hasAttribute("style")?e.getAttribute("style"):null;a&&i.hasOwnProperty(a)&&(s=i[a]);return n.reduce(((i,n)=>{const a=dh(t,r,n)||dh(e,r,n)||dh(s,r,n);return a&&(i[n]=a),i}),{})}(l[e.getAttribute("region")],o[e.getAttribute("style")],o),{textAlign:u}=d;if(u){const e=ah[u];e&&(c.lineAlign=e),c.align=u}return Qi(c,d),c})).filter((e=>null!==e))}(e,a))))}catch(e){r(e)}}function lh(e,t,i){const r=e.getElementsByTagName(t)[0];return r?[].slice.call(r.querySelectorAll(i)):[]}function hh(e){return e.reduce(((e,t)=>{const i=t.getAttribute("xml:id");return i&&(e[i]=t),e}),{})}function ch(e,t){return[].slice.call(e.childNodes).reduce(((e,i,r)=>{var s;return"br"===i.nodeName&&r?e+"\n":null!=(s=i.childNodes)&&s.length?ch(i,t):t?e+i.textContent.trim().replace(/\s+/g," "):e+i.textContent}),"")}function dh(e,t,i){return e&&e.hasAttributeNS(t,i)?e.getAttributeNS(t,i):null}function uh(e){return new Error(`Could not parse ttml timestamp ${e}`)}function fh(e,t){if(!e)return null;let i=Hl(e);return null===i&&(sh.test(e)?i=function(e,t){const i=sh.exec(e),r=(0|i[4])+(0|i[5])/t.subFrameRate;return 3600*(0|i[1])+60*(0|i[2])+(0|i[3])+r/t.frameRate}(e,t):nh.test(e)&&(i=function(e,t){const i=nh.exec(e),r=Number(i[1]);switch(i[2]){case"h":return 3600*r;case"m":return 60*r;case"ms":return 1e3*r;case"f":return r/t.frameRate;case"t":return r/t.tickRate}return r}(e,t))),i}function gh(e){return e.characteristics&&/transcribes-spoken-dialog/gi.test(e.characteristics)&&/describes-music-and-sound/gi.test(e.characteristics)?"captions":"subtitles"}function mh(e,t){return!!e&&e.kind===gh(t)&&vl(t,e)}class ph{constructor(e){this.hls=void 0,this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=e,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}setStreamController(e){this.streamController=e}destroy(){this.hls&&this.unregisterListener(),this.timer&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null}registerListeners(){const{hls:e}=this;e.on(tr.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.on(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){const{hls:e}=this;e.off(tr.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(e,t){const i=this.hls.levels[t.droppedLevel];this.isLevelAllowed(i)&&this.restrictedLevels.push({bitrate:i.bitrate,height:i.height,width:i.width})}onMediaAttaching(e,t){this.media=t.media instanceof HTMLVideoElement?t.media:null,this.clientRect=null,this.timer&&this.hls.levels.length&&this.detectPlayerSize()}onManifestParsed(e,t){const i=this.hls;this.restrictedLevels=[],this.firstLevel=t.firstLevel,i.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onLevelsUpdated(e,t){this.timer&&Ji(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)return void(this.clientRect=null);const e=this.hls.levels;if(e.length){const t=this.hls,i=this.getMaxLevel(e.length-1);i!==this.autoLevelCapping&&lr.log(`Setting autoLevelCapping to ${i}: ${e[i].height}p@${e[i].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),t.autoLevelCapping=i,t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}}getMaxLevel(e){const t=this.hls.levels;if(!t.length)return-1;const i=t.filter(((t,i)=>this.isLevelAllowed(t)&&i<=e));return this.clientRect=null,ph.getMaxLevelByMediaSize(i,this.mediaWidth,this.mediaHeight)}startCapping(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())}stopCapping(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)}getDimensions(){if(this.clientRect)return this.clientRect;const e=this.media,t={width:0,height:0};if(e){const i=e.getBoundingClientRect();t.width=i.width,t.height=i.height,t.width||t.height||(t.width=i.right-i.left||e.width||0,t.height=i.bottom-i.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(e){}return e}isLevelAllowed(e){return!this.restrictedLevels.some((t=>e.bitrate===t.bitrate&&e.width===t.width&&e.height===t.height))}static getMaxLevelByMediaSize(e,t,i){if(null==e||!e.length)return-1;let r=e.length-1;const s=Math.max(t,i);for(let t=0;t=s||i.height>=s)&&(n=i,!(a=e[t+1])||n.width!==a.width||n.height!==a.height)){r=t;break}}var n,a;return r}}const vh="[eme]";class yh{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=yh.CDMCleanupPromise?[yh.CDMCleanupPromise]:[],this.onMediaEncrypted=this._onMediaEncrypted.bind(this),this.onWaitingForKey=this._onWaitingForKey.bind(this),this.debug=lr.debug.bind(lr,vh),this.log=lr.log.bind(lr,vh),this.warn=lr.warn.bind(lr,vh),this.error=lr.error.bind(lr,vh),this.hls=e,this.config=e.config,this.registerListeners()}destroy(){this.unregisterListeners(),this.onMediaDetached();const 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(tr.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(tr.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this)}unregisterListeners(){this.hls.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(tr.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this)}getLicenseServerUrl(e){const{drmSystems:t,widevineLicenseUrl:i}=this.config,r=t[e];if(r)return r.licenseUrl;if(e===Rr.WIDEVINE&&i)return i;throw new Error(`no license server URL configured for key-system "${e}"`)}getServerCertificateUrl(e){const{drmSystems:t}=this.config,i=t[e];if(i)return i.serverCertificateUrl;this.log(`No Server Certificate in config.drmSystems["${e}"]`)}attemptKeySystemAccess(e){const t=this.hls.levels,i=(e,t,i)=>!!e&&i.indexOf(e)===t,r=t.map((e=>e.audioCodec)).filter(i),s=t.map((e=>e.videoCodec)).filter(i);return r.length+s.length===0&&s.push("avc1.42e01e"),new Promise(((t,i)=>{const n=e=>{const a=e.shift();this.getMediaKeysPromise(a,r,s).then((e=>t({keySystem:a,mediaKeys:e}))).catch((t=>{e.length?n(e):i(t instanceof Th?t:new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_ACCESS,error:t,fatal:!0},t.message))}))};n(e)}))}requestMediaKeySystemAccess(e,t){const{requestMediaKeySystemAccessFunc:i}=this.config;if("function"!=typeof i){let e=`Configured requestMediaKeySystemAccess is not a function ${i}`;return null===Mr&&"http:"===self.location.protocol&&(e=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`),Promise.reject(new Error(e))}return i(e,t)}getMediaKeysPromise(e,t,i){const r=function(e,t,i,r){let s;switch(e){case Rr.FAIRPLAY:s=["cenc","sinf"];break;case Rr.WIDEVINE:case Rr.PLAYREADY:s=["cenc"];break;case Rr.CLEARKEY:s=["cenc","keyids"];break;default:throw new Error(`Unknown key-system: ${e}`)}return function(e,t,i,r){return[{initDataTypes:e,persistentState:r.persistentState||"optional",distinctiveIdentifier:r.distinctiveIdentifier||"optional",sessionTypes:r.sessionTypes||[r.sessionType||"temporary"],audioCapabilities:t.map((e=>({contentType:`audio/mp4; codecs="${e}"`,robustness:r.audioRobustness||"",encryptionScheme:r.audioEncryptionScheme||null}))),videoCapabilities:i.map((e=>({contentType:`video/mp4; codecs="${e}"`,robustness:r.videoRobustness||"",encryptionScheme:r.videoEncryptionScheme||null})))}]}(s,t,i,r)}(e,t,i,this.config.drmSystemOptions),s=this.keySystemAccessPromises[e];let n=null==s?void 0:s.keySystemAccess;if(!n){this.log(`Requesting encrypted media "${e}" key-system access with config: ${JSON.stringify(r)}`),n=this.requestMediaKeySystemAccess(e,r);const t=this.keySystemAccessPromises[e]={keySystemAccess:n};return n.catch((t=>{this.log(`Failed to obtain access to key-system "${e}": ${t}`)})),n.then((i=>{this.log(`Access for key-system "${i.keySystem}" obtained`);const r=this.fetchServerCertificate(e);return this.log(`Create media-keys for "${e}"`),t.mediaKeys=i.createMediaKeys().then((t=>(this.log(`Media-keys created for "${e}"`),r.then((i=>i?this.setMediaKeysServerCertificate(t,e,i):t))))),t.mediaKeys.catch((t=>{this.error(`Failed to create media-keys for "${e}"}: ${t}`)})),t.mediaKeys}))}return n.then((()=>s.mediaKeys))}createMediaKeySessionContext({decryptdata:e,keySystem:t,mediaKeys:i}){this.log(`Creating key-system session "${t}" keyId: ${ts(e.keyId||[])}`);const r=i.createSession(),s={decryptdata:e,keySystem:t,mediaKeys:i,mediaKeysSession:r,keyStatus:"status-pending"};return this.mediaKeySessions.push(s),s}renewKeySession(e){const t=e.decryptdata;if(t.pssh){const i=this.createMediaKeySessionContext(e),r=this.getKeyIdString(t),s="cenc";this.keyIdToKeySessionPromise[r]=this.generateRequestWithPreferredKeySession(i,s,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(null===e.keyId)throw new Error("keyId is null");return ts(e.keyId)}updateKeySession(e,t){var i;const r=e.mediaKeysSession;return this.log(`Updating key-session "${r.sessionId}" for keyID ${ts((null==(i=e.decryptdata)?void 0:i.keyId)||[])}\n } (data length: ${t?t.byteLength:t})`),r.update(t)}selectKeySystemFormat(e){const t=Object.keys(e.levelkeys||{});return this.keyFormatPromise||(this.log(`Selecting key-system from fragment (sn: ${e.sn} ${e.type}: ${e.level}) key formats ${t.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(t)),this.keyFormatPromise}getKeyFormatPromise(e){return new Promise(((t,i)=>{const r=Or(this.config),s=e.map(Cr).filter((e=>!!e&&-1!==r.indexOf(e)));return this.getKeySystemSelectionPromise(s).then((({keySystem:e})=>{const r=Pr(e);r?t(r):i(new Error(`Unable to find format for key-system "${e}"`))})).catch(i)}))}loadKey(e){const t=e.keyInfo.decryptdata,i=this.getKeyIdString(t),r=`(keyId: ${i} format: "${t.keyFormat}" method: ${t.method} uri: ${t.uri})`;this.log(`Starting session for key ${r}`);let s=this.keyIdToKeySessionPromise[i];return s||(s=this.keyIdToKeySessionPromise[i]=this.getKeySystemForKeyPromise(t).then((({keySystem:i,mediaKeys:s})=>(this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${e.frag.sn} ${e.frag.type}: ${e.frag.level} using key ${r}`),this.attemptSetMediaKeys(i,s).then((()=>{this.throwIfDestroyed();const e=this.createMediaKeySessionContext({keySystem:i,mediaKeys:s,decryptdata:t});return this.generateRequestWithPreferredKeySession(e,"cenc",t.pssh,"playlist-key")}))))),s.catch((e=>this.handleError(e)))),s}throwIfDestroyed(e="Invalid state"){if(!this.hls)throw new Error("invalid state")}handleError(e){this.hls&&(this.error(e.message),e instanceof Th?this.hls.trigger(tr.ERROR,e.data):this.hls.trigger(tr.ERROR,{type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_KEYS,error:e,fatal:!0}))}getKeySystemForKeyPromise(e){const t=this.getKeyIdString(e),i=this.keyIdToKeySessionPromise[t];if(!i){const t=Cr(e.keyFormat),i=t?[t]:Or(this.config);return this.attemptKeySystemAccess(i)}return i}getKeySystemSelectionPromise(e){if(e.length||(e=Or(this.config)),0===e.length)throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.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){const{initDataType:t,initData:i}=e;if(this.debug(`"${e.type}" event: init data type: "${t}"`),null===i)return;let r,s;if("sinf"===t&&this.config.drmSystems[Rr.FAIRPLAY]){const e=ns(new Uint8Array(i));try{const t=br(JSON.parse(e).sinf),i=ys(new Uint8Array(t));if(!i)return;r=i.subarray(8,24),s=Rr.FAIRPLAY}catch(e){return void this.warn('Failed to parse sinf "encrypted" event message initData')}}else{const e=function(e){if(!(e instanceof ArrayBuffer)||e.byteLength<32)return null;const t={version:0,systemId:"",kids:null,data:null},i=new DataView(e),r=i.getUint32(0);if(e.byteLength!==r&&r>44)return null;if(1886614376!==i.getUint32(4))return null;if(t.version=i.getUint32(8)>>>24,t.version>1)return null;t.systemId=ts(new Uint8Array(e,12,16));const s=i.getUint32(28);if(0===t.version){if(r-32this.generateRequestWithPreferredKeySession(s,t,i,"encrypted-event-key-match")));break}}l||(l=a[n]=this.getKeySystemSelectionPromise([s]).then((({keySystem:e,mediaKeys:s})=>{var a;this.throwIfDestroyed();const o=new ks("ISO-23001-7",n,null!=(a=Pr(e))?a:"");return o.pssh=new Uint8Array(i),o.keyId=r,this.attemptSetMediaKeys(e,s).then((()=>{this.throwIfDestroyed();const r=this.createMediaKeySessionContext({decryptdata:o,keySystem:e,mediaKeys:s});return this.generateRequestWithPreferredKeySession(r,t,i,"encrypted-event-no-match")}))}))),l.catch((e=>this.handleError(e)))}_onWaitingForKey(e){this.log(`"${e.type}" event`)}attemptSetMediaKeys(e,t){const i=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${e}"`);const r=Promise.all(i).then((()=>{if(!this.media)throw new Error("Attempted to set mediaKeys without media element attached");return this.media.setMediaKeys(t)}));return this.setMediaKeysQueue.push(r),r.then((()=>{this.log(`Media-keys set for "${e}"`),i.push(r),this.setMediaKeysQueue=this.setMediaKeysQueue.filter((e=>-1===i.indexOf(e)))}))}generateRequestWithPreferredKeySession(e,t,i,r){var s,n;const a=null==(s=this.config.drmSystems)||null==(n=s[e.keySystem])?void 0:n.generateRequest;if(a)try{const r=a.call(this.hls,t,i,e);if(!r)throw new Error("Invalid response from configured generateRequest filter");t=r.initDataType,i=e.decryptdata.pssh=r.initData?new Uint8Array(r.initData):null}catch(e){var o;if(this.warn(e.message),null!=(o=this.hls)&&o.config.debug)throw e}if(null===i)return this.log(`Skipping key-session request for "${r}" (no initData)`),Promise.resolve(e);const l=this.getKeyIdString(e.decryptdata);this.log(`Generating key-session request for "${r}": ${l} (init data type: ${t} length: ${i?i.byteLength:null})`);const h=new fl,c=e._onmessage=t=>{const i=e.mediaKeysSession;if(!i)return void h.emit("error",new Error("invalid state"));const{messageType:r,message:s}=t;this.log(`"${r}" message event for session "${i.sessionId}" message size: ${s.byteLength}`),"license-request"===r||"license-renewal"===r?this.renewLicense(e,s).catch((e=>{this.handleError(e),h.emit("error",e)})):"license-release"===r?e.keySystem===Rr.FAIRPLAY&&(this.updateKeySession(e,wr("acknowledged")),this.removeSession(e)):this.warn(`unhandled media key message type "${r}"`)},d=e._onkeystatuseschange=t=>{if(!e.mediaKeysSession)return void h.emit("error",new Error("invalid state"));this.onKeyStatusChange(e);const i=e.keyStatus;h.emit("keyStatus",i),"expired"===i&&(this.warn(`${e.keySystem} expired for key ${l}`),this.renewKeySession(e))};e.mediaKeysSession.addEventListener("message",c),e.mediaKeysSession.addEventListener("keystatuseschange",d);const u=new Promise(((e,t)=>{h.on("error",t),h.on("keyStatus",(i=>{i.startsWith("usable")?e():"output-restricted"===i?t(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,fatal:!1},"HDCP level output restricted")):"internal-error"===i?t(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_STATUS_INTERNAL_ERROR,fatal:!0},`key status changed to "${i}"`)):"expired"===i?t(new Error("key expired while generating request")):this.warn(`unhandled key status change "${i}"`)}))}));return e.mediaKeysSession.generateRequest(t,i).then((()=>{var t;this.log(`Request generated for key-session "${null==(t=e.mediaKeysSession)?void 0:t.sessionId}" keyId: ${l}`)})).catch((e=>{throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_SESSION,error:e,fatal:!1},`Error generating key-session request: ${e}`)})).then((()=>u)).catch((t=>{throw h.removeAllListeners(),this.removeSession(e),t})).then((()=>(h.removeAllListeners(),e)))}onKeyStatusChange(e){e.mediaKeysSession.keyStatuses.forEach(((t,i)=>{this.log(`key status change "${t}" for keyStatuses keyId: ${ts("buffer"in i?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):new Uint8Array(i))} session keyId: ${ts(new Uint8Array(e.decryptdata.keyId||[]))} uri: ${e.decryptdata.uri}`),e.keyStatus=t}))}fetchServerCertificate(e){const t=this.config,i=new(0,t.loader)(t),r=this.getServerCertificateUrl(e);return r?(this.log(`Fetching server certificate for "${e}"`),new Promise(((s,n)=>{const a={responseType:"arraybuffer",url:r},o=t.certLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(e,t,i,r)=>{s(e.data)},onError:(t,i,s,o)=>{n(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:s,response:qi({url:a.url,data:void 0},t)},`"${e}" certificate request failed (${r}). Status: ${t.code} (${t.text})`))},onTimeout:(t,i,s)=>{n(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:s,response:{url:a.url,data:void 0}},`"${e}" certificate request timed out (${r})`))},onAbort:(e,t,i)=>{n(new Error("aborted"))}};i.load(a,l,h)}))):Promise.resolve()}setMediaKeysServerCertificate(e,t,i){return new Promise(((r,s)=>{e.setServerCertificate(i).then((s=>{this.log(`setServerCertificate ${s?"success":"not supported by CDM"} (${null==i?void 0:i.byteLength}) on "${t}"`),r(e)})).catch((e=>{s(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:e,fatal:!0},e.message))}))}))}renewLicense(e,t){return this.requestLicense(e,new Uint8Array(t)).then((t=>this.updateKeySession(e,new Uint8Array(t)).catch((e=>{throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SESSION_UPDATE_FAILED,error:e,fatal:!0},e.message)}))))}unpackPlayReadyKeyMessage(e,t){const i=String.fromCharCode.apply(null,new Uint16Array(t.buffer));if(!i.includes("PlayReadyKeyMessage"))return e.setRequestHeader("Content-Type","text/xml; charset=utf-8"),t;const r=(new DOMParser).parseFromString(i,"application/xml"),s=r.querySelectorAll("HttpHeader");if(s.length>0){let t;for(let i=0,r=s.length;i in key message");return wr(atob(l))}setupLicenseXHR(e,t,i,r){const s=this.config.licenseXhrSetup;return s?Promise.resolve().then((()=>{if(!i.decryptdata)throw new Error("Key removed");return s.call(this.hls,e,t,i,r)})).catch((n=>{if(!i.decryptdata)throw n;return e.open("POST",t,!0),s.call(this.hls,e,t,i,r)})).then((i=>{e.readyState||e.open("POST",t,!0);return{xhr:e,licenseChallenge:i||r}})):(e.open("POST",t,!0),Promise.resolve({xhr:e,licenseChallenge:r}))}requestLicense(e,t){const i=this.config.keyLoadPolicy.default;return new Promise(((r,s)=>{const n=this.getLicenseServerUrl(e.keySystem);this.log(`Sending license request to URL: ${n}`);const a=new XMLHttpRequest;a.responseType="arraybuffer",a.onreadystatechange=()=>{if(!this.hls||!e.mediaKeysSession)return s(new Error("invalid state"));if(4===a.readyState)if(200===a.status){this._requestLicenseFailureCount=0;let t=a.response;this.log(`License received ${t instanceof ArrayBuffer?t.byteLength:t}`);const i=this.config.licenseResponseCallback;if(i)try{t=i.call(this.hls,a,n,e)}catch(e){this.error(e)}r(t)}else{const o=i.errorRetry,l=o?o.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>l||a.status>=400&&a.status<500)s(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:a,response:{url:n,data:void 0,code:a.status,text:a.statusText}},`License Request XHR failed (${n}). Status: ${a.status} (${a.statusText})`));else{const i=l-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${i} attempts left`),this.requestLicense(e,t).then(r,s)}}},e.licenseXhr&&e.licenseXhr.readyState!==XMLHttpRequest.DONE&&e.licenseXhr.abort(),e.licenseXhr=a,this.setupLicenseXHR(a,n,e,t).then((({xhr:t,licenseChallenge:i})=>{e.keySystem==Rr.PLAYREADY&&(i=this.unpackPlayReadyKeyMessage(t,i)),t.send(i)}))}))}onMediaAttached(e,t){if(!this.config.emeEnabled)return;const i=t.media;this.media=i,i.addEventListener("encrypted",this.onMediaEncrypted),i.addEventListener("waitingforkey",this.onWaitingForKey)}onMediaDetached(){const 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={},ks.clearKeyUriToKeyIdMap();const i=t.length;yh.CDMCleanupPromise=Promise.all(t.map((e=>this.removeSession(e))).concat(null==e?void 0:e.setMediaKeys(null).catch((e=>{this.log(`Could not clear media keys: ${e}`)})))).then((()=>{i&&(this.log("finished closing key sessions and clearing media keys"),t.length=0)})).catch((e=>{this.log(`Could not close sessions and clear media keys: ${e}`)}))}onManifestLoading(){this.keyFormatPromise=null}onManifestLoaded(e,{sessionKeys:t}){if(t&&this.config.emeEnabled&&!this.keyFormatPromise){const e=t.reduce(((e,t)=>(-1===e.indexOf(t.keyFormat)&&e.push(t.keyFormat),e)),[]);this.log(`Selecting key-system from session-keys ${e.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(e)}}removeSession(e){const{mediaKeysSession:t,licenseXhr:i}=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),i&&i.readyState!==XMLHttpRequest.DONE&&i.abort(),e.mediaKeysSession=e.decryptdata=e.licenseXhr=void 0;const r=this.mediaKeySessions.indexOf(e);return r>-1&&this.mediaKeySessions.splice(r,1),t.remove().catch((e=>{this.log(`Could not remove session: ${e}`)})).then((()=>t.close())).catch((e=>{this.log(`Could not close session: ${e}`)}))}}}yh.CDMCleanupPromise=void 0;class Th 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}}var Eh,Sh,bh;!function(e){e.MANIFEST="m",e.AUDIO="a",e.VIDEO="v",e.MUXED="av",e.INIT="i",e.CAPTION="c",e.TIMED_TEXT="tt",e.KEY="k",e.OTHER="o"}(Eh||(Eh={})),function(e){e.DASH="d",e.HLS="h",e.SMOOTH="s",e.OTHER="o"}(Sh||(Sh={})),function(e){e.OBJECT="CMCD-Object",e.REQUEST="CMCD-Request",e.SESSION="CMCD-Session",e.STATUS="CMCD-Status"}(bh||(bh={}));const Lh={[bh.OBJECT]:["br","d","ot","tb"],[bh.REQUEST]:["bl","dl","mtp","nor","nrr","su"],[bh.SESSION]:["cid","pr","sf","sid","st","v"],[bh.STATUS]:["bs","rtp"]};class wh{constructor(e,t){this.value=void 0,this.params=void 0,Array.isArray(e)&&(e=e.map((e=>e instanceof wh?e:new wh(e)))),this.value=e,this.params=t}}class Ah{constructor(e){this.description=void 0,this.description=e}}const Rh="Dict";function kh(e,t,i,r){return new Error(`failed to ${e} "${s=t,Array.isArray(s)?JSON.stringify(s):s instanceof Map?"Map{}":s instanceof Set?"Set{}":"object"==typeof s?JSON.stringify(s):String(s)}" as ${i}`,{cause:r});var s}const _h="Bare Item",Dh="Boolean",xh="Byte Sequence",Ch="Decimal",Ih="Integer";const Ph=/[\x00-\x1f\x7f]+/,Oh="Token",Mh="Key";function Fh(e,t,i){return kh("serialize",e,t,i)}function Nh(e){if(!1===ArrayBuffer.isView(e))throw Fh(e,xh);return`:${t=e,btoa(String.fromCharCode(...t))}:`;var t}function Uh(e){if(function(e){return e<-999999999999999||99999999999999912)throw Fh(e,Ch);const i=t.toString();return i.includes(".")?i:`${i}.0`}const Gh="String";function Kh(e){const t=(i=e).description||i.toString().slice(7,-1);var i;if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(t))throw Fh(t,Oh);return t}function Vh(e){switch(typeof e){case"number":if(!Ji(e))throw Fh(e,_h);return Number.isInteger(e)?Uh(e):$h(e);case"string":return function(e){if(Ph.test(e))throw Fh(e,Gh);return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}(e);case"symbol":return Kh(e);case"boolean":return function(e){if("boolean"!=typeof e)throw Fh(e,Dh);return e?"?1":"?0"}(e);case"object":if(e instanceof Date)return function(e){return`@${Uh(e.getTime()/1e3)}`}(e);if(e instanceof Uint8Array)return Nh(e);if(e instanceof Ah)return Kh(e);default:throw Fh(e,_h)}}function Hh(e){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(e))throw Fh(e,Mh);return e}function jh(e){return null==e?"":Object.entries(e).map((([e,t])=>!0===t?`;${Hh(e)}`:`;${Hh(e)}=${Vh(t)}`)).join("")}function Wh(e){return e instanceof wh?`${Vh(e.value)}${jh(e.params)}`:Vh(e)}function Yh(e,t={whitespace:!0}){if("object"!=typeof e)throw Fh(e,Rh);const i=e instanceof Map?e.entries():Object.entries(e),r=null!=t&&t.whitespace?" ":"";return Array.from(i).map((([e,t])=>{t instanceof wh==!1&&(t=new wh(t));let i=Hh(e);var r;return!0===t.value?i+=jh(t.params):(i+="=",Array.isArray(t.value)?i+=`(${(r=t).value.map(Wh).join(" ")})${jh(r.params)}`:i+=Wh(t)),i})).join(`,${r}`)}const qh=e=>"ot"===e||"sf"===e||"st"===e,zh=e=>"number"==typeof e?Ji(e):null!=e&&""!==e&&!1!==e;const Xh=e=>Math.round(e),Qh=e=>100*Xh(e/100),Jh={br:Xh,d:Xh,bl:Qh,dl:Qh,mtp:Qh,nor:(e,t)=>(null!=t&&t.baseUrl&&(e=function(e,t){const i=new URL(e),r=new URL(t);if(i.origin!==r.origin)return e;const s=i.pathname.split("/").slice(1),n=r.pathname.split("/").slice(1,-1);for(;s[0]===n[0];)s.shift(),n.shift();for(;n.length;)n.shift(),s.unshift("..");return s.join("/")}(e,t.baseUrl)),encodeURIComponent(e)),rtp:Qh,tb:Xh};function Zh(e,t={}){return e?function(e,t){return Yh(e,t)}(function(e,t){const i={};if(null==e||"object"!=typeof e)return i;const r=Object.keys(e).sort(),s=Qi({},Jh,null==t?void 0:t.formatters),n=null==t?void 0:t.filter;return r.forEach((r=>{if(null!=n&&n(r))return;let a=e[r];const o=s[r];o&&(a=o(a,t)),"v"===r&&1===a||"pr"==r&&1===a||zh(a)&&(qh(r)&&"string"==typeof a&&(a=new Ah(a)),i[r]=a)})),i}(e,t),Qi({whitespace:!1},t)):""}function ec(e,t,i){return Qi(e,function(e,t={}){if(!e)return{};const i=Object.entries(e),r=Object.entries(Lh).concat(Object.entries((null==t?void 0:t.customHeaderMap)||{})),s=i.reduce(((e,t)=>{var i;const[s,n]=t,a=(null==(i=r.find((e=>e[1].includes(s))))?void 0:i[0])||bh.REQUEST;return null!=e[a]||(e[a]={}),e[a][s]=n,e}),{});return Object.entries(s).reduce(((e,[i,r])=>(e[i]=Zh(r,t),e)),{})}(t,i))}const tc="CMCD";const ic=/CMCD=[^&#]+/;function rc(e,t,i){const r=function(e,t={}){if(!e)return"";const i=Zh(e,t);return`${tc}=${encodeURIComponent(i)}`}(t,i);if(!r)return e;if(ic.test(e))return e.replace(ic,r);const s=e.includes("?")?"&":"?";return`${e}${s}${r}`}function sc(e,t,i,r){e&&Object.keys(t).forEach((s=>{const n=e.filter((e=>e.groupId===s)).map((e=>{const n=Qi({},e);return n.details=void 0,n.attrs=new dr(n.attrs),n.url=n.attrs.URI=nc(e.url,e.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",i),n.groupId=n.attrs["GROUP-ID"]=t[s],n.attrs["PATHWAY-ID"]=r,n}));e.push(...n)}))}function nc(e,t,i,r){const{HOST:s,PARAMS:n,[i]:a}=r;let o;t&&(o=null==a?void 0:a[t],o&&(e=o));const l=new self.URL(e);return s&&!o&&(l.host=s),n&&Object.keys(n).sort().forEach((e=>{e&&l.searchParams.set(e,n[e])})),l.href}const ac=/^age:\s*[\d.]+\s*$/im;class oc{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 gr,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null}abortInternal(){const e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,4!==e.readyState&&(this.stats.aborted=!0,e.abort()))}abort(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(e,t,i){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=i,this.loadInternal()}loadInternal(){const{config:e,context:t}=this;if(!e||!t)return;const i=this.loader=new self.XMLHttpRequest,r=this.stats;r.loading.first=0,r.loaded=0,r.aborted=!1;const s=this.xhrSetup;s?Promise.resolve().then((()=>{if(this.loader===i&&!this.stats.aborted)return s(i,t.url)})).catch((e=>{if(this.loader===i&&!this.stats.aborted)return i.open("GET",t.url,!0),s(i,t.url)})).then((()=>{this.loader!==i||this.stats.aborted||this.openAndSendXhr(i,t,e)})).catch((e=>{this.callbacks.onError({code:i.status,text:e.message},t,i,r)})):this.openAndSendXhr(i,t,e)}openAndSendXhr(e,t,i){e.readyState||e.open("GET",t.url,!0);const r=t.headers,{maxTimeToFirstByteMs:s,maxLoadTimeMs:n}=i.loadPolicy;if(r)for(const t in r)e.setRequestHeader(t,r[t]);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),i.timeout=s&&Ji(s)?s:n,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),i.timeout),e.send()}readystatechange(){const{context:e,loader:t,stats:i}=this;if(!e||!t)return;const r=t.readyState,s=this.config;if(!i.aborted&&r>=2&&(0===i.loading.first&&(i.loading.first=Math.max(self.performance.now(),i.loading.start),s.timeout!==s.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),s.timeout=s.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),s.loadPolicy.maxLoadTimeMs-(i.loading.first-i.loading.start)))),4===r)){self.clearTimeout(this.requestTimeout),t.onreadystatechange=null,t.onprogress=null;const r=t.status,n="text"!==t.responseType;if(r>=200&&r<300&&(n&&t.response||null!==t.responseText)){i.loading.end=Math.max(self.performance.now(),i.loading.first);const s=n?t.response:t.responseText,a="arraybuffer"===t.responseType?s.byteLength:s.length;if(i.loaded=i.total=a,i.bwEstimate=8e3*i.total/(i.loading.end-i.loading.first),!this.callbacks)return;const o=this.callbacks.onProgress;if(o&&o(i,e,s,t),!this.callbacks)return;const l={url:t.responseURL,data:s,code:r};this.callbacks.onSuccess(l,i,e,t)}else{const n=s.loadPolicy.errorRetry;Xn(n,i.retry,!1,{url:e.url,data:void 0,code:r})?this.retry(n):(lr.error(`${r} while loading ${e.url}`),this.callbacks.onError({code:r,text:t.statusText},e,t,i))}}}loadtimeout(){if(!this.config)return;const e=this.config.loadPolicy.timeoutRetry;if(Xn(e,this.stats.retry,!0))this.retry(e);else{var t;lr.warn(`timeout while loading ${null==(t=this.context)?void 0:t.url}`);const e=this.callbacks;e&&(this.abortInternal(),e.onTimeout(this.stats,this.context,this.loader))}}retry(e){const{context:t,stats:i}=this;this.retryDelay=qn(e,i.retry),i.retry++,lr.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${null==t?void 0:t.url}, retrying ${i.retry}/${e.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)}loadprogress(e){const t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)}getCacheAge(){let e=null;if(this.loader&&ac.test(this.loader.getAllResponseHeaders())){const t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.loader&&new RegExp(`^${e}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(e):null}}const lc=/(\d+)-(\d+)\/(\d+)/;class hc{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||cc,this.controller=new self.AbortController,this.stats=new gr}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(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(e,t,i){const r=this.stats;if(r.loading.start)throw new Error("Loader can only be used once.");r.loading.start=self.performance.now();const s=function(e,t){const i={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(Qi({},e.headers))};e.rangeEnd&&i.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1));return i}(e,this.controller.signal),n=i.onProgress,a="arraybuffer"===e.responseType,o=a?"byteLength":"length",{maxTimeToFirstByteMs:l,maxLoadTimeMs:h}=t.loadPolicy;this.context=e,this.config=t,this.callbacks=i,this.request=this.fetchSetup(e,s),self.clearTimeout(this.requestTimeout),t.timeout=l&&Ji(l)?l:h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(r,e,this.response)}),t.timeout),self.fetch(this.request).then((s=>{this.response=this.loader=s;const o=Math.max(self.performance.now(),r.loading.start);if(self.clearTimeout(this.requestTimeout),t.timeout=h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(r,e,this.response)}),h-(o-r.loading.start)),!s.ok){const{status:e,statusText:t}=s;throw new dc(t||"fetch, bad network response",e,s)}return r.loading.first=o,r.total=function(e){const t=e.get("Content-Range");if(t){const e=function(e){const t=lc.exec(e);if(t)return parseInt(t[2])-parseInt(t[1])+1}(t);if(Ji(e))return e}const i=e.get("Content-Length");if(i)return parseInt(i)}(s.headers)||r.total,n&&Ji(t.highWaterMark)?this.loadProgressively(s,r,e,t.highWaterMark,n):a?s.arrayBuffer():"json"===e.responseType?s.json():s.text()})).then((s=>{const a=this.response;if(!a)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),r.loading.end=Math.max(self.performance.now(),r.loading.first);const l=s[o];l&&(r.loaded=r.total=l);const h={url:a.url,data:s,code:a.status};n&&!Ji(t.highWaterMark)&&n(r,e,s,a),i.onSuccess(h,r,e,a)})).catch((t=>{if(self.clearTimeout(this.requestTimeout),r.aborted)return;const s=t&&t.code||0,n=t?t.message:null;i.onError({code:s,text:n},e,t?t.details:null,r)}))}getCacheAge(){let e=null;if(this.response){const t=this.response.headers.get("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.response?this.response.headers.get(e):null}loadProgressively(e,t,i,r=0,s){const n=new ao,a=e.body.getReader(),o=()=>a.read().then((a=>{if(a.done)return n.dataLength&&s(t,i,n.flush(),e),Promise.resolve(new ArrayBuffer(0));const l=a.value,h=l.length;return t.loaded+=h,h=r&&s(t,i,n.flush(),e)):s(t,i,l,e),o()})).catch((()=>Promise.reject()));return o()}}function cc(e,t){return new self.Request(e.url,t)}class dc extends Error{constructor(e,t,i){super(e),this.code=void 0,this.details=void 0,this.code=t,this.details=i}}const uc=/\s/,fc={newCue(e,t,i,r){const s=[];let n,a,o,l,h;const c=self.VTTCue||self.TextTrackCue;for(let u=0;u=16?l--:l++;const r=Xl(h.trim()),f=th(t,i,r);null!=e&&null!=(d=e.cues)&&d.getCueById(f)||(a=new c(t,i,r),a.id=f,a.line=u+1,a.align="left",a.position=10+Math.min(80,10*Math.floor(8*l/32)),s.push(a))}return e&&s.length&&(s.sort(((e,t)=>"auto"===e.line||"auto"===t.line?0:e.line>8&&t.line>8?t.line-e.line:e.line-t.line)),s.forEach((t=>pn(e,t)))),s}},gc=qi(qi({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:6e7,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:oc,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController: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.codecTiers=null,this.timer=-1,this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this._abandonRulesCheck=()=>{const{fragCurrent:e,partCurrent:t,hls:i}=this,{autoLevelEnabled:r,media:s}=i;if(!e||!s)return;const n=performance.now(),a=t?t.stats:e.stats,o=t?t.duration:e.duration,l=n-a.loading.start,h=i.minAutoLevel;if(a.aborted||a.loaded&&a.loaded===a.total||e.level<=h)return this.clearTimer(),void(this._nextAutoLevel=-1);if(!r||s.paused||!s.playbackRate||!s.readyState)return;const c=i.mainForwardBufferInfo;if(null===c)return;const d=this.bwEstimator.getEstimateTTFB(),u=Math.abs(s.playbackRate);if(l<=Math.max(d,o/(2*u)*1e3))return;const f=c.len/u,g=a.loading.first?a.loading.first-a.loading.start:-1,m=a.loaded&&g>-1,p=this.getBwEstimate(),v=i.levels,y=v[e.level],T=a.total||Math.max(a.loaded,Math.round(o*y.averageBitrate/8));let E=m?l-g:l;E<1&&m&&(E=Math.min(l,8*a.loaded/p));const S=m?1e3*a.loaded/E:0,b=S?(T-a.loaded)/S:8*T/p+d/1e3;if(b<=f)return;const L=S?8*S:p;let w,A=Number.POSITIVE_INFINITY;for(w=e.level-1;w>h;w--){const e=v[w].maxBitrate;if(A=this.getTimeToLoadFrag(d/1e3,L,o*e,!v[w].details),A=b)return;if(A>10*o)return;i.nextLoadLevel=i.nextAutoLevel=w,m?this.bwEstimator.sample(l-Math.min(d,g),a.loaded):this.bwEstimator.sampleTTFB(l);const R=v[w].maxBitrate;this.getBwEstimate()*this.hls.config.abrBandWidthUpFactor>R&&this.resetEstimator(R),this.clearTimer(),lr.warn(`[abr] Fragment ${e.sn}${t?" part "+t.index:""} of level ${e.level} is loading too slowly;\n Time to underbuffer: ${f.toFixed(3)} s\n Estimated load time for current fragment: ${b.toFixed(3)} s\n Estimated load time for down switch fragment: ${A.toFixed(3)} s\n TTFB estimate: ${0|g} ms\n Current BW estimate: ${Ji(p)?0|p:"Unknown"} bps\n New BW estimate: ${0|this.getBwEstimate()} bps\n Switching to level ${w} @ ${0|R} bps`),i.trigger(tr.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e,part:t,stats:a})},this.hls=e,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(e){e&&(lr.log(`setting initial bwe to ${e}`),this.hls.config.abrEwmaDefaultEstimate=e),this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){const e=this.hls.config;return new ca(e.abrEwmaSlowVoD,e.abrEwmaFastVoD,e.abrEwmaDefaultEstimate)}registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.FRAG_LOADING,this.onFragLoading,this),e.on(tr.FRAG_LOADED,this.onFragLoaded,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e&&(e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.FRAG_LOADING,this.onFragLoading,this),e.off(tr.FRAG_LOADED,this.onFragLoaded,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.off(tr.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){const i=t.frag;if(!this.ignoreFragment(i)){var r;if(!i.bitrateTest)this.fragCurrent=i,this.partCurrent=null!=(r=t.part)?r: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 rr.BUFFER_ADD_CODEC_ERROR:case rr.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case rr.FRAG_LOAD_TIMEOUT:{const e=t.frag,{fragCurrent:i,partCurrent:r}=this;if(e&&i&&e.sn===i.sn&&e.level===i.level){const t=performance.now(),i=r?r.stats:e.stats,s=t-i.loading.start,n=i.loading.first?i.loading.first-i.loading.start:-1;if(i.loaded&&n>-1){const e=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(s-Math.min(e,n),i.loaded)}else this.bwEstimator.sampleTTFB(s)}break}}}getTimeToLoadFrag(e,t,i,r){return e+i/t+(r?this.lastLevelLoadSec:0)}onLevelLoaded(e,t){const i=this.hls.config,{loading:r}=t.stats,s=r.end-r.start;Ji(s)&&(this.lastLevelLoadSec=s/1e3),t.details.live?this.bwEstimator.update(i.abrEwmaSlowLive,i.abrEwmaFastLive):this.bwEstimator.update(i.abrEwmaSlowVoD,i.abrEwmaFastVoD)}onFragLoaded(e,{frag:t,part:i}){const r=i?i.stats:t.stats;if(t.type===hn&&this.bwEstimator.sampleTTFB(r.loading.first-r.loading.start),!this.ignoreFragment(t)){if(this.clearTimer(),t.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){const e=i?i.duration:t.duration,s=this.hls.levels[t.level],n=(s.loaded?s.loaded.bytes:0)+r.loaded,a=(s.loaded?s.loaded.duration:0)+e;s.loaded={bytes:n,duration:a},s.realBitrate=Math.round(8*n/a)}if(t.bitrateTest){const e={stats:r,frag:t,part:i,id:t.type};this.onFragBuffered(tr.FRAG_BUFFERED,e),t.bitrateTest=!1}else this.lastLoadedFragLevel=t.level}}onFragBuffered(e,t){const{frag:i,part:r}=t,s=null!=r&&r.stats.loaded?r.stats:i.stats;if(s.aborted)return;if(this.ignoreFragment(i))return;const n=s.parsing.end-s.loading.start-Math.min(s.loading.first-s.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(n,s.loaded),s.bwEstimate=this.getBwEstimate(),i.bitrateTest?this.bitrateTestDelay=n/1e3:this.bitrateTestDelay=0}ignoreFragment(e){return e.type!==hn||"initSegment"===e.sn}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){const{maxAutoLevel:e,minAutoLevel:t}=this.hls,i=this.getBwEstimate(),r=this.hls.config.maxStarvationDelay,s=this.findBestLevel(i,t,e,0,r,1,1);if(s>-1)return s;const n=this.hls.firstLevel,a=Math.min(Math.max(n,t),e);return lr.warn(`[abr] Could not find best starting auto level. Defaulting to first in playlist ${n} clamped to ${a}`),a}get forcedAutoLevel(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}get nextAutoLevel(){const e=this.forcedAutoLevel,t=this.bwEstimator.canEstimate(),i=this.lastLoadedFragLevel>-1;if(!(-1===e||t&&i&&this.nextAutoLevelKey!==this.getAutoLevelKey()))return e;const r=t&&i?this.getNextABRAutoLevel():this.firstAutoLevel;if(-1!==e){const t=this.hls.levels;if(t.length>Math.max(e,r)&&t[e].loadError<=t[r].loadError)return e}return this._nextAutoLevel=r,this.nextAutoLevelKey=this.getAutoLevelKey(),r}getAutoLevelKey(){return`${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){const{fragCurrent:e,partCurrent:t,hls:i}=this,{maxAutoLevel:r,config:s,minAutoLevel:n}=i,a=t?t.duration:e?e.duration:0,o=this.getBwEstimate(),l=this.getStarvationDelay();let h=s.abrBandWidthFactor,c=s.abrBandWidthUpFactor;if(l){const e=this.findBestLevel(o,n,r,l,0,h,c);if(e>=0)return e}let d=a?Math.min(a,s.maxStarvationDelay):s.maxStarvationDelay;if(!l){const e=this.bitrateTestDelay;if(e){d=(a?Math.min(a,s.maxLoadingDelay):s.maxLoadingDelay)-e,lr.info(`[abr] bitrate test took ${Math.round(1e3*e)}ms, set first fragment max fetchDuration to ${Math.round(1e3*d)} ms`),h=c=1}}const u=this.findBestLevel(o,n,r,l,d,h,c);if(lr.info(`[abr] ${l?"rebuffering expected":"buffer is empty"}, optimal quality level ${u}`),u>-1)return u;const f=i.levels[n],g=i.levels[i.loadLevel];return(null==f?void 0:f.bitrate)<(null==g?void 0:g.bitrate)?n:i.loadLevel}getStarvationDelay(){const e=this.hls,t=e.media;if(!t)return 1/0;const i=t&&0!==t.playbackRate?Math.abs(t.playbackRate):1,r=e.mainForwardBufferInfo;return(r?r.len:0)/i}getBwEstimate(){return this.bwEstimator.canEstimate()?this.bwEstimator.getEstimate():this.hls.config.abrEwmaDefaultEstimate}findBestLevel(e,t,i,r,s,n,a){var o;const l=r+s,h=this.lastLoadedFragLevel,c=-1===h?this.hls.firstLevel:h,{fragCurrent:d,partCurrent:u}=this,{levels:f,allAudioTracks:g,loadLevel:m,config:p}=this.hls;if(1===f.length)return 0;const v=f[c],y=!(null==v||null==(o=v.details)||!o.live),T=-1===m||-1===h;let E,S="SDR",b=(null==v?void 0:v.frameRate)||0;const{audioPreference:L,videoPreference:w}=p,A=this.audioTracksByGroup||(this.audioTracksByGroup=function(e){return e.reduce(((e,t)=>{let i=e.groups[t.groupId];i||(i=e.groups[t.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),i.tracks.push(t);const r=t.channels||"2";return i.channels[r]=(i.channels[r]||0)+1,i.hasDefault=i.hasDefault||t.default,i.hasAutoSelect=i.hasAutoSelect||t.autoselect,i.hasDefault&&(e.hasDefaultAudio=!0),i.hasAutoSelect&&(e.hasAutoSelectAudio=!0),e}),{hasDefaultAudio:!1,hasAutoSelectAudio:!1,groups:{}})}(g));if(T){if(-1!==this.firstSelection)return this.firstSelection;const r=this.codecTiers||(this.codecTiers=function(e,t,i,r){return e.slice(i,r+1).reduce(((e,i)=>{if(!i.codecSet)return e;const r=i.audioGroups;let s=e[i.codecSet];s||(e[i.codecSet]=s={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!r,fragmentError:0}),s.minBitrate=Math.min(s.minBitrate,i.bitrate);const n=Math.min(i.height,i.width);return s.minHeight=Math.min(s.minHeight,n),s.minFramerate=Math.min(s.minFramerate,i.frameRate),s.maxScore=Math.max(s.maxScore,i.score),s.fragmentError+=i.fragmentError,s.videoRanges[i.videoRange]=(s.videoRanges[i.videoRange]||0)+1,r&&r.forEach((e=>{if(!e)return;const i=t.groups[e];i&&(s.hasDefaultAudio=s.hasDefaultAudio||t.hasDefaultAudio?i.hasDefault:i.hasAutoSelect||!t.hasDefaultAudio&&!t.hasAutoSelectAudio,Object.keys(i.channels).forEach((e=>{s.channels[e]=(s.channels[e]||0)+i.channels[e]})))})),e}),{})}(f,A,t,i)),s=function(e,t,i,r,s){const n=Object.keys(e),a=null==r?void 0:r.channels,o=null==r?void 0:r.audioCodec,l=a&&2===parseInt(a);let h=!0,c=!1,d=1/0,u=1/0,f=1/0,g=0,m=[];const{preferHDR:p,allowedVideoRanges:v}=ma(t,s);for(let t=n.length;t--;){const i=e[n[t]];h=i.channels[2]>0,d=Math.min(d,i.minHeight),u=Math.min(u,i.minFramerate),f=Math.min(f,i.minBitrate);const r=v.filter((e=>i.videoRanges[e]>0));r.length>0&&(c=!0,m=r)}d=Ji(d)?d:0,u=Ji(u)?u:0;const y=Math.max(1080,d),T=Math.max(30,u);return f=Ji(f)?f:i,i=Math.max(f,i),c||(t=void 0,m=[]),{codecSet:n.reduce(((t,r)=>{const s=e[r];if(r===t)return t;if(s.minBitrate>i)return pa(r,`min bitrate of ${s.minBitrate} > current estimate of ${i}`),t;if(!s.hasDefaultAudio)return pa(r,"no renditions with default or auto-select sound found"),t;if(o&&r.indexOf(o.substring(0,4))%5!=0)return pa(r,`audio codec preference "${o}" not found`),t;if(a&&!l){if(!s.channels[a])return pa(r,`no renditions with ${a} channel sound found (channels options: ${Object.keys(s.channels)})`),t}else if((!o||l)&&h&&0===s.channels[2])return pa(r,"no renditions with stereo sound found"),t;return s.minHeight>y?(pa(r,`min resolution of ${s.minHeight} > maximum of ${y}`),t):s.minFramerate>T?(pa(r,`min framerate of ${s.minFramerate} > maximum of ${T}`),t):m.some((e=>s.videoRanges[e]>0))?s.maxScore=$s(t)||s.fragmentError>e[t].fragmentError)?t:(g=s.maxScore,r):(pa(r,`no variants with VIDEO-RANGE of ${JSON.stringify(m)} found`),t)}),void 0),videoRanges:m,preferHDR:p,minFramerate:u,minBitrate:f}}(r,S,e,L,w),{codecSet:n,videoRanges:a,minFramerate:o,minBitrate:l,preferHDR:h}=s;E=n,S=h?a[a.length-1]:a[0],b=o,e=Math.max(e,l),lr.log(`[abr] picked start tier ${JSON.stringify(s)}`)}else E=null==v?void 0:v.codecSet,S=null==v?void 0:v.videoRange;const R=u?u.duration:d?d.duration:0,k=this.bwEstimator.getEstimateTTFB()/1e3,_=[];for(let o=i;o>=t;o--){var D;const t=f[o],d=o>c;if(!t)continue;if(p.useMediaCapabilities&&!t.supportedResult&&!t.supportedPromise){const i=navigator.mediaCapabilities;"function"==typeof(null==i?void 0:i.decodingInfo)&&fa(t,A,S,b,e,L)?(t.supportedPromise=ga(t,A,i),t.supportedPromise.then((e=>{if(!this.hls)return;t.supportedResult=e;const i=this.hls.levels,r=i.indexOf(t);e.error?lr.warn(`[abr] MediaCapabilities decodingInfo error: "${e.error}" for level ${r} ${JSON.stringify(e)}`):e.supported||(lr.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${r} ${JSON.stringify(e)}`),r>-1&&i.length>1&&(lr.log(`[abr] Removing unsupported level ${r}`),this.hls.removeLevel(r)))}))):t.supportedResult=da}if(E&&t.codecSet!==E||S&&t.videoRange!==S||d&&b>t.frameRate||!d&&b>0&&b=2*R&&0===s?f[o].averageBitrate:f[o].maxBitrate,I=this.getTimeToLoadFrag(k,x,C*w,void 0===g);if(x>=C&&(o===h||0===t.loadError&&0===t.fragmentError)&&(I<=k||!Ji(I)||y&&!this.bitrateTestDelay||I${o} adjustedbw(${Math.round(x)})-bitrate=${Math.round(x-C)} ttfb:${k.toFixed(1)} avgDuration:${w.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${I.toFixed(1)} firstSelection:${T} codecSet:${E} videoRange:${S} hls.loadLevel:${m}`)),T&&(this.firstSelection=o),o}}return-1}set nextAutoLevel(e){const{maxAutoLevel:t,minAutoLevel:i}=this.hls,r=Math.min(Math.max(e,i),t);this._nextAutoLevel!==r&&(this.nextAutoLevelKey="",this._nextAutoLevel=r)}},bufferController: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=e=>{this.hls&&this.hls.pauseBuffering()},this._onStartStreaming=e=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=()=>{const{media:e,mediaSource:t}=this;this.log("Media source opened"),e&&(e.removeEventListener("emptied",this._onMediaEmptied),this.updateMediaElementDuration(),this.hls.trigger(tr.MEDIA_ATTACHED,{media:e,mediaSource:t})),t&&t.removeEventListener("sourceopen",this._onMediaSourceOpen),this.checkPendingTracks()},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{const{mediaSrc:e,_objectUrl:t}=this;e!==t&&lr.error(`Media element src was set while attaching MediaSource (${t} > ${e})`)},this.hls=e;const t="[buffer-controller]";var i;this.appendSource=(i=Os(e.config.preferManagedMediaSource),"undefined"!=typeof self&&i===self.ManagedMediaSource),this.log=lr.log.bind(lr,t),this.warn=lr.warn.bind(lr,t),this.error=lr.error.bind(lr,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(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.BUFFER_RESET,this.onBufferReset,this),e.on(tr.BUFFER_APPENDING,this.onBufferAppending,this),e.on(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.on(tr.BUFFER_EOS,this.onBufferEos,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(tr.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(tr.FRAG_PARSED,this.onFragParsed,this),e.on(tr.FRAG_CHANGED,this.onFragChanged,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.BUFFER_RESET,this.onBufferReset,this),e.off(tr.BUFFER_APPENDING,this.onBufferAppending,this),e.off(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.off(tr.BUFFER_EOS,this.onBufferEos,this),e.off(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(tr.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(tr.FRAG_PARSED,this.onFragParsed,this),e.off(tr.FRAG_CHANGED,this.onFragChanged,this)}_initSourceBuffer(){this.sourceBuffer={},this.operationQueue=new Tl(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 i=2;(t.audio&&!t.video||!t.altAudio)&&(i=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=i,this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`)}onMediaAttaching(e,t){const i=this.media=t.media,r=Os(this.appendSource);if(i&&r){var s;const e=this.mediaSource=new r;this.log(`created media source: ${null==(s=e.constructor)?void 0:s.name}`),e.addEventListener("sourceopen",this._onMediaSourceOpen),e.addEventListener("sourceended",this._onMediaSourceEnded),e.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(e.addEventListener("startstreaming",this._onStartStreaming),e.addEventListener("endstreaming",this._onEndStreaming));const t=this._objectUrl=self.URL.createObjectURL(e);if(this.appendSource)try{i.removeAttribute("src");const r=self.ManagedMediaSource;i.disableRemotePlayback=i.disableRemotePlayback||r&&e instanceof r,Sl(i),function(e,t){const i=self.document.createElement("source");i.type="video/mp4",i.src=t,e.appendChild(i)}(i,t),i.load()}catch(e){i.src=t}else i.src=t;i.addEventListener("emptied",this._onMediaEmptied)}}onMediaDetaching(){const{media:e,mediaSource:t,_objectUrl:i}=this;if(t){if(this.log("media source detaching"),"open"===t.readyState)try{t.endOfStream()}catch(e){this.warn(`onMediaDetaching: ${e.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),i&&self.URL.revokeObjectURL(i),this.mediaSrc===i?(e.removeAttribute("src"),this.appendSource&&Sl(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(tr.MEDIA_DETACHED,void 0)}onBufferReset(){this.getSourceBufferTypes().forEach((e=>{this.resetBuffer(e)})),this._initSourceBuffer()}resetBuffer(e){const t=this.sourceBuffer[e];try{var i;if(t)this.removeBufferListeners(e),this.sourceBuffer[e]=void 0,null!=(i=this.mediaSource)&&i.sourceBuffers.length&&this.mediaSource.removeSourceBuffer(t)}catch(t){this.warn(`onBufferReset ${e}`,t)}}onBufferCodecs(e,t){const i=this.getSourceBufferTypes().length,r=Object.keys(t);if(r.forEach((e=>{if(i){const i=this.tracks[e];if(i&&"function"==typeof i.buffer.changeType){var r;const{id:s,codec:n,levelCodec:a,container:o,metadata:l}=t[e],h=Hs(i.codec,i.levelCodec),c=null==h?void 0:h.replace(El,"$1");let d=Hs(n,a);const u=null==(r=d)?void 0:r.replace(El,"$1");if(d&&c!==u){"audio"===e.slice(0,5)&&(d=Vs(d,this.appendSource));const t=`${o};codecs=${d}`;this.appendChangeType(e,t),this.log(`switching codec ${h} to ${d}`),this.tracks[e]={buffer:i.buffer,codec:n,container:o,levelCodec:a,metadata:l,id:s}}}}else this.pendingTracks[e]=t[e]})),i)return;const s=Math.max(this.bufferCodecEventsExpected-1,0);this.bufferCodecEventsExpected!==s&&(this.log(`${s} bufferCodec event(s) expected ${r.join(",")}`),this.bufferCodecEventsExpected=s),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks()}appendChangeType(e,t){const{operationQueue:i}=this,r={execute:()=>{const r=this.sourceBuffer[e];r&&(this.log(`changing ${e} sourceBuffer type to ${t}`),r.changeType(t)),i.shiftAndExecuteNext(e)},onStart:()=>{},onComplete:()=>{},onError:t=>{this.warn(`Failed to change ${e} SourceBuffer type`,t)}};i.append(r,e,!!this.pendingTracks[e])}onBufferAppending(e,t){const{hls:i,operationQueue:r,tracks:s}=this,{data:n,type:a,frag:o,part:l,chunkMeta:h}=t,c=h.buffering[a],d=self.performance.now();c.start=d;const u=o.stats.buffering,f=l?l.stats.buffering:null;0===u.start&&(u.start=d),f&&0===f.start&&(f.start=d);const g=s.audio;let m=!1;"audio"===a&&"audio/mpeg"===(null==g?void 0:g.container)&&(m=!this.lastMpegAudioChunk||1===h.id||this.lastMpegAudioChunk.sn!==h.sn,this.lastMpegAudioChunk=h);const p=o.start,v={execute:()=>{if(c.executeStart=self.performance.now(),m){const e=this.sourceBuffer[a];if(e){const t=p-e.timestampOffset;Math.abs(t)>=.1&&(this.log(`Updating audio SourceBuffer timestampOffset to ${p} (delta: ${t}) sn: ${o.sn})`),e.timestampOffset=p)}}this.appendExecutor(n,a)},onStart:()=>{},onComplete:()=>{const e=self.performance.now();c.executeEnd=c.end=e,0===u.first&&(u.first=e),f&&0===f.first&&(f.first=e);const{sourceBuffer:t}=this,i={};for(const e in t)i[e]=xa.getBuffered(t[e]);this.appendErrors[a]=0,"audio"===a||"video"===a?this.appendErrors.audiovideo=0:(this.appendErrors.audio=0,this.appendErrors.video=0),this.hls.trigger(tr.BUFFER_APPENDED,{type:a,frag:o,part:l,chunkMeta:h,parent:o.type,timeRanges:i})},onError:e=>{const t={type:ir.MEDIA_ERROR,parent:o.type,details:rr.BUFFER_APPEND_ERROR,sourceBufferName:a,frag:o,part:l,chunkMeta:h,error:e,err:e,fatal:!1};if(e.code===DOMException.QUOTA_EXCEEDED_ERR)t.details=rr.BUFFER_FULL_ERROR;else{const e=++this.appendErrors[a];t.details=rr.BUFFER_APPEND_ERROR,this.warn(`Failed ${e}/${i.config.appendErrorMaxRetry} times to append segment in "${a}" sourceBuffer`),e>=i.config.appendErrorMaxRetry&&(t.fatal=!0)}i.trigger(tr.ERROR,t)}};r.append(v,a,!!this.pendingTracks[a])}onBufferFlushing(e,t){const{operationQueue:i}=this,r=e=>({execute:this.removeExecutor.bind(this,e,t.startOffset,t.endOffset),onStart:()=>{},onComplete:()=>{this.hls.trigger(tr.BUFFER_FLUSHED,{type:e})},onError:t=>{this.warn(`Failed to remove from ${e} SourceBuffer`,t)}});t.type?i.append(r(t.type),t.type):this.getSourceBufferTypes().forEach((e=>{i.append(r(e),e)}))}onFragParsed(e,t){const{frag:i,part:r}=t,s=[],n=r?r.elementaryStreams:i.elementaryStreams;n[vr]?s.push("audiovideo"):(n[mr]&&s.push("audio"),n[pr]&&s.push("video"));0===s.length&&this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${i.type} level: ${i.level} sn: ${i.sn}`),this.blockBuffers((()=>{const e=self.performance.now();i.stats.buffering.end=e,r&&(r.stats.buffering.end=e);const t=r?r.stats:i.stats;this.hls.trigger(tr.FRAG_BUFFERED,{frag:i,part:r,stats:t,id:i.type})}),s)}onFragChanged(e,t){this.trimBuffers()}onBufferEos(e,t){this.getSourceBufferTypes().reduce(((e,i)=>{const r=this.sourceBuffer[i];return!r||t.type&&t.type!==i||(r.ending=!0,r.ended||(r.ended=!0,this.log(`${i} sourceBuffer now EOS`))),e&&!(r&&!r.ended)}),!0)&&(this.log("Queueing mediaSource.endOfStream()"),this.blockBuffers((()=>{this.getSourceBufferTypes().forEach((e=>{const t=this.sourceBuffer[e];t&&(t.ending=!1)}));const{mediaSource:e}=this;e&&"open"===e.readyState?(this.log("Calling mediaSource.endOfStream()"),e.endOfStream()):e&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${e.readyState}`)})))}onLevelUpdated(e,{details:t}){t.fragments.length&&(this.details=t,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())}trimBuffers(){const{hls:e,details:t,media:i}=this;if(!i||null===t)return;if(!this.getSourceBufferTypes().length)return;const r=e.config,s=i.currentTime,n=t.levelTargetDuration,a=t.live&&null!==r.liveBackBufferLength?r.liveBackBufferLength:r.backBufferLength;if(Ji(a)&&a>0){const e=Math.max(a,n),t=Math.floor(s/n)*n-e;this.flushBackBuffer(s,n,t)}if(Ji(r.frontBufferFlushThreshold)&&r.frontBufferFlushThreshold>0){const e=Math.max(r.maxBufferLength,r.frontBufferFlushThreshold),t=Math.max(e,n),i=Math.floor(s/n)*n+t;this.flushFrontBuffer(s,n,i)}}flushBackBuffer(e,t,i){const{details:r,sourceBuffer:s}=this;this.getSourceBufferTypes().forEach((n=>{const a=s[n];if(a){const s=xa.getBuffered(a);if(s.length>0&&i>s.start(0)){if(this.hls.trigger(tr.BACK_BUFFER_REACHED,{bufferEnd:i}),null!=r&&r.live)this.hls.trigger(tr.LIVE_BACK_BUFFER_REACHED,{bufferEnd:i});else if(a.ended&&s.end(s.length-1)-e<2*t)return void this.log(`Cannot flush ${n} back buffer while SourceBuffer is in ended state`);this.hls.trigger(tr.BUFFER_FLUSHING,{startOffset:0,endOffset:i,type:n})}}}))}flushFrontBuffer(e,t,i){const{sourceBuffer:r}=this;this.getSourceBufferTypes().forEach((s=>{const n=r[s];if(n){const r=xa.getBuffered(n),a=r.length;if(a<2)return;const o=r.start(a-1),l=r.end(a-1);if(i>o||e>=o&&e<=l)return;if(n.ended&&e-l<2*t)return void this.log(`Cannot flush ${s} front buffer while SourceBuffer is in ended state`);this.hls.trigger(tr.BUFFER_FLUSHING,{startOffset:o,endOffset:1/0,type:s})}}))}updateMediaElementDuration(){if(!this.details||!this.media||!this.mediaSource||"open"!==this.mediaSource.readyState)return;const{details:e,hls:t,media:i,mediaSource:r}=this,s=e.fragments[0].start+e.totalduration,n=i.duration,a=Ji(r.duration)?r.duration:0;e.live&&t.config.liveDurationInfinity?(r.duration=1/0,this.updateSeekableRange(e)):(s>a&&s>n||!Ji(n))&&(this.log(`Updating Media Source duration to ${s.toFixed(3)}`),r.duration=s)}updateSeekableRange(e){const t=this.mediaSource,i=e.fragments;if(i.length&&e.live&&null!=t&&t.setLiveSeekableRange){const r=Math.max(0,i[0].start),s=Math.max(r,r+e.totalduration);this.log(`Media Source duration is set to ${t.duration}. Setting seekable range to ${r}-${s}.`),t.setLiveSeekableRange(r,s)}}checkPendingTracks(){const{bufferCodecEventsExpected:e,operationQueue:t,pendingTracks:i}=this,r=Object.keys(i).length;if(r&&(!e||2===r||"audiovideo"in i)){this.createSourceBuffers(i),this.pendingTracks={};const e=this.getSourceBufferTypes();if(e.length)this.hls.trigger(tr.BUFFER_CREATED,{tracks:this.tracks}),e.forEach((e=>{t.executeNext(e)}));else{const e=new Error("could not create source buffer for media codec(s)");this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:e,reason:e.message})}}}createSourceBuffers(e){const{sourceBuffer:t,mediaSource:i}=this;if(!i)throw Error("createSourceBuffers called when mediaSource was null");for(const s in e)if(!t[s]){var r;const n=e[s];if(!n)throw Error(`source buffer exists for track ${s}, however track does not`);let a=-1===(null==(r=n.levelCodec)?void 0:r.indexOf(","))?n.levelCodec:n.codec;a&&"audio"===s.slice(0,5)&&(a=Vs(a,this.appendSource));const o=`${n.container};codecs=${a}`;this.log(`creating sourceBuffer(${o})`);try{const e=t[s]=i.addSourceBuffer(o),r=s;this.addBufferListener(r,"updatestart",this._onSBUpdateStart),this.addBufferListener(r,"updateend",this._onSBUpdateEnd),this.addBufferListener(r,"error",this._onSBUpdateError),this.appendSource&&this.addBufferListener(r,"bufferedchange",((e,t)=>{const i=t.removedRanges;null!=i&&i.length&&this.hls.trigger(tr.BUFFER_FLUSHED,{type:s})})),this.tracks[s]={buffer:e,codec:a,container:n.container,levelCodec:n.levelCodec,metadata:n.metadata,id:n.id}}catch(e){this.error(`error while trying to add sourceBuffer: ${e.message}`),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:e,sourceBufferName:s,mimeType:o})}}}get mediaSrc(){var e;const t=(null==(e=this.media)?void 0:e.firstChild)||this.media;return null==t?void 0:t.src}_onSBUpdateStart(e){const{operationQueue:t}=this;t.current(e).onStart()}_onSBUpdateEnd(e){var t;if("closed"===(null==(t=this.mediaSource)?void 0:t.readyState))return void this.resetBuffer(e);const{operationQueue:i}=this;i.current(e).onComplete(),i.shiftAndExecuteNext(e)}_onSBUpdateError(e,t){var i;const r=new Error(`${e} SourceBuffer error. MediaSource readyState: ${null==(i=this.mediaSource)?void 0:i.readyState}`);this.error(`${r}`,t),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_APPENDING_ERROR,sourceBufferName:e,error:r,fatal:!1});const s=this.operationQueue.current(e);s&&s.onError(r)}removeExecutor(e,t,i){const{media:r,mediaSource:s,operationQueue:n,sourceBuffer:a}=this,o=a[e];if(!r||!s||!o)return this.warn(`Attempting to remove from the ${e} SourceBuffer, but it does not exist`),void n.shiftAndExecuteNext(e);const l=Ji(r.duration)?r.duration:1/0,h=Ji(s.duration)?s.duration:1/0,c=Math.max(0,t),d=Math.min(i,l,h);d>c&&(!o.ending||o.ended)?(o.ended=!1,this.log(`Removing [${c},${d}] from the ${e} SourceBuffer`),o.remove(c,d)):n.shiftAndExecuteNext(e)}appendExecutor(e,t){const i=this.sourceBuffer[t];if(i)i.ended=!1,i.appendBuffer(e);else if(!this.pendingTracks[t])throw new Error(`Attempting to append to the ${t} SourceBuffer, but it does not exist`)}blockBuffers(e,t=this.getSourceBufferTypes()){if(!t.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(e);const{operationQueue:i}=this,r=t.map((e=>i.appendBlocker(e)));Promise.all(r).then((()=>{e(),t.forEach((e=>{const t=this.sourceBuffer[e];null!=t&&t.updating||i.shiftAndExecuteNext(e)}))}))}getSourceBufferTypes(){return Object.keys(this.sourceBuffer)}addBufferListener(e,t,i){const r=this.sourceBuffer[e];if(!r)return;const s=i.bind(this,e);this.listeners[e].push({event:t,listener:s}),r.addEventListener(t,s)}removeBufferListeners(e){const t=this.sourceBuffer[e];t&&this.listeners[e].forEach((e=>{t.removeEventListener(e.event,e.listener)}))}},capLevelController:ph,errorController: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=lr.log.bind(lr,"[info]:"),this.warn=lr.warn.bind(lr,"[warning]:"),this.error=lr.error.bind(lr,"[error]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(tr.ERROR,this.onError,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){const e=this.hls;e&&(e.off(tr.ERROR,this.onError,this),e.off(tr.ERROR,this.onErrorOut,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}}startLoad(e){}stopLoad(){this.playlistError=0}getVariantLevelIndex(e){return(null==e?void 0:e.type)===hn?e.level:this.hls.loadLevel}onManifestLoading(){this.playlistError=0,this.penalizedRenditions={}}onLevelUpdated(){this.playlistError=0}onError(e,t){var i,r;if(t.fatal)return;const s=this.hls,n=t.context;switch(t.details){case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:return void(t.errorAction=this.getFragRetryOrSwitchAction(t));case rr.FRAG_PARSING_ERROR:if(null!=(i=t.frag)&&i.gap)return void(t.errorAction={action:ta,flags:na});case rr.FRAG_GAP:case rr.FRAG_DECRYPT_ERROR:return t.errorAction=this.getFragRetryOrSwitchAction(t),void(t.errorAction.action=ia);case rr.LEVEL_EMPTY_ERROR:case rr.LEVEL_PARSING_ERROR:{var a,o;const e=t.parent===hn?t.level:s.loadLevel;t.details===rr.LEVEL_EMPTY_ERROR&&null!=(a=t.context)&&null!=(o=a.levelDetails)&&o.live?t.errorAction=this.getPlaylistRetryOrSwitchAction(t,e):(t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,e))}return;case rr.LEVEL_LOAD_ERROR:case rr.LEVEL_LOAD_TIMEOUT:return void("number"==typeof(null==n?void 0:n.level)&&(t.errorAction=this.getPlaylistRetryOrSwitchAction(t,n.level)));case rr.AUDIO_TRACK_LOAD_ERROR:case rr.AUDIO_TRACK_LOAD_TIMEOUT:case rr.SUBTITLE_LOAD_ERROR:case rr.SUBTITLE_TRACK_LOAD_TIMEOUT:if(n){const e=s.levels[s.loadLevel];if(e&&(n.type===on&&e.hasAudioGroup(n.groupId)||n.type===ln&&e.hasSubtitleGroup(n.groupId)))return t.errorAction=this.getPlaylistRetryOrSwitchAction(t,s.loadLevel),t.errorAction.action=ia,void(t.errorAction.flags=aa)}return;case rr.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:{const e=s.levels[s.loadLevel],i=null==e?void 0:e.attrs["HDCP-LEVEL"];i?t.errorAction={action:ia,flags:oa,hdcpLevel:i}:this.keySystemError(t)}return;case rr.BUFFER_ADD_CODEC_ERROR:case rr.REMUX_ALLOC_ERROR:case rr.BUFFER_APPEND_ERROR:return void(t.errorAction=this.getLevelSwitchAction(t,null!=(r=t.level)?r:s.loadLevel));case rr.INTERNAL_EXCEPTION:case rr.BUFFER_APPENDING_ERROR:case rr.BUFFER_FULL_ERROR:case rr.LEVEL_SWITCH_ERROR:case rr.BUFFER_STALLED_ERROR:case rr.BUFFER_SEEK_OVER_HOLE:case rr.BUFFER_NUDGE_ON_STALL:return void(t.errorAction={action:ta,flags:na})}t.type===ir.KEY_SYSTEM_ERROR&&this.keySystemError(t)}keySystemError(e){const t=this.getVariantLevelIndex(e.frag);e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,t)}getPlaylistRetryOrSwitchAction(e,t){const i=Yn(this.hls.config.playlistLoadPolicy,e),r=this.playlistError++;if(Xn(i,r,Wn(e),e.response))return{action:sa,flags:na,retryConfig:i,retryCount:r};const s=this.getLevelSwitchAction(e,t);return i&&(s.retryConfig=i,s.retryCount=r),s}getFragRetryOrSwitchAction(e){const t=this.hls,i=this.getVariantLevelIndex(e.frag),r=t.levels[i],{fragLoadPolicy:s,keyLoadPolicy:n}=t.config,a=Yn(e.details.startsWith("key")?n:s,e),o=t.levels.reduce(((e,t)=>e+t.fragmentError),0);if(r){e.details!==rr.FRAG_GAP&&r.fragmentError++;if(Xn(a,o,Wn(e),e.response))return{action:sa,flags:na,retryConfig:a,retryCount:o}}const l=this.getLevelSwitchAction(e,i);return a&&(l.retryConfig=a,l.retryCount=o),l}getLevelSwitchAction(e,t){const i=this.hls;null==t&&(t=i.loadLevel);const r=this.hls.levels[t];if(r){var s,n;const t=e.details;r.loadError++,t===rr.BUFFER_APPEND_ERROR&&r.fragmentError++;let l=-1;const{levels:h,loadLevel:c,minAutoLevel:d,maxAutoLevel:u}=i;i.autoLevelEnabled||(i.loadLevel=-1);const f=null==(s=e.frag)?void 0:s.type,g=(f===cn&&t===rr.FRAG_PARSING_ERROR||"audio"===e.sourceBufferName&&(t===rr.BUFFER_ADD_CODEC_ERROR||t===rr.BUFFER_APPEND_ERROR))&&h.some((({audioCodec:e})=>r.audioCodec!==e)),m="video"===e.sourceBufferName&&(t===rr.BUFFER_ADD_CODEC_ERROR||t===rr.BUFFER_APPEND_ERROR)&&h.some((({codecSet:e,audioCodec:t})=>r.codecSet!==e&&r.audioCodec===t)),{type:p,groupId:v}=null!=(n=e.context)?n:{};for(let i=h.length;i--;){const s=(i+c)%h.length;if(s!==c&&s>=d&&s<=u&&0===h[s].loadError){var a,o;const i=h[s];if(t===rr.FRAG_GAP&&f===hn&&e.frag){const t=h[s].details;if(t){const i=Jn(e.frag,t.fragments,e.frag.start);if(null!=i&&i.gap)continue}}else{if(p===on&&i.hasAudioGroup(v)||p===ln&&i.hasSubtitleGroup(v))continue;if(f===cn&&null!=(a=r.audioGroups)&&a.some((e=>i.hasAudioGroup(e)))||f===dn&&null!=(o=r.subtitleGroups)&&o.some((e=>i.hasSubtitleGroup(e)))||g&&r.audioCodec===i.audioCodec||!g&&r.audioCodec!==i.audioCodec||m&&r.codecSet===i.codecSet)continue}l=s;break}}if(l>-1&&i.loadLevel!==l)return e.levelRetry=!0,this.playlistError=0,{action:ia,flags:na,nextAutoLevel:l}}return{action:ia,flags:aa}}onErrorOut(e,t){var i;switch(null==(i=t.errorAction)?void 0:i.action){case ta:break;case ia:this.sendAlternateToPenaltyBox(t),t.errorAction.resolved||t.details===rr.FRAG_GAP?/MediaSource readyState: ended/.test(t.error.message)&&(this.warn(`MediaSource ended after "${t.sourceBufferName}" sourceBuffer append error. Attempting to recover from media error.`),this.hls.recoverMediaError()):t.fatal=!0}t.fatal&&this.hls.stopLoad()}sendAlternateToPenaltyBox(e){const t=this.hls,i=e.errorAction;if(!i)return;const{flags:r,hdcpLevel:s,nextAutoLevel:n}=i;switch(r){case na:this.switchLevel(e,n);break;case oa:s&&(t.maxHdcpLevel=Dn[Dn.indexOf(s)-1],i.resolved=!0),this.warn(`Restricting playback to HDCP-LEVEL of "${t.maxHdcpLevel}" or lower`)}i.resolved||this.switchLevel(e,n)}switchLevel(e,t){void 0!==t&&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)}},fpsController: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(tr.MEDIA_ATTACHING,this.onMediaAttaching,this)}unregisterListeners(){this.hls.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(e,t){const i=this.hls.config;if(i.capLevelOnFPSDrop){const e=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=e,e&&"function"==typeof e.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),i.fpsDroppedMonitoringPeriod)}}checkFPS(e,t,i){const r=performance.now();if(t){if(this.lastTime){const e=r-this.lastTime,s=i-this.lastDroppedFrames,n=t-this.lastDecodedFrames,a=1e3*s/e,o=this.hls;if(o.trigger(tr.FPS_DROP,{currentDropped:s,currentDecoded:n,totalDroppedFrames:i}),a>0&&s>o.config.fpsDroppedMonitoringThreshold*n){let e=o.currentLevel;lr.warn("drop FPS ratio greater than max allowed value for currentLevel: "+e),e>0&&(-1===o.autoLevelCapping||o.autoLevelCapping>=e)&&(e-=1,o.trigger(tr.FPS_DROP_LEVEL_CAPPING,{level:e,droppedLevel:o.currentLevel}),o.autoLevelCapping=e,this.streamController.nextLevelSwitch())}}this.lastTime=r,this.lastDroppedFrames=i,this.lastDecodedFrames=t}}checkFPSInterval(){const e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){const t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)}},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:Mr,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableID3MetadataCues:!0,useMediaCapabilities:!0,certLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null}},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},{cueHandler:fc,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:class extends no{constructor(e,t,i){super(e,t,i,"[subtitle-stream-controller]",dn),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this._registerListeners()}onHandlerDestroying(){this._unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}_registerListeners(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.ERROR,this.onError,this),e.on(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(tr.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(tr.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this)}_unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.ERROR,this.onError,this),e.off(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(tr.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(tr.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.off(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this)}startLoad(e){this.stopLoad(),this.state=qa,this.setInterval(500),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){const{frag:i,success:r}=t;if(this.fragPrevious=i,this.state=qa,!r)return;const s=this.tracksBuffered[this.currentTrackId];if(!s)return;let n;const a=i.start;for(let e=0;e=s[e].start&&a<=s[e].end){n=s[e];break}const o=i.start+i.duration;n?n.end=o:(n={start:a,end:o},s.push(n)),this.fragmentTracker.fragBuffered(i),this.fragBufferedComplete(i,null)}onBufferFlushing(e,t){const{startOffset:i,endOffset:r}=t;if(0===i&&r!==Number.POSITIVE_INFINITY){const e=r-1;if(e<=0)return;t.endOffsetSubtitles=Math.max(0,e),this.tracksBuffered.forEach((t=>{for(let i=0;inew Fn(e))):(this.tracksBuffered=[],this.levels=t.map((e=>{const t=new Fn(e);return this.tracksBuffered[t.id]=[],t})),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,dn),this.fragPrevious=null,this.mediaBuffer=null)}onSubtitleTrackSwitch(e,t){var i;if(this.currentTrackId=t.id,null==(i=this.levels)||!i.length||-1===this.currentTrackId)return void this.clearInterval();const r=this.levels[this.currentTrackId];null!=r&&r.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,r&&this.setInterval(500)}onSubtitleTrackLoaded(e,t){var i;const{currentTrackId:r,levels:s}=this,{details:n,id:a}=t;if(!s)return void this.warn(`Subtitle tracks were reset while loading level ${a}`);const o=s[a];if(a>=s.length||!o)return;this.log(`Subtitle track ${a} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""},duration:${n.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let l=0;if(n.live||null!=(i=o.details)&&i.live){const e=this.mainDetails;if(n.deltaUpdateFailed||!e)return;const t=e.fragments[0];var h;if(o.details)l=this.alignPlaylists(n,o.details,null==(h=this.levelLastLoaded)?void 0:h.details),0===l&&t&&(l=t.start,Kn(n,l));else n.hasProgramDateTime&&e.hasProgramDateTime?(Fa(n,e),l=n.fragments[0].start):t&&(l=t.start,Kn(n,l))}if(o.details=n,this.levelLastLoaded=o,a===r&&(this.startFragRequested||!this.mainDetails&&n.live||this.setStartPosition(this.mainDetails||n,l),this.tick(),n.live&&!this.fragCurrent&&this.media&&this.state===qa)){Jn(null,n.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),o.details=void 0)}}_handleFragmentLoadComplete(e){const{frag:t,payload:i}=e,r=t.decryptdata,s=this.hls;if(!this.fragContextChanged(t)&&i&&i.byteLength>0&&null!=r&&r.key&&r.iv&&"AES-128"===r.method){const e=performance.now();this.decrypter.decrypt(new Uint8Array(i),r.key.buffer,r.iv.buffer).catch((e=>{throw s.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.FRAG_DECRYPT_ERROR,fatal:!1,error:e,reason:e.message,frag:t}),e})).then((i=>{const r=performance.now();s.trigger(tr.FRAG_DECRYPTED,{frag:t,payload:i,stats:{tstart:e,tdecrypt:r}})})).catch((e=>{this.warn(`${e.name}: ${e.message}`),this.state=qa}))}}doTick(){if(this.media){if(this.state===qa){const{currentTrackId:e,levels:t}=this,i=null==t?void 0:t[e];if(!i||!t.length||!i.details)return;const{config:r}=this,s=this.getLoadPosition(),n=xa.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],s,r.maxBufferHole),{end:a,len:o}=n,l=this.getFwdBufferInfo(this.media,hn),h=i.details;if(o>this.getMaxBufferLength(null==l?void 0:l.len)+h.levelTargetDuration)return;const c=h.fragments,d=c.length,u=h.edge;let f=null;const g=this.fragPrevious;if(au-e?0:e;f=Jn(g,c,Math.max(c[0].start,a),t),!f&&g&&g.startthis.pollTrackChange(0),this.useTextTrackPolling=!1,this.subtitlePollingInterval=-1,this._subtitleDisplay=!0,this.onTextTracksChanged=()=>{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let e=null;const t=Tn(this.media.textTracks);for(let i=0;i-1&&this.toggleTrackModes()}registerListeners(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVEL_LOADING,this.onLevelLoading,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVEL_LOADING,this.onLevelLoading,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(tr.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);Tn(this.media.textTracks).forEach((e=>{vn(e)})),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){const{id:i,groupId:r,details:s}=t,n=this.tracksInGroup[i];if(!n||n.groupId!==r)return void this.warn(`Subtitle track with id:${i} and group:${r} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=t.details,this.log(`Subtitle track ${i} "${n.name}" lang:${n.lang} group:${r} loaded [${s.startSN}-${s.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.subtitleGroups||null,r=this.groupIds;let s=this.currentTrack;if(!i||(null==r?void 0:r.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==r?void 0:r.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!s&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.subtitlePreference;if(!s&&t){this.selectDefaultTrack=!1;const i=va(t,e);if(i>-1)s=e[i];else{const e=va(t,this.tracks);s=this.tracks[e]}}let r=this.findTrackId(s);-1===r&&s&&(r=this.findTrackId(null));const n={subtitleTracks:e};this.log(`Updating subtitle tracks, ${e.length} track(s) found in "${null==i?void 0:i.join(",")}" group-id`),this.hls.trigger(tr.SUBTITLE_TRACKS_UPDATED,n),-1!==r&&-1===this.trackId&&this.setSubtitleTrack(r)}else this.shouldReloadPlaylist(s)&&this.setSubtitleTrack(this.trackId)}findTrackId(e){const t=this.tracksInGroup,i=this.selectDefaultTrack;for(let r=0;r-1){const e=this.tracksInGroup[r];return this.setSubtitleTrack(r),e}if(i)return null;{const i=va(e,t);if(i>-1)return t[i]}}}return null}loadPlaylist(e){super.loadPlaylist();const t=this.currentTrack;if(this.shouldLoadPlaylist(t)&&t){const i=t.id,r=t.groupId;let s=t.url;if(e)try{s=e.addDirectives(s)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}this.log(`Loading subtitle playlist for id ${i}`),this.hls.trigger(tr.SUBTITLE_TRACK_LOADING,{url:s,id:i,groupId:r,deliveryDirectives:e||null})}}toggleTrackModes(){const{media:e}=this;if(!e)return;const t=Tn(e.textTracks),i=this.currentTrack;let r;if(i&&(r=t.filter((e=>vl(i,e)))[0],r||this.warn(`Unable to find subtitle TextTrack with name "${i.name}" and language "${i.lang}"`)),[].slice.call(t).forEach((e=>{"disabled"!==e.mode&&e!==r&&(e.mode="disabled")})),r){const e=this.subtitleDisplay?"showing":"hidden";r.mode!==e&&(r.mode=e)}}setSubtitleTrack(e){const t=this.tracksInGroup;if(!this.media)return void(this.queuedDefaultTrack=e);if(e<-1||e>=t.length||!Ji(e))return void this.warn(`Invalid subtitle track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,r=t[e]||null;if(this.trackId=e,this.currentTrack=r,this.toggleTrackModes(),!r)return void this.hls.trigger(tr.SUBTITLE_TRACK_SWITCH,{id:e});const s=!!r.details&&!r.details.live;if(e===this.trackId&&r===i&&s)return;this.log(`Switching to subtitle-track ${e}`+(r?` "${r.name}" lang:${r.lang} group:${r.groupId}`:""));const{id:n,groupId:a="",name:o,type:l,url:h}=r;this.hls.trigger(tr.SUBTITLE_TRACK_SWITCH,{id:n,groupId:a,name:o,type:l,url:h});const c=this.switchParams(r.url,null==i?void 0:i.details,r.details);this.loadPlaylist(c)}},timelineController: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={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},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(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(tr.FRAG_LOADING,this.onFragLoading,this),e.on(tr.FRAG_LOADED,this.onFragLoaded,this),e.on(tr.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(tr.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(tr.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(tr.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(tr.FRAG_LOADING,this.onFragLoading,this),e.off(tr.FRAG_LOADED,this.onFragLoaded,this),e.off(tr.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(tr.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(tr.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(tr.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(tr.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)){const e=new Gl(this,"textTrack1"),t=new Gl(this,"textTrack2"),i=new Gl(this,"textTrack3"),r=new Gl(this,"textTrack4");this.cea608Parser1=new Ul(1,e,t),this.cea608Parser2=new Ul(3,i,r)}}addCues(e,t,i,r,s){let n=!1;for(let e=s.length;e--;){const r=s[e],c=(a=r[0],o=r[1],l=t,h=i,Math.min(o,h)-Math.max(a,l));if(c>=0&&(r[0]=Math.min(r[0],t),r[1]=Math.max(r[1],i),n=!0,c/(i-t)>.5))return}var a,o,l,h;if(n||s.push([t,i]),this.config.renderTextTracksNatively){const s=this.captionsTracks[e];this.Cues.newCue(s,t,i,r)}else{const s=this.Cues.newCue(null,t,i,r);this.hls.trigger(tr.CUES_PARSED,{type:"captions",cues:s,track:e})}}onInitPtsFound(e,{frag:t,id:i,initPTS:r,timescale:s}){const{unparsedVttFrags:n}=this;"main"===i&&(this.initPTS[t.cc]={baseTime:r,timescale:s}),n.length&&(this.unparsedVttFrags=[],n.forEach((e=>{this.onFragLoaded(tr.FRAG_LOADED,e)})))}getExistingTrack(e,t){const{media:i}=this;if(i)for(let r=0;r{vn(e[t]),delete e[t]})),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:e}=this;if(!e)return;const t=e.textTracks;if(t)for(let e=0;ee.textCodec===rh));if(this.config.enableWebVTT||r&&this.config.enableIMSC1){if(ml(this.tracks,i))return void(this.tracks=i);if(this.textTracks=[],this.tracks=i,this.config.renderTextTracksNatively){const e=this.media,t=e?Tn(e.textTracks):null;if(this.tracks.forEach(((e,i)=>{let r;if(t){let i=null;for(let r=0;rnull!==e)).map((e=>e.label));e.length&&lr.warn(`Media element contains unused subtitle tracks: ${e.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const e=this.tracks.map((e=>({label:e.name,kind:e.type.toLowerCase(),default:e.default,subtitleTrack:e})));this.hls.trigger(tr.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:e})}}}onManifestLoaded(e,t){this.config.enableCEA708Captions&&t.captions&&t.captions.forEach((e=>{const t=/(?:CC|SERVICE)([1-4])/.exec(e.instreamId);if(!t)return;const i=`textTrack${t[1]}`,r=this.captionsProperties[i];r&&(r.label=e.name,e.lang&&(r.languageCode=e.lang),r.media=e)}))}closedCaptionsForLevel(e){const t=this.hls.levels[e.level];return null==t?void 0:t.attrs["CLOSED-CAPTIONS"]}onFragLoading(e,t){if(this.enabled&&t.frag.type===hn){var i,r;const{cea608Parser1:e,cea608Parser2:s,lastSn:n}=this,{cc:a,sn:o}=t.frag,l=null!=(i=null==(r=t.part)?void 0:r.index)?i:-1;e&&s&&(o!==n+1||o===n&&l!==this.lastPartIndex+1||a!==this.lastCc)&&(e.reset(),s.reset()),this.lastCc=a,this.lastSn=o,this.lastPartIndex=l}}onFragLoaded(e,t){const{frag:i,payload:r}=t;if(i.type===dn)if(r.byteLength){const e=i.decryptdata,s="stats"in t;if(null==e||!e.encrypted||s){const e=this.tracks[i.level],s=this.vttCCs;s[i.cc]||(s[i.cc]={start:i.start,prevCC:this.prevCC,new:!0},this.prevCC=i.cc),e&&e.textCodec===rh?this._parseIMSC1(i,r):this._parseVTTs(t)}}else this.hls.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:new Error("Empty subtitle payload")})}_parseIMSC1(e,t){const i=this.hls;oh(t,this.initPTS[e.cc],(t=>{this._appendCues(t,e.level),i.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:e})}),(t=>{lr.log(`Failed to parse IMSC1: ${t}`),i.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e,error:t})}))}_parseVTTs(e){var t;const{frag:i,payload:r}=e,{initPTS:s,unparsedVttFrags:n}=this,a=s.length-1;if(!s[i.cc]&&-1===a)return void n.push(e);const o=this.hls;ih(null!=(t=i.initSegment)&&t.data?Es(i.initSegment.data,new Uint8Array(r)):r,this.initPTS[i.cc],this.vttCCs,i.cc,i.start,(e=>{this._appendCues(e,i.level),o.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:i})}),(t=>{const s="Missing initPTS for VTT MPEGTS"===t.message;s?n.push(e):this._fallbackToIMSC1(i,r),lr.log(`Failed to parse VTT cue: ${t}`),s&&a>i.cc||o.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:t})}))}_fallbackToIMSC1(e,t){const i=this.tracks[e.level];i.textCodec||oh(t,this.initPTS[e.cc],(()=>{i.textCodec=rh,this._parseIMSC1(e,t)}),(()=>{i.textCodec="wvtt"}))}_appendCues(e,t){const i=this.hls;if(this.config.renderTextTracksNatively){const i=this.textTracks[t];if(!i||"disabled"===i.mode)return;e.forEach((e=>pn(i,e)))}else{const r=this.tracks[t];if(!r)return;const s=r.default?"default":"subtitles"+t;i.trigger(tr.CUES_PARSED,{type:"subtitles",cues:e,track:s})}}onFragDecrypted(e,t){const{frag:i}=t;i.type===dn&&this.onFragLoaded(tr.FRAG_LOADED,t)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(e,t){this.initCea608Parsers();const{cea608Parser1:i,cea608Parser2:r}=this;if(!this.enabled||!i||!r)return;const{frag:s,samples:n}=t;if(s.type!==hn||"NONE"!==this.closedCaptionsForLevel(s))for(let e=0;eyn(e[r],t,i)))}if(this.config.renderTextTracksNatively&&0===t&&void 0!==r){const{textTracks:e}=this;Object.keys(e).forEach((i=>yn(e[i],t,r)))}}}extractCea608Data(e){const t=[[],[]],i=31&e[0];let r=2;for(let s=0;s0&&-1===e?(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t,this.state=qa):(this.loadedmetadata=!1,this.state=Ja),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}doTick(){switch(this.state){case qa:this.doTickIdle();break;case Ja:{var e;const{levels:t,trackId:i}=this,r=null==t||null==(e=t[i])?void 0:e.details;if(r){if(this.waitForCdnTuneIn(r))break;this.state=ro}break}case Qa:{var t;const e=performance.now(),i=this.retryDate;if(!i||e>=i||null!=(t=this.media)&&t.seeking){const{levels:e,trackId:t}=this;this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded((null==e?void 0:e[t])||null),this.state=qa}break}case ro:{const e=this.waitingData;if(e){const{frag:t,part:i,cache:r,complete:s}=e;if(void 0!==this.initPTS[t.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=Xa;const e={frag:t,part:i,payload:r.flush(),networkDetails:null};this._handleFragmentLoadProgress(e),s&&super._handleFragmentLoadComplete(e)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log(`Waiting fragment cc (${t.cc}) cancelled because video is at cc ${this.videoTrackCC}`),this.clearWaitingFragment();else{const e=this.getLoadPosition(),i=xa.bufferInfo(this.mediaBuffer,e,this.config.maxBufferHole);Zn(i.end,this.config.maxFragLookUpTolerance,t)<0&&(this.log(`Waiting fragment cc (${t.cc}) @ ${t.start} cancelled because another fragment at ${i.end} is needed`),this.clearWaitingFragment())}}else this.state=qa}}this.onTickEnd()}clearWaitingFragment(){const e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=qa)}resetLoadingState(){this.clearWaitingFragment(),super.resetLoadingState()}onTickEnd(){const{media:e}=this;null!=e&&e.readyState&&(this.lastCurrentTime=e.currentTime)}doTickIdle(){const{hls:e,levels:t,media:i,trackId:r}=this,s=e.config;if(!i&&(this.startFragRequested||!s.startFragPrefetch)||null==t||!t[r])return;const n=t[r],a=n.details;if(!a||a.live&&this.levelLastLoaded!==n||this.waitForCdnTuneIn(a))return void(this.state=Ja);const o=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&o&&(this.bufferFlushed=!1,this.afterBufferFlushed(o,mr,cn));const l=this.getFwdBufferInfo(o,cn);if(null===l)return;const{bufferedTrack:h,switchingTrack:c}=this;if(!c&&this._streamEnded(l,a))return e.trigger(tr.BUFFER_EOS,{type:"audio"}),void(this.state=to);const d=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,hn),u=l.len,f=this.getMaxBufferLength(null==d?void 0:d.len),g=a.fragments,m=g[0].start;let p=this.flushing?this.getLoadPosition():l.end;if(c&&i){const e=this.getLoadPosition();h&&!pl(c.attrs,h.attrs)&&(p=e),a.PTSKnown&&em||l.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),i.currentTime=m+.05)}if(u>=f&&!c&&pd.end+a.targetduration;if(T||(null==d||!d.len)&&l.len){const e=this.getAppendedFrag(v.start,hn);if(null===e)return;if(y||(y=!!e.gap||!!T&&0===d.len),T&&!y||y&&l.nextStart&&l.nextStartnew Fn(e)))}onAudioTrackSwitching(e,t){const i=!!t.url;this.trackId=t.id;const{fragCurrent:r}=this;r&&(r.abortRequests(),this.removeUnbufferedFrags(r.start)),this.resetLoadingState(),i?this.setInterval(100):this.resetTransmuxer(),i?(this.switchingTrack=t,this.state=qa,this.flushAudioIfNeeded(t)):(this.switchingTrack=null,this.bufferedTrack=t,this.state=Ya),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,null!==this.cachedTrackLoadedData&&(this.hls.trigger(tr.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)}onAudioTrackLoaded(e,t){var i;if(null==this.mainDetails)return void(this.cachedTrackLoadedData=t);const{levels:r}=this,{details:s,id:n}=t;if(!r)return void this.warn(`Audio tracks were reset while loading level ${n}`);this.log(`Audio track ${n} loaded [${s.startSN},${s.endSN}]${s.lastPartSn?`[part-${s.lastPartSn}-${s.lastPartIndex}]`:""},duration:${s.totalduration}`);const a=r[n];let o=0;if(s.live||null!=(i=a.details)&&i.live){this.checkLiveUpdate(s);const e=this.mainDetails;if(s.deltaUpdateFailed||!e)return;var l;if(!a.details&&s.hasProgramDateTime&&e.hasProgramDateTime)Fa(s,e),o=s.fragments[0].start;else o=this.alignPlaylists(s,a.details,null==(l=this.levelLastLoaded)?void 0:l.details)}a.details=s,this.levelLastLoaded=a,this.startFragRequested||!this.mainDetails&&s.live||this.setStartPosition(this.mainDetails||s,o),this.state!==Ja||this.waitForCdnTuneIn(s)||(this.state=qa),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:r,payload:s}=e,{config:n,trackId:a,levels:o}=this;if(!o)return void this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const l=o[a];if(!l)return void this.warn("Audio track is undefined on fragment load progress");const h=l.details;if(!h)return this.warn("Audio track details undefined on fragment load progress"),void this.removeUnbufferedFrags(i.start);const c=n.defaultAudioCodec||l.audioCodec||"mp4a.40.2";let d=this.transmuxer;d||(d=this.transmuxer=new gl(this.hls,cn,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));const u=this.initPTS[i.cc],f=null==(t=i.initSegment)?void 0:t.data;if(void 0!==u){const e=!1,t=r?r.index:-1,n=-1!==t,a=new Ca(i.level,i.sn,i.stats.chunkCount,s.byteLength,t,n);d.push(s,f,c,"",i,r,h.totalduration,e,a,u)}else{this.log(`Unknown video PTS for cc ${i.cc}, waiting for video PTS before demuxing audio frag ${i.sn} of [${h.startSN} ,${h.endSN}],track ${a}`);const{cache:e}=this.waitingData=this.waitingData||{frag:i,part:r,cache:new ao,complete:!1};e.push(new Uint8Array(s)),this.waitingVideoCC=this.videoTrackCC,this.state=ro}}_handleFragmentLoadComplete(e){this.waitingData?this.waitingData.complete=!0:super._handleFragmentLoadComplete(e)}onBufferReset(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1}onBufferCreated(e,t){const i=t.tracks.audio;i&&(this.mediaBuffer=i.buffer||null),t.tracks.video&&(this.videoBuffer=t.tracks.video.buffer||null)}onFragBuffered(e,t){const{frag:i,part:r}=t;if(i.type===cn)if(this.fragContextChanged(i))this.warn(`Fragment ${i.sn}${r?" p: "+r.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);else{if("initSegment"!==i.sn){this.fragPrevious=i;const e=this.switchingTrack;e&&(this.bufferedTrack=e,this.switchingTrack=null,this.hls.trigger(tr.AUDIO_TRACK_SWITCHED,qi({},e)))}this.fragBufferedComplete(i,r)}else if(!this.loadedmetadata&&i.type===hn){const e=this.videoBuffer||this.media;if(e){xa.getBuffered(e).length&&(this.loadedmetadata=!0)}}}onError(e,t){var i;if(t.fatal)this.state=io;else switch(t.details){case rr.FRAG_GAP:case rr.FRAG_PARSING_ERROR:case rr.FRAG_DECRYPT_ERROR:case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(cn,t);break;case rr.AUDIO_TRACK_LOAD_ERROR:case rr.AUDIO_TRACK_LOAD_TIMEOUT:case rr.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==Ja||(null==(i=t.context)?void 0:i.type)!==on||(this.state=qa);break;case rr.BUFFER_APPEND_ERROR:case rr.BUFFER_FULL_ERROR:if(!t.parent||"audio"!==t.parent)return;if(t.details===rr.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&(this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"));break;case rr.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}onBufferFlushing(e,{type:t}){t!==pr&&(this.flushing=!0)}onBufferFlushed(e,{type:t}){if(t!==pr){this.flushing=!1,this.bufferFlushed=!0,this.state===to&&(this.state=qa);const e=this.mediaBuffer||this.media;e&&(this.afterBufferFlushed(e,t,cn),this.tick())}}_handleTransmuxComplete(e){var t;const i="audio",{hls:r}=this,{remuxResult:s,chunkMeta:n}=e,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{details:c}=h,{audio:d,text:u,id3:f,initSegment:g}=s;if(!this.fragContextChanged(o)&&c){if(this.state=Za,this.switchingTrack&&d&&this.completeAudioSwitch(this.switchingTrack),null!=g&&g.tracks){const e=o.initSegment||o;this._bufferInitSegment(h,g.tracks,e,n),r.trigger(tr.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:g.tracks})}if(d){const{startPTS:e,endPTS:t,startDTS:i,endDTS:r}=d;l&&(l.elementaryStreams[mr]={startPTS:e,endPTS:t,startDTS:i,endDTS:r}),o.setElementaryStreamInfo(mr,e,t,i,r),this.bufferFragmentData(d,o,l,n)}if(null!=f&&null!=(t=f.samples)&&t.length){const e=Qi({id:i,frag:o,details:c},f);r.trigger(tr.FRAG_PARSING_METADATA,e)}if(u){const e=Qi({id:i,frag:o,details:c},u);r.trigger(tr.FRAG_PARSING_USERDATA,e)}}else this.fragmentTracker.removeFragment(o)}_bufferInitSegment(e,t,i,r){if(this.state!==Za)return;t.video&&delete t.video;const s=t.audio;if(!s)return;s.id="audio";const n=e.audioCodec;this.log(`Init audio buffer, container:${s.container}, codecs[level/parsed]=[${n}/${s.codec}]`),n&&1===n.split(",").length&&(s.levelCodec=n),this.hls.trigger(tr.BUFFER_CODECS,t);const a=s.initSegment;if(null!=a&&a.byteLength){const e={type:"audio",frag:i,part:null,chunkMeta:r,parent:i.type,data:a};this.hls.trigger(tr.BUFFER_APPENDING,e)}this.tickImmediate()}loadFragment(e,t,i){const r=this.fragmentTracker.getState(e);var s;if(this.fragCurrent=e,this.switchingTrack||r===ba||r===wa)if("initSegment"===e.sn)this._loadInitSegment(e,t);else if(null!=(s=t.details)&&s.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=ro;const i=this.mainDetails;i&&i.fragments[0].start!==t.details.fragments[0].start&&Fa(t.details,i)}else this.startFragRequested=!0,super.loadFragment(e,t,i);else this.clearTrackerIfNeeded(e)}flushAudioIfNeeded(e){const{media:t,bufferedTrack:i}=this,r=null==i?void 0:i.attrs,s=e.attrs;t&&r&&(r.CHANNELS!==s.CHANNELS||i.name!==e.name||i.lang!==e.lang)&&(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null)}completeAudioSwitch(e){const{hls:t}=this;this.flushAudioIfNeeded(e),this.bufferedTrack=e,this.switchingTrack=null,t.trigger(tr.AUDIO_TRACK_SWITCHED,qi({},e))}},audioTrackController:class extends la{constructor(e){super(e,"[audio-track-controller]"),this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVEL_LOADING,this.onLevelLoading,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVEL_LOADING,this.onLevelLoading,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(tr.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.audioTracks||[]}onAudioTrackLoaded(e,t){const{id:i,groupId:r,details:s}=t,n=this.tracksInGroup[i];if(!n||n.groupId!==r)return void this.warn(`Audio track with id:${i} and group:${r} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=t.details,this.log(`Audio track ${i} "${n.name}" lang:${n.lang} group:${r} loaded [${s.startSN}-${s.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.audioGroups||null,r=this.groupIds;let s=this.currentTrack;if(!i||(null==r?void 0:r.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==r?void 0:r.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!s&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.audioPreference;if(!s&&t){const i=va(t,e,Ta);if(i>-1)s=e[i];else{const e=va(t,this.tracks);s=this.tracks[e]}}let r=this.findTrackId(s);-1===r&&s&&(r=this.findTrackId(null));const a={audioTracks:e};this.log(`Updating audio tracks, ${e.length} track(s) found in group(s): ${null==i?void 0:i.join(",")}`),this.hls.trigger(tr.AUDIO_TRACKS_UPDATED,a);const o=this.trackId;if(-1!==r&&-1===o)this.setAudioTrack(r);else if(e.length&&-1===o){var n;const t=new Error(`No audio track selected for current audio group-ID(s): ${null==(n=this.groupIds)?void 0:n.join(",")} track count: ${e.length}`);this.warn(t.message),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:t})}}else this.shouldReloadPlaylist(s)&&this.setAudioTrack(this.trackId)}onError(e,t){!t.fatal&&t.context&&(t.context.type!==on||t.context.id!==this.trackId||this.groupIds&&-1===this.groupIds.indexOf(t.context.groupId)||(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){const t=this.hls;if(t.config.audioPreference=e,e){const i=this.allAudioTracks;if(this.selectDefaultTrack=!1,i.length){const r=this.currentTrack;if(r&&ya(e,r,Ta))return r;const s=va(e,this.tracksInGroup,Ta);if(s>-1){const e=this.tracksInGroup[s];return this.setAudioTrack(s),e}if(r){let r=t.loadLevel;-1===r&&(r=t.firstAutoLevel);const s=function(e,t,i,r,s){const n=t[r],a=t.reduce(((e,t,i)=>{const r=t.uri;return(e[r]||(e[r]=[])).push(i),e}),{})[n.uri];a.length>1&&(r=Math.max.apply(Math,a));const o=n.videoRange,l=n.frameRate,h=n.codecSet.substring(0,4),c=Ea(t,r,(t=>{if(t.videoRange!==o||t.frameRate!==l||t.codecSet.substring(0,4)!==h)return!1;const r=t.audioGroups,n=i.filter((e=>!r||-1!==r.indexOf(e.groupId)));return va(e,n,s)>-1}));return c>-1?c:Ea(t,r,(t=>{const r=t.audioGroups,n=i.filter((e=>!r||-1!==r.indexOf(e.groupId)));return va(e,n,s)>-1}))}(e,t.levels,i,r,Ta);if(-1===s)return null;t.nextLoadLevel=s}if(e.channels||e.audioCodec){const t=va(e,i);if(t>-1)return i[t]}}}return null}setAudioTrack(e){const t=this.tracksInGroup;if(e<0||e>=t.length)return void this.warn(`Invalid audio track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,r=t[e],s=r.details&&!r.details.live;if(e===this.trackId&&r===i&&s)return;if(this.log(`Switching to audio-track ${e} "${r.name}" lang:${r.lang} group:${r.groupId} channels:${r.channels}`),this.trackId=e,this.currentTrack=r,this.hls.trigger(tr.AUDIO_TRACK_SWITCHING,qi({},r)),s)return;const n=this.switchParams(r.url,null==i?void 0:i.details,r.details);this.loadPlaylist(n)}findTrackId(e){const t=this.tracksInGroup;for(let i=0;i{this.initialized&&(this.starved=!0),this.buffering=!0},this.onPlaying=()=>{this.initialized||(this.initialized=!0),this.buffering=!1},this.applyPlaylistData=e=>{try{this.apply(e,{ot:Eh.MANIFEST,su:!this.initialized})}catch(e){lr.warn("Could not generate manifest CMCD data.",e)}},this.applyFragmentData=e=>{try{const t=e.frag,i=this.hls.levels[t.level],r=this.getObjectType(t),s={d:1e3*t.duration,ot:r};r!==Eh.VIDEO&&r!==Eh.AUDIO&&r!=Eh.MUXED||(s.br=i.bitrate/1e3,s.tb=this.getTopBandwidth(r)/1e3,s.bl=this.getBufferLength(r)),this.apply(e,s)}catch(e){lr.warn("Could not generate segment CMCD data.",e)}},this.hls=e;const t=this.config=e.config,{cmcd:i}=t;null!=i&&(t.pLoader=this.createPlaylistLoader(),t.fLoader=this.createFragmentLoader(),this.sid=i.sessionId||function(){try{return crypto.randomUUID()}catch(e){try{const e=URL.createObjectURL(new Blob),t=e.toString();return URL.revokeObjectURL(e),t.slice(t.lastIndexOf("/")+1)}catch(e){let t=(new Date).getTime();const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const i=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?i:3&i|8).toString(16)}));return i}}}(),this.cid=i.contentId,this.useHeaders=!0===i.useHeaders,this.includeKeys=i.includeKeys,this.registerListeners())}registerListeners(){const e=this.hls;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHED,this.onMediaDetached,this),e.on(tr.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){const e=this.hls;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHED,this.onMediaDetached,this),e.off(tr.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 i,r;this.audioBuffer=null==(i=t.tracks.audio)?void 0:i.buffer,this.videoBuffer=null==(r=t.tracks.video)?void 0:r.buffer}createData(){var e;return{v:1,sf:Sh.HLS,sid:this.sid,cid:this.cid,pr:null==(e=this.media)?void 0:e.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}}apply(e,t={}){Qi(t,this.createData());const i=t.ot===Eh.INIT||t.ot===Eh.VIDEO||t.ot===Eh.MUXED;this.starved&&i&&(t.bs=!0,t.su=!0,this.starved=!1),null==t.su&&(t.su=this.buffering);const{includeKeys:r}=this;r&&(t=Object.keys(t).reduce(((e,i)=>(r.includes(i)&&(e[i]=t[i]),e)),{})),this.useHeaders?(e.headers||(e.headers={}),ec(e.headers,t)):e.url=rc(e.url,t)}getObjectType(e){const{type:t}=e;return"subtitle"===t?Eh.TIMED_TEXT:"initSegment"===e.sn?Eh.INIT:"audio"===t?Eh.AUDIO:"main"===t?this.hls.audioTracks.length?Eh.VIDEO:Eh.MUXED:void 0}getTopBandwidth(e){let t,i=0;const r=this.hls;if(e===Eh.AUDIO)t=r.audioTracks;else{const e=r.maxAutoLevel,i=e>-1?e+1:r.levels.length;t=r.levels.slice(0,i)}for(const e of t)e.bitrate>i&&(i=e.bitrate);return i>0?i:NaN}getBufferLength(e){const t=this.hls.media,i=e===Eh.AUDIO?this.audioBuffer:this.videoBuffer;if(!i||!t)return NaN;return 1e3*xa.bufferInfo(i,t.currentTime,this.config.maxBufferHole).len}createPlaylistLoader(){const{pLoader:e}=this.config,t=this.applyPlaylistData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,r){t(e),this.loader.load(e,i,r)}}}createFragmentLoader(){const{fLoader:e}=this.config,t=this.applyFragmentData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,r){t(e),this.loader.load(e,i,r)}}}},contentSteeringController: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=lr.log.bind(lr,"[content-steering]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const e=this.hls;e&&(e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.ERROR,this.onError,this))}startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){const e=1e3*this.timeToLoad-(performance.now()-this.updated);if(e>0)return void this.scheduleRefresh(this.uri,e)}this.loadSteeringManifest(this.uri)}}stopLoad(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()}clearTimeout(){-1!==this.reloadTimer&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(e){const t=this.levels;t&&(this.levels=t.filter((t=>t!==e)))}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(e,t){const{contentSteering:i}=t;null!==i&&(this.pathwayId=i.pathwayId,this.uri=i.uri,this.started&&this.startLoad())}onManifestParsed(e,t){this.audioTracks=t.audioTracks,this.subtitleTracks=t.subtitleTracks}onError(e,t){const{errorAction:i}=t;if((null==i?void 0:i.action)===ia&&i.flags===aa){const e=this.levels;let r=this.pathwayPriority,s=this.pathwayId;if(t.context){const{groupId:i,pathwayId:r,type:n}=t.context;i&&e?s=this.getPathwayForGroupId(i,n,s):r&&(s=r)}s in this.penalizedPathways||(this.penalizedPathways[s]=performance.now()),!r&&e&&(r=e.reduce(((e,t)=>(-1===e.indexOf(t.pathwayId)&&e.push(t.pathwayId),e)),[])),r&&r.length>1&&(this.updatePathwayPriority(r),i.resolved=this.pathwayId!==s),i.resolved||lr.warn(`Could not resolve ${t.details} ("${t.error.message}") with content-steering for Pathway: ${s} levels: ${e?e.length:e} priorities: ${JSON.stringify(r)} penalized: ${JSON.stringify(this.penalizedPathways)}`)}}filterParsedLevels(e){this.levels=e;let t=this.getLevelsForPathway(this.pathwayId);if(0===t.length){const i=e[0].pathwayId;this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to "${i}"`),t=this.getLevelsForPathway(i),this.pathwayId=i}return t.length!==e.length?(this.log(`Found ${t.length}/${e.length} levels in Pathway "${this.pathwayId}"`),t):e}getLevelsForPathway(e){return null===this.levels?[]:this.levels.filter((t=>e===t.pathwayId))}updatePathwayPriority(e){let t;this.pathwayPriority=e;const i=this.penalizedPathways,r=performance.now();Object.keys(i).forEach((e=>{r-i[e]>3e5&&delete i[e]}));for(let r=0;r0){this.log(`Setting Pathway to "${s}"`),this.pathwayId=s,jn(t),this.hls.trigger(tr.LEVELS_UPDATED,{levels:t});const e=this.hls.levels[n];a&&e&&this.levels&&(e.attrs["STABLE-VARIANT-ID"]!==a.attrs["STABLE-VARIANT-ID"]&&e.bitrate!==a.bitrate&&this.log(`Unstable Pathways change from bitrate ${a.bitrate} to ${e.bitrate}`),this.hls.nextLoadLevel=n);break}}}getPathwayForGroupId(e,t,i){const r=this.getLevelsForPathway(i).concat(this.levels||[]);for(let i=0;i{const{ID:s,"BASE-ID":n,"URI-REPLACEMENT":a}=e;if(t.some((e=>e.pathwayId===s)))return;const o=this.getLevelsForPathway(n).map((e=>{const t=new dr(e.attrs);t["PATHWAY-ID"]=s;const n=t.AUDIO&&`${t.AUDIO}_clone_${s}`,o=t.SUBTITLES&&`${t.SUBTITLES}_clone_${s}`;n&&(i[t.AUDIO]=n,t.AUDIO=n),o&&(r[t.SUBTITLES]=o,t.SUBTITLES=o);const l=nc(e.uri,t["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",a),h=new Fn({attrs:t,audioCodec:e.audioCodec,bitrate:e.bitrate,height:e.height,name:e.name,url:l,videoCodec:e.videoCodec,width:e.width});if(e.audioGroups)for(let t=1;t{this.log(`Loaded steering manifest: "${r}"`);const n=e.data;if(1!==n.VERSION)return void this.log(`Steering VERSION ${n.VERSION} not supported!`);this.updated=performance.now(),this.timeToLoad=n.TTL;const{"RELOAD-URI":a,"PATHWAY-CLONES":o,"PATHWAY-PRIORITY":l}=n;if(a)try{this.uri=new self.URL(a,r).href}catch(e){return this.enabled=!1,void this.log(`Failed to parse Steering Manifest RELOAD-URI: ${a}`)}this.scheduleRefresh(this.uri||i.url),o&&this.clonePathways(o);const h={steeringManifest:n,url:r.toString()};this.hls.trigger(tr.STEERING_MANIFEST_LOADED,h),l&&this.updatePathwayPriority(l)},onError:(e,t,i,r)=>{if(this.log(`Error loading steering manifest: ${e.code} ${e.text} (${t.url})`),this.stopLoad(),410===e.code)return this.enabled=!1,void this.log(`Steering manifest ${t.url} no longer available`);let s=1e3*this.timeToLoad;if(429!==e.code)this.scheduleRefresh(this.uri||t.url,s);else{const e=this.loader;if("function"==typeof(null==e?void 0:e.getResponseHeader)){const t=e.getResponseHeader("Retry-After");t&&(s=1e3*parseFloat(t))}this.log(`Steering manifest ${t.url} rate limited`)}},onTimeout:(e,t,i)=>{this.log(`Timeout loading steering manifest (${t.url})`),this.scheduleRefresh(this.uri||t.url)}};this.log(`Requesting steering manifest: ${r}`),this.loader.load(s,o,l)}scheduleRefresh(e,t=1e3*this.timeToLoad){this.clearTimeout(),this.reloadTimer=self.setTimeout((()=>{var t;const i=null==(t=this.hls)?void 0:t.media;!i||i.ended?this.scheduleRefresh(e,1e3*this.timeToLoad):this.loadSteeringManifest(e)}),t)}}});function mc(e){return e&&"object"==typeof e?Array.isArray(e)?e.map(mc):Object.keys(e).reduce(((t,i)=>(t[i]=mc(e[i]),t)),{}):e}function pc(e){const t=e.loader;if(t!==hc&&t!==oc)lr.log("[config]: Custom loader detected, cannot enable progressive streaming"),e.progressive=!1;else{(function(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(e){}return!1})()&&(e.loader=hc,e.progressive=!0,e.enableSoftwareAES=!0,lr.log("[config]: Progressive streaming enabled, using FetchLoader"))}}let vc;class yc extends la{constructor(e,t){super(e,"[level-controller]"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=t,this._registerListeners()}_registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.on(tr.ERROR,this.onError,this)}_unregisterListeners(){const{hls:e}=this;e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.off(tr.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach((e=>{e.loadError=0,e.fragmentError=0})),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(e,t){this.resetLevels()}onManifestLoaded(e,t){const i=this.hls.config.preferManagedMediaSource,r=[],s={},n={};let a=!1,o=!1,l=!1;t.levels.forEach((e=>{var t,h;const c=e.attrs;let{audioCodec:d,videoCodec:u}=e;-1!==(null==(t=d)?void 0:t.indexOf("mp4a.40.34"))&&(vc||(vc=/chrome|firefox/i.test(navigator.userAgent)),vc&&(e.audioCodec=d=void 0)),d&&(e.audioCodec=d=Vs(d,i)),0===(null==(h=u)?void 0:h.indexOf("avc1"))&&(u=e.videoCodec=function(e){const t=e.split(".");if(t.length>2){let e=t.shift()+".";return e+=parseInt(t.shift()).toString(16),e+=("000"+parseInt(t.shift()).toString(16)).slice(-4),e}return e}(u));const{width:f,height:g,unknownCodecs:m}=e;if(a||(a=!(!f||!g)),o||(o=!!u),l||(l=!!d),null!=m&&m.length||d&&!Fs(d,"audio",i)||u&&!Fs(u,"video",i))return;const{CODECS:p,"FRAME-RATE":v,"HDCP-LEVEL":y,"PATHWAY-ID":T,RESOLUTION:E,"VIDEO-RANGE":S}=c,b=`${`${T||"."}-`}${e.bitrate}-${E}-${v}-${p}-${S}-${y}`;if(s[b])if(s[b].uri===e.url||e.attrs["PATHWAY-ID"])s[b].addGroupId("audio",c.AUDIO),s[b].addGroupId("text",c.SUBTITLES);else{const t=n[b]+=1;e.attrs["PATHWAY-ID"]=new Array(t+1).join(".");const i=new Fn(e);s[b]=i,r.push(i)}else{const t=new Fn(e);s[b]=t,n[b]=1,r.push(t)}})),this.filterAndSortMediaOptions(r,t,a,o,l)}filterAndSortMediaOptions(e,t,i,r,s){let n=[],a=[],o=e;if((i||r)&&s&&(o=o.filter((({videoCodec:e,videoRange:t,width:i,height:r})=>{return(!!e||!(!i||!r))&&(!!(s=t)&&xn.indexOf(s)>-1);var s}))),0===o.length)return void 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)}`);const e=new Error("no level with compatible codecs found in manifest");this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,error:e,reason:e.message})}}));if(t.audioTracks){const{preferManagedMediaSource:e}=this.hls.config;n=t.audioTracks.filter((t=>!t.audioCodec||Fs(t.audioCodec,"audio",e))),Tc(n)}t.subtitles&&(a=t.subtitles,Tc(a));const l=o.slice(0);o.sort(((e,t)=>{if(e.attrs["HDCP-LEVEL"]!==t.attrs["HDCP-LEVEL"])return(e.attrs["HDCP-LEVEL"]||"")>(t.attrs["HDCP-LEVEL"]||"")?1:-1;if(i&&e.height!==t.height)return e.height-t.height;if(e.frameRate!==t.frameRate)return e.frameRate-t.frameRate;if(e.videoRange!==t.videoRange)return xn.indexOf(e.videoRange)-xn.indexOf(t.videoRange);if(e.videoCodec!==t.videoCodec){const i=Bs(e.videoCodec),r=Bs(t.videoCodec);if(i!==r)return r-i}if(e.uri===t.uri&&e.codecSet!==t.codecSet){const i=$s(e.codecSet),r=$s(t.codecSet);if(i!==r)return r-i}return e.averageBitrate!==t.averageBitrate?e.averageBitrate-t.averageBitrate:0}));let h=l[0];if(this.steering&&(o=this.steering.filterParsedLevels(o),o.length!==l.length))for(let e=0;ei&&i===gc.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=e)}break}const d=s&&!r,u={levels:o,audioTracks:n,subtitleTracks:a,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:s,video:r,altAudio:!d&&n.some((e=>!!e.url))};this.hls.trigger(tr.MANIFEST_PARSED,u),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}get levels(){return 0===this._levels.length?null:this._levels}get level(){return this.currentLevelIndex}set level(e){const t=this._levels;if(0===t.length)return;if(e<0||e>=t.length){const i=new Error("invalid level idx"),r=e<0;if(this.hls.trigger(tr.ERROR,{type:ir.OTHER_ERROR,details:rr.LEVEL_SWITCH_ERROR,level:e,fatal:r,error:i,reason:i.message}),r)return;e=Math.min(e,t.length-1)}const i=this.currentLevelIndex,r=this.currentLevel,s=r?r.attrs["PATHWAY-ID"]:void 0,n=t[e],a=n.attrs["PATHWAY-ID"];if(this.currentLevelIndex=e,this.currentLevel=n,i===e&&n.details&&r&&s===a)return;this.log(`Switching to level ${e} (${n.height?n.height+"p ":""}${n.videoRange?n.videoRange+" ":""}${n.codecSet?n.codecSet+" ":""}@${n.bitrate})${a?" with Pathway "+a:""} from level ${i}${s?" with Pathway "+s:""}`);const o={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(tr.LEVEL_SWITCHING,o);const l=n.details;if(!l||l.live){const e=this.switchParams(n.uri,null==r?void 0:r.details,l);this.loadPlaylist(e)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(e){this.manualLevelIndex=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}get firstLevel(){return this._firstLevel}set firstLevel(e){this._firstLevel=e}get startLevel(){if(void 0===this._startLevel){const e=this.hls.config.startLevel;return void 0!==e?e:this.hls.firstAutoLevel}return this._startLevel}set startLevel(e){this._startLevel=e}onError(e,t){!t.fatal&&t.context&&t.context.type===an&&t.context.level===this.level&&this.checkRetry(t)}onFragBuffered(e,{frag:t}){if(void 0!==t&&t.type===hn){const e=t.elementaryStreams;if(!Object.keys(e).some((t=>!!e[t])))return;const i=this._levels[t.level];null!=i&&i.loadError&&(this.log(`Resetting level error count of ${i.loadError} on frag buffered`),i.loadError=0)}}onLevelLoaded(e,t){var i;const{level:r,details:s}=t,n=this._levels[r];var a;if(!n)return this.warn(`Invalid level index ${r}`),void(null!=(a=t.deliveryDirectives)&&a.skip&&(s.deltaUpdateFailed=!0));r===this.currentLevelIndex?(0===n.fragmentError&&(n.loadError=0),this.playlistLoaded(r,t,n.details)):null!=(i=t.deliveryDirectives)&&i.skip&&(s.deltaUpdateFailed=!0)}loadPlaylist(e){super.loadPlaylist();const t=this.currentLevelIndex,i=this.currentLevel;if(i&&this.shouldLoadPlaylist(i)){let r=i.uri;if(e)try{r=e.addDirectives(r)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}const s=i.attrs["PATHWAY-ID"];this.log(`Loading level index ${t}${void 0!==(null==e?void 0:e.msn)?" at sn "+e.msn+" part "+e.part:""} with${s?" Pathway "+s:""} ${r}`),this.clearTimer(),this.hls.trigger(tr.LEVEL_LOADING,{url:r,level:t,pathwayId:i.attrs["PATHWAY-ID"],id:0,deliveryDirectives:e||null})}}get nextLoadLevel(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(e){this.level=e,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=e)}removeLevel(e){var t;const i=this._levels.filter(((t,i)=>i!==e||(this.steering&&this.steering.removeLevel(t),t===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,t.details&&t.details.fragments.forEach((e=>e.level=-1))),!1)));jn(i),this._levels=i,this.currentLevelIndex>-1&&null!=(t=this.currentLevel)&&t.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.hls.trigger(tr.LEVELS_UPDATED,{levels:i})}onLevelsUpdated(e,{levels:t}){this._levels=t}checkMaxAutoUpdated(){const{autoLevelCapping:e,maxAutoLevel:t,maxHdcpLevel:i}=this.hls;this._maxAutoLevel!==t&&(this._maxAutoLevel=t,this.hls.trigger(tr.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:e,levels:this.levels,maxAutoLevel:t,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:i}))}}function Tc(e){const t={};e.forEach((e=>{const i=e.groupId||"";e.id=t[i]=t[i]||0,t[i]++}))}class Ec{constructor(e){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=e}abort(e){for(const i in this.keyUriToKeyInfo){const r=this.keyUriToKeyInfo[i].loader;if(r){var t;if(e&&e!==(null==(t=r.context)?void 0:t.frag.type))return;r.abort()}}}detach(){for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e];(t.mediaKeySessionContext||t.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[e]}}destroy(){this.detach();for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e].loader;t&&t.destroy()}this.keyUriToKeyInfo={}}createKeyLoadError(e,t=rr.KEY_LOAD_ERROR,i,r,s){return new Ga({type:ir.NETWORK_ERROR,details:t,fatal:!1,frag:e,response:s,error:i,networkDetails:r})}loadClear(e,t){if(this.emeController&&this.config.emeEnabled){const{sn:i,cc:r}=e;for(let e=0;e{s.setKeyFormat(e)}));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 i,r;t&&e.setKeyFormat(t);const s=e.decryptdata;if(!s){const i=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,rr.KEY_LOAD_ERROR,i))}const n=s.uri;if(!n)return Promise.reject(this.createKeyLoadError(e,rr.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${n}"`)));let a=this.keyUriToKeyInfo[n];if(null!=(i=a)&&i.decryptdata.key)return s.key=a.decryptdata.key,Promise.resolve({frag:e,keyInfo:a});var o;if(null!=(r=a)&&r.keyLoadPromise)switch(null==(o=a.mediaKeySessionContext)?void 0:o.keyStatus){case void 0:case"status-pending":case"usable":case"usable-in-future":return a.keyLoadPromise.then((t=>(s.key=t.keyInfo.decryptdata.key,{frag:e,keyInfo:a})))}switch(a=this.keyUriToKeyInfo[n]={decryptdata:s,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},s.method){case"ISO-23001-7":case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return"identity"===s.keyFormat?this.loadKeyHTTP(a,e):this.loadKeyEME(a,e);case"AES-128":return this.loadKeyHTTP(a,e);default:return Promise.reject(this.createKeyLoadError(e,rr.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${s.method}"`)))}}loadKeyEME(e,t){const i={frag:t,keyInfo:e};if(this.emeController&&this.config.emeEnabled){const t=this.emeController.loadKey(i);if(t)return(e.keyLoadPromise=t.then((t=>(e.mediaKeySessionContext=t,i)))).catch((t=>{throw e.keyLoadPromise=null,t}))}return Promise.resolve(i)}loadKeyHTTP(e,t){const i=this.config,r=new(0,i.loader)(i);return t.keyLoader=e.loader=r,e.keyLoadPromise=new Promise(((s,n)=>{const a={keyInfo:e,frag:t,responseType:"arraybuffer",url:e.decryptdata.uri},o=i.keyLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(e,t,i,r)=>{const{frag:a,keyInfo:o,url:l}=i;if(!a.decryptdata||o!==this.keyUriToKeyInfo[l])return n(this.createKeyLoadError(a,rr.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),r));o.decryptdata.key=a.decryptdata.key=new Uint8Array(e.data),a.keyLoader=null,o.loader=null,s({frag:a,keyInfo:o})},onError:(e,i,r,s)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.KEY_LOAD_ERROR,new Error(`HTTP Error ${e.code} loading key ${e.text}`),r,qi({url:a.url,data:void 0},e)))},onTimeout:(e,i,r)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),r))},onAbort:(e,i,r)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.INTERNAL_ABORTED,new Error("key loading aborted"),r))}};r.load(a,l,h)}))}resetLoader(e){const{frag:t,keyInfo:i,url:r}=e,s=i.loader;t.keyLoader===s&&(t.keyLoader=null,i.loader=null),delete this.keyUriToKeyInfo[r],s&&s.destroy()}}function Sc(){return self.SourceBuffer||self.WebKitSourceBuffer}function bc(){if(!Os())return!1;const e=Sc();return!e||e.prototype&&"function"==typeof e.prototype.appendBuffer&&"function"==typeof e.prototype.remove}class Lc{constructor(e,t,i,r){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=i,this.hls=r}destroy(){this.media=null,this.hls=this.fragmentTracker=null}poll(e,t){const{config:i,media:r,stalled:s}=this;if(null===r)return;const{currentTime:n,seeking:a}=r,o=this.seeking&&!a,l=!this.seeking&&a;if(this.seeking=a,n!==e){if(this.moved=!0,a||(this.nudgeRetry=0),null!==s){if(this.stallReported){const e=self.performance.now()-s;lr.warn(`playback not stuck anymore @${n}, after ${Math.round(e)}ms`),this.stallReported=!1}this.stalled=null}return}if(l||o)return void(this.stalled=null);if(r.paused&&!a||r.ended||0===r.playbackRate||!xa.getBuffered(r).length)return void(this.nudgeRetry=0);const h=xa.bufferInfo(r,n,0),c=h.nextStart||0;if(a){const e=h.len>2,i=!c||t&&t.start<=n||c-n>2&&!this.fragmentTracker.getPartialFragment(n);if(e||i)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var d;if(!(h.len>0)&&!c)return;const e=Math.max(c,h.start||0)-n,t=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,i=(null==t||null==(d=t.details)?void 0:d.live)?2*t.details.targetduration:2,s=this.fragmentTracker.getPartialFragment(n);if(e>0&&(e<=i||s))return void(r.paused||this._trySkipBufferHole(s))}const u=self.performance.now();if(null===s)return void(this.stalled=u);const f=u-s;if(!a&&f>=250&&(this._reportStall(h),!this.media))return;const g=xa.bufferInfo(r,n,i.maxBufferHole);this._tryFixBufferStall(g,f)}_tryFixBufferStall(e,t){const{config:i,fragmentTracker:r,media:s}=this;if(null===s)return;const n=s.currentTime,a=r.getPartialFragment(n);if(a){if(this._trySkipBufferHole(a)||!this.media)return}(e.len>i.maxBufferHole||e.nextStart&&e.nextStart-n1e3*i.highBufferWatchdogPeriod&&(lr.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}_reportStall(e){const{hls:t,media:i,stallReported:r}=this;if(!r&&i){this.stallReported=!0;const r=new Error(`Playback stalling at @${i.currentTime} due to low buffer (${JSON.stringify(e)})`);lr.warn(r.message),t.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_STALLED_ERROR,fatal:!1,error:r,buffer:e.len})}}_trySkipBufferHole(e){const{config:t,hls:i,media:r}=this;if(null===r)return 0;const s=r.currentTime,n=xa.bufferInfo(r,s,0),a=s0&&n.len<1&&r.readyState<3,h=a-s;if(h>0&&(o||l)){if(h>t.maxBufferHole){const{fragmentTracker:t}=this;let i=!1;if(0===s){const e=t.getAppendedFrag(0,hn);e&&a1?(e=0,this.bitrateTest=!0):e=i.firstAutoLevel),i.nextLoadLevel=e,this.level=i.loadLevel,this.loadedmetadata=!1}t>0&&-1===e&&(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t),this.state=qa,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=Ya}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case so:{const{levels:e,level:t}=this,i=null==e?void 0:e[t],r=null==i?void 0:i.details;if(r&&(!r.live||this.levelLastLoaded===i)){if(this.waitForCdnTuneIn(r))break;this.state=qa;break}if(this.hls.nextLoadLevel!==this.level){this.state=qa;break}break}case Qa:{var e;const t=self.performance.now(),i=this.retryDate;if(!i||t>=i||null!=(e=this.media)&&e.seeking){const{levels:e,level:t}=this,i=null==e?void 0:e[t];this.resetStartWhenNotLoaded(i||null),this.state=qa}}}this.state===qa&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){super.onTickEnd(),this.checkBuffer(),this.checkFragmentChanged()}doTickIdle(){const{hls:e,levelLastLoaded:t,levels:i,media:r}=this;if(null===t||!r&&(this.startFragRequested||!e.config.startFragPrefetch))return;if(this.altAudio&&this.audioOnly)return;const s=e.nextLoadLevel;if(null==i||!i[s])return;const n=i[s],a=this.getMainFwdBufferInfo();if(null===a)return;const o=this.getLevelDetails();if(o&&this._streamEnded(a,o)){const e={};return this.altAudio&&(e.type="video"),this.hls.trigger(tr.BUFFER_EOS,e),void(this.state=to)}e.loadLevel!==s&&-1===e.manualLevel&&this.log(`Adapting to level ${s} from level ${this.level}`),this.level=e.nextLoadLevel=s;const l=n.details;if(!l||this.state===so||l.live&&this.levelLastLoaded!==n)return this.level=s,void(this.state=so);const h=a.len,c=this.getMaxBufferLength(n.maxBitrate);if(h>=c)return;this.backtrackFragment&&this.backtrackFragment.start>a.end&&(this.backtrackFragment=null);const d=this.backtrackFragment?this.backtrackFragment.start:a.end;let u=this.getNextFragment(d,l);if(this.couldBacktrack&&!this.fragPrevious&&u&&"initSegment"!==u.sn&&this.fragmentTracker.getState(u)!==Aa){var f;const e=(null!=(f=this.backtrackFragment)?f:u).sn-l.startSN,t=l.fragments[e-1];t&&u.cc===t.cc&&(u=t,this.fragmentTracker.removeFragment(t))}else this.backtrackFragment&&a.len&&(this.backtrackFragment=null);if(u&&this.isLoopLoading(u,d)){if(!u.gap){const e=this.audioOnly&&!this.altAudio?mr:pr,t=(e===pr?this.videoBuffer:this.mediaBuffer)||this.media;t&&this.afterBufferFlushed(t,e,hn)}u=this.getNextFragmentLoopLoading(u,l,a,hn,c)}u&&(!u.initSegment||u.initSegment.data||this.bitrateTest||(u=u.initSegment),this.loadFragment(u,n,d))}loadFragment(e,t,i){const r=this.fragmentTracker.getState(e);this.fragCurrent=e,r===ba||r===wa?"initSegment"===e.sn?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,i)):this.clearTrackerIfNeeded(e)}getBufferedFrag(e){return this.fragmentTracker.getBufferedFrag(e,hn)}followingBufferedFrag(e){return e?this.getBufferedFrag(e.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:e,media:t}=this;if(null!=t&&t.readyState){let i;const r=this.getAppendedFrag(t.currentTime);r&&r.start>1&&this.flushMainBuffer(0,r.start-1);const s=this.getLevelDetails();if(null!=s&&s.live){const e=this.getMainFwdBufferInfo();if(!e||e.len<2*s.targetduration)return}if(!t.paused&&e){const t=e[this.hls.nextLoadLevel],r=this.fragLastKbps;i=r&&this.fragCurrent?this.fragCurrent.duration*t.maxBitrate/(1e3*r)+1:0}else i=0;const n=this.getBufferedFrag(t.currentTime+i);if(n){const e=this.followingBufferedFrag(n);if(e){this.abortCurrentFrag();const t=e.maxStartPTS?e.maxStartPTS:e.start,i=e.duration,r=Math.max(n.end,t+Math.min(Math.max(i-this.config.maxFragLookUpTolerance,i*(this.couldBacktrack?.5:.125)),i*(this.couldBacktrack?.75:.25)));this.flushMainBuffer(r,Number.POSITIVE_INFINITY)}}}}abortCurrentFrag(){const e=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,e&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.state){case za:case Xa:case Qa:case Za:case eo:this.state=qa}this.nextLoadPosition=this.getLoadPosition()}flushMainBuffer(e,t){super.flushMainBuffer(e,t,this.altAudio?"video":null)}onMediaAttached(e,t){super.onMediaAttached(e,t);const i=t.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),i.addEventListener("playing",this.onvplaying),i.addEventListener("seeked",this.onvseeked),this.gapController=new Lc(this.config,i,this.fragmentTracker,this.hls)}onMediaDetaching(){const{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(){const e=this.media,t=e?e.currentTime:null;Ji(t)&&this.log(`Media seeked to ${t.toFixed(3)}`);const i=this.getMainFwdBufferInfo();null!==i&&0!==i.len?this.tick():this.warn(`Main forward buffer length on "seeked" event ${i?i.len:"empty"})`)}onManifestLoading(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(tr.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 i=!1,r=!1;t.levels.forEach((e=>{const t=e.audioCodec;t&&(i=i||-1!==t.indexOf("mp4a.40.2"),r=r||-1!==t.indexOf("mp4a.40.5"))})),this.audioCodecSwitch=i&&r&&!function(){var e;const t=Sc();return"function"==typeof(null==t||null==(e=t.prototype)?void 0:e.changeType)}(),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){const{levels:i}=this;if(!i||this.state!==qa)return;const r=i[t.level];(!r.details||r.details.live&&this.levelLastLoaded!==r||this.waitForCdnTuneIn(r.details))&&(this.state=so)}onLevelLoaded(e,t){var i;const{levels:r}=this,s=t.level,n=t.details,a=n.totalduration;if(!r)return void this.warn(`Levels were reset while loading level ${s}`);this.log(`Level ${s} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""}, cc [${n.startCC}, ${n.endCC}] duration:${a}`);const o=r[s],l=this.fragCurrent;!l||this.state!==Xa&&this.state!==Qa||l.level!==t.level&&l.loader&&this.abortCurrentFrag();let h=0;if(n.live||null!=(i=o.details)&&i.live){var c;if(this.checkLiveUpdate(n),n.deltaUpdateFailed)return;h=this.alignPlaylists(n,o.details,null==(c=this.levelLastLoaded)?void 0:c.details)}if(o.details=n,this.levelLastLoaded=o,this.hls.trigger(tr.LEVEL_UPDATED,{details:n,level:s}),this.state===so){if(this.waitForCdnTuneIn(n))return;this.state=qa}this.startFragRequested?n.live&&this.synchronizeToLiveEdge(n):this.setStartPosition(n,h),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:r,payload:s}=e,{levels:n}=this;if(!n)return void this.warn(`Levels were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const a=n[i.level],o=a.details;if(!o)return this.warn(`Dropping fragment ${i.sn} of level ${i.level} after level details were reset`),void this.fragmentTracker.removeFragment(i);const l=a.videoCodec,h=o.PTSKnown||!o.live,c=null==(t=i.initSegment)?void 0:t.data,d=this._getAudioCodec(a),u=this.transmuxer=this.transmuxer||new gl(this.hls,hn,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),f=r?r.index:-1,g=-1!==f,m=new Ca(i.level,i.sn,i.stats.chunkCount,s.byteLength,f,g),p=this.initPTS[i.cc];u.push(s,c,d,l,i,r,o.totalduration,h,m,p)}onAudioTrackSwitching(e,t){const i=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;const e=this.fragCurrent;e&&(this.log("Switching to main audio track, cancel main fragment load"),e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();const e=this.hls;i&&(e.trigger(tr.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),e.trigger(tr.AUDIO_TRACK_SWITCHED,t)}}onAudioTrackSwitched(e,t){const i=t.id,r=!!this.hls.audioTracks[i].url;if(r){const e=this.videoBuffer;e&&this.mediaBuffer!==e&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=e)}this.altAudio=r,this.tick()}onBufferCreated(e,t){const i=t.tracks;let r,s,n=!1;for(const e in i){const t=i[e];if("main"===t.id){if(s=e,r=t,"video"===e){const t=i[e];t&&(this.videoBuffer=t.buffer)}}else n=!0}n&&r?(this.log(`Alternate track found, use ${s}.buffered to schedule main fragment loading`),this.mediaBuffer=r.buffer):this.mediaBuffer=this.media}onFragBuffered(e,t){const{frag:i,part:r}=t;if(i&&i.type!==hn)return;if(this.fragContextChanged(i))return this.warn(`Fragment ${i.sn}${r?" p: "+r.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}`),void(this.state===eo&&(this.state=qa));const s=r?r.stats:i.stats;this.fragLastKbps=Math.round(8*s.total/(s.buffering.end-s.loading.first)),"initSegment"!==i.sn&&(this.fragPrevious=i),this.fragBufferedComplete(i,r)}onError(e,t){var i;if(t.fatal)this.state=io;else switch(t.details){case rr.FRAG_GAP:case rr.FRAG_PARSING_ERROR:case rr.FRAG_DECRYPT_ERROR:case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(hn,t);break;case rr.LEVEL_LOAD_ERROR:case rr.LEVEL_LOAD_TIMEOUT:case rr.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==so||(null==(i=t.context)?void 0:i.type)!==an||(this.state=qa);break;case rr.BUFFER_APPEND_ERROR:case rr.BUFFER_FULL_ERROR:if(!t.parent||"main"!==t.parent)return;if(t.details===rr.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case rr.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}checkBuffer(){const{media:e,gapController:t}=this;if(e&&t&&e.readyState){if(this.loadedmetadata||!xa.getBuffered(e).length){const e=this.state!==qa?this.fragCurrent:null;t.poll(this.lastCurrentTime,e)}this.lastCurrentTime=e.currentTime}}onFragLoadEmergencyAborted(){this.state=qa,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()}onBufferFlushed(e,{type:t}){if(t!==mr||this.audioOnly&&!this.altAudio){const e=(t===pr?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(e,t,hn),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(){const{media:e}=this;if(!e)return;const t=e.currentTime;let i=this.startPosition;if(i>=0&&t0&&(s{const{hls:r}=this;if(!i||this.fragContextChanged(e))return;t.fragmentError=0,this.state=qa,this.startFragRequested=!1,this.bitrateTest=!1;const s=e.stats;s.parsing.start=s.parsing.end=s.buffering.start=s.buffering.end=self.performance.now(),r.trigger(tr.FRAG_LOADED,i),e.bitrateTest=!1}))}_handleTransmuxComplete(e){var t;const i="main",{hls:r}=this,{remuxResult:s,chunkMeta:n}=e,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{video:c,text:d,id3:u,initSegment:f}=s,{details:g}=h,m=this.altAudio?void 0:s.audio;if(this.fragContextChanged(o))this.fragmentTracker.removeFragment(o);else{if(this.state=Za,f){if(null!=f&&f.tracks){const e=o.initSegment||o;this._bufferInitSegment(h,f.tracks,e,n),r.trigger(tr.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:f.tracks})}const e=f.initPTS,t=f.timescale;Ji(e)&&(this.initPTS[o.cc]={baseTime:e,timescale:t},r.trigger(tr.INIT_PTS_FOUND,{frag:o,id:i,initPTS:e,timescale:t}))}if(c&&g&&"initSegment"!==o.sn){const e=g.fragments[o.sn-1-g.startSN],t=o.sn===g.startSN,i=!e||o.cc>e.cc;if(!1!==s.independent){const{startPTS:e,endPTS:r,startDTS:s,endDTS:a}=c;if(l)l.elementaryStreams[c.type]={startPTS:e,endPTS:r,startDTS:s,endDTS:a};else if(c.firstKeyFrame&&c.independent&&1===n.id&&!i&&(this.couldBacktrack=!0),c.dropped&&c.independent){const s=this.getMainFwdBufferInfo(),n=(s?s.end:this.getLoadPosition())+this.config.maxBufferHole,l=c.firstKeyFramePTS?c.firstKeyFramePTS:e;if(!t&&n2&&(o.gap=!0);o.setElementaryStreamInfo(c.type,e,r,s,a),this.backtrackFragment&&(this.backtrackFragment=o),this.bufferFragmentData(c,o,l,n,t||i)}else{if(!t&&!i)return void this.backtrack(o);o.gap=!0}}if(m){const{startPTS:e,endPTS:t,startDTS:i,endDTS:r}=m;l&&(l.elementaryStreams[mr]={startPTS:e,endPTS:t,startDTS:i,endDTS:r}),o.setElementaryStreamInfo(mr,e,t,i,r),this.bufferFragmentData(m,o,l,n)}if(g&&null!=u&&null!=(t=u.samples)&&t.length){const e={id:i,frag:o,details:g,samples:u.samples};r.trigger(tr.FRAG_PARSING_METADATA,e)}if(g&&d){const e={id:i,frag:o,details:g,samples:d.samples};r.trigger(tr.FRAG_PARSING_USERDATA,e)}}}_bufferInitSegment(e,t,i,r){if(this.state!==Za)return;this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&delete t.audio;const{audio:s,video:n,audiovideo:a}=t;if(s){let t=e.audioCodec;const i=navigator.userAgent.toLowerCase();if(this.audioCodecSwitch){t&&(t=-1!==t.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5");const e=s.metadata;e&&"channelCount"in e&&1!==(e.channelCount||1)&&-1===i.indexOf("firefox")&&(t="mp4a.40.5")}t&&-1!==t.indexOf("mp4a.40.5")&&-1!==i.indexOf("android")&&"audio/mpeg"!==s.container&&(t="mp4a.40.2",this.log(`Android: force audio codec to ${t}`)),e.audioCodec&&e.audioCodec!==t&&this.log(`Swapping manifest audio codec "${e.audioCodec}" for "${t}"`),s.levelCodec=t,s.id="main",this.log(`Init audio buffer, container:${s.container}, codecs[selected/level/parsed]=[${t||""}/${e.audioCodec||""}/${s.codec}]`)}n&&(n.levelCodec=e.videoCodec,n.id="main",this.log(`Init video buffer, container:${n.container}, codecs[level/parsed]=[${e.videoCodec||""}/${n.codec}]`)),a&&this.log(`Init audiovideo buffer, container:${a.container}, codecs[level/parsed]=[${e.codecs}/${a.codec}]`),this.hls.trigger(tr.BUFFER_CODECS,t),Object.keys(t).forEach((e=>{const s=t[e].initSegment;null!=s&&s.byteLength&&this.hls.trigger(tr.BUFFER_APPENDING,{type:e,data:s,frag:i,part:null,chunkMeta:r,parent:i.type})})),this.tickImmediate()}getMainFwdBufferInfo(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,hn)}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=qa}checkFragmentChanged(){const e=this.media;let t=null;if(e&&e.readyState>1&&!1===e.seeking){const i=e.currentTime;if(xa.isBuffered(e,i)?t=this.getAppendedFrag(i):xa.isBuffered(e,i+.1)&&(t=this.getAppendedFrag(i+.1)),t){this.backtrackFragment=null;const e=this.fragPlaying,i=t.level;e&&t.sn===e.sn&&e.level===i||(this.fragPlaying=t,this.hls.trigger(tr.FRAG_CHANGED,{frag:t}),e&&e.level===i||this.hls.trigger(tr.LEVEL_SWITCHED,{level:i}))}}}get nextLevel(){const e=this.nextBufferedFrag;return e?e.level:-1}get currentFrag(){const e=this.media;return e?this.fragPlaying||this.getAppendedFrag(e.currentTime):null}get currentProgramDateTime(){const e=this.media;if(e){const t=e.currentTime,i=this.currentFrag;if(i&&Ji(t)&&Ji(i.programDateTime)){const e=i.programDateTime+1e3*(t-i.start);return new Date(e)}}return null}get currentLevel(){const e=this.currentFrag;return e?e.level:-1}get nextBufferedFrag(){const e=this.currentFrag;return e?this.followingBufferedFrag(e):null}get forceStartLoad(){return this._forceStartLoad}}class Ac{static get version(){return"1.5.11"}static isMSESupported(){return bc()}static isSupported(){return function(){if(!bc())return!1;const e=Os();return"function"==typeof(null==e?void 0:e.isTypeSupported)&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some((t=>e.isTypeSupported(Us(t,"video"))))||["mp4a.40.2","fLaC"].some((t=>e.isTypeSupported(Us(t,"audio")))))}()}static getMediaSource(){return Os()}static get Events(){return tr}static get ErrorTypes(){return ir}static get ErrorDetails(){return rr}static get DefaultConfig(){return Ac.defaultConfig?Ac.defaultConfig:gc}static set DefaultConfig(e){Ac.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 fl,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,function(e,t){if("object"==typeof console&&!0===e||"object"==typeof e){or(e,"debug","log","info","warn","error");try{ar.log(`Debug logs enabled for "${t}" in hls.js version 1.5.11`)}catch(e){ar=nr}}else ar=nr}(e.debug||!1,"Hls instance");const t=this.config=function(e,t){if((t.liveSyncDurationCount||t.liveMaxLatencyDurationCount)&&(t.liveSyncDuration||t.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==t.liveMaxLatencyDurationCount&&(void 0===t.liveSyncDurationCount||t.liveMaxLatencyDurationCount<=t.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==t.liveMaxLatencyDuration&&(void 0===t.liveSyncDuration||t.liveMaxLatencyDuration<=t.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');const i=mc(e),r=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach((e=>{const s=`${"level"===e?"playlist":e}LoadPolicy`,n=void 0===t[s],a=[];r.forEach((r=>{const o=`${e}Loading${r}`,l=t[o];if(void 0!==l&&n){a.push(o);const e=i[s].default;switch(t[s]={default:e},r){case"TimeOut":e.maxLoadTimeMs=l,e.maxTimeToFirstByteMs=l;break;case"MaxRetry":e.errorRetry.maxNumRetry=l,e.timeoutRetry.maxNumRetry=l;break;case"RetryDelay":e.errorRetry.retryDelayMs=l,e.timeoutRetry.retryDelayMs=l;break;case"MaxRetryTimeout":e.errorRetry.maxRetryDelayMs=l,e.timeoutRetry.maxRetryDelayMs=l}}})),a.length&&lr.warn(`hls.js config: "${a.join('", "')}" setting(s) are deprecated, use "${s}": ${JSON.stringify(t[s])}`)})),qi(qi({},i),t)}(Ac.DefaultConfig,e);this.userConfig=e,t.progressive&&pc(t);const{abrController:i,bufferController:r,capLevelController:s,errorController:n,fpsController:a}=t,o=new n(this),l=this.abrController=new i(this),h=this.bufferController=new r(this),c=this.capLevelController=new s(this),d=new a(this),u=new gn(this),f=new kn(this),g=t.contentSteeringController,m=g?new g(this):null,p=this.levelController=new yc(this,m),v=new Ra(this),y=new Ec(this.config),T=this.streamController=new wc(this,v,y);c.setStreamController(T),d.setStreamController(T);const E=[u,p,T];m&&E.splice(1,0,m),this.networkControllers=E;const S=[l,h,c,d,f,v];this.audioTrackController=this.createController(t.audioTrackController,E);const b=t.audioStreamController;b&&E.push(new b(this,v,y)),this.subtitleTrackController=this.createController(t.subtitleTrackController,E);const L=t.subtitleStreamController;L&&E.push(new L(this,v,y)),this.createController(t.timelineController,S),y.emeController=this.emeController=this.createController(t.emeController,S),this.cmcdController=this.createController(t.cmcdController,S),this.latencyController=this.createController(_n,S),this.coreComponents=S,E.push(o);const w=o.onErrorOut;"function"==typeof w&&this.on(tr.ERROR,w,o)}createController(e,t){if(e){const i=new e(this);return t&&t.push(i),i}return null}on(e,t,i=this){this._emitter.on(e,t,i)}once(e,t,i=this){this._emitter.once(e,t,i)}removeAllListeners(e){this._emitter.removeAllListeners(e)}off(e,t,i=this,r){this._emitter.off(e,t,i,r)}listeners(e){return this._emitter.listeners(e)}emit(e,t,i){return this._emitter.emit(e,t,i)}trigger(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(t){if(lr.error("An internal error happened while handling event "+e+'. Error message: "'+t.message+'". Here is a stacktrace:',t),!this.triggeringException){this.triggeringException=!0;const i=e===tr.ERROR;this.trigger(tr.ERROR,{type:ir.OTHER_ERROR,details:rr.INTERNAL_EXCEPTION,fatal:i,event:e,error:t}),this.triggeringException=!1}}return!1}listenerCount(e){return this._emitter.listenerCount(e)}destroy(){lr.log("destroy"),this.trigger(tr.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((e=>e.destroy())),this.networkControllers.length=0,this.coreComponents.forEach((e=>e.destroy())),this.coreComponents.length=0;const e=this.config;e.xhrSetup=e.fetchSetup=void 0,this.userConfig=null}attachMedia(e){lr.log("attachMedia"),this._media=e,this.trigger(tr.MEDIA_ATTACHING,{media:e})}detachMedia(){lr.log("detachMedia"),this.trigger(tr.MEDIA_DETACHING,void 0),this._media=null}loadSource(e){this.stopLoad();const t=this.media,i=this.url,r=this.url=Wi.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,lr.log(`loadSource:${r}`),t&&i&&(i!==r||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(t)),this.trigger(tr.MANIFEST_LOADING,{url:e})}startLoad(e=-1){lr.log(`startLoad(${e})`),this.started=!0,this.networkControllers.forEach((t=>{t.startLoad(e)}))}stopLoad(){lr.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(){lr.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){lr.log("recoverMediaError");const e=this._media;this.detachMedia(),e&&this.attachMedia(e)}removeLevel(e){this.levelController.removeLevel(e)}get levels(){const e=this.levelController.levels;return e||[]}get currentLevel(){return this.streamController.currentLevel}set currentLevel(e){lr.log(`set currentLevel:${e}`),this.levelController.manualLevel=e,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(e){lr.log(`set nextLevel:${e}`),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(e){lr.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){lr.log(`set firstLevel:${e}`),this.levelController.firstLevel=e}get startLevel(){const e=this.levelController.startLevel;return-1===e&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:e}set startLevel(e){lr.log(`set startLevel:${e}`),-1!==e&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(e){const t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimate():NaN}set bandwidthEstimate(e){this.abrController.resetEstimator(e)}get ttfbEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimateTTFB():NaN}set autoLevelCapping(e){this._autoLevelCapping!==e&&(lr.log(`set autoLevelCapping:${e}`),this._autoLevelCapping=e,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(e){(function(e){return Dn.indexOf(e)>-1})(e)&&this._maxHdcpLevel!==e&&(this._maxHdcpLevel=e,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return-1===this.levelController.manualLevel}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:e,config:{minAutoBitrate:t}}=this;if(!e)return 0;const i=e.length;for(let r=0;r=t)return r;return 0}get maxAutoLevel(){const{levels:e,autoLevelCapping:t,maxHdcpLevel:i}=this;let r;if(r=-1===t&&null!=e&&e.length?e.length-1:t,i)for(let t=r;t--;){const r=e[t].attrs["HDCP-LEVEL"];if(r&&r<=i)return t}return r}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 null==(t=this.audioTrackController)?void 0:t.setAudioOption(e)}setSubtitleOption(e){var t;return null==(t=this.subtitleTrackController)||t.setSubtitleOption(e),null}get allAudioTracks(){const e=this.audioTrackController;return e?e.allAudioTracks:[]}get audioTracks(){const e=this.audioTrackController;return e?e.audioTracks:[]}get audioTrack(){const e=this.audioTrackController;return e?e.audioTrack:-1}set audioTrack(e){const t=this.audioTrackController;t&&(t.audioTrack=e)}get allSubtitleTracks(){const e=this.subtitleTrackController;return e?e.allSubtitleTracks:[]}get subtitleTracks(){const e=this.subtitleTrackController;return e?e.subtitleTracks:[]}get subtitleTrack(){const e=this.subtitleTrackController;return e?e.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(e){const t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}get subtitleDisplay(){const e=this.subtitleTrackController;return!!e&&e.subtitleDisplay}set subtitleDisplay(e){const t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(e){this.config.lowLatencyMode=e}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}}function Rc(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e.$video.volume=e._options.volume)}),1e3)})),e.event.emit("parsed")}))}))}else if(this.$video.canPlayType("application/vnd.apple.mpegurl")){this.logger.log("Browser support application/vnd.apple.mpegurl : ",this.$video.canPlayType("application/vnd.apple.mpegurl")),this.$video.src=this._options.url;var i=!1;this.$video.addEventListener("canplay",(function(){!i&&e._options.autoPlay&&setTimeout((function(){e.$video.play().then((function(){e.logger.log("autoPlay video!"),setTimeout((function(){e._options.volume>0&&e.setVolume(e._options.volume)}),1e3),i=!0}))}),200)}))}else this.logger.warn("Browser not support hls")},i.isPlayingState=function(){return!this.$video.paused},i.play=function(){if(this.isPlayingState())return Promise.resolve();if(this._options.isLive&&(this.$video.buffered.length>=1&&this.$video.buffered.end(0)>1)){var e=this.$video.buffered.end(0)-1;this.$video.currentTime=e}return this.$video.play()},i.pause=function(){this.$video.pause()},i.setVolume=function(e){this.$video.muted&&(this.$video.muted=!1),this._volume=+(e||0),0===this._volume&&(this.$video.muted=!0),this.$video.volume=this._volume},i.destroy=function(){this.$video&&this.$video.pause(),this._hls&&(this._hls.destroy(),this._hls=null),e.prototype.destroy.call(this)},i._onEvent=function(){var e;(e=this).$video&&(e.$video.addEventListener("canplay",(function(){e.event.emit("canplay")})),e.$video.addEventListener("loadeddata",(function(){e.event.emit("loadeddata")})),e.$video.addEventListener("volumechange",(function(){e.event.emit("volumechange",{data:e.$video.volume})})),e.$video.addEventListener("waiting",(function(){e.event.emit("waiting")})),e.$video.addEventListener("timeupdate",(function(){var t;null==(t=e.event)||t.emit("timeupdate")})),e.$video.addEventListener("seeking",(function(){e.event.emit("seeking",{data:e.$video.currentTime})})),e.$video.addEventListener("seeked",(function(){e.event.emit("seeked")})),e.$video.addEventListener("abort",(function(){e.event.emit("abort")})),e.$video.addEventListener("error",(function(){var t;null==(t=e.event)||t.emit("error",{data:e.$video.error})})),e.$video.addEventListener("ended",(function(){e.event.emit("ended")})))},Rc(t,[{key:"volume",get:function(){return this._volume},set:function(e){this.setVolume(e)}}]),t}(Ri);var xc="wasm_loaded",Cc="wasm_failed",Ic="init";function Pc(e,t){return Pc=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Pc(e,t)}var Oc=function(e){function t(t){var i;return void 0===t&&(t={}),i=e.call(this,t)||this,t.url=function(e,t){void 0===t&&(t=["h264"]);var i=(t||["h264"]).reduce((function(e,t){return t=t.toLowerCase(),e+(Xt[t]||0)}),0),r=e.split("?")[0],s=e.split("?")[1];return s=(s||"").split("&").filter((function(e){return!/^vc=\d?/.test(e)})).join("&"),r+"?"+s+(s?"&":"")+"vc="+i}(null==t?void 0:t.url,["h264","h265"]),function(e,t){if(((null==t?void 0:t.volume)||0)>1?e._volume=1:((null==t?void 0:t.volume)||0)<=0?e._volume=0:e._volume=+((null==t?void 0:t.volume)||0),t.volume=e._volume,e.options=zt({},wi,t),"string"!=typeof e.options.id)throw new Error("id is required!");e.logger=z(e.options.loggerOptions),e.event=new ei,e.logger.log("HlsPlayer version: ",Uc.version),e.logger.log("HlsPlayer options: ",e.options),e.options.logger=e.logger}(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(i),t),i._containerClassName=Li+"-container",i._render(),i}!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Pc(e,t)}(t,e);var i=t.prototype;return i._render=function(){this.$container.classList.add(this._containerClassName)},i.destroy=function(){this.$container&&(this.$container.classList.remove(this._containerClassName),this.$container.innerHTML="",this.$container=null)},t}(Si);function Mc(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e=!0),this.playParam={durationMs:0,fps:0,sampleRate:0,size:{width:0,height:0},audioNone:e,videoCodec:T},!A())throw new Error("Browser not support WebAssembly!");this._onWorkerMessage()},i.play=function(){if(Ui.send(1,{name:"play"}),null===this.player)return Promise.resolve();if(this.playParam.videoCodec===T){var e={seekPos:0,isLive:this.options.isLive,accurateSeek:!0,seekEvent:!1,realPlay:!0};return this.player.play(e)}return this.player.play()},i.pause=function(){return Ui.send(1,{name:"pause"}),null!==this.player&&(this.player.pause(),!0)},i.destroy=function(){var t,i;return Ui.send(1,{name:"destroy"}),void 0!==this.player&&null!==this.player&&(this.playParam.videoCodec===T&&this._m3u8Obj&&(this._m3u8Obj.destroy(),this._m3u8Obj=null),this.player.destroy(),this._decoderWorker&&(this._decoderWorker.postMessage(P(B)),this._decoderWorker.terminate(),this._decoderWorker=null),this.logger.log("destroy"),null==(i=this.event)||null==(t=i.emit)||t.call(i,"destroy"),this.player=null,e.prototype.destroy.call(this),!0)},i.isPlaying=function(){return null!==this.player&&this.player.isPlayingState()},i.setVolume=function(e){var t;(e=+e)>1||e<0?this.logger.warn("volume volume value 0.0 ~ 1.0!"):((t=this).player||(t.event.emit("playerIsNull"),t.logger.warn("Player instance does not exist!"),0))&&(this.player.setVolume(e),this.event.emit("volumeChange",{data:e}))},i.getVersion=function(){return Ui.send(1,{name:"getVersion"}),"0.1.0-beta.2"},i._m3u8Entry=function(){var e=this;this._m3u8Obj=new Vi({logger:this.logger,decoderWorker:this._decoderWorker,event:this.event}),this._m3u8Obj.bindReady(this),this._m3u8Obj.onFinished=function(e,t){},this._m3u8Obj.onCacheProcess=function(t){e.options.isLive||null==e.onCacheProcess||e.onCacheProcess.call(e,t)},this._m3u8Obj.onDemuxed=this._checkPlayer.bind(this),this._m3u8Obj.onSamples=this._hlsOnSamples.bind(this),this._m3u8Obj.demux(this.url)},i._checkPlayer=function(e,t){var i=this;if(null==i.player){var r,s,n;if(!(null==i||null==(r=i._m3u8Obj)?void 0:r.isHevcParam)||t)return null==i||null==(n=i._m3u8Obj)||null==(s=n.destroy)||s.call(n),i._m3u8Obj=null,this._decoderWorker.terminate(),this._decoderWorker=null,void(i.player=new Dc(Fc({},this.options,{event:this.event,logger:this.logger})));var a=i._m3u8Obj.getACodec(),o=i._m3u8Obj.getFPS(),l=i._m3u8Obj.getSampleRate(),h=i._m3u8Obj.getSize(),c=!1;c=i._m3u8Obj.getSampleChannel()<=0||""===a,i._softPlayer(0,o,l,h,c)}},i._hlsOnSamples=function(e,t){var i,r,s,n=this;if(t.video)null==(s=n.player)||null==(r=s.appendHevcFrame)||r.call(s,t);else if(!(null==(i=n._m3u8Obj)?void 0:i.audioNone)){var a,o;null==(o=n.player)||null==(a=o.appendAACFrame)||a.call(o,t)}},i._onWorkerMessage=function(){var e=this,i=this;this._decoderWorker.onmessage=function(r){var s=r.data;switch(s.cmd){case O:t.__HLS_WASM_DecoderState__=0;break;case M:t.__HLS_WASM_DecoderState__=1,e.logger.log("Wasm already init over!"),i.event.emit(xc),i._decoderWorker.postMessage(P("registerWasmPlayer")),i._m3u8Entry();break;case F:t.__HLS_WASM_DecoderState__=-1,e.logger.error("Wasm init failed!",s),i.event.emit(Cc,s),Ui.send("wasm",{name:"wasm loading failed"}),i._checkPlayer(!0)}}},i._softPlayer=function(e,t,i,r,s,n){var a,o,l=this;void 0===s&&(s=!1),void 0===n&&(n=null);var c,d=this;(this.playParam.durationMs=e,this.playParam.fps=t,this.playParam.sampleRate=i,this.playParam.size=r,this.playParam.audioNone=s,this.playParam.videoCodec=n||T,this.logger.log("this.playParam: ",this.playParam),this.logger.log("start init soft player"),this.player=new xi(Fc({},d.options,{sampleRate:i,fps:t,appendHevcType:h,fixed:!1,id:this.options.id,audioNone:s,videoCodec:n,logger:this.logger,event:this.event,decoderWorker:this._decoderWorker})),this.player.onPlayingTime=function(e){var t;null==d||null==(t=d.onPlayTime)||t.call(d,e)},this.player.onPlayingFinish=function(){var e,t;(l.pause(),null!=l.onPlayFinish)&&(null==(t=l)||null==(e=t.onPlayFinish)||e.call(t))},this.player.onLoadCache=function(){var e,t;null==(t=l)||null==(e=t.onLoadCache)||e.call(t)},this.player.onLoadCacheFinished=function(){var e,t;null==(t=l)||null==(e=t.onLoadCacheFinished)||e.call(t)},null==(a=d.player)||a.setDurationMs(e),null==(o=d.player)||o.setFrameRate(t),null!=d.onReadyShowDone)&&(null==d||null==(c=d.onReadyShowDone)||c.call(d));this.event.emit("parsed"),this.player&&this.options.autoPlay&&this.play()},t.supportType=function(e){if(Ui.send(1,{name:"supportType",options:e}),"hls"===e.type)return!0;if(e.url){var t=e.url;t.startsWith("http://")||t.startsWith("https://")||(t=/^\/\//.test(t)?"http:"+t:location.origin+location.pathname+t);try{return/\.m3u8$/i.test(new URL(t).pathname)}catch(e){}}return!1},Mc(t,[{key:"volume",get:function(){return this.player?this.player.volume:this.options.volume},set:function(e){e=+e,this.setVolume(e)}}]),t}(Oc);return Uc.__HLS_WASM_DecoderState__=0,Uc.version="0.1.0-beta.2",Uc})); diff --git a/dist/types/index.d.ts b/dist/types/index.d.ts index 7676497..6011f73 100644 --- a/dist/types/index.d.ts +++ b/dist/types/index.d.ts @@ -393,7 +393,7 @@ declare class UIContainer extends BasePlayer { /** * @description hls 播放器 */ -declare class HLSPlayer extends UIContainer { +declare class HlsPlayer extends UIContainer { /** WebAssembly completed loading identity */ static __HLS_WASM_DecoderState__: number; private _decoderWorker; @@ -506,4 +506,4 @@ declare class HLSPlayer extends UIContainer { _softPlayer(durationMs: any, fps: any, sampleRate: any, size: any, audioNone?: boolean, videoCodec?: null): void; } -export { type HlsOptions, HLSPlayer as default }; +export { type HlsOptions, HlsPlayer as default }; diff --git a/package.json b/package.json index d5560ef..0577a50 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ezuikit/player-hls", - "version": "0.1.0-beta.1", + "version": "0.1.0-beta.2", "description": "hls播放器", "main": "dist/index.js", "umd": "dist/index.umd.js", From f8cf478fe3bfdd7bf218bc516b9fb7dc6d8bc600 Mon Sep 17 00:00:00 2001 From: ShineShao Date: Thu, 1 Aug 2024 11:23:03 +0800 Subject: [PATCH 11/20] feat: add github repository --- package.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/package.json b/package.json index 0577a50..da66fca 100644 --- a/package.json +++ b/package.json @@ -42,5 +42,15 @@ "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" + }, + "bugs": { + "url": "https://github.com/Ezviz-OpenBiz/EZUIKit-hls/issues" + }, + "homepage": "https://github.com/Ezviz-OpenBiz/EZUIKit-hls", + "repository": { + "type": "git", + "url": "git+https://github.com/Ezviz-OpenBiz/EZUIKit-hls.git", + "branch": "main", + "platform": "github" } } From e364872d08a031596e6d0a381c45ebcade93b2d0 Mon Sep 17 00:00:00 2001 From: ShineShao Date: Thu, 1 Aug 2024 11:41:13 +0800 Subject: [PATCH 12/20] feat: update version 0.1.0-beta.2 --- examples/vue-app/package.json | 2 +- examples/vue-app/pnpm-lock.yaml | 8 ++++---- examples/vue-app/public/decoder.worker.js | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/vue-app/package.json b/examples/vue-app/package.json index 6757120..dd17a15 100644 --- a/examples/vue-app/package.json +++ b/examples/vue-app/package.json @@ -10,7 +10,7 @@ "format": "prettier --write src/" }, "dependencies": { - "@ezuikit/player-hls": "^0.1.0-beta.1", + "@ezuikit/player-hls": "^0.1.0-beta.2", "vue": "^3.3.4" }, "devDependencies": { diff --git a/examples/vue-app/pnpm-lock.yaml b/examples/vue-app/pnpm-lock.yaml index f4a9951..12a2637 100644 --- a/examples/vue-app/pnpm-lock.yaml +++ b/examples/vue-app/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: '@ezuikit/player-hls': - specifier: ^0.1.0-beta.1 - version: 0.1.0-beta.1 + specifier: ^0.1.0-beta.2 + version: 0.1.0-beta.2 vue: specifier: ^3.3.4 version: 3.4.35 @@ -307,8 +307,8 @@ packages: ua-parser-js: 1.0.37 dev: false - /@ezuikit/player-hls@0.1.0-beta.1: - resolution: {integrity: sha512-IxepiCKym2sZTnsejGnIt+R5JMadTovAhpDFSbZ4sjFXXnMrRZYTgM9lyIGdjJCaA8LAseA0QmHRRslD/zHjHA==} + /@ezuikit/player-hls@0.1.0-beta.2: + resolution: {integrity: sha512-iYe9Hft4dwxndrFwJCe8OlkM7Ir3gpox1oJe633R/tEmKfXxOino6Pbo3xgyIa8YmXBEQnuDeXg5+Hb2h8KVoQ==} dependencies: '@ezuikit/player-base': 0.1.0 '@ezuikit/utils-collect': 0.1.0 diff --git a/examples/vue-app/public/decoder.worker.js b/examples/vue-app/public/decoder.worker.js index e229e81..e544318 100644 --- a/examples/vue-app/public/decoder.worker.js +++ b/examples/vue-app/public/decoder.worker.js @@ -1,6 +1,6 @@ /* * -* DecoderWorker.js v0.1.0-beta.1 +* DecoderWorker.js v0.1.0-beta.2 * Copyright (c) 2024-8-1 Ezviz-OpenBiz * . * From 0493b37703423e3f71cb9bec5e9a22097d2c2f06 Mon Sep 17 00:00:00 2001 From: ShineShao Date: Thu, 1 Aug 2024 11:41:51 +0800 Subject: [PATCH 13/20] feat: update version 0.1.0-beta.2 --- examples/base-app/index.html | 7 ++++++- examples/base-app/package.json | 2 +- examples/base-app/pnpm-lock.yaml | 8 ++++---- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/examples/base-app/index.html b/examples/base-app/index.html index 5daa1dc..502bfc1 100644 --- a/examples/base-app/index.html +++ b/examples/base-app/index.html @@ -52,6 +52,7 @@

+
@@ -72,11 +73,11 @@ var $init = document.getElementById("init"); var $play = document.getElementById("play"); var $pause = document.getElementById("pause"); + var $fullscreen = document.getElementById("fullscreen"); var $playHref = document.getElementById("playUrl"); var $destroy = document.getElementById("destroy"); var $getVersion = document.getElementById("getVersion"); - var $setDebug = document.getElementById("setDebug"); var $setVolume = document.getElementById("setVolume"); var $setRotate = document.getElementById("setRotate"); var $setScaleMode = document.getElementById("setScaleMode"); @@ -127,6 +128,10 @@ $pause.addEventListener("click", function () { if (player) player.pause(); }); + + $fullscreen.addEventListener("click", function () { + if (player) player.fullscreen(); + }); $destroy.addEventListener("click", function () { if (player) { diff --git a/examples/base-app/package.json b/examples/base-app/package.json index d926868..778d2ea 100644 --- a/examples/base-app/package.json +++ b/examples/base-app/package.json @@ -9,6 +9,6 @@ "http-server": "^14.1.1" }, "dependencies": { - "@ezuikit/player-hls": "^0.1.0-beta.1" + "@ezuikit/player-hls": "^0.1.0-beta.2" } } diff --git a/examples/base-app/pnpm-lock.yaml b/examples/base-app/pnpm-lock.yaml index 36899f1..027fdb1 100644 --- a/examples/base-app/pnpm-lock.yaml +++ b/examples/base-app/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: '@ezuikit/player-hls': - specifier: ^0.1.0-beta.1 - version: 0.1.0-beta.1 + specifier: ^0.1.0-beta.2 + version: 0.1.0-beta.2 devDependencies: http-server: @@ -28,8 +28,8 @@ packages: ua-parser-js: 1.0.37 dev: false - /@ezuikit/player-hls@0.1.0-beta.1: - resolution: {integrity: sha512-IxepiCKym2sZTnsejGnIt+R5JMadTovAhpDFSbZ4sjFXXnMrRZYTgM9lyIGdjJCaA8LAseA0QmHRRslD/zHjHA==} + /@ezuikit/player-hls@0.1.0-beta.2: + resolution: {integrity: sha512-iYe9Hft4dwxndrFwJCe8OlkM7Ir3gpox1oJe633R/tEmKfXxOino6Pbo3xgyIa8YmXBEQnuDeXg5+Hb2h8KVoQ==} dependencies: '@ezuikit/player-base': 0.1.0 '@ezuikit/utils-collect': 0.1.0 From 49223636f2cd0860599a081c65d7022dcd018eb0 Mon Sep 17 00:00:00 2001 From: ShineShao Date: Thu, 1 Aug 2024 11:43:58 +0800 Subject: [PATCH 14/20] docs: update --- README.md | 2 + examples/react-app/package.json | 2 +- pnpm-lock.yaml | 117 ++++++++++++++++++++++++++++++++ 3 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 pnpm-lock.yaml diff --git a/README.md b/README.md index 941d7a6..867c91f 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ ## @ezuikit/player-hls +hls 直播播放器, 支持视频H264, H265, 音频 AAC 播放。 + ## 安装 ```bash diff --git a/examples/react-app/package.json b/examples/react-app/package.json index c6f13bc..a59cfdf 100644 --- a/examples/react-app/package.json +++ b/examples/react-app/package.json @@ -6,7 +6,7 @@ "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", - "@ezuikit/player-hls": "^0.1.0-beta.1", + "@ezuikit/player-hls": "^0.1.0-beta.2", "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..6a3038e --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,117 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@ezuikit/player-base': + specifier: 0.1.0 + version: 0.1.0 + '@ezuikit/utils-collect': + specifier: ^0.1.0 + version: 0.1.0 + '@ezuikit/utils-i18n': + specifier: ^1.0.1 + version: 1.0.1 + '@ezuikit/utils-logger': + specifier: ^1.0.1 + version: 1.0.1 + '@ezuikit/utils-tools': + specifier: ^1.0.2 + version: 1.0.3 + dayjs: + specifier: ^1.11.10 + version: 1.11.12 + eventemitter3: + specifier: ^5.0.1 + version: 5.0.1 + hls.js: + specifier: ^1.5.7 + version: 1.5.13 + lodash-es: + specifier: ^4.17.21 + version: 4.17.21 + screenfull: + specifier: ^6.0.2 + version: 6.0.2 + ua-parser-js: + specifier: 1.0.37 + version: 1.0.37 + +packages: + + /@ezuikit/player-base@0.1.0: + resolution: {integrity: sha512-IcJqnZr9FmjBCnIrmqY7oHdyDuYxRWhDZB+K+gi+4oenFjFV4aLCCG7RFPxkidHzi3TTF2f1Bm5yObZzNDqkfw==} + dependencies: + '@ezuikit/utils-collect': 0.1.0 + '@ezuikit/utils-logger': 1.0.1 + '@ezuikit/utils-tools': 1.0.3 + eventemitter3: 5.0.1 + lodash-es: 4.17.21 + screenfull: 6.0.2 + ua-parser-js: 1.0.37 + dev: false + + /@ezuikit/utils-collect@0.1.0: + resolution: {integrity: sha512-85lWlB/VCaooPPkCK3nEB4F3UKgO+HbmoPEq4U1tH/ObVP7IJ7eURrFUmQT1CKsqjH5xz5g4DgZzHWgYrwGcCQ==} + dev: false + + /@ezuikit/utils-i18n@1.0.1: + resolution: {integrity: sha512-uUjN3ADHV2ZG4QznuA7FB89/ck8AGV4qS8hm/sqeSA6/ie4ryYw8MS4wIv71WgPBIgIVDfASuEapyLOwq7R2aQ==} + dependencies: + i18n-js: 4.4.3 + dev: false + + /@ezuikit/utils-logger@1.0.1: + resolution: {integrity: sha512-qak0MXh4vWZCji3aSCfHdWR3EbZCaqS0iMT8/QWuWPRr0vDmTRMP3kFOAw1MuMraR0ocjPBE2PaTEmUuwVqaAw==} + dev: false + + /@ezuikit/utils-tools@1.0.3: + resolution: {integrity: sha512-4vJOFAAmmIojfCf43LwXwQNffoyUad2c/HOZwNexHsMqcvC/yLeDmqm5Y5Kp4BoZT/LHfMpy9fJJ3W22+ikXaQ==} + dev: false + + /bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + dev: false + + /dayjs@1.11.12: + resolution: {integrity: sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==} + dev: false + + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: false + + /hls.js@1.5.13: + resolution: {integrity: sha512-xRgKo84nsC7clEvSfIdgn/Tc0NOT+d7vdiL/wvkLO+0k0juc26NRBPPG1SfB8pd5bHXIjMW/F5VM8VYYkOYYdw==} + dev: false + + /i18n-js@4.4.3: + resolution: {integrity: sha512-QIIyvJ+wOKdigL4BlgwiFFrpoXeGdlC8EYgori64YSWm1mnhNYYjIfRu5wETFrmiNP2fyD6xIjVG8dlzaiQr/A==} + dependencies: + bignumber.js: 9.1.2 + lodash: 4.17.21 + make-plural: 7.4.0 + dev: false + + /lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + dev: false + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: false + + /make-plural@7.4.0: + resolution: {integrity: sha512-4/gC9KVNTV6pvYg2gFeQYTW3mWaoJt7WZE5vrp1KnQDgW92JtYZnzmZT81oj/dUTqAIu0ufI2x3dkgu3bB1tYg==} + dev: false + + /screenfull@6.0.2: + resolution: {integrity: sha512-AQdy8s4WhNvUZ6P8F6PB21tSPIYKniic+Ogx0AacBMjKP1GUHN2E9URxQHtCusiwxudnCKkdy4GrHXPPJSkCCw==} + engines: {node: ^14.13.1 || >=16.0.0} + dev: false + + /ua-parser-js@1.0.37: + resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} + dev: false From cd3edc68dc7ad192f98e6b4e6add8b25976db184 Mon Sep 17 00:00:00 2001 From: ShineShao Date: Thu, 1 Aug 2024 12:49:52 +0800 Subject: [PATCH 15/20] feat: update version 0.1.0-beta.2 --- examples/react-app/pnpm-lock.yaml | 8 ++++---- examples/react-app/src/Player.jsx | 7 ++++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/examples/react-app/pnpm-lock.yaml b/examples/react-app/pnpm-lock.yaml index 7dce4a4..7de139c 100644 --- a/examples/react-app/pnpm-lock.yaml +++ b/examples/react-app/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: '@ezuikit/player-hls': - specifier: ^0.1.0-beta.1 - version: 0.1.0-beta.1 + specifier: ^0.1.0-beta.2 + version: 0.1.0-beta.2 '@testing-library/jest-dom': specifier: ^5.17.0 version: 5.17.0 @@ -1794,8 +1794,8 @@ packages: ua-parser-js: 1.0.37 dev: false - /@ezuikit/player-hls@0.1.0-beta.1: - resolution: {integrity: sha512-IxepiCKym2sZTnsejGnIt+R5JMadTovAhpDFSbZ4sjFXXnMrRZYTgM9lyIGdjJCaA8LAseA0QmHRRslD/zHjHA==} + /@ezuikit/player-hls@0.1.0-beta.2: + resolution: {integrity: sha512-iYe9Hft4dwxndrFwJCe8OlkM7Ir3gpox1oJe633R/tEmKfXxOino6Pbo3xgyIa8YmXBEQnuDeXg5+Hb2h8KVoQ==} dependencies: '@ezuikit/player-base': 0.1.0 '@ezuikit/utils-collect': 0.1.0 diff --git a/examples/react-app/src/Player.jsx b/examples/react-app/src/Player.jsx index 6c4af0b..d54c4a8 100644 --- a/examples/react-app/src/Player.jsx +++ b/examples/react-app/src/Player.jsx @@ -3,6 +3,7 @@ import { useCallback, useEffect, useRef } from "react"; import HlsPlayer from "@ezuikit/player-hls"; function Player() { + /** @type { React.MutableRefObject} */ const playerRef = useRef(); const urlRef = useRef(); const containerRef = useRef(); @@ -74,9 +75,9 @@ function Player() { } }, []); - const handleCancelFullscreen = useCallback(() => { + const handleExitFullscreen = useCallback(() => { if (playerRef.current) { - playerRef.current.cancelFullscreen(); + playerRef.current.exitFullscreen(); } }, []); @@ -103,7 +104,7 @@ function Player() { - +
From 84367b4565adacda6026eca5e27d94083e069360 Mon Sep 17 00:00:00 2001 From: ShineShao Date: Thu, 1 Aug 2024 12:50:12 +0800 Subject: [PATCH 16/20] chore: update jsdoc --- examples/vue-app/src/components/Player.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/vue-app/src/components/Player.vue b/examples/vue-app/src/components/Player.vue index 82ac0e2..92fddc4 100644 --- a/examples/vue-app/src/components/Player.vue +++ b/examples/vue-app/src/components/Player.vue @@ -5,6 +5,7 @@ import HlsPlayer from '@ezuikit/player-hls'; let player = null onMounted(() => { + /** @type {HlsPlayer} */ player = new HlsPlayer({ id: 'container', url: 'https://open.ys7.com/v3/openlive/AA2615287_1_1.m3u8?expire=1753581976&id=739061430059499520&t=7842a33355d630ec646075c8637e59ae589e733f6b56105812ef37c2b78d0770&ev=100', From 9857e164cdaf1ead0da3c4963b608590a0017f5b Mon Sep 17 00:00:00 2001 From: ShineShao Date: Thu, 1 Aug 2024 12:54:14 +0800 Subject: [PATCH 17/20] version: 0.1.0 --- dist/decoder.worker.js | 2 +- dist/index.esm.js | 4 ++-- dist/index.js | 4 ++-- dist/index.umd.js | 4 ++-- package.json | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dist/decoder.worker.js b/dist/decoder.worker.js index e544318..4b8dbac 100644 --- a/dist/decoder.worker.js +++ b/dist/decoder.worker.js @@ -1,6 +1,6 @@ /* * -* DecoderWorker.js v0.1.0-beta.2 +* DecoderWorker.js v0.1.0 * Copyright (c) 2024-8-1 Ezviz-OpenBiz * . * diff --git a/dist/index.esm.js b/dist/index.esm.js index 55da091..aa87c8a 100644 --- a/dist/index.esm.js +++ b/dist/index.esm.js @@ -1,8 +1,8 @@ /* * -* HlsPlayer.js v0.1.0-beta.2 +* HlsPlayer.js v0.1.0 * Copyright (c) 2024-8-1 Ezviz-OpenBiz * . * */ -import e,{Video as t}from"@ezuikit/player-base";import i from"@ezuikit/utils-collect";import n from"hls.js";import{addVc as s,getStaticPath as r}from"@ezuikit/utils-tools";import o from"@ezuikit/utils-logger";import{merge as a}from"lodash-es";import l from"eventemitter3";var u=1,h=2,c=3,d="aac",p="h265",f="hevc",m="m3u8",v="hls",g=0,y=1,_=600,T=400,w=30,P=40,C=!1,x=44100,S=20,L="ONCE",b="SWAP",R=0,D=265,E=1001,k=1002,M=1003;var A,I=function(){return window.WebAssembly&&"object"==("undefined"==typeof WebAssembly?"undefined":(e=WebAssembly)&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e);var e};function B(){return(new Date).getTime()}var F=window.AudioContext||(null==(A=window)?void 0:A.webkitAudioContext),N=function(){function e(e){var t=this;this.options={sampleRate:e.sampleRate||x,appendType:e.appendType||g,playMode:e.playMode||b,isLive:e.isLive},this.logger=null==e?void 0:e.logger,this.sourceChannel=-1,this.audioCtx=new F({latencyHint:"interactive",sampleRate:e.sampleRate}),this.gainNode=null,this.sourceList=[],this.startStatus=!1,this.sampleQueue=[],this.nextBuffer=null,this.playTimestamp=0,this.playStartTime=0,this.durationMs=-1,this.volume=e.volume||0,this.onLoadCache=null,this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList[0].onended=function(){t.swapSource(0,1)},this.sourceList[1].onended=function(){t.swapSource(1,0)},this.gainNode=this.audioCtx.createGain(),this.gainNode.gain.value=this.volume,this.gainNode.connect(this.audioCtx.destination),this.runNextBuffer()}var t=e.prototype;return t.resetStartParam=function(){this.playTimestamp=0,this.playStartTime=0},t.setOnLoadCache=function(e){this.onLoadCache=e},t.setDurationMs=function(e){void 0===e&&(e=-1),this.durationMs=e},t.setVolume=function(e){void 0===e&&(e=0),this.volume=e,this.gainNode.gain.value=e},t.getAlignVPTS=function(){return this.playTimestamp+(B()-this.playStartTime)/1e3},t.swapSource=function(e,t){if(void 0===e&&(e=-1),void 0===t&&(t=-1),!this.startStatus)return null;if(e<0||e>=this.sourceList.length)return null;if(t<0||t>=this.sourceList.length)return null;try{this.sourceChannel===e&&null!==this.sourceList[e]&&(this.sourceList[e].disconnect(this.gainNode),this.sourceList[e]=null)}catch(t){this.logger.error("[DEFINE ERROR] this audioCore disconnect source Index:"+e+" error happened!",t)}(this.sourceChannel=t,-2===this.decodeSample(t,e)&&this.options.isLive)&&(this.getAlignVPTS()>=this.durationMs/1e3-.04?this.pause():null==this||this.onLoadCache());return null},t.addSample=function(e){return void 0===e&&(e=null),!(null==e||!e||void 0===e)&&(0===this.sampleQueue.length&&(this.seekPos=null==e?void 0:e.pts),this.sampleQueue.push(e),!0)},t.runNextBuffer=function(){var e=this;window.setInterval((function(){if(!(null!=e.nextBuffer||e.sampleQueue.length=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){s.swapSource(e,t)}),0===this.sampleQueue.length)return this.options.isLive?(this.sourceList[e].connect(this.gainNode),this.sourceList[e].startState||null==(n=this.sourceList[e])||null==(i=n.start)||i.call(n),this.sourceList[e].onended=function(){s.swapSource(e,t)},this.sourceList[e].stop(),0):-2;if(this.sourceList[e].buffer)return this.swapSource(e,t),0;if(null==this.nextBuffer||this.nextBuffer.data.length<1){var r,o,a=this.sourceList[e];return a.connect(this.gainNode),(null==a?void 0:a.startState)||null==(o=this.sourceList[e])||null==(r=o.start)||r.call(o),a.startState=!0,a.stop(),1}var l=this.nextBuffer.data.buffer;this.playTimestamp=this.nextBuffer.pts,this.playStartTime=B();try{this.audioCtx.decodeAudioData(l,(function(t){var i,n;null!==s.sourceList[e]&&(s.sourceList[e].buffer=t,s.sourceList[e].connect(s.gainNode),s.sourceList[e].startState||null==(n=s.sourceList[e])||null==(i=n.start)||i.call(n),s.sourceList[e].startState=!0)}),(function(e){s.logger.error("Error audioCore with decoding audio data",e)}))}catch(e){return this.nextBuffer=null,this.logger.log("decodeAudioData error",e),-3}return this.nextBuffer=null,0},t.decodeWholeSamples=function(e){var t=this;if(void 0===e&&(e=-1),this.sourceChannel=e,e<0||e>=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){}),0===this.sampleQueue.length)return-2;for(var i=null,n=null,s=0;s",e)}},e}(),O=function(){function e(e){this.limit=e.limit||200,this.logger=null==e?void 0:e.logger,this.yuvCache=[]}var t=e.prototype;return t.appendCacheByCacheYuv=function(e){return this.yuvCache.push(e),this.yuvCache.length>=this.limit?(this.shiftYuv(),h):u},t.getState=function(){return this.yuvCache.length<=0?c:this.yuvCache.length>=this.limit?h:u},t.cleanPipeline=function(){this.yuvCache=[],this.yuvCache.length=0},t.shiftYuv=function(){return this.yuvCache.length<=0?null:this.yuvCache.shift()},e}(),U=function(){function e(e,t,i,n,s,r){this.pts=e,this.width=t,this.height=i,this.imageBufferY=n,this.imageBufferB=s,this.imageBufferR=r}return e.prototype.setYuv=function(e,t,i,n,s,r){this.pts=e,this.width=t,this.height=i,this.imageBufferY=n,this.imageBufferB=s,this.imageBufferR=r},e}(),$=function(){function e(e){this.gl=e,this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)}var t=e.prototype;return t.bind=function(e,t,i){var n=this.gl;n.activeTexture([n.TEXTURE0,n.TEXTURE1,n.TEXTURE2][e]),n.bindTexture(n.TEXTURE_2D,this.texture),n.uniform1i(n.getUniformLocation(t,i),e)},t.fill=function(e,t,i){var n=this.gl;n.bindTexture(n.TEXTURE_2D,this.texture),n.texImage2D(n.TEXTURE_2D,0,n.LUMINANCE,e,t,0,n.LUMINANCE,n.UNSIGNED_BYTE,i)},e}(),W=function(){function e(e,t){this.gl=null,this.gl=e.getContext("webgl")||e.getContext("experimental-webgl"),this.program=this.gl.createProgram();var i=["attribute highp vec4 aVertexPosition;","attribute vec2 aTextureCoord;","varying highp vec2 vTextureCoord;","void main(void) {"," gl_Position = aVertexPosition;"," vTextureCoord = aTextureCoord;","}"].join("\n"),n=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(n,i),this.gl.compileShader(n);var s=["precision highp float;","varying lowp vec2 vTextureCoord;","uniform sampler2D YTexture;","uniform sampler2D UTexture;","uniform sampler2D VTexture;","const mat4 YUV2RGB = mat4","("," 1.1643828125, 0, 1.59602734375, -.87078515625,"," 1.1643828125, -.39176171875, -.81296875, .52959375,"," 1.1643828125, 2.017234375, 0, -1.081390625,"," 0, 0, 0, 1",");","void main(void) {"," gl_FragColor = vec4( texture2D(YTexture, vTextureCoord).x, texture2D(UTexture, vTextureCoord).x, texture2D(VTexture, vTextureCoord).x, 1) * YUV2RGB;","}"].join("\n"),r=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(r,s),this.gl.compileShader(r),this.gl.attachShader(this.program,n),this.gl.attachShader(this.program,r),this.gl.linkProgram(this.program),this.gl.useProgram(this.program),this.gl.getProgramParameter(this.program,this.gl.LINK_STATUS);var o=this.gl.getAttribLocation(this.program,"aVertexPosition");this.gl.enableVertexAttribArray(o);var a=this.gl.getAttribLocation(this.program,"aTextureCoord");this.gl.enableVertexAttribArray(a),this.verticesBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.verticesBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(o,3,this.gl.FLOAT,!1,0,0),this.texCoordBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texCoordBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(a,2,this.gl.FLOAT,!1,0,0),this.gl.y=new $(this.gl),this.gl.u=new $(this.gl),this.gl.v=new $(this.gl),this.gl.y.bind(0,this.program,"YTexture"),this.gl.u.bind(1,this.program,"UTexture"),this.gl.v.bind(2,this.program,"VTexture")}var t=e.prototype;return t.renderFrame=function(e,t,i,n,s){this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.y.fill(n,s,e),this.gl.u.fill(n>>1,s>>1,t),this.gl.v.fill(n>>1,s>>1,i),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4)},t.destroyContext=function(){try{this.gl.deleteProgram(this.program),this.gl.deleteBuffer(this.verticesBuffer),this.gl.deleteBuffer(this.texCoordBuffer),this.gl.deleteTexture(this.gl.y.texture),this.gl.deleteTexture(this.gl.u.texture),this.gl.deleteTexture(this.gl.v.texture),this.gl=null,this.program=null,this.verticesBuffer=null,this.texCoordBuffer=null}catch(e){}},e}(),V=function(e,t){return{cmd:e,data:t}},j="wasmLoading",Y="wasmLoaded",H="wasmFailed",X="videoCallback",Q="decodeCodecContext",z="destroy",G="demuxTsStream",J="demuxCoreReceive",q="readPacket",K="readPacketEnd",Z="mediaInfo",ee="ezui-hls",te={width:600,height:400,volume:0,retry:20,autoPlay:!0,staticPath:"",isLive:!0,loggerOptions:{name:"HLS",level:"INFO",showTime:!0}},ie={disableContextmenu:!0},ne=function(){function e(e){void 0===e&&(e={}),this.options=Object.assign({},ie,e),this.logger=this.options.logger,this.event=this.options.event,this._classVideo=ee+"-video",this._$container=document.getElementById(this.options.id),this._render()}var i=e.prototype;return i._render=function(){var e,i;if("video"===this.options.nodeName)this.$video=new t(this._$container,this.options).$video;else{var n;if(this.$video=document.createElement(this.options.nodeName),this._$container.innerHTML="",this._$container.appendChild(this.$video),this.options.disableContextmenu)null==(n=this.$video)||n.addEventListener("contextmenu",(function(e){return e.preventDefault(),!1}));this.$video.classList.add(this._classVideo),this.$video.style.cssText+="object-fit: contain; z-index:1;"}null==(i=this.event)||null==(e=i.emit)||e.call(i,"rendered")},i._isVideo=function(){return"VIDEO"===this.$video.nodeName},i.destroy=function(){if(this.$video&&this._$container&&this.$video){try{this._$container.removeChild(this.$video)}catch(e){}this.$video=null}},e}();function se(e,t,i){return t&&function(e,t){for(var i=0;i=1&&(null==(i=e)||null==(t=i.onLoadCacheFinished)||t.call(i),window.clearInterval(e.cacheInterval),e.cacheInterval=null,e.isCaching===k&&e.play(e.playParams),e.isCaching=E)}),40))}},i._playFunc=function(){var e=!1;if(B()-this.calculateStartTime>=this.frameTime-this.preCostTime){e=!0;var t=!0;if(this.calculateStartTime=B(),this.options.audioNone)this.playFrameYUV(t);else{this.fix_poc_err_skip>0&&(this.fix_poc_err_skip--,t=!1);var i=this.videoPTS-this.audio.getAlignVPTS();if(i>0)return void(this.playParams.seekEvent&&!this.options.audioNone&&this.audio.setVolume(0));if(t){if(!(t=-1*i<=1*this.frameTimeSec)){for(var n=parseInt(i/this.frameTimeSec+""),s=0;s",e,n,i),n>=i&&(t.playFrameYUV(!0),i+=1)}),this.frameTime||5)}else(this.videoPTS>=this.playParams.seekPos&&!this.isNewSeek||0===this.playParams.seekPos||0===this.playParams.seekPos)&&(this.frameTime=1e3/this.options.fps,this.frameTimeSec=this.frameTime/1e3,this.options.audioNone||this.audio.play(),this._volume=this.options.audioNone?0:this.audio.volume,this.loop=window.setInterval((function(){var e=B();t._playFunc(),t.preCostTime=B()-e}),this.frameTime||5));return this.setVolume(this._volume),Promise.resolve()},i.stop=function(){this.destroy(),this.stream=new Uint8Array},i.destroy=function(){return void 0!==this.gl&&null!==this.gl&&(this.gl.destroyContext(),this.gl=null),this.endAudio(),this.cacheLoop&&window.clearInterval(this.cacheLoop),this.cacheLoop=null,this.loop&&window.clearInterval(this.loop),this.loop=null,this.pause(),this.decoderWorker.postMessage(V(z)),this.stream=null,this.frameList=null,this.durationMs=-1,this.videoPTS=0,this.isPlaying=!1,this.$video.remove(),!0},i.nextNalu=function(e){if(void 0===e&&(e=1),this.stream.length<=4)return!1;for(var t=-1,i=0;i=this.stream.length){if(-1===t)return!1;var n=this.stream.subarray(t);return this.stream=new Uint8Array,n}var s="0 0 1"===this.stream.slice(0,3).join(" "),r="0 0 0 1"===this.stream.slice(0,4).join(" ");if(s||r){if(-1===t)t=i;else{if(e<=1){var o=this.stream.subarray(t,i);return this.stream=this.stream.subarray(i),o}e-=1}i+=3}}return!1},i.playFrameYUV=function(e){void 0===e&&(e=!1);var t=this.cacheYuvBuf.shiftYuv();if(!t)return this.noCacheFrame+=1,e&&!this.playParams.seekEvent&&this.loadCache(),!1;this.noCacheFrame=0;var i=t.pts;return this.videoPTS=i,this.drawImage(t.width,t.height,t.imageBufferY,t.imageBufferB,t.imageBufferR),t=null,e&&!this.playParams.seekEvent&&this.isPlaying&&this.loadCache(),!0},i.drawImage=function(e,t,i,n,s){this.$video.width===e&&this.$video.height===t||(this.$video.width=e,this.$video.height=t),this.isCheckDisplay||this.checkDisplaySize(e,t);var r=e*t,o=e/2*(t/2),a=new Uint8Array(r+2*o);a.set(i,0),a.set(n,r),a.set(s,r+o),this.gl.renderFrame(i,n,s,e,t),a=null},i.checkDisplaySize=function(e,t){var i,n=e/(null==(i=this.options)?void 0:i.width)>t/this.options.height,s=+(this.options.width/e).toFixed(2),r=+(this.options.height/t).toFixed(2),o=n?s:r,a=this.options.fixed,l=a?this.options.width:parseInt(e*o+""),u=a?this.options.height:parseInt(t*o+"");return this.$video.style.maxWidth="100%",this.$video.style.maxHeight="100%",this.options.width/this.options.height>=1&&l/u>=1?this.$video.style.width="100%":this.$video.style.height="100%",this.isCheckDisplay=!0,[l,u]},i._onWorkerMessage=function(){var e=this;this.decoderWorker.onmessage=function(t){var i=t.data;if(i.cmd===X){var n=i.data,s=n.ptsSec,r=n.strideY,o=n.height;n.width;var a=n.bufY,l=n.bufU,u=n.bufV,h=new U(s,r,o,a,l,u);e.cacheYuvBuf.appendCacheByCacheYuv(h),h=null}}},i.initVideoAndAudio=function(){this.$video.width=this.options.width,this.$video.height=this.options.height,this.gl=new W(this.$video,{preserveDrawingBuffer:!1}),this.options.audioNone||(this.audio=new N({logger:this.logger,sampleRate:this.options.sampleRate,appendType:this.options.appendHevcType,volume:this.options.volume,isLive:this.options.isLive})),this.isPlayLoadingFinish=1},se(t,[{key:"volume",get:function(){var e;return(null==(e=this.audio)?void 0:e.volume)||this._volume},set:function(e){this.setVolume(e)}}]),t}(ne),le=[/#EXT-X-PROGRAM-DATE-TIME.+\n/g],ue={lineDelimiter:/\r?\n/,extensionHeader:"#EXTM3U",tagPrefix:"#EXT",segmentPrefix:"#EXTINF",segmentParse:/^#EXTINF: *([0-9.]+)(, *(.+?)?)?$/,tagParse:/^#EXT-X-([A-Z-]+)(:(.+))?$/,version:"VERSION",allowCache:"ALLOW-CACHE",combined:"COMBINED",endList:"ENDLIST",targetDuration:"TARGETDURATION",mediaSequence:"MEDIA-SEQUENCE",discontinuity:"DISCONTINUITY",streamInf:"STREAM-INF",isComment:function(e){return e&&"#"===e[0]&&!e.startsWith(ue.tagPrefix)},isBlank:function(e){return""===e},canStrip:function(e){return ue.isBlank(e)||ue.isComment(e)},defaultMinDur:99999},he=function(){function e(e){this._retry=10,this.logger=null==e?void 0:e.logger,this.initState=!0,this.controller=new AbortController,this._slices=[],this._type=v,this._preURI="",this.duration=-1,this.onTransportStream=null,this.onFinished=null}var t=e.prototype;return t.destroy=function(){this.initState=!1},t.fetchM3u8=function(e){var t=this,i=this;if(this.initState){var n=function(t){return new Promise((function(i,n){var s=new XMLHttpRequest;s.open("GET",t),s.onload=function(){this.status>=200&&this.status<300&&(t!==this.responseURL?(e=this.responseURL,i(this.responseURL)):i(""))},s.onreadystatechange=function(){4===s.readyState&&200===s.status&&i(s.responseText)},s.onerror=function(){n(new Error("Network error."))},s.send()}))};n(e).then((function(s){if(t._retry=10,i._uriParse(e)){var r=i._m3u8Parse(s);if("number"==typeof r&&r>=0)var o=setTimeout((function(){i.fetchM3u8(e),clearTimeout(o)}),200*r)}return n=null,s})).catch((function(s){if(t.logger.error("[M3u8Base] fetch m3u8 url Error ==> ",s),n=null,t._retry>=1)var r=setTimeout((function(){i.fetchM3u8(e),clearTimeout(r)}),500);t._retry--}))}},t._uriParse=function(e){this._preURI="";var t=e.split("://"),i=null,n=null;if(t.length<1)return this.logger.log("HLS URI ERROR : "+e),!1;t.length>1?(i=t[0],n=t[1].split("/"),this._preURI=i+"://"):n=t[0].split("/");for(var s=0;sc&&(s=c);var d,p=n[o+=1],f=null;if(p.includes("http"))f=p;else{if("/"===p[0]){var v=this._preURI.split("//"),g=v[v.length-1].split("/");this._preURI=v[0]+"//"+g[0]}f=this._preURI+p}if(!this._slices.includes(f))this._slices.push(f),null==this||null==(d=this.onTransportStream)||d.call(this,f,c)}}}this._slices.length>500&&(this._slices=this._slices.slice(-500));var y={type:this._type,duration:-1};return null==this||null==(t=this.onFinished)||t.call(this,y),s},t._readTag=function(e){var t=ue.tagParse.exec(e);return null!==t?{key:t[1],value:t[3]}:null},e}(),ce=function(){function e(e){this.sampleRate=e.sampleRate,this.frameDurMs=Math.floor(1024e3/this.sampleRate),this.frameDurSec=this.frameDurMs/1e3}var t=e.prototype;return t.updateOptions=function(e){this.sampleRate=e.sampleRate,this.frameDurMs=1024e3/this.sampleRate,this.frameDurSec=this.frameDurMs/1e3},t._getPktLen=function(e,t,i){return((3&e)<<11)+(t<<3)+((224&i)>>5)},t.sliceAACFrames=function(e,t){for(var i=[],n=e,s=0;s>4==15){var r=this._getPktLen(t[s+3],t[s+4],t[s+5]);if(r<=0)continue;var o=t.subarray(s,s+r),a=new Uint8Array(r);a.set(o,0),i.push({ptime:n,data:a}),n+=this.frameDurSec,s+=r}else s+=1;return i},e}(),de="M3U8",pe="TS",fe="FETCH",me=function(){function e(){}return e.init=function(t){e.collect=new i(t)},e.send=function(t,i){var n,s;null==(s=e.collect)||null==(n=s.send)||n.call(s,{action:t,logInfo:i})},e.updateParams=function(t){e.collect.updateExtendsInfo(t)},e}();function ve(e,t,i){return t&&function(e,t){for(var i=0;i ",e),s=null})).catch((function(n){var s,r,o,a;t.logger.error("[MpegTsDemux] demuxerTsInit ERROR fetch ERROR ==> ",n),null==(r=t.event)||null==(s=r.emit)||s.call(r,pe,{data:n}),null==(a=t.event)||null==(o=a.emit)||o.call(a,fe,{data:n,type:pe}),null==i||i.onDemuxedFailed(n,e),me.send(100,{url:e,msg:"fetch error"})}))},t._demuxCore=function(e,t){e.length<=0||this.decoderWorker.postMessage(V(G,{buff:e,tsUrl:t}))},t.readMediaInfo=function(){return this.mediaInfo},t.readAudioNone=function(){var e;return null==(e=this.mediaInfo)?void 0:e.audioNone},t.isHEVC=function(){return this.mediaInfo.vCodec===f||this.mediaInfo.vCodec===p},t.destroy=function(){this.controller&&this.controller.abort(),this.controller=null,this.mediaInfo=null,this.aacDec=null},t._onWorkerMessage=function(){var e=this;e.logger.log("[demuxer] register _onWorkerMessage"),e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case Z:var n,s;if(e.mediaInfo=i.data,e.mediaInfo)null==(s=e.event)||null==(n=s.emit)||n.call(s,"mediaInfo",e.mediaInfo);break;case J:var r;if(e.mediaInfo.vCodec)null==e.aacDec?e.aacDec=new ce(e.mediaInfo):e.aacDec.updateOptions(e.mediaInfo),null==e||null==(r=e.onDemuxed)||r.call(e)}}))},ve(e,[{key:"vCodec",get:function(){return this.mediaInfo.vCodec}}]),e}(),_e=function(){function e(e,t,i,n){this.pts=e,this.dts=e,this.isKey=t,this.data=i,this.video=n}return e.prototype.setFrame=function(e,t,i,n){this.pts=e,this.isKey=t,this.data=i,this.video=n},e}(),Te=function(){function e(e){this.logger=null==e?void 0:e.logger,this.event=null==e?void 0:e.event,this.decoderWorker=e.decoderWorker,this.m3u8Base=new he(e),this.mpegTsDemux=new ye(e),this.tsList=[],this._startTime=0,this._aStartTime=0,this.lockWait={state:!1,lockMember:{dur:0}},this._timerFeed=null,this.seekPos=-1,this.vPreFramePTS=0,this.aPreFramePTS=0,this.audioNone=!1,this.isHevcParam=!1,this.vCodec="",this.aCodec=null,this.aChannel=0,this.durationMs=-1,this.fps=-1,this.sampleRate=-1,this.size={width:-1,height:-1},this.mediaInfo=null,this._onWorkerMessage(),this.onReadyOBJ=null,this.onFinished=null,this.onDemuxed=null,this.onSamples=null,this.onCacheProcess=null}var t=e.prototype;return t.getCachePTS=function(){return Math.max(this.vPreFramePTS,this.aPreFramePTS)},t.demux=function(e){var t=this,i=this;this.vPreFramePTS=0,this.aPreFramePTS=0,this.m3u8Base.onTransportStream=function(e,t){i.tsList.push({streamURI:e,streamDur:t}),i.lockWait.state=!1},this.m3u8Base.onFinished=function(e){var t;e.type===m?i.durationMs=1e3*e.duration:i.durationMs=-1,null==i||null==(t=i.onFinished)||t.call(i,i.onReadyOBJ,e)},this.mpegTsDemux.onDemuxedFailed=function(e,n){t.logger.error("[M3u8] onDemuxedFailed: ",e,n),i.lockWait.state=!1},this.mpegTsDemux.onDemuxed=function(){var e;t.logger.log("[M3u8] onDemuxed"),null==i.mediaInfo&&(i.mediaInfo=i.mpegTsDemux.readMediaInfo(),t.logger.log("[M3u8] mediaInfo: ",i.mediaInfo),i.isHevcParam=i.mpegTsDemux.isHEVC(),i.vCodec=i.mpegTsDemux.vCodec,i.aCodec=i.mediaInfo.aCodec,i.aChannel=i.mediaInfo.sampleChannel,i.fps=i.mediaInfo.fps,i.sampleRate=i.mediaInfo.sampleRate,(null===i.aCodec||""===i.aCodec||i.aChannel<=0)&&(i.audioNone=!0),i.mediaInfo.width>0&&i.mediaInfo.height>0&&(t.size.width=t.mediaInfo.width,t.size.height=t.mediaInfo.height)),null==i||null==(e=i.onDemuxed)||e.call(i,i.onReadyOBJ),i.mpegTsDemux&&t.decoderWorker.postMessage(V(q))},this.mpegTsDemux.onReady=function(){i._fetchM3u8AndIntervalTs(e)},this._timerTsWasm=window.setInterval((function(){1===Ae.__HLS_WASM_DecoderState__&&(i._fetchM3u8AndIntervalTs(e),window.clearInterval(i._timerTsWasm),i._timerTsWasm=null)}),500)},t._fetchM3u8AndIntervalTs=function(e){var t=this,i=this;this.logger.log("[M3u8] start fetch m3u8 url"),i.m3u8Base.fetchM3u8(e),i._timerFeed=window.setInterval((function(){if(i.tsList.length>0&&!i.lockWait.state)try{var e=i.tsList.shift();if(null!=e){var n=e.streamURI,s=e.streamDur;i.lockWait.state=!0,i.lockWait.lockMember.dur=+s,i.mpegTsDemux.demuxURL(n)}else t.logger.error("[M3u8] onTsReady need wait ")}catch(e){var r,o,a,l;t.logger.error("[M3u8] onTsReady ERROR:",e),null==(o=t.event)||null==(r=o.emit)||r.call(o,de,{data:e}),null==(l=t.event)||null==(a=l.emit)||a.call(l,fe,{data:e,type:de}),i.lockWait.state=!1}}),50)},t.destroy=function(){var e;this.m3u8Base&&(null==(e=this.m3u8Base)||e.destroy(),this.m3u8Base=null);this._timerFeed&&(window.clearInterval(this._timerFeed),this._timerFeed=null),this.mpegTsDemux&&(this.mpegTsDemux.destroy(),this.mpegTsDemux=null)},t.bindReady=function(e){this.onReadyOBJ=e},t.getACodec=function(){return this.aCodec},t.getVCodec=function(){return this.vCodec},t.getDurationMs=function(){return this.durationMs},t.getFPS=function(){return this.fps},t.getSampleRate=function(){return this.sampleRate},t.getSampleChannel=function(){return this.aChannel},t.getSize=function(){return this.size},t._onWorkerMessage=function(){this.logger.log("[M3U8] register _onWorkerMessage");var e=this;e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case q:var n,s=i.data,r=s.type,o=s.pts,a=s.ptime,l=s.keyframe,u=s.data,h=s.layer;if(u=new Uint8Array(u),1===r&&e.mpegTsDemux.mediaInfo.aCodec===d&&(u=e.mpegTsDemux.aacDec.sliceAACFrames(a,u)),0===r){var c=function(e){var t=e.nalu,i=e.vlc.vlc;null==t.vps&&(t.vps=new Uint8Array);var n=new Uint8Array(t.vps.length+t.sps.length+t.pps.length+t.sei.length+i.length);return n.set(t.vps,0),n.set(t.sps,t.vps.length),n.set(t.pps,t.vps.length+t.sps.length),n.set(t.sei,t.vps.length+t.sps.length+t.pps.length),n.set(i,t.vps.length+t.sps.length+t.pps.length+t.sei.length),n}(h),p=o,f=new _e(p,1===l,c,!0);e.vPreFramePTS=p,null==e||e.onSamples(e.onReadyOBJ,f)}else if(1===r){var m;if("aac"===(null==(m=e.mediaInfo)?void 0:m.aCodec)){for(var v=u,g=0;g0&&(e.$video.volume=e._options.volume)}),1e3)})),e.event.emit("parsed")}))}))}else if(this.$video.canPlayType("application/vnd.apple.mpegurl")){this.logger.log("Browser support application/vnd.apple.mpegurl : ",this.$video.canPlayType("application/vnd.apple.mpegurl")),this.$video.src=this._options.url;var i=!1;this.$video.addEventListener("canplay",(function(){!i&&e._options.autoPlay&&setTimeout((function(){e.$video.play().then((function(){e.logger.log("autoPlay video!"),setTimeout((function(){e._options.volume>0&&e.setVolume(e._options.volume)}),1e3),i=!0}))}),200)}))}else this.logger.warn("Browser not support hls")},i.isPlayingState=function(){return!this.$video.paused},i.play=function(){if(this.isPlayingState())return Promise.resolve();if(this._options.isLive&&(this.$video.buffered.length>=1&&this.$video.buffered.end(0)>1)){var e=this.$video.buffered.end(0)-1;this.$video.currentTime=e}return this.$video.play()},i.pause=function(){this.$video.pause()},i.setVolume=function(e){this.$video.muted&&(this.$video.muted=!1),this._volume=+(e||0),0===this._volume&&(this.$video.muted=!0),this.$video.volume=this._volume},i.destroy=function(){this.$video&&this.$video.pause(),this._hls&&(this._hls.destroy(),this._hls=null),e.prototype.destroy.call(this)},i._onEvent=function(){var e;(e=this).$video&&(e.$video.addEventListener("canplay",(function(){e.event.emit("canplay")})),e.$video.addEventListener("loadeddata",(function(){e.event.emit("loadeddata")})),e.$video.addEventListener("volumechange",(function(){e.event.emit("volumechange",{data:e.$video.volume})})),e.$video.addEventListener("waiting",(function(){e.event.emit("waiting")})),e.$video.addEventListener("timeupdate",(function(){var t;null==(t=e.event)||t.emit("timeupdate")})),e.$video.addEventListener("seeking",(function(){e.event.emit("seeking",{data:e.$video.currentTime})})),e.$video.addEventListener("seeked",(function(){e.event.emit("seeked")})),e.$video.addEventListener("abort",(function(){e.event.emit("abort")})),e.$video.addEventListener("error",(function(){var t;null==(t=e.event)||t.emit("error",{data:e.$video.error})})),e.$video.addEventListener("ended",(function(){e.event.emit("ended")})))},we(t,[{key:"volume",get:function(){return this._volume},set:function(e){this.setVolume(e)}}]),t}(ne);var Se="wasm_loaded",Le="wasm_failed",be="init";function Re(e,t){return Re=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Re(e,t)}var De=function(e){function t(t){var i;return void 0===t&&(t={}),i=e.call(this,t)||this,t.url=s(null==t?void 0:t.url,["h264","h265"]),function(e,t){if(((null==t?void 0:t.volume)||0)>1?e._volume=1:((null==t?void 0:t.volume)||0)<=0?e._volume=0:e._volume=+((null==t?void 0:t.volume)||0),t.volume=e._volume,e.options=a({},te,t),"string"!=typeof e.options.id)throw new Error("id is required!");e.logger=o(e.options.loggerOptions),e.event=new l,e.logger.log("HlsPlayer version: ",Ae.version),e.logger.log("HlsPlayer options: ",e.options),e.options.logger=e.logger}(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(i),t),i._containerClassName=ee+"-container",i._render(),i}!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Re(e,t)}(t,e);var i=t.prototype;return i._render=function(){this.$container.classList.add(this._containerClassName)},i.destroy=function(){this.$container&&(this.$container.classList.remove(this._containerClassName),this.$container.innerHTML="",this.$container=null)},t}(e);function Ee(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e=!0),this.playParam={durationMs:0,fps:0,sampleRate:0,size:{width:0,height:0},audioNone:e,videoCodec:R},!I())throw new Error("Browser not support WebAssembly!");this._onWorkerMessage()},i.play=function(){if(me.send(1,{name:"play"}),null===this.player)return Promise.resolve();if(this.playParam.videoCodec===R){var e={seekPos:0,isLive:this.options.isLive,accurateSeek:!0,seekEvent:!1,realPlay:!0};return this.player.play(e)}return this.player.play()},i.pause=function(){return me.send(1,{name:"pause"}),null!==this.player&&(this.player.pause(),!0)},i.destroy=function(){var t,i;return me.send(1,{name:"destroy"}),void 0!==this.player&&null!==this.player&&(this.playParam.videoCodec===R&&this._m3u8Obj&&(this._m3u8Obj.destroy(),this._m3u8Obj=null),this.player.destroy(),this._decoderWorker&&(this._decoderWorker.postMessage(V(z)),this._decoderWorker.terminate(),this._decoderWorker=null),this.logger.log("destroy"),null==(i=this.event)||null==(t=i.emit)||t.call(i,"destroy"),this.player=null,e.prototype.destroy.call(this),!0)},i.isPlaying=function(){return null!==this.player&&this.player.isPlayingState()},i.setVolume=function(e){var t;(e=+e)>1||e<0?this.logger.warn("volume volume value 0.0 ~ 1.0!"):((t=this).player||(t.event.emit("playerIsNull"),t.logger.warn("Player instance does not exist!"),0))&&(this.player.setVolume(e),this.event.emit("volumeChange",{data:e}))},i.getVersion=function(){return me.send(1,{name:"getVersion"}),"0.1.0-beta.2"},i._m3u8Entry=function(){var e=this;this._m3u8Obj=new Te({logger:this.logger,decoderWorker:this._decoderWorker,event:this.event}),this._m3u8Obj.bindReady(this),this._m3u8Obj.onFinished=function(e,t){},this._m3u8Obj.onCacheProcess=function(t){e.options.isLive||null==e.onCacheProcess||e.onCacheProcess.call(e,t)},this._m3u8Obj.onDemuxed=this._checkPlayer.bind(this),this._m3u8Obj.onSamples=this._hlsOnSamples.bind(this),this._m3u8Obj.demux(this.url)},i._checkPlayer=function(e,t){var i=this;if(null==i.player){var n,s,r;if(!(null==i||null==(n=i._m3u8Obj)?void 0:n.isHevcParam)||t)return null==i||null==(r=i._m3u8Obj)||null==(s=r.destroy)||s.call(r),i._m3u8Obj=null,this._decoderWorker.terminate(),this._decoderWorker=null,void(i.player=new xe(ke({},this.options,{event:this.event,logger:this.logger})));var o=i._m3u8Obj.getACodec(),a=i._m3u8Obj.getFPS(),l=i._m3u8Obj.getSampleRate(),u=i._m3u8Obj.getSize(),h=!1;h=i._m3u8Obj.getSampleChannel()<=0||""===o,i._softPlayer(0,a,l,u,h)}},i._hlsOnSamples=function(e,t){var i,n,s,r=this;if(t.video)null==(s=r.player)||null==(n=s.appendHevcFrame)||n.call(s,t);else if(!(null==(i=r._m3u8Obj)?void 0:i.audioNone)){var o,a;null==(a=r.player)||null==(o=a.appendAACFrame)||o.call(a,t)}},i._onWorkerMessage=function(){var e=this,i=this;this._decoderWorker.onmessage=function(n){var s=n.data;switch(s.cmd){case j:t.__HLS_WASM_DecoderState__=0;break;case Y:t.__HLS_WASM_DecoderState__=1,e.logger.log("Wasm already init over!"),i.event.emit(Se),i._decoderWorker.postMessage(V("registerWasmPlayer")),i._m3u8Entry();break;case H:t.__HLS_WASM_DecoderState__=-1,e.logger.error("Wasm init failed!",s),i.event.emit(Le,s),me.send("wasm",{name:"wasm loading failed"}),i._checkPlayer(!0)}}},i._softPlayer=function(e,t,i,n,s,r){var o,a,l=this;void 0===s&&(s=!1),void 0===r&&(r=null);var u,h=this;(this.playParam.durationMs=e,this.playParam.fps=t,this.playParam.sampleRate=i,this.playParam.size=n,this.playParam.audioNone=s,this.playParam.videoCodec=r||R,this.logger.log("this.playParam: ",this.playParam),this.logger.log("start init soft player"),this.player=new ae(ke({},h.options,{sampleRate:i,fps:t,appendHevcType:y,fixed:!1,id:this.options.id,audioNone:s,videoCodec:r,logger:this.logger,event:this.event,decoderWorker:this._decoderWorker})),this.player.onPlayingTime=function(e){var t;null==h||null==(t=h.onPlayTime)||t.call(h,e)},this.player.onPlayingFinish=function(){var e,t;(l.pause(),null!=l.onPlayFinish)&&(null==(t=l)||null==(e=t.onPlayFinish)||e.call(t))},this.player.onLoadCache=function(){var e,t;null==(t=l)||null==(e=t.onLoadCache)||e.call(t)},this.player.onLoadCacheFinished=function(){var e,t;null==(t=l)||null==(e=t.onLoadCacheFinished)||e.call(t)},null==(o=h.player)||o.setDurationMs(e),null==(a=h.player)||a.setFrameRate(t),null!=h.onReadyShowDone)&&(null==h||null==(u=h.onReadyShowDone)||u.call(h));this.event.emit("parsed"),this.player&&this.options.autoPlay&&this.play()},t.supportType=function(e){if(me.send(1,{name:"supportType",options:e}),"hls"===e.type)return!0;if(e.url){var t=e.url;t.startsWith("http://")||t.startsWith("https://")||(t=/^\/\//.test(t)?"http:"+t:location.origin+location.pathname+t);try{return/\.m3u8$/i.test(new URL(t).pathname)}catch(e){}}return!1},Ee(t,[{key:"volume",get:function(){return this.player?this.player.volume:this.options.volume},set:function(e){e=+e,this.setVolume(e)}}]),t}(De);Ae.__HLS_WASM_DecoderState__=0,Ae.version="0.1.0-beta.2";export{Ae as default}; +import e,{Video as t}from"@ezuikit/player-base";import i from"@ezuikit/utils-collect";import n from"hls.js";import{addVc as s,getStaticPath as r}from"@ezuikit/utils-tools";import o from"@ezuikit/utils-logger";import{merge as a}from"lodash-es";import l from"eventemitter3";var u=1,h=2,c=3,d="aac",p="h265",f="hevc",m="m3u8",v="hls",g=0,y=1,_=600,T=400,w=30,P=40,C=!1,x=44100,S=20,L="ONCE",b="SWAP",R=0,D=265,E=1001,k=1002,M=1003;var A,I=function(){return window.WebAssembly&&"object"==("undefined"==typeof WebAssembly?"undefined":(e=WebAssembly)&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e);var e};function B(){return(new Date).getTime()}var F=window.AudioContext||(null==(A=window)?void 0:A.webkitAudioContext),N=function(){function e(e){var t=this;this.options={sampleRate:e.sampleRate||x,appendType:e.appendType||g,playMode:e.playMode||b,isLive:e.isLive},this.logger=null==e?void 0:e.logger,this.sourceChannel=-1,this.audioCtx=new F({latencyHint:"interactive",sampleRate:e.sampleRate}),this.gainNode=null,this.sourceList=[],this.startStatus=!1,this.sampleQueue=[],this.nextBuffer=null,this.playTimestamp=0,this.playStartTime=0,this.durationMs=-1,this.volume=e.volume||0,this.onLoadCache=null,this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList[0].onended=function(){t.swapSource(0,1)},this.sourceList[1].onended=function(){t.swapSource(1,0)},this.gainNode=this.audioCtx.createGain(),this.gainNode.gain.value=this.volume,this.gainNode.connect(this.audioCtx.destination),this.runNextBuffer()}var t=e.prototype;return t.resetStartParam=function(){this.playTimestamp=0,this.playStartTime=0},t.setOnLoadCache=function(e){this.onLoadCache=e},t.setDurationMs=function(e){void 0===e&&(e=-1),this.durationMs=e},t.setVolume=function(e){void 0===e&&(e=0),this.volume=e,this.gainNode.gain.value=e},t.getAlignVPTS=function(){return this.playTimestamp+(B()-this.playStartTime)/1e3},t.swapSource=function(e,t){if(void 0===e&&(e=-1),void 0===t&&(t=-1),!this.startStatus)return null;if(e<0||e>=this.sourceList.length)return null;if(t<0||t>=this.sourceList.length)return null;try{this.sourceChannel===e&&null!==this.sourceList[e]&&(this.sourceList[e].disconnect(this.gainNode),this.sourceList[e]=null)}catch(t){this.logger.error("[DEFINE ERROR] this audioCore disconnect source Index:"+e+" error happened!",t)}(this.sourceChannel=t,-2===this.decodeSample(t,e)&&this.options.isLive)&&(this.getAlignVPTS()>=this.durationMs/1e3-.04?this.pause():null==this||this.onLoadCache());return null},t.addSample=function(e){return void 0===e&&(e=null),!(null==e||!e||void 0===e)&&(0===this.sampleQueue.length&&(this.seekPos=null==e?void 0:e.pts),this.sampleQueue.push(e),!0)},t.runNextBuffer=function(){var e=this;window.setInterval((function(){if(!(null!=e.nextBuffer||e.sampleQueue.length=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){s.swapSource(e,t)}),0===this.sampleQueue.length)return this.options.isLive?(this.sourceList[e].connect(this.gainNode),this.sourceList[e].startState||null==(n=this.sourceList[e])||null==(i=n.start)||i.call(n),this.sourceList[e].onended=function(){s.swapSource(e,t)},this.sourceList[e].stop(),0):-2;if(this.sourceList[e].buffer)return this.swapSource(e,t),0;if(null==this.nextBuffer||this.nextBuffer.data.length<1){var r,o,a=this.sourceList[e];return a.connect(this.gainNode),(null==a?void 0:a.startState)||null==(o=this.sourceList[e])||null==(r=o.start)||r.call(o),a.startState=!0,a.stop(),1}var l=this.nextBuffer.data.buffer;this.playTimestamp=this.nextBuffer.pts,this.playStartTime=B();try{this.audioCtx.decodeAudioData(l,(function(t){var i,n;null!==s.sourceList[e]&&(s.sourceList[e].buffer=t,s.sourceList[e].connect(s.gainNode),s.sourceList[e].startState||null==(n=s.sourceList[e])||null==(i=n.start)||i.call(n),s.sourceList[e].startState=!0)}),(function(e){s.logger.error("Error audioCore with decoding audio data",e)}))}catch(e){return this.nextBuffer=null,this.logger.log("decodeAudioData error",e),-3}return this.nextBuffer=null,0},t.decodeWholeSamples=function(e){var t=this;if(void 0===e&&(e=-1),this.sourceChannel=e,e<0||e>=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){}),0===this.sampleQueue.length)return-2;for(var i=null,n=null,s=0;s",e)}},e}(),O=function(){function e(e){this.limit=e.limit||200,this.logger=null==e?void 0:e.logger,this.yuvCache=[]}var t=e.prototype;return t.appendCacheByCacheYuv=function(e){return this.yuvCache.push(e),this.yuvCache.length>=this.limit?(this.shiftYuv(),h):u},t.getState=function(){return this.yuvCache.length<=0?c:this.yuvCache.length>=this.limit?h:u},t.cleanPipeline=function(){this.yuvCache=[],this.yuvCache.length=0},t.shiftYuv=function(){return this.yuvCache.length<=0?null:this.yuvCache.shift()},e}(),U=function(){function e(e,t,i,n,s,r){this.pts=e,this.width=t,this.height=i,this.imageBufferY=n,this.imageBufferB=s,this.imageBufferR=r}return e.prototype.setYuv=function(e,t,i,n,s,r){this.pts=e,this.width=t,this.height=i,this.imageBufferY=n,this.imageBufferB=s,this.imageBufferR=r},e}(),$=function(){function e(e){this.gl=e,this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)}var t=e.prototype;return t.bind=function(e,t,i){var n=this.gl;n.activeTexture([n.TEXTURE0,n.TEXTURE1,n.TEXTURE2][e]),n.bindTexture(n.TEXTURE_2D,this.texture),n.uniform1i(n.getUniformLocation(t,i),e)},t.fill=function(e,t,i){var n=this.gl;n.bindTexture(n.TEXTURE_2D,this.texture),n.texImage2D(n.TEXTURE_2D,0,n.LUMINANCE,e,t,0,n.LUMINANCE,n.UNSIGNED_BYTE,i)},e}(),W=function(){function e(e,t){this.gl=null,this.gl=e.getContext("webgl")||e.getContext("experimental-webgl"),this.program=this.gl.createProgram();var i=["attribute highp vec4 aVertexPosition;","attribute vec2 aTextureCoord;","varying highp vec2 vTextureCoord;","void main(void) {"," gl_Position = aVertexPosition;"," vTextureCoord = aTextureCoord;","}"].join("\n"),n=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(n,i),this.gl.compileShader(n);var s=["precision highp float;","varying lowp vec2 vTextureCoord;","uniform sampler2D YTexture;","uniform sampler2D UTexture;","uniform sampler2D VTexture;","const mat4 YUV2RGB = mat4","("," 1.1643828125, 0, 1.59602734375, -.87078515625,"," 1.1643828125, -.39176171875, -.81296875, .52959375,"," 1.1643828125, 2.017234375, 0, -1.081390625,"," 0, 0, 0, 1",");","void main(void) {"," gl_FragColor = vec4( texture2D(YTexture, vTextureCoord).x, texture2D(UTexture, vTextureCoord).x, texture2D(VTexture, vTextureCoord).x, 1) * YUV2RGB;","}"].join("\n"),r=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(r,s),this.gl.compileShader(r),this.gl.attachShader(this.program,n),this.gl.attachShader(this.program,r),this.gl.linkProgram(this.program),this.gl.useProgram(this.program),this.gl.getProgramParameter(this.program,this.gl.LINK_STATUS);var o=this.gl.getAttribLocation(this.program,"aVertexPosition");this.gl.enableVertexAttribArray(o);var a=this.gl.getAttribLocation(this.program,"aTextureCoord");this.gl.enableVertexAttribArray(a),this.verticesBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.verticesBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(o,3,this.gl.FLOAT,!1,0,0),this.texCoordBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texCoordBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(a,2,this.gl.FLOAT,!1,0,0),this.gl.y=new $(this.gl),this.gl.u=new $(this.gl),this.gl.v=new $(this.gl),this.gl.y.bind(0,this.program,"YTexture"),this.gl.u.bind(1,this.program,"UTexture"),this.gl.v.bind(2,this.program,"VTexture")}var t=e.prototype;return t.renderFrame=function(e,t,i,n,s){this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.y.fill(n,s,e),this.gl.u.fill(n>>1,s>>1,t),this.gl.v.fill(n>>1,s>>1,i),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4)},t.destroyContext=function(){try{this.gl.deleteProgram(this.program),this.gl.deleteBuffer(this.verticesBuffer),this.gl.deleteBuffer(this.texCoordBuffer),this.gl.deleteTexture(this.gl.y.texture),this.gl.deleteTexture(this.gl.u.texture),this.gl.deleteTexture(this.gl.v.texture),this.gl=null,this.program=null,this.verticesBuffer=null,this.texCoordBuffer=null}catch(e){}},e}(),V=function(e,t){return{cmd:e,data:t}},j="wasmLoading",Y="wasmLoaded",H="wasmFailed",X="videoCallback",Q="decodeCodecContext",z="destroy",G="demuxTsStream",J="demuxCoreReceive",q="readPacket",K="readPacketEnd",Z="mediaInfo",ee="ezui-hls",te={width:600,height:400,volume:0,retry:20,autoPlay:!0,staticPath:"",isLive:!0,loggerOptions:{name:"HLS",level:"INFO",showTime:!0}},ie={disableContextmenu:!0},ne=function(){function e(e){void 0===e&&(e={}),this.options=Object.assign({},ie,e),this.logger=this.options.logger,this.event=this.options.event,this._classVideo=ee+"-video",this._$container=document.getElementById(this.options.id),this._render()}var i=e.prototype;return i._render=function(){var e,i;if("video"===this.options.nodeName)this.$video=new t(this._$container,this.options).$video;else{var n;if(this.$video=document.createElement(this.options.nodeName),this._$container.innerHTML="",this._$container.appendChild(this.$video),this.options.disableContextmenu)null==(n=this.$video)||n.addEventListener("contextmenu",(function(e){return e.preventDefault(),!1}));this.$video.classList.add(this._classVideo),this.$video.style.cssText+="object-fit: contain; z-index:1;"}null==(i=this.event)||null==(e=i.emit)||e.call(i,"rendered")},i._isVideo=function(){return"VIDEO"===this.$video.nodeName},i.destroy=function(){if(this.$video&&this._$container&&this.$video){try{this._$container.removeChild(this.$video)}catch(e){}this.$video=null}},e}();function se(e,t,i){return t&&function(e,t){for(var i=0;i=1&&(null==(i=e)||null==(t=i.onLoadCacheFinished)||t.call(i),window.clearInterval(e.cacheInterval),e.cacheInterval=null,e.isCaching===k&&e.play(e.playParams),e.isCaching=E)}),40))}},i._playFunc=function(){var e=!1;if(B()-this.calculateStartTime>=this.frameTime-this.preCostTime){e=!0;var t=!0;if(this.calculateStartTime=B(),this.options.audioNone)this.playFrameYUV(t);else{this.fix_poc_err_skip>0&&(this.fix_poc_err_skip--,t=!1);var i=this.videoPTS-this.audio.getAlignVPTS();if(i>0)return void(this.playParams.seekEvent&&!this.options.audioNone&&this.audio.setVolume(0));if(t){if(!(t=-1*i<=1*this.frameTimeSec)){for(var n=parseInt(i/this.frameTimeSec+""),s=0;s",e,n,i),n>=i&&(t.playFrameYUV(!0),i+=1)}),this.frameTime||5)}else(this.videoPTS>=this.playParams.seekPos&&!this.isNewSeek||0===this.playParams.seekPos||0===this.playParams.seekPos)&&(this.frameTime=1e3/this.options.fps,this.frameTimeSec=this.frameTime/1e3,this.options.audioNone||this.audio.play(),this._volume=this.options.audioNone?0:this.audio.volume,this.loop=window.setInterval((function(){var e=B();t._playFunc(),t.preCostTime=B()-e}),this.frameTime||5));return this.setVolume(this._volume),Promise.resolve()},i.stop=function(){this.destroy(),this.stream=new Uint8Array},i.destroy=function(){return void 0!==this.gl&&null!==this.gl&&(this.gl.destroyContext(),this.gl=null),this.endAudio(),this.cacheLoop&&window.clearInterval(this.cacheLoop),this.cacheLoop=null,this.loop&&window.clearInterval(this.loop),this.loop=null,this.pause(),this.decoderWorker.postMessage(V(z)),this.stream=null,this.frameList=null,this.durationMs=-1,this.videoPTS=0,this.isPlaying=!1,this.$video.remove(),!0},i.nextNalu=function(e){if(void 0===e&&(e=1),this.stream.length<=4)return!1;for(var t=-1,i=0;i=this.stream.length){if(-1===t)return!1;var n=this.stream.subarray(t);return this.stream=new Uint8Array,n}var s="0 0 1"===this.stream.slice(0,3).join(" "),r="0 0 0 1"===this.stream.slice(0,4).join(" ");if(s||r){if(-1===t)t=i;else{if(e<=1){var o=this.stream.subarray(t,i);return this.stream=this.stream.subarray(i),o}e-=1}i+=3}}return!1},i.playFrameYUV=function(e){void 0===e&&(e=!1);var t=this.cacheYuvBuf.shiftYuv();if(!t)return this.noCacheFrame+=1,e&&!this.playParams.seekEvent&&this.loadCache(),!1;this.noCacheFrame=0;var i=t.pts;return this.videoPTS=i,this.drawImage(t.width,t.height,t.imageBufferY,t.imageBufferB,t.imageBufferR),t=null,e&&!this.playParams.seekEvent&&this.isPlaying&&this.loadCache(),!0},i.drawImage=function(e,t,i,n,s){this.$video.width===e&&this.$video.height===t||(this.$video.width=e,this.$video.height=t),this.isCheckDisplay||this.checkDisplaySize(e,t);var r=e*t,o=e/2*(t/2),a=new Uint8Array(r+2*o);a.set(i,0),a.set(n,r),a.set(s,r+o),this.gl.renderFrame(i,n,s,e,t),a=null},i.checkDisplaySize=function(e,t){var i,n=e/(null==(i=this.options)?void 0:i.width)>t/this.options.height,s=+(this.options.width/e).toFixed(2),r=+(this.options.height/t).toFixed(2),o=n?s:r,a=this.options.fixed,l=a?this.options.width:parseInt(e*o+""),u=a?this.options.height:parseInt(t*o+"");return this.$video.style.maxWidth="100%",this.$video.style.maxHeight="100%",this.options.width/this.options.height>=1&&l/u>=1?this.$video.style.width="100%":this.$video.style.height="100%",this.isCheckDisplay=!0,[l,u]},i._onWorkerMessage=function(){var e=this;this.decoderWorker.onmessage=function(t){var i=t.data;if(i.cmd===X){var n=i.data,s=n.ptsSec,r=n.strideY,o=n.height;n.width;var a=n.bufY,l=n.bufU,u=n.bufV,h=new U(s,r,o,a,l,u);e.cacheYuvBuf.appendCacheByCacheYuv(h),h=null}}},i.initVideoAndAudio=function(){this.$video.width=this.options.width,this.$video.height=this.options.height,this.gl=new W(this.$video,{preserveDrawingBuffer:!1}),this.options.audioNone||(this.audio=new N({logger:this.logger,sampleRate:this.options.sampleRate,appendType:this.options.appendHevcType,volume:this.options.volume,isLive:this.options.isLive})),this.isPlayLoadingFinish=1},se(t,[{key:"volume",get:function(){var e;return(null==(e=this.audio)?void 0:e.volume)||this._volume},set:function(e){this.setVolume(e)}}]),t}(ne),le=[/#EXT-X-PROGRAM-DATE-TIME.+\n/g],ue={lineDelimiter:/\r?\n/,extensionHeader:"#EXTM3U",tagPrefix:"#EXT",segmentPrefix:"#EXTINF",segmentParse:/^#EXTINF: *([0-9.]+)(, *(.+?)?)?$/,tagParse:/^#EXT-X-([A-Z-]+)(:(.+))?$/,version:"VERSION",allowCache:"ALLOW-CACHE",combined:"COMBINED",endList:"ENDLIST",targetDuration:"TARGETDURATION",mediaSequence:"MEDIA-SEQUENCE",discontinuity:"DISCONTINUITY",streamInf:"STREAM-INF",isComment:function(e){return e&&"#"===e[0]&&!e.startsWith(ue.tagPrefix)},isBlank:function(e){return""===e},canStrip:function(e){return ue.isBlank(e)||ue.isComment(e)},defaultMinDur:99999},he=function(){function e(e){this._retry=10,this.logger=null==e?void 0:e.logger,this.initState=!0,this.controller=new AbortController,this._slices=[],this._type=v,this._preURI="",this.duration=-1,this.onTransportStream=null,this.onFinished=null}var t=e.prototype;return t.destroy=function(){this.initState=!1},t.fetchM3u8=function(e){var t=this,i=this;if(this.initState){var n=function(t){return new Promise((function(i,n){var s=new XMLHttpRequest;s.open("GET",t),s.onload=function(){this.status>=200&&this.status<300&&(t!==this.responseURL?(e=this.responseURL,i(this.responseURL)):i(""))},s.onreadystatechange=function(){4===s.readyState&&200===s.status&&i(s.responseText)},s.onerror=function(){n(new Error("Network error."))},s.send()}))};n(e).then((function(s){if(t._retry=10,i._uriParse(e)){var r=i._m3u8Parse(s);if("number"==typeof r&&r>=0)var o=setTimeout((function(){i.fetchM3u8(e),clearTimeout(o)}),200*r)}return n=null,s})).catch((function(s){if(t.logger.error("[M3u8Base] fetch m3u8 url Error ==> ",s),n=null,t._retry>=1)var r=setTimeout((function(){i.fetchM3u8(e),clearTimeout(r)}),500);t._retry--}))}},t._uriParse=function(e){this._preURI="";var t=e.split("://"),i=null,n=null;if(t.length<1)return this.logger.log("HLS URI ERROR : "+e),!1;t.length>1?(i=t[0],n=t[1].split("/"),this._preURI=i+"://"):n=t[0].split("/");for(var s=0;sc&&(s=c);var d,p=n[o+=1],f=null;if(p.includes("http"))f=p;else{if("/"===p[0]){var v=this._preURI.split("//"),g=v[v.length-1].split("/");this._preURI=v[0]+"//"+g[0]}f=this._preURI+p}if(!this._slices.includes(f))this._slices.push(f),null==this||null==(d=this.onTransportStream)||d.call(this,f,c)}}}this._slices.length>500&&(this._slices=this._slices.slice(-500));var y={type:this._type,duration:-1};return null==this||null==(t=this.onFinished)||t.call(this,y),s},t._readTag=function(e){var t=ue.tagParse.exec(e);return null!==t?{key:t[1],value:t[3]}:null},e}(),ce=function(){function e(e){this.sampleRate=e.sampleRate,this.frameDurMs=Math.floor(1024e3/this.sampleRate),this.frameDurSec=this.frameDurMs/1e3}var t=e.prototype;return t.updateOptions=function(e){this.sampleRate=e.sampleRate,this.frameDurMs=1024e3/this.sampleRate,this.frameDurSec=this.frameDurMs/1e3},t._getPktLen=function(e,t,i){return((3&e)<<11)+(t<<3)+((224&i)>>5)},t.sliceAACFrames=function(e,t){for(var i=[],n=e,s=0;s>4==15){var r=this._getPktLen(t[s+3],t[s+4],t[s+5]);if(r<=0)continue;var o=t.subarray(s,s+r),a=new Uint8Array(r);a.set(o,0),i.push({ptime:n,data:a}),n+=this.frameDurSec,s+=r}else s+=1;return i},e}(),de="M3U8",pe="TS",fe="FETCH",me=function(){function e(){}return e.init=function(t){e.collect=new i(t)},e.send=function(t,i){var n,s;null==(s=e.collect)||null==(n=s.send)||n.call(s,{action:t,logInfo:i})},e.updateParams=function(t){e.collect.updateExtendsInfo(t)},e}();function ve(e,t,i){return t&&function(e,t){for(var i=0;i ",e),s=null})).catch((function(n){var s,r,o,a;t.logger.error("[MpegTsDemux] demuxerTsInit ERROR fetch ERROR ==> ",n),null==(r=t.event)||null==(s=r.emit)||s.call(r,pe,{data:n}),null==(a=t.event)||null==(o=a.emit)||o.call(a,fe,{data:n,type:pe}),null==i||i.onDemuxedFailed(n,e),me.send(100,{url:e,msg:"fetch error"})}))},t._demuxCore=function(e,t){e.length<=0||this.decoderWorker.postMessage(V(G,{buff:e,tsUrl:t}))},t.readMediaInfo=function(){return this.mediaInfo},t.readAudioNone=function(){var e;return null==(e=this.mediaInfo)?void 0:e.audioNone},t.isHEVC=function(){return this.mediaInfo.vCodec===f||this.mediaInfo.vCodec===p},t.destroy=function(){this.controller&&this.controller.abort(),this.controller=null,this.mediaInfo=null,this.aacDec=null},t._onWorkerMessage=function(){var e=this;e.logger.log("[demuxer] register _onWorkerMessage"),e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case Z:var n,s;if(e.mediaInfo=i.data,e.mediaInfo)null==(s=e.event)||null==(n=s.emit)||n.call(s,"mediaInfo",e.mediaInfo);break;case J:var r;if(e.mediaInfo.vCodec)null==e.aacDec?e.aacDec=new ce(e.mediaInfo):e.aacDec.updateOptions(e.mediaInfo),null==e||null==(r=e.onDemuxed)||r.call(e)}}))},ve(e,[{key:"vCodec",get:function(){return this.mediaInfo.vCodec}}]),e}(),_e=function(){function e(e,t,i,n){this.pts=e,this.dts=e,this.isKey=t,this.data=i,this.video=n}return e.prototype.setFrame=function(e,t,i,n){this.pts=e,this.isKey=t,this.data=i,this.video=n},e}(),Te=function(){function e(e){this.logger=null==e?void 0:e.logger,this.event=null==e?void 0:e.event,this.decoderWorker=e.decoderWorker,this.m3u8Base=new he(e),this.mpegTsDemux=new ye(e),this.tsList=[],this._startTime=0,this._aStartTime=0,this.lockWait={state:!1,lockMember:{dur:0}},this._timerFeed=null,this.seekPos=-1,this.vPreFramePTS=0,this.aPreFramePTS=0,this.audioNone=!1,this.isHevcParam=!1,this.vCodec="",this.aCodec=null,this.aChannel=0,this.durationMs=-1,this.fps=-1,this.sampleRate=-1,this.size={width:-1,height:-1},this.mediaInfo=null,this._onWorkerMessage(),this.onReadyOBJ=null,this.onFinished=null,this.onDemuxed=null,this.onSamples=null,this.onCacheProcess=null}var t=e.prototype;return t.getCachePTS=function(){return Math.max(this.vPreFramePTS,this.aPreFramePTS)},t.demux=function(e){var t=this,i=this;this.vPreFramePTS=0,this.aPreFramePTS=0,this.m3u8Base.onTransportStream=function(e,t){i.tsList.push({streamURI:e,streamDur:t}),i.lockWait.state=!1},this.m3u8Base.onFinished=function(e){var t;e.type===m?i.durationMs=1e3*e.duration:i.durationMs=-1,null==i||null==(t=i.onFinished)||t.call(i,i.onReadyOBJ,e)},this.mpegTsDemux.onDemuxedFailed=function(e,n){t.logger.error("[M3u8] onDemuxedFailed: ",e,n),i.lockWait.state=!1},this.mpegTsDemux.onDemuxed=function(){var e;t.logger.log("[M3u8] onDemuxed"),null==i.mediaInfo&&(i.mediaInfo=i.mpegTsDemux.readMediaInfo(),t.logger.log("[M3u8] mediaInfo: ",i.mediaInfo),i.isHevcParam=i.mpegTsDemux.isHEVC(),i.vCodec=i.mpegTsDemux.vCodec,i.aCodec=i.mediaInfo.aCodec,i.aChannel=i.mediaInfo.sampleChannel,i.fps=i.mediaInfo.fps,i.sampleRate=i.mediaInfo.sampleRate,(null===i.aCodec||""===i.aCodec||i.aChannel<=0)&&(i.audioNone=!0),i.mediaInfo.width>0&&i.mediaInfo.height>0&&(t.size.width=t.mediaInfo.width,t.size.height=t.mediaInfo.height)),null==i||null==(e=i.onDemuxed)||e.call(i,i.onReadyOBJ),i.mpegTsDemux&&t.decoderWorker.postMessage(V(q))},this.mpegTsDemux.onReady=function(){i._fetchM3u8AndIntervalTs(e)},this._timerTsWasm=window.setInterval((function(){1===Ae.__HLS_WASM_DecoderState__&&(i._fetchM3u8AndIntervalTs(e),window.clearInterval(i._timerTsWasm),i._timerTsWasm=null)}),500)},t._fetchM3u8AndIntervalTs=function(e){var t=this,i=this;this.logger.log("[M3u8] start fetch m3u8 url"),i.m3u8Base.fetchM3u8(e),i._timerFeed=window.setInterval((function(){if(i.tsList.length>0&&!i.lockWait.state)try{var e=i.tsList.shift();if(null!=e){var n=e.streamURI,s=e.streamDur;i.lockWait.state=!0,i.lockWait.lockMember.dur=+s,i.mpegTsDemux.demuxURL(n)}else t.logger.error("[M3u8] onTsReady need wait ")}catch(e){var r,o,a,l;t.logger.error("[M3u8] onTsReady ERROR:",e),null==(o=t.event)||null==(r=o.emit)||r.call(o,de,{data:e}),null==(l=t.event)||null==(a=l.emit)||a.call(l,fe,{data:e,type:de}),i.lockWait.state=!1}}),50)},t.destroy=function(){var e;this.m3u8Base&&(null==(e=this.m3u8Base)||e.destroy(),this.m3u8Base=null);this._timerFeed&&(window.clearInterval(this._timerFeed),this._timerFeed=null),this.mpegTsDemux&&(this.mpegTsDemux.destroy(),this.mpegTsDemux=null)},t.bindReady=function(e){this.onReadyOBJ=e},t.getACodec=function(){return this.aCodec},t.getVCodec=function(){return this.vCodec},t.getDurationMs=function(){return this.durationMs},t.getFPS=function(){return this.fps},t.getSampleRate=function(){return this.sampleRate},t.getSampleChannel=function(){return this.aChannel},t.getSize=function(){return this.size},t._onWorkerMessage=function(){this.logger.log("[M3U8] register _onWorkerMessage");var e=this;e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case q:var n,s=i.data,r=s.type,o=s.pts,a=s.ptime,l=s.keyframe,u=s.data,h=s.layer;if(u=new Uint8Array(u),1===r&&e.mpegTsDemux.mediaInfo.aCodec===d&&(u=e.mpegTsDemux.aacDec.sliceAACFrames(a,u)),0===r){var c=function(e){var t=e.nalu,i=e.vlc.vlc;null==t.vps&&(t.vps=new Uint8Array);var n=new Uint8Array(t.vps.length+t.sps.length+t.pps.length+t.sei.length+i.length);return n.set(t.vps,0),n.set(t.sps,t.vps.length),n.set(t.pps,t.vps.length+t.sps.length),n.set(t.sei,t.vps.length+t.sps.length+t.pps.length),n.set(i,t.vps.length+t.sps.length+t.pps.length+t.sei.length),n}(h),p=o,f=new _e(p,1===l,c,!0);e.vPreFramePTS=p,null==e||e.onSamples(e.onReadyOBJ,f)}else if(1===r){var m;if("aac"===(null==(m=e.mediaInfo)?void 0:m.aCodec)){for(var v=u,g=0;g0&&(e.$video.volume=e._options.volume)}),1e3)})),e.event.emit("parsed")}))}))}else if(this.$video.canPlayType("application/vnd.apple.mpegurl")){this.logger.log("Browser support application/vnd.apple.mpegurl : ",this.$video.canPlayType("application/vnd.apple.mpegurl")),this.$video.src=this._options.url;var i=!1;this.$video.addEventListener("canplay",(function(){!i&&e._options.autoPlay&&setTimeout((function(){e.$video.play().then((function(){e.logger.log("autoPlay video!"),setTimeout((function(){e._options.volume>0&&e.setVolume(e._options.volume)}),1e3),i=!0}))}),200)}))}else this.logger.warn("Browser not support hls")},i.isPlayingState=function(){return!this.$video.paused},i.play=function(){if(this.isPlayingState())return Promise.resolve();if(this._options.isLive&&(this.$video.buffered.length>=1&&this.$video.buffered.end(0)>1)){var e=this.$video.buffered.end(0)-1;this.$video.currentTime=e}return this.$video.play()},i.pause=function(){this.$video.pause()},i.setVolume=function(e){this.$video.muted&&(this.$video.muted=!1),this._volume=+(e||0),0===this._volume&&(this.$video.muted=!0),this.$video.volume=this._volume},i.destroy=function(){this.$video&&this.$video.pause(),this._hls&&(this._hls.destroy(),this._hls=null),e.prototype.destroy.call(this)},i._onEvent=function(){var e;(e=this).$video&&(e.$video.addEventListener("canplay",(function(){e.event.emit("canplay")})),e.$video.addEventListener("loadeddata",(function(){e.event.emit("loadeddata")})),e.$video.addEventListener("volumechange",(function(){e.event.emit("volumechange",{data:e.$video.volume})})),e.$video.addEventListener("waiting",(function(){e.event.emit("waiting")})),e.$video.addEventListener("timeupdate",(function(){var t;null==(t=e.event)||t.emit("timeupdate")})),e.$video.addEventListener("seeking",(function(){e.event.emit("seeking",{data:e.$video.currentTime})})),e.$video.addEventListener("seeked",(function(){e.event.emit("seeked")})),e.$video.addEventListener("abort",(function(){e.event.emit("abort")})),e.$video.addEventListener("error",(function(){var t;null==(t=e.event)||t.emit("error",{data:e.$video.error})})),e.$video.addEventListener("ended",(function(){e.event.emit("ended")})))},we(t,[{key:"volume",get:function(){return this._volume},set:function(e){this.setVolume(e)}}]),t}(ne);var Se="wasm_loaded",Le="wasm_failed",be="init";function Re(e,t){return Re=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Re(e,t)}var De=function(e){function t(t){var i;return void 0===t&&(t={}),i=e.call(this,t)||this,t.url=s(null==t?void 0:t.url,["h264","h265"]),function(e,t){if(((null==t?void 0:t.volume)||0)>1?e._volume=1:((null==t?void 0:t.volume)||0)<=0?e._volume=0:e._volume=+((null==t?void 0:t.volume)||0),t.volume=e._volume,e.options=a({},te,t),"string"!=typeof e.options.id)throw new Error("id is required!");e.logger=o(e.options.loggerOptions),e.event=new l,e.logger.log("HlsPlayer version: ",Ae.version),e.logger.log("HlsPlayer options: ",e.options),e.options.logger=e.logger}(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(i),t),i._containerClassName=ee+"-container",i._render(),i}!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Re(e,t)}(t,e);var i=t.prototype;return i._render=function(){this.$container.classList.add(this._containerClassName)},i.destroy=function(){this.$container&&(this.$container.classList.remove(this._containerClassName),this.$container.innerHTML="",this.$container=null)},t}(e);function Ee(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e=!0),this.playParam={durationMs:0,fps:0,sampleRate:0,size:{width:0,height:0},audioNone:e,videoCodec:R},!I())throw new Error("Browser not support WebAssembly!");this._onWorkerMessage()},i.play=function(){if(me.send(1,{name:"play"}),null===this.player)return Promise.resolve();if(this.playParam.videoCodec===R){var e={seekPos:0,isLive:this.options.isLive,accurateSeek:!0,seekEvent:!1,realPlay:!0};return this.player.play(e)}return this.player.play()},i.pause=function(){return me.send(1,{name:"pause"}),null!==this.player&&(this.player.pause(),!0)},i.destroy=function(){var t,i;return me.send(1,{name:"destroy"}),void 0!==this.player&&null!==this.player&&(this.playParam.videoCodec===R&&this._m3u8Obj&&(this._m3u8Obj.destroy(),this._m3u8Obj=null),this.player.destroy(),this._decoderWorker&&(this._decoderWorker.postMessage(V(z)),this._decoderWorker.terminate(),this._decoderWorker=null),this.logger.log("destroy"),null==(i=this.event)||null==(t=i.emit)||t.call(i,"destroy"),this.player=null,e.prototype.destroy.call(this),!0)},i.isPlaying=function(){return null!==this.player&&this.player.isPlayingState()},i.setVolume=function(e){var t;(e=+e)>1||e<0?this.logger.warn("volume volume value 0.0 ~ 1.0!"):((t=this).player||(t.event.emit("playerIsNull"),t.logger.warn("Player instance does not exist!"),0))&&(this.player.setVolume(e),this.event.emit("volumeChange",{data:e}))},i.getVersion=function(){return me.send(1,{name:"getVersion"}),"0.1.0"},i._m3u8Entry=function(){var e=this;this._m3u8Obj=new Te({logger:this.logger,decoderWorker:this._decoderWorker,event:this.event}),this._m3u8Obj.bindReady(this),this._m3u8Obj.onFinished=function(e,t){},this._m3u8Obj.onCacheProcess=function(t){e.options.isLive||null==e.onCacheProcess||e.onCacheProcess.call(e,t)},this._m3u8Obj.onDemuxed=this._checkPlayer.bind(this),this._m3u8Obj.onSamples=this._hlsOnSamples.bind(this),this._m3u8Obj.demux(this.url)},i._checkPlayer=function(e,t){var i=this;if(null==i.player){var n,s,r;if(!(null==i||null==(n=i._m3u8Obj)?void 0:n.isHevcParam)||t)return null==i||null==(r=i._m3u8Obj)||null==(s=r.destroy)||s.call(r),i._m3u8Obj=null,this._decoderWorker.terminate(),this._decoderWorker=null,void(i.player=new xe(ke({},this.options,{event:this.event,logger:this.logger})));var o=i._m3u8Obj.getACodec(),a=i._m3u8Obj.getFPS(),l=i._m3u8Obj.getSampleRate(),u=i._m3u8Obj.getSize(),h=!1;h=i._m3u8Obj.getSampleChannel()<=0||""===o,i._softPlayer(0,a,l,u,h)}},i._hlsOnSamples=function(e,t){var i,n,s,r=this;if(t.video)null==(s=r.player)||null==(n=s.appendHevcFrame)||n.call(s,t);else if(!(null==(i=r._m3u8Obj)?void 0:i.audioNone)){var o,a;null==(a=r.player)||null==(o=a.appendAACFrame)||o.call(a,t)}},i._onWorkerMessage=function(){var e=this,i=this;this._decoderWorker.onmessage=function(n){var s=n.data;switch(s.cmd){case j:t.__HLS_WASM_DecoderState__=0;break;case Y:t.__HLS_WASM_DecoderState__=1,e.logger.log("Wasm already init over!"),i.event.emit(Se),i._decoderWorker.postMessage(V("registerWasmPlayer")),i._m3u8Entry();break;case H:t.__HLS_WASM_DecoderState__=-1,e.logger.error("Wasm init failed!",s),i.event.emit(Le,s),me.send("wasm",{name:"wasm loading failed"}),i._checkPlayer(!0)}}},i._softPlayer=function(e,t,i,n,s,r){var o,a,l=this;void 0===s&&(s=!1),void 0===r&&(r=null);var u,h=this;(this.playParam.durationMs=e,this.playParam.fps=t,this.playParam.sampleRate=i,this.playParam.size=n,this.playParam.audioNone=s,this.playParam.videoCodec=r||R,this.logger.log("this.playParam: ",this.playParam),this.logger.log("start init soft player"),this.player=new ae(ke({},h.options,{sampleRate:i,fps:t,appendHevcType:y,fixed:!1,id:this.options.id,audioNone:s,videoCodec:r,logger:this.logger,event:this.event,decoderWorker:this._decoderWorker})),this.player.onPlayingTime=function(e){var t;null==h||null==(t=h.onPlayTime)||t.call(h,e)},this.player.onPlayingFinish=function(){var e,t;(l.pause(),null!=l.onPlayFinish)&&(null==(t=l)||null==(e=t.onPlayFinish)||e.call(t))},this.player.onLoadCache=function(){var e,t;null==(t=l)||null==(e=t.onLoadCache)||e.call(t)},this.player.onLoadCacheFinished=function(){var e,t;null==(t=l)||null==(e=t.onLoadCacheFinished)||e.call(t)},null==(o=h.player)||o.setDurationMs(e),null==(a=h.player)||a.setFrameRate(t),null!=h.onReadyShowDone)&&(null==h||null==(u=h.onReadyShowDone)||u.call(h));this.event.emit("parsed"),this.player&&this.options.autoPlay&&this.play()},t.supportType=function(e){if(me.send(1,{name:"supportType",options:e}),"hls"===e.type)return!0;if(e.url){var t=e.url;t.startsWith("http://")||t.startsWith("https://")||(t=/^\/\//.test(t)?"http:"+t:location.origin+location.pathname+t);try{return/\.m3u8$/i.test(new URL(t).pathname)}catch(e){}}return!1},Ee(t,[{key:"volume",get:function(){return this.player?this.player.volume:this.options.volume},set:function(e){e=+e,this.setVolume(e)}}]),t}(De);Ae.__HLS_WASM_DecoderState__=0,Ae.version="0.1.0";export{Ae as default}; diff --git a/dist/index.js b/dist/index.js index 049f803..7cc4cad 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,8 +1,8 @@ /* * -* HlsPlayer.js v0.1.0-beta.2 +* HlsPlayer.js v0.1.0 * Copyright (c) 2024-8-1 Ezviz-OpenBiz * . * */ -"use strict";var e=require("@ezuikit/player-base"),t=require("@ezuikit/utils-collect"),i=require("hls.js"),n=require("@ezuikit/utils-tools"),s=require("@ezuikit/utils-logger"),r=require("lodash-es"),o=require("eventemitter3"),a=1,l=2,u=3,h="aac",c="h265",d="hevc",p="m3u8",f="hls",m=0,v=1,g=600,y=400,_=30,T=40,P=!1,w=44100,C=20,x="ONCE",S="SWAP",L=0,b=265,R=1001,D=1002,E=1003;var k,M=function(){return window.WebAssembly&&"object"==("undefined"==typeof WebAssembly?"undefined":(e=WebAssembly)&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e);var e};function A(){return(new Date).getTime()}var I=window.AudioContext||(null==(k=window)?void 0:k.webkitAudioContext),B=function(){function e(e){var t=this;this.options={sampleRate:e.sampleRate||w,appendType:e.appendType||m,playMode:e.playMode||S,isLive:e.isLive},this.logger=null==e?void 0:e.logger,this.sourceChannel=-1,this.audioCtx=new I({latencyHint:"interactive",sampleRate:e.sampleRate}),this.gainNode=null,this.sourceList=[],this.startStatus=!1,this.sampleQueue=[],this.nextBuffer=null,this.playTimestamp=0,this.playStartTime=0,this.durationMs=-1,this.volume=e.volume||0,this.onLoadCache=null,this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList[0].onended=function(){t.swapSource(0,1)},this.sourceList[1].onended=function(){t.swapSource(1,0)},this.gainNode=this.audioCtx.createGain(),this.gainNode.gain.value=this.volume,this.gainNode.connect(this.audioCtx.destination),this.runNextBuffer()}var t=e.prototype;return t.resetStartParam=function(){this.playTimestamp=0,this.playStartTime=0},t.setOnLoadCache=function(e){this.onLoadCache=e},t.setDurationMs=function(e){void 0===e&&(e=-1),this.durationMs=e},t.setVolume=function(e){void 0===e&&(e=0),this.volume=e,this.gainNode.gain.value=e},t.getAlignVPTS=function(){return this.playTimestamp+(A()-this.playStartTime)/1e3},t.swapSource=function(e,t){if(void 0===e&&(e=-1),void 0===t&&(t=-1),!this.startStatus)return null;if(e<0||e>=this.sourceList.length)return null;if(t<0||t>=this.sourceList.length)return null;try{this.sourceChannel===e&&null!==this.sourceList[e]&&(this.sourceList[e].disconnect(this.gainNode),this.sourceList[e]=null)}catch(t){this.logger.error("[DEFINE ERROR] this audioCore disconnect source Index:"+e+" error happened!",t)}(this.sourceChannel=t,-2===this.decodeSample(t,e)&&this.options.isLive)&&(this.getAlignVPTS()>=this.durationMs/1e3-.04?this.pause():null==this||this.onLoadCache());return null},t.addSample=function(e){return void 0===e&&(e=null),!(null==e||!e||void 0===e)&&(0===this.sampleQueue.length&&(this.seekPos=null==e?void 0:e.pts),this.sampleQueue.push(e),!0)},t.runNextBuffer=function(){var e=this;window.setInterval((function(){if(!(null!=e.nextBuffer||e.sampleQueue.length=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){s.swapSource(e,t)}),0===this.sampleQueue.length)return this.options.isLive?(this.sourceList[e].connect(this.gainNode),this.sourceList[e].startState||null==(n=this.sourceList[e])||null==(i=n.start)||i.call(n),this.sourceList[e].onended=function(){s.swapSource(e,t)},this.sourceList[e].stop(),0):-2;if(this.sourceList[e].buffer)return this.swapSource(e,t),0;if(null==this.nextBuffer||this.nextBuffer.data.length<1){var r,o,a=this.sourceList[e];return a.connect(this.gainNode),(null==a?void 0:a.startState)||null==(o=this.sourceList[e])||null==(r=o.start)||r.call(o),a.startState=!0,a.stop(),1}var l=this.nextBuffer.data.buffer;this.playTimestamp=this.nextBuffer.pts,this.playStartTime=A();try{this.audioCtx.decodeAudioData(l,(function(t){var i,n;null!==s.sourceList[e]&&(s.sourceList[e].buffer=t,s.sourceList[e].connect(s.gainNode),s.sourceList[e].startState||null==(n=s.sourceList[e])||null==(i=n.start)||i.call(n),s.sourceList[e].startState=!0)}),(function(e){s.logger.error("Error audioCore with decoding audio data",e)}))}catch(e){return this.nextBuffer=null,this.logger.log("decodeAudioData error",e),-3}return this.nextBuffer=null,0},t.decodeWholeSamples=function(e){var t=this;if(void 0===e&&(e=-1),this.sourceChannel=e,e<0||e>=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){}),0===this.sampleQueue.length)return-2;for(var i=null,n=null,s=0;s",e)}},e}(),F=function(){function e(e){this.limit=e.limit||200,this.logger=null==e?void 0:e.logger,this.yuvCache=[]}var t=e.prototype;return t.appendCacheByCacheYuv=function(e){return this.yuvCache.push(e),this.yuvCache.length>=this.limit?(this.shiftYuv(),l):a},t.getState=function(){return this.yuvCache.length<=0?u:this.yuvCache.length>=this.limit?l:a},t.cleanPipeline=function(){this.yuvCache=[],this.yuvCache.length=0},t.shiftYuv=function(){return this.yuvCache.length<=0?null:this.yuvCache.shift()},e}(),N=function(){function e(e,t,i,n,s,r){this.pts=e,this.width=t,this.height=i,this.imageBufferY=n,this.imageBufferB=s,this.imageBufferR=r}return e.prototype.setYuv=function(e,t,i,n,s,r){this.pts=e,this.width=t,this.height=i,this.imageBufferY=n,this.imageBufferB=s,this.imageBufferR=r},e}(),O=function(){function e(e){this.gl=e,this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)}var t=e.prototype;return t.bind=function(e,t,i){var n=this.gl;n.activeTexture([n.TEXTURE0,n.TEXTURE1,n.TEXTURE2][e]),n.bindTexture(n.TEXTURE_2D,this.texture),n.uniform1i(n.getUniformLocation(t,i),e)},t.fill=function(e,t,i){var n=this.gl;n.bindTexture(n.TEXTURE_2D,this.texture),n.texImage2D(n.TEXTURE_2D,0,n.LUMINANCE,e,t,0,n.LUMINANCE,n.UNSIGNED_BYTE,i)},e}(),U=function(){function e(e,t){this.gl=null,this.gl=e.getContext("webgl")||e.getContext("experimental-webgl"),this.program=this.gl.createProgram();var i=["attribute highp vec4 aVertexPosition;","attribute vec2 aTextureCoord;","varying highp vec2 vTextureCoord;","void main(void) {"," gl_Position = aVertexPosition;"," vTextureCoord = aTextureCoord;","}"].join("\n"),n=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(n,i),this.gl.compileShader(n);var s=["precision highp float;","varying lowp vec2 vTextureCoord;","uniform sampler2D YTexture;","uniform sampler2D UTexture;","uniform sampler2D VTexture;","const mat4 YUV2RGB = mat4","("," 1.1643828125, 0, 1.59602734375, -.87078515625,"," 1.1643828125, -.39176171875, -.81296875, .52959375,"," 1.1643828125, 2.017234375, 0, -1.081390625,"," 0, 0, 0, 1",");","void main(void) {"," gl_FragColor = vec4( texture2D(YTexture, vTextureCoord).x, texture2D(UTexture, vTextureCoord).x, texture2D(VTexture, vTextureCoord).x, 1) * YUV2RGB;","}"].join("\n"),r=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(r,s),this.gl.compileShader(r),this.gl.attachShader(this.program,n),this.gl.attachShader(this.program,r),this.gl.linkProgram(this.program),this.gl.useProgram(this.program),this.gl.getProgramParameter(this.program,this.gl.LINK_STATUS);var o=this.gl.getAttribLocation(this.program,"aVertexPosition");this.gl.enableVertexAttribArray(o);var a=this.gl.getAttribLocation(this.program,"aTextureCoord");this.gl.enableVertexAttribArray(a),this.verticesBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.verticesBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(o,3,this.gl.FLOAT,!1,0,0),this.texCoordBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texCoordBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(a,2,this.gl.FLOAT,!1,0,0),this.gl.y=new O(this.gl),this.gl.u=new O(this.gl),this.gl.v=new O(this.gl),this.gl.y.bind(0,this.program,"YTexture"),this.gl.u.bind(1,this.program,"UTexture"),this.gl.v.bind(2,this.program,"VTexture")}var t=e.prototype;return t.renderFrame=function(e,t,i,n,s){this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.y.fill(n,s,e),this.gl.u.fill(n>>1,s>>1,t),this.gl.v.fill(n>>1,s>>1,i),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4)},t.destroyContext=function(){try{this.gl.deleteProgram(this.program),this.gl.deleteBuffer(this.verticesBuffer),this.gl.deleteBuffer(this.texCoordBuffer),this.gl.deleteTexture(this.gl.y.texture),this.gl.deleteTexture(this.gl.u.texture),this.gl.deleteTexture(this.gl.v.texture),this.gl=null,this.program=null,this.verticesBuffer=null,this.texCoordBuffer=null}catch(e){}},e}(),$=function(e,t){return{cmd:e,data:t}},W="wasmLoading",V="wasmLoaded",j="wasmFailed",Y="videoCallback",H="decodeCodecContext",X="destroy",Q="demuxTsStream",z="demuxCoreReceive",q="readPacket",G="readPacketEnd",J="mediaInfo",K="ezui-hls",Z={width:600,height:400,volume:0,retry:20,autoPlay:!0,staticPath:"",isLive:!0,loggerOptions:{name:"HLS",level:"INFO",showTime:!0}},ee={disableContextmenu:!0},te=function(){function t(e){void 0===e&&(e={}),this.options=Object.assign({},ee,e),this.logger=this.options.logger,this.event=this.options.event,this._classVideo=K+"-video",this._$container=document.getElementById(this.options.id),this._render()}var i=t.prototype;return i._render=function(){var t,i;if("video"===this.options.nodeName)this.$video=new e.Video(this._$container,this.options).$video;else{var n;if(this.$video=document.createElement(this.options.nodeName),this._$container.innerHTML="",this._$container.appendChild(this.$video),this.options.disableContextmenu)null==(n=this.$video)||n.addEventListener("contextmenu",(function(e){return e.preventDefault(),!1}));this.$video.classList.add(this._classVideo),this.$video.style.cssText+="object-fit: contain; z-index:1;"}null==(i=this.event)||null==(t=i.emit)||t.call(i,"rendered")},i._isVideo=function(){return"VIDEO"===this.$video.nodeName},i.destroy=function(){if(this.$video&&this._$container&&this.$video){try{this._$container.removeChild(this.$video)}catch(e){}this.$video=null}},t}();function ie(e,t,i){return t&&function(e,t){for(var i=0;i=1&&(null==(i=e)||null==(t=i.onLoadCacheFinished)||t.call(i),window.clearInterval(e.cacheInterval),e.cacheInterval=null,e.isCaching===D&&e.play(e.playParams),e.isCaching=R)}),40))}},i._playFunc=function(){var e=!1;if(A()-this.calculateStartTime>=this.frameTime-this.preCostTime){e=!0;var t=!0;if(this.calculateStartTime=A(),this.options.audioNone)this.playFrameYUV(t);else{this.fix_poc_err_skip>0&&(this.fix_poc_err_skip--,t=!1);var i=this.videoPTS-this.audio.getAlignVPTS();if(i>0)return void(this.playParams.seekEvent&&!this.options.audioNone&&this.audio.setVolume(0));if(t){if(!(t=-1*i<=1*this.frameTimeSec)){for(var n=parseInt(i/this.frameTimeSec+""),s=0;s",e,n,i),n>=i&&(t.playFrameYUV(!0),i+=1)}),this.frameTime||5)}else(this.videoPTS>=this.playParams.seekPos&&!this.isNewSeek||0===this.playParams.seekPos||0===this.playParams.seekPos)&&(this.frameTime=1e3/this.options.fps,this.frameTimeSec=this.frameTime/1e3,this.options.audioNone||this.audio.play(),this._volume=this.options.audioNone?0:this.audio.volume,this.loop=window.setInterval((function(){var e=A();t._playFunc(),t.preCostTime=A()-e}),this.frameTime||5));return this.setVolume(this._volume),Promise.resolve()},i.stop=function(){this.destroy(),this.stream=new Uint8Array},i.destroy=function(){return void 0!==this.gl&&null!==this.gl&&(this.gl.destroyContext(),this.gl=null),this.endAudio(),this.cacheLoop&&window.clearInterval(this.cacheLoop),this.cacheLoop=null,this.loop&&window.clearInterval(this.loop),this.loop=null,this.pause(),this.decoderWorker.postMessage($(X)),this.stream=null,this.frameList=null,this.durationMs=-1,this.videoPTS=0,this.isPlaying=!1,this.$video.remove(),!0},i.nextNalu=function(e){if(void 0===e&&(e=1),this.stream.length<=4)return!1;for(var t=-1,i=0;i=this.stream.length){if(-1===t)return!1;var n=this.stream.subarray(t);return this.stream=new Uint8Array,n}var s="0 0 1"===this.stream.slice(0,3).join(" "),r="0 0 0 1"===this.stream.slice(0,4).join(" ");if(s||r){if(-1===t)t=i;else{if(e<=1){var o=this.stream.subarray(t,i);return this.stream=this.stream.subarray(i),o}e-=1}i+=3}}return!1},i.playFrameYUV=function(e){void 0===e&&(e=!1);var t=this.cacheYuvBuf.shiftYuv();if(!t)return this.noCacheFrame+=1,e&&!this.playParams.seekEvent&&this.loadCache(),!1;this.noCacheFrame=0;var i=t.pts;return this.videoPTS=i,this.drawImage(t.width,t.height,t.imageBufferY,t.imageBufferB,t.imageBufferR),t=null,e&&!this.playParams.seekEvent&&this.isPlaying&&this.loadCache(),!0},i.drawImage=function(e,t,i,n,s){this.$video.width===e&&this.$video.height===t||(this.$video.width=e,this.$video.height=t),this.isCheckDisplay||this.checkDisplaySize(e,t);var r=e*t,o=e/2*(t/2),a=new Uint8Array(r+2*o);a.set(i,0),a.set(n,r),a.set(s,r+o),this.gl.renderFrame(i,n,s,e,t),a=null},i.checkDisplaySize=function(e,t){var i,n=e/(null==(i=this.options)?void 0:i.width)>t/this.options.height,s=+(this.options.width/e).toFixed(2),r=+(this.options.height/t).toFixed(2),o=n?s:r,a=this.options.fixed,l=a?this.options.width:parseInt(e*o+""),u=a?this.options.height:parseInt(t*o+"");return this.$video.style.maxWidth="100%",this.$video.style.maxHeight="100%",this.options.width/this.options.height>=1&&l/u>=1?this.$video.style.width="100%":this.$video.style.height="100%",this.isCheckDisplay=!0,[l,u]},i._onWorkerMessage=function(){var e=this;this.decoderWorker.onmessage=function(t){var i=t.data;if(i.cmd===Y){var n=i.data,s=n.ptsSec,r=n.strideY,o=n.height;n.width;var a=n.bufY,l=n.bufU,u=n.bufV,h=new N(s,r,o,a,l,u);e.cacheYuvBuf.appendCacheByCacheYuv(h),h=null}}},i.initVideoAndAudio=function(){this.$video.width=this.options.width,this.$video.height=this.options.height,this.gl=new U(this.$video,{preserveDrawingBuffer:!1}),this.options.audioNone||(this.audio=new B({logger:this.logger,sampleRate:this.options.sampleRate,appendType:this.options.appendHevcType,volume:this.options.volume,isLive:this.options.isLive})),this.isPlayLoadingFinish=1},ie(t,[{key:"volume",get:function(){var e;return(null==(e=this.audio)?void 0:e.volume)||this._volume},set:function(e){this.setVolume(e)}}]),t}(te),oe=[/#EXT-X-PROGRAM-DATE-TIME.+\n/g],ae={lineDelimiter:/\r?\n/,extensionHeader:"#EXTM3U",tagPrefix:"#EXT",segmentPrefix:"#EXTINF",segmentParse:/^#EXTINF: *([0-9.]+)(, *(.+?)?)?$/,tagParse:/^#EXT-X-([A-Z-]+)(:(.+))?$/,version:"VERSION",allowCache:"ALLOW-CACHE",combined:"COMBINED",endList:"ENDLIST",targetDuration:"TARGETDURATION",mediaSequence:"MEDIA-SEQUENCE",discontinuity:"DISCONTINUITY",streamInf:"STREAM-INF",isComment:function(e){return e&&"#"===e[0]&&!e.startsWith(ae.tagPrefix)},isBlank:function(e){return""===e},canStrip:function(e){return ae.isBlank(e)||ae.isComment(e)},defaultMinDur:99999},le=function(){function e(e){this._retry=10,this.logger=null==e?void 0:e.logger,this.initState=!0,this.controller=new AbortController,this._slices=[],this._type=f,this._preURI="",this.duration=-1,this.onTransportStream=null,this.onFinished=null}var t=e.prototype;return t.destroy=function(){this.initState=!1},t.fetchM3u8=function(e){var t=this,i=this;if(this.initState){var n=function(t){return new Promise((function(i,n){var s=new XMLHttpRequest;s.open("GET",t),s.onload=function(){this.status>=200&&this.status<300&&(t!==this.responseURL?(e=this.responseURL,i(this.responseURL)):i(""))},s.onreadystatechange=function(){4===s.readyState&&200===s.status&&i(s.responseText)},s.onerror=function(){n(new Error("Network error."))},s.send()}))};n(e).then((function(s){if(t._retry=10,i._uriParse(e)){var r=i._m3u8Parse(s);if("number"==typeof r&&r>=0)var o=setTimeout((function(){i.fetchM3u8(e),clearTimeout(o)}),200*r)}return n=null,s})).catch((function(s){if(t.logger.error("[M3u8Base] fetch m3u8 url Error ==> ",s),n=null,t._retry>=1)var r=setTimeout((function(){i.fetchM3u8(e),clearTimeout(r)}),500);t._retry--}))}},t._uriParse=function(e){this._preURI="";var t=e.split("://"),i=null,n=null;if(t.length<1)return this.logger.log("HLS URI ERROR : "+e),!1;t.length>1?(i=t[0],n=t[1].split("/"),this._preURI=i+"://"):n=t[0].split("/");for(var s=0;sc&&(s=c);var d,f=n[o+=1],m=null;if(f.includes("http"))m=f;else{if("/"===f[0]){var v=this._preURI.split("//"),g=v[v.length-1].split("/");this._preURI=v[0]+"//"+g[0]}m=this._preURI+f}if(!this._slices.includes(m))this._slices.push(m),null==this||null==(d=this.onTransportStream)||d.call(this,m,c)}}}this._slices.length>500&&(this._slices=this._slices.slice(-500));var y={type:this._type,duration:-1};return null==this||null==(t=this.onFinished)||t.call(this,y),s},t._readTag=function(e){var t=ae.tagParse.exec(e);return null!==t?{key:t[1],value:t[3]}:null},e}(),ue=function(){function e(e){this.sampleRate=e.sampleRate,this.frameDurMs=Math.floor(1024e3/this.sampleRate),this.frameDurSec=this.frameDurMs/1e3}var t=e.prototype;return t.updateOptions=function(e){this.sampleRate=e.sampleRate,this.frameDurMs=1024e3/this.sampleRate,this.frameDurSec=this.frameDurMs/1e3},t._getPktLen=function(e,t,i){return((3&e)<<11)+(t<<3)+((224&i)>>5)},t.sliceAACFrames=function(e,t){for(var i=[],n=e,s=0;s>4==15){var r=this._getPktLen(t[s+3],t[s+4],t[s+5]);if(r<=0)continue;var o=t.subarray(s,s+r),a=new Uint8Array(r);a.set(o,0),i.push({ptime:n,data:a}),n+=this.frameDurSec,s+=r}else s+=1;return i},e}(),he="M3U8",ce="TS",de="FETCH",pe=function(){function e(){}return e.init=function(i){e.collect=new t(i)},e.send=function(t,i){var n,s;null==(s=e.collect)||null==(n=s.send)||n.call(s,{action:t,logInfo:i})},e.updateParams=function(t){e.collect.updateExtendsInfo(t)},e}();function fe(e,t,i){return t&&function(e,t){for(var i=0;i ",e),s=null})).catch((function(n){var s,r,o,a;t.logger.error("[MpegTsDemux] demuxerTsInit ERROR fetch ERROR ==> ",n),null==(r=t.event)||null==(s=r.emit)||s.call(r,ce,{data:n}),null==(a=t.event)||null==(o=a.emit)||o.call(a,de,{data:n,type:ce}),null==i||i.onDemuxedFailed(n,e),pe.send(100,{url:e,msg:"fetch error"})}))},t._demuxCore=function(e,t){e.length<=0||this.decoderWorker.postMessage($(Q,{buff:e,tsUrl:t}))},t.readMediaInfo=function(){return this.mediaInfo},t.readAudioNone=function(){var e;return null==(e=this.mediaInfo)?void 0:e.audioNone},t.isHEVC=function(){return this.mediaInfo.vCodec===d||this.mediaInfo.vCodec===c},t.destroy=function(){this.controller&&this.controller.abort(),this.controller=null,this.mediaInfo=null,this.aacDec=null},t._onWorkerMessage=function(){var e=this;e.logger.log("[demuxer] register _onWorkerMessage"),e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case J:var n,s;if(e.mediaInfo=i.data,e.mediaInfo)null==(s=e.event)||null==(n=s.emit)||n.call(s,"mediaInfo",e.mediaInfo);break;case z:var r;if(e.mediaInfo.vCodec)null==e.aacDec?e.aacDec=new ue(e.mediaInfo):e.aacDec.updateOptions(e.mediaInfo),null==e||null==(r=e.onDemuxed)||r.call(e)}}))},fe(e,[{key:"vCodec",get:function(){return this.mediaInfo.vCodec}}]),e}(),ge=function(){function e(e,t,i,n){this.pts=e,this.dts=e,this.isKey=t,this.data=i,this.video=n}return e.prototype.setFrame=function(e,t,i,n){this.pts=e,this.isKey=t,this.data=i,this.video=n},e}(),ye=function(){function e(e){this.logger=null==e?void 0:e.logger,this.event=null==e?void 0:e.event,this.decoderWorker=e.decoderWorker,this.m3u8Base=new le(e),this.mpegTsDemux=new ve(e),this.tsList=[],this._startTime=0,this._aStartTime=0,this.lockWait={state:!1,lockMember:{dur:0}},this._timerFeed=null,this.seekPos=-1,this.vPreFramePTS=0,this.aPreFramePTS=0,this.audioNone=!1,this.isHevcParam=!1,this.vCodec="",this.aCodec=null,this.aChannel=0,this.durationMs=-1,this.fps=-1,this.sampleRate=-1,this.size={width:-1,height:-1},this.mediaInfo=null,this._onWorkerMessage(),this.onReadyOBJ=null,this.onFinished=null,this.onDemuxed=null,this.onSamples=null,this.onCacheProcess=null}var t=e.prototype;return t.getCachePTS=function(){return Math.max(this.vPreFramePTS,this.aPreFramePTS)},t.demux=function(e){var t=this,i=this;this.vPreFramePTS=0,this.aPreFramePTS=0,this.m3u8Base.onTransportStream=function(e,t){i.tsList.push({streamURI:e,streamDur:t}),i.lockWait.state=!1},this.m3u8Base.onFinished=function(e){var t;e.type===p?i.durationMs=1e3*e.duration:i.durationMs=-1,null==i||null==(t=i.onFinished)||t.call(i,i.onReadyOBJ,e)},this.mpegTsDemux.onDemuxedFailed=function(e,n){t.logger.error("[M3u8] onDemuxedFailed: ",e,n),i.lockWait.state=!1},this.mpegTsDemux.onDemuxed=function(){var e;t.logger.log("[M3u8] onDemuxed"),null==i.mediaInfo&&(i.mediaInfo=i.mpegTsDemux.readMediaInfo(),t.logger.log("[M3u8] mediaInfo: ",i.mediaInfo),i.isHevcParam=i.mpegTsDemux.isHEVC(),i.vCodec=i.mpegTsDemux.vCodec,i.aCodec=i.mediaInfo.aCodec,i.aChannel=i.mediaInfo.sampleChannel,i.fps=i.mediaInfo.fps,i.sampleRate=i.mediaInfo.sampleRate,(null===i.aCodec||""===i.aCodec||i.aChannel<=0)&&(i.audioNone=!0),i.mediaInfo.width>0&&i.mediaInfo.height>0&&(t.size.width=t.mediaInfo.width,t.size.height=t.mediaInfo.height)),null==i||null==(e=i.onDemuxed)||e.call(i,i.onReadyOBJ),i.mpegTsDemux&&t.decoderWorker.postMessage($(q))},this.mpegTsDemux.onReady=function(){i._fetchM3u8AndIntervalTs(e)},this._timerTsWasm=window.setInterval((function(){1===ke.__HLS_WASM_DecoderState__&&(i._fetchM3u8AndIntervalTs(e),window.clearInterval(i._timerTsWasm),i._timerTsWasm=null)}),500)},t._fetchM3u8AndIntervalTs=function(e){var t=this,i=this;this.logger.log("[M3u8] start fetch m3u8 url"),i.m3u8Base.fetchM3u8(e),i._timerFeed=window.setInterval((function(){if(i.tsList.length>0&&!i.lockWait.state)try{var e=i.tsList.shift();if(null!=e){var n=e.streamURI,s=e.streamDur;i.lockWait.state=!0,i.lockWait.lockMember.dur=+s,i.mpegTsDemux.demuxURL(n)}else t.logger.error("[M3u8] onTsReady need wait ")}catch(e){var r,o,a,l;t.logger.error("[M3u8] onTsReady ERROR:",e),null==(o=t.event)||null==(r=o.emit)||r.call(o,he,{data:e}),null==(l=t.event)||null==(a=l.emit)||a.call(l,de,{data:e,type:he}),i.lockWait.state=!1}}),50)},t.destroy=function(){var e;this.m3u8Base&&(null==(e=this.m3u8Base)||e.destroy(),this.m3u8Base=null);this._timerFeed&&(window.clearInterval(this._timerFeed),this._timerFeed=null),this.mpegTsDemux&&(this.mpegTsDemux.destroy(),this.mpegTsDemux=null)},t.bindReady=function(e){this.onReadyOBJ=e},t.getACodec=function(){return this.aCodec},t.getVCodec=function(){return this.vCodec},t.getDurationMs=function(){return this.durationMs},t.getFPS=function(){return this.fps},t.getSampleRate=function(){return this.sampleRate},t.getSampleChannel=function(){return this.aChannel},t.getSize=function(){return this.size},t._onWorkerMessage=function(){this.logger.log("[M3U8] register _onWorkerMessage");var e=this;e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case q:var n,s=i.data,r=s.type,o=s.pts,a=s.ptime,l=s.keyframe,u=s.data,c=s.layer;if(u=new Uint8Array(u),1===r&&e.mpegTsDemux.mediaInfo.aCodec===h&&(u=e.mpegTsDemux.aacDec.sliceAACFrames(a,u)),0===r){var d=function(e){var t=e.nalu,i=e.vlc.vlc;null==t.vps&&(t.vps=new Uint8Array);var n=new Uint8Array(t.vps.length+t.sps.length+t.pps.length+t.sei.length+i.length);return n.set(t.vps,0),n.set(t.sps,t.vps.length),n.set(t.pps,t.vps.length+t.sps.length),n.set(t.sei,t.vps.length+t.sps.length+t.pps.length),n.set(i,t.vps.length+t.sps.length+t.pps.length+t.sei.length),n}(c),p=o,f=new ge(p,1===l,d,!0);e.vPreFramePTS=p,null==e||e.onSamples(e.onReadyOBJ,f)}else if(1===r){var m;if("aac"===(null==(m=e.mediaInfo)?void 0:m.aCodec)){for(var v=u,g=0;g0&&(e.$video.volume=e._options.volume)}),1e3)})),e.event.emit("parsed")}))}))}else if(this.$video.canPlayType("application/vnd.apple.mpegurl")){this.logger.log("Browser support application/vnd.apple.mpegurl : ",this.$video.canPlayType("application/vnd.apple.mpegurl")),this.$video.src=this._options.url;var n=!1;this.$video.addEventListener("canplay",(function(){!n&&e._options.autoPlay&&setTimeout((function(){e.$video.play().then((function(){e.logger.log("autoPlay video!"),setTimeout((function(){e._options.volume>0&&e.setVolume(e._options.volume)}),1e3),n=!0}))}),200)}))}else this.logger.warn("Browser not support hls")},n.isPlayingState=function(){return!this.$video.paused},n.play=function(){if(this.isPlayingState())return Promise.resolve();if(this._options.isLive&&(this.$video.buffered.length>=1&&this.$video.buffered.end(0)>1)){var e=this.$video.buffered.end(0)-1;this.$video.currentTime=e}return this.$video.play()},n.pause=function(){this.$video.pause()},n.setVolume=function(e){this.$video.muted&&(this.$video.muted=!1),this._volume=+(e||0),0===this._volume&&(this.$video.muted=!0),this.$video.volume=this._volume},n.destroy=function(){this.$video&&this.$video.pause(),this._hls&&(this._hls.destroy(),this._hls=null),e.prototype.destroy.call(this)},n._onEvent=function(){var e;(e=this).$video&&(e.$video.addEventListener("canplay",(function(){e.event.emit("canplay")})),e.$video.addEventListener("loadeddata",(function(){e.event.emit("loadeddata")})),e.$video.addEventListener("volumechange",(function(){e.event.emit("volumechange",{data:e.$video.volume})})),e.$video.addEventListener("waiting",(function(){e.event.emit("waiting")})),e.$video.addEventListener("timeupdate",(function(){var t;null==(t=e.event)||t.emit("timeupdate")})),e.$video.addEventListener("seeking",(function(){e.event.emit("seeking",{data:e.$video.currentTime})})),e.$video.addEventListener("seeked",(function(){e.event.emit("seeked")})),e.$video.addEventListener("abort",(function(){e.event.emit("abort")})),e.$video.addEventListener("error",(function(){var t;null==(t=e.event)||t.emit("error",{data:e.$video.error})})),e.$video.addEventListener("ended",(function(){e.event.emit("ended")})))},_e(t,[{key:"volume",get:function(){return this._volume},set:function(e){this.setVolume(e)}}]),t}(te);var Ce="wasm_loaded",xe="wasm_failed",Se="init";function Le(e,t){return Le=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Le(e,t)}var be=function(e){function t(t){var i;return void 0===t&&(t={}),i=e.call(this,t)||this,t.url=n.addVc(null==t?void 0:t.url,["h264","h265"]),function(e,t){if(((null==t?void 0:t.volume)||0)>1?e._volume=1:((null==t?void 0:t.volume)||0)<=0?e._volume=0:e._volume=+((null==t?void 0:t.volume)||0),t.volume=e._volume,e.options=r.merge({},Z,t),"string"!=typeof e.options.id)throw new Error("id is required!");e.logger=s(e.options.loggerOptions),e.event=new o,e.logger.log("HlsPlayer version: ",ke.version),e.logger.log("HlsPlayer options: ",e.options),e.options.logger=e.logger}(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(i),t),i._containerClassName=K+"-container",i._render(),i}!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Le(e,t)}(t,e);var i=t.prototype;return i._render=function(){this.$container.classList.add(this._containerClassName)},i.destroy=function(){this.$container&&(this.$container.classList.remove(this._containerClassName),this.$container.innerHTML="",this.$container=null)},t}(e);function Re(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e=!0),this.playParam={durationMs:0,fps:0,sampleRate:0,size:{width:0,height:0},audioNone:e,videoCodec:L},!M())throw new Error("Browser not support WebAssembly!");this._onWorkerMessage()},i.play=function(){if(pe.send(1,{name:"play"}),null===this.player)return Promise.resolve();if(this.playParam.videoCodec===L){var e={seekPos:0,isLive:this.options.isLive,accurateSeek:!0,seekEvent:!1,realPlay:!0};return this.player.play(e)}return this.player.play()},i.pause=function(){return pe.send(1,{name:"pause"}),null!==this.player&&(this.player.pause(),!0)},i.destroy=function(){var t,i;return pe.send(1,{name:"destroy"}),void 0!==this.player&&null!==this.player&&(this.playParam.videoCodec===L&&this._m3u8Obj&&(this._m3u8Obj.destroy(),this._m3u8Obj=null),this.player.destroy(),this._decoderWorker&&(this._decoderWorker.postMessage($(X)),this._decoderWorker.terminate(),this._decoderWorker=null),this.logger.log("destroy"),null==(i=this.event)||null==(t=i.emit)||t.call(i,"destroy"),this.player=null,e.prototype.destroy.call(this),!0)},i.isPlaying=function(){return null!==this.player&&this.player.isPlayingState()},i.setVolume=function(e){var t;(e=+e)>1||e<0?this.logger.warn("volume volume value 0.0 ~ 1.0!"):((t=this).player||(t.event.emit("playerIsNull"),t.logger.warn("Player instance does not exist!"),0))&&(this.player.setVolume(e),this.event.emit("volumeChange",{data:e}))},i.getVersion=function(){return pe.send(1,{name:"getVersion"}),"0.1.0-beta.2"},i._m3u8Entry=function(){var e=this;this._m3u8Obj=new ye({logger:this.logger,decoderWorker:this._decoderWorker,event:this.event}),this._m3u8Obj.bindReady(this),this._m3u8Obj.onFinished=function(e,t){},this._m3u8Obj.onCacheProcess=function(t){e.options.isLive||null==e.onCacheProcess||e.onCacheProcess.call(e,t)},this._m3u8Obj.onDemuxed=this._checkPlayer.bind(this),this._m3u8Obj.onSamples=this._hlsOnSamples.bind(this),this._m3u8Obj.demux(this.url)},i._checkPlayer=function(e,t){var i=this;if(null==i.player){var n,s,r;if(!(null==i||null==(n=i._m3u8Obj)?void 0:n.isHevcParam)||t)return null==i||null==(r=i._m3u8Obj)||null==(s=r.destroy)||s.call(r),i._m3u8Obj=null,this._decoderWorker.terminate(),this._decoderWorker=null,void(i.player=new we(De({},this.options,{event:this.event,logger:this.logger})));var o=i._m3u8Obj.getACodec(),a=i._m3u8Obj.getFPS(),l=i._m3u8Obj.getSampleRate(),u=i._m3u8Obj.getSize(),h=!1;h=i._m3u8Obj.getSampleChannel()<=0||""===o,i._softPlayer(0,a,l,u,h)}},i._hlsOnSamples=function(e,t){var i,n,s,r=this;if(t.video)null==(s=r.player)||null==(n=s.appendHevcFrame)||n.call(s,t);else if(!(null==(i=r._m3u8Obj)?void 0:i.audioNone)){var o,a;null==(a=r.player)||null==(o=a.appendAACFrame)||o.call(a,t)}},i._onWorkerMessage=function(){var e=this,i=this;this._decoderWorker.onmessage=function(n){var s=n.data;switch(s.cmd){case W:t.__HLS_WASM_DecoderState__=0;break;case V:t.__HLS_WASM_DecoderState__=1,e.logger.log("Wasm already init over!"),i.event.emit(Ce),i._decoderWorker.postMessage($("registerWasmPlayer")),i._m3u8Entry();break;case j:t.__HLS_WASM_DecoderState__=-1,e.logger.error("Wasm init failed!",s),i.event.emit(xe,s),pe.send("wasm",{name:"wasm loading failed"}),i._checkPlayer(!0)}}},i._softPlayer=function(e,t,i,n,s,r){var o,a,l=this;void 0===s&&(s=!1),void 0===r&&(r=null);var u,h=this;(this.playParam.durationMs=e,this.playParam.fps=t,this.playParam.sampleRate=i,this.playParam.size=n,this.playParam.audioNone=s,this.playParam.videoCodec=r||L,this.logger.log("this.playParam: ",this.playParam),this.logger.log("start init soft player"),this.player=new re(De({},h.options,{sampleRate:i,fps:t,appendHevcType:v,fixed:!1,id:this.options.id,audioNone:s,videoCodec:r,logger:this.logger,event:this.event,decoderWorker:this._decoderWorker})),this.player.onPlayingTime=function(e){var t;null==h||null==(t=h.onPlayTime)||t.call(h,e)},this.player.onPlayingFinish=function(){var e,t;(l.pause(),null!=l.onPlayFinish)&&(null==(t=l)||null==(e=t.onPlayFinish)||e.call(t))},this.player.onLoadCache=function(){var e,t;null==(t=l)||null==(e=t.onLoadCache)||e.call(t)},this.player.onLoadCacheFinished=function(){var e,t;null==(t=l)||null==(e=t.onLoadCacheFinished)||e.call(t)},null==(o=h.player)||o.setDurationMs(e),null==(a=h.player)||a.setFrameRate(t),null!=h.onReadyShowDone)&&(null==h||null==(u=h.onReadyShowDone)||u.call(h));this.event.emit("parsed"),this.player&&this.options.autoPlay&&this.play()},t.supportType=function(e){if(pe.send(1,{name:"supportType",options:e}),"hls"===e.type)return!0;if(e.url){var t=e.url;t.startsWith("http://")||t.startsWith("https://")||(t=/^\/\//.test(t)?"http:"+t:location.origin+location.pathname+t);try{return/\.m3u8$/i.test(new URL(t).pathname)}catch(e){}}return!1},Re(t,[{key:"volume",get:function(){return this.player?this.player.volume:this.options.volume},set:function(e){e=+e,this.setVolume(e)}}]),t}(be);ke.__HLS_WASM_DecoderState__=0,ke.version="0.1.0-beta.2",module.exports=ke; +"use strict";var e=require("@ezuikit/player-base"),t=require("@ezuikit/utils-collect"),i=require("hls.js"),n=require("@ezuikit/utils-tools"),s=require("@ezuikit/utils-logger"),r=require("lodash-es"),o=require("eventemitter3"),a=1,l=2,u=3,h="aac",c="h265",d="hevc",p="m3u8",f="hls",m=0,v=1,g=600,y=400,_=30,T=40,P=!1,w=44100,C=20,x="ONCE",S="SWAP",L=0,b=265,R=1001,D=1002,E=1003;var k,M=function(){return window.WebAssembly&&"object"==("undefined"==typeof WebAssembly?"undefined":(e=WebAssembly)&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e);var e};function A(){return(new Date).getTime()}var I=window.AudioContext||(null==(k=window)?void 0:k.webkitAudioContext),B=function(){function e(e){var t=this;this.options={sampleRate:e.sampleRate||w,appendType:e.appendType||m,playMode:e.playMode||S,isLive:e.isLive},this.logger=null==e?void 0:e.logger,this.sourceChannel=-1,this.audioCtx=new I({latencyHint:"interactive",sampleRate:e.sampleRate}),this.gainNode=null,this.sourceList=[],this.startStatus=!1,this.sampleQueue=[],this.nextBuffer=null,this.playTimestamp=0,this.playStartTime=0,this.durationMs=-1,this.volume=e.volume||0,this.onLoadCache=null,this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList.push(this.audioCtx.createBufferSource()),this.sourceList[0].onended=function(){t.swapSource(0,1)},this.sourceList[1].onended=function(){t.swapSource(1,0)},this.gainNode=this.audioCtx.createGain(),this.gainNode.gain.value=this.volume,this.gainNode.connect(this.audioCtx.destination),this.runNextBuffer()}var t=e.prototype;return t.resetStartParam=function(){this.playTimestamp=0,this.playStartTime=0},t.setOnLoadCache=function(e){this.onLoadCache=e},t.setDurationMs=function(e){void 0===e&&(e=-1),this.durationMs=e},t.setVolume=function(e){void 0===e&&(e=0),this.volume=e,this.gainNode.gain.value=e},t.getAlignVPTS=function(){return this.playTimestamp+(A()-this.playStartTime)/1e3},t.swapSource=function(e,t){if(void 0===e&&(e=-1),void 0===t&&(t=-1),!this.startStatus)return null;if(e<0||e>=this.sourceList.length)return null;if(t<0||t>=this.sourceList.length)return null;try{this.sourceChannel===e&&null!==this.sourceList[e]&&(this.sourceList[e].disconnect(this.gainNode),this.sourceList[e]=null)}catch(t){this.logger.error("[DEFINE ERROR] this audioCore disconnect source Index:"+e+" error happened!",t)}(this.sourceChannel=t,-2===this.decodeSample(t,e)&&this.options.isLive)&&(this.getAlignVPTS()>=this.durationMs/1e3-.04?this.pause():null==this||this.onLoadCache());return null},t.addSample=function(e){return void 0===e&&(e=null),!(null==e||!e||void 0===e)&&(0===this.sampleQueue.length&&(this.seekPos=null==e?void 0:e.pts),this.sampleQueue.push(e),!0)},t.runNextBuffer=function(){var e=this;window.setInterval((function(){if(!(null!=e.nextBuffer||e.sampleQueue.length=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){s.swapSource(e,t)}),0===this.sampleQueue.length)return this.options.isLive?(this.sourceList[e].connect(this.gainNode),this.sourceList[e].startState||null==(n=this.sourceList[e])||null==(i=n.start)||i.call(n),this.sourceList[e].onended=function(){s.swapSource(e,t)},this.sourceList[e].stop(),0):-2;if(this.sourceList[e].buffer)return this.swapSource(e,t),0;if(null==this.nextBuffer||this.nextBuffer.data.length<1){var r,o,a=this.sourceList[e];return a.connect(this.gainNode),(null==a?void 0:a.startState)||null==(o=this.sourceList[e])||null==(r=o.start)||r.call(o),a.startState=!0,a.stop(),1}var l=this.nextBuffer.data.buffer;this.playTimestamp=this.nextBuffer.pts,this.playStartTime=A();try{this.audioCtx.decodeAudioData(l,(function(t){var i,n;null!==s.sourceList[e]&&(s.sourceList[e].buffer=t,s.sourceList[e].connect(s.gainNode),s.sourceList[e].startState||null==(n=s.sourceList[e])||null==(i=n.start)||i.call(n),s.sourceList[e].startState=!0)}),(function(e){s.logger.error("Error audioCore with decoding audio data",e)}))}catch(e){return this.nextBuffer=null,this.logger.log("decodeAudioData error",e),-3}return this.nextBuffer=null,0},t.decodeWholeSamples=function(e){var t=this;if(void 0===e&&(e=-1),this.sourceChannel=e,e<0||e>=this.sourceList.length)return-1;if(null!=this.sourceList[e]&&void 0!==this.sourceList[e]&&this.sourceList[e]||(this.sourceList[e]=this.audioCtx.createBufferSource(),this.sourceList[e].onended=function(){}),0===this.sampleQueue.length)return-2;for(var i=null,n=null,s=0;s",e)}},e}(),F=function(){function e(e){this.limit=e.limit||200,this.logger=null==e?void 0:e.logger,this.yuvCache=[]}var t=e.prototype;return t.appendCacheByCacheYuv=function(e){return this.yuvCache.push(e),this.yuvCache.length>=this.limit?(this.shiftYuv(),l):a},t.getState=function(){return this.yuvCache.length<=0?u:this.yuvCache.length>=this.limit?l:a},t.cleanPipeline=function(){this.yuvCache=[],this.yuvCache.length=0},t.shiftYuv=function(){return this.yuvCache.length<=0?null:this.yuvCache.shift()},e}(),N=function(){function e(e,t,i,n,s,r){this.pts=e,this.width=t,this.height=i,this.imageBufferY=n,this.imageBufferB=s,this.imageBufferR=r}return e.prototype.setYuv=function(e,t,i,n,s,r){this.pts=e,this.width=t,this.height=i,this.imageBufferY=n,this.imageBufferB=s,this.imageBufferR=r},e}(),O=function(){function e(e){this.gl=e,this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)}var t=e.prototype;return t.bind=function(e,t,i){var n=this.gl;n.activeTexture([n.TEXTURE0,n.TEXTURE1,n.TEXTURE2][e]),n.bindTexture(n.TEXTURE_2D,this.texture),n.uniform1i(n.getUniformLocation(t,i),e)},t.fill=function(e,t,i){var n=this.gl;n.bindTexture(n.TEXTURE_2D,this.texture),n.texImage2D(n.TEXTURE_2D,0,n.LUMINANCE,e,t,0,n.LUMINANCE,n.UNSIGNED_BYTE,i)},e}(),U=function(){function e(e,t){this.gl=null,this.gl=e.getContext("webgl")||e.getContext("experimental-webgl"),this.program=this.gl.createProgram();var i=["attribute highp vec4 aVertexPosition;","attribute vec2 aTextureCoord;","varying highp vec2 vTextureCoord;","void main(void) {"," gl_Position = aVertexPosition;"," vTextureCoord = aTextureCoord;","}"].join("\n"),n=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(n,i),this.gl.compileShader(n);var s=["precision highp float;","varying lowp vec2 vTextureCoord;","uniform sampler2D YTexture;","uniform sampler2D UTexture;","uniform sampler2D VTexture;","const mat4 YUV2RGB = mat4","("," 1.1643828125, 0, 1.59602734375, -.87078515625,"," 1.1643828125, -.39176171875, -.81296875, .52959375,"," 1.1643828125, 2.017234375, 0, -1.081390625,"," 0, 0, 0, 1",");","void main(void) {"," gl_FragColor = vec4( texture2D(YTexture, vTextureCoord).x, texture2D(UTexture, vTextureCoord).x, texture2D(VTexture, vTextureCoord).x, 1) * YUV2RGB;","}"].join("\n"),r=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(r,s),this.gl.compileShader(r),this.gl.attachShader(this.program,n),this.gl.attachShader(this.program,r),this.gl.linkProgram(this.program),this.gl.useProgram(this.program),this.gl.getProgramParameter(this.program,this.gl.LINK_STATUS);var o=this.gl.getAttribLocation(this.program,"aVertexPosition");this.gl.enableVertexAttribArray(o);var a=this.gl.getAttribLocation(this.program,"aTextureCoord");this.gl.enableVertexAttribArray(a),this.verticesBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.verticesBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(o,3,this.gl.FLOAT,!1,0,0),this.texCoordBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texCoordBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(a,2,this.gl.FLOAT,!1,0,0),this.gl.y=new O(this.gl),this.gl.u=new O(this.gl),this.gl.v=new O(this.gl),this.gl.y.bind(0,this.program,"YTexture"),this.gl.u.bind(1,this.program,"UTexture"),this.gl.v.bind(2,this.program,"VTexture")}var t=e.prototype;return t.renderFrame=function(e,t,i,n,s){this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.y.fill(n,s,e),this.gl.u.fill(n>>1,s>>1,t),this.gl.v.fill(n>>1,s>>1,i),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4)},t.destroyContext=function(){try{this.gl.deleteProgram(this.program),this.gl.deleteBuffer(this.verticesBuffer),this.gl.deleteBuffer(this.texCoordBuffer),this.gl.deleteTexture(this.gl.y.texture),this.gl.deleteTexture(this.gl.u.texture),this.gl.deleteTexture(this.gl.v.texture),this.gl=null,this.program=null,this.verticesBuffer=null,this.texCoordBuffer=null}catch(e){}},e}(),$=function(e,t){return{cmd:e,data:t}},W="wasmLoading",V="wasmLoaded",j="wasmFailed",Y="videoCallback",H="decodeCodecContext",X="destroy",Q="demuxTsStream",z="demuxCoreReceive",q="readPacket",G="readPacketEnd",J="mediaInfo",K="ezui-hls",Z={width:600,height:400,volume:0,retry:20,autoPlay:!0,staticPath:"",isLive:!0,loggerOptions:{name:"HLS",level:"INFO",showTime:!0}},ee={disableContextmenu:!0},te=function(){function t(e){void 0===e&&(e={}),this.options=Object.assign({},ee,e),this.logger=this.options.logger,this.event=this.options.event,this._classVideo=K+"-video",this._$container=document.getElementById(this.options.id),this._render()}var i=t.prototype;return i._render=function(){var t,i;if("video"===this.options.nodeName)this.$video=new e.Video(this._$container,this.options).$video;else{var n;if(this.$video=document.createElement(this.options.nodeName),this._$container.innerHTML="",this._$container.appendChild(this.$video),this.options.disableContextmenu)null==(n=this.$video)||n.addEventListener("contextmenu",(function(e){return e.preventDefault(),!1}));this.$video.classList.add(this._classVideo),this.$video.style.cssText+="object-fit: contain; z-index:1;"}null==(i=this.event)||null==(t=i.emit)||t.call(i,"rendered")},i._isVideo=function(){return"VIDEO"===this.$video.nodeName},i.destroy=function(){if(this.$video&&this._$container&&this.$video){try{this._$container.removeChild(this.$video)}catch(e){}this.$video=null}},t}();function ie(e,t,i){return t&&function(e,t){for(var i=0;i=1&&(null==(i=e)||null==(t=i.onLoadCacheFinished)||t.call(i),window.clearInterval(e.cacheInterval),e.cacheInterval=null,e.isCaching===D&&e.play(e.playParams),e.isCaching=R)}),40))}},i._playFunc=function(){var e=!1;if(A()-this.calculateStartTime>=this.frameTime-this.preCostTime){e=!0;var t=!0;if(this.calculateStartTime=A(),this.options.audioNone)this.playFrameYUV(t);else{this.fix_poc_err_skip>0&&(this.fix_poc_err_skip--,t=!1);var i=this.videoPTS-this.audio.getAlignVPTS();if(i>0)return void(this.playParams.seekEvent&&!this.options.audioNone&&this.audio.setVolume(0));if(t){if(!(t=-1*i<=1*this.frameTimeSec)){for(var n=parseInt(i/this.frameTimeSec+""),s=0;s",e,n,i),n>=i&&(t.playFrameYUV(!0),i+=1)}),this.frameTime||5)}else(this.videoPTS>=this.playParams.seekPos&&!this.isNewSeek||0===this.playParams.seekPos||0===this.playParams.seekPos)&&(this.frameTime=1e3/this.options.fps,this.frameTimeSec=this.frameTime/1e3,this.options.audioNone||this.audio.play(),this._volume=this.options.audioNone?0:this.audio.volume,this.loop=window.setInterval((function(){var e=A();t._playFunc(),t.preCostTime=A()-e}),this.frameTime||5));return this.setVolume(this._volume),Promise.resolve()},i.stop=function(){this.destroy(),this.stream=new Uint8Array},i.destroy=function(){return void 0!==this.gl&&null!==this.gl&&(this.gl.destroyContext(),this.gl=null),this.endAudio(),this.cacheLoop&&window.clearInterval(this.cacheLoop),this.cacheLoop=null,this.loop&&window.clearInterval(this.loop),this.loop=null,this.pause(),this.decoderWorker.postMessage($(X)),this.stream=null,this.frameList=null,this.durationMs=-1,this.videoPTS=0,this.isPlaying=!1,this.$video.remove(),!0},i.nextNalu=function(e){if(void 0===e&&(e=1),this.stream.length<=4)return!1;for(var t=-1,i=0;i=this.stream.length){if(-1===t)return!1;var n=this.stream.subarray(t);return this.stream=new Uint8Array,n}var s="0 0 1"===this.stream.slice(0,3).join(" "),r="0 0 0 1"===this.stream.slice(0,4).join(" ");if(s||r){if(-1===t)t=i;else{if(e<=1){var o=this.stream.subarray(t,i);return this.stream=this.stream.subarray(i),o}e-=1}i+=3}}return!1},i.playFrameYUV=function(e){void 0===e&&(e=!1);var t=this.cacheYuvBuf.shiftYuv();if(!t)return this.noCacheFrame+=1,e&&!this.playParams.seekEvent&&this.loadCache(),!1;this.noCacheFrame=0;var i=t.pts;return this.videoPTS=i,this.drawImage(t.width,t.height,t.imageBufferY,t.imageBufferB,t.imageBufferR),t=null,e&&!this.playParams.seekEvent&&this.isPlaying&&this.loadCache(),!0},i.drawImage=function(e,t,i,n,s){this.$video.width===e&&this.$video.height===t||(this.$video.width=e,this.$video.height=t),this.isCheckDisplay||this.checkDisplaySize(e,t);var r=e*t,o=e/2*(t/2),a=new Uint8Array(r+2*o);a.set(i,0),a.set(n,r),a.set(s,r+o),this.gl.renderFrame(i,n,s,e,t),a=null},i.checkDisplaySize=function(e,t){var i,n=e/(null==(i=this.options)?void 0:i.width)>t/this.options.height,s=+(this.options.width/e).toFixed(2),r=+(this.options.height/t).toFixed(2),o=n?s:r,a=this.options.fixed,l=a?this.options.width:parseInt(e*o+""),u=a?this.options.height:parseInt(t*o+"");return this.$video.style.maxWidth="100%",this.$video.style.maxHeight="100%",this.options.width/this.options.height>=1&&l/u>=1?this.$video.style.width="100%":this.$video.style.height="100%",this.isCheckDisplay=!0,[l,u]},i._onWorkerMessage=function(){var e=this;this.decoderWorker.onmessage=function(t){var i=t.data;if(i.cmd===Y){var n=i.data,s=n.ptsSec,r=n.strideY,o=n.height;n.width;var a=n.bufY,l=n.bufU,u=n.bufV,h=new N(s,r,o,a,l,u);e.cacheYuvBuf.appendCacheByCacheYuv(h),h=null}}},i.initVideoAndAudio=function(){this.$video.width=this.options.width,this.$video.height=this.options.height,this.gl=new U(this.$video,{preserveDrawingBuffer:!1}),this.options.audioNone||(this.audio=new B({logger:this.logger,sampleRate:this.options.sampleRate,appendType:this.options.appendHevcType,volume:this.options.volume,isLive:this.options.isLive})),this.isPlayLoadingFinish=1},ie(t,[{key:"volume",get:function(){var e;return(null==(e=this.audio)?void 0:e.volume)||this._volume},set:function(e){this.setVolume(e)}}]),t}(te),oe=[/#EXT-X-PROGRAM-DATE-TIME.+\n/g],ae={lineDelimiter:/\r?\n/,extensionHeader:"#EXTM3U",tagPrefix:"#EXT",segmentPrefix:"#EXTINF",segmentParse:/^#EXTINF: *([0-9.]+)(, *(.+?)?)?$/,tagParse:/^#EXT-X-([A-Z-]+)(:(.+))?$/,version:"VERSION",allowCache:"ALLOW-CACHE",combined:"COMBINED",endList:"ENDLIST",targetDuration:"TARGETDURATION",mediaSequence:"MEDIA-SEQUENCE",discontinuity:"DISCONTINUITY",streamInf:"STREAM-INF",isComment:function(e){return e&&"#"===e[0]&&!e.startsWith(ae.tagPrefix)},isBlank:function(e){return""===e},canStrip:function(e){return ae.isBlank(e)||ae.isComment(e)},defaultMinDur:99999},le=function(){function e(e){this._retry=10,this.logger=null==e?void 0:e.logger,this.initState=!0,this.controller=new AbortController,this._slices=[],this._type=f,this._preURI="",this.duration=-1,this.onTransportStream=null,this.onFinished=null}var t=e.prototype;return t.destroy=function(){this.initState=!1},t.fetchM3u8=function(e){var t=this,i=this;if(this.initState){var n=function(t){return new Promise((function(i,n){var s=new XMLHttpRequest;s.open("GET",t),s.onload=function(){this.status>=200&&this.status<300&&(t!==this.responseURL?(e=this.responseURL,i(this.responseURL)):i(""))},s.onreadystatechange=function(){4===s.readyState&&200===s.status&&i(s.responseText)},s.onerror=function(){n(new Error("Network error."))},s.send()}))};n(e).then((function(s){if(t._retry=10,i._uriParse(e)){var r=i._m3u8Parse(s);if("number"==typeof r&&r>=0)var o=setTimeout((function(){i.fetchM3u8(e),clearTimeout(o)}),200*r)}return n=null,s})).catch((function(s){if(t.logger.error("[M3u8Base] fetch m3u8 url Error ==> ",s),n=null,t._retry>=1)var r=setTimeout((function(){i.fetchM3u8(e),clearTimeout(r)}),500);t._retry--}))}},t._uriParse=function(e){this._preURI="";var t=e.split("://"),i=null,n=null;if(t.length<1)return this.logger.log("HLS URI ERROR : "+e),!1;t.length>1?(i=t[0],n=t[1].split("/"),this._preURI=i+"://"):n=t[0].split("/");for(var s=0;sc&&(s=c);var d,f=n[o+=1],m=null;if(f.includes("http"))m=f;else{if("/"===f[0]){var v=this._preURI.split("//"),g=v[v.length-1].split("/");this._preURI=v[0]+"//"+g[0]}m=this._preURI+f}if(!this._slices.includes(m))this._slices.push(m),null==this||null==(d=this.onTransportStream)||d.call(this,m,c)}}}this._slices.length>500&&(this._slices=this._slices.slice(-500));var y={type:this._type,duration:-1};return null==this||null==(t=this.onFinished)||t.call(this,y),s},t._readTag=function(e){var t=ae.tagParse.exec(e);return null!==t?{key:t[1],value:t[3]}:null},e}(),ue=function(){function e(e){this.sampleRate=e.sampleRate,this.frameDurMs=Math.floor(1024e3/this.sampleRate),this.frameDurSec=this.frameDurMs/1e3}var t=e.prototype;return t.updateOptions=function(e){this.sampleRate=e.sampleRate,this.frameDurMs=1024e3/this.sampleRate,this.frameDurSec=this.frameDurMs/1e3},t._getPktLen=function(e,t,i){return((3&e)<<11)+(t<<3)+((224&i)>>5)},t.sliceAACFrames=function(e,t){for(var i=[],n=e,s=0;s>4==15){var r=this._getPktLen(t[s+3],t[s+4],t[s+5]);if(r<=0)continue;var o=t.subarray(s,s+r),a=new Uint8Array(r);a.set(o,0),i.push({ptime:n,data:a}),n+=this.frameDurSec,s+=r}else s+=1;return i},e}(),he="M3U8",ce="TS",de="FETCH",pe=function(){function e(){}return e.init=function(i){e.collect=new t(i)},e.send=function(t,i){var n,s;null==(s=e.collect)||null==(n=s.send)||n.call(s,{action:t,logInfo:i})},e.updateParams=function(t){e.collect.updateExtendsInfo(t)},e}();function fe(e,t,i){return t&&function(e,t){for(var i=0;i ",e),s=null})).catch((function(n){var s,r,o,a;t.logger.error("[MpegTsDemux] demuxerTsInit ERROR fetch ERROR ==> ",n),null==(r=t.event)||null==(s=r.emit)||s.call(r,ce,{data:n}),null==(a=t.event)||null==(o=a.emit)||o.call(a,de,{data:n,type:ce}),null==i||i.onDemuxedFailed(n,e),pe.send(100,{url:e,msg:"fetch error"})}))},t._demuxCore=function(e,t){e.length<=0||this.decoderWorker.postMessage($(Q,{buff:e,tsUrl:t}))},t.readMediaInfo=function(){return this.mediaInfo},t.readAudioNone=function(){var e;return null==(e=this.mediaInfo)?void 0:e.audioNone},t.isHEVC=function(){return this.mediaInfo.vCodec===d||this.mediaInfo.vCodec===c},t.destroy=function(){this.controller&&this.controller.abort(),this.controller=null,this.mediaInfo=null,this.aacDec=null},t._onWorkerMessage=function(){var e=this;e.logger.log("[demuxer] register _onWorkerMessage"),e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case J:var n,s;if(e.mediaInfo=i.data,e.mediaInfo)null==(s=e.event)||null==(n=s.emit)||n.call(s,"mediaInfo",e.mediaInfo);break;case z:var r;if(e.mediaInfo.vCodec)null==e.aacDec?e.aacDec=new ue(e.mediaInfo):e.aacDec.updateOptions(e.mediaInfo),null==e||null==(r=e.onDemuxed)||r.call(e)}}))},fe(e,[{key:"vCodec",get:function(){return this.mediaInfo.vCodec}}]),e}(),ge=function(){function e(e,t,i,n){this.pts=e,this.dts=e,this.isKey=t,this.data=i,this.video=n}return e.prototype.setFrame=function(e,t,i,n){this.pts=e,this.isKey=t,this.data=i,this.video=n},e}(),ye=function(){function e(e){this.logger=null==e?void 0:e.logger,this.event=null==e?void 0:e.event,this.decoderWorker=e.decoderWorker,this.m3u8Base=new le(e),this.mpegTsDemux=new ve(e),this.tsList=[],this._startTime=0,this._aStartTime=0,this.lockWait={state:!1,lockMember:{dur:0}},this._timerFeed=null,this.seekPos=-1,this.vPreFramePTS=0,this.aPreFramePTS=0,this.audioNone=!1,this.isHevcParam=!1,this.vCodec="",this.aCodec=null,this.aChannel=0,this.durationMs=-1,this.fps=-1,this.sampleRate=-1,this.size={width:-1,height:-1},this.mediaInfo=null,this._onWorkerMessage(),this.onReadyOBJ=null,this.onFinished=null,this.onDemuxed=null,this.onSamples=null,this.onCacheProcess=null}var t=e.prototype;return t.getCachePTS=function(){return Math.max(this.vPreFramePTS,this.aPreFramePTS)},t.demux=function(e){var t=this,i=this;this.vPreFramePTS=0,this.aPreFramePTS=0,this.m3u8Base.onTransportStream=function(e,t){i.tsList.push({streamURI:e,streamDur:t}),i.lockWait.state=!1},this.m3u8Base.onFinished=function(e){var t;e.type===p?i.durationMs=1e3*e.duration:i.durationMs=-1,null==i||null==(t=i.onFinished)||t.call(i,i.onReadyOBJ,e)},this.mpegTsDemux.onDemuxedFailed=function(e,n){t.logger.error("[M3u8] onDemuxedFailed: ",e,n),i.lockWait.state=!1},this.mpegTsDemux.onDemuxed=function(){var e;t.logger.log("[M3u8] onDemuxed"),null==i.mediaInfo&&(i.mediaInfo=i.mpegTsDemux.readMediaInfo(),t.logger.log("[M3u8] mediaInfo: ",i.mediaInfo),i.isHevcParam=i.mpegTsDemux.isHEVC(),i.vCodec=i.mpegTsDemux.vCodec,i.aCodec=i.mediaInfo.aCodec,i.aChannel=i.mediaInfo.sampleChannel,i.fps=i.mediaInfo.fps,i.sampleRate=i.mediaInfo.sampleRate,(null===i.aCodec||""===i.aCodec||i.aChannel<=0)&&(i.audioNone=!0),i.mediaInfo.width>0&&i.mediaInfo.height>0&&(t.size.width=t.mediaInfo.width,t.size.height=t.mediaInfo.height)),null==i||null==(e=i.onDemuxed)||e.call(i,i.onReadyOBJ),i.mpegTsDemux&&t.decoderWorker.postMessage($(q))},this.mpegTsDemux.onReady=function(){i._fetchM3u8AndIntervalTs(e)},this._timerTsWasm=window.setInterval((function(){1===ke.__HLS_WASM_DecoderState__&&(i._fetchM3u8AndIntervalTs(e),window.clearInterval(i._timerTsWasm),i._timerTsWasm=null)}),500)},t._fetchM3u8AndIntervalTs=function(e){var t=this,i=this;this.logger.log("[M3u8] start fetch m3u8 url"),i.m3u8Base.fetchM3u8(e),i._timerFeed=window.setInterval((function(){if(i.tsList.length>0&&!i.lockWait.state)try{var e=i.tsList.shift();if(null!=e){var n=e.streamURI,s=e.streamDur;i.lockWait.state=!0,i.lockWait.lockMember.dur=+s,i.mpegTsDemux.demuxURL(n)}else t.logger.error("[M3u8] onTsReady need wait ")}catch(e){var r,o,a,l;t.logger.error("[M3u8] onTsReady ERROR:",e),null==(o=t.event)||null==(r=o.emit)||r.call(o,he,{data:e}),null==(l=t.event)||null==(a=l.emit)||a.call(l,de,{data:e,type:he}),i.lockWait.state=!1}}),50)},t.destroy=function(){var e;this.m3u8Base&&(null==(e=this.m3u8Base)||e.destroy(),this.m3u8Base=null);this._timerFeed&&(window.clearInterval(this._timerFeed),this._timerFeed=null),this.mpegTsDemux&&(this.mpegTsDemux.destroy(),this.mpegTsDemux=null)},t.bindReady=function(e){this.onReadyOBJ=e},t.getACodec=function(){return this.aCodec},t.getVCodec=function(){return this.vCodec},t.getDurationMs=function(){return this.durationMs},t.getFPS=function(){return this.fps},t.getSampleRate=function(){return this.sampleRate},t.getSampleChannel=function(){return this.aChannel},t.getSize=function(){return this.size},t._onWorkerMessage=function(){this.logger.log("[M3U8] register _onWorkerMessage");var e=this;e.decoderWorker.addEventListener("message",(function(t){var i=t.data;switch(i.cmd){case q:var n,s=i.data,r=s.type,o=s.pts,a=s.ptime,l=s.keyframe,u=s.data,c=s.layer;if(u=new Uint8Array(u),1===r&&e.mpegTsDemux.mediaInfo.aCodec===h&&(u=e.mpegTsDemux.aacDec.sliceAACFrames(a,u)),0===r){var d=function(e){var t=e.nalu,i=e.vlc.vlc;null==t.vps&&(t.vps=new Uint8Array);var n=new Uint8Array(t.vps.length+t.sps.length+t.pps.length+t.sei.length+i.length);return n.set(t.vps,0),n.set(t.sps,t.vps.length),n.set(t.pps,t.vps.length+t.sps.length),n.set(t.sei,t.vps.length+t.sps.length+t.pps.length),n.set(i,t.vps.length+t.sps.length+t.pps.length+t.sei.length),n}(c),p=o,f=new ge(p,1===l,d,!0);e.vPreFramePTS=p,null==e||e.onSamples(e.onReadyOBJ,f)}else if(1===r){var m;if("aac"===(null==(m=e.mediaInfo)?void 0:m.aCodec)){for(var v=u,g=0;g0&&(e.$video.volume=e._options.volume)}),1e3)})),e.event.emit("parsed")}))}))}else if(this.$video.canPlayType("application/vnd.apple.mpegurl")){this.logger.log("Browser support application/vnd.apple.mpegurl : ",this.$video.canPlayType("application/vnd.apple.mpegurl")),this.$video.src=this._options.url;var n=!1;this.$video.addEventListener("canplay",(function(){!n&&e._options.autoPlay&&setTimeout((function(){e.$video.play().then((function(){e.logger.log("autoPlay video!"),setTimeout((function(){e._options.volume>0&&e.setVolume(e._options.volume)}),1e3),n=!0}))}),200)}))}else this.logger.warn("Browser not support hls")},n.isPlayingState=function(){return!this.$video.paused},n.play=function(){if(this.isPlayingState())return Promise.resolve();if(this._options.isLive&&(this.$video.buffered.length>=1&&this.$video.buffered.end(0)>1)){var e=this.$video.buffered.end(0)-1;this.$video.currentTime=e}return this.$video.play()},n.pause=function(){this.$video.pause()},n.setVolume=function(e){this.$video.muted&&(this.$video.muted=!1),this._volume=+(e||0),0===this._volume&&(this.$video.muted=!0),this.$video.volume=this._volume},n.destroy=function(){this.$video&&this.$video.pause(),this._hls&&(this._hls.destroy(),this._hls=null),e.prototype.destroy.call(this)},n._onEvent=function(){var e;(e=this).$video&&(e.$video.addEventListener("canplay",(function(){e.event.emit("canplay")})),e.$video.addEventListener("loadeddata",(function(){e.event.emit("loadeddata")})),e.$video.addEventListener("volumechange",(function(){e.event.emit("volumechange",{data:e.$video.volume})})),e.$video.addEventListener("waiting",(function(){e.event.emit("waiting")})),e.$video.addEventListener("timeupdate",(function(){var t;null==(t=e.event)||t.emit("timeupdate")})),e.$video.addEventListener("seeking",(function(){e.event.emit("seeking",{data:e.$video.currentTime})})),e.$video.addEventListener("seeked",(function(){e.event.emit("seeked")})),e.$video.addEventListener("abort",(function(){e.event.emit("abort")})),e.$video.addEventListener("error",(function(){var t;null==(t=e.event)||t.emit("error",{data:e.$video.error})})),e.$video.addEventListener("ended",(function(){e.event.emit("ended")})))},_e(t,[{key:"volume",get:function(){return this._volume},set:function(e){this.setVolume(e)}}]),t}(te);var Ce="wasm_loaded",xe="wasm_failed",Se="init";function Le(e,t){return Le=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Le(e,t)}var be=function(e){function t(t){var i;return void 0===t&&(t={}),i=e.call(this,t)||this,t.url=n.addVc(null==t?void 0:t.url,["h264","h265"]),function(e,t){if(((null==t?void 0:t.volume)||0)>1?e._volume=1:((null==t?void 0:t.volume)||0)<=0?e._volume=0:e._volume=+((null==t?void 0:t.volume)||0),t.volume=e._volume,e.options=r.merge({},Z,t),"string"!=typeof e.options.id)throw new Error("id is required!");e.logger=s(e.options.loggerOptions),e.event=new o,e.logger.log("HlsPlayer version: ",ke.version),e.logger.log("HlsPlayer options: ",e.options),e.options.logger=e.logger}(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(i),t),i._containerClassName=K+"-container",i._render(),i}!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Le(e,t)}(t,e);var i=t.prototype;return i._render=function(){this.$container.classList.add(this._containerClassName)},i.destroy=function(){this.$container&&(this.$container.classList.remove(this._containerClassName),this.$container.innerHTML="",this.$container=null)},t}(e);function Re(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e=!0),this.playParam={durationMs:0,fps:0,sampleRate:0,size:{width:0,height:0},audioNone:e,videoCodec:L},!M())throw new Error("Browser not support WebAssembly!");this._onWorkerMessage()},i.play=function(){if(pe.send(1,{name:"play"}),null===this.player)return Promise.resolve();if(this.playParam.videoCodec===L){var e={seekPos:0,isLive:this.options.isLive,accurateSeek:!0,seekEvent:!1,realPlay:!0};return this.player.play(e)}return this.player.play()},i.pause=function(){return pe.send(1,{name:"pause"}),null!==this.player&&(this.player.pause(),!0)},i.destroy=function(){var t,i;return pe.send(1,{name:"destroy"}),void 0!==this.player&&null!==this.player&&(this.playParam.videoCodec===L&&this._m3u8Obj&&(this._m3u8Obj.destroy(),this._m3u8Obj=null),this.player.destroy(),this._decoderWorker&&(this._decoderWorker.postMessage($(X)),this._decoderWorker.terminate(),this._decoderWorker=null),this.logger.log("destroy"),null==(i=this.event)||null==(t=i.emit)||t.call(i,"destroy"),this.player=null,e.prototype.destroy.call(this),!0)},i.isPlaying=function(){return null!==this.player&&this.player.isPlayingState()},i.setVolume=function(e){var t;(e=+e)>1||e<0?this.logger.warn("volume volume value 0.0 ~ 1.0!"):((t=this).player||(t.event.emit("playerIsNull"),t.logger.warn("Player instance does not exist!"),0))&&(this.player.setVolume(e),this.event.emit("volumeChange",{data:e}))},i.getVersion=function(){return pe.send(1,{name:"getVersion"}),"0.1.0"},i._m3u8Entry=function(){var e=this;this._m3u8Obj=new ye({logger:this.logger,decoderWorker:this._decoderWorker,event:this.event}),this._m3u8Obj.bindReady(this),this._m3u8Obj.onFinished=function(e,t){},this._m3u8Obj.onCacheProcess=function(t){e.options.isLive||null==e.onCacheProcess||e.onCacheProcess.call(e,t)},this._m3u8Obj.onDemuxed=this._checkPlayer.bind(this),this._m3u8Obj.onSamples=this._hlsOnSamples.bind(this),this._m3u8Obj.demux(this.url)},i._checkPlayer=function(e,t){var i=this;if(null==i.player){var n,s,r;if(!(null==i||null==(n=i._m3u8Obj)?void 0:n.isHevcParam)||t)return null==i||null==(r=i._m3u8Obj)||null==(s=r.destroy)||s.call(r),i._m3u8Obj=null,this._decoderWorker.terminate(),this._decoderWorker=null,void(i.player=new we(De({},this.options,{event:this.event,logger:this.logger})));var o=i._m3u8Obj.getACodec(),a=i._m3u8Obj.getFPS(),l=i._m3u8Obj.getSampleRate(),u=i._m3u8Obj.getSize(),h=!1;h=i._m3u8Obj.getSampleChannel()<=0||""===o,i._softPlayer(0,a,l,u,h)}},i._hlsOnSamples=function(e,t){var i,n,s,r=this;if(t.video)null==(s=r.player)||null==(n=s.appendHevcFrame)||n.call(s,t);else if(!(null==(i=r._m3u8Obj)?void 0:i.audioNone)){var o,a;null==(a=r.player)||null==(o=a.appendAACFrame)||o.call(a,t)}},i._onWorkerMessage=function(){var e=this,i=this;this._decoderWorker.onmessage=function(n){var s=n.data;switch(s.cmd){case W:t.__HLS_WASM_DecoderState__=0;break;case V:t.__HLS_WASM_DecoderState__=1,e.logger.log("Wasm already init over!"),i.event.emit(Ce),i._decoderWorker.postMessage($("registerWasmPlayer")),i._m3u8Entry();break;case j:t.__HLS_WASM_DecoderState__=-1,e.logger.error("Wasm init failed!",s),i.event.emit(xe,s),pe.send("wasm",{name:"wasm loading failed"}),i._checkPlayer(!0)}}},i._softPlayer=function(e,t,i,n,s,r){var o,a,l=this;void 0===s&&(s=!1),void 0===r&&(r=null);var u,h=this;(this.playParam.durationMs=e,this.playParam.fps=t,this.playParam.sampleRate=i,this.playParam.size=n,this.playParam.audioNone=s,this.playParam.videoCodec=r||L,this.logger.log("this.playParam: ",this.playParam),this.logger.log("start init soft player"),this.player=new re(De({},h.options,{sampleRate:i,fps:t,appendHevcType:v,fixed:!1,id:this.options.id,audioNone:s,videoCodec:r,logger:this.logger,event:this.event,decoderWorker:this._decoderWorker})),this.player.onPlayingTime=function(e){var t;null==h||null==(t=h.onPlayTime)||t.call(h,e)},this.player.onPlayingFinish=function(){var e,t;(l.pause(),null!=l.onPlayFinish)&&(null==(t=l)||null==(e=t.onPlayFinish)||e.call(t))},this.player.onLoadCache=function(){var e,t;null==(t=l)||null==(e=t.onLoadCache)||e.call(t)},this.player.onLoadCacheFinished=function(){var e,t;null==(t=l)||null==(e=t.onLoadCacheFinished)||e.call(t)},null==(o=h.player)||o.setDurationMs(e),null==(a=h.player)||a.setFrameRate(t),null!=h.onReadyShowDone)&&(null==h||null==(u=h.onReadyShowDone)||u.call(h));this.event.emit("parsed"),this.player&&this.options.autoPlay&&this.play()},t.supportType=function(e){if(pe.send(1,{name:"supportType",options:e}),"hls"===e.type)return!0;if(e.url){var t=e.url;t.startsWith("http://")||t.startsWith("https://")||(t=/^\/\//.test(t)?"http:"+t:location.origin+location.pathname+t);try{return/\.m3u8$/i.test(new URL(t).pathname)}catch(e){}}return!1},Re(t,[{key:"volume",get:function(){return this.player?this.player.volume:this.options.volume},set:function(e){e=+e,this.setVolume(e)}}]),t}(be);ke.__HLS_WASM_DecoderState__=0,ke.version="0.1.0",module.exports=ke; diff --git a/dist/index.umd.js b/dist/index.umd.js index 97aedb7..b67e92b 100644 --- a/dist/index.umd.js +++ b/dist/index.umd.js @@ -1,6 +1,6 @@ /* * -* HlsPlayer.js v0.1.0-beta.2 +* HlsPlayer.js v0.1.0 * Copyright (c) 2024-8-1 Ezviz-OpenBiz * . * @@ -57,4 +57,4 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ -const bl={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},Ll=e=>String.fromCharCode(bl[e]||e),wl=15,Al=100,Rl={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},kl={17:2,18:4,21:6,22:8,23:10,19:13,20:15},_l={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},Dl={25:2,26:4,29:6,30:8,31:10,27:13,28:15},xl=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];class Cl{constructor(){this.time=null,this.verboseLevel=0}log(e,t){if(this.verboseLevel>=e){const i="function"==typeof t?t():t;lr.log(`${this.time} [${e}] ${i}`)}}}const Il=function(e){const t=[];for(let i=0;iAl&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=Al)}moveCursor(e){const t=this.pos+e;if(e>1)for(let e=this.pos+1;e=144&&this.backSpace();const t=Ll(e);this.pos>=Al?this.logger.log(0,(()=>"Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!")):(this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1))}clearFromPos(e){let t;for(t=e;t"pacData = "+JSON.stringify(e)));let t=e.row-1;if(this.nrRollUpRows&&t"bkgData = "+JSON.stringify(e))),this.backSpace(),this.setPen(e),this.insertChar(32)}setRollUpRows(e){this.nrRollUpRows=e}rollUp(){if(null===this.nrRollUpRows)return void this.logger.log(3,"roll_up but nrRollUpRows not set yet");this.logger.log(1,(()=>this.getDisplayText()));const e=this.currRow+1-this.nrRollUpRows,t=this.rows.splice(e,1)[0];t.clear(),this.rows.splice(this.currRow,0,t),this.logger.log(2,"Rolling up")}getDisplayText(e){e=e||!1;const t=[];let i="",r=-1;for(let i=0;i0&&(i=e?"["+t.join(" | ")+"]":t.join("\n")),i}getTextAndFormat(){return this.rows}}class Nl{constructor(e,t,i){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 Fl(i),this.nonDisplayedMemory=new Fl(i),this.lastOutputScreen=new Fl(i),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=i}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],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)),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)}insertChars(e){for(let t=0;tt+": "+this.writeScreen.getDisplayText(!0))),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(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"),"MODE_TEXT"!==this.mode&&(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"),"MODE_POP-ON"===this.mode){const e=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=e,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,(()=>"DISP: "+this.displayedMemory.getDisplayText()))}this.outputDataUpdate(!0)}ccTO(e){this.logger.log(2,"TO("+e+") - Tab Offset"),this.writeScreen.moveCursor(e)}ccMIDROW(e){const t={flash:!1};if(t.underline=e%2==1,t.italics=e>=46,t.italics)t.foreground="white";else{const i=Math.floor(e/2)-16,r=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=r[i]}this.logger.log(2,"MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)}outputDataUpdate(e=!1){const t=this.logger.time;null!==t&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?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.cueStartTime=t,this.lastOutputScreen.copy(this.displayedMemory))}cueSplitAtTime(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))}}class Ul{constructor(e,t,i){this.channels=void 0,this.currentChannel=0,this.cmdHistory={a:null,b:null},this.logger=void 0;const r=this.logger=new Cl;this.channels=[null,new Nl(e,t,r),new Nl(e+1,i,r)]}getHandler(e){return this.channels[e].getHandler()}setHandler(e,t){this.channels[e].setHandler(t)}addData(e,t){this.logger.time=e;for(let e=0;e"["+Il([t[e],t[e+1]])+"] -> ("+Il([i,r])+")"));const a=this.cmdHistory;if(i>=16&&i<=31){if($l(i,r,a)){Bl(null,null,a),this.logger.log(3,(()=>"Repeated command ("+Il([i,r])+") is dropped"));continue}Bl(i,r,this.cmdHistory),s=this.parseCmd(i,r),s||(s=this.parseMidrow(i,r)),s||(s=this.parsePAC(i,r)),s||(s=this.parseBackgroundAttributes(i,r))}else Bl(null,null,a);if(!s&&(n=this.parseChars(i,r),n)){const e=this.currentChannel;if(e&&e>0){this.channels[e].insertChars(n)}else this.logger.log(2,"No channel found yet. TEXT-MODE?")}s||n||this.logger.log(2,(()=>"Couldn't parse cleaned data "+Il([i,r])+" orig: "+Il([t[e],t[e+1]])))}}parseCmd(e,t){if(!((20===e||28===e||21===e||29===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=33&&t<=35))return!1;const i=20===e||21===e||23===e?1:2,r=this.channels[i];return 20===e||21===e||28===e||29===e?32===t?r.ccRCL():33===t?r.ccBS():34===t?r.ccAOF():35===t?r.ccAON():36===t?r.ccDER():37===t?r.ccRU(2):38===t?r.ccRU(3):39===t?r.ccRU(4):40===t?r.ccFON():41===t?r.ccRDC():42===t?r.ccTR():43===t?r.ccRTD():44===t?r.ccEDM():45===t?r.ccCR():46===t?r.ccENM():47===t&&r.ccEOC():r.ccTO(t-32),this.currentChannel=i,!0}parseMidrow(e,t){let i=0;if((17===e||25===e)&&t>=32&&t<=47){if(i=17===e?1:2,i!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;const r=this.channels[i];return!!r&&(r.ccMIDROW(t),this.logger.log(3,(()=>"MIDROW ("+Il([e,t])+")")),!0)}return!1}parsePAC(e,t){let i;if(!((e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127)&&!((16===e||24===e)&&t>=64&&t<=95))return!1;const r=e<=23?1:2;i=t>=64&&t<=95?1===r?Rl[e]:_l[e]:1===r?kl[e]:Dl[e];const s=this.channels[r];return!!s&&(s.setPAC(this.interpretPAC(i,t)),this.currentChannel=r,!0)}interpretPAC(e,t){let i;const r={color:null,italics:!1,indent:null,underline:!1,row:e};return i=t>95?t-96:t-64,r.underline=!(1&~i),i<=13?r.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(i/2)]:i<=15?(r.italics=!0,r.color="white"):r.indent=4*Math.floor((i-16)/2),r}parseChars(e,t){let i,r=null,s=null;if(e>=25?(i=2,s=e-8):(i=1,s=e),s>=17&&s<=19){let e;e=17===s?t+80:18===s?t+112:t+144,this.logger.log(2,(()=>"Special char '"+Ll(e)+"' in channel "+i)),r=[e]}else e>=32&&e<=127&&(r=0===t?[e]:[e,t]);return r&&this.logger.log(3,(()=>"Char codes = "+Il(r).join(","))),r}parseBackgroundAttributes(e,t){if(!((16===e||24===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=45&&t<=47))return!1;let i;const r={};16===e||24===e?(i=Math.floor((t-32)/2),r.background=xl[i],t%2==1&&(r.background=r.background+"_semi")):45===t?r.background="transparent":(r.foreground="black",47===t&&(r.underline=!0));const s=e<=23?1:2;return this.channels[s].setBkgData(r),!0}reset(){for(let e=0;ee)&&(this.startTime=e),this.endTime=t,this.screen=i,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}var Kl=function(){if(null!=Ar&&Ar.VTTCue)return self.VTTCue;const e=["","lr","rl"],t=["start","middle","end","left","right"];function i(e,t){if("string"!=typeof t)return!1;if(!Array.isArray(e))return!1;const i=t.toLowerCase();return!!~e.indexOf(i)&&i}function r(e){return i(t,e)}function s(e,...t){let i=1;for(;i100)throw new Error("Position must be between 0 and 100.");T=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"positionAlign",s({},l,{get:function(){return E},set:function(e){const t=r(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");E=t,this.hasBeenReset=!0}})),Object.defineProperty(o,"size",s({},l,{get:function(){return S},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");S=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"align",s({},l,{get:function(){return b},set:function(e){const t=r(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");b=t,this.hasBeenReset=!0}})),o.displayState=void 0}return n.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},n}();class Vl{decode(e,t){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))}}function Hl(e){function t(e,t,i,r){return 3600*(0|e)+60*(0|t)+(0|i)+parseFloat(r||0)}const i=e.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return i?parseFloat(i[2])>59?t(i[2],i[3],0,i[4]):t(i[1],i[2],i[3],i[4]):null}class jl{constructor(){this.values=Object.create(null)}set(e,t){this.get(e)||""===t||(this.values[e]=t)}get(e,t,i){return i?this.has(e)?this.values[e]:t[i]:this.has(e)?this.values[e]:t}has(e){return e in this.values}alt(e,t,i){for(let r=0;r=0&&i<=100)return this.set(e,i),!0}return!1}}function Wl(e,t,i,r){const s=r?e.split(r):[e];for(const e in s){if("string"!=typeof s[e])continue;const r=s[e].split(i);if(2!==r.length)continue;t(r[0],r[1])}}const Yl=new Kl(0,0,""),ql="middle"===Yl.align?"middle":"center";function zl(e,t,i){const r=e;function s(){const t=Hl(e);if(null===t)throw new Error("Malformed timestamp: "+r);return e=e.replace(/^[^\sa-zA-Z-]+/,""),t}function n(){e=e.replace(/^\s+/,"")}if(n(),t.startTime=s(),n(),"--\x3e"!==e.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+r);e=e.slice(3),n(),t.endTime=s(),n(),function(e,t){const r=new jl;Wl(e,(function(e,t){let s;switch(e){case"region":for(let s=i.length-1;s>=0;s--)if(i[s].id===t){r.set(e,i[s].region);break}break;case"vertical":r.alt(e,t,["rl","lr"]);break;case"line":s=t.split(","),r.integer(e,s[0]),r.percent(e,s[0])&&r.set("snapToLines",!1),r.alt(e,s[0],["auto"]),2===s.length&&r.alt("lineAlign",s[1],["start",ql,"end"]);break;case"position":s=t.split(","),r.percent(e,s[0]),2===s.length&&r.alt("positionAlign",s[1],["start",ql,"end","line-left","line-right","auto"]);break;case"size":r.percent(e,t);break;case"align":r.alt(e,t,["start",ql,"end","left","right"])}}),/:/,/\s/),t.region=r.get("region",null),t.vertical=r.get("vertical","");let s=r.get("line","auto");"auto"===s&&-1===Yl.line&&(s=-1),t.line=s,t.lineAlign=r.get("lineAlign","start"),t.snapToLines=r.get("snapToLines",!0),t.size=r.get("size",100),t.align=r.get("align",ql);let n=r.get("position","auto");"auto"===n&&50===Yl.position&&(n="start"===t.align||"left"===t.align?0:"end"===t.align||"right"===t.align?100:50),t.position=n}(e,t)}function Xl(e){return e.replace(//gi,"\n")}class Ql{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new Vl,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(e){const t=this;function i(){let e=t.buffer,i=0;for(e=Xl(e);i>>0).toString()};function th(e,t,i){return eh(e.toString())+eh(t.toString())+eh(i)}function ih(e,t,i,r,s,n,a){const o=new Ql,l=Jr(new Uint8Array(e)).trim().replace(Jl,"\n").split("\n"),h=[],c=t?function(e,t=1){return zo(e,qo,1/t)}(t.baseTime,t.timescale):0;let d,u="00:00.000",f=0,g=0,m=!0;o.oncue=function(e){const n=i[r];let a=i.ccOffset;const o=(f-c)/9e4;if(null!=n&&n.new&&(void 0!==g?a=i.ccOffset=n.start:function(e,t,i){let r=e[t],s=e[r.prevCC];if(!s||!s.new&&r.new)return e.ccOffset=e.presentationOffset=r.start,void(r.new=!1);for(;null!=(n=s)&&n.new;){var n;e.ccOffset+=r.start-s.start,r.new=!1,r=s,s=e[r.prevCC]}e.presentationOffset=i}(i,r,o)),o){if(!t)return void(d=new Error("Missing initPTS for VTT MPEGTS"));a=o-i.presentationOffset}const l=e.endTime-e.startTime,u=tl(9e4*(e.startTime+a-g),9e4*s)/9e4;e.startTime=Math.max(u,0),e.endTime=Math.max(u+l,0);const m=e.text.trim();e.text=decodeURIComponent(encodeURIComponent(m)),e.id||(e.id=th(e.startTime,e.endTime,m)),e.endTime>0&&h.push(e)},o.onparsingerror=function(e){d=e},o.onflush=function(){d?a(d):n(h)},l.forEach((e=>{if(m){if(Zl(e,"X-TIMESTAMP-MAP=")){m=!1,e.slice(16).split(",").forEach((e=>{Zl(e,"LOCAL:")?u=e.slice(6):Zl(e,"MPEGTS:")&&(f=parseInt(e.slice(7)))}));try{g=function(e){let t=parseInt(e.slice(-3));const i=parseInt(e.slice(-6,-4)),r=parseInt(e.slice(-9,-7)),s=e.length>9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!(Ji(t)&&Ji(i)&&Ji(r)&&Ji(s)))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${e}`);return t+=1e3*i,t+=6e4*r,t+=36e5*s,t}(u)/1e3}catch(e){d=e}return}""===e&&(m=!1)}o.parse(e+"\n")})),o.flush()}const rh="stpp.ttml.im1t",sh=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,nh=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,ah={left:"start",center:"center",right:"end",start:"start",end:"end"};function oh(e,t,i,r){const s=ds(new Uint8Array(e),["mdat"]);if(0===s.length)return void r(new Error("Could not parse IMSC1 mdat"));const n=s.map((e=>Jr(e))),a=function(e,t,i=1,r=!1){return zo(e,t,1/i,r)}(t.baseTime,1,t.timescale);try{n.forEach((e=>i(function(e,t){const i=(new DOMParser).parseFromString(e,"text/xml"),r=i.getElementsByTagName("tt")[0];if(!r)throw new Error("Invalid ttml");const s={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},n=Object.keys(s).reduce(((e,t)=>(e[t]=r.getAttribute(`ttp:${t}`)||s[t],e)),{}),a="preserve"!==r.getAttribute("xml:space"),o=hh(lh(r,"styling","style")),l=hh(lh(r,"layout","region")),h=lh(r,"body","[begin]");return[].map.call(h,(e=>{const i=ch(e,a);if(!i||!e.hasAttribute("begin"))return null;const r=fh(e.getAttribute("begin"),n),s=fh(e.getAttribute("dur"),n);let h=fh(e.getAttribute("end"),n);if(null===r)throw uh(e);if(null===h){if(null===s)throw uh(e);h=r+s}const c=new Kl(r-t,h-t,i);c.id=th(c.startTime,c.endTime,c.text);const d=function(e,t,i){const r="http://www.w3.org/ns/ttml#styling";let s=null;const n=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],a=null!=e&&e.hasAttribute("style")?e.getAttribute("style"):null;a&&i.hasOwnProperty(a)&&(s=i[a]);return n.reduce(((i,n)=>{const a=dh(t,r,n)||dh(e,r,n)||dh(s,r,n);return a&&(i[n]=a),i}),{})}(l[e.getAttribute("region")],o[e.getAttribute("style")],o),{textAlign:u}=d;if(u){const e=ah[u];e&&(c.lineAlign=e),c.align=u}return Qi(c,d),c})).filter((e=>null!==e))}(e,a))))}catch(e){r(e)}}function lh(e,t,i){const r=e.getElementsByTagName(t)[0];return r?[].slice.call(r.querySelectorAll(i)):[]}function hh(e){return e.reduce(((e,t)=>{const i=t.getAttribute("xml:id");return i&&(e[i]=t),e}),{})}function ch(e,t){return[].slice.call(e.childNodes).reduce(((e,i,r)=>{var s;return"br"===i.nodeName&&r?e+"\n":null!=(s=i.childNodes)&&s.length?ch(i,t):t?e+i.textContent.trim().replace(/\s+/g," "):e+i.textContent}),"")}function dh(e,t,i){return e&&e.hasAttributeNS(t,i)?e.getAttributeNS(t,i):null}function uh(e){return new Error(`Could not parse ttml timestamp ${e}`)}function fh(e,t){if(!e)return null;let i=Hl(e);return null===i&&(sh.test(e)?i=function(e,t){const i=sh.exec(e),r=(0|i[4])+(0|i[5])/t.subFrameRate;return 3600*(0|i[1])+60*(0|i[2])+(0|i[3])+r/t.frameRate}(e,t):nh.test(e)&&(i=function(e,t){const i=nh.exec(e),r=Number(i[1]);switch(i[2]){case"h":return 3600*r;case"m":return 60*r;case"ms":return 1e3*r;case"f":return r/t.frameRate;case"t":return r/t.tickRate}return r}(e,t))),i}function gh(e){return e.characteristics&&/transcribes-spoken-dialog/gi.test(e.characteristics)&&/describes-music-and-sound/gi.test(e.characteristics)?"captions":"subtitles"}function mh(e,t){return!!e&&e.kind===gh(t)&&vl(t,e)}class ph{constructor(e){this.hls=void 0,this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=e,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}setStreamController(e){this.streamController=e}destroy(){this.hls&&this.unregisterListener(),this.timer&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null}registerListeners(){const{hls:e}=this;e.on(tr.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.on(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){const{hls:e}=this;e.off(tr.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(e,t){const i=this.hls.levels[t.droppedLevel];this.isLevelAllowed(i)&&this.restrictedLevels.push({bitrate:i.bitrate,height:i.height,width:i.width})}onMediaAttaching(e,t){this.media=t.media instanceof HTMLVideoElement?t.media:null,this.clientRect=null,this.timer&&this.hls.levels.length&&this.detectPlayerSize()}onManifestParsed(e,t){const i=this.hls;this.restrictedLevels=[],this.firstLevel=t.firstLevel,i.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onLevelsUpdated(e,t){this.timer&&Ji(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)return void(this.clientRect=null);const e=this.hls.levels;if(e.length){const t=this.hls,i=this.getMaxLevel(e.length-1);i!==this.autoLevelCapping&&lr.log(`Setting autoLevelCapping to ${i}: ${e[i].height}p@${e[i].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),t.autoLevelCapping=i,t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}}getMaxLevel(e){const t=this.hls.levels;if(!t.length)return-1;const i=t.filter(((t,i)=>this.isLevelAllowed(t)&&i<=e));return this.clientRect=null,ph.getMaxLevelByMediaSize(i,this.mediaWidth,this.mediaHeight)}startCapping(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())}stopCapping(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)}getDimensions(){if(this.clientRect)return this.clientRect;const e=this.media,t={width:0,height:0};if(e){const i=e.getBoundingClientRect();t.width=i.width,t.height=i.height,t.width||t.height||(t.width=i.right-i.left||e.width||0,t.height=i.bottom-i.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(e){}return e}isLevelAllowed(e){return!this.restrictedLevels.some((t=>e.bitrate===t.bitrate&&e.width===t.width&&e.height===t.height))}static getMaxLevelByMediaSize(e,t,i){if(null==e||!e.length)return-1;let r=e.length-1;const s=Math.max(t,i);for(let t=0;t=s||i.height>=s)&&(n=i,!(a=e[t+1])||n.width!==a.width||n.height!==a.height)){r=t;break}}var n,a;return r}}const vh="[eme]";class yh{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=yh.CDMCleanupPromise?[yh.CDMCleanupPromise]:[],this.onMediaEncrypted=this._onMediaEncrypted.bind(this),this.onWaitingForKey=this._onWaitingForKey.bind(this),this.debug=lr.debug.bind(lr,vh),this.log=lr.log.bind(lr,vh),this.warn=lr.warn.bind(lr,vh),this.error=lr.error.bind(lr,vh),this.hls=e,this.config=e.config,this.registerListeners()}destroy(){this.unregisterListeners(),this.onMediaDetached();const 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(tr.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(tr.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this)}unregisterListeners(){this.hls.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(tr.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this)}getLicenseServerUrl(e){const{drmSystems:t,widevineLicenseUrl:i}=this.config,r=t[e];if(r)return r.licenseUrl;if(e===Rr.WIDEVINE&&i)return i;throw new Error(`no license server URL configured for key-system "${e}"`)}getServerCertificateUrl(e){const{drmSystems:t}=this.config,i=t[e];if(i)return i.serverCertificateUrl;this.log(`No Server Certificate in config.drmSystems["${e}"]`)}attemptKeySystemAccess(e){const t=this.hls.levels,i=(e,t,i)=>!!e&&i.indexOf(e)===t,r=t.map((e=>e.audioCodec)).filter(i),s=t.map((e=>e.videoCodec)).filter(i);return r.length+s.length===0&&s.push("avc1.42e01e"),new Promise(((t,i)=>{const n=e=>{const a=e.shift();this.getMediaKeysPromise(a,r,s).then((e=>t({keySystem:a,mediaKeys:e}))).catch((t=>{e.length?n(e):i(t instanceof Th?t:new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_ACCESS,error:t,fatal:!0},t.message))}))};n(e)}))}requestMediaKeySystemAccess(e,t){const{requestMediaKeySystemAccessFunc:i}=this.config;if("function"!=typeof i){let e=`Configured requestMediaKeySystemAccess is not a function ${i}`;return null===Mr&&"http:"===self.location.protocol&&(e=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`),Promise.reject(new Error(e))}return i(e,t)}getMediaKeysPromise(e,t,i){const r=function(e,t,i,r){let s;switch(e){case Rr.FAIRPLAY:s=["cenc","sinf"];break;case Rr.WIDEVINE:case Rr.PLAYREADY:s=["cenc"];break;case Rr.CLEARKEY:s=["cenc","keyids"];break;default:throw new Error(`Unknown key-system: ${e}`)}return function(e,t,i,r){return[{initDataTypes:e,persistentState:r.persistentState||"optional",distinctiveIdentifier:r.distinctiveIdentifier||"optional",sessionTypes:r.sessionTypes||[r.sessionType||"temporary"],audioCapabilities:t.map((e=>({contentType:`audio/mp4; codecs="${e}"`,robustness:r.audioRobustness||"",encryptionScheme:r.audioEncryptionScheme||null}))),videoCapabilities:i.map((e=>({contentType:`video/mp4; codecs="${e}"`,robustness:r.videoRobustness||"",encryptionScheme:r.videoEncryptionScheme||null})))}]}(s,t,i,r)}(e,t,i,this.config.drmSystemOptions),s=this.keySystemAccessPromises[e];let n=null==s?void 0:s.keySystemAccess;if(!n){this.log(`Requesting encrypted media "${e}" key-system access with config: ${JSON.stringify(r)}`),n=this.requestMediaKeySystemAccess(e,r);const t=this.keySystemAccessPromises[e]={keySystemAccess:n};return n.catch((t=>{this.log(`Failed to obtain access to key-system "${e}": ${t}`)})),n.then((i=>{this.log(`Access for key-system "${i.keySystem}" obtained`);const r=this.fetchServerCertificate(e);return this.log(`Create media-keys for "${e}"`),t.mediaKeys=i.createMediaKeys().then((t=>(this.log(`Media-keys created for "${e}"`),r.then((i=>i?this.setMediaKeysServerCertificate(t,e,i):t))))),t.mediaKeys.catch((t=>{this.error(`Failed to create media-keys for "${e}"}: ${t}`)})),t.mediaKeys}))}return n.then((()=>s.mediaKeys))}createMediaKeySessionContext({decryptdata:e,keySystem:t,mediaKeys:i}){this.log(`Creating key-system session "${t}" keyId: ${ts(e.keyId||[])}`);const r=i.createSession(),s={decryptdata:e,keySystem:t,mediaKeys:i,mediaKeysSession:r,keyStatus:"status-pending"};return this.mediaKeySessions.push(s),s}renewKeySession(e){const t=e.decryptdata;if(t.pssh){const i=this.createMediaKeySessionContext(e),r=this.getKeyIdString(t),s="cenc";this.keyIdToKeySessionPromise[r]=this.generateRequestWithPreferredKeySession(i,s,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(null===e.keyId)throw new Error("keyId is null");return ts(e.keyId)}updateKeySession(e,t){var i;const r=e.mediaKeysSession;return this.log(`Updating key-session "${r.sessionId}" for keyID ${ts((null==(i=e.decryptdata)?void 0:i.keyId)||[])}\n } (data length: ${t?t.byteLength:t})`),r.update(t)}selectKeySystemFormat(e){const t=Object.keys(e.levelkeys||{});return this.keyFormatPromise||(this.log(`Selecting key-system from fragment (sn: ${e.sn} ${e.type}: ${e.level}) key formats ${t.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(t)),this.keyFormatPromise}getKeyFormatPromise(e){return new Promise(((t,i)=>{const r=Or(this.config),s=e.map(Cr).filter((e=>!!e&&-1!==r.indexOf(e)));return this.getKeySystemSelectionPromise(s).then((({keySystem:e})=>{const r=Pr(e);r?t(r):i(new Error(`Unable to find format for key-system "${e}"`))})).catch(i)}))}loadKey(e){const t=e.keyInfo.decryptdata,i=this.getKeyIdString(t),r=`(keyId: ${i} format: "${t.keyFormat}" method: ${t.method} uri: ${t.uri})`;this.log(`Starting session for key ${r}`);let s=this.keyIdToKeySessionPromise[i];return s||(s=this.keyIdToKeySessionPromise[i]=this.getKeySystemForKeyPromise(t).then((({keySystem:i,mediaKeys:s})=>(this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${e.frag.sn} ${e.frag.type}: ${e.frag.level} using key ${r}`),this.attemptSetMediaKeys(i,s).then((()=>{this.throwIfDestroyed();const e=this.createMediaKeySessionContext({keySystem:i,mediaKeys:s,decryptdata:t});return this.generateRequestWithPreferredKeySession(e,"cenc",t.pssh,"playlist-key")}))))),s.catch((e=>this.handleError(e)))),s}throwIfDestroyed(e="Invalid state"){if(!this.hls)throw new Error("invalid state")}handleError(e){this.hls&&(this.error(e.message),e instanceof Th?this.hls.trigger(tr.ERROR,e.data):this.hls.trigger(tr.ERROR,{type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_KEYS,error:e,fatal:!0}))}getKeySystemForKeyPromise(e){const t=this.getKeyIdString(e),i=this.keyIdToKeySessionPromise[t];if(!i){const t=Cr(e.keyFormat),i=t?[t]:Or(this.config);return this.attemptKeySystemAccess(i)}return i}getKeySystemSelectionPromise(e){if(e.length||(e=Or(this.config)),0===e.length)throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.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){const{initDataType:t,initData:i}=e;if(this.debug(`"${e.type}" event: init data type: "${t}"`),null===i)return;let r,s;if("sinf"===t&&this.config.drmSystems[Rr.FAIRPLAY]){const e=ns(new Uint8Array(i));try{const t=br(JSON.parse(e).sinf),i=ys(new Uint8Array(t));if(!i)return;r=i.subarray(8,24),s=Rr.FAIRPLAY}catch(e){return void this.warn('Failed to parse sinf "encrypted" event message initData')}}else{const e=function(e){if(!(e instanceof ArrayBuffer)||e.byteLength<32)return null;const t={version:0,systemId:"",kids:null,data:null},i=new DataView(e),r=i.getUint32(0);if(e.byteLength!==r&&r>44)return null;if(1886614376!==i.getUint32(4))return null;if(t.version=i.getUint32(8)>>>24,t.version>1)return null;t.systemId=ts(new Uint8Array(e,12,16));const s=i.getUint32(28);if(0===t.version){if(r-32this.generateRequestWithPreferredKeySession(s,t,i,"encrypted-event-key-match")));break}}l||(l=a[n]=this.getKeySystemSelectionPromise([s]).then((({keySystem:e,mediaKeys:s})=>{var a;this.throwIfDestroyed();const o=new ks("ISO-23001-7",n,null!=(a=Pr(e))?a:"");return o.pssh=new Uint8Array(i),o.keyId=r,this.attemptSetMediaKeys(e,s).then((()=>{this.throwIfDestroyed();const r=this.createMediaKeySessionContext({decryptdata:o,keySystem:e,mediaKeys:s});return this.generateRequestWithPreferredKeySession(r,t,i,"encrypted-event-no-match")}))}))),l.catch((e=>this.handleError(e)))}_onWaitingForKey(e){this.log(`"${e.type}" event`)}attemptSetMediaKeys(e,t){const i=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${e}"`);const r=Promise.all(i).then((()=>{if(!this.media)throw new Error("Attempted to set mediaKeys without media element attached");return this.media.setMediaKeys(t)}));return this.setMediaKeysQueue.push(r),r.then((()=>{this.log(`Media-keys set for "${e}"`),i.push(r),this.setMediaKeysQueue=this.setMediaKeysQueue.filter((e=>-1===i.indexOf(e)))}))}generateRequestWithPreferredKeySession(e,t,i,r){var s,n;const a=null==(s=this.config.drmSystems)||null==(n=s[e.keySystem])?void 0:n.generateRequest;if(a)try{const r=a.call(this.hls,t,i,e);if(!r)throw new Error("Invalid response from configured generateRequest filter");t=r.initDataType,i=e.decryptdata.pssh=r.initData?new Uint8Array(r.initData):null}catch(e){var o;if(this.warn(e.message),null!=(o=this.hls)&&o.config.debug)throw e}if(null===i)return this.log(`Skipping key-session request for "${r}" (no initData)`),Promise.resolve(e);const l=this.getKeyIdString(e.decryptdata);this.log(`Generating key-session request for "${r}": ${l} (init data type: ${t} length: ${i?i.byteLength:null})`);const h=new fl,c=e._onmessage=t=>{const i=e.mediaKeysSession;if(!i)return void h.emit("error",new Error("invalid state"));const{messageType:r,message:s}=t;this.log(`"${r}" message event for session "${i.sessionId}" message size: ${s.byteLength}`),"license-request"===r||"license-renewal"===r?this.renewLicense(e,s).catch((e=>{this.handleError(e),h.emit("error",e)})):"license-release"===r?e.keySystem===Rr.FAIRPLAY&&(this.updateKeySession(e,wr("acknowledged")),this.removeSession(e)):this.warn(`unhandled media key message type "${r}"`)},d=e._onkeystatuseschange=t=>{if(!e.mediaKeysSession)return void h.emit("error",new Error("invalid state"));this.onKeyStatusChange(e);const i=e.keyStatus;h.emit("keyStatus",i),"expired"===i&&(this.warn(`${e.keySystem} expired for key ${l}`),this.renewKeySession(e))};e.mediaKeysSession.addEventListener("message",c),e.mediaKeysSession.addEventListener("keystatuseschange",d);const u=new Promise(((e,t)=>{h.on("error",t),h.on("keyStatus",(i=>{i.startsWith("usable")?e():"output-restricted"===i?t(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,fatal:!1},"HDCP level output restricted")):"internal-error"===i?t(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_STATUS_INTERNAL_ERROR,fatal:!0},`key status changed to "${i}"`)):"expired"===i?t(new Error("key expired while generating request")):this.warn(`unhandled key status change "${i}"`)}))}));return e.mediaKeysSession.generateRequest(t,i).then((()=>{var t;this.log(`Request generated for key-session "${null==(t=e.mediaKeysSession)?void 0:t.sessionId}" keyId: ${l}`)})).catch((e=>{throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_SESSION,error:e,fatal:!1},`Error generating key-session request: ${e}`)})).then((()=>u)).catch((t=>{throw h.removeAllListeners(),this.removeSession(e),t})).then((()=>(h.removeAllListeners(),e)))}onKeyStatusChange(e){e.mediaKeysSession.keyStatuses.forEach(((t,i)=>{this.log(`key status change "${t}" for keyStatuses keyId: ${ts("buffer"in i?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):new Uint8Array(i))} session keyId: ${ts(new Uint8Array(e.decryptdata.keyId||[]))} uri: ${e.decryptdata.uri}`),e.keyStatus=t}))}fetchServerCertificate(e){const t=this.config,i=new(0,t.loader)(t),r=this.getServerCertificateUrl(e);return r?(this.log(`Fetching server certificate for "${e}"`),new Promise(((s,n)=>{const a={responseType:"arraybuffer",url:r},o=t.certLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(e,t,i,r)=>{s(e.data)},onError:(t,i,s,o)=>{n(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:s,response:qi({url:a.url,data:void 0},t)},`"${e}" certificate request failed (${r}). Status: ${t.code} (${t.text})`))},onTimeout:(t,i,s)=>{n(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:s,response:{url:a.url,data:void 0}},`"${e}" certificate request timed out (${r})`))},onAbort:(e,t,i)=>{n(new Error("aborted"))}};i.load(a,l,h)}))):Promise.resolve()}setMediaKeysServerCertificate(e,t,i){return new Promise(((r,s)=>{e.setServerCertificate(i).then((s=>{this.log(`setServerCertificate ${s?"success":"not supported by CDM"} (${null==i?void 0:i.byteLength}) on "${t}"`),r(e)})).catch((e=>{s(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:e,fatal:!0},e.message))}))}))}renewLicense(e,t){return this.requestLicense(e,new Uint8Array(t)).then((t=>this.updateKeySession(e,new Uint8Array(t)).catch((e=>{throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SESSION_UPDATE_FAILED,error:e,fatal:!0},e.message)}))))}unpackPlayReadyKeyMessage(e,t){const i=String.fromCharCode.apply(null,new Uint16Array(t.buffer));if(!i.includes("PlayReadyKeyMessage"))return e.setRequestHeader("Content-Type","text/xml; charset=utf-8"),t;const r=(new DOMParser).parseFromString(i,"application/xml"),s=r.querySelectorAll("HttpHeader");if(s.length>0){let t;for(let i=0,r=s.length;i in key message");return wr(atob(l))}setupLicenseXHR(e,t,i,r){const s=this.config.licenseXhrSetup;return s?Promise.resolve().then((()=>{if(!i.decryptdata)throw new Error("Key removed");return s.call(this.hls,e,t,i,r)})).catch((n=>{if(!i.decryptdata)throw n;return e.open("POST",t,!0),s.call(this.hls,e,t,i,r)})).then((i=>{e.readyState||e.open("POST",t,!0);return{xhr:e,licenseChallenge:i||r}})):(e.open("POST",t,!0),Promise.resolve({xhr:e,licenseChallenge:r}))}requestLicense(e,t){const i=this.config.keyLoadPolicy.default;return new Promise(((r,s)=>{const n=this.getLicenseServerUrl(e.keySystem);this.log(`Sending license request to URL: ${n}`);const a=new XMLHttpRequest;a.responseType="arraybuffer",a.onreadystatechange=()=>{if(!this.hls||!e.mediaKeysSession)return s(new Error("invalid state"));if(4===a.readyState)if(200===a.status){this._requestLicenseFailureCount=0;let t=a.response;this.log(`License received ${t instanceof ArrayBuffer?t.byteLength:t}`);const i=this.config.licenseResponseCallback;if(i)try{t=i.call(this.hls,a,n,e)}catch(e){this.error(e)}r(t)}else{const o=i.errorRetry,l=o?o.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>l||a.status>=400&&a.status<500)s(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:a,response:{url:n,data:void 0,code:a.status,text:a.statusText}},`License Request XHR failed (${n}). Status: ${a.status} (${a.statusText})`));else{const i=l-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${i} attempts left`),this.requestLicense(e,t).then(r,s)}}},e.licenseXhr&&e.licenseXhr.readyState!==XMLHttpRequest.DONE&&e.licenseXhr.abort(),e.licenseXhr=a,this.setupLicenseXHR(a,n,e,t).then((({xhr:t,licenseChallenge:i})=>{e.keySystem==Rr.PLAYREADY&&(i=this.unpackPlayReadyKeyMessage(t,i)),t.send(i)}))}))}onMediaAttached(e,t){if(!this.config.emeEnabled)return;const i=t.media;this.media=i,i.addEventListener("encrypted",this.onMediaEncrypted),i.addEventListener("waitingforkey",this.onWaitingForKey)}onMediaDetached(){const 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={},ks.clearKeyUriToKeyIdMap();const i=t.length;yh.CDMCleanupPromise=Promise.all(t.map((e=>this.removeSession(e))).concat(null==e?void 0:e.setMediaKeys(null).catch((e=>{this.log(`Could not clear media keys: ${e}`)})))).then((()=>{i&&(this.log("finished closing key sessions and clearing media keys"),t.length=0)})).catch((e=>{this.log(`Could not close sessions and clear media keys: ${e}`)}))}onManifestLoading(){this.keyFormatPromise=null}onManifestLoaded(e,{sessionKeys:t}){if(t&&this.config.emeEnabled&&!this.keyFormatPromise){const e=t.reduce(((e,t)=>(-1===e.indexOf(t.keyFormat)&&e.push(t.keyFormat),e)),[]);this.log(`Selecting key-system from session-keys ${e.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(e)}}removeSession(e){const{mediaKeysSession:t,licenseXhr:i}=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),i&&i.readyState!==XMLHttpRequest.DONE&&i.abort(),e.mediaKeysSession=e.decryptdata=e.licenseXhr=void 0;const r=this.mediaKeySessions.indexOf(e);return r>-1&&this.mediaKeySessions.splice(r,1),t.remove().catch((e=>{this.log(`Could not remove session: ${e}`)})).then((()=>t.close())).catch((e=>{this.log(`Could not close session: ${e}`)}))}}}yh.CDMCleanupPromise=void 0;class Th 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}}var Eh,Sh,bh;!function(e){e.MANIFEST="m",e.AUDIO="a",e.VIDEO="v",e.MUXED="av",e.INIT="i",e.CAPTION="c",e.TIMED_TEXT="tt",e.KEY="k",e.OTHER="o"}(Eh||(Eh={})),function(e){e.DASH="d",e.HLS="h",e.SMOOTH="s",e.OTHER="o"}(Sh||(Sh={})),function(e){e.OBJECT="CMCD-Object",e.REQUEST="CMCD-Request",e.SESSION="CMCD-Session",e.STATUS="CMCD-Status"}(bh||(bh={}));const Lh={[bh.OBJECT]:["br","d","ot","tb"],[bh.REQUEST]:["bl","dl","mtp","nor","nrr","su"],[bh.SESSION]:["cid","pr","sf","sid","st","v"],[bh.STATUS]:["bs","rtp"]};class wh{constructor(e,t){this.value=void 0,this.params=void 0,Array.isArray(e)&&(e=e.map((e=>e instanceof wh?e:new wh(e)))),this.value=e,this.params=t}}class Ah{constructor(e){this.description=void 0,this.description=e}}const Rh="Dict";function kh(e,t,i,r){return new Error(`failed to ${e} "${s=t,Array.isArray(s)?JSON.stringify(s):s instanceof Map?"Map{}":s instanceof Set?"Set{}":"object"==typeof s?JSON.stringify(s):String(s)}" as ${i}`,{cause:r});var s}const _h="Bare Item",Dh="Boolean",xh="Byte Sequence",Ch="Decimal",Ih="Integer";const Ph=/[\x00-\x1f\x7f]+/,Oh="Token",Mh="Key";function Fh(e,t,i){return kh("serialize",e,t,i)}function Nh(e){if(!1===ArrayBuffer.isView(e))throw Fh(e,xh);return`:${t=e,btoa(String.fromCharCode(...t))}:`;var t}function Uh(e){if(function(e){return e<-999999999999999||99999999999999912)throw Fh(e,Ch);const i=t.toString();return i.includes(".")?i:`${i}.0`}const Gh="String";function Kh(e){const t=(i=e).description||i.toString().slice(7,-1);var i;if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(t))throw Fh(t,Oh);return t}function Vh(e){switch(typeof e){case"number":if(!Ji(e))throw Fh(e,_h);return Number.isInteger(e)?Uh(e):$h(e);case"string":return function(e){if(Ph.test(e))throw Fh(e,Gh);return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}(e);case"symbol":return Kh(e);case"boolean":return function(e){if("boolean"!=typeof e)throw Fh(e,Dh);return e?"?1":"?0"}(e);case"object":if(e instanceof Date)return function(e){return`@${Uh(e.getTime()/1e3)}`}(e);if(e instanceof Uint8Array)return Nh(e);if(e instanceof Ah)return Kh(e);default:throw Fh(e,_h)}}function Hh(e){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(e))throw Fh(e,Mh);return e}function jh(e){return null==e?"":Object.entries(e).map((([e,t])=>!0===t?`;${Hh(e)}`:`;${Hh(e)}=${Vh(t)}`)).join("")}function Wh(e){return e instanceof wh?`${Vh(e.value)}${jh(e.params)}`:Vh(e)}function Yh(e,t={whitespace:!0}){if("object"!=typeof e)throw Fh(e,Rh);const i=e instanceof Map?e.entries():Object.entries(e),r=null!=t&&t.whitespace?" ":"";return Array.from(i).map((([e,t])=>{t instanceof wh==!1&&(t=new wh(t));let i=Hh(e);var r;return!0===t.value?i+=jh(t.params):(i+="=",Array.isArray(t.value)?i+=`(${(r=t).value.map(Wh).join(" ")})${jh(r.params)}`:i+=Wh(t)),i})).join(`,${r}`)}const qh=e=>"ot"===e||"sf"===e||"st"===e,zh=e=>"number"==typeof e?Ji(e):null!=e&&""!==e&&!1!==e;const Xh=e=>Math.round(e),Qh=e=>100*Xh(e/100),Jh={br:Xh,d:Xh,bl:Qh,dl:Qh,mtp:Qh,nor:(e,t)=>(null!=t&&t.baseUrl&&(e=function(e,t){const i=new URL(e),r=new URL(t);if(i.origin!==r.origin)return e;const s=i.pathname.split("/").slice(1),n=r.pathname.split("/").slice(1,-1);for(;s[0]===n[0];)s.shift(),n.shift();for(;n.length;)n.shift(),s.unshift("..");return s.join("/")}(e,t.baseUrl)),encodeURIComponent(e)),rtp:Qh,tb:Xh};function Zh(e,t={}){return e?function(e,t){return Yh(e,t)}(function(e,t){const i={};if(null==e||"object"!=typeof e)return i;const r=Object.keys(e).sort(),s=Qi({},Jh,null==t?void 0:t.formatters),n=null==t?void 0:t.filter;return r.forEach((r=>{if(null!=n&&n(r))return;let a=e[r];const o=s[r];o&&(a=o(a,t)),"v"===r&&1===a||"pr"==r&&1===a||zh(a)&&(qh(r)&&"string"==typeof a&&(a=new Ah(a)),i[r]=a)})),i}(e,t),Qi({whitespace:!1},t)):""}function ec(e,t,i){return Qi(e,function(e,t={}){if(!e)return{};const i=Object.entries(e),r=Object.entries(Lh).concat(Object.entries((null==t?void 0:t.customHeaderMap)||{})),s=i.reduce(((e,t)=>{var i;const[s,n]=t,a=(null==(i=r.find((e=>e[1].includes(s))))?void 0:i[0])||bh.REQUEST;return null!=e[a]||(e[a]={}),e[a][s]=n,e}),{});return Object.entries(s).reduce(((e,[i,r])=>(e[i]=Zh(r,t),e)),{})}(t,i))}const tc="CMCD";const ic=/CMCD=[^&#]+/;function rc(e,t,i){const r=function(e,t={}){if(!e)return"";const i=Zh(e,t);return`${tc}=${encodeURIComponent(i)}`}(t,i);if(!r)return e;if(ic.test(e))return e.replace(ic,r);const s=e.includes("?")?"&":"?";return`${e}${s}${r}`}function sc(e,t,i,r){e&&Object.keys(t).forEach((s=>{const n=e.filter((e=>e.groupId===s)).map((e=>{const n=Qi({},e);return n.details=void 0,n.attrs=new dr(n.attrs),n.url=n.attrs.URI=nc(e.url,e.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",i),n.groupId=n.attrs["GROUP-ID"]=t[s],n.attrs["PATHWAY-ID"]=r,n}));e.push(...n)}))}function nc(e,t,i,r){const{HOST:s,PARAMS:n,[i]:a}=r;let o;t&&(o=null==a?void 0:a[t],o&&(e=o));const l=new self.URL(e);return s&&!o&&(l.host=s),n&&Object.keys(n).sort().forEach((e=>{e&&l.searchParams.set(e,n[e])})),l.href}const ac=/^age:\s*[\d.]+\s*$/im;class oc{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 gr,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null}abortInternal(){const e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,4!==e.readyState&&(this.stats.aborted=!0,e.abort()))}abort(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(e,t,i){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=i,this.loadInternal()}loadInternal(){const{config:e,context:t}=this;if(!e||!t)return;const i=this.loader=new self.XMLHttpRequest,r=this.stats;r.loading.first=0,r.loaded=0,r.aborted=!1;const s=this.xhrSetup;s?Promise.resolve().then((()=>{if(this.loader===i&&!this.stats.aborted)return s(i,t.url)})).catch((e=>{if(this.loader===i&&!this.stats.aborted)return i.open("GET",t.url,!0),s(i,t.url)})).then((()=>{this.loader!==i||this.stats.aborted||this.openAndSendXhr(i,t,e)})).catch((e=>{this.callbacks.onError({code:i.status,text:e.message},t,i,r)})):this.openAndSendXhr(i,t,e)}openAndSendXhr(e,t,i){e.readyState||e.open("GET",t.url,!0);const r=t.headers,{maxTimeToFirstByteMs:s,maxLoadTimeMs:n}=i.loadPolicy;if(r)for(const t in r)e.setRequestHeader(t,r[t]);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),i.timeout=s&&Ji(s)?s:n,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),i.timeout),e.send()}readystatechange(){const{context:e,loader:t,stats:i}=this;if(!e||!t)return;const r=t.readyState,s=this.config;if(!i.aborted&&r>=2&&(0===i.loading.first&&(i.loading.first=Math.max(self.performance.now(),i.loading.start),s.timeout!==s.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),s.timeout=s.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),s.loadPolicy.maxLoadTimeMs-(i.loading.first-i.loading.start)))),4===r)){self.clearTimeout(this.requestTimeout),t.onreadystatechange=null,t.onprogress=null;const r=t.status,n="text"!==t.responseType;if(r>=200&&r<300&&(n&&t.response||null!==t.responseText)){i.loading.end=Math.max(self.performance.now(),i.loading.first);const s=n?t.response:t.responseText,a="arraybuffer"===t.responseType?s.byteLength:s.length;if(i.loaded=i.total=a,i.bwEstimate=8e3*i.total/(i.loading.end-i.loading.first),!this.callbacks)return;const o=this.callbacks.onProgress;if(o&&o(i,e,s,t),!this.callbacks)return;const l={url:t.responseURL,data:s,code:r};this.callbacks.onSuccess(l,i,e,t)}else{const n=s.loadPolicy.errorRetry;Xn(n,i.retry,!1,{url:e.url,data:void 0,code:r})?this.retry(n):(lr.error(`${r} while loading ${e.url}`),this.callbacks.onError({code:r,text:t.statusText},e,t,i))}}}loadtimeout(){if(!this.config)return;const e=this.config.loadPolicy.timeoutRetry;if(Xn(e,this.stats.retry,!0))this.retry(e);else{var t;lr.warn(`timeout while loading ${null==(t=this.context)?void 0:t.url}`);const e=this.callbacks;e&&(this.abortInternal(),e.onTimeout(this.stats,this.context,this.loader))}}retry(e){const{context:t,stats:i}=this;this.retryDelay=qn(e,i.retry),i.retry++,lr.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${null==t?void 0:t.url}, retrying ${i.retry}/${e.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)}loadprogress(e){const t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)}getCacheAge(){let e=null;if(this.loader&&ac.test(this.loader.getAllResponseHeaders())){const t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.loader&&new RegExp(`^${e}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(e):null}}const lc=/(\d+)-(\d+)\/(\d+)/;class hc{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||cc,this.controller=new self.AbortController,this.stats=new gr}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(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(e,t,i){const r=this.stats;if(r.loading.start)throw new Error("Loader can only be used once.");r.loading.start=self.performance.now();const s=function(e,t){const i={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(Qi({},e.headers))};e.rangeEnd&&i.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1));return i}(e,this.controller.signal),n=i.onProgress,a="arraybuffer"===e.responseType,o=a?"byteLength":"length",{maxTimeToFirstByteMs:l,maxLoadTimeMs:h}=t.loadPolicy;this.context=e,this.config=t,this.callbacks=i,this.request=this.fetchSetup(e,s),self.clearTimeout(this.requestTimeout),t.timeout=l&&Ji(l)?l:h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(r,e,this.response)}),t.timeout),self.fetch(this.request).then((s=>{this.response=this.loader=s;const o=Math.max(self.performance.now(),r.loading.start);if(self.clearTimeout(this.requestTimeout),t.timeout=h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(r,e,this.response)}),h-(o-r.loading.start)),!s.ok){const{status:e,statusText:t}=s;throw new dc(t||"fetch, bad network response",e,s)}return r.loading.first=o,r.total=function(e){const t=e.get("Content-Range");if(t){const e=function(e){const t=lc.exec(e);if(t)return parseInt(t[2])-parseInt(t[1])+1}(t);if(Ji(e))return e}const i=e.get("Content-Length");if(i)return parseInt(i)}(s.headers)||r.total,n&&Ji(t.highWaterMark)?this.loadProgressively(s,r,e,t.highWaterMark,n):a?s.arrayBuffer():"json"===e.responseType?s.json():s.text()})).then((s=>{const a=this.response;if(!a)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),r.loading.end=Math.max(self.performance.now(),r.loading.first);const l=s[o];l&&(r.loaded=r.total=l);const h={url:a.url,data:s,code:a.status};n&&!Ji(t.highWaterMark)&&n(r,e,s,a),i.onSuccess(h,r,e,a)})).catch((t=>{if(self.clearTimeout(this.requestTimeout),r.aborted)return;const s=t&&t.code||0,n=t?t.message:null;i.onError({code:s,text:n},e,t?t.details:null,r)}))}getCacheAge(){let e=null;if(this.response){const t=this.response.headers.get("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.response?this.response.headers.get(e):null}loadProgressively(e,t,i,r=0,s){const n=new ao,a=e.body.getReader(),o=()=>a.read().then((a=>{if(a.done)return n.dataLength&&s(t,i,n.flush(),e),Promise.resolve(new ArrayBuffer(0));const l=a.value,h=l.length;return t.loaded+=h,h=r&&s(t,i,n.flush(),e)):s(t,i,l,e),o()})).catch((()=>Promise.reject()));return o()}}function cc(e,t){return new self.Request(e.url,t)}class dc extends Error{constructor(e,t,i){super(e),this.code=void 0,this.details=void 0,this.code=t,this.details=i}}const uc=/\s/,fc={newCue(e,t,i,r){const s=[];let n,a,o,l,h;const c=self.VTTCue||self.TextTrackCue;for(let u=0;u=16?l--:l++;const r=Xl(h.trim()),f=th(t,i,r);null!=e&&null!=(d=e.cues)&&d.getCueById(f)||(a=new c(t,i,r),a.id=f,a.line=u+1,a.align="left",a.position=10+Math.min(80,10*Math.floor(8*l/32)),s.push(a))}return e&&s.length&&(s.sort(((e,t)=>"auto"===e.line||"auto"===t.line?0:e.line>8&&t.line>8?t.line-e.line:e.line-t.line)),s.forEach((t=>pn(e,t)))),s}},gc=qi(qi({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:6e7,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:oc,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController: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.codecTiers=null,this.timer=-1,this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this._abandonRulesCheck=()=>{const{fragCurrent:e,partCurrent:t,hls:i}=this,{autoLevelEnabled:r,media:s}=i;if(!e||!s)return;const n=performance.now(),a=t?t.stats:e.stats,o=t?t.duration:e.duration,l=n-a.loading.start,h=i.minAutoLevel;if(a.aborted||a.loaded&&a.loaded===a.total||e.level<=h)return this.clearTimer(),void(this._nextAutoLevel=-1);if(!r||s.paused||!s.playbackRate||!s.readyState)return;const c=i.mainForwardBufferInfo;if(null===c)return;const d=this.bwEstimator.getEstimateTTFB(),u=Math.abs(s.playbackRate);if(l<=Math.max(d,o/(2*u)*1e3))return;const f=c.len/u,g=a.loading.first?a.loading.first-a.loading.start:-1,m=a.loaded&&g>-1,p=this.getBwEstimate(),v=i.levels,y=v[e.level],T=a.total||Math.max(a.loaded,Math.round(o*y.averageBitrate/8));let E=m?l-g:l;E<1&&m&&(E=Math.min(l,8*a.loaded/p));const S=m?1e3*a.loaded/E:0,b=S?(T-a.loaded)/S:8*T/p+d/1e3;if(b<=f)return;const L=S?8*S:p;let w,A=Number.POSITIVE_INFINITY;for(w=e.level-1;w>h;w--){const e=v[w].maxBitrate;if(A=this.getTimeToLoadFrag(d/1e3,L,o*e,!v[w].details),A=b)return;if(A>10*o)return;i.nextLoadLevel=i.nextAutoLevel=w,m?this.bwEstimator.sample(l-Math.min(d,g),a.loaded):this.bwEstimator.sampleTTFB(l);const R=v[w].maxBitrate;this.getBwEstimate()*this.hls.config.abrBandWidthUpFactor>R&&this.resetEstimator(R),this.clearTimer(),lr.warn(`[abr] Fragment ${e.sn}${t?" part "+t.index:""} of level ${e.level} is loading too slowly;\n Time to underbuffer: ${f.toFixed(3)} s\n Estimated load time for current fragment: ${b.toFixed(3)} s\n Estimated load time for down switch fragment: ${A.toFixed(3)} s\n TTFB estimate: ${0|g} ms\n Current BW estimate: ${Ji(p)?0|p:"Unknown"} bps\n New BW estimate: ${0|this.getBwEstimate()} bps\n Switching to level ${w} @ ${0|R} bps`),i.trigger(tr.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e,part:t,stats:a})},this.hls=e,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(e){e&&(lr.log(`setting initial bwe to ${e}`),this.hls.config.abrEwmaDefaultEstimate=e),this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){const e=this.hls.config;return new ca(e.abrEwmaSlowVoD,e.abrEwmaFastVoD,e.abrEwmaDefaultEstimate)}registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.FRAG_LOADING,this.onFragLoading,this),e.on(tr.FRAG_LOADED,this.onFragLoaded,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e&&(e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.FRAG_LOADING,this.onFragLoading,this),e.off(tr.FRAG_LOADED,this.onFragLoaded,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.off(tr.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){const i=t.frag;if(!this.ignoreFragment(i)){var r;if(!i.bitrateTest)this.fragCurrent=i,this.partCurrent=null!=(r=t.part)?r: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 rr.BUFFER_ADD_CODEC_ERROR:case rr.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case rr.FRAG_LOAD_TIMEOUT:{const e=t.frag,{fragCurrent:i,partCurrent:r}=this;if(e&&i&&e.sn===i.sn&&e.level===i.level){const t=performance.now(),i=r?r.stats:e.stats,s=t-i.loading.start,n=i.loading.first?i.loading.first-i.loading.start:-1;if(i.loaded&&n>-1){const e=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(s-Math.min(e,n),i.loaded)}else this.bwEstimator.sampleTTFB(s)}break}}}getTimeToLoadFrag(e,t,i,r){return e+i/t+(r?this.lastLevelLoadSec:0)}onLevelLoaded(e,t){const i=this.hls.config,{loading:r}=t.stats,s=r.end-r.start;Ji(s)&&(this.lastLevelLoadSec=s/1e3),t.details.live?this.bwEstimator.update(i.abrEwmaSlowLive,i.abrEwmaFastLive):this.bwEstimator.update(i.abrEwmaSlowVoD,i.abrEwmaFastVoD)}onFragLoaded(e,{frag:t,part:i}){const r=i?i.stats:t.stats;if(t.type===hn&&this.bwEstimator.sampleTTFB(r.loading.first-r.loading.start),!this.ignoreFragment(t)){if(this.clearTimer(),t.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){const e=i?i.duration:t.duration,s=this.hls.levels[t.level],n=(s.loaded?s.loaded.bytes:0)+r.loaded,a=(s.loaded?s.loaded.duration:0)+e;s.loaded={bytes:n,duration:a},s.realBitrate=Math.round(8*n/a)}if(t.bitrateTest){const e={stats:r,frag:t,part:i,id:t.type};this.onFragBuffered(tr.FRAG_BUFFERED,e),t.bitrateTest=!1}else this.lastLoadedFragLevel=t.level}}onFragBuffered(e,t){const{frag:i,part:r}=t,s=null!=r&&r.stats.loaded?r.stats:i.stats;if(s.aborted)return;if(this.ignoreFragment(i))return;const n=s.parsing.end-s.loading.start-Math.min(s.loading.first-s.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(n,s.loaded),s.bwEstimate=this.getBwEstimate(),i.bitrateTest?this.bitrateTestDelay=n/1e3:this.bitrateTestDelay=0}ignoreFragment(e){return e.type!==hn||"initSegment"===e.sn}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){const{maxAutoLevel:e,minAutoLevel:t}=this.hls,i=this.getBwEstimate(),r=this.hls.config.maxStarvationDelay,s=this.findBestLevel(i,t,e,0,r,1,1);if(s>-1)return s;const n=this.hls.firstLevel,a=Math.min(Math.max(n,t),e);return lr.warn(`[abr] Could not find best starting auto level. Defaulting to first in playlist ${n} clamped to ${a}`),a}get forcedAutoLevel(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}get nextAutoLevel(){const e=this.forcedAutoLevel,t=this.bwEstimator.canEstimate(),i=this.lastLoadedFragLevel>-1;if(!(-1===e||t&&i&&this.nextAutoLevelKey!==this.getAutoLevelKey()))return e;const r=t&&i?this.getNextABRAutoLevel():this.firstAutoLevel;if(-1!==e){const t=this.hls.levels;if(t.length>Math.max(e,r)&&t[e].loadError<=t[r].loadError)return e}return this._nextAutoLevel=r,this.nextAutoLevelKey=this.getAutoLevelKey(),r}getAutoLevelKey(){return`${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){const{fragCurrent:e,partCurrent:t,hls:i}=this,{maxAutoLevel:r,config:s,minAutoLevel:n}=i,a=t?t.duration:e?e.duration:0,o=this.getBwEstimate(),l=this.getStarvationDelay();let h=s.abrBandWidthFactor,c=s.abrBandWidthUpFactor;if(l){const e=this.findBestLevel(o,n,r,l,0,h,c);if(e>=0)return e}let d=a?Math.min(a,s.maxStarvationDelay):s.maxStarvationDelay;if(!l){const e=this.bitrateTestDelay;if(e){d=(a?Math.min(a,s.maxLoadingDelay):s.maxLoadingDelay)-e,lr.info(`[abr] bitrate test took ${Math.round(1e3*e)}ms, set first fragment max fetchDuration to ${Math.round(1e3*d)} ms`),h=c=1}}const u=this.findBestLevel(o,n,r,l,d,h,c);if(lr.info(`[abr] ${l?"rebuffering expected":"buffer is empty"}, optimal quality level ${u}`),u>-1)return u;const f=i.levels[n],g=i.levels[i.loadLevel];return(null==f?void 0:f.bitrate)<(null==g?void 0:g.bitrate)?n:i.loadLevel}getStarvationDelay(){const e=this.hls,t=e.media;if(!t)return 1/0;const i=t&&0!==t.playbackRate?Math.abs(t.playbackRate):1,r=e.mainForwardBufferInfo;return(r?r.len:0)/i}getBwEstimate(){return this.bwEstimator.canEstimate()?this.bwEstimator.getEstimate():this.hls.config.abrEwmaDefaultEstimate}findBestLevel(e,t,i,r,s,n,a){var o;const l=r+s,h=this.lastLoadedFragLevel,c=-1===h?this.hls.firstLevel:h,{fragCurrent:d,partCurrent:u}=this,{levels:f,allAudioTracks:g,loadLevel:m,config:p}=this.hls;if(1===f.length)return 0;const v=f[c],y=!(null==v||null==(o=v.details)||!o.live),T=-1===m||-1===h;let E,S="SDR",b=(null==v?void 0:v.frameRate)||0;const{audioPreference:L,videoPreference:w}=p,A=this.audioTracksByGroup||(this.audioTracksByGroup=function(e){return e.reduce(((e,t)=>{let i=e.groups[t.groupId];i||(i=e.groups[t.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),i.tracks.push(t);const r=t.channels||"2";return i.channels[r]=(i.channels[r]||0)+1,i.hasDefault=i.hasDefault||t.default,i.hasAutoSelect=i.hasAutoSelect||t.autoselect,i.hasDefault&&(e.hasDefaultAudio=!0),i.hasAutoSelect&&(e.hasAutoSelectAudio=!0),e}),{hasDefaultAudio:!1,hasAutoSelectAudio:!1,groups:{}})}(g));if(T){if(-1!==this.firstSelection)return this.firstSelection;const r=this.codecTiers||(this.codecTiers=function(e,t,i,r){return e.slice(i,r+1).reduce(((e,i)=>{if(!i.codecSet)return e;const r=i.audioGroups;let s=e[i.codecSet];s||(e[i.codecSet]=s={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!r,fragmentError:0}),s.minBitrate=Math.min(s.minBitrate,i.bitrate);const n=Math.min(i.height,i.width);return s.minHeight=Math.min(s.minHeight,n),s.minFramerate=Math.min(s.minFramerate,i.frameRate),s.maxScore=Math.max(s.maxScore,i.score),s.fragmentError+=i.fragmentError,s.videoRanges[i.videoRange]=(s.videoRanges[i.videoRange]||0)+1,r&&r.forEach((e=>{if(!e)return;const i=t.groups[e];i&&(s.hasDefaultAudio=s.hasDefaultAudio||t.hasDefaultAudio?i.hasDefault:i.hasAutoSelect||!t.hasDefaultAudio&&!t.hasAutoSelectAudio,Object.keys(i.channels).forEach((e=>{s.channels[e]=(s.channels[e]||0)+i.channels[e]})))})),e}),{})}(f,A,t,i)),s=function(e,t,i,r,s){const n=Object.keys(e),a=null==r?void 0:r.channels,o=null==r?void 0:r.audioCodec,l=a&&2===parseInt(a);let h=!0,c=!1,d=1/0,u=1/0,f=1/0,g=0,m=[];const{preferHDR:p,allowedVideoRanges:v}=ma(t,s);for(let t=n.length;t--;){const i=e[n[t]];h=i.channels[2]>0,d=Math.min(d,i.minHeight),u=Math.min(u,i.minFramerate),f=Math.min(f,i.minBitrate);const r=v.filter((e=>i.videoRanges[e]>0));r.length>0&&(c=!0,m=r)}d=Ji(d)?d:0,u=Ji(u)?u:0;const y=Math.max(1080,d),T=Math.max(30,u);return f=Ji(f)?f:i,i=Math.max(f,i),c||(t=void 0,m=[]),{codecSet:n.reduce(((t,r)=>{const s=e[r];if(r===t)return t;if(s.minBitrate>i)return pa(r,`min bitrate of ${s.minBitrate} > current estimate of ${i}`),t;if(!s.hasDefaultAudio)return pa(r,"no renditions with default or auto-select sound found"),t;if(o&&r.indexOf(o.substring(0,4))%5!=0)return pa(r,`audio codec preference "${o}" not found`),t;if(a&&!l){if(!s.channels[a])return pa(r,`no renditions with ${a} channel sound found (channels options: ${Object.keys(s.channels)})`),t}else if((!o||l)&&h&&0===s.channels[2])return pa(r,"no renditions with stereo sound found"),t;return s.minHeight>y?(pa(r,`min resolution of ${s.minHeight} > maximum of ${y}`),t):s.minFramerate>T?(pa(r,`min framerate of ${s.minFramerate} > maximum of ${T}`),t):m.some((e=>s.videoRanges[e]>0))?s.maxScore=$s(t)||s.fragmentError>e[t].fragmentError)?t:(g=s.maxScore,r):(pa(r,`no variants with VIDEO-RANGE of ${JSON.stringify(m)} found`),t)}),void 0),videoRanges:m,preferHDR:p,minFramerate:u,minBitrate:f}}(r,S,e,L,w),{codecSet:n,videoRanges:a,minFramerate:o,minBitrate:l,preferHDR:h}=s;E=n,S=h?a[a.length-1]:a[0],b=o,e=Math.max(e,l),lr.log(`[abr] picked start tier ${JSON.stringify(s)}`)}else E=null==v?void 0:v.codecSet,S=null==v?void 0:v.videoRange;const R=u?u.duration:d?d.duration:0,k=this.bwEstimator.getEstimateTTFB()/1e3,_=[];for(let o=i;o>=t;o--){var D;const t=f[o],d=o>c;if(!t)continue;if(p.useMediaCapabilities&&!t.supportedResult&&!t.supportedPromise){const i=navigator.mediaCapabilities;"function"==typeof(null==i?void 0:i.decodingInfo)&&fa(t,A,S,b,e,L)?(t.supportedPromise=ga(t,A,i),t.supportedPromise.then((e=>{if(!this.hls)return;t.supportedResult=e;const i=this.hls.levels,r=i.indexOf(t);e.error?lr.warn(`[abr] MediaCapabilities decodingInfo error: "${e.error}" for level ${r} ${JSON.stringify(e)}`):e.supported||(lr.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${r} ${JSON.stringify(e)}`),r>-1&&i.length>1&&(lr.log(`[abr] Removing unsupported level ${r}`),this.hls.removeLevel(r)))}))):t.supportedResult=da}if(E&&t.codecSet!==E||S&&t.videoRange!==S||d&&b>t.frameRate||!d&&b>0&&b=2*R&&0===s?f[o].averageBitrate:f[o].maxBitrate,I=this.getTimeToLoadFrag(k,x,C*w,void 0===g);if(x>=C&&(o===h||0===t.loadError&&0===t.fragmentError)&&(I<=k||!Ji(I)||y&&!this.bitrateTestDelay||I${o} adjustedbw(${Math.round(x)})-bitrate=${Math.round(x-C)} ttfb:${k.toFixed(1)} avgDuration:${w.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${I.toFixed(1)} firstSelection:${T} codecSet:${E} videoRange:${S} hls.loadLevel:${m}`)),T&&(this.firstSelection=o),o}}return-1}set nextAutoLevel(e){const{maxAutoLevel:t,minAutoLevel:i}=this.hls,r=Math.min(Math.max(e,i),t);this._nextAutoLevel!==r&&(this.nextAutoLevelKey="",this._nextAutoLevel=r)}},bufferController: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=e=>{this.hls&&this.hls.pauseBuffering()},this._onStartStreaming=e=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=()=>{const{media:e,mediaSource:t}=this;this.log("Media source opened"),e&&(e.removeEventListener("emptied",this._onMediaEmptied),this.updateMediaElementDuration(),this.hls.trigger(tr.MEDIA_ATTACHED,{media:e,mediaSource:t})),t&&t.removeEventListener("sourceopen",this._onMediaSourceOpen),this.checkPendingTracks()},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{const{mediaSrc:e,_objectUrl:t}=this;e!==t&&lr.error(`Media element src was set while attaching MediaSource (${t} > ${e})`)},this.hls=e;const t="[buffer-controller]";var i;this.appendSource=(i=Os(e.config.preferManagedMediaSource),"undefined"!=typeof self&&i===self.ManagedMediaSource),this.log=lr.log.bind(lr,t),this.warn=lr.warn.bind(lr,t),this.error=lr.error.bind(lr,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(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.BUFFER_RESET,this.onBufferReset,this),e.on(tr.BUFFER_APPENDING,this.onBufferAppending,this),e.on(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.on(tr.BUFFER_EOS,this.onBufferEos,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(tr.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(tr.FRAG_PARSED,this.onFragParsed,this),e.on(tr.FRAG_CHANGED,this.onFragChanged,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.BUFFER_RESET,this.onBufferReset,this),e.off(tr.BUFFER_APPENDING,this.onBufferAppending,this),e.off(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.off(tr.BUFFER_EOS,this.onBufferEos,this),e.off(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(tr.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(tr.FRAG_PARSED,this.onFragParsed,this),e.off(tr.FRAG_CHANGED,this.onFragChanged,this)}_initSourceBuffer(){this.sourceBuffer={},this.operationQueue=new Tl(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 i=2;(t.audio&&!t.video||!t.altAudio)&&(i=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=i,this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`)}onMediaAttaching(e,t){const i=this.media=t.media,r=Os(this.appendSource);if(i&&r){var s;const e=this.mediaSource=new r;this.log(`created media source: ${null==(s=e.constructor)?void 0:s.name}`),e.addEventListener("sourceopen",this._onMediaSourceOpen),e.addEventListener("sourceended",this._onMediaSourceEnded),e.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(e.addEventListener("startstreaming",this._onStartStreaming),e.addEventListener("endstreaming",this._onEndStreaming));const t=this._objectUrl=self.URL.createObjectURL(e);if(this.appendSource)try{i.removeAttribute("src");const r=self.ManagedMediaSource;i.disableRemotePlayback=i.disableRemotePlayback||r&&e instanceof r,Sl(i),function(e,t){const i=self.document.createElement("source");i.type="video/mp4",i.src=t,e.appendChild(i)}(i,t),i.load()}catch(e){i.src=t}else i.src=t;i.addEventListener("emptied",this._onMediaEmptied)}}onMediaDetaching(){const{media:e,mediaSource:t,_objectUrl:i}=this;if(t){if(this.log("media source detaching"),"open"===t.readyState)try{t.endOfStream()}catch(e){this.warn(`onMediaDetaching: ${e.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),i&&self.URL.revokeObjectURL(i),this.mediaSrc===i?(e.removeAttribute("src"),this.appendSource&&Sl(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(tr.MEDIA_DETACHED,void 0)}onBufferReset(){this.getSourceBufferTypes().forEach((e=>{this.resetBuffer(e)})),this._initSourceBuffer()}resetBuffer(e){const t=this.sourceBuffer[e];try{var i;if(t)this.removeBufferListeners(e),this.sourceBuffer[e]=void 0,null!=(i=this.mediaSource)&&i.sourceBuffers.length&&this.mediaSource.removeSourceBuffer(t)}catch(t){this.warn(`onBufferReset ${e}`,t)}}onBufferCodecs(e,t){const i=this.getSourceBufferTypes().length,r=Object.keys(t);if(r.forEach((e=>{if(i){const i=this.tracks[e];if(i&&"function"==typeof i.buffer.changeType){var r;const{id:s,codec:n,levelCodec:a,container:o,metadata:l}=t[e],h=Hs(i.codec,i.levelCodec),c=null==h?void 0:h.replace(El,"$1");let d=Hs(n,a);const u=null==(r=d)?void 0:r.replace(El,"$1");if(d&&c!==u){"audio"===e.slice(0,5)&&(d=Vs(d,this.appendSource));const t=`${o};codecs=${d}`;this.appendChangeType(e,t),this.log(`switching codec ${h} to ${d}`),this.tracks[e]={buffer:i.buffer,codec:n,container:o,levelCodec:a,metadata:l,id:s}}}}else this.pendingTracks[e]=t[e]})),i)return;const s=Math.max(this.bufferCodecEventsExpected-1,0);this.bufferCodecEventsExpected!==s&&(this.log(`${s} bufferCodec event(s) expected ${r.join(",")}`),this.bufferCodecEventsExpected=s),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks()}appendChangeType(e,t){const{operationQueue:i}=this,r={execute:()=>{const r=this.sourceBuffer[e];r&&(this.log(`changing ${e} sourceBuffer type to ${t}`),r.changeType(t)),i.shiftAndExecuteNext(e)},onStart:()=>{},onComplete:()=>{},onError:t=>{this.warn(`Failed to change ${e} SourceBuffer type`,t)}};i.append(r,e,!!this.pendingTracks[e])}onBufferAppending(e,t){const{hls:i,operationQueue:r,tracks:s}=this,{data:n,type:a,frag:o,part:l,chunkMeta:h}=t,c=h.buffering[a],d=self.performance.now();c.start=d;const u=o.stats.buffering,f=l?l.stats.buffering:null;0===u.start&&(u.start=d),f&&0===f.start&&(f.start=d);const g=s.audio;let m=!1;"audio"===a&&"audio/mpeg"===(null==g?void 0:g.container)&&(m=!this.lastMpegAudioChunk||1===h.id||this.lastMpegAudioChunk.sn!==h.sn,this.lastMpegAudioChunk=h);const p=o.start,v={execute:()=>{if(c.executeStart=self.performance.now(),m){const e=this.sourceBuffer[a];if(e){const t=p-e.timestampOffset;Math.abs(t)>=.1&&(this.log(`Updating audio SourceBuffer timestampOffset to ${p} (delta: ${t}) sn: ${o.sn})`),e.timestampOffset=p)}}this.appendExecutor(n,a)},onStart:()=>{},onComplete:()=>{const e=self.performance.now();c.executeEnd=c.end=e,0===u.first&&(u.first=e),f&&0===f.first&&(f.first=e);const{sourceBuffer:t}=this,i={};for(const e in t)i[e]=xa.getBuffered(t[e]);this.appendErrors[a]=0,"audio"===a||"video"===a?this.appendErrors.audiovideo=0:(this.appendErrors.audio=0,this.appendErrors.video=0),this.hls.trigger(tr.BUFFER_APPENDED,{type:a,frag:o,part:l,chunkMeta:h,parent:o.type,timeRanges:i})},onError:e=>{const t={type:ir.MEDIA_ERROR,parent:o.type,details:rr.BUFFER_APPEND_ERROR,sourceBufferName:a,frag:o,part:l,chunkMeta:h,error:e,err:e,fatal:!1};if(e.code===DOMException.QUOTA_EXCEEDED_ERR)t.details=rr.BUFFER_FULL_ERROR;else{const e=++this.appendErrors[a];t.details=rr.BUFFER_APPEND_ERROR,this.warn(`Failed ${e}/${i.config.appendErrorMaxRetry} times to append segment in "${a}" sourceBuffer`),e>=i.config.appendErrorMaxRetry&&(t.fatal=!0)}i.trigger(tr.ERROR,t)}};r.append(v,a,!!this.pendingTracks[a])}onBufferFlushing(e,t){const{operationQueue:i}=this,r=e=>({execute:this.removeExecutor.bind(this,e,t.startOffset,t.endOffset),onStart:()=>{},onComplete:()=>{this.hls.trigger(tr.BUFFER_FLUSHED,{type:e})},onError:t=>{this.warn(`Failed to remove from ${e} SourceBuffer`,t)}});t.type?i.append(r(t.type),t.type):this.getSourceBufferTypes().forEach((e=>{i.append(r(e),e)}))}onFragParsed(e,t){const{frag:i,part:r}=t,s=[],n=r?r.elementaryStreams:i.elementaryStreams;n[vr]?s.push("audiovideo"):(n[mr]&&s.push("audio"),n[pr]&&s.push("video"));0===s.length&&this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${i.type} level: ${i.level} sn: ${i.sn}`),this.blockBuffers((()=>{const e=self.performance.now();i.stats.buffering.end=e,r&&(r.stats.buffering.end=e);const t=r?r.stats:i.stats;this.hls.trigger(tr.FRAG_BUFFERED,{frag:i,part:r,stats:t,id:i.type})}),s)}onFragChanged(e,t){this.trimBuffers()}onBufferEos(e,t){this.getSourceBufferTypes().reduce(((e,i)=>{const r=this.sourceBuffer[i];return!r||t.type&&t.type!==i||(r.ending=!0,r.ended||(r.ended=!0,this.log(`${i} sourceBuffer now EOS`))),e&&!(r&&!r.ended)}),!0)&&(this.log("Queueing mediaSource.endOfStream()"),this.blockBuffers((()=>{this.getSourceBufferTypes().forEach((e=>{const t=this.sourceBuffer[e];t&&(t.ending=!1)}));const{mediaSource:e}=this;e&&"open"===e.readyState?(this.log("Calling mediaSource.endOfStream()"),e.endOfStream()):e&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${e.readyState}`)})))}onLevelUpdated(e,{details:t}){t.fragments.length&&(this.details=t,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())}trimBuffers(){const{hls:e,details:t,media:i}=this;if(!i||null===t)return;if(!this.getSourceBufferTypes().length)return;const r=e.config,s=i.currentTime,n=t.levelTargetDuration,a=t.live&&null!==r.liveBackBufferLength?r.liveBackBufferLength:r.backBufferLength;if(Ji(a)&&a>0){const e=Math.max(a,n),t=Math.floor(s/n)*n-e;this.flushBackBuffer(s,n,t)}if(Ji(r.frontBufferFlushThreshold)&&r.frontBufferFlushThreshold>0){const e=Math.max(r.maxBufferLength,r.frontBufferFlushThreshold),t=Math.max(e,n),i=Math.floor(s/n)*n+t;this.flushFrontBuffer(s,n,i)}}flushBackBuffer(e,t,i){const{details:r,sourceBuffer:s}=this;this.getSourceBufferTypes().forEach((n=>{const a=s[n];if(a){const s=xa.getBuffered(a);if(s.length>0&&i>s.start(0)){if(this.hls.trigger(tr.BACK_BUFFER_REACHED,{bufferEnd:i}),null!=r&&r.live)this.hls.trigger(tr.LIVE_BACK_BUFFER_REACHED,{bufferEnd:i});else if(a.ended&&s.end(s.length-1)-e<2*t)return void this.log(`Cannot flush ${n} back buffer while SourceBuffer is in ended state`);this.hls.trigger(tr.BUFFER_FLUSHING,{startOffset:0,endOffset:i,type:n})}}}))}flushFrontBuffer(e,t,i){const{sourceBuffer:r}=this;this.getSourceBufferTypes().forEach((s=>{const n=r[s];if(n){const r=xa.getBuffered(n),a=r.length;if(a<2)return;const o=r.start(a-1),l=r.end(a-1);if(i>o||e>=o&&e<=l)return;if(n.ended&&e-l<2*t)return void this.log(`Cannot flush ${s} front buffer while SourceBuffer is in ended state`);this.hls.trigger(tr.BUFFER_FLUSHING,{startOffset:o,endOffset:1/0,type:s})}}))}updateMediaElementDuration(){if(!this.details||!this.media||!this.mediaSource||"open"!==this.mediaSource.readyState)return;const{details:e,hls:t,media:i,mediaSource:r}=this,s=e.fragments[0].start+e.totalduration,n=i.duration,a=Ji(r.duration)?r.duration:0;e.live&&t.config.liveDurationInfinity?(r.duration=1/0,this.updateSeekableRange(e)):(s>a&&s>n||!Ji(n))&&(this.log(`Updating Media Source duration to ${s.toFixed(3)}`),r.duration=s)}updateSeekableRange(e){const t=this.mediaSource,i=e.fragments;if(i.length&&e.live&&null!=t&&t.setLiveSeekableRange){const r=Math.max(0,i[0].start),s=Math.max(r,r+e.totalduration);this.log(`Media Source duration is set to ${t.duration}. Setting seekable range to ${r}-${s}.`),t.setLiveSeekableRange(r,s)}}checkPendingTracks(){const{bufferCodecEventsExpected:e,operationQueue:t,pendingTracks:i}=this,r=Object.keys(i).length;if(r&&(!e||2===r||"audiovideo"in i)){this.createSourceBuffers(i),this.pendingTracks={};const e=this.getSourceBufferTypes();if(e.length)this.hls.trigger(tr.BUFFER_CREATED,{tracks:this.tracks}),e.forEach((e=>{t.executeNext(e)}));else{const e=new Error("could not create source buffer for media codec(s)");this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:e,reason:e.message})}}}createSourceBuffers(e){const{sourceBuffer:t,mediaSource:i}=this;if(!i)throw Error("createSourceBuffers called when mediaSource was null");for(const s in e)if(!t[s]){var r;const n=e[s];if(!n)throw Error(`source buffer exists for track ${s}, however track does not`);let a=-1===(null==(r=n.levelCodec)?void 0:r.indexOf(","))?n.levelCodec:n.codec;a&&"audio"===s.slice(0,5)&&(a=Vs(a,this.appendSource));const o=`${n.container};codecs=${a}`;this.log(`creating sourceBuffer(${o})`);try{const e=t[s]=i.addSourceBuffer(o),r=s;this.addBufferListener(r,"updatestart",this._onSBUpdateStart),this.addBufferListener(r,"updateend",this._onSBUpdateEnd),this.addBufferListener(r,"error",this._onSBUpdateError),this.appendSource&&this.addBufferListener(r,"bufferedchange",((e,t)=>{const i=t.removedRanges;null!=i&&i.length&&this.hls.trigger(tr.BUFFER_FLUSHED,{type:s})})),this.tracks[s]={buffer:e,codec:a,container:n.container,levelCodec:n.levelCodec,metadata:n.metadata,id:n.id}}catch(e){this.error(`error while trying to add sourceBuffer: ${e.message}`),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:e,sourceBufferName:s,mimeType:o})}}}get mediaSrc(){var e;const t=(null==(e=this.media)?void 0:e.firstChild)||this.media;return null==t?void 0:t.src}_onSBUpdateStart(e){const{operationQueue:t}=this;t.current(e).onStart()}_onSBUpdateEnd(e){var t;if("closed"===(null==(t=this.mediaSource)?void 0:t.readyState))return void this.resetBuffer(e);const{operationQueue:i}=this;i.current(e).onComplete(),i.shiftAndExecuteNext(e)}_onSBUpdateError(e,t){var i;const r=new Error(`${e} SourceBuffer error. MediaSource readyState: ${null==(i=this.mediaSource)?void 0:i.readyState}`);this.error(`${r}`,t),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_APPENDING_ERROR,sourceBufferName:e,error:r,fatal:!1});const s=this.operationQueue.current(e);s&&s.onError(r)}removeExecutor(e,t,i){const{media:r,mediaSource:s,operationQueue:n,sourceBuffer:a}=this,o=a[e];if(!r||!s||!o)return this.warn(`Attempting to remove from the ${e} SourceBuffer, but it does not exist`),void n.shiftAndExecuteNext(e);const l=Ji(r.duration)?r.duration:1/0,h=Ji(s.duration)?s.duration:1/0,c=Math.max(0,t),d=Math.min(i,l,h);d>c&&(!o.ending||o.ended)?(o.ended=!1,this.log(`Removing [${c},${d}] from the ${e} SourceBuffer`),o.remove(c,d)):n.shiftAndExecuteNext(e)}appendExecutor(e,t){const i=this.sourceBuffer[t];if(i)i.ended=!1,i.appendBuffer(e);else if(!this.pendingTracks[t])throw new Error(`Attempting to append to the ${t} SourceBuffer, but it does not exist`)}blockBuffers(e,t=this.getSourceBufferTypes()){if(!t.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(e);const{operationQueue:i}=this,r=t.map((e=>i.appendBlocker(e)));Promise.all(r).then((()=>{e(),t.forEach((e=>{const t=this.sourceBuffer[e];null!=t&&t.updating||i.shiftAndExecuteNext(e)}))}))}getSourceBufferTypes(){return Object.keys(this.sourceBuffer)}addBufferListener(e,t,i){const r=this.sourceBuffer[e];if(!r)return;const s=i.bind(this,e);this.listeners[e].push({event:t,listener:s}),r.addEventListener(t,s)}removeBufferListeners(e){const t=this.sourceBuffer[e];t&&this.listeners[e].forEach((e=>{t.removeEventListener(e.event,e.listener)}))}},capLevelController:ph,errorController: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=lr.log.bind(lr,"[info]:"),this.warn=lr.warn.bind(lr,"[warning]:"),this.error=lr.error.bind(lr,"[error]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(tr.ERROR,this.onError,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){const e=this.hls;e&&(e.off(tr.ERROR,this.onError,this),e.off(tr.ERROR,this.onErrorOut,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}}startLoad(e){}stopLoad(){this.playlistError=0}getVariantLevelIndex(e){return(null==e?void 0:e.type)===hn?e.level:this.hls.loadLevel}onManifestLoading(){this.playlistError=0,this.penalizedRenditions={}}onLevelUpdated(){this.playlistError=0}onError(e,t){var i,r;if(t.fatal)return;const s=this.hls,n=t.context;switch(t.details){case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:return void(t.errorAction=this.getFragRetryOrSwitchAction(t));case rr.FRAG_PARSING_ERROR:if(null!=(i=t.frag)&&i.gap)return void(t.errorAction={action:ta,flags:na});case rr.FRAG_GAP:case rr.FRAG_DECRYPT_ERROR:return t.errorAction=this.getFragRetryOrSwitchAction(t),void(t.errorAction.action=ia);case rr.LEVEL_EMPTY_ERROR:case rr.LEVEL_PARSING_ERROR:{var a,o;const e=t.parent===hn?t.level:s.loadLevel;t.details===rr.LEVEL_EMPTY_ERROR&&null!=(a=t.context)&&null!=(o=a.levelDetails)&&o.live?t.errorAction=this.getPlaylistRetryOrSwitchAction(t,e):(t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,e))}return;case rr.LEVEL_LOAD_ERROR:case rr.LEVEL_LOAD_TIMEOUT:return void("number"==typeof(null==n?void 0:n.level)&&(t.errorAction=this.getPlaylistRetryOrSwitchAction(t,n.level)));case rr.AUDIO_TRACK_LOAD_ERROR:case rr.AUDIO_TRACK_LOAD_TIMEOUT:case rr.SUBTITLE_LOAD_ERROR:case rr.SUBTITLE_TRACK_LOAD_TIMEOUT:if(n){const e=s.levels[s.loadLevel];if(e&&(n.type===on&&e.hasAudioGroup(n.groupId)||n.type===ln&&e.hasSubtitleGroup(n.groupId)))return t.errorAction=this.getPlaylistRetryOrSwitchAction(t,s.loadLevel),t.errorAction.action=ia,void(t.errorAction.flags=aa)}return;case rr.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:{const e=s.levels[s.loadLevel],i=null==e?void 0:e.attrs["HDCP-LEVEL"];i?t.errorAction={action:ia,flags:oa,hdcpLevel:i}:this.keySystemError(t)}return;case rr.BUFFER_ADD_CODEC_ERROR:case rr.REMUX_ALLOC_ERROR:case rr.BUFFER_APPEND_ERROR:return void(t.errorAction=this.getLevelSwitchAction(t,null!=(r=t.level)?r:s.loadLevel));case rr.INTERNAL_EXCEPTION:case rr.BUFFER_APPENDING_ERROR:case rr.BUFFER_FULL_ERROR:case rr.LEVEL_SWITCH_ERROR:case rr.BUFFER_STALLED_ERROR:case rr.BUFFER_SEEK_OVER_HOLE:case rr.BUFFER_NUDGE_ON_STALL:return void(t.errorAction={action:ta,flags:na})}t.type===ir.KEY_SYSTEM_ERROR&&this.keySystemError(t)}keySystemError(e){const t=this.getVariantLevelIndex(e.frag);e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,t)}getPlaylistRetryOrSwitchAction(e,t){const i=Yn(this.hls.config.playlistLoadPolicy,e),r=this.playlistError++;if(Xn(i,r,Wn(e),e.response))return{action:sa,flags:na,retryConfig:i,retryCount:r};const s=this.getLevelSwitchAction(e,t);return i&&(s.retryConfig=i,s.retryCount=r),s}getFragRetryOrSwitchAction(e){const t=this.hls,i=this.getVariantLevelIndex(e.frag),r=t.levels[i],{fragLoadPolicy:s,keyLoadPolicy:n}=t.config,a=Yn(e.details.startsWith("key")?n:s,e),o=t.levels.reduce(((e,t)=>e+t.fragmentError),0);if(r){e.details!==rr.FRAG_GAP&&r.fragmentError++;if(Xn(a,o,Wn(e),e.response))return{action:sa,flags:na,retryConfig:a,retryCount:o}}const l=this.getLevelSwitchAction(e,i);return a&&(l.retryConfig=a,l.retryCount=o),l}getLevelSwitchAction(e,t){const i=this.hls;null==t&&(t=i.loadLevel);const r=this.hls.levels[t];if(r){var s,n;const t=e.details;r.loadError++,t===rr.BUFFER_APPEND_ERROR&&r.fragmentError++;let l=-1;const{levels:h,loadLevel:c,minAutoLevel:d,maxAutoLevel:u}=i;i.autoLevelEnabled||(i.loadLevel=-1);const f=null==(s=e.frag)?void 0:s.type,g=(f===cn&&t===rr.FRAG_PARSING_ERROR||"audio"===e.sourceBufferName&&(t===rr.BUFFER_ADD_CODEC_ERROR||t===rr.BUFFER_APPEND_ERROR))&&h.some((({audioCodec:e})=>r.audioCodec!==e)),m="video"===e.sourceBufferName&&(t===rr.BUFFER_ADD_CODEC_ERROR||t===rr.BUFFER_APPEND_ERROR)&&h.some((({codecSet:e,audioCodec:t})=>r.codecSet!==e&&r.audioCodec===t)),{type:p,groupId:v}=null!=(n=e.context)?n:{};for(let i=h.length;i--;){const s=(i+c)%h.length;if(s!==c&&s>=d&&s<=u&&0===h[s].loadError){var a,o;const i=h[s];if(t===rr.FRAG_GAP&&f===hn&&e.frag){const t=h[s].details;if(t){const i=Jn(e.frag,t.fragments,e.frag.start);if(null!=i&&i.gap)continue}}else{if(p===on&&i.hasAudioGroup(v)||p===ln&&i.hasSubtitleGroup(v))continue;if(f===cn&&null!=(a=r.audioGroups)&&a.some((e=>i.hasAudioGroup(e)))||f===dn&&null!=(o=r.subtitleGroups)&&o.some((e=>i.hasSubtitleGroup(e)))||g&&r.audioCodec===i.audioCodec||!g&&r.audioCodec!==i.audioCodec||m&&r.codecSet===i.codecSet)continue}l=s;break}}if(l>-1&&i.loadLevel!==l)return e.levelRetry=!0,this.playlistError=0,{action:ia,flags:na,nextAutoLevel:l}}return{action:ia,flags:aa}}onErrorOut(e,t){var i;switch(null==(i=t.errorAction)?void 0:i.action){case ta:break;case ia:this.sendAlternateToPenaltyBox(t),t.errorAction.resolved||t.details===rr.FRAG_GAP?/MediaSource readyState: ended/.test(t.error.message)&&(this.warn(`MediaSource ended after "${t.sourceBufferName}" sourceBuffer append error. Attempting to recover from media error.`),this.hls.recoverMediaError()):t.fatal=!0}t.fatal&&this.hls.stopLoad()}sendAlternateToPenaltyBox(e){const t=this.hls,i=e.errorAction;if(!i)return;const{flags:r,hdcpLevel:s,nextAutoLevel:n}=i;switch(r){case na:this.switchLevel(e,n);break;case oa:s&&(t.maxHdcpLevel=Dn[Dn.indexOf(s)-1],i.resolved=!0),this.warn(`Restricting playback to HDCP-LEVEL of "${t.maxHdcpLevel}" or lower`)}i.resolved||this.switchLevel(e,n)}switchLevel(e,t){void 0!==t&&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)}},fpsController: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(tr.MEDIA_ATTACHING,this.onMediaAttaching,this)}unregisterListeners(){this.hls.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(e,t){const i=this.hls.config;if(i.capLevelOnFPSDrop){const e=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=e,e&&"function"==typeof e.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),i.fpsDroppedMonitoringPeriod)}}checkFPS(e,t,i){const r=performance.now();if(t){if(this.lastTime){const e=r-this.lastTime,s=i-this.lastDroppedFrames,n=t-this.lastDecodedFrames,a=1e3*s/e,o=this.hls;if(o.trigger(tr.FPS_DROP,{currentDropped:s,currentDecoded:n,totalDroppedFrames:i}),a>0&&s>o.config.fpsDroppedMonitoringThreshold*n){let e=o.currentLevel;lr.warn("drop FPS ratio greater than max allowed value for currentLevel: "+e),e>0&&(-1===o.autoLevelCapping||o.autoLevelCapping>=e)&&(e-=1,o.trigger(tr.FPS_DROP_LEVEL_CAPPING,{level:e,droppedLevel:o.currentLevel}),o.autoLevelCapping=e,this.streamController.nextLevelSwitch())}}this.lastTime=r,this.lastDroppedFrames=i,this.lastDecodedFrames=t}}checkFPSInterval(){const e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){const t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)}},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:Mr,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableID3MetadataCues:!0,useMediaCapabilities:!0,certLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null}},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},{cueHandler:fc,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:class extends no{constructor(e,t,i){super(e,t,i,"[subtitle-stream-controller]",dn),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this._registerListeners()}onHandlerDestroying(){this._unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}_registerListeners(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.ERROR,this.onError,this),e.on(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(tr.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(tr.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this)}_unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.ERROR,this.onError,this),e.off(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(tr.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(tr.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.off(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this)}startLoad(e){this.stopLoad(),this.state=qa,this.setInterval(500),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){const{frag:i,success:r}=t;if(this.fragPrevious=i,this.state=qa,!r)return;const s=this.tracksBuffered[this.currentTrackId];if(!s)return;let n;const a=i.start;for(let e=0;e=s[e].start&&a<=s[e].end){n=s[e];break}const o=i.start+i.duration;n?n.end=o:(n={start:a,end:o},s.push(n)),this.fragmentTracker.fragBuffered(i),this.fragBufferedComplete(i,null)}onBufferFlushing(e,t){const{startOffset:i,endOffset:r}=t;if(0===i&&r!==Number.POSITIVE_INFINITY){const e=r-1;if(e<=0)return;t.endOffsetSubtitles=Math.max(0,e),this.tracksBuffered.forEach((t=>{for(let i=0;inew Fn(e))):(this.tracksBuffered=[],this.levels=t.map((e=>{const t=new Fn(e);return this.tracksBuffered[t.id]=[],t})),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,dn),this.fragPrevious=null,this.mediaBuffer=null)}onSubtitleTrackSwitch(e,t){var i;if(this.currentTrackId=t.id,null==(i=this.levels)||!i.length||-1===this.currentTrackId)return void this.clearInterval();const r=this.levels[this.currentTrackId];null!=r&&r.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,r&&this.setInterval(500)}onSubtitleTrackLoaded(e,t){var i;const{currentTrackId:r,levels:s}=this,{details:n,id:a}=t;if(!s)return void this.warn(`Subtitle tracks were reset while loading level ${a}`);const o=s[a];if(a>=s.length||!o)return;this.log(`Subtitle track ${a} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""},duration:${n.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let l=0;if(n.live||null!=(i=o.details)&&i.live){const e=this.mainDetails;if(n.deltaUpdateFailed||!e)return;const t=e.fragments[0];var h;if(o.details)l=this.alignPlaylists(n,o.details,null==(h=this.levelLastLoaded)?void 0:h.details),0===l&&t&&(l=t.start,Kn(n,l));else n.hasProgramDateTime&&e.hasProgramDateTime?(Fa(n,e),l=n.fragments[0].start):t&&(l=t.start,Kn(n,l))}if(o.details=n,this.levelLastLoaded=o,a===r&&(this.startFragRequested||!this.mainDetails&&n.live||this.setStartPosition(this.mainDetails||n,l),this.tick(),n.live&&!this.fragCurrent&&this.media&&this.state===qa)){Jn(null,n.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),o.details=void 0)}}_handleFragmentLoadComplete(e){const{frag:t,payload:i}=e,r=t.decryptdata,s=this.hls;if(!this.fragContextChanged(t)&&i&&i.byteLength>0&&null!=r&&r.key&&r.iv&&"AES-128"===r.method){const e=performance.now();this.decrypter.decrypt(new Uint8Array(i),r.key.buffer,r.iv.buffer).catch((e=>{throw s.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.FRAG_DECRYPT_ERROR,fatal:!1,error:e,reason:e.message,frag:t}),e})).then((i=>{const r=performance.now();s.trigger(tr.FRAG_DECRYPTED,{frag:t,payload:i,stats:{tstart:e,tdecrypt:r}})})).catch((e=>{this.warn(`${e.name}: ${e.message}`),this.state=qa}))}}doTick(){if(this.media){if(this.state===qa){const{currentTrackId:e,levels:t}=this,i=null==t?void 0:t[e];if(!i||!t.length||!i.details)return;const{config:r}=this,s=this.getLoadPosition(),n=xa.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],s,r.maxBufferHole),{end:a,len:o}=n,l=this.getFwdBufferInfo(this.media,hn),h=i.details;if(o>this.getMaxBufferLength(null==l?void 0:l.len)+h.levelTargetDuration)return;const c=h.fragments,d=c.length,u=h.edge;let f=null;const g=this.fragPrevious;if(au-e?0:e;f=Jn(g,c,Math.max(c[0].start,a),t),!f&&g&&g.startthis.pollTrackChange(0),this.useTextTrackPolling=!1,this.subtitlePollingInterval=-1,this._subtitleDisplay=!0,this.onTextTracksChanged=()=>{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let e=null;const t=Tn(this.media.textTracks);for(let i=0;i-1&&this.toggleTrackModes()}registerListeners(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVEL_LOADING,this.onLevelLoading,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVEL_LOADING,this.onLevelLoading,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(tr.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);Tn(this.media.textTracks).forEach((e=>{vn(e)})),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){const{id:i,groupId:r,details:s}=t,n=this.tracksInGroup[i];if(!n||n.groupId!==r)return void this.warn(`Subtitle track with id:${i} and group:${r} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=t.details,this.log(`Subtitle track ${i} "${n.name}" lang:${n.lang} group:${r} loaded [${s.startSN}-${s.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.subtitleGroups||null,r=this.groupIds;let s=this.currentTrack;if(!i||(null==r?void 0:r.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==r?void 0:r.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!s&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.subtitlePreference;if(!s&&t){this.selectDefaultTrack=!1;const i=va(t,e);if(i>-1)s=e[i];else{const e=va(t,this.tracks);s=this.tracks[e]}}let r=this.findTrackId(s);-1===r&&s&&(r=this.findTrackId(null));const n={subtitleTracks:e};this.log(`Updating subtitle tracks, ${e.length} track(s) found in "${null==i?void 0:i.join(",")}" group-id`),this.hls.trigger(tr.SUBTITLE_TRACKS_UPDATED,n),-1!==r&&-1===this.trackId&&this.setSubtitleTrack(r)}else this.shouldReloadPlaylist(s)&&this.setSubtitleTrack(this.trackId)}findTrackId(e){const t=this.tracksInGroup,i=this.selectDefaultTrack;for(let r=0;r-1){const e=this.tracksInGroup[r];return this.setSubtitleTrack(r),e}if(i)return null;{const i=va(e,t);if(i>-1)return t[i]}}}return null}loadPlaylist(e){super.loadPlaylist();const t=this.currentTrack;if(this.shouldLoadPlaylist(t)&&t){const i=t.id,r=t.groupId;let s=t.url;if(e)try{s=e.addDirectives(s)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}this.log(`Loading subtitle playlist for id ${i}`),this.hls.trigger(tr.SUBTITLE_TRACK_LOADING,{url:s,id:i,groupId:r,deliveryDirectives:e||null})}}toggleTrackModes(){const{media:e}=this;if(!e)return;const t=Tn(e.textTracks),i=this.currentTrack;let r;if(i&&(r=t.filter((e=>vl(i,e)))[0],r||this.warn(`Unable to find subtitle TextTrack with name "${i.name}" and language "${i.lang}"`)),[].slice.call(t).forEach((e=>{"disabled"!==e.mode&&e!==r&&(e.mode="disabled")})),r){const e=this.subtitleDisplay?"showing":"hidden";r.mode!==e&&(r.mode=e)}}setSubtitleTrack(e){const t=this.tracksInGroup;if(!this.media)return void(this.queuedDefaultTrack=e);if(e<-1||e>=t.length||!Ji(e))return void this.warn(`Invalid subtitle track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,r=t[e]||null;if(this.trackId=e,this.currentTrack=r,this.toggleTrackModes(),!r)return void this.hls.trigger(tr.SUBTITLE_TRACK_SWITCH,{id:e});const s=!!r.details&&!r.details.live;if(e===this.trackId&&r===i&&s)return;this.log(`Switching to subtitle-track ${e}`+(r?` "${r.name}" lang:${r.lang} group:${r.groupId}`:""));const{id:n,groupId:a="",name:o,type:l,url:h}=r;this.hls.trigger(tr.SUBTITLE_TRACK_SWITCH,{id:n,groupId:a,name:o,type:l,url:h});const c=this.switchParams(r.url,null==i?void 0:i.details,r.details);this.loadPlaylist(c)}},timelineController: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={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},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(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(tr.FRAG_LOADING,this.onFragLoading,this),e.on(tr.FRAG_LOADED,this.onFragLoaded,this),e.on(tr.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(tr.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(tr.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(tr.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(tr.FRAG_LOADING,this.onFragLoading,this),e.off(tr.FRAG_LOADED,this.onFragLoaded,this),e.off(tr.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(tr.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(tr.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(tr.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(tr.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)){const e=new Gl(this,"textTrack1"),t=new Gl(this,"textTrack2"),i=new Gl(this,"textTrack3"),r=new Gl(this,"textTrack4");this.cea608Parser1=new Ul(1,e,t),this.cea608Parser2=new Ul(3,i,r)}}addCues(e,t,i,r,s){let n=!1;for(let e=s.length;e--;){const r=s[e],c=(a=r[0],o=r[1],l=t,h=i,Math.min(o,h)-Math.max(a,l));if(c>=0&&(r[0]=Math.min(r[0],t),r[1]=Math.max(r[1],i),n=!0,c/(i-t)>.5))return}var a,o,l,h;if(n||s.push([t,i]),this.config.renderTextTracksNatively){const s=this.captionsTracks[e];this.Cues.newCue(s,t,i,r)}else{const s=this.Cues.newCue(null,t,i,r);this.hls.trigger(tr.CUES_PARSED,{type:"captions",cues:s,track:e})}}onInitPtsFound(e,{frag:t,id:i,initPTS:r,timescale:s}){const{unparsedVttFrags:n}=this;"main"===i&&(this.initPTS[t.cc]={baseTime:r,timescale:s}),n.length&&(this.unparsedVttFrags=[],n.forEach((e=>{this.onFragLoaded(tr.FRAG_LOADED,e)})))}getExistingTrack(e,t){const{media:i}=this;if(i)for(let r=0;r{vn(e[t]),delete e[t]})),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:e}=this;if(!e)return;const t=e.textTracks;if(t)for(let e=0;ee.textCodec===rh));if(this.config.enableWebVTT||r&&this.config.enableIMSC1){if(ml(this.tracks,i))return void(this.tracks=i);if(this.textTracks=[],this.tracks=i,this.config.renderTextTracksNatively){const e=this.media,t=e?Tn(e.textTracks):null;if(this.tracks.forEach(((e,i)=>{let r;if(t){let i=null;for(let r=0;rnull!==e)).map((e=>e.label));e.length&&lr.warn(`Media element contains unused subtitle tracks: ${e.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const e=this.tracks.map((e=>({label:e.name,kind:e.type.toLowerCase(),default:e.default,subtitleTrack:e})));this.hls.trigger(tr.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:e})}}}onManifestLoaded(e,t){this.config.enableCEA708Captions&&t.captions&&t.captions.forEach((e=>{const t=/(?:CC|SERVICE)([1-4])/.exec(e.instreamId);if(!t)return;const i=`textTrack${t[1]}`,r=this.captionsProperties[i];r&&(r.label=e.name,e.lang&&(r.languageCode=e.lang),r.media=e)}))}closedCaptionsForLevel(e){const t=this.hls.levels[e.level];return null==t?void 0:t.attrs["CLOSED-CAPTIONS"]}onFragLoading(e,t){if(this.enabled&&t.frag.type===hn){var i,r;const{cea608Parser1:e,cea608Parser2:s,lastSn:n}=this,{cc:a,sn:o}=t.frag,l=null!=(i=null==(r=t.part)?void 0:r.index)?i:-1;e&&s&&(o!==n+1||o===n&&l!==this.lastPartIndex+1||a!==this.lastCc)&&(e.reset(),s.reset()),this.lastCc=a,this.lastSn=o,this.lastPartIndex=l}}onFragLoaded(e,t){const{frag:i,payload:r}=t;if(i.type===dn)if(r.byteLength){const e=i.decryptdata,s="stats"in t;if(null==e||!e.encrypted||s){const e=this.tracks[i.level],s=this.vttCCs;s[i.cc]||(s[i.cc]={start:i.start,prevCC:this.prevCC,new:!0},this.prevCC=i.cc),e&&e.textCodec===rh?this._parseIMSC1(i,r):this._parseVTTs(t)}}else this.hls.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:new Error("Empty subtitle payload")})}_parseIMSC1(e,t){const i=this.hls;oh(t,this.initPTS[e.cc],(t=>{this._appendCues(t,e.level),i.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:e})}),(t=>{lr.log(`Failed to parse IMSC1: ${t}`),i.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e,error:t})}))}_parseVTTs(e){var t;const{frag:i,payload:r}=e,{initPTS:s,unparsedVttFrags:n}=this,a=s.length-1;if(!s[i.cc]&&-1===a)return void n.push(e);const o=this.hls;ih(null!=(t=i.initSegment)&&t.data?Es(i.initSegment.data,new Uint8Array(r)):r,this.initPTS[i.cc],this.vttCCs,i.cc,i.start,(e=>{this._appendCues(e,i.level),o.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:i})}),(t=>{const s="Missing initPTS for VTT MPEGTS"===t.message;s?n.push(e):this._fallbackToIMSC1(i,r),lr.log(`Failed to parse VTT cue: ${t}`),s&&a>i.cc||o.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:t})}))}_fallbackToIMSC1(e,t){const i=this.tracks[e.level];i.textCodec||oh(t,this.initPTS[e.cc],(()=>{i.textCodec=rh,this._parseIMSC1(e,t)}),(()=>{i.textCodec="wvtt"}))}_appendCues(e,t){const i=this.hls;if(this.config.renderTextTracksNatively){const i=this.textTracks[t];if(!i||"disabled"===i.mode)return;e.forEach((e=>pn(i,e)))}else{const r=this.tracks[t];if(!r)return;const s=r.default?"default":"subtitles"+t;i.trigger(tr.CUES_PARSED,{type:"subtitles",cues:e,track:s})}}onFragDecrypted(e,t){const{frag:i}=t;i.type===dn&&this.onFragLoaded(tr.FRAG_LOADED,t)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(e,t){this.initCea608Parsers();const{cea608Parser1:i,cea608Parser2:r}=this;if(!this.enabled||!i||!r)return;const{frag:s,samples:n}=t;if(s.type!==hn||"NONE"!==this.closedCaptionsForLevel(s))for(let e=0;eyn(e[r],t,i)))}if(this.config.renderTextTracksNatively&&0===t&&void 0!==r){const{textTracks:e}=this;Object.keys(e).forEach((i=>yn(e[i],t,r)))}}}extractCea608Data(e){const t=[[],[]],i=31&e[0];let r=2;for(let s=0;s0&&-1===e?(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t,this.state=qa):(this.loadedmetadata=!1,this.state=Ja),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}doTick(){switch(this.state){case qa:this.doTickIdle();break;case Ja:{var e;const{levels:t,trackId:i}=this,r=null==t||null==(e=t[i])?void 0:e.details;if(r){if(this.waitForCdnTuneIn(r))break;this.state=ro}break}case Qa:{var t;const e=performance.now(),i=this.retryDate;if(!i||e>=i||null!=(t=this.media)&&t.seeking){const{levels:e,trackId:t}=this;this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded((null==e?void 0:e[t])||null),this.state=qa}break}case ro:{const e=this.waitingData;if(e){const{frag:t,part:i,cache:r,complete:s}=e;if(void 0!==this.initPTS[t.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=Xa;const e={frag:t,part:i,payload:r.flush(),networkDetails:null};this._handleFragmentLoadProgress(e),s&&super._handleFragmentLoadComplete(e)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log(`Waiting fragment cc (${t.cc}) cancelled because video is at cc ${this.videoTrackCC}`),this.clearWaitingFragment();else{const e=this.getLoadPosition(),i=xa.bufferInfo(this.mediaBuffer,e,this.config.maxBufferHole);Zn(i.end,this.config.maxFragLookUpTolerance,t)<0&&(this.log(`Waiting fragment cc (${t.cc}) @ ${t.start} cancelled because another fragment at ${i.end} is needed`),this.clearWaitingFragment())}}else this.state=qa}}this.onTickEnd()}clearWaitingFragment(){const e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=qa)}resetLoadingState(){this.clearWaitingFragment(),super.resetLoadingState()}onTickEnd(){const{media:e}=this;null!=e&&e.readyState&&(this.lastCurrentTime=e.currentTime)}doTickIdle(){const{hls:e,levels:t,media:i,trackId:r}=this,s=e.config;if(!i&&(this.startFragRequested||!s.startFragPrefetch)||null==t||!t[r])return;const n=t[r],a=n.details;if(!a||a.live&&this.levelLastLoaded!==n||this.waitForCdnTuneIn(a))return void(this.state=Ja);const o=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&o&&(this.bufferFlushed=!1,this.afterBufferFlushed(o,mr,cn));const l=this.getFwdBufferInfo(o,cn);if(null===l)return;const{bufferedTrack:h,switchingTrack:c}=this;if(!c&&this._streamEnded(l,a))return e.trigger(tr.BUFFER_EOS,{type:"audio"}),void(this.state=to);const d=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,hn),u=l.len,f=this.getMaxBufferLength(null==d?void 0:d.len),g=a.fragments,m=g[0].start;let p=this.flushing?this.getLoadPosition():l.end;if(c&&i){const e=this.getLoadPosition();h&&!pl(c.attrs,h.attrs)&&(p=e),a.PTSKnown&&em||l.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),i.currentTime=m+.05)}if(u>=f&&!c&&pd.end+a.targetduration;if(T||(null==d||!d.len)&&l.len){const e=this.getAppendedFrag(v.start,hn);if(null===e)return;if(y||(y=!!e.gap||!!T&&0===d.len),T&&!y||y&&l.nextStart&&l.nextStartnew Fn(e)))}onAudioTrackSwitching(e,t){const i=!!t.url;this.trackId=t.id;const{fragCurrent:r}=this;r&&(r.abortRequests(),this.removeUnbufferedFrags(r.start)),this.resetLoadingState(),i?this.setInterval(100):this.resetTransmuxer(),i?(this.switchingTrack=t,this.state=qa,this.flushAudioIfNeeded(t)):(this.switchingTrack=null,this.bufferedTrack=t,this.state=Ya),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,null!==this.cachedTrackLoadedData&&(this.hls.trigger(tr.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)}onAudioTrackLoaded(e,t){var i;if(null==this.mainDetails)return void(this.cachedTrackLoadedData=t);const{levels:r}=this,{details:s,id:n}=t;if(!r)return void this.warn(`Audio tracks were reset while loading level ${n}`);this.log(`Audio track ${n} loaded [${s.startSN},${s.endSN}]${s.lastPartSn?`[part-${s.lastPartSn}-${s.lastPartIndex}]`:""},duration:${s.totalduration}`);const a=r[n];let o=0;if(s.live||null!=(i=a.details)&&i.live){this.checkLiveUpdate(s);const e=this.mainDetails;if(s.deltaUpdateFailed||!e)return;var l;if(!a.details&&s.hasProgramDateTime&&e.hasProgramDateTime)Fa(s,e),o=s.fragments[0].start;else o=this.alignPlaylists(s,a.details,null==(l=this.levelLastLoaded)?void 0:l.details)}a.details=s,this.levelLastLoaded=a,this.startFragRequested||!this.mainDetails&&s.live||this.setStartPosition(this.mainDetails||s,o),this.state!==Ja||this.waitForCdnTuneIn(s)||(this.state=qa),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:r,payload:s}=e,{config:n,trackId:a,levels:o}=this;if(!o)return void this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const l=o[a];if(!l)return void this.warn("Audio track is undefined on fragment load progress");const h=l.details;if(!h)return this.warn("Audio track details undefined on fragment load progress"),void this.removeUnbufferedFrags(i.start);const c=n.defaultAudioCodec||l.audioCodec||"mp4a.40.2";let d=this.transmuxer;d||(d=this.transmuxer=new gl(this.hls,cn,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));const u=this.initPTS[i.cc],f=null==(t=i.initSegment)?void 0:t.data;if(void 0!==u){const e=!1,t=r?r.index:-1,n=-1!==t,a=new Ca(i.level,i.sn,i.stats.chunkCount,s.byteLength,t,n);d.push(s,f,c,"",i,r,h.totalduration,e,a,u)}else{this.log(`Unknown video PTS for cc ${i.cc}, waiting for video PTS before demuxing audio frag ${i.sn} of [${h.startSN} ,${h.endSN}],track ${a}`);const{cache:e}=this.waitingData=this.waitingData||{frag:i,part:r,cache:new ao,complete:!1};e.push(new Uint8Array(s)),this.waitingVideoCC=this.videoTrackCC,this.state=ro}}_handleFragmentLoadComplete(e){this.waitingData?this.waitingData.complete=!0:super._handleFragmentLoadComplete(e)}onBufferReset(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1}onBufferCreated(e,t){const i=t.tracks.audio;i&&(this.mediaBuffer=i.buffer||null),t.tracks.video&&(this.videoBuffer=t.tracks.video.buffer||null)}onFragBuffered(e,t){const{frag:i,part:r}=t;if(i.type===cn)if(this.fragContextChanged(i))this.warn(`Fragment ${i.sn}${r?" p: "+r.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);else{if("initSegment"!==i.sn){this.fragPrevious=i;const e=this.switchingTrack;e&&(this.bufferedTrack=e,this.switchingTrack=null,this.hls.trigger(tr.AUDIO_TRACK_SWITCHED,qi({},e)))}this.fragBufferedComplete(i,r)}else if(!this.loadedmetadata&&i.type===hn){const e=this.videoBuffer||this.media;if(e){xa.getBuffered(e).length&&(this.loadedmetadata=!0)}}}onError(e,t){var i;if(t.fatal)this.state=io;else switch(t.details){case rr.FRAG_GAP:case rr.FRAG_PARSING_ERROR:case rr.FRAG_DECRYPT_ERROR:case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(cn,t);break;case rr.AUDIO_TRACK_LOAD_ERROR:case rr.AUDIO_TRACK_LOAD_TIMEOUT:case rr.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==Ja||(null==(i=t.context)?void 0:i.type)!==on||(this.state=qa);break;case rr.BUFFER_APPEND_ERROR:case rr.BUFFER_FULL_ERROR:if(!t.parent||"audio"!==t.parent)return;if(t.details===rr.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&(this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"));break;case rr.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}onBufferFlushing(e,{type:t}){t!==pr&&(this.flushing=!0)}onBufferFlushed(e,{type:t}){if(t!==pr){this.flushing=!1,this.bufferFlushed=!0,this.state===to&&(this.state=qa);const e=this.mediaBuffer||this.media;e&&(this.afterBufferFlushed(e,t,cn),this.tick())}}_handleTransmuxComplete(e){var t;const i="audio",{hls:r}=this,{remuxResult:s,chunkMeta:n}=e,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{details:c}=h,{audio:d,text:u,id3:f,initSegment:g}=s;if(!this.fragContextChanged(o)&&c){if(this.state=Za,this.switchingTrack&&d&&this.completeAudioSwitch(this.switchingTrack),null!=g&&g.tracks){const e=o.initSegment||o;this._bufferInitSegment(h,g.tracks,e,n),r.trigger(tr.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:g.tracks})}if(d){const{startPTS:e,endPTS:t,startDTS:i,endDTS:r}=d;l&&(l.elementaryStreams[mr]={startPTS:e,endPTS:t,startDTS:i,endDTS:r}),o.setElementaryStreamInfo(mr,e,t,i,r),this.bufferFragmentData(d,o,l,n)}if(null!=f&&null!=(t=f.samples)&&t.length){const e=Qi({id:i,frag:o,details:c},f);r.trigger(tr.FRAG_PARSING_METADATA,e)}if(u){const e=Qi({id:i,frag:o,details:c},u);r.trigger(tr.FRAG_PARSING_USERDATA,e)}}else this.fragmentTracker.removeFragment(o)}_bufferInitSegment(e,t,i,r){if(this.state!==Za)return;t.video&&delete t.video;const s=t.audio;if(!s)return;s.id="audio";const n=e.audioCodec;this.log(`Init audio buffer, container:${s.container}, codecs[level/parsed]=[${n}/${s.codec}]`),n&&1===n.split(",").length&&(s.levelCodec=n),this.hls.trigger(tr.BUFFER_CODECS,t);const a=s.initSegment;if(null!=a&&a.byteLength){const e={type:"audio",frag:i,part:null,chunkMeta:r,parent:i.type,data:a};this.hls.trigger(tr.BUFFER_APPENDING,e)}this.tickImmediate()}loadFragment(e,t,i){const r=this.fragmentTracker.getState(e);var s;if(this.fragCurrent=e,this.switchingTrack||r===ba||r===wa)if("initSegment"===e.sn)this._loadInitSegment(e,t);else if(null!=(s=t.details)&&s.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=ro;const i=this.mainDetails;i&&i.fragments[0].start!==t.details.fragments[0].start&&Fa(t.details,i)}else this.startFragRequested=!0,super.loadFragment(e,t,i);else this.clearTrackerIfNeeded(e)}flushAudioIfNeeded(e){const{media:t,bufferedTrack:i}=this,r=null==i?void 0:i.attrs,s=e.attrs;t&&r&&(r.CHANNELS!==s.CHANNELS||i.name!==e.name||i.lang!==e.lang)&&(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null)}completeAudioSwitch(e){const{hls:t}=this;this.flushAudioIfNeeded(e),this.bufferedTrack=e,this.switchingTrack=null,t.trigger(tr.AUDIO_TRACK_SWITCHED,qi({},e))}},audioTrackController:class extends la{constructor(e){super(e,"[audio-track-controller]"),this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVEL_LOADING,this.onLevelLoading,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVEL_LOADING,this.onLevelLoading,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(tr.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.audioTracks||[]}onAudioTrackLoaded(e,t){const{id:i,groupId:r,details:s}=t,n=this.tracksInGroup[i];if(!n||n.groupId!==r)return void this.warn(`Audio track with id:${i} and group:${r} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=t.details,this.log(`Audio track ${i} "${n.name}" lang:${n.lang} group:${r} loaded [${s.startSN}-${s.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.audioGroups||null,r=this.groupIds;let s=this.currentTrack;if(!i||(null==r?void 0:r.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==r?void 0:r.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!s&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.audioPreference;if(!s&&t){const i=va(t,e,Ta);if(i>-1)s=e[i];else{const e=va(t,this.tracks);s=this.tracks[e]}}let r=this.findTrackId(s);-1===r&&s&&(r=this.findTrackId(null));const a={audioTracks:e};this.log(`Updating audio tracks, ${e.length} track(s) found in group(s): ${null==i?void 0:i.join(",")}`),this.hls.trigger(tr.AUDIO_TRACKS_UPDATED,a);const o=this.trackId;if(-1!==r&&-1===o)this.setAudioTrack(r);else if(e.length&&-1===o){var n;const t=new Error(`No audio track selected for current audio group-ID(s): ${null==(n=this.groupIds)?void 0:n.join(",")} track count: ${e.length}`);this.warn(t.message),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:t})}}else this.shouldReloadPlaylist(s)&&this.setAudioTrack(this.trackId)}onError(e,t){!t.fatal&&t.context&&(t.context.type!==on||t.context.id!==this.trackId||this.groupIds&&-1===this.groupIds.indexOf(t.context.groupId)||(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){const t=this.hls;if(t.config.audioPreference=e,e){const i=this.allAudioTracks;if(this.selectDefaultTrack=!1,i.length){const r=this.currentTrack;if(r&&ya(e,r,Ta))return r;const s=va(e,this.tracksInGroup,Ta);if(s>-1){const e=this.tracksInGroup[s];return this.setAudioTrack(s),e}if(r){let r=t.loadLevel;-1===r&&(r=t.firstAutoLevel);const s=function(e,t,i,r,s){const n=t[r],a=t.reduce(((e,t,i)=>{const r=t.uri;return(e[r]||(e[r]=[])).push(i),e}),{})[n.uri];a.length>1&&(r=Math.max.apply(Math,a));const o=n.videoRange,l=n.frameRate,h=n.codecSet.substring(0,4),c=Ea(t,r,(t=>{if(t.videoRange!==o||t.frameRate!==l||t.codecSet.substring(0,4)!==h)return!1;const r=t.audioGroups,n=i.filter((e=>!r||-1!==r.indexOf(e.groupId)));return va(e,n,s)>-1}));return c>-1?c:Ea(t,r,(t=>{const r=t.audioGroups,n=i.filter((e=>!r||-1!==r.indexOf(e.groupId)));return va(e,n,s)>-1}))}(e,t.levels,i,r,Ta);if(-1===s)return null;t.nextLoadLevel=s}if(e.channels||e.audioCodec){const t=va(e,i);if(t>-1)return i[t]}}}return null}setAudioTrack(e){const t=this.tracksInGroup;if(e<0||e>=t.length)return void this.warn(`Invalid audio track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,r=t[e],s=r.details&&!r.details.live;if(e===this.trackId&&r===i&&s)return;if(this.log(`Switching to audio-track ${e} "${r.name}" lang:${r.lang} group:${r.groupId} channels:${r.channels}`),this.trackId=e,this.currentTrack=r,this.hls.trigger(tr.AUDIO_TRACK_SWITCHING,qi({},r)),s)return;const n=this.switchParams(r.url,null==i?void 0:i.details,r.details);this.loadPlaylist(n)}findTrackId(e){const t=this.tracksInGroup;for(let i=0;i{this.initialized&&(this.starved=!0),this.buffering=!0},this.onPlaying=()=>{this.initialized||(this.initialized=!0),this.buffering=!1},this.applyPlaylistData=e=>{try{this.apply(e,{ot:Eh.MANIFEST,su:!this.initialized})}catch(e){lr.warn("Could not generate manifest CMCD data.",e)}},this.applyFragmentData=e=>{try{const t=e.frag,i=this.hls.levels[t.level],r=this.getObjectType(t),s={d:1e3*t.duration,ot:r};r!==Eh.VIDEO&&r!==Eh.AUDIO&&r!=Eh.MUXED||(s.br=i.bitrate/1e3,s.tb=this.getTopBandwidth(r)/1e3,s.bl=this.getBufferLength(r)),this.apply(e,s)}catch(e){lr.warn("Could not generate segment CMCD data.",e)}},this.hls=e;const t=this.config=e.config,{cmcd:i}=t;null!=i&&(t.pLoader=this.createPlaylistLoader(),t.fLoader=this.createFragmentLoader(),this.sid=i.sessionId||function(){try{return crypto.randomUUID()}catch(e){try{const e=URL.createObjectURL(new Blob),t=e.toString();return URL.revokeObjectURL(e),t.slice(t.lastIndexOf("/")+1)}catch(e){let t=(new Date).getTime();const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const i=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?i:3&i|8).toString(16)}));return i}}}(),this.cid=i.contentId,this.useHeaders=!0===i.useHeaders,this.includeKeys=i.includeKeys,this.registerListeners())}registerListeners(){const e=this.hls;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHED,this.onMediaDetached,this),e.on(tr.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){const e=this.hls;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHED,this.onMediaDetached,this),e.off(tr.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 i,r;this.audioBuffer=null==(i=t.tracks.audio)?void 0:i.buffer,this.videoBuffer=null==(r=t.tracks.video)?void 0:r.buffer}createData(){var e;return{v:1,sf:Sh.HLS,sid:this.sid,cid:this.cid,pr:null==(e=this.media)?void 0:e.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}}apply(e,t={}){Qi(t,this.createData());const i=t.ot===Eh.INIT||t.ot===Eh.VIDEO||t.ot===Eh.MUXED;this.starved&&i&&(t.bs=!0,t.su=!0,this.starved=!1),null==t.su&&(t.su=this.buffering);const{includeKeys:r}=this;r&&(t=Object.keys(t).reduce(((e,i)=>(r.includes(i)&&(e[i]=t[i]),e)),{})),this.useHeaders?(e.headers||(e.headers={}),ec(e.headers,t)):e.url=rc(e.url,t)}getObjectType(e){const{type:t}=e;return"subtitle"===t?Eh.TIMED_TEXT:"initSegment"===e.sn?Eh.INIT:"audio"===t?Eh.AUDIO:"main"===t?this.hls.audioTracks.length?Eh.VIDEO:Eh.MUXED:void 0}getTopBandwidth(e){let t,i=0;const r=this.hls;if(e===Eh.AUDIO)t=r.audioTracks;else{const e=r.maxAutoLevel,i=e>-1?e+1:r.levels.length;t=r.levels.slice(0,i)}for(const e of t)e.bitrate>i&&(i=e.bitrate);return i>0?i:NaN}getBufferLength(e){const t=this.hls.media,i=e===Eh.AUDIO?this.audioBuffer:this.videoBuffer;if(!i||!t)return NaN;return 1e3*xa.bufferInfo(i,t.currentTime,this.config.maxBufferHole).len}createPlaylistLoader(){const{pLoader:e}=this.config,t=this.applyPlaylistData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,r){t(e),this.loader.load(e,i,r)}}}createFragmentLoader(){const{fLoader:e}=this.config,t=this.applyFragmentData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,r){t(e),this.loader.load(e,i,r)}}}},contentSteeringController: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=lr.log.bind(lr,"[content-steering]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const e=this.hls;e&&(e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.ERROR,this.onError,this))}startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){const e=1e3*this.timeToLoad-(performance.now()-this.updated);if(e>0)return void this.scheduleRefresh(this.uri,e)}this.loadSteeringManifest(this.uri)}}stopLoad(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()}clearTimeout(){-1!==this.reloadTimer&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(e){const t=this.levels;t&&(this.levels=t.filter((t=>t!==e)))}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(e,t){const{contentSteering:i}=t;null!==i&&(this.pathwayId=i.pathwayId,this.uri=i.uri,this.started&&this.startLoad())}onManifestParsed(e,t){this.audioTracks=t.audioTracks,this.subtitleTracks=t.subtitleTracks}onError(e,t){const{errorAction:i}=t;if((null==i?void 0:i.action)===ia&&i.flags===aa){const e=this.levels;let r=this.pathwayPriority,s=this.pathwayId;if(t.context){const{groupId:i,pathwayId:r,type:n}=t.context;i&&e?s=this.getPathwayForGroupId(i,n,s):r&&(s=r)}s in this.penalizedPathways||(this.penalizedPathways[s]=performance.now()),!r&&e&&(r=e.reduce(((e,t)=>(-1===e.indexOf(t.pathwayId)&&e.push(t.pathwayId),e)),[])),r&&r.length>1&&(this.updatePathwayPriority(r),i.resolved=this.pathwayId!==s),i.resolved||lr.warn(`Could not resolve ${t.details} ("${t.error.message}") with content-steering for Pathway: ${s} levels: ${e?e.length:e} priorities: ${JSON.stringify(r)} penalized: ${JSON.stringify(this.penalizedPathways)}`)}}filterParsedLevels(e){this.levels=e;let t=this.getLevelsForPathway(this.pathwayId);if(0===t.length){const i=e[0].pathwayId;this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to "${i}"`),t=this.getLevelsForPathway(i),this.pathwayId=i}return t.length!==e.length?(this.log(`Found ${t.length}/${e.length} levels in Pathway "${this.pathwayId}"`),t):e}getLevelsForPathway(e){return null===this.levels?[]:this.levels.filter((t=>e===t.pathwayId))}updatePathwayPriority(e){let t;this.pathwayPriority=e;const i=this.penalizedPathways,r=performance.now();Object.keys(i).forEach((e=>{r-i[e]>3e5&&delete i[e]}));for(let r=0;r0){this.log(`Setting Pathway to "${s}"`),this.pathwayId=s,jn(t),this.hls.trigger(tr.LEVELS_UPDATED,{levels:t});const e=this.hls.levels[n];a&&e&&this.levels&&(e.attrs["STABLE-VARIANT-ID"]!==a.attrs["STABLE-VARIANT-ID"]&&e.bitrate!==a.bitrate&&this.log(`Unstable Pathways change from bitrate ${a.bitrate} to ${e.bitrate}`),this.hls.nextLoadLevel=n);break}}}getPathwayForGroupId(e,t,i){const r=this.getLevelsForPathway(i).concat(this.levels||[]);for(let i=0;i{const{ID:s,"BASE-ID":n,"URI-REPLACEMENT":a}=e;if(t.some((e=>e.pathwayId===s)))return;const o=this.getLevelsForPathway(n).map((e=>{const t=new dr(e.attrs);t["PATHWAY-ID"]=s;const n=t.AUDIO&&`${t.AUDIO}_clone_${s}`,o=t.SUBTITLES&&`${t.SUBTITLES}_clone_${s}`;n&&(i[t.AUDIO]=n,t.AUDIO=n),o&&(r[t.SUBTITLES]=o,t.SUBTITLES=o);const l=nc(e.uri,t["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",a),h=new Fn({attrs:t,audioCodec:e.audioCodec,bitrate:e.bitrate,height:e.height,name:e.name,url:l,videoCodec:e.videoCodec,width:e.width});if(e.audioGroups)for(let t=1;t{this.log(`Loaded steering manifest: "${r}"`);const n=e.data;if(1!==n.VERSION)return void this.log(`Steering VERSION ${n.VERSION} not supported!`);this.updated=performance.now(),this.timeToLoad=n.TTL;const{"RELOAD-URI":a,"PATHWAY-CLONES":o,"PATHWAY-PRIORITY":l}=n;if(a)try{this.uri=new self.URL(a,r).href}catch(e){return this.enabled=!1,void this.log(`Failed to parse Steering Manifest RELOAD-URI: ${a}`)}this.scheduleRefresh(this.uri||i.url),o&&this.clonePathways(o);const h={steeringManifest:n,url:r.toString()};this.hls.trigger(tr.STEERING_MANIFEST_LOADED,h),l&&this.updatePathwayPriority(l)},onError:(e,t,i,r)=>{if(this.log(`Error loading steering manifest: ${e.code} ${e.text} (${t.url})`),this.stopLoad(),410===e.code)return this.enabled=!1,void this.log(`Steering manifest ${t.url} no longer available`);let s=1e3*this.timeToLoad;if(429!==e.code)this.scheduleRefresh(this.uri||t.url,s);else{const e=this.loader;if("function"==typeof(null==e?void 0:e.getResponseHeader)){const t=e.getResponseHeader("Retry-After");t&&(s=1e3*parseFloat(t))}this.log(`Steering manifest ${t.url} rate limited`)}},onTimeout:(e,t,i)=>{this.log(`Timeout loading steering manifest (${t.url})`),this.scheduleRefresh(this.uri||t.url)}};this.log(`Requesting steering manifest: ${r}`),this.loader.load(s,o,l)}scheduleRefresh(e,t=1e3*this.timeToLoad){this.clearTimeout(),this.reloadTimer=self.setTimeout((()=>{var t;const i=null==(t=this.hls)?void 0:t.media;!i||i.ended?this.scheduleRefresh(e,1e3*this.timeToLoad):this.loadSteeringManifest(e)}),t)}}});function mc(e){return e&&"object"==typeof e?Array.isArray(e)?e.map(mc):Object.keys(e).reduce(((t,i)=>(t[i]=mc(e[i]),t)),{}):e}function pc(e){const t=e.loader;if(t!==hc&&t!==oc)lr.log("[config]: Custom loader detected, cannot enable progressive streaming"),e.progressive=!1;else{(function(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(e){}return!1})()&&(e.loader=hc,e.progressive=!0,e.enableSoftwareAES=!0,lr.log("[config]: Progressive streaming enabled, using FetchLoader"))}}let vc;class yc extends la{constructor(e,t){super(e,"[level-controller]"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=t,this._registerListeners()}_registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.on(tr.ERROR,this.onError,this)}_unregisterListeners(){const{hls:e}=this;e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.off(tr.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach((e=>{e.loadError=0,e.fragmentError=0})),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(e,t){this.resetLevels()}onManifestLoaded(e,t){const i=this.hls.config.preferManagedMediaSource,r=[],s={},n={};let a=!1,o=!1,l=!1;t.levels.forEach((e=>{var t,h;const c=e.attrs;let{audioCodec:d,videoCodec:u}=e;-1!==(null==(t=d)?void 0:t.indexOf("mp4a.40.34"))&&(vc||(vc=/chrome|firefox/i.test(navigator.userAgent)),vc&&(e.audioCodec=d=void 0)),d&&(e.audioCodec=d=Vs(d,i)),0===(null==(h=u)?void 0:h.indexOf("avc1"))&&(u=e.videoCodec=function(e){const t=e.split(".");if(t.length>2){let e=t.shift()+".";return e+=parseInt(t.shift()).toString(16),e+=("000"+parseInt(t.shift()).toString(16)).slice(-4),e}return e}(u));const{width:f,height:g,unknownCodecs:m}=e;if(a||(a=!(!f||!g)),o||(o=!!u),l||(l=!!d),null!=m&&m.length||d&&!Fs(d,"audio",i)||u&&!Fs(u,"video",i))return;const{CODECS:p,"FRAME-RATE":v,"HDCP-LEVEL":y,"PATHWAY-ID":T,RESOLUTION:E,"VIDEO-RANGE":S}=c,b=`${`${T||"."}-`}${e.bitrate}-${E}-${v}-${p}-${S}-${y}`;if(s[b])if(s[b].uri===e.url||e.attrs["PATHWAY-ID"])s[b].addGroupId("audio",c.AUDIO),s[b].addGroupId("text",c.SUBTITLES);else{const t=n[b]+=1;e.attrs["PATHWAY-ID"]=new Array(t+1).join(".");const i=new Fn(e);s[b]=i,r.push(i)}else{const t=new Fn(e);s[b]=t,n[b]=1,r.push(t)}})),this.filterAndSortMediaOptions(r,t,a,o,l)}filterAndSortMediaOptions(e,t,i,r,s){let n=[],a=[],o=e;if((i||r)&&s&&(o=o.filter((({videoCodec:e,videoRange:t,width:i,height:r})=>{return(!!e||!(!i||!r))&&(!!(s=t)&&xn.indexOf(s)>-1);var s}))),0===o.length)return void 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)}`);const e=new Error("no level with compatible codecs found in manifest");this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,error:e,reason:e.message})}}));if(t.audioTracks){const{preferManagedMediaSource:e}=this.hls.config;n=t.audioTracks.filter((t=>!t.audioCodec||Fs(t.audioCodec,"audio",e))),Tc(n)}t.subtitles&&(a=t.subtitles,Tc(a));const l=o.slice(0);o.sort(((e,t)=>{if(e.attrs["HDCP-LEVEL"]!==t.attrs["HDCP-LEVEL"])return(e.attrs["HDCP-LEVEL"]||"")>(t.attrs["HDCP-LEVEL"]||"")?1:-1;if(i&&e.height!==t.height)return e.height-t.height;if(e.frameRate!==t.frameRate)return e.frameRate-t.frameRate;if(e.videoRange!==t.videoRange)return xn.indexOf(e.videoRange)-xn.indexOf(t.videoRange);if(e.videoCodec!==t.videoCodec){const i=Bs(e.videoCodec),r=Bs(t.videoCodec);if(i!==r)return r-i}if(e.uri===t.uri&&e.codecSet!==t.codecSet){const i=$s(e.codecSet),r=$s(t.codecSet);if(i!==r)return r-i}return e.averageBitrate!==t.averageBitrate?e.averageBitrate-t.averageBitrate:0}));let h=l[0];if(this.steering&&(o=this.steering.filterParsedLevels(o),o.length!==l.length))for(let e=0;ei&&i===gc.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=e)}break}const d=s&&!r,u={levels:o,audioTracks:n,subtitleTracks:a,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:s,video:r,altAudio:!d&&n.some((e=>!!e.url))};this.hls.trigger(tr.MANIFEST_PARSED,u),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}get levels(){return 0===this._levels.length?null:this._levels}get level(){return this.currentLevelIndex}set level(e){const t=this._levels;if(0===t.length)return;if(e<0||e>=t.length){const i=new Error("invalid level idx"),r=e<0;if(this.hls.trigger(tr.ERROR,{type:ir.OTHER_ERROR,details:rr.LEVEL_SWITCH_ERROR,level:e,fatal:r,error:i,reason:i.message}),r)return;e=Math.min(e,t.length-1)}const i=this.currentLevelIndex,r=this.currentLevel,s=r?r.attrs["PATHWAY-ID"]:void 0,n=t[e],a=n.attrs["PATHWAY-ID"];if(this.currentLevelIndex=e,this.currentLevel=n,i===e&&n.details&&r&&s===a)return;this.log(`Switching to level ${e} (${n.height?n.height+"p ":""}${n.videoRange?n.videoRange+" ":""}${n.codecSet?n.codecSet+" ":""}@${n.bitrate})${a?" with Pathway "+a:""} from level ${i}${s?" with Pathway "+s:""}`);const o={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(tr.LEVEL_SWITCHING,o);const l=n.details;if(!l||l.live){const e=this.switchParams(n.uri,null==r?void 0:r.details,l);this.loadPlaylist(e)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(e){this.manualLevelIndex=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}get firstLevel(){return this._firstLevel}set firstLevel(e){this._firstLevel=e}get startLevel(){if(void 0===this._startLevel){const e=this.hls.config.startLevel;return void 0!==e?e:this.hls.firstAutoLevel}return this._startLevel}set startLevel(e){this._startLevel=e}onError(e,t){!t.fatal&&t.context&&t.context.type===an&&t.context.level===this.level&&this.checkRetry(t)}onFragBuffered(e,{frag:t}){if(void 0!==t&&t.type===hn){const e=t.elementaryStreams;if(!Object.keys(e).some((t=>!!e[t])))return;const i=this._levels[t.level];null!=i&&i.loadError&&(this.log(`Resetting level error count of ${i.loadError} on frag buffered`),i.loadError=0)}}onLevelLoaded(e,t){var i;const{level:r,details:s}=t,n=this._levels[r];var a;if(!n)return this.warn(`Invalid level index ${r}`),void(null!=(a=t.deliveryDirectives)&&a.skip&&(s.deltaUpdateFailed=!0));r===this.currentLevelIndex?(0===n.fragmentError&&(n.loadError=0),this.playlistLoaded(r,t,n.details)):null!=(i=t.deliveryDirectives)&&i.skip&&(s.deltaUpdateFailed=!0)}loadPlaylist(e){super.loadPlaylist();const t=this.currentLevelIndex,i=this.currentLevel;if(i&&this.shouldLoadPlaylist(i)){let r=i.uri;if(e)try{r=e.addDirectives(r)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}const s=i.attrs["PATHWAY-ID"];this.log(`Loading level index ${t}${void 0!==(null==e?void 0:e.msn)?" at sn "+e.msn+" part "+e.part:""} with${s?" Pathway "+s:""} ${r}`),this.clearTimer(),this.hls.trigger(tr.LEVEL_LOADING,{url:r,level:t,pathwayId:i.attrs["PATHWAY-ID"],id:0,deliveryDirectives:e||null})}}get nextLoadLevel(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(e){this.level=e,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=e)}removeLevel(e){var t;const i=this._levels.filter(((t,i)=>i!==e||(this.steering&&this.steering.removeLevel(t),t===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,t.details&&t.details.fragments.forEach((e=>e.level=-1))),!1)));jn(i),this._levels=i,this.currentLevelIndex>-1&&null!=(t=this.currentLevel)&&t.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.hls.trigger(tr.LEVELS_UPDATED,{levels:i})}onLevelsUpdated(e,{levels:t}){this._levels=t}checkMaxAutoUpdated(){const{autoLevelCapping:e,maxAutoLevel:t,maxHdcpLevel:i}=this.hls;this._maxAutoLevel!==t&&(this._maxAutoLevel=t,this.hls.trigger(tr.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:e,levels:this.levels,maxAutoLevel:t,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:i}))}}function Tc(e){const t={};e.forEach((e=>{const i=e.groupId||"";e.id=t[i]=t[i]||0,t[i]++}))}class Ec{constructor(e){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=e}abort(e){for(const i in this.keyUriToKeyInfo){const r=this.keyUriToKeyInfo[i].loader;if(r){var t;if(e&&e!==(null==(t=r.context)?void 0:t.frag.type))return;r.abort()}}}detach(){for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e];(t.mediaKeySessionContext||t.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[e]}}destroy(){this.detach();for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e].loader;t&&t.destroy()}this.keyUriToKeyInfo={}}createKeyLoadError(e,t=rr.KEY_LOAD_ERROR,i,r,s){return new Ga({type:ir.NETWORK_ERROR,details:t,fatal:!1,frag:e,response:s,error:i,networkDetails:r})}loadClear(e,t){if(this.emeController&&this.config.emeEnabled){const{sn:i,cc:r}=e;for(let e=0;e{s.setKeyFormat(e)}));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 i,r;t&&e.setKeyFormat(t);const s=e.decryptdata;if(!s){const i=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,rr.KEY_LOAD_ERROR,i))}const n=s.uri;if(!n)return Promise.reject(this.createKeyLoadError(e,rr.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${n}"`)));let a=this.keyUriToKeyInfo[n];if(null!=(i=a)&&i.decryptdata.key)return s.key=a.decryptdata.key,Promise.resolve({frag:e,keyInfo:a});var o;if(null!=(r=a)&&r.keyLoadPromise)switch(null==(o=a.mediaKeySessionContext)?void 0:o.keyStatus){case void 0:case"status-pending":case"usable":case"usable-in-future":return a.keyLoadPromise.then((t=>(s.key=t.keyInfo.decryptdata.key,{frag:e,keyInfo:a})))}switch(a=this.keyUriToKeyInfo[n]={decryptdata:s,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},s.method){case"ISO-23001-7":case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return"identity"===s.keyFormat?this.loadKeyHTTP(a,e):this.loadKeyEME(a,e);case"AES-128":return this.loadKeyHTTP(a,e);default:return Promise.reject(this.createKeyLoadError(e,rr.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${s.method}"`)))}}loadKeyEME(e,t){const i={frag:t,keyInfo:e};if(this.emeController&&this.config.emeEnabled){const t=this.emeController.loadKey(i);if(t)return(e.keyLoadPromise=t.then((t=>(e.mediaKeySessionContext=t,i)))).catch((t=>{throw e.keyLoadPromise=null,t}))}return Promise.resolve(i)}loadKeyHTTP(e,t){const i=this.config,r=new(0,i.loader)(i);return t.keyLoader=e.loader=r,e.keyLoadPromise=new Promise(((s,n)=>{const a={keyInfo:e,frag:t,responseType:"arraybuffer",url:e.decryptdata.uri},o=i.keyLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(e,t,i,r)=>{const{frag:a,keyInfo:o,url:l}=i;if(!a.decryptdata||o!==this.keyUriToKeyInfo[l])return n(this.createKeyLoadError(a,rr.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),r));o.decryptdata.key=a.decryptdata.key=new Uint8Array(e.data),a.keyLoader=null,o.loader=null,s({frag:a,keyInfo:o})},onError:(e,i,r,s)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.KEY_LOAD_ERROR,new Error(`HTTP Error ${e.code} loading key ${e.text}`),r,qi({url:a.url,data:void 0},e)))},onTimeout:(e,i,r)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),r))},onAbort:(e,i,r)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.INTERNAL_ABORTED,new Error("key loading aborted"),r))}};r.load(a,l,h)}))}resetLoader(e){const{frag:t,keyInfo:i,url:r}=e,s=i.loader;t.keyLoader===s&&(t.keyLoader=null,i.loader=null),delete this.keyUriToKeyInfo[r],s&&s.destroy()}}function Sc(){return self.SourceBuffer||self.WebKitSourceBuffer}function bc(){if(!Os())return!1;const e=Sc();return!e||e.prototype&&"function"==typeof e.prototype.appendBuffer&&"function"==typeof e.prototype.remove}class Lc{constructor(e,t,i,r){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=i,this.hls=r}destroy(){this.media=null,this.hls=this.fragmentTracker=null}poll(e,t){const{config:i,media:r,stalled:s}=this;if(null===r)return;const{currentTime:n,seeking:a}=r,o=this.seeking&&!a,l=!this.seeking&&a;if(this.seeking=a,n!==e){if(this.moved=!0,a||(this.nudgeRetry=0),null!==s){if(this.stallReported){const e=self.performance.now()-s;lr.warn(`playback not stuck anymore @${n}, after ${Math.round(e)}ms`),this.stallReported=!1}this.stalled=null}return}if(l||o)return void(this.stalled=null);if(r.paused&&!a||r.ended||0===r.playbackRate||!xa.getBuffered(r).length)return void(this.nudgeRetry=0);const h=xa.bufferInfo(r,n,0),c=h.nextStart||0;if(a){const e=h.len>2,i=!c||t&&t.start<=n||c-n>2&&!this.fragmentTracker.getPartialFragment(n);if(e||i)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var d;if(!(h.len>0)&&!c)return;const e=Math.max(c,h.start||0)-n,t=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,i=(null==t||null==(d=t.details)?void 0:d.live)?2*t.details.targetduration:2,s=this.fragmentTracker.getPartialFragment(n);if(e>0&&(e<=i||s))return void(r.paused||this._trySkipBufferHole(s))}const u=self.performance.now();if(null===s)return void(this.stalled=u);const f=u-s;if(!a&&f>=250&&(this._reportStall(h),!this.media))return;const g=xa.bufferInfo(r,n,i.maxBufferHole);this._tryFixBufferStall(g,f)}_tryFixBufferStall(e,t){const{config:i,fragmentTracker:r,media:s}=this;if(null===s)return;const n=s.currentTime,a=r.getPartialFragment(n);if(a){if(this._trySkipBufferHole(a)||!this.media)return}(e.len>i.maxBufferHole||e.nextStart&&e.nextStart-n1e3*i.highBufferWatchdogPeriod&&(lr.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}_reportStall(e){const{hls:t,media:i,stallReported:r}=this;if(!r&&i){this.stallReported=!0;const r=new Error(`Playback stalling at @${i.currentTime} due to low buffer (${JSON.stringify(e)})`);lr.warn(r.message),t.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_STALLED_ERROR,fatal:!1,error:r,buffer:e.len})}}_trySkipBufferHole(e){const{config:t,hls:i,media:r}=this;if(null===r)return 0;const s=r.currentTime,n=xa.bufferInfo(r,s,0),a=s0&&n.len<1&&r.readyState<3,h=a-s;if(h>0&&(o||l)){if(h>t.maxBufferHole){const{fragmentTracker:t}=this;let i=!1;if(0===s){const e=t.getAppendedFrag(0,hn);e&&a1?(e=0,this.bitrateTest=!0):e=i.firstAutoLevel),i.nextLoadLevel=e,this.level=i.loadLevel,this.loadedmetadata=!1}t>0&&-1===e&&(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t),this.state=qa,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=Ya}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case so:{const{levels:e,level:t}=this,i=null==e?void 0:e[t],r=null==i?void 0:i.details;if(r&&(!r.live||this.levelLastLoaded===i)){if(this.waitForCdnTuneIn(r))break;this.state=qa;break}if(this.hls.nextLoadLevel!==this.level){this.state=qa;break}break}case Qa:{var e;const t=self.performance.now(),i=this.retryDate;if(!i||t>=i||null!=(e=this.media)&&e.seeking){const{levels:e,level:t}=this,i=null==e?void 0:e[t];this.resetStartWhenNotLoaded(i||null),this.state=qa}}}this.state===qa&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){super.onTickEnd(),this.checkBuffer(),this.checkFragmentChanged()}doTickIdle(){const{hls:e,levelLastLoaded:t,levels:i,media:r}=this;if(null===t||!r&&(this.startFragRequested||!e.config.startFragPrefetch))return;if(this.altAudio&&this.audioOnly)return;const s=e.nextLoadLevel;if(null==i||!i[s])return;const n=i[s],a=this.getMainFwdBufferInfo();if(null===a)return;const o=this.getLevelDetails();if(o&&this._streamEnded(a,o)){const e={};return this.altAudio&&(e.type="video"),this.hls.trigger(tr.BUFFER_EOS,e),void(this.state=to)}e.loadLevel!==s&&-1===e.manualLevel&&this.log(`Adapting to level ${s} from level ${this.level}`),this.level=e.nextLoadLevel=s;const l=n.details;if(!l||this.state===so||l.live&&this.levelLastLoaded!==n)return this.level=s,void(this.state=so);const h=a.len,c=this.getMaxBufferLength(n.maxBitrate);if(h>=c)return;this.backtrackFragment&&this.backtrackFragment.start>a.end&&(this.backtrackFragment=null);const d=this.backtrackFragment?this.backtrackFragment.start:a.end;let u=this.getNextFragment(d,l);if(this.couldBacktrack&&!this.fragPrevious&&u&&"initSegment"!==u.sn&&this.fragmentTracker.getState(u)!==Aa){var f;const e=(null!=(f=this.backtrackFragment)?f:u).sn-l.startSN,t=l.fragments[e-1];t&&u.cc===t.cc&&(u=t,this.fragmentTracker.removeFragment(t))}else this.backtrackFragment&&a.len&&(this.backtrackFragment=null);if(u&&this.isLoopLoading(u,d)){if(!u.gap){const e=this.audioOnly&&!this.altAudio?mr:pr,t=(e===pr?this.videoBuffer:this.mediaBuffer)||this.media;t&&this.afterBufferFlushed(t,e,hn)}u=this.getNextFragmentLoopLoading(u,l,a,hn,c)}u&&(!u.initSegment||u.initSegment.data||this.bitrateTest||(u=u.initSegment),this.loadFragment(u,n,d))}loadFragment(e,t,i){const r=this.fragmentTracker.getState(e);this.fragCurrent=e,r===ba||r===wa?"initSegment"===e.sn?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,i)):this.clearTrackerIfNeeded(e)}getBufferedFrag(e){return this.fragmentTracker.getBufferedFrag(e,hn)}followingBufferedFrag(e){return e?this.getBufferedFrag(e.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:e,media:t}=this;if(null!=t&&t.readyState){let i;const r=this.getAppendedFrag(t.currentTime);r&&r.start>1&&this.flushMainBuffer(0,r.start-1);const s=this.getLevelDetails();if(null!=s&&s.live){const e=this.getMainFwdBufferInfo();if(!e||e.len<2*s.targetduration)return}if(!t.paused&&e){const t=e[this.hls.nextLoadLevel],r=this.fragLastKbps;i=r&&this.fragCurrent?this.fragCurrent.duration*t.maxBitrate/(1e3*r)+1:0}else i=0;const n=this.getBufferedFrag(t.currentTime+i);if(n){const e=this.followingBufferedFrag(n);if(e){this.abortCurrentFrag();const t=e.maxStartPTS?e.maxStartPTS:e.start,i=e.duration,r=Math.max(n.end,t+Math.min(Math.max(i-this.config.maxFragLookUpTolerance,i*(this.couldBacktrack?.5:.125)),i*(this.couldBacktrack?.75:.25)));this.flushMainBuffer(r,Number.POSITIVE_INFINITY)}}}}abortCurrentFrag(){const e=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,e&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.state){case za:case Xa:case Qa:case Za:case eo:this.state=qa}this.nextLoadPosition=this.getLoadPosition()}flushMainBuffer(e,t){super.flushMainBuffer(e,t,this.altAudio?"video":null)}onMediaAttached(e,t){super.onMediaAttached(e,t);const i=t.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),i.addEventListener("playing",this.onvplaying),i.addEventListener("seeked",this.onvseeked),this.gapController=new Lc(this.config,i,this.fragmentTracker,this.hls)}onMediaDetaching(){const{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(){const e=this.media,t=e?e.currentTime:null;Ji(t)&&this.log(`Media seeked to ${t.toFixed(3)}`);const i=this.getMainFwdBufferInfo();null!==i&&0!==i.len?this.tick():this.warn(`Main forward buffer length on "seeked" event ${i?i.len:"empty"})`)}onManifestLoading(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(tr.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 i=!1,r=!1;t.levels.forEach((e=>{const t=e.audioCodec;t&&(i=i||-1!==t.indexOf("mp4a.40.2"),r=r||-1!==t.indexOf("mp4a.40.5"))})),this.audioCodecSwitch=i&&r&&!function(){var e;const t=Sc();return"function"==typeof(null==t||null==(e=t.prototype)?void 0:e.changeType)}(),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){const{levels:i}=this;if(!i||this.state!==qa)return;const r=i[t.level];(!r.details||r.details.live&&this.levelLastLoaded!==r||this.waitForCdnTuneIn(r.details))&&(this.state=so)}onLevelLoaded(e,t){var i;const{levels:r}=this,s=t.level,n=t.details,a=n.totalduration;if(!r)return void this.warn(`Levels were reset while loading level ${s}`);this.log(`Level ${s} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""}, cc [${n.startCC}, ${n.endCC}] duration:${a}`);const o=r[s],l=this.fragCurrent;!l||this.state!==Xa&&this.state!==Qa||l.level!==t.level&&l.loader&&this.abortCurrentFrag();let h=0;if(n.live||null!=(i=o.details)&&i.live){var c;if(this.checkLiveUpdate(n),n.deltaUpdateFailed)return;h=this.alignPlaylists(n,o.details,null==(c=this.levelLastLoaded)?void 0:c.details)}if(o.details=n,this.levelLastLoaded=o,this.hls.trigger(tr.LEVEL_UPDATED,{details:n,level:s}),this.state===so){if(this.waitForCdnTuneIn(n))return;this.state=qa}this.startFragRequested?n.live&&this.synchronizeToLiveEdge(n):this.setStartPosition(n,h),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:r,payload:s}=e,{levels:n}=this;if(!n)return void this.warn(`Levels were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const a=n[i.level],o=a.details;if(!o)return this.warn(`Dropping fragment ${i.sn} of level ${i.level} after level details were reset`),void this.fragmentTracker.removeFragment(i);const l=a.videoCodec,h=o.PTSKnown||!o.live,c=null==(t=i.initSegment)?void 0:t.data,d=this._getAudioCodec(a),u=this.transmuxer=this.transmuxer||new gl(this.hls,hn,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),f=r?r.index:-1,g=-1!==f,m=new Ca(i.level,i.sn,i.stats.chunkCount,s.byteLength,f,g),p=this.initPTS[i.cc];u.push(s,c,d,l,i,r,o.totalduration,h,m,p)}onAudioTrackSwitching(e,t){const i=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;const e=this.fragCurrent;e&&(this.log("Switching to main audio track, cancel main fragment load"),e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();const e=this.hls;i&&(e.trigger(tr.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),e.trigger(tr.AUDIO_TRACK_SWITCHED,t)}}onAudioTrackSwitched(e,t){const i=t.id,r=!!this.hls.audioTracks[i].url;if(r){const e=this.videoBuffer;e&&this.mediaBuffer!==e&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=e)}this.altAudio=r,this.tick()}onBufferCreated(e,t){const i=t.tracks;let r,s,n=!1;for(const e in i){const t=i[e];if("main"===t.id){if(s=e,r=t,"video"===e){const t=i[e];t&&(this.videoBuffer=t.buffer)}}else n=!0}n&&r?(this.log(`Alternate track found, use ${s}.buffered to schedule main fragment loading`),this.mediaBuffer=r.buffer):this.mediaBuffer=this.media}onFragBuffered(e,t){const{frag:i,part:r}=t;if(i&&i.type!==hn)return;if(this.fragContextChanged(i))return this.warn(`Fragment ${i.sn}${r?" p: "+r.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}`),void(this.state===eo&&(this.state=qa));const s=r?r.stats:i.stats;this.fragLastKbps=Math.round(8*s.total/(s.buffering.end-s.loading.first)),"initSegment"!==i.sn&&(this.fragPrevious=i),this.fragBufferedComplete(i,r)}onError(e,t){var i;if(t.fatal)this.state=io;else switch(t.details){case rr.FRAG_GAP:case rr.FRAG_PARSING_ERROR:case rr.FRAG_DECRYPT_ERROR:case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(hn,t);break;case rr.LEVEL_LOAD_ERROR:case rr.LEVEL_LOAD_TIMEOUT:case rr.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==so||(null==(i=t.context)?void 0:i.type)!==an||(this.state=qa);break;case rr.BUFFER_APPEND_ERROR:case rr.BUFFER_FULL_ERROR:if(!t.parent||"main"!==t.parent)return;if(t.details===rr.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case rr.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}checkBuffer(){const{media:e,gapController:t}=this;if(e&&t&&e.readyState){if(this.loadedmetadata||!xa.getBuffered(e).length){const e=this.state!==qa?this.fragCurrent:null;t.poll(this.lastCurrentTime,e)}this.lastCurrentTime=e.currentTime}}onFragLoadEmergencyAborted(){this.state=qa,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()}onBufferFlushed(e,{type:t}){if(t!==mr||this.audioOnly&&!this.altAudio){const e=(t===pr?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(e,t,hn),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(){const{media:e}=this;if(!e)return;const t=e.currentTime;let i=this.startPosition;if(i>=0&&t0&&(s{const{hls:r}=this;if(!i||this.fragContextChanged(e))return;t.fragmentError=0,this.state=qa,this.startFragRequested=!1,this.bitrateTest=!1;const s=e.stats;s.parsing.start=s.parsing.end=s.buffering.start=s.buffering.end=self.performance.now(),r.trigger(tr.FRAG_LOADED,i),e.bitrateTest=!1}))}_handleTransmuxComplete(e){var t;const i="main",{hls:r}=this,{remuxResult:s,chunkMeta:n}=e,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{video:c,text:d,id3:u,initSegment:f}=s,{details:g}=h,m=this.altAudio?void 0:s.audio;if(this.fragContextChanged(o))this.fragmentTracker.removeFragment(o);else{if(this.state=Za,f){if(null!=f&&f.tracks){const e=o.initSegment||o;this._bufferInitSegment(h,f.tracks,e,n),r.trigger(tr.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:f.tracks})}const e=f.initPTS,t=f.timescale;Ji(e)&&(this.initPTS[o.cc]={baseTime:e,timescale:t},r.trigger(tr.INIT_PTS_FOUND,{frag:o,id:i,initPTS:e,timescale:t}))}if(c&&g&&"initSegment"!==o.sn){const e=g.fragments[o.sn-1-g.startSN],t=o.sn===g.startSN,i=!e||o.cc>e.cc;if(!1!==s.independent){const{startPTS:e,endPTS:r,startDTS:s,endDTS:a}=c;if(l)l.elementaryStreams[c.type]={startPTS:e,endPTS:r,startDTS:s,endDTS:a};else if(c.firstKeyFrame&&c.independent&&1===n.id&&!i&&(this.couldBacktrack=!0),c.dropped&&c.independent){const s=this.getMainFwdBufferInfo(),n=(s?s.end:this.getLoadPosition())+this.config.maxBufferHole,l=c.firstKeyFramePTS?c.firstKeyFramePTS:e;if(!t&&n2&&(o.gap=!0);o.setElementaryStreamInfo(c.type,e,r,s,a),this.backtrackFragment&&(this.backtrackFragment=o),this.bufferFragmentData(c,o,l,n,t||i)}else{if(!t&&!i)return void this.backtrack(o);o.gap=!0}}if(m){const{startPTS:e,endPTS:t,startDTS:i,endDTS:r}=m;l&&(l.elementaryStreams[mr]={startPTS:e,endPTS:t,startDTS:i,endDTS:r}),o.setElementaryStreamInfo(mr,e,t,i,r),this.bufferFragmentData(m,o,l,n)}if(g&&null!=u&&null!=(t=u.samples)&&t.length){const e={id:i,frag:o,details:g,samples:u.samples};r.trigger(tr.FRAG_PARSING_METADATA,e)}if(g&&d){const e={id:i,frag:o,details:g,samples:d.samples};r.trigger(tr.FRAG_PARSING_USERDATA,e)}}}_bufferInitSegment(e,t,i,r){if(this.state!==Za)return;this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&delete t.audio;const{audio:s,video:n,audiovideo:a}=t;if(s){let t=e.audioCodec;const i=navigator.userAgent.toLowerCase();if(this.audioCodecSwitch){t&&(t=-1!==t.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5");const e=s.metadata;e&&"channelCount"in e&&1!==(e.channelCount||1)&&-1===i.indexOf("firefox")&&(t="mp4a.40.5")}t&&-1!==t.indexOf("mp4a.40.5")&&-1!==i.indexOf("android")&&"audio/mpeg"!==s.container&&(t="mp4a.40.2",this.log(`Android: force audio codec to ${t}`)),e.audioCodec&&e.audioCodec!==t&&this.log(`Swapping manifest audio codec "${e.audioCodec}" for "${t}"`),s.levelCodec=t,s.id="main",this.log(`Init audio buffer, container:${s.container}, codecs[selected/level/parsed]=[${t||""}/${e.audioCodec||""}/${s.codec}]`)}n&&(n.levelCodec=e.videoCodec,n.id="main",this.log(`Init video buffer, container:${n.container}, codecs[level/parsed]=[${e.videoCodec||""}/${n.codec}]`)),a&&this.log(`Init audiovideo buffer, container:${a.container}, codecs[level/parsed]=[${e.codecs}/${a.codec}]`),this.hls.trigger(tr.BUFFER_CODECS,t),Object.keys(t).forEach((e=>{const s=t[e].initSegment;null!=s&&s.byteLength&&this.hls.trigger(tr.BUFFER_APPENDING,{type:e,data:s,frag:i,part:null,chunkMeta:r,parent:i.type})})),this.tickImmediate()}getMainFwdBufferInfo(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,hn)}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=qa}checkFragmentChanged(){const e=this.media;let t=null;if(e&&e.readyState>1&&!1===e.seeking){const i=e.currentTime;if(xa.isBuffered(e,i)?t=this.getAppendedFrag(i):xa.isBuffered(e,i+.1)&&(t=this.getAppendedFrag(i+.1)),t){this.backtrackFragment=null;const e=this.fragPlaying,i=t.level;e&&t.sn===e.sn&&e.level===i||(this.fragPlaying=t,this.hls.trigger(tr.FRAG_CHANGED,{frag:t}),e&&e.level===i||this.hls.trigger(tr.LEVEL_SWITCHED,{level:i}))}}}get nextLevel(){const e=this.nextBufferedFrag;return e?e.level:-1}get currentFrag(){const e=this.media;return e?this.fragPlaying||this.getAppendedFrag(e.currentTime):null}get currentProgramDateTime(){const e=this.media;if(e){const t=e.currentTime,i=this.currentFrag;if(i&&Ji(t)&&Ji(i.programDateTime)){const e=i.programDateTime+1e3*(t-i.start);return new Date(e)}}return null}get currentLevel(){const e=this.currentFrag;return e?e.level:-1}get nextBufferedFrag(){const e=this.currentFrag;return e?this.followingBufferedFrag(e):null}get forceStartLoad(){return this._forceStartLoad}}class Ac{static get version(){return"1.5.11"}static isMSESupported(){return bc()}static isSupported(){return function(){if(!bc())return!1;const e=Os();return"function"==typeof(null==e?void 0:e.isTypeSupported)&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some((t=>e.isTypeSupported(Us(t,"video"))))||["mp4a.40.2","fLaC"].some((t=>e.isTypeSupported(Us(t,"audio")))))}()}static getMediaSource(){return Os()}static get Events(){return tr}static get ErrorTypes(){return ir}static get ErrorDetails(){return rr}static get DefaultConfig(){return Ac.defaultConfig?Ac.defaultConfig:gc}static set DefaultConfig(e){Ac.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 fl,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,function(e,t){if("object"==typeof console&&!0===e||"object"==typeof e){or(e,"debug","log","info","warn","error");try{ar.log(`Debug logs enabled for "${t}" in hls.js version 1.5.11`)}catch(e){ar=nr}}else ar=nr}(e.debug||!1,"Hls instance");const t=this.config=function(e,t){if((t.liveSyncDurationCount||t.liveMaxLatencyDurationCount)&&(t.liveSyncDuration||t.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==t.liveMaxLatencyDurationCount&&(void 0===t.liveSyncDurationCount||t.liveMaxLatencyDurationCount<=t.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==t.liveMaxLatencyDuration&&(void 0===t.liveSyncDuration||t.liveMaxLatencyDuration<=t.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');const i=mc(e),r=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach((e=>{const s=`${"level"===e?"playlist":e}LoadPolicy`,n=void 0===t[s],a=[];r.forEach((r=>{const o=`${e}Loading${r}`,l=t[o];if(void 0!==l&&n){a.push(o);const e=i[s].default;switch(t[s]={default:e},r){case"TimeOut":e.maxLoadTimeMs=l,e.maxTimeToFirstByteMs=l;break;case"MaxRetry":e.errorRetry.maxNumRetry=l,e.timeoutRetry.maxNumRetry=l;break;case"RetryDelay":e.errorRetry.retryDelayMs=l,e.timeoutRetry.retryDelayMs=l;break;case"MaxRetryTimeout":e.errorRetry.maxRetryDelayMs=l,e.timeoutRetry.maxRetryDelayMs=l}}})),a.length&&lr.warn(`hls.js config: "${a.join('", "')}" setting(s) are deprecated, use "${s}": ${JSON.stringify(t[s])}`)})),qi(qi({},i),t)}(Ac.DefaultConfig,e);this.userConfig=e,t.progressive&&pc(t);const{abrController:i,bufferController:r,capLevelController:s,errorController:n,fpsController:a}=t,o=new n(this),l=this.abrController=new i(this),h=this.bufferController=new r(this),c=this.capLevelController=new s(this),d=new a(this),u=new gn(this),f=new kn(this),g=t.contentSteeringController,m=g?new g(this):null,p=this.levelController=new yc(this,m),v=new Ra(this),y=new Ec(this.config),T=this.streamController=new wc(this,v,y);c.setStreamController(T),d.setStreamController(T);const E=[u,p,T];m&&E.splice(1,0,m),this.networkControllers=E;const S=[l,h,c,d,f,v];this.audioTrackController=this.createController(t.audioTrackController,E);const b=t.audioStreamController;b&&E.push(new b(this,v,y)),this.subtitleTrackController=this.createController(t.subtitleTrackController,E);const L=t.subtitleStreamController;L&&E.push(new L(this,v,y)),this.createController(t.timelineController,S),y.emeController=this.emeController=this.createController(t.emeController,S),this.cmcdController=this.createController(t.cmcdController,S),this.latencyController=this.createController(_n,S),this.coreComponents=S,E.push(o);const w=o.onErrorOut;"function"==typeof w&&this.on(tr.ERROR,w,o)}createController(e,t){if(e){const i=new e(this);return t&&t.push(i),i}return null}on(e,t,i=this){this._emitter.on(e,t,i)}once(e,t,i=this){this._emitter.once(e,t,i)}removeAllListeners(e){this._emitter.removeAllListeners(e)}off(e,t,i=this,r){this._emitter.off(e,t,i,r)}listeners(e){return this._emitter.listeners(e)}emit(e,t,i){return this._emitter.emit(e,t,i)}trigger(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(t){if(lr.error("An internal error happened while handling event "+e+'. Error message: "'+t.message+'". Here is a stacktrace:',t),!this.triggeringException){this.triggeringException=!0;const i=e===tr.ERROR;this.trigger(tr.ERROR,{type:ir.OTHER_ERROR,details:rr.INTERNAL_EXCEPTION,fatal:i,event:e,error:t}),this.triggeringException=!1}}return!1}listenerCount(e){return this._emitter.listenerCount(e)}destroy(){lr.log("destroy"),this.trigger(tr.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((e=>e.destroy())),this.networkControllers.length=0,this.coreComponents.forEach((e=>e.destroy())),this.coreComponents.length=0;const e=this.config;e.xhrSetup=e.fetchSetup=void 0,this.userConfig=null}attachMedia(e){lr.log("attachMedia"),this._media=e,this.trigger(tr.MEDIA_ATTACHING,{media:e})}detachMedia(){lr.log("detachMedia"),this.trigger(tr.MEDIA_DETACHING,void 0),this._media=null}loadSource(e){this.stopLoad();const t=this.media,i=this.url,r=this.url=Wi.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,lr.log(`loadSource:${r}`),t&&i&&(i!==r||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(t)),this.trigger(tr.MANIFEST_LOADING,{url:e})}startLoad(e=-1){lr.log(`startLoad(${e})`),this.started=!0,this.networkControllers.forEach((t=>{t.startLoad(e)}))}stopLoad(){lr.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(){lr.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){lr.log("recoverMediaError");const e=this._media;this.detachMedia(),e&&this.attachMedia(e)}removeLevel(e){this.levelController.removeLevel(e)}get levels(){const e=this.levelController.levels;return e||[]}get currentLevel(){return this.streamController.currentLevel}set currentLevel(e){lr.log(`set currentLevel:${e}`),this.levelController.manualLevel=e,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(e){lr.log(`set nextLevel:${e}`),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(e){lr.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){lr.log(`set firstLevel:${e}`),this.levelController.firstLevel=e}get startLevel(){const e=this.levelController.startLevel;return-1===e&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:e}set startLevel(e){lr.log(`set startLevel:${e}`),-1!==e&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(e){const t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimate():NaN}set bandwidthEstimate(e){this.abrController.resetEstimator(e)}get ttfbEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimateTTFB():NaN}set autoLevelCapping(e){this._autoLevelCapping!==e&&(lr.log(`set autoLevelCapping:${e}`),this._autoLevelCapping=e,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(e){(function(e){return Dn.indexOf(e)>-1})(e)&&this._maxHdcpLevel!==e&&(this._maxHdcpLevel=e,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return-1===this.levelController.manualLevel}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:e,config:{minAutoBitrate:t}}=this;if(!e)return 0;const i=e.length;for(let r=0;r=t)return r;return 0}get maxAutoLevel(){const{levels:e,autoLevelCapping:t,maxHdcpLevel:i}=this;let r;if(r=-1===t&&null!=e&&e.length?e.length-1:t,i)for(let t=r;t--;){const r=e[t].attrs["HDCP-LEVEL"];if(r&&r<=i)return t}return r}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 null==(t=this.audioTrackController)?void 0:t.setAudioOption(e)}setSubtitleOption(e){var t;return null==(t=this.subtitleTrackController)||t.setSubtitleOption(e),null}get allAudioTracks(){const e=this.audioTrackController;return e?e.allAudioTracks:[]}get audioTracks(){const e=this.audioTrackController;return e?e.audioTracks:[]}get audioTrack(){const e=this.audioTrackController;return e?e.audioTrack:-1}set audioTrack(e){const t=this.audioTrackController;t&&(t.audioTrack=e)}get allSubtitleTracks(){const e=this.subtitleTrackController;return e?e.allSubtitleTracks:[]}get subtitleTracks(){const e=this.subtitleTrackController;return e?e.subtitleTracks:[]}get subtitleTrack(){const e=this.subtitleTrackController;return e?e.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(e){const t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}get subtitleDisplay(){const e=this.subtitleTrackController;return!!e&&e.subtitleDisplay}set subtitleDisplay(e){const t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(e){this.config.lowLatencyMode=e}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}}function Rc(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e.$video.volume=e._options.volume)}),1e3)})),e.event.emit("parsed")}))}))}else if(this.$video.canPlayType("application/vnd.apple.mpegurl")){this.logger.log("Browser support application/vnd.apple.mpegurl : ",this.$video.canPlayType("application/vnd.apple.mpegurl")),this.$video.src=this._options.url;var i=!1;this.$video.addEventListener("canplay",(function(){!i&&e._options.autoPlay&&setTimeout((function(){e.$video.play().then((function(){e.logger.log("autoPlay video!"),setTimeout((function(){e._options.volume>0&&e.setVolume(e._options.volume)}),1e3),i=!0}))}),200)}))}else this.logger.warn("Browser not support hls")},i.isPlayingState=function(){return!this.$video.paused},i.play=function(){if(this.isPlayingState())return Promise.resolve();if(this._options.isLive&&(this.$video.buffered.length>=1&&this.$video.buffered.end(0)>1)){var e=this.$video.buffered.end(0)-1;this.$video.currentTime=e}return this.$video.play()},i.pause=function(){this.$video.pause()},i.setVolume=function(e){this.$video.muted&&(this.$video.muted=!1),this._volume=+(e||0),0===this._volume&&(this.$video.muted=!0),this.$video.volume=this._volume},i.destroy=function(){this.$video&&this.$video.pause(),this._hls&&(this._hls.destroy(),this._hls=null),e.prototype.destroy.call(this)},i._onEvent=function(){var e;(e=this).$video&&(e.$video.addEventListener("canplay",(function(){e.event.emit("canplay")})),e.$video.addEventListener("loadeddata",(function(){e.event.emit("loadeddata")})),e.$video.addEventListener("volumechange",(function(){e.event.emit("volumechange",{data:e.$video.volume})})),e.$video.addEventListener("waiting",(function(){e.event.emit("waiting")})),e.$video.addEventListener("timeupdate",(function(){var t;null==(t=e.event)||t.emit("timeupdate")})),e.$video.addEventListener("seeking",(function(){e.event.emit("seeking",{data:e.$video.currentTime})})),e.$video.addEventListener("seeked",(function(){e.event.emit("seeked")})),e.$video.addEventListener("abort",(function(){e.event.emit("abort")})),e.$video.addEventListener("error",(function(){var t;null==(t=e.event)||t.emit("error",{data:e.$video.error})})),e.$video.addEventListener("ended",(function(){e.event.emit("ended")})))},Rc(t,[{key:"volume",get:function(){return this._volume},set:function(e){this.setVolume(e)}}]),t}(Ri);var xc="wasm_loaded",Cc="wasm_failed",Ic="init";function Pc(e,t){return Pc=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Pc(e,t)}var Oc=function(e){function t(t){var i;return void 0===t&&(t={}),i=e.call(this,t)||this,t.url=function(e,t){void 0===t&&(t=["h264"]);var i=(t||["h264"]).reduce((function(e,t){return t=t.toLowerCase(),e+(Xt[t]||0)}),0),r=e.split("?")[0],s=e.split("?")[1];return s=(s||"").split("&").filter((function(e){return!/^vc=\d?/.test(e)})).join("&"),r+"?"+s+(s?"&":"")+"vc="+i}(null==t?void 0:t.url,["h264","h265"]),function(e,t){if(((null==t?void 0:t.volume)||0)>1?e._volume=1:((null==t?void 0:t.volume)||0)<=0?e._volume=0:e._volume=+((null==t?void 0:t.volume)||0),t.volume=e._volume,e.options=zt({},wi,t),"string"!=typeof e.options.id)throw new Error("id is required!");e.logger=z(e.options.loggerOptions),e.event=new ei,e.logger.log("HlsPlayer version: ",Uc.version),e.logger.log("HlsPlayer options: ",e.options),e.options.logger=e.logger}(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(i),t),i._containerClassName=Li+"-container",i._render(),i}!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Pc(e,t)}(t,e);var i=t.prototype;return i._render=function(){this.$container.classList.add(this._containerClassName)},i.destroy=function(){this.$container&&(this.$container.classList.remove(this._containerClassName),this.$container.innerHTML="",this.$container=null)},t}(Si);function Mc(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e=!0),this.playParam={durationMs:0,fps:0,sampleRate:0,size:{width:0,height:0},audioNone:e,videoCodec:T},!A())throw new Error("Browser not support WebAssembly!");this._onWorkerMessage()},i.play=function(){if(Ui.send(1,{name:"play"}),null===this.player)return Promise.resolve();if(this.playParam.videoCodec===T){var e={seekPos:0,isLive:this.options.isLive,accurateSeek:!0,seekEvent:!1,realPlay:!0};return this.player.play(e)}return this.player.play()},i.pause=function(){return Ui.send(1,{name:"pause"}),null!==this.player&&(this.player.pause(),!0)},i.destroy=function(){var t,i;return Ui.send(1,{name:"destroy"}),void 0!==this.player&&null!==this.player&&(this.playParam.videoCodec===T&&this._m3u8Obj&&(this._m3u8Obj.destroy(),this._m3u8Obj=null),this.player.destroy(),this._decoderWorker&&(this._decoderWorker.postMessage(P(B)),this._decoderWorker.terminate(),this._decoderWorker=null),this.logger.log("destroy"),null==(i=this.event)||null==(t=i.emit)||t.call(i,"destroy"),this.player=null,e.prototype.destroy.call(this),!0)},i.isPlaying=function(){return null!==this.player&&this.player.isPlayingState()},i.setVolume=function(e){var t;(e=+e)>1||e<0?this.logger.warn("volume volume value 0.0 ~ 1.0!"):((t=this).player||(t.event.emit("playerIsNull"),t.logger.warn("Player instance does not exist!"),0))&&(this.player.setVolume(e),this.event.emit("volumeChange",{data:e}))},i.getVersion=function(){return Ui.send(1,{name:"getVersion"}),"0.1.0-beta.2"},i._m3u8Entry=function(){var e=this;this._m3u8Obj=new Vi({logger:this.logger,decoderWorker:this._decoderWorker,event:this.event}),this._m3u8Obj.bindReady(this),this._m3u8Obj.onFinished=function(e,t){},this._m3u8Obj.onCacheProcess=function(t){e.options.isLive||null==e.onCacheProcess||e.onCacheProcess.call(e,t)},this._m3u8Obj.onDemuxed=this._checkPlayer.bind(this),this._m3u8Obj.onSamples=this._hlsOnSamples.bind(this),this._m3u8Obj.demux(this.url)},i._checkPlayer=function(e,t){var i=this;if(null==i.player){var r,s,n;if(!(null==i||null==(r=i._m3u8Obj)?void 0:r.isHevcParam)||t)return null==i||null==(n=i._m3u8Obj)||null==(s=n.destroy)||s.call(n),i._m3u8Obj=null,this._decoderWorker.terminate(),this._decoderWorker=null,void(i.player=new Dc(Fc({},this.options,{event:this.event,logger:this.logger})));var a=i._m3u8Obj.getACodec(),o=i._m3u8Obj.getFPS(),l=i._m3u8Obj.getSampleRate(),h=i._m3u8Obj.getSize(),c=!1;c=i._m3u8Obj.getSampleChannel()<=0||""===a,i._softPlayer(0,o,l,h,c)}},i._hlsOnSamples=function(e,t){var i,r,s,n=this;if(t.video)null==(s=n.player)||null==(r=s.appendHevcFrame)||r.call(s,t);else if(!(null==(i=n._m3u8Obj)?void 0:i.audioNone)){var a,o;null==(o=n.player)||null==(a=o.appendAACFrame)||a.call(o,t)}},i._onWorkerMessage=function(){var e=this,i=this;this._decoderWorker.onmessage=function(r){var s=r.data;switch(s.cmd){case O:t.__HLS_WASM_DecoderState__=0;break;case M:t.__HLS_WASM_DecoderState__=1,e.logger.log("Wasm already init over!"),i.event.emit(xc),i._decoderWorker.postMessage(P("registerWasmPlayer")),i._m3u8Entry();break;case F:t.__HLS_WASM_DecoderState__=-1,e.logger.error("Wasm init failed!",s),i.event.emit(Cc,s),Ui.send("wasm",{name:"wasm loading failed"}),i._checkPlayer(!0)}}},i._softPlayer=function(e,t,i,r,s,n){var a,o,l=this;void 0===s&&(s=!1),void 0===n&&(n=null);var c,d=this;(this.playParam.durationMs=e,this.playParam.fps=t,this.playParam.sampleRate=i,this.playParam.size=r,this.playParam.audioNone=s,this.playParam.videoCodec=n||T,this.logger.log("this.playParam: ",this.playParam),this.logger.log("start init soft player"),this.player=new xi(Fc({},d.options,{sampleRate:i,fps:t,appendHevcType:h,fixed:!1,id:this.options.id,audioNone:s,videoCodec:n,logger:this.logger,event:this.event,decoderWorker:this._decoderWorker})),this.player.onPlayingTime=function(e){var t;null==d||null==(t=d.onPlayTime)||t.call(d,e)},this.player.onPlayingFinish=function(){var e,t;(l.pause(),null!=l.onPlayFinish)&&(null==(t=l)||null==(e=t.onPlayFinish)||e.call(t))},this.player.onLoadCache=function(){var e,t;null==(t=l)||null==(e=t.onLoadCache)||e.call(t)},this.player.onLoadCacheFinished=function(){var e,t;null==(t=l)||null==(e=t.onLoadCacheFinished)||e.call(t)},null==(a=d.player)||a.setDurationMs(e),null==(o=d.player)||o.setFrameRate(t),null!=d.onReadyShowDone)&&(null==d||null==(c=d.onReadyShowDone)||c.call(d));this.event.emit("parsed"),this.player&&this.options.autoPlay&&this.play()},t.supportType=function(e){if(Ui.send(1,{name:"supportType",options:e}),"hls"===e.type)return!0;if(e.url){var t=e.url;t.startsWith("http://")||t.startsWith("https://")||(t=/^\/\//.test(t)?"http:"+t:location.origin+location.pathname+t);try{return/\.m3u8$/i.test(new URL(t).pathname)}catch(e){}}return!1},Mc(t,[{key:"volume",get:function(){return this.player?this.player.volume:this.options.volume},set:function(e){e=+e,this.setVolume(e)}}]),t}(Oc);return Uc.__HLS_WASM_DecoderState__=0,Uc.version="0.1.0-beta.2",Uc})); +const bl={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},Ll=e=>String.fromCharCode(bl[e]||e),wl=15,Al=100,Rl={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},kl={17:2,18:4,21:6,22:8,23:10,19:13,20:15},_l={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},Dl={25:2,26:4,29:6,30:8,31:10,27:13,28:15},xl=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];class Cl{constructor(){this.time=null,this.verboseLevel=0}log(e,t){if(this.verboseLevel>=e){const i="function"==typeof t?t():t;lr.log(`${this.time} [${e}] ${i}`)}}}const Il=function(e){const t=[];for(let i=0;iAl&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=Al)}moveCursor(e){const t=this.pos+e;if(e>1)for(let e=this.pos+1;e=144&&this.backSpace();const t=Ll(e);this.pos>=Al?this.logger.log(0,(()=>"Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!")):(this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1))}clearFromPos(e){let t;for(t=e;t"pacData = "+JSON.stringify(e)));let t=e.row-1;if(this.nrRollUpRows&&t"bkgData = "+JSON.stringify(e))),this.backSpace(),this.setPen(e),this.insertChar(32)}setRollUpRows(e){this.nrRollUpRows=e}rollUp(){if(null===this.nrRollUpRows)return void this.logger.log(3,"roll_up but nrRollUpRows not set yet");this.logger.log(1,(()=>this.getDisplayText()));const e=this.currRow+1-this.nrRollUpRows,t=this.rows.splice(e,1)[0];t.clear(),this.rows.splice(this.currRow,0,t),this.logger.log(2,"Rolling up")}getDisplayText(e){e=e||!1;const t=[];let i="",r=-1;for(let i=0;i0&&(i=e?"["+t.join(" | ")+"]":t.join("\n")),i}getTextAndFormat(){return this.rows}}class Nl{constructor(e,t,i){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 Fl(i),this.nonDisplayedMemory=new Fl(i),this.lastOutputScreen=new Fl(i),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=i}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],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)),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)}insertChars(e){for(let t=0;tt+": "+this.writeScreen.getDisplayText(!0))),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(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"),"MODE_TEXT"!==this.mode&&(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"),"MODE_POP-ON"===this.mode){const e=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=e,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,(()=>"DISP: "+this.displayedMemory.getDisplayText()))}this.outputDataUpdate(!0)}ccTO(e){this.logger.log(2,"TO("+e+") - Tab Offset"),this.writeScreen.moveCursor(e)}ccMIDROW(e){const t={flash:!1};if(t.underline=e%2==1,t.italics=e>=46,t.italics)t.foreground="white";else{const i=Math.floor(e/2)-16,r=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=r[i]}this.logger.log(2,"MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)}outputDataUpdate(e=!1){const t=this.logger.time;null!==t&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?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.cueStartTime=t,this.lastOutputScreen.copy(this.displayedMemory))}cueSplitAtTime(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))}}class Ul{constructor(e,t,i){this.channels=void 0,this.currentChannel=0,this.cmdHistory={a:null,b:null},this.logger=void 0;const r=this.logger=new Cl;this.channels=[null,new Nl(e,t,r),new Nl(e+1,i,r)]}getHandler(e){return this.channels[e].getHandler()}setHandler(e,t){this.channels[e].setHandler(t)}addData(e,t){this.logger.time=e;for(let e=0;e"["+Il([t[e],t[e+1]])+"] -> ("+Il([i,r])+")"));const a=this.cmdHistory;if(i>=16&&i<=31){if($l(i,r,a)){Bl(null,null,a),this.logger.log(3,(()=>"Repeated command ("+Il([i,r])+") is dropped"));continue}Bl(i,r,this.cmdHistory),s=this.parseCmd(i,r),s||(s=this.parseMidrow(i,r)),s||(s=this.parsePAC(i,r)),s||(s=this.parseBackgroundAttributes(i,r))}else Bl(null,null,a);if(!s&&(n=this.parseChars(i,r),n)){const e=this.currentChannel;if(e&&e>0){this.channels[e].insertChars(n)}else this.logger.log(2,"No channel found yet. TEXT-MODE?")}s||n||this.logger.log(2,(()=>"Couldn't parse cleaned data "+Il([i,r])+" orig: "+Il([t[e],t[e+1]])))}}parseCmd(e,t){if(!((20===e||28===e||21===e||29===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=33&&t<=35))return!1;const i=20===e||21===e||23===e?1:2,r=this.channels[i];return 20===e||21===e||28===e||29===e?32===t?r.ccRCL():33===t?r.ccBS():34===t?r.ccAOF():35===t?r.ccAON():36===t?r.ccDER():37===t?r.ccRU(2):38===t?r.ccRU(3):39===t?r.ccRU(4):40===t?r.ccFON():41===t?r.ccRDC():42===t?r.ccTR():43===t?r.ccRTD():44===t?r.ccEDM():45===t?r.ccCR():46===t?r.ccENM():47===t&&r.ccEOC():r.ccTO(t-32),this.currentChannel=i,!0}parseMidrow(e,t){let i=0;if((17===e||25===e)&&t>=32&&t<=47){if(i=17===e?1:2,i!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;const r=this.channels[i];return!!r&&(r.ccMIDROW(t),this.logger.log(3,(()=>"MIDROW ("+Il([e,t])+")")),!0)}return!1}parsePAC(e,t){let i;if(!((e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127)&&!((16===e||24===e)&&t>=64&&t<=95))return!1;const r=e<=23?1:2;i=t>=64&&t<=95?1===r?Rl[e]:_l[e]:1===r?kl[e]:Dl[e];const s=this.channels[r];return!!s&&(s.setPAC(this.interpretPAC(i,t)),this.currentChannel=r,!0)}interpretPAC(e,t){let i;const r={color:null,italics:!1,indent:null,underline:!1,row:e};return i=t>95?t-96:t-64,r.underline=!(1&~i),i<=13?r.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(i/2)]:i<=15?(r.italics=!0,r.color="white"):r.indent=4*Math.floor((i-16)/2),r}parseChars(e,t){let i,r=null,s=null;if(e>=25?(i=2,s=e-8):(i=1,s=e),s>=17&&s<=19){let e;e=17===s?t+80:18===s?t+112:t+144,this.logger.log(2,(()=>"Special char '"+Ll(e)+"' in channel "+i)),r=[e]}else e>=32&&e<=127&&(r=0===t?[e]:[e,t]);return r&&this.logger.log(3,(()=>"Char codes = "+Il(r).join(","))),r}parseBackgroundAttributes(e,t){if(!((16===e||24===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=45&&t<=47))return!1;let i;const r={};16===e||24===e?(i=Math.floor((t-32)/2),r.background=xl[i],t%2==1&&(r.background=r.background+"_semi")):45===t?r.background="transparent":(r.foreground="black",47===t&&(r.underline=!0));const s=e<=23?1:2;return this.channels[s].setBkgData(r),!0}reset(){for(let e=0;ee)&&(this.startTime=e),this.endTime=t,this.screen=i,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}var Kl=function(){if(null!=Ar&&Ar.VTTCue)return self.VTTCue;const e=["","lr","rl"],t=["start","middle","end","left","right"];function i(e,t){if("string"!=typeof t)return!1;if(!Array.isArray(e))return!1;const i=t.toLowerCase();return!!~e.indexOf(i)&&i}function r(e){return i(t,e)}function s(e,...t){let i=1;for(;i100)throw new Error("Position must be between 0 and 100.");T=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"positionAlign",s({},l,{get:function(){return E},set:function(e){const t=r(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");E=t,this.hasBeenReset=!0}})),Object.defineProperty(o,"size",s({},l,{get:function(){return S},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");S=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"align",s({},l,{get:function(){return b},set:function(e){const t=r(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");b=t,this.hasBeenReset=!0}})),o.displayState=void 0}return n.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},n}();class Vl{decode(e,t){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))}}function Hl(e){function t(e,t,i,r){return 3600*(0|e)+60*(0|t)+(0|i)+parseFloat(r||0)}const i=e.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return i?parseFloat(i[2])>59?t(i[2],i[3],0,i[4]):t(i[1],i[2],i[3],i[4]):null}class jl{constructor(){this.values=Object.create(null)}set(e,t){this.get(e)||""===t||(this.values[e]=t)}get(e,t,i){return i?this.has(e)?this.values[e]:t[i]:this.has(e)?this.values[e]:t}has(e){return e in this.values}alt(e,t,i){for(let r=0;r=0&&i<=100)return this.set(e,i),!0}return!1}}function Wl(e,t,i,r){const s=r?e.split(r):[e];for(const e in s){if("string"!=typeof s[e])continue;const r=s[e].split(i);if(2!==r.length)continue;t(r[0],r[1])}}const Yl=new Kl(0,0,""),ql="middle"===Yl.align?"middle":"center";function zl(e,t,i){const r=e;function s(){const t=Hl(e);if(null===t)throw new Error("Malformed timestamp: "+r);return e=e.replace(/^[^\sa-zA-Z-]+/,""),t}function n(){e=e.replace(/^\s+/,"")}if(n(),t.startTime=s(),n(),"--\x3e"!==e.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+r);e=e.slice(3),n(),t.endTime=s(),n(),function(e,t){const r=new jl;Wl(e,(function(e,t){let s;switch(e){case"region":for(let s=i.length-1;s>=0;s--)if(i[s].id===t){r.set(e,i[s].region);break}break;case"vertical":r.alt(e,t,["rl","lr"]);break;case"line":s=t.split(","),r.integer(e,s[0]),r.percent(e,s[0])&&r.set("snapToLines",!1),r.alt(e,s[0],["auto"]),2===s.length&&r.alt("lineAlign",s[1],["start",ql,"end"]);break;case"position":s=t.split(","),r.percent(e,s[0]),2===s.length&&r.alt("positionAlign",s[1],["start",ql,"end","line-left","line-right","auto"]);break;case"size":r.percent(e,t);break;case"align":r.alt(e,t,["start",ql,"end","left","right"])}}),/:/,/\s/),t.region=r.get("region",null),t.vertical=r.get("vertical","");let s=r.get("line","auto");"auto"===s&&-1===Yl.line&&(s=-1),t.line=s,t.lineAlign=r.get("lineAlign","start"),t.snapToLines=r.get("snapToLines",!0),t.size=r.get("size",100),t.align=r.get("align",ql);let n=r.get("position","auto");"auto"===n&&50===Yl.position&&(n="start"===t.align||"left"===t.align?0:"end"===t.align||"right"===t.align?100:50),t.position=n}(e,t)}function Xl(e){return e.replace(//gi,"\n")}class Ql{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new Vl,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(e){const t=this;function i(){let e=t.buffer,i=0;for(e=Xl(e);i>>0).toString()};function th(e,t,i){return eh(e.toString())+eh(t.toString())+eh(i)}function ih(e,t,i,r,s,n,a){const o=new Ql,l=Jr(new Uint8Array(e)).trim().replace(Jl,"\n").split("\n"),h=[],c=t?function(e,t=1){return zo(e,qo,1/t)}(t.baseTime,t.timescale):0;let d,u="00:00.000",f=0,g=0,m=!0;o.oncue=function(e){const n=i[r];let a=i.ccOffset;const o=(f-c)/9e4;if(null!=n&&n.new&&(void 0!==g?a=i.ccOffset=n.start:function(e,t,i){let r=e[t],s=e[r.prevCC];if(!s||!s.new&&r.new)return e.ccOffset=e.presentationOffset=r.start,void(r.new=!1);for(;null!=(n=s)&&n.new;){var n;e.ccOffset+=r.start-s.start,r.new=!1,r=s,s=e[r.prevCC]}e.presentationOffset=i}(i,r,o)),o){if(!t)return void(d=new Error("Missing initPTS for VTT MPEGTS"));a=o-i.presentationOffset}const l=e.endTime-e.startTime,u=tl(9e4*(e.startTime+a-g),9e4*s)/9e4;e.startTime=Math.max(u,0),e.endTime=Math.max(u+l,0);const m=e.text.trim();e.text=decodeURIComponent(encodeURIComponent(m)),e.id||(e.id=th(e.startTime,e.endTime,m)),e.endTime>0&&h.push(e)},o.onparsingerror=function(e){d=e},o.onflush=function(){d?a(d):n(h)},l.forEach((e=>{if(m){if(Zl(e,"X-TIMESTAMP-MAP=")){m=!1,e.slice(16).split(",").forEach((e=>{Zl(e,"LOCAL:")?u=e.slice(6):Zl(e,"MPEGTS:")&&(f=parseInt(e.slice(7)))}));try{g=function(e){let t=parseInt(e.slice(-3));const i=parseInt(e.slice(-6,-4)),r=parseInt(e.slice(-9,-7)),s=e.length>9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!(Ji(t)&&Ji(i)&&Ji(r)&&Ji(s)))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${e}`);return t+=1e3*i,t+=6e4*r,t+=36e5*s,t}(u)/1e3}catch(e){d=e}return}""===e&&(m=!1)}o.parse(e+"\n")})),o.flush()}const rh="stpp.ttml.im1t",sh=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,nh=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,ah={left:"start",center:"center",right:"end",start:"start",end:"end"};function oh(e,t,i,r){const s=ds(new Uint8Array(e),["mdat"]);if(0===s.length)return void r(new Error("Could not parse IMSC1 mdat"));const n=s.map((e=>Jr(e))),a=function(e,t,i=1,r=!1){return zo(e,t,1/i,r)}(t.baseTime,1,t.timescale);try{n.forEach((e=>i(function(e,t){const i=(new DOMParser).parseFromString(e,"text/xml"),r=i.getElementsByTagName("tt")[0];if(!r)throw new Error("Invalid ttml");const s={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},n=Object.keys(s).reduce(((e,t)=>(e[t]=r.getAttribute(`ttp:${t}`)||s[t],e)),{}),a="preserve"!==r.getAttribute("xml:space"),o=hh(lh(r,"styling","style")),l=hh(lh(r,"layout","region")),h=lh(r,"body","[begin]");return[].map.call(h,(e=>{const i=ch(e,a);if(!i||!e.hasAttribute("begin"))return null;const r=fh(e.getAttribute("begin"),n),s=fh(e.getAttribute("dur"),n);let h=fh(e.getAttribute("end"),n);if(null===r)throw uh(e);if(null===h){if(null===s)throw uh(e);h=r+s}const c=new Kl(r-t,h-t,i);c.id=th(c.startTime,c.endTime,c.text);const d=function(e,t,i){const r="http://www.w3.org/ns/ttml#styling";let s=null;const n=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],a=null!=e&&e.hasAttribute("style")?e.getAttribute("style"):null;a&&i.hasOwnProperty(a)&&(s=i[a]);return n.reduce(((i,n)=>{const a=dh(t,r,n)||dh(e,r,n)||dh(s,r,n);return a&&(i[n]=a),i}),{})}(l[e.getAttribute("region")],o[e.getAttribute("style")],o),{textAlign:u}=d;if(u){const e=ah[u];e&&(c.lineAlign=e),c.align=u}return Qi(c,d),c})).filter((e=>null!==e))}(e,a))))}catch(e){r(e)}}function lh(e,t,i){const r=e.getElementsByTagName(t)[0];return r?[].slice.call(r.querySelectorAll(i)):[]}function hh(e){return e.reduce(((e,t)=>{const i=t.getAttribute("xml:id");return i&&(e[i]=t),e}),{})}function ch(e,t){return[].slice.call(e.childNodes).reduce(((e,i,r)=>{var s;return"br"===i.nodeName&&r?e+"\n":null!=(s=i.childNodes)&&s.length?ch(i,t):t?e+i.textContent.trim().replace(/\s+/g," "):e+i.textContent}),"")}function dh(e,t,i){return e&&e.hasAttributeNS(t,i)?e.getAttributeNS(t,i):null}function uh(e){return new Error(`Could not parse ttml timestamp ${e}`)}function fh(e,t){if(!e)return null;let i=Hl(e);return null===i&&(sh.test(e)?i=function(e,t){const i=sh.exec(e),r=(0|i[4])+(0|i[5])/t.subFrameRate;return 3600*(0|i[1])+60*(0|i[2])+(0|i[3])+r/t.frameRate}(e,t):nh.test(e)&&(i=function(e,t){const i=nh.exec(e),r=Number(i[1]);switch(i[2]){case"h":return 3600*r;case"m":return 60*r;case"ms":return 1e3*r;case"f":return r/t.frameRate;case"t":return r/t.tickRate}return r}(e,t))),i}function gh(e){return e.characteristics&&/transcribes-spoken-dialog/gi.test(e.characteristics)&&/describes-music-and-sound/gi.test(e.characteristics)?"captions":"subtitles"}function mh(e,t){return!!e&&e.kind===gh(t)&&vl(t,e)}class ph{constructor(e){this.hls=void 0,this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=e,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}setStreamController(e){this.streamController=e}destroy(){this.hls&&this.unregisterListener(),this.timer&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null}registerListeners(){const{hls:e}=this;e.on(tr.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.on(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){const{hls:e}=this;e.off(tr.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(e,t){const i=this.hls.levels[t.droppedLevel];this.isLevelAllowed(i)&&this.restrictedLevels.push({bitrate:i.bitrate,height:i.height,width:i.width})}onMediaAttaching(e,t){this.media=t.media instanceof HTMLVideoElement?t.media:null,this.clientRect=null,this.timer&&this.hls.levels.length&&this.detectPlayerSize()}onManifestParsed(e,t){const i=this.hls;this.restrictedLevels=[],this.firstLevel=t.firstLevel,i.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onLevelsUpdated(e,t){this.timer&&Ji(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)return void(this.clientRect=null);const e=this.hls.levels;if(e.length){const t=this.hls,i=this.getMaxLevel(e.length-1);i!==this.autoLevelCapping&&lr.log(`Setting autoLevelCapping to ${i}: ${e[i].height}p@${e[i].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),t.autoLevelCapping=i,t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}}getMaxLevel(e){const t=this.hls.levels;if(!t.length)return-1;const i=t.filter(((t,i)=>this.isLevelAllowed(t)&&i<=e));return this.clientRect=null,ph.getMaxLevelByMediaSize(i,this.mediaWidth,this.mediaHeight)}startCapping(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())}stopCapping(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)}getDimensions(){if(this.clientRect)return this.clientRect;const e=this.media,t={width:0,height:0};if(e){const i=e.getBoundingClientRect();t.width=i.width,t.height=i.height,t.width||t.height||(t.width=i.right-i.left||e.width||0,t.height=i.bottom-i.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(e){}return e}isLevelAllowed(e){return!this.restrictedLevels.some((t=>e.bitrate===t.bitrate&&e.width===t.width&&e.height===t.height))}static getMaxLevelByMediaSize(e,t,i){if(null==e||!e.length)return-1;let r=e.length-1;const s=Math.max(t,i);for(let t=0;t=s||i.height>=s)&&(n=i,!(a=e[t+1])||n.width!==a.width||n.height!==a.height)){r=t;break}}var n,a;return r}}const vh="[eme]";class yh{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=yh.CDMCleanupPromise?[yh.CDMCleanupPromise]:[],this.onMediaEncrypted=this._onMediaEncrypted.bind(this),this.onWaitingForKey=this._onWaitingForKey.bind(this),this.debug=lr.debug.bind(lr,vh),this.log=lr.log.bind(lr,vh),this.warn=lr.warn.bind(lr,vh),this.error=lr.error.bind(lr,vh),this.hls=e,this.config=e.config,this.registerListeners()}destroy(){this.unregisterListeners(),this.onMediaDetached();const 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(tr.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(tr.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this)}unregisterListeners(){this.hls.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(tr.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this)}getLicenseServerUrl(e){const{drmSystems:t,widevineLicenseUrl:i}=this.config,r=t[e];if(r)return r.licenseUrl;if(e===Rr.WIDEVINE&&i)return i;throw new Error(`no license server URL configured for key-system "${e}"`)}getServerCertificateUrl(e){const{drmSystems:t}=this.config,i=t[e];if(i)return i.serverCertificateUrl;this.log(`No Server Certificate in config.drmSystems["${e}"]`)}attemptKeySystemAccess(e){const t=this.hls.levels,i=(e,t,i)=>!!e&&i.indexOf(e)===t,r=t.map((e=>e.audioCodec)).filter(i),s=t.map((e=>e.videoCodec)).filter(i);return r.length+s.length===0&&s.push("avc1.42e01e"),new Promise(((t,i)=>{const n=e=>{const a=e.shift();this.getMediaKeysPromise(a,r,s).then((e=>t({keySystem:a,mediaKeys:e}))).catch((t=>{e.length?n(e):i(t instanceof Th?t:new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_ACCESS,error:t,fatal:!0},t.message))}))};n(e)}))}requestMediaKeySystemAccess(e,t){const{requestMediaKeySystemAccessFunc:i}=this.config;if("function"!=typeof i){let e=`Configured requestMediaKeySystemAccess is not a function ${i}`;return null===Mr&&"http:"===self.location.protocol&&(e=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`),Promise.reject(new Error(e))}return i(e,t)}getMediaKeysPromise(e,t,i){const r=function(e,t,i,r){let s;switch(e){case Rr.FAIRPLAY:s=["cenc","sinf"];break;case Rr.WIDEVINE:case Rr.PLAYREADY:s=["cenc"];break;case Rr.CLEARKEY:s=["cenc","keyids"];break;default:throw new Error(`Unknown key-system: ${e}`)}return function(e,t,i,r){return[{initDataTypes:e,persistentState:r.persistentState||"optional",distinctiveIdentifier:r.distinctiveIdentifier||"optional",sessionTypes:r.sessionTypes||[r.sessionType||"temporary"],audioCapabilities:t.map((e=>({contentType:`audio/mp4; codecs="${e}"`,robustness:r.audioRobustness||"",encryptionScheme:r.audioEncryptionScheme||null}))),videoCapabilities:i.map((e=>({contentType:`video/mp4; codecs="${e}"`,robustness:r.videoRobustness||"",encryptionScheme:r.videoEncryptionScheme||null})))}]}(s,t,i,r)}(e,t,i,this.config.drmSystemOptions),s=this.keySystemAccessPromises[e];let n=null==s?void 0:s.keySystemAccess;if(!n){this.log(`Requesting encrypted media "${e}" key-system access with config: ${JSON.stringify(r)}`),n=this.requestMediaKeySystemAccess(e,r);const t=this.keySystemAccessPromises[e]={keySystemAccess:n};return n.catch((t=>{this.log(`Failed to obtain access to key-system "${e}": ${t}`)})),n.then((i=>{this.log(`Access for key-system "${i.keySystem}" obtained`);const r=this.fetchServerCertificate(e);return this.log(`Create media-keys for "${e}"`),t.mediaKeys=i.createMediaKeys().then((t=>(this.log(`Media-keys created for "${e}"`),r.then((i=>i?this.setMediaKeysServerCertificate(t,e,i):t))))),t.mediaKeys.catch((t=>{this.error(`Failed to create media-keys for "${e}"}: ${t}`)})),t.mediaKeys}))}return n.then((()=>s.mediaKeys))}createMediaKeySessionContext({decryptdata:e,keySystem:t,mediaKeys:i}){this.log(`Creating key-system session "${t}" keyId: ${ts(e.keyId||[])}`);const r=i.createSession(),s={decryptdata:e,keySystem:t,mediaKeys:i,mediaKeysSession:r,keyStatus:"status-pending"};return this.mediaKeySessions.push(s),s}renewKeySession(e){const t=e.decryptdata;if(t.pssh){const i=this.createMediaKeySessionContext(e),r=this.getKeyIdString(t),s="cenc";this.keyIdToKeySessionPromise[r]=this.generateRequestWithPreferredKeySession(i,s,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(null===e.keyId)throw new Error("keyId is null");return ts(e.keyId)}updateKeySession(e,t){var i;const r=e.mediaKeysSession;return this.log(`Updating key-session "${r.sessionId}" for keyID ${ts((null==(i=e.decryptdata)?void 0:i.keyId)||[])}\n } (data length: ${t?t.byteLength:t})`),r.update(t)}selectKeySystemFormat(e){const t=Object.keys(e.levelkeys||{});return this.keyFormatPromise||(this.log(`Selecting key-system from fragment (sn: ${e.sn} ${e.type}: ${e.level}) key formats ${t.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(t)),this.keyFormatPromise}getKeyFormatPromise(e){return new Promise(((t,i)=>{const r=Or(this.config),s=e.map(Cr).filter((e=>!!e&&-1!==r.indexOf(e)));return this.getKeySystemSelectionPromise(s).then((({keySystem:e})=>{const r=Pr(e);r?t(r):i(new Error(`Unable to find format for key-system "${e}"`))})).catch(i)}))}loadKey(e){const t=e.keyInfo.decryptdata,i=this.getKeyIdString(t),r=`(keyId: ${i} format: "${t.keyFormat}" method: ${t.method} uri: ${t.uri})`;this.log(`Starting session for key ${r}`);let s=this.keyIdToKeySessionPromise[i];return s||(s=this.keyIdToKeySessionPromise[i]=this.getKeySystemForKeyPromise(t).then((({keySystem:i,mediaKeys:s})=>(this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${e.frag.sn} ${e.frag.type}: ${e.frag.level} using key ${r}`),this.attemptSetMediaKeys(i,s).then((()=>{this.throwIfDestroyed();const e=this.createMediaKeySessionContext({keySystem:i,mediaKeys:s,decryptdata:t});return this.generateRequestWithPreferredKeySession(e,"cenc",t.pssh,"playlist-key")}))))),s.catch((e=>this.handleError(e)))),s}throwIfDestroyed(e="Invalid state"){if(!this.hls)throw new Error("invalid state")}handleError(e){this.hls&&(this.error(e.message),e instanceof Th?this.hls.trigger(tr.ERROR,e.data):this.hls.trigger(tr.ERROR,{type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_KEYS,error:e,fatal:!0}))}getKeySystemForKeyPromise(e){const t=this.getKeyIdString(e),i=this.keyIdToKeySessionPromise[t];if(!i){const t=Cr(e.keyFormat),i=t?[t]:Or(this.config);return this.attemptKeySystemAccess(i)}return i}getKeySystemSelectionPromise(e){if(e.length||(e=Or(this.config)),0===e.length)throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.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){const{initDataType:t,initData:i}=e;if(this.debug(`"${e.type}" event: init data type: "${t}"`),null===i)return;let r,s;if("sinf"===t&&this.config.drmSystems[Rr.FAIRPLAY]){const e=ns(new Uint8Array(i));try{const t=br(JSON.parse(e).sinf),i=ys(new Uint8Array(t));if(!i)return;r=i.subarray(8,24),s=Rr.FAIRPLAY}catch(e){return void this.warn('Failed to parse sinf "encrypted" event message initData')}}else{const e=function(e){if(!(e instanceof ArrayBuffer)||e.byteLength<32)return null;const t={version:0,systemId:"",kids:null,data:null},i=new DataView(e),r=i.getUint32(0);if(e.byteLength!==r&&r>44)return null;if(1886614376!==i.getUint32(4))return null;if(t.version=i.getUint32(8)>>>24,t.version>1)return null;t.systemId=ts(new Uint8Array(e,12,16));const s=i.getUint32(28);if(0===t.version){if(r-32this.generateRequestWithPreferredKeySession(s,t,i,"encrypted-event-key-match")));break}}l||(l=a[n]=this.getKeySystemSelectionPromise([s]).then((({keySystem:e,mediaKeys:s})=>{var a;this.throwIfDestroyed();const o=new ks("ISO-23001-7",n,null!=(a=Pr(e))?a:"");return o.pssh=new Uint8Array(i),o.keyId=r,this.attemptSetMediaKeys(e,s).then((()=>{this.throwIfDestroyed();const r=this.createMediaKeySessionContext({decryptdata:o,keySystem:e,mediaKeys:s});return this.generateRequestWithPreferredKeySession(r,t,i,"encrypted-event-no-match")}))}))),l.catch((e=>this.handleError(e)))}_onWaitingForKey(e){this.log(`"${e.type}" event`)}attemptSetMediaKeys(e,t){const i=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${e}"`);const r=Promise.all(i).then((()=>{if(!this.media)throw new Error("Attempted to set mediaKeys without media element attached");return this.media.setMediaKeys(t)}));return this.setMediaKeysQueue.push(r),r.then((()=>{this.log(`Media-keys set for "${e}"`),i.push(r),this.setMediaKeysQueue=this.setMediaKeysQueue.filter((e=>-1===i.indexOf(e)))}))}generateRequestWithPreferredKeySession(e,t,i,r){var s,n;const a=null==(s=this.config.drmSystems)||null==(n=s[e.keySystem])?void 0:n.generateRequest;if(a)try{const r=a.call(this.hls,t,i,e);if(!r)throw new Error("Invalid response from configured generateRequest filter");t=r.initDataType,i=e.decryptdata.pssh=r.initData?new Uint8Array(r.initData):null}catch(e){var o;if(this.warn(e.message),null!=(o=this.hls)&&o.config.debug)throw e}if(null===i)return this.log(`Skipping key-session request for "${r}" (no initData)`),Promise.resolve(e);const l=this.getKeyIdString(e.decryptdata);this.log(`Generating key-session request for "${r}": ${l} (init data type: ${t} length: ${i?i.byteLength:null})`);const h=new fl,c=e._onmessage=t=>{const i=e.mediaKeysSession;if(!i)return void h.emit("error",new Error("invalid state"));const{messageType:r,message:s}=t;this.log(`"${r}" message event for session "${i.sessionId}" message size: ${s.byteLength}`),"license-request"===r||"license-renewal"===r?this.renewLicense(e,s).catch((e=>{this.handleError(e),h.emit("error",e)})):"license-release"===r?e.keySystem===Rr.FAIRPLAY&&(this.updateKeySession(e,wr("acknowledged")),this.removeSession(e)):this.warn(`unhandled media key message type "${r}"`)},d=e._onkeystatuseschange=t=>{if(!e.mediaKeysSession)return void h.emit("error",new Error("invalid state"));this.onKeyStatusChange(e);const i=e.keyStatus;h.emit("keyStatus",i),"expired"===i&&(this.warn(`${e.keySystem} expired for key ${l}`),this.renewKeySession(e))};e.mediaKeysSession.addEventListener("message",c),e.mediaKeysSession.addEventListener("keystatuseschange",d);const u=new Promise(((e,t)=>{h.on("error",t),h.on("keyStatus",(i=>{i.startsWith("usable")?e():"output-restricted"===i?t(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,fatal:!1},"HDCP level output restricted")):"internal-error"===i?t(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_STATUS_INTERNAL_ERROR,fatal:!0},`key status changed to "${i}"`)):"expired"===i?t(new Error("key expired while generating request")):this.warn(`unhandled key status change "${i}"`)}))}));return e.mediaKeysSession.generateRequest(t,i).then((()=>{var t;this.log(`Request generated for key-session "${null==(t=e.mediaKeysSession)?void 0:t.sessionId}" keyId: ${l}`)})).catch((e=>{throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_SESSION,error:e,fatal:!1},`Error generating key-session request: ${e}`)})).then((()=>u)).catch((t=>{throw h.removeAllListeners(),this.removeSession(e),t})).then((()=>(h.removeAllListeners(),e)))}onKeyStatusChange(e){e.mediaKeysSession.keyStatuses.forEach(((t,i)=>{this.log(`key status change "${t}" for keyStatuses keyId: ${ts("buffer"in i?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):new Uint8Array(i))} session keyId: ${ts(new Uint8Array(e.decryptdata.keyId||[]))} uri: ${e.decryptdata.uri}`),e.keyStatus=t}))}fetchServerCertificate(e){const t=this.config,i=new(0,t.loader)(t),r=this.getServerCertificateUrl(e);return r?(this.log(`Fetching server certificate for "${e}"`),new Promise(((s,n)=>{const a={responseType:"arraybuffer",url:r},o=t.certLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(e,t,i,r)=>{s(e.data)},onError:(t,i,s,o)=>{n(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:s,response:qi({url:a.url,data:void 0},t)},`"${e}" certificate request failed (${r}). Status: ${t.code} (${t.text})`))},onTimeout:(t,i,s)=>{n(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:s,response:{url:a.url,data:void 0}},`"${e}" certificate request timed out (${r})`))},onAbort:(e,t,i)=>{n(new Error("aborted"))}};i.load(a,l,h)}))):Promise.resolve()}setMediaKeysServerCertificate(e,t,i){return new Promise(((r,s)=>{e.setServerCertificate(i).then((s=>{this.log(`setServerCertificate ${s?"success":"not supported by CDM"} (${null==i?void 0:i.byteLength}) on "${t}"`),r(e)})).catch((e=>{s(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:e,fatal:!0},e.message))}))}))}renewLicense(e,t){return this.requestLicense(e,new Uint8Array(t)).then((t=>this.updateKeySession(e,new Uint8Array(t)).catch((e=>{throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SESSION_UPDATE_FAILED,error:e,fatal:!0},e.message)}))))}unpackPlayReadyKeyMessage(e,t){const i=String.fromCharCode.apply(null,new Uint16Array(t.buffer));if(!i.includes("PlayReadyKeyMessage"))return e.setRequestHeader("Content-Type","text/xml; charset=utf-8"),t;const r=(new DOMParser).parseFromString(i,"application/xml"),s=r.querySelectorAll("HttpHeader");if(s.length>0){let t;for(let i=0,r=s.length;i in key message");return wr(atob(l))}setupLicenseXHR(e,t,i,r){const s=this.config.licenseXhrSetup;return s?Promise.resolve().then((()=>{if(!i.decryptdata)throw new Error("Key removed");return s.call(this.hls,e,t,i,r)})).catch((n=>{if(!i.decryptdata)throw n;return e.open("POST",t,!0),s.call(this.hls,e,t,i,r)})).then((i=>{e.readyState||e.open("POST",t,!0);return{xhr:e,licenseChallenge:i||r}})):(e.open("POST",t,!0),Promise.resolve({xhr:e,licenseChallenge:r}))}requestLicense(e,t){const i=this.config.keyLoadPolicy.default;return new Promise(((r,s)=>{const n=this.getLicenseServerUrl(e.keySystem);this.log(`Sending license request to URL: ${n}`);const a=new XMLHttpRequest;a.responseType="arraybuffer",a.onreadystatechange=()=>{if(!this.hls||!e.mediaKeysSession)return s(new Error("invalid state"));if(4===a.readyState)if(200===a.status){this._requestLicenseFailureCount=0;let t=a.response;this.log(`License received ${t instanceof ArrayBuffer?t.byteLength:t}`);const i=this.config.licenseResponseCallback;if(i)try{t=i.call(this.hls,a,n,e)}catch(e){this.error(e)}r(t)}else{const o=i.errorRetry,l=o?o.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>l||a.status>=400&&a.status<500)s(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:a,response:{url:n,data:void 0,code:a.status,text:a.statusText}},`License Request XHR failed (${n}). Status: ${a.status} (${a.statusText})`));else{const i=l-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${i} attempts left`),this.requestLicense(e,t).then(r,s)}}},e.licenseXhr&&e.licenseXhr.readyState!==XMLHttpRequest.DONE&&e.licenseXhr.abort(),e.licenseXhr=a,this.setupLicenseXHR(a,n,e,t).then((({xhr:t,licenseChallenge:i})=>{e.keySystem==Rr.PLAYREADY&&(i=this.unpackPlayReadyKeyMessage(t,i)),t.send(i)}))}))}onMediaAttached(e,t){if(!this.config.emeEnabled)return;const i=t.media;this.media=i,i.addEventListener("encrypted",this.onMediaEncrypted),i.addEventListener("waitingforkey",this.onWaitingForKey)}onMediaDetached(){const 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={},ks.clearKeyUriToKeyIdMap();const i=t.length;yh.CDMCleanupPromise=Promise.all(t.map((e=>this.removeSession(e))).concat(null==e?void 0:e.setMediaKeys(null).catch((e=>{this.log(`Could not clear media keys: ${e}`)})))).then((()=>{i&&(this.log("finished closing key sessions and clearing media keys"),t.length=0)})).catch((e=>{this.log(`Could not close sessions and clear media keys: ${e}`)}))}onManifestLoading(){this.keyFormatPromise=null}onManifestLoaded(e,{sessionKeys:t}){if(t&&this.config.emeEnabled&&!this.keyFormatPromise){const e=t.reduce(((e,t)=>(-1===e.indexOf(t.keyFormat)&&e.push(t.keyFormat),e)),[]);this.log(`Selecting key-system from session-keys ${e.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(e)}}removeSession(e){const{mediaKeysSession:t,licenseXhr:i}=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),i&&i.readyState!==XMLHttpRequest.DONE&&i.abort(),e.mediaKeysSession=e.decryptdata=e.licenseXhr=void 0;const r=this.mediaKeySessions.indexOf(e);return r>-1&&this.mediaKeySessions.splice(r,1),t.remove().catch((e=>{this.log(`Could not remove session: ${e}`)})).then((()=>t.close())).catch((e=>{this.log(`Could not close session: ${e}`)}))}}}yh.CDMCleanupPromise=void 0;class Th 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}}var Eh,Sh,bh;!function(e){e.MANIFEST="m",e.AUDIO="a",e.VIDEO="v",e.MUXED="av",e.INIT="i",e.CAPTION="c",e.TIMED_TEXT="tt",e.KEY="k",e.OTHER="o"}(Eh||(Eh={})),function(e){e.DASH="d",e.HLS="h",e.SMOOTH="s",e.OTHER="o"}(Sh||(Sh={})),function(e){e.OBJECT="CMCD-Object",e.REQUEST="CMCD-Request",e.SESSION="CMCD-Session",e.STATUS="CMCD-Status"}(bh||(bh={}));const Lh={[bh.OBJECT]:["br","d","ot","tb"],[bh.REQUEST]:["bl","dl","mtp","nor","nrr","su"],[bh.SESSION]:["cid","pr","sf","sid","st","v"],[bh.STATUS]:["bs","rtp"]};class wh{constructor(e,t){this.value=void 0,this.params=void 0,Array.isArray(e)&&(e=e.map((e=>e instanceof wh?e:new wh(e)))),this.value=e,this.params=t}}class Ah{constructor(e){this.description=void 0,this.description=e}}const Rh="Dict";function kh(e,t,i,r){return new Error(`failed to ${e} "${s=t,Array.isArray(s)?JSON.stringify(s):s instanceof Map?"Map{}":s instanceof Set?"Set{}":"object"==typeof s?JSON.stringify(s):String(s)}" as ${i}`,{cause:r});var s}const _h="Bare Item",Dh="Boolean",xh="Byte Sequence",Ch="Decimal",Ih="Integer";const Ph=/[\x00-\x1f\x7f]+/,Oh="Token",Mh="Key";function Fh(e,t,i){return kh("serialize",e,t,i)}function Nh(e){if(!1===ArrayBuffer.isView(e))throw Fh(e,xh);return`:${t=e,btoa(String.fromCharCode(...t))}:`;var t}function Uh(e){if(function(e){return e<-999999999999999||99999999999999912)throw Fh(e,Ch);const i=t.toString();return i.includes(".")?i:`${i}.0`}const Gh="String";function Kh(e){const t=(i=e).description||i.toString().slice(7,-1);var i;if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(t))throw Fh(t,Oh);return t}function Vh(e){switch(typeof e){case"number":if(!Ji(e))throw Fh(e,_h);return Number.isInteger(e)?Uh(e):$h(e);case"string":return function(e){if(Ph.test(e))throw Fh(e,Gh);return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}(e);case"symbol":return Kh(e);case"boolean":return function(e){if("boolean"!=typeof e)throw Fh(e,Dh);return e?"?1":"?0"}(e);case"object":if(e instanceof Date)return function(e){return`@${Uh(e.getTime()/1e3)}`}(e);if(e instanceof Uint8Array)return Nh(e);if(e instanceof Ah)return Kh(e);default:throw Fh(e,_h)}}function Hh(e){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(e))throw Fh(e,Mh);return e}function jh(e){return null==e?"":Object.entries(e).map((([e,t])=>!0===t?`;${Hh(e)}`:`;${Hh(e)}=${Vh(t)}`)).join("")}function Wh(e){return e instanceof wh?`${Vh(e.value)}${jh(e.params)}`:Vh(e)}function Yh(e,t={whitespace:!0}){if("object"!=typeof e)throw Fh(e,Rh);const i=e instanceof Map?e.entries():Object.entries(e),r=null!=t&&t.whitespace?" ":"";return Array.from(i).map((([e,t])=>{t instanceof wh==!1&&(t=new wh(t));let i=Hh(e);var r;return!0===t.value?i+=jh(t.params):(i+="=",Array.isArray(t.value)?i+=`(${(r=t).value.map(Wh).join(" ")})${jh(r.params)}`:i+=Wh(t)),i})).join(`,${r}`)}const qh=e=>"ot"===e||"sf"===e||"st"===e,zh=e=>"number"==typeof e?Ji(e):null!=e&&""!==e&&!1!==e;const Xh=e=>Math.round(e),Qh=e=>100*Xh(e/100),Jh={br:Xh,d:Xh,bl:Qh,dl:Qh,mtp:Qh,nor:(e,t)=>(null!=t&&t.baseUrl&&(e=function(e,t){const i=new URL(e),r=new URL(t);if(i.origin!==r.origin)return e;const s=i.pathname.split("/").slice(1),n=r.pathname.split("/").slice(1,-1);for(;s[0]===n[0];)s.shift(),n.shift();for(;n.length;)n.shift(),s.unshift("..");return s.join("/")}(e,t.baseUrl)),encodeURIComponent(e)),rtp:Qh,tb:Xh};function Zh(e,t={}){return e?function(e,t){return Yh(e,t)}(function(e,t){const i={};if(null==e||"object"!=typeof e)return i;const r=Object.keys(e).sort(),s=Qi({},Jh,null==t?void 0:t.formatters),n=null==t?void 0:t.filter;return r.forEach((r=>{if(null!=n&&n(r))return;let a=e[r];const o=s[r];o&&(a=o(a,t)),"v"===r&&1===a||"pr"==r&&1===a||zh(a)&&(qh(r)&&"string"==typeof a&&(a=new Ah(a)),i[r]=a)})),i}(e,t),Qi({whitespace:!1},t)):""}function ec(e,t,i){return Qi(e,function(e,t={}){if(!e)return{};const i=Object.entries(e),r=Object.entries(Lh).concat(Object.entries((null==t?void 0:t.customHeaderMap)||{})),s=i.reduce(((e,t)=>{var i;const[s,n]=t,a=(null==(i=r.find((e=>e[1].includes(s))))?void 0:i[0])||bh.REQUEST;return null!=e[a]||(e[a]={}),e[a][s]=n,e}),{});return Object.entries(s).reduce(((e,[i,r])=>(e[i]=Zh(r,t),e)),{})}(t,i))}const tc="CMCD";const ic=/CMCD=[^&#]+/;function rc(e,t,i){const r=function(e,t={}){if(!e)return"";const i=Zh(e,t);return`${tc}=${encodeURIComponent(i)}`}(t,i);if(!r)return e;if(ic.test(e))return e.replace(ic,r);const s=e.includes("?")?"&":"?";return`${e}${s}${r}`}function sc(e,t,i,r){e&&Object.keys(t).forEach((s=>{const n=e.filter((e=>e.groupId===s)).map((e=>{const n=Qi({},e);return n.details=void 0,n.attrs=new dr(n.attrs),n.url=n.attrs.URI=nc(e.url,e.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",i),n.groupId=n.attrs["GROUP-ID"]=t[s],n.attrs["PATHWAY-ID"]=r,n}));e.push(...n)}))}function nc(e,t,i,r){const{HOST:s,PARAMS:n,[i]:a}=r;let o;t&&(o=null==a?void 0:a[t],o&&(e=o));const l=new self.URL(e);return s&&!o&&(l.host=s),n&&Object.keys(n).sort().forEach((e=>{e&&l.searchParams.set(e,n[e])})),l.href}const ac=/^age:\s*[\d.]+\s*$/im;class oc{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 gr,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null}abortInternal(){const e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,4!==e.readyState&&(this.stats.aborted=!0,e.abort()))}abort(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(e,t,i){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=i,this.loadInternal()}loadInternal(){const{config:e,context:t}=this;if(!e||!t)return;const i=this.loader=new self.XMLHttpRequest,r=this.stats;r.loading.first=0,r.loaded=0,r.aborted=!1;const s=this.xhrSetup;s?Promise.resolve().then((()=>{if(this.loader===i&&!this.stats.aborted)return s(i,t.url)})).catch((e=>{if(this.loader===i&&!this.stats.aborted)return i.open("GET",t.url,!0),s(i,t.url)})).then((()=>{this.loader!==i||this.stats.aborted||this.openAndSendXhr(i,t,e)})).catch((e=>{this.callbacks.onError({code:i.status,text:e.message},t,i,r)})):this.openAndSendXhr(i,t,e)}openAndSendXhr(e,t,i){e.readyState||e.open("GET",t.url,!0);const r=t.headers,{maxTimeToFirstByteMs:s,maxLoadTimeMs:n}=i.loadPolicy;if(r)for(const t in r)e.setRequestHeader(t,r[t]);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),i.timeout=s&&Ji(s)?s:n,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),i.timeout),e.send()}readystatechange(){const{context:e,loader:t,stats:i}=this;if(!e||!t)return;const r=t.readyState,s=this.config;if(!i.aborted&&r>=2&&(0===i.loading.first&&(i.loading.first=Math.max(self.performance.now(),i.loading.start),s.timeout!==s.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),s.timeout=s.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),s.loadPolicy.maxLoadTimeMs-(i.loading.first-i.loading.start)))),4===r)){self.clearTimeout(this.requestTimeout),t.onreadystatechange=null,t.onprogress=null;const r=t.status,n="text"!==t.responseType;if(r>=200&&r<300&&(n&&t.response||null!==t.responseText)){i.loading.end=Math.max(self.performance.now(),i.loading.first);const s=n?t.response:t.responseText,a="arraybuffer"===t.responseType?s.byteLength:s.length;if(i.loaded=i.total=a,i.bwEstimate=8e3*i.total/(i.loading.end-i.loading.first),!this.callbacks)return;const o=this.callbacks.onProgress;if(o&&o(i,e,s,t),!this.callbacks)return;const l={url:t.responseURL,data:s,code:r};this.callbacks.onSuccess(l,i,e,t)}else{const n=s.loadPolicy.errorRetry;Xn(n,i.retry,!1,{url:e.url,data:void 0,code:r})?this.retry(n):(lr.error(`${r} while loading ${e.url}`),this.callbacks.onError({code:r,text:t.statusText},e,t,i))}}}loadtimeout(){if(!this.config)return;const e=this.config.loadPolicy.timeoutRetry;if(Xn(e,this.stats.retry,!0))this.retry(e);else{var t;lr.warn(`timeout while loading ${null==(t=this.context)?void 0:t.url}`);const e=this.callbacks;e&&(this.abortInternal(),e.onTimeout(this.stats,this.context,this.loader))}}retry(e){const{context:t,stats:i}=this;this.retryDelay=qn(e,i.retry),i.retry++,lr.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${null==t?void 0:t.url}, retrying ${i.retry}/${e.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)}loadprogress(e){const t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)}getCacheAge(){let e=null;if(this.loader&&ac.test(this.loader.getAllResponseHeaders())){const t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.loader&&new RegExp(`^${e}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(e):null}}const lc=/(\d+)-(\d+)\/(\d+)/;class hc{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||cc,this.controller=new self.AbortController,this.stats=new gr}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(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(e,t,i){const r=this.stats;if(r.loading.start)throw new Error("Loader can only be used once.");r.loading.start=self.performance.now();const s=function(e,t){const i={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(Qi({},e.headers))};e.rangeEnd&&i.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1));return i}(e,this.controller.signal),n=i.onProgress,a="arraybuffer"===e.responseType,o=a?"byteLength":"length",{maxTimeToFirstByteMs:l,maxLoadTimeMs:h}=t.loadPolicy;this.context=e,this.config=t,this.callbacks=i,this.request=this.fetchSetup(e,s),self.clearTimeout(this.requestTimeout),t.timeout=l&&Ji(l)?l:h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(r,e,this.response)}),t.timeout),self.fetch(this.request).then((s=>{this.response=this.loader=s;const o=Math.max(self.performance.now(),r.loading.start);if(self.clearTimeout(this.requestTimeout),t.timeout=h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(r,e,this.response)}),h-(o-r.loading.start)),!s.ok){const{status:e,statusText:t}=s;throw new dc(t||"fetch, bad network response",e,s)}return r.loading.first=o,r.total=function(e){const t=e.get("Content-Range");if(t){const e=function(e){const t=lc.exec(e);if(t)return parseInt(t[2])-parseInt(t[1])+1}(t);if(Ji(e))return e}const i=e.get("Content-Length");if(i)return parseInt(i)}(s.headers)||r.total,n&&Ji(t.highWaterMark)?this.loadProgressively(s,r,e,t.highWaterMark,n):a?s.arrayBuffer():"json"===e.responseType?s.json():s.text()})).then((s=>{const a=this.response;if(!a)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),r.loading.end=Math.max(self.performance.now(),r.loading.first);const l=s[o];l&&(r.loaded=r.total=l);const h={url:a.url,data:s,code:a.status};n&&!Ji(t.highWaterMark)&&n(r,e,s,a),i.onSuccess(h,r,e,a)})).catch((t=>{if(self.clearTimeout(this.requestTimeout),r.aborted)return;const s=t&&t.code||0,n=t?t.message:null;i.onError({code:s,text:n},e,t?t.details:null,r)}))}getCacheAge(){let e=null;if(this.response){const t=this.response.headers.get("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.response?this.response.headers.get(e):null}loadProgressively(e,t,i,r=0,s){const n=new ao,a=e.body.getReader(),o=()=>a.read().then((a=>{if(a.done)return n.dataLength&&s(t,i,n.flush(),e),Promise.resolve(new ArrayBuffer(0));const l=a.value,h=l.length;return t.loaded+=h,h=r&&s(t,i,n.flush(),e)):s(t,i,l,e),o()})).catch((()=>Promise.reject()));return o()}}function cc(e,t){return new self.Request(e.url,t)}class dc extends Error{constructor(e,t,i){super(e),this.code=void 0,this.details=void 0,this.code=t,this.details=i}}const uc=/\s/,fc={newCue(e,t,i,r){const s=[];let n,a,o,l,h;const c=self.VTTCue||self.TextTrackCue;for(let u=0;u=16?l--:l++;const r=Xl(h.trim()),f=th(t,i,r);null!=e&&null!=(d=e.cues)&&d.getCueById(f)||(a=new c(t,i,r),a.id=f,a.line=u+1,a.align="left",a.position=10+Math.min(80,10*Math.floor(8*l/32)),s.push(a))}return e&&s.length&&(s.sort(((e,t)=>"auto"===e.line||"auto"===t.line?0:e.line>8&&t.line>8?t.line-e.line:e.line-t.line)),s.forEach((t=>pn(e,t)))),s}},gc=qi(qi({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:6e7,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:oc,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController: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.codecTiers=null,this.timer=-1,this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this._abandonRulesCheck=()=>{const{fragCurrent:e,partCurrent:t,hls:i}=this,{autoLevelEnabled:r,media:s}=i;if(!e||!s)return;const n=performance.now(),a=t?t.stats:e.stats,o=t?t.duration:e.duration,l=n-a.loading.start,h=i.minAutoLevel;if(a.aborted||a.loaded&&a.loaded===a.total||e.level<=h)return this.clearTimer(),void(this._nextAutoLevel=-1);if(!r||s.paused||!s.playbackRate||!s.readyState)return;const c=i.mainForwardBufferInfo;if(null===c)return;const d=this.bwEstimator.getEstimateTTFB(),u=Math.abs(s.playbackRate);if(l<=Math.max(d,o/(2*u)*1e3))return;const f=c.len/u,g=a.loading.first?a.loading.first-a.loading.start:-1,m=a.loaded&&g>-1,p=this.getBwEstimate(),v=i.levels,y=v[e.level],T=a.total||Math.max(a.loaded,Math.round(o*y.averageBitrate/8));let E=m?l-g:l;E<1&&m&&(E=Math.min(l,8*a.loaded/p));const S=m?1e3*a.loaded/E:0,b=S?(T-a.loaded)/S:8*T/p+d/1e3;if(b<=f)return;const L=S?8*S:p;let w,A=Number.POSITIVE_INFINITY;for(w=e.level-1;w>h;w--){const e=v[w].maxBitrate;if(A=this.getTimeToLoadFrag(d/1e3,L,o*e,!v[w].details),A=b)return;if(A>10*o)return;i.nextLoadLevel=i.nextAutoLevel=w,m?this.bwEstimator.sample(l-Math.min(d,g),a.loaded):this.bwEstimator.sampleTTFB(l);const R=v[w].maxBitrate;this.getBwEstimate()*this.hls.config.abrBandWidthUpFactor>R&&this.resetEstimator(R),this.clearTimer(),lr.warn(`[abr] Fragment ${e.sn}${t?" part "+t.index:""} of level ${e.level} is loading too slowly;\n Time to underbuffer: ${f.toFixed(3)} s\n Estimated load time for current fragment: ${b.toFixed(3)} s\n Estimated load time for down switch fragment: ${A.toFixed(3)} s\n TTFB estimate: ${0|g} ms\n Current BW estimate: ${Ji(p)?0|p:"Unknown"} bps\n New BW estimate: ${0|this.getBwEstimate()} bps\n Switching to level ${w} @ ${0|R} bps`),i.trigger(tr.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e,part:t,stats:a})},this.hls=e,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(e){e&&(lr.log(`setting initial bwe to ${e}`),this.hls.config.abrEwmaDefaultEstimate=e),this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){const e=this.hls.config;return new ca(e.abrEwmaSlowVoD,e.abrEwmaFastVoD,e.abrEwmaDefaultEstimate)}registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.FRAG_LOADING,this.onFragLoading,this),e.on(tr.FRAG_LOADED,this.onFragLoaded,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e&&(e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.FRAG_LOADING,this.onFragLoading,this),e.off(tr.FRAG_LOADED,this.onFragLoaded,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.off(tr.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){const i=t.frag;if(!this.ignoreFragment(i)){var r;if(!i.bitrateTest)this.fragCurrent=i,this.partCurrent=null!=(r=t.part)?r: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 rr.BUFFER_ADD_CODEC_ERROR:case rr.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case rr.FRAG_LOAD_TIMEOUT:{const e=t.frag,{fragCurrent:i,partCurrent:r}=this;if(e&&i&&e.sn===i.sn&&e.level===i.level){const t=performance.now(),i=r?r.stats:e.stats,s=t-i.loading.start,n=i.loading.first?i.loading.first-i.loading.start:-1;if(i.loaded&&n>-1){const e=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(s-Math.min(e,n),i.loaded)}else this.bwEstimator.sampleTTFB(s)}break}}}getTimeToLoadFrag(e,t,i,r){return e+i/t+(r?this.lastLevelLoadSec:0)}onLevelLoaded(e,t){const i=this.hls.config,{loading:r}=t.stats,s=r.end-r.start;Ji(s)&&(this.lastLevelLoadSec=s/1e3),t.details.live?this.bwEstimator.update(i.abrEwmaSlowLive,i.abrEwmaFastLive):this.bwEstimator.update(i.abrEwmaSlowVoD,i.abrEwmaFastVoD)}onFragLoaded(e,{frag:t,part:i}){const r=i?i.stats:t.stats;if(t.type===hn&&this.bwEstimator.sampleTTFB(r.loading.first-r.loading.start),!this.ignoreFragment(t)){if(this.clearTimer(),t.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){const e=i?i.duration:t.duration,s=this.hls.levels[t.level],n=(s.loaded?s.loaded.bytes:0)+r.loaded,a=(s.loaded?s.loaded.duration:0)+e;s.loaded={bytes:n,duration:a},s.realBitrate=Math.round(8*n/a)}if(t.bitrateTest){const e={stats:r,frag:t,part:i,id:t.type};this.onFragBuffered(tr.FRAG_BUFFERED,e),t.bitrateTest=!1}else this.lastLoadedFragLevel=t.level}}onFragBuffered(e,t){const{frag:i,part:r}=t,s=null!=r&&r.stats.loaded?r.stats:i.stats;if(s.aborted)return;if(this.ignoreFragment(i))return;const n=s.parsing.end-s.loading.start-Math.min(s.loading.first-s.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(n,s.loaded),s.bwEstimate=this.getBwEstimate(),i.bitrateTest?this.bitrateTestDelay=n/1e3:this.bitrateTestDelay=0}ignoreFragment(e){return e.type!==hn||"initSegment"===e.sn}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){const{maxAutoLevel:e,minAutoLevel:t}=this.hls,i=this.getBwEstimate(),r=this.hls.config.maxStarvationDelay,s=this.findBestLevel(i,t,e,0,r,1,1);if(s>-1)return s;const n=this.hls.firstLevel,a=Math.min(Math.max(n,t),e);return lr.warn(`[abr] Could not find best starting auto level. Defaulting to first in playlist ${n} clamped to ${a}`),a}get forcedAutoLevel(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}get nextAutoLevel(){const e=this.forcedAutoLevel,t=this.bwEstimator.canEstimate(),i=this.lastLoadedFragLevel>-1;if(!(-1===e||t&&i&&this.nextAutoLevelKey!==this.getAutoLevelKey()))return e;const r=t&&i?this.getNextABRAutoLevel():this.firstAutoLevel;if(-1!==e){const t=this.hls.levels;if(t.length>Math.max(e,r)&&t[e].loadError<=t[r].loadError)return e}return this._nextAutoLevel=r,this.nextAutoLevelKey=this.getAutoLevelKey(),r}getAutoLevelKey(){return`${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){const{fragCurrent:e,partCurrent:t,hls:i}=this,{maxAutoLevel:r,config:s,minAutoLevel:n}=i,a=t?t.duration:e?e.duration:0,o=this.getBwEstimate(),l=this.getStarvationDelay();let h=s.abrBandWidthFactor,c=s.abrBandWidthUpFactor;if(l){const e=this.findBestLevel(o,n,r,l,0,h,c);if(e>=0)return e}let d=a?Math.min(a,s.maxStarvationDelay):s.maxStarvationDelay;if(!l){const e=this.bitrateTestDelay;if(e){d=(a?Math.min(a,s.maxLoadingDelay):s.maxLoadingDelay)-e,lr.info(`[abr] bitrate test took ${Math.round(1e3*e)}ms, set first fragment max fetchDuration to ${Math.round(1e3*d)} ms`),h=c=1}}const u=this.findBestLevel(o,n,r,l,d,h,c);if(lr.info(`[abr] ${l?"rebuffering expected":"buffer is empty"}, optimal quality level ${u}`),u>-1)return u;const f=i.levels[n],g=i.levels[i.loadLevel];return(null==f?void 0:f.bitrate)<(null==g?void 0:g.bitrate)?n:i.loadLevel}getStarvationDelay(){const e=this.hls,t=e.media;if(!t)return 1/0;const i=t&&0!==t.playbackRate?Math.abs(t.playbackRate):1,r=e.mainForwardBufferInfo;return(r?r.len:0)/i}getBwEstimate(){return this.bwEstimator.canEstimate()?this.bwEstimator.getEstimate():this.hls.config.abrEwmaDefaultEstimate}findBestLevel(e,t,i,r,s,n,a){var o;const l=r+s,h=this.lastLoadedFragLevel,c=-1===h?this.hls.firstLevel:h,{fragCurrent:d,partCurrent:u}=this,{levels:f,allAudioTracks:g,loadLevel:m,config:p}=this.hls;if(1===f.length)return 0;const v=f[c],y=!(null==v||null==(o=v.details)||!o.live),T=-1===m||-1===h;let E,S="SDR",b=(null==v?void 0:v.frameRate)||0;const{audioPreference:L,videoPreference:w}=p,A=this.audioTracksByGroup||(this.audioTracksByGroup=function(e){return e.reduce(((e,t)=>{let i=e.groups[t.groupId];i||(i=e.groups[t.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),i.tracks.push(t);const r=t.channels||"2";return i.channels[r]=(i.channels[r]||0)+1,i.hasDefault=i.hasDefault||t.default,i.hasAutoSelect=i.hasAutoSelect||t.autoselect,i.hasDefault&&(e.hasDefaultAudio=!0),i.hasAutoSelect&&(e.hasAutoSelectAudio=!0),e}),{hasDefaultAudio:!1,hasAutoSelectAudio:!1,groups:{}})}(g));if(T){if(-1!==this.firstSelection)return this.firstSelection;const r=this.codecTiers||(this.codecTiers=function(e,t,i,r){return e.slice(i,r+1).reduce(((e,i)=>{if(!i.codecSet)return e;const r=i.audioGroups;let s=e[i.codecSet];s||(e[i.codecSet]=s={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!r,fragmentError:0}),s.minBitrate=Math.min(s.minBitrate,i.bitrate);const n=Math.min(i.height,i.width);return s.minHeight=Math.min(s.minHeight,n),s.minFramerate=Math.min(s.minFramerate,i.frameRate),s.maxScore=Math.max(s.maxScore,i.score),s.fragmentError+=i.fragmentError,s.videoRanges[i.videoRange]=(s.videoRanges[i.videoRange]||0)+1,r&&r.forEach((e=>{if(!e)return;const i=t.groups[e];i&&(s.hasDefaultAudio=s.hasDefaultAudio||t.hasDefaultAudio?i.hasDefault:i.hasAutoSelect||!t.hasDefaultAudio&&!t.hasAutoSelectAudio,Object.keys(i.channels).forEach((e=>{s.channels[e]=(s.channels[e]||0)+i.channels[e]})))})),e}),{})}(f,A,t,i)),s=function(e,t,i,r,s){const n=Object.keys(e),a=null==r?void 0:r.channels,o=null==r?void 0:r.audioCodec,l=a&&2===parseInt(a);let h=!0,c=!1,d=1/0,u=1/0,f=1/0,g=0,m=[];const{preferHDR:p,allowedVideoRanges:v}=ma(t,s);for(let t=n.length;t--;){const i=e[n[t]];h=i.channels[2]>0,d=Math.min(d,i.minHeight),u=Math.min(u,i.minFramerate),f=Math.min(f,i.minBitrate);const r=v.filter((e=>i.videoRanges[e]>0));r.length>0&&(c=!0,m=r)}d=Ji(d)?d:0,u=Ji(u)?u:0;const y=Math.max(1080,d),T=Math.max(30,u);return f=Ji(f)?f:i,i=Math.max(f,i),c||(t=void 0,m=[]),{codecSet:n.reduce(((t,r)=>{const s=e[r];if(r===t)return t;if(s.minBitrate>i)return pa(r,`min bitrate of ${s.minBitrate} > current estimate of ${i}`),t;if(!s.hasDefaultAudio)return pa(r,"no renditions with default or auto-select sound found"),t;if(o&&r.indexOf(o.substring(0,4))%5!=0)return pa(r,`audio codec preference "${o}" not found`),t;if(a&&!l){if(!s.channels[a])return pa(r,`no renditions with ${a} channel sound found (channels options: ${Object.keys(s.channels)})`),t}else if((!o||l)&&h&&0===s.channels[2])return pa(r,"no renditions with stereo sound found"),t;return s.minHeight>y?(pa(r,`min resolution of ${s.minHeight} > maximum of ${y}`),t):s.minFramerate>T?(pa(r,`min framerate of ${s.minFramerate} > maximum of ${T}`),t):m.some((e=>s.videoRanges[e]>0))?s.maxScore=$s(t)||s.fragmentError>e[t].fragmentError)?t:(g=s.maxScore,r):(pa(r,`no variants with VIDEO-RANGE of ${JSON.stringify(m)} found`),t)}),void 0),videoRanges:m,preferHDR:p,minFramerate:u,minBitrate:f}}(r,S,e,L,w),{codecSet:n,videoRanges:a,minFramerate:o,minBitrate:l,preferHDR:h}=s;E=n,S=h?a[a.length-1]:a[0],b=o,e=Math.max(e,l),lr.log(`[abr] picked start tier ${JSON.stringify(s)}`)}else E=null==v?void 0:v.codecSet,S=null==v?void 0:v.videoRange;const R=u?u.duration:d?d.duration:0,k=this.bwEstimator.getEstimateTTFB()/1e3,_=[];for(let o=i;o>=t;o--){var D;const t=f[o],d=o>c;if(!t)continue;if(p.useMediaCapabilities&&!t.supportedResult&&!t.supportedPromise){const i=navigator.mediaCapabilities;"function"==typeof(null==i?void 0:i.decodingInfo)&&fa(t,A,S,b,e,L)?(t.supportedPromise=ga(t,A,i),t.supportedPromise.then((e=>{if(!this.hls)return;t.supportedResult=e;const i=this.hls.levels,r=i.indexOf(t);e.error?lr.warn(`[abr] MediaCapabilities decodingInfo error: "${e.error}" for level ${r} ${JSON.stringify(e)}`):e.supported||(lr.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${r} ${JSON.stringify(e)}`),r>-1&&i.length>1&&(lr.log(`[abr] Removing unsupported level ${r}`),this.hls.removeLevel(r)))}))):t.supportedResult=da}if(E&&t.codecSet!==E||S&&t.videoRange!==S||d&&b>t.frameRate||!d&&b>0&&b=2*R&&0===s?f[o].averageBitrate:f[o].maxBitrate,I=this.getTimeToLoadFrag(k,x,C*w,void 0===g);if(x>=C&&(o===h||0===t.loadError&&0===t.fragmentError)&&(I<=k||!Ji(I)||y&&!this.bitrateTestDelay||I${o} adjustedbw(${Math.round(x)})-bitrate=${Math.round(x-C)} ttfb:${k.toFixed(1)} avgDuration:${w.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${I.toFixed(1)} firstSelection:${T} codecSet:${E} videoRange:${S} hls.loadLevel:${m}`)),T&&(this.firstSelection=o),o}}return-1}set nextAutoLevel(e){const{maxAutoLevel:t,minAutoLevel:i}=this.hls,r=Math.min(Math.max(e,i),t);this._nextAutoLevel!==r&&(this.nextAutoLevelKey="",this._nextAutoLevel=r)}},bufferController: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=e=>{this.hls&&this.hls.pauseBuffering()},this._onStartStreaming=e=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=()=>{const{media:e,mediaSource:t}=this;this.log("Media source opened"),e&&(e.removeEventListener("emptied",this._onMediaEmptied),this.updateMediaElementDuration(),this.hls.trigger(tr.MEDIA_ATTACHED,{media:e,mediaSource:t})),t&&t.removeEventListener("sourceopen",this._onMediaSourceOpen),this.checkPendingTracks()},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{const{mediaSrc:e,_objectUrl:t}=this;e!==t&&lr.error(`Media element src was set while attaching MediaSource (${t} > ${e})`)},this.hls=e;const t="[buffer-controller]";var i;this.appendSource=(i=Os(e.config.preferManagedMediaSource),"undefined"!=typeof self&&i===self.ManagedMediaSource),this.log=lr.log.bind(lr,t),this.warn=lr.warn.bind(lr,t),this.error=lr.error.bind(lr,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(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.BUFFER_RESET,this.onBufferReset,this),e.on(tr.BUFFER_APPENDING,this.onBufferAppending,this),e.on(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.on(tr.BUFFER_EOS,this.onBufferEos,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(tr.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(tr.FRAG_PARSED,this.onFragParsed,this),e.on(tr.FRAG_CHANGED,this.onFragChanged,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.BUFFER_RESET,this.onBufferReset,this),e.off(tr.BUFFER_APPENDING,this.onBufferAppending,this),e.off(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.off(tr.BUFFER_EOS,this.onBufferEos,this),e.off(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(tr.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(tr.FRAG_PARSED,this.onFragParsed,this),e.off(tr.FRAG_CHANGED,this.onFragChanged,this)}_initSourceBuffer(){this.sourceBuffer={},this.operationQueue=new Tl(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 i=2;(t.audio&&!t.video||!t.altAudio)&&(i=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=i,this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`)}onMediaAttaching(e,t){const i=this.media=t.media,r=Os(this.appendSource);if(i&&r){var s;const e=this.mediaSource=new r;this.log(`created media source: ${null==(s=e.constructor)?void 0:s.name}`),e.addEventListener("sourceopen",this._onMediaSourceOpen),e.addEventListener("sourceended",this._onMediaSourceEnded),e.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(e.addEventListener("startstreaming",this._onStartStreaming),e.addEventListener("endstreaming",this._onEndStreaming));const t=this._objectUrl=self.URL.createObjectURL(e);if(this.appendSource)try{i.removeAttribute("src");const r=self.ManagedMediaSource;i.disableRemotePlayback=i.disableRemotePlayback||r&&e instanceof r,Sl(i),function(e,t){const i=self.document.createElement("source");i.type="video/mp4",i.src=t,e.appendChild(i)}(i,t),i.load()}catch(e){i.src=t}else i.src=t;i.addEventListener("emptied",this._onMediaEmptied)}}onMediaDetaching(){const{media:e,mediaSource:t,_objectUrl:i}=this;if(t){if(this.log("media source detaching"),"open"===t.readyState)try{t.endOfStream()}catch(e){this.warn(`onMediaDetaching: ${e.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),i&&self.URL.revokeObjectURL(i),this.mediaSrc===i?(e.removeAttribute("src"),this.appendSource&&Sl(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(tr.MEDIA_DETACHED,void 0)}onBufferReset(){this.getSourceBufferTypes().forEach((e=>{this.resetBuffer(e)})),this._initSourceBuffer()}resetBuffer(e){const t=this.sourceBuffer[e];try{var i;if(t)this.removeBufferListeners(e),this.sourceBuffer[e]=void 0,null!=(i=this.mediaSource)&&i.sourceBuffers.length&&this.mediaSource.removeSourceBuffer(t)}catch(t){this.warn(`onBufferReset ${e}`,t)}}onBufferCodecs(e,t){const i=this.getSourceBufferTypes().length,r=Object.keys(t);if(r.forEach((e=>{if(i){const i=this.tracks[e];if(i&&"function"==typeof i.buffer.changeType){var r;const{id:s,codec:n,levelCodec:a,container:o,metadata:l}=t[e],h=Hs(i.codec,i.levelCodec),c=null==h?void 0:h.replace(El,"$1");let d=Hs(n,a);const u=null==(r=d)?void 0:r.replace(El,"$1");if(d&&c!==u){"audio"===e.slice(0,5)&&(d=Vs(d,this.appendSource));const t=`${o};codecs=${d}`;this.appendChangeType(e,t),this.log(`switching codec ${h} to ${d}`),this.tracks[e]={buffer:i.buffer,codec:n,container:o,levelCodec:a,metadata:l,id:s}}}}else this.pendingTracks[e]=t[e]})),i)return;const s=Math.max(this.bufferCodecEventsExpected-1,0);this.bufferCodecEventsExpected!==s&&(this.log(`${s} bufferCodec event(s) expected ${r.join(",")}`),this.bufferCodecEventsExpected=s),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks()}appendChangeType(e,t){const{operationQueue:i}=this,r={execute:()=>{const r=this.sourceBuffer[e];r&&(this.log(`changing ${e} sourceBuffer type to ${t}`),r.changeType(t)),i.shiftAndExecuteNext(e)},onStart:()=>{},onComplete:()=>{},onError:t=>{this.warn(`Failed to change ${e} SourceBuffer type`,t)}};i.append(r,e,!!this.pendingTracks[e])}onBufferAppending(e,t){const{hls:i,operationQueue:r,tracks:s}=this,{data:n,type:a,frag:o,part:l,chunkMeta:h}=t,c=h.buffering[a],d=self.performance.now();c.start=d;const u=o.stats.buffering,f=l?l.stats.buffering:null;0===u.start&&(u.start=d),f&&0===f.start&&(f.start=d);const g=s.audio;let m=!1;"audio"===a&&"audio/mpeg"===(null==g?void 0:g.container)&&(m=!this.lastMpegAudioChunk||1===h.id||this.lastMpegAudioChunk.sn!==h.sn,this.lastMpegAudioChunk=h);const p=o.start,v={execute:()=>{if(c.executeStart=self.performance.now(),m){const e=this.sourceBuffer[a];if(e){const t=p-e.timestampOffset;Math.abs(t)>=.1&&(this.log(`Updating audio SourceBuffer timestampOffset to ${p} (delta: ${t}) sn: ${o.sn})`),e.timestampOffset=p)}}this.appendExecutor(n,a)},onStart:()=>{},onComplete:()=>{const e=self.performance.now();c.executeEnd=c.end=e,0===u.first&&(u.first=e),f&&0===f.first&&(f.first=e);const{sourceBuffer:t}=this,i={};for(const e in t)i[e]=xa.getBuffered(t[e]);this.appendErrors[a]=0,"audio"===a||"video"===a?this.appendErrors.audiovideo=0:(this.appendErrors.audio=0,this.appendErrors.video=0),this.hls.trigger(tr.BUFFER_APPENDED,{type:a,frag:o,part:l,chunkMeta:h,parent:o.type,timeRanges:i})},onError:e=>{const t={type:ir.MEDIA_ERROR,parent:o.type,details:rr.BUFFER_APPEND_ERROR,sourceBufferName:a,frag:o,part:l,chunkMeta:h,error:e,err:e,fatal:!1};if(e.code===DOMException.QUOTA_EXCEEDED_ERR)t.details=rr.BUFFER_FULL_ERROR;else{const e=++this.appendErrors[a];t.details=rr.BUFFER_APPEND_ERROR,this.warn(`Failed ${e}/${i.config.appendErrorMaxRetry} times to append segment in "${a}" sourceBuffer`),e>=i.config.appendErrorMaxRetry&&(t.fatal=!0)}i.trigger(tr.ERROR,t)}};r.append(v,a,!!this.pendingTracks[a])}onBufferFlushing(e,t){const{operationQueue:i}=this,r=e=>({execute:this.removeExecutor.bind(this,e,t.startOffset,t.endOffset),onStart:()=>{},onComplete:()=>{this.hls.trigger(tr.BUFFER_FLUSHED,{type:e})},onError:t=>{this.warn(`Failed to remove from ${e} SourceBuffer`,t)}});t.type?i.append(r(t.type),t.type):this.getSourceBufferTypes().forEach((e=>{i.append(r(e),e)}))}onFragParsed(e,t){const{frag:i,part:r}=t,s=[],n=r?r.elementaryStreams:i.elementaryStreams;n[vr]?s.push("audiovideo"):(n[mr]&&s.push("audio"),n[pr]&&s.push("video"));0===s.length&&this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${i.type} level: ${i.level} sn: ${i.sn}`),this.blockBuffers((()=>{const e=self.performance.now();i.stats.buffering.end=e,r&&(r.stats.buffering.end=e);const t=r?r.stats:i.stats;this.hls.trigger(tr.FRAG_BUFFERED,{frag:i,part:r,stats:t,id:i.type})}),s)}onFragChanged(e,t){this.trimBuffers()}onBufferEos(e,t){this.getSourceBufferTypes().reduce(((e,i)=>{const r=this.sourceBuffer[i];return!r||t.type&&t.type!==i||(r.ending=!0,r.ended||(r.ended=!0,this.log(`${i} sourceBuffer now EOS`))),e&&!(r&&!r.ended)}),!0)&&(this.log("Queueing mediaSource.endOfStream()"),this.blockBuffers((()=>{this.getSourceBufferTypes().forEach((e=>{const t=this.sourceBuffer[e];t&&(t.ending=!1)}));const{mediaSource:e}=this;e&&"open"===e.readyState?(this.log("Calling mediaSource.endOfStream()"),e.endOfStream()):e&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${e.readyState}`)})))}onLevelUpdated(e,{details:t}){t.fragments.length&&(this.details=t,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())}trimBuffers(){const{hls:e,details:t,media:i}=this;if(!i||null===t)return;if(!this.getSourceBufferTypes().length)return;const r=e.config,s=i.currentTime,n=t.levelTargetDuration,a=t.live&&null!==r.liveBackBufferLength?r.liveBackBufferLength:r.backBufferLength;if(Ji(a)&&a>0){const e=Math.max(a,n),t=Math.floor(s/n)*n-e;this.flushBackBuffer(s,n,t)}if(Ji(r.frontBufferFlushThreshold)&&r.frontBufferFlushThreshold>0){const e=Math.max(r.maxBufferLength,r.frontBufferFlushThreshold),t=Math.max(e,n),i=Math.floor(s/n)*n+t;this.flushFrontBuffer(s,n,i)}}flushBackBuffer(e,t,i){const{details:r,sourceBuffer:s}=this;this.getSourceBufferTypes().forEach((n=>{const a=s[n];if(a){const s=xa.getBuffered(a);if(s.length>0&&i>s.start(0)){if(this.hls.trigger(tr.BACK_BUFFER_REACHED,{bufferEnd:i}),null!=r&&r.live)this.hls.trigger(tr.LIVE_BACK_BUFFER_REACHED,{bufferEnd:i});else if(a.ended&&s.end(s.length-1)-e<2*t)return void this.log(`Cannot flush ${n} back buffer while SourceBuffer is in ended state`);this.hls.trigger(tr.BUFFER_FLUSHING,{startOffset:0,endOffset:i,type:n})}}}))}flushFrontBuffer(e,t,i){const{sourceBuffer:r}=this;this.getSourceBufferTypes().forEach((s=>{const n=r[s];if(n){const r=xa.getBuffered(n),a=r.length;if(a<2)return;const o=r.start(a-1),l=r.end(a-1);if(i>o||e>=o&&e<=l)return;if(n.ended&&e-l<2*t)return void this.log(`Cannot flush ${s} front buffer while SourceBuffer is in ended state`);this.hls.trigger(tr.BUFFER_FLUSHING,{startOffset:o,endOffset:1/0,type:s})}}))}updateMediaElementDuration(){if(!this.details||!this.media||!this.mediaSource||"open"!==this.mediaSource.readyState)return;const{details:e,hls:t,media:i,mediaSource:r}=this,s=e.fragments[0].start+e.totalduration,n=i.duration,a=Ji(r.duration)?r.duration:0;e.live&&t.config.liveDurationInfinity?(r.duration=1/0,this.updateSeekableRange(e)):(s>a&&s>n||!Ji(n))&&(this.log(`Updating Media Source duration to ${s.toFixed(3)}`),r.duration=s)}updateSeekableRange(e){const t=this.mediaSource,i=e.fragments;if(i.length&&e.live&&null!=t&&t.setLiveSeekableRange){const r=Math.max(0,i[0].start),s=Math.max(r,r+e.totalduration);this.log(`Media Source duration is set to ${t.duration}. Setting seekable range to ${r}-${s}.`),t.setLiveSeekableRange(r,s)}}checkPendingTracks(){const{bufferCodecEventsExpected:e,operationQueue:t,pendingTracks:i}=this,r=Object.keys(i).length;if(r&&(!e||2===r||"audiovideo"in i)){this.createSourceBuffers(i),this.pendingTracks={};const e=this.getSourceBufferTypes();if(e.length)this.hls.trigger(tr.BUFFER_CREATED,{tracks:this.tracks}),e.forEach((e=>{t.executeNext(e)}));else{const e=new Error("could not create source buffer for media codec(s)");this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:e,reason:e.message})}}}createSourceBuffers(e){const{sourceBuffer:t,mediaSource:i}=this;if(!i)throw Error("createSourceBuffers called when mediaSource was null");for(const s in e)if(!t[s]){var r;const n=e[s];if(!n)throw Error(`source buffer exists for track ${s}, however track does not`);let a=-1===(null==(r=n.levelCodec)?void 0:r.indexOf(","))?n.levelCodec:n.codec;a&&"audio"===s.slice(0,5)&&(a=Vs(a,this.appendSource));const o=`${n.container};codecs=${a}`;this.log(`creating sourceBuffer(${o})`);try{const e=t[s]=i.addSourceBuffer(o),r=s;this.addBufferListener(r,"updatestart",this._onSBUpdateStart),this.addBufferListener(r,"updateend",this._onSBUpdateEnd),this.addBufferListener(r,"error",this._onSBUpdateError),this.appendSource&&this.addBufferListener(r,"bufferedchange",((e,t)=>{const i=t.removedRanges;null!=i&&i.length&&this.hls.trigger(tr.BUFFER_FLUSHED,{type:s})})),this.tracks[s]={buffer:e,codec:a,container:n.container,levelCodec:n.levelCodec,metadata:n.metadata,id:n.id}}catch(e){this.error(`error while trying to add sourceBuffer: ${e.message}`),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:e,sourceBufferName:s,mimeType:o})}}}get mediaSrc(){var e;const t=(null==(e=this.media)?void 0:e.firstChild)||this.media;return null==t?void 0:t.src}_onSBUpdateStart(e){const{operationQueue:t}=this;t.current(e).onStart()}_onSBUpdateEnd(e){var t;if("closed"===(null==(t=this.mediaSource)?void 0:t.readyState))return void this.resetBuffer(e);const{operationQueue:i}=this;i.current(e).onComplete(),i.shiftAndExecuteNext(e)}_onSBUpdateError(e,t){var i;const r=new Error(`${e} SourceBuffer error. MediaSource readyState: ${null==(i=this.mediaSource)?void 0:i.readyState}`);this.error(`${r}`,t),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_APPENDING_ERROR,sourceBufferName:e,error:r,fatal:!1});const s=this.operationQueue.current(e);s&&s.onError(r)}removeExecutor(e,t,i){const{media:r,mediaSource:s,operationQueue:n,sourceBuffer:a}=this,o=a[e];if(!r||!s||!o)return this.warn(`Attempting to remove from the ${e} SourceBuffer, but it does not exist`),void n.shiftAndExecuteNext(e);const l=Ji(r.duration)?r.duration:1/0,h=Ji(s.duration)?s.duration:1/0,c=Math.max(0,t),d=Math.min(i,l,h);d>c&&(!o.ending||o.ended)?(o.ended=!1,this.log(`Removing [${c},${d}] from the ${e} SourceBuffer`),o.remove(c,d)):n.shiftAndExecuteNext(e)}appendExecutor(e,t){const i=this.sourceBuffer[t];if(i)i.ended=!1,i.appendBuffer(e);else if(!this.pendingTracks[t])throw new Error(`Attempting to append to the ${t} SourceBuffer, but it does not exist`)}blockBuffers(e,t=this.getSourceBufferTypes()){if(!t.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(e);const{operationQueue:i}=this,r=t.map((e=>i.appendBlocker(e)));Promise.all(r).then((()=>{e(),t.forEach((e=>{const t=this.sourceBuffer[e];null!=t&&t.updating||i.shiftAndExecuteNext(e)}))}))}getSourceBufferTypes(){return Object.keys(this.sourceBuffer)}addBufferListener(e,t,i){const r=this.sourceBuffer[e];if(!r)return;const s=i.bind(this,e);this.listeners[e].push({event:t,listener:s}),r.addEventListener(t,s)}removeBufferListeners(e){const t=this.sourceBuffer[e];t&&this.listeners[e].forEach((e=>{t.removeEventListener(e.event,e.listener)}))}},capLevelController:ph,errorController: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=lr.log.bind(lr,"[info]:"),this.warn=lr.warn.bind(lr,"[warning]:"),this.error=lr.error.bind(lr,"[error]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(tr.ERROR,this.onError,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){const e=this.hls;e&&(e.off(tr.ERROR,this.onError,this),e.off(tr.ERROR,this.onErrorOut,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}}startLoad(e){}stopLoad(){this.playlistError=0}getVariantLevelIndex(e){return(null==e?void 0:e.type)===hn?e.level:this.hls.loadLevel}onManifestLoading(){this.playlistError=0,this.penalizedRenditions={}}onLevelUpdated(){this.playlistError=0}onError(e,t){var i,r;if(t.fatal)return;const s=this.hls,n=t.context;switch(t.details){case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:return void(t.errorAction=this.getFragRetryOrSwitchAction(t));case rr.FRAG_PARSING_ERROR:if(null!=(i=t.frag)&&i.gap)return void(t.errorAction={action:ta,flags:na});case rr.FRAG_GAP:case rr.FRAG_DECRYPT_ERROR:return t.errorAction=this.getFragRetryOrSwitchAction(t),void(t.errorAction.action=ia);case rr.LEVEL_EMPTY_ERROR:case rr.LEVEL_PARSING_ERROR:{var a,o;const e=t.parent===hn?t.level:s.loadLevel;t.details===rr.LEVEL_EMPTY_ERROR&&null!=(a=t.context)&&null!=(o=a.levelDetails)&&o.live?t.errorAction=this.getPlaylistRetryOrSwitchAction(t,e):(t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,e))}return;case rr.LEVEL_LOAD_ERROR:case rr.LEVEL_LOAD_TIMEOUT:return void("number"==typeof(null==n?void 0:n.level)&&(t.errorAction=this.getPlaylistRetryOrSwitchAction(t,n.level)));case rr.AUDIO_TRACK_LOAD_ERROR:case rr.AUDIO_TRACK_LOAD_TIMEOUT:case rr.SUBTITLE_LOAD_ERROR:case rr.SUBTITLE_TRACK_LOAD_TIMEOUT:if(n){const e=s.levels[s.loadLevel];if(e&&(n.type===on&&e.hasAudioGroup(n.groupId)||n.type===ln&&e.hasSubtitleGroup(n.groupId)))return t.errorAction=this.getPlaylistRetryOrSwitchAction(t,s.loadLevel),t.errorAction.action=ia,void(t.errorAction.flags=aa)}return;case rr.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:{const e=s.levels[s.loadLevel],i=null==e?void 0:e.attrs["HDCP-LEVEL"];i?t.errorAction={action:ia,flags:oa,hdcpLevel:i}:this.keySystemError(t)}return;case rr.BUFFER_ADD_CODEC_ERROR:case rr.REMUX_ALLOC_ERROR:case rr.BUFFER_APPEND_ERROR:return void(t.errorAction=this.getLevelSwitchAction(t,null!=(r=t.level)?r:s.loadLevel));case rr.INTERNAL_EXCEPTION:case rr.BUFFER_APPENDING_ERROR:case rr.BUFFER_FULL_ERROR:case rr.LEVEL_SWITCH_ERROR:case rr.BUFFER_STALLED_ERROR:case rr.BUFFER_SEEK_OVER_HOLE:case rr.BUFFER_NUDGE_ON_STALL:return void(t.errorAction={action:ta,flags:na})}t.type===ir.KEY_SYSTEM_ERROR&&this.keySystemError(t)}keySystemError(e){const t=this.getVariantLevelIndex(e.frag);e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,t)}getPlaylistRetryOrSwitchAction(e,t){const i=Yn(this.hls.config.playlistLoadPolicy,e),r=this.playlistError++;if(Xn(i,r,Wn(e),e.response))return{action:sa,flags:na,retryConfig:i,retryCount:r};const s=this.getLevelSwitchAction(e,t);return i&&(s.retryConfig=i,s.retryCount=r),s}getFragRetryOrSwitchAction(e){const t=this.hls,i=this.getVariantLevelIndex(e.frag),r=t.levels[i],{fragLoadPolicy:s,keyLoadPolicy:n}=t.config,a=Yn(e.details.startsWith("key")?n:s,e),o=t.levels.reduce(((e,t)=>e+t.fragmentError),0);if(r){e.details!==rr.FRAG_GAP&&r.fragmentError++;if(Xn(a,o,Wn(e),e.response))return{action:sa,flags:na,retryConfig:a,retryCount:o}}const l=this.getLevelSwitchAction(e,i);return a&&(l.retryConfig=a,l.retryCount=o),l}getLevelSwitchAction(e,t){const i=this.hls;null==t&&(t=i.loadLevel);const r=this.hls.levels[t];if(r){var s,n;const t=e.details;r.loadError++,t===rr.BUFFER_APPEND_ERROR&&r.fragmentError++;let l=-1;const{levels:h,loadLevel:c,minAutoLevel:d,maxAutoLevel:u}=i;i.autoLevelEnabled||(i.loadLevel=-1);const f=null==(s=e.frag)?void 0:s.type,g=(f===cn&&t===rr.FRAG_PARSING_ERROR||"audio"===e.sourceBufferName&&(t===rr.BUFFER_ADD_CODEC_ERROR||t===rr.BUFFER_APPEND_ERROR))&&h.some((({audioCodec:e})=>r.audioCodec!==e)),m="video"===e.sourceBufferName&&(t===rr.BUFFER_ADD_CODEC_ERROR||t===rr.BUFFER_APPEND_ERROR)&&h.some((({codecSet:e,audioCodec:t})=>r.codecSet!==e&&r.audioCodec===t)),{type:p,groupId:v}=null!=(n=e.context)?n:{};for(let i=h.length;i--;){const s=(i+c)%h.length;if(s!==c&&s>=d&&s<=u&&0===h[s].loadError){var a,o;const i=h[s];if(t===rr.FRAG_GAP&&f===hn&&e.frag){const t=h[s].details;if(t){const i=Jn(e.frag,t.fragments,e.frag.start);if(null!=i&&i.gap)continue}}else{if(p===on&&i.hasAudioGroup(v)||p===ln&&i.hasSubtitleGroup(v))continue;if(f===cn&&null!=(a=r.audioGroups)&&a.some((e=>i.hasAudioGroup(e)))||f===dn&&null!=(o=r.subtitleGroups)&&o.some((e=>i.hasSubtitleGroup(e)))||g&&r.audioCodec===i.audioCodec||!g&&r.audioCodec!==i.audioCodec||m&&r.codecSet===i.codecSet)continue}l=s;break}}if(l>-1&&i.loadLevel!==l)return e.levelRetry=!0,this.playlistError=0,{action:ia,flags:na,nextAutoLevel:l}}return{action:ia,flags:aa}}onErrorOut(e,t){var i;switch(null==(i=t.errorAction)?void 0:i.action){case ta:break;case ia:this.sendAlternateToPenaltyBox(t),t.errorAction.resolved||t.details===rr.FRAG_GAP?/MediaSource readyState: ended/.test(t.error.message)&&(this.warn(`MediaSource ended after "${t.sourceBufferName}" sourceBuffer append error. Attempting to recover from media error.`),this.hls.recoverMediaError()):t.fatal=!0}t.fatal&&this.hls.stopLoad()}sendAlternateToPenaltyBox(e){const t=this.hls,i=e.errorAction;if(!i)return;const{flags:r,hdcpLevel:s,nextAutoLevel:n}=i;switch(r){case na:this.switchLevel(e,n);break;case oa:s&&(t.maxHdcpLevel=Dn[Dn.indexOf(s)-1],i.resolved=!0),this.warn(`Restricting playback to HDCP-LEVEL of "${t.maxHdcpLevel}" or lower`)}i.resolved||this.switchLevel(e,n)}switchLevel(e,t){void 0!==t&&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)}},fpsController: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(tr.MEDIA_ATTACHING,this.onMediaAttaching,this)}unregisterListeners(){this.hls.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(e,t){const i=this.hls.config;if(i.capLevelOnFPSDrop){const e=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=e,e&&"function"==typeof e.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),i.fpsDroppedMonitoringPeriod)}}checkFPS(e,t,i){const r=performance.now();if(t){if(this.lastTime){const e=r-this.lastTime,s=i-this.lastDroppedFrames,n=t-this.lastDecodedFrames,a=1e3*s/e,o=this.hls;if(o.trigger(tr.FPS_DROP,{currentDropped:s,currentDecoded:n,totalDroppedFrames:i}),a>0&&s>o.config.fpsDroppedMonitoringThreshold*n){let e=o.currentLevel;lr.warn("drop FPS ratio greater than max allowed value for currentLevel: "+e),e>0&&(-1===o.autoLevelCapping||o.autoLevelCapping>=e)&&(e-=1,o.trigger(tr.FPS_DROP_LEVEL_CAPPING,{level:e,droppedLevel:o.currentLevel}),o.autoLevelCapping=e,this.streamController.nextLevelSwitch())}}this.lastTime=r,this.lastDroppedFrames=i,this.lastDecodedFrames=t}}checkFPSInterval(){const e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){const t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)}},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:Mr,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableID3MetadataCues:!0,useMediaCapabilities:!0,certLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null}},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},{cueHandler:fc,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:class extends no{constructor(e,t,i){super(e,t,i,"[subtitle-stream-controller]",dn),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this._registerListeners()}onHandlerDestroying(){this._unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}_registerListeners(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.ERROR,this.onError,this),e.on(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(tr.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(tr.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this)}_unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.ERROR,this.onError,this),e.off(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(tr.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(tr.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.off(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this)}startLoad(e){this.stopLoad(),this.state=qa,this.setInterval(500),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){const{frag:i,success:r}=t;if(this.fragPrevious=i,this.state=qa,!r)return;const s=this.tracksBuffered[this.currentTrackId];if(!s)return;let n;const a=i.start;for(let e=0;e=s[e].start&&a<=s[e].end){n=s[e];break}const o=i.start+i.duration;n?n.end=o:(n={start:a,end:o},s.push(n)),this.fragmentTracker.fragBuffered(i),this.fragBufferedComplete(i,null)}onBufferFlushing(e,t){const{startOffset:i,endOffset:r}=t;if(0===i&&r!==Number.POSITIVE_INFINITY){const e=r-1;if(e<=0)return;t.endOffsetSubtitles=Math.max(0,e),this.tracksBuffered.forEach((t=>{for(let i=0;inew Fn(e))):(this.tracksBuffered=[],this.levels=t.map((e=>{const t=new Fn(e);return this.tracksBuffered[t.id]=[],t})),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,dn),this.fragPrevious=null,this.mediaBuffer=null)}onSubtitleTrackSwitch(e,t){var i;if(this.currentTrackId=t.id,null==(i=this.levels)||!i.length||-1===this.currentTrackId)return void this.clearInterval();const r=this.levels[this.currentTrackId];null!=r&&r.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,r&&this.setInterval(500)}onSubtitleTrackLoaded(e,t){var i;const{currentTrackId:r,levels:s}=this,{details:n,id:a}=t;if(!s)return void this.warn(`Subtitle tracks were reset while loading level ${a}`);const o=s[a];if(a>=s.length||!o)return;this.log(`Subtitle track ${a} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""},duration:${n.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let l=0;if(n.live||null!=(i=o.details)&&i.live){const e=this.mainDetails;if(n.deltaUpdateFailed||!e)return;const t=e.fragments[0];var h;if(o.details)l=this.alignPlaylists(n,o.details,null==(h=this.levelLastLoaded)?void 0:h.details),0===l&&t&&(l=t.start,Kn(n,l));else n.hasProgramDateTime&&e.hasProgramDateTime?(Fa(n,e),l=n.fragments[0].start):t&&(l=t.start,Kn(n,l))}if(o.details=n,this.levelLastLoaded=o,a===r&&(this.startFragRequested||!this.mainDetails&&n.live||this.setStartPosition(this.mainDetails||n,l),this.tick(),n.live&&!this.fragCurrent&&this.media&&this.state===qa)){Jn(null,n.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),o.details=void 0)}}_handleFragmentLoadComplete(e){const{frag:t,payload:i}=e,r=t.decryptdata,s=this.hls;if(!this.fragContextChanged(t)&&i&&i.byteLength>0&&null!=r&&r.key&&r.iv&&"AES-128"===r.method){const e=performance.now();this.decrypter.decrypt(new Uint8Array(i),r.key.buffer,r.iv.buffer).catch((e=>{throw s.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.FRAG_DECRYPT_ERROR,fatal:!1,error:e,reason:e.message,frag:t}),e})).then((i=>{const r=performance.now();s.trigger(tr.FRAG_DECRYPTED,{frag:t,payload:i,stats:{tstart:e,tdecrypt:r}})})).catch((e=>{this.warn(`${e.name}: ${e.message}`),this.state=qa}))}}doTick(){if(this.media){if(this.state===qa){const{currentTrackId:e,levels:t}=this,i=null==t?void 0:t[e];if(!i||!t.length||!i.details)return;const{config:r}=this,s=this.getLoadPosition(),n=xa.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],s,r.maxBufferHole),{end:a,len:o}=n,l=this.getFwdBufferInfo(this.media,hn),h=i.details;if(o>this.getMaxBufferLength(null==l?void 0:l.len)+h.levelTargetDuration)return;const c=h.fragments,d=c.length,u=h.edge;let f=null;const g=this.fragPrevious;if(au-e?0:e;f=Jn(g,c,Math.max(c[0].start,a),t),!f&&g&&g.startthis.pollTrackChange(0),this.useTextTrackPolling=!1,this.subtitlePollingInterval=-1,this._subtitleDisplay=!0,this.onTextTracksChanged=()=>{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let e=null;const t=Tn(this.media.textTracks);for(let i=0;i-1&&this.toggleTrackModes()}registerListeners(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVEL_LOADING,this.onLevelLoading,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVEL_LOADING,this.onLevelLoading,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(tr.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);Tn(this.media.textTracks).forEach((e=>{vn(e)})),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){const{id:i,groupId:r,details:s}=t,n=this.tracksInGroup[i];if(!n||n.groupId!==r)return void this.warn(`Subtitle track with id:${i} and group:${r} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=t.details,this.log(`Subtitle track ${i} "${n.name}" lang:${n.lang} group:${r} loaded [${s.startSN}-${s.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.subtitleGroups||null,r=this.groupIds;let s=this.currentTrack;if(!i||(null==r?void 0:r.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==r?void 0:r.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!s&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.subtitlePreference;if(!s&&t){this.selectDefaultTrack=!1;const i=va(t,e);if(i>-1)s=e[i];else{const e=va(t,this.tracks);s=this.tracks[e]}}let r=this.findTrackId(s);-1===r&&s&&(r=this.findTrackId(null));const n={subtitleTracks:e};this.log(`Updating subtitle tracks, ${e.length} track(s) found in "${null==i?void 0:i.join(",")}" group-id`),this.hls.trigger(tr.SUBTITLE_TRACKS_UPDATED,n),-1!==r&&-1===this.trackId&&this.setSubtitleTrack(r)}else this.shouldReloadPlaylist(s)&&this.setSubtitleTrack(this.trackId)}findTrackId(e){const t=this.tracksInGroup,i=this.selectDefaultTrack;for(let r=0;r-1){const e=this.tracksInGroup[r];return this.setSubtitleTrack(r),e}if(i)return null;{const i=va(e,t);if(i>-1)return t[i]}}}return null}loadPlaylist(e){super.loadPlaylist();const t=this.currentTrack;if(this.shouldLoadPlaylist(t)&&t){const i=t.id,r=t.groupId;let s=t.url;if(e)try{s=e.addDirectives(s)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}this.log(`Loading subtitle playlist for id ${i}`),this.hls.trigger(tr.SUBTITLE_TRACK_LOADING,{url:s,id:i,groupId:r,deliveryDirectives:e||null})}}toggleTrackModes(){const{media:e}=this;if(!e)return;const t=Tn(e.textTracks),i=this.currentTrack;let r;if(i&&(r=t.filter((e=>vl(i,e)))[0],r||this.warn(`Unable to find subtitle TextTrack with name "${i.name}" and language "${i.lang}"`)),[].slice.call(t).forEach((e=>{"disabled"!==e.mode&&e!==r&&(e.mode="disabled")})),r){const e=this.subtitleDisplay?"showing":"hidden";r.mode!==e&&(r.mode=e)}}setSubtitleTrack(e){const t=this.tracksInGroup;if(!this.media)return void(this.queuedDefaultTrack=e);if(e<-1||e>=t.length||!Ji(e))return void this.warn(`Invalid subtitle track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,r=t[e]||null;if(this.trackId=e,this.currentTrack=r,this.toggleTrackModes(),!r)return void this.hls.trigger(tr.SUBTITLE_TRACK_SWITCH,{id:e});const s=!!r.details&&!r.details.live;if(e===this.trackId&&r===i&&s)return;this.log(`Switching to subtitle-track ${e}`+(r?` "${r.name}" lang:${r.lang} group:${r.groupId}`:""));const{id:n,groupId:a="",name:o,type:l,url:h}=r;this.hls.trigger(tr.SUBTITLE_TRACK_SWITCH,{id:n,groupId:a,name:o,type:l,url:h});const c=this.switchParams(r.url,null==i?void 0:i.details,r.details);this.loadPlaylist(c)}},timelineController: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={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},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(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(tr.FRAG_LOADING,this.onFragLoading,this),e.on(tr.FRAG_LOADED,this.onFragLoaded,this),e.on(tr.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(tr.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(tr.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(tr.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(tr.FRAG_LOADING,this.onFragLoading,this),e.off(tr.FRAG_LOADED,this.onFragLoaded,this),e.off(tr.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(tr.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(tr.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(tr.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(tr.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)){const e=new Gl(this,"textTrack1"),t=new Gl(this,"textTrack2"),i=new Gl(this,"textTrack3"),r=new Gl(this,"textTrack4");this.cea608Parser1=new Ul(1,e,t),this.cea608Parser2=new Ul(3,i,r)}}addCues(e,t,i,r,s){let n=!1;for(let e=s.length;e--;){const r=s[e],c=(a=r[0],o=r[1],l=t,h=i,Math.min(o,h)-Math.max(a,l));if(c>=0&&(r[0]=Math.min(r[0],t),r[1]=Math.max(r[1],i),n=!0,c/(i-t)>.5))return}var a,o,l,h;if(n||s.push([t,i]),this.config.renderTextTracksNatively){const s=this.captionsTracks[e];this.Cues.newCue(s,t,i,r)}else{const s=this.Cues.newCue(null,t,i,r);this.hls.trigger(tr.CUES_PARSED,{type:"captions",cues:s,track:e})}}onInitPtsFound(e,{frag:t,id:i,initPTS:r,timescale:s}){const{unparsedVttFrags:n}=this;"main"===i&&(this.initPTS[t.cc]={baseTime:r,timescale:s}),n.length&&(this.unparsedVttFrags=[],n.forEach((e=>{this.onFragLoaded(tr.FRAG_LOADED,e)})))}getExistingTrack(e,t){const{media:i}=this;if(i)for(let r=0;r{vn(e[t]),delete e[t]})),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:e}=this;if(!e)return;const t=e.textTracks;if(t)for(let e=0;ee.textCodec===rh));if(this.config.enableWebVTT||r&&this.config.enableIMSC1){if(ml(this.tracks,i))return void(this.tracks=i);if(this.textTracks=[],this.tracks=i,this.config.renderTextTracksNatively){const e=this.media,t=e?Tn(e.textTracks):null;if(this.tracks.forEach(((e,i)=>{let r;if(t){let i=null;for(let r=0;rnull!==e)).map((e=>e.label));e.length&&lr.warn(`Media element contains unused subtitle tracks: ${e.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const e=this.tracks.map((e=>({label:e.name,kind:e.type.toLowerCase(),default:e.default,subtitleTrack:e})));this.hls.trigger(tr.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:e})}}}onManifestLoaded(e,t){this.config.enableCEA708Captions&&t.captions&&t.captions.forEach((e=>{const t=/(?:CC|SERVICE)([1-4])/.exec(e.instreamId);if(!t)return;const i=`textTrack${t[1]}`,r=this.captionsProperties[i];r&&(r.label=e.name,e.lang&&(r.languageCode=e.lang),r.media=e)}))}closedCaptionsForLevel(e){const t=this.hls.levels[e.level];return null==t?void 0:t.attrs["CLOSED-CAPTIONS"]}onFragLoading(e,t){if(this.enabled&&t.frag.type===hn){var i,r;const{cea608Parser1:e,cea608Parser2:s,lastSn:n}=this,{cc:a,sn:o}=t.frag,l=null!=(i=null==(r=t.part)?void 0:r.index)?i:-1;e&&s&&(o!==n+1||o===n&&l!==this.lastPartIndex+1||a!==this.lastCc)&&(e.reset(),s.reset()),this.lastCc=a,this.lastSn=o,this.lastPartIndex=l}}onFragLoaded(e,t){const{frag:i,payload:r}=t;if(i.type===dn)if(r.byteLength){const e=i.decryptdata,s="stats"in t;if(null==e||!e.encrypted||s){const e=this.tracks[i.level],s=this.vttCCs;s[i.cc]||(s[i.cc]={start:i.start,prevCC:this.prevCC,new:!0},this.prevCC=i.cc),e&&e.textCodec===rh?this._parseIMSC1(i,r):this._parseVTTs(t)}}else this.hls.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:new Error("Empty subtitle payload")})}_parseIMSC1(e,t){const i=this.hls;oh(t,this.initPTS[e.cc],(t=>{this._appendCues(t,e.level),i.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:e})}),(t=>{lr.log(`Failed to parse IMSC1: ${t}`),i.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e,error:t})}))}_parseVTTs(e){var t;const{frag:i,payload:r}=e,{initPTS:s,unparsedVttFrags:n}=this,a=s.length-1;if(!s[i.cc]&&-1===a)return void n.push(e);const o=this.hls;ih(null!=(t=i.initSegment)&&t.data?Es(i.initSegment.data,new Uint8Array(r)):r,this.initPTS[i.cc],this.vttCCs,i.cc,i.start,(e=>{this._appendCues(e,i.level),o.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:i})}),(t=>{const s="Missing initPTS for VTT MPEGTS"===t.message;s?n.push(e):this._fallbackToIMSC1(i,r),lr.log(`Failed to parse VTT cue: ${t}`),s&&a>i.cc||o.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:t})}))}_fallbackToIMSC1(e,t){const i=this.tracks[e.level];i.textCodec||oh(t,this.initPTS[e.cc],(()=>{i.textCodec=rh,this._parseIMSC1(e,t)}),(()=>{i.textCodec="wvtt"}))}_appendCues(e,t){const i=this.hls;if(this.config.renderTextTracksNatively){const i=this.textTracks[t];if(!i||"disabled"===i.mode)return;e.forEach((e=>pn(i,e)))}else{const r=this.tracks[t];if(!r)return;const s=r.default?"default":"subtitles"+t;i.trigger(tr.CUES_PARSED,{type:"subtitles",cues:e,track:s})}}onFragDecrypted(e,t){const{frag:i}=t;i.type===dn&&this.onFragLoaded(tr.FRAG_LOADED,t)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(e,t){this.initCea608Parsers();const{cea608Parser1:i,cea608Parser2:r}=this;if(!this.enabled||!i||!r)return;const{frag:s,samples:n}=t;if(s.type!==hn||"NONE"!==this.closedCaptionsForLevel(s))for(let e=0;eyn(e[r],t,i)))}if(this.config.renderTextTracksNatively&&0===t&&void 0!==r){const{textTracks:e}=this;Object.keys(e).forEach((i=>yn(e[i],t,r)))}}}extractCea608Data(e){const t=[[],[]],i=31&e[0];let r=2;for(let s=0;s0&&-1===e?(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t,this.state=qa):(this.loadedmetadata=!1,this.state=Ja),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}doTick(){switch(this.state){case qa:this.doTickIdle();break;case Ja:{var e;const{levels:t,trackId:i}=this,r=null==t||null==(e=t[i])?void 0:e.details;if(r){if(this.waitForCdnTuneIn(r))break;this.state=ro}break}case Qa:{var t;const e=performance.now(),i=this.retryDate;if(!i||e>=i||null!=(t=this.media)&&t.seeking){const{levels:e,trackId:t}=this;this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded((null==e?void 0:e[t])||null),this.state=qa}break}case ro:{const e=this.waitingData;if(e){const{frag:t,part:i,cache:r,complete:s}=e;if(void 0!==this.initPTS[t.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=Xa;const e={frag:t,part:i,payload:r.flush(),networkDetails:null};this._handleFragmentLoadProgress(e),s&&super._handleFragmentLoadComplete(e)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log(`Waiting fragment cc (${t.cc}) cancelled because video is at cc ${this.videoTrackCC}`),this.clearWaitingFragment();else{const e=this.getLoadPosition(),i=xa.bufferInfo(this.mediaBuffer,e,this.config.maxBufferHole);Zn(i.end,this.config.maxFragLookUpTolerance,t)<0&&(this.log(`Waiting fragment cc (${t.cc}) @ ${t.start} cancelled because another fragment at ${i.end} is needed`),this.clearWaitingFragment())}}else this.state=qa}}this.onTickEnd()}clearWaitingFragment(){const e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=qa)}resetLoadingState(){this.clearWaitingFragment(),super.resetLoadingState()}onTickEnd(){const{media:e}=this;null!=e&&e.readyState&&(this.lastCurrentTime=e.currentTime)}doTickIdle(){const{hls:e,levels:t,media:i,trackId:r}=this,s=e.config;if(!i&&(this.startFragRequested||!s.startFragPrefetch)||null==t||!t[r])return;const n=t[r],a=n.details;if(!a||a.live&&this.levelLastLoaded!==n||this.waitForCdnTuneIn(a))return void(this.state=Ja);const o=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&o&&(this.bufferFlushed=!1,this.afterBufferFlushed(o,mr,cn));const l=this.getFwdBufferInfo(o,cn);if(null===l)return;const{bufferedTrack:h,switchingTrack:c}=this;if(!c&&this._streamEnded(l,a))return e.trigger(tr.BUFFER_EOS,{type:"audio"}),void(this.state=to);const d=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,hn),u=l.len,f=this.getMaxBufferLength(null==d?void 0:d.len),g=a.fragments,m=g[0].start;let p=this.flushing?this.getLoadPosition():l.end;if(c&&i){const e=this.getLoadPosition();h&&!pl(c.attrs,h.attrs)&&(p=e),a.PTSKnown&&em||l.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),i.currentTime=m+.05)}if(u>=f&&!c&&pd.end+a.targetduration;if(T||(null==d||!d.len)&&l.len){const e=this.getAppendedFrag(v.start,hn);if(null===e)return;if(y||(y=!!e.gap||!!T&&0===d.len),T&&!y||y&&l.nextStart&&l.nextStartnew Fn(e)))}onAudioTrackSwitching(e,t){const i=!!t.url;this.trackId=t.id;const{fragCurrent:r}=this;r&&(r.abortRequests(),this.removeUnbufferedFrags(r.start)),this.resetLoadingState(),i?this.setInterval(100):this.resetTransmuxer(),i?(this.switchingTrack=t,this.state=qa,this.flushAudioIfNeeded(t)):(this.switchingTrack=null,this.bufferedTrack=t,this.state=Ya),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,null!==this.cachedTrackLoadedData&&(this.hls.trigger(tr.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)}onAudioTrackLoaded(e,t){var i;if(null==this.mainDetails)return void(this.cachedTrackLoadedData=t);const{levels:r}=this,{details:s,id:n}=t;if(!r)return void this.warn(`Audio tracks were reset while loading level ${n}`);this.log(`Audio track ${n} loaded [${s.startSN},${s.endSN}]${s.lastPartSn?`[part-${s.lastPartSn}-${s.lastPartIndex}]`:""},duration:${s.totalduration}`);const a=r[n];let o=0;if(s.live||null!=(i=a.details)&&i.live){this.checkLiveUpdate(s);const e=this.mainDetails;if(s.deltaUpdateFailed||!e)return;var l;if(!a.details&&s.hasProgramDateTime&&e.hasProgramDateTime)Fa(s,e),o=s.fragments[0].start;else o=this.alignPlaylists(s,a.details,null==(l=this.levelLastLoaded)?void 0:l.details)}a.details=s,this.levelLastLoaded=a,this.startFragRequested||!this.mainDetails&&s.live||this.setStartPosition(this.mainDetails||s,o),this.state!==Ja||this.waitForCdnTuneIn(s)||(this.state=qa),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:r,payload:s}=e,{config:n,trackId:a,levels:o}=this;if(!o)return void this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const l=o[a];if(!l)return void this.warn("Audio track is undefined on fragment load progress");const h=l.details;if(!h)return this.warn("Audio track details undefined on fragment load progress"),void this.removeUnbufferedFrags(i.start);const c=n.defaultAudioCodec||l.audioCodec||"mp4a.40.2";let d=this.transmuxer;d||(d=this.transmuxer=new gl(this.hls,cn,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));const u=this.initPTS[i.cc],f=null==(t=i.initSegment)?void 0:t.data;if(void 0!==u){const e=!1,t=r?r.index:-1,n=-1!==t,a=new Ca(i.level,i.sn,i.stats.chunkCount,s.byteLength,t,n);d.push(s,f,c,"",i,r,h.totalduration,e,a,u)}else{this.log(`Unknown video PTS for cc ${i.cc}, waiting for video PTS before demuxing audio frag ${i.sn} of [${h.startSN} ,${h.endSN}],track ${a}`);const{cache:e}=this.waitingData=this.waitingData||{frag:i,part:r,cache:new ao,complete:!1};e.push(new Uint8Array(s)),this.waitingVideoCC=this.videoTrackCC,this.state=ro}}_handleFragmentLoadComplete(e){this.waitingData?this.waitingData.complete=!0:super._handleFragmentLoadComplete(e)}onBufferReset(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1}onBufferCreated(e,t){const i=t.tracks.audio;i&&(this.mediaBuffer=i.buffer||null),t.tracks.video&&(this.videoBuffer=t.tracks.video.buffer||null)}onFragBuffered(e,t){const{frag:i,part:r}=t;if(i.type===cn)if(this.fragContextChanged(i))this.warn(`Fragment ${i.sn}${r?" p: "+r.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);else{if("initSegment"!==i.sn){this.fragPrevious=i;const e=this.switchingTrack;e&&(this.bufferedTrack=e,this.switchingTrack=null,this.hls.trigger(tr.AUDIO_TRACK_SWITCHED,qi({},e)))}this.fragBufferedComplete(i,r)}else if(!this.loadedmetadata&&i.type===hn){const e=this.videoBuffer||this.media;if(e){xa.getBuffered(e).length&&(this.loadedmetadata=!0)}}}onError(e,t){var i;if(t.fatal)this.state=io;else switch(t.details){case rr.FRAG_GAP:case rr.FRAG_PARSING_ERROR:case rr.FRAG_DECRYPT_ERROR:case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(cn,t);break;case rr.AUDIO_TRACK_LOAD_ERROR:case rr.AUDIO_TRACK_LOAD_TIMEOUT:case rr.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==Ja||(null==(i=t.context)?void 0:i.type)!==on||(this.state=qa);break;case rr.BUFFER_APPEND_ERROR:case rr.BUFFER_FULL_ERROR:if(!t.parent||"audio"!==t.parent)return;if(t.details===rr.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&(this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"));break;case rr.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}onBufferFlushing(e,{type:t}){t!==pr&&(this.flushing=!0)}onBufferFlushed(e,{type:t}){if(t!==pr){this.flushing=!1,this.bufferFlushed=!0,this.state===to&&(this.state=qa);const e=this.mediaBuffer||this.media;e&&(this.afterBufferFlushed(e,t,cn),this.tick())}}_handleTransmuxComplete(e){var t;const i="audio",{hls:r}=this,{remuxResult:s,chunkMeta:n}=e,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{details:c}=h,{audio:d,text:u,id3:f,initSegment:g}=s;if(!this.fragContextChanged(o)&&c){if(this.state=Za,this.switchingTrack&&d&&this.completeAudioSwitch(this.switchingTrack),null!=g&&g.tracks){const e=o.initSegment||o;this._bufferInitSegment(h,g.tracks,e,n),r.trigger(tr.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:g.tracks})}if(d){const{startPTS:e,endPTS:t,startDTS:i,endDTS:r}=d;l&&(l.elementaryStreams[mr]={startPTS:e,endPTS:t,startDTS:i,endDTS:r}),o.setElementaryStreamInfo(mr,e,t,i,r),this.bufferFragmentData(d,o,l,n)}if(null!=f&&null!=(t=f.samples)&&t.length){const e=Qi({id:i,frag:o,details:c},f);r.trigger(tr.FRAG_PARSING_METADATA,e)}if(u){const e=Qi({id:i,frag:o,details:c},u);r.trigger(tr.FRAG_PARSING_USERDATA,e)}}else this.fragmentTracker.removeFragment(o)}_bufferInitSegment(e,t,i,r){if(this.state!==Za)return;t.video&&delete t.video;const s=t.audio;if(!s)return;s.id="audio";const n=e.audioCodec;this.log(`Init audio buffer, container:${s.container}, codecs[level/parsed]=[${n}/${s.codec}]`),n&&1===n.split(",").length&&(s.levelCodec=n),this.hls.trigger(tr.BUFFER_CODECS,t);const a=s.initSegment;if(null!=a&&a.byteLength){const e={type:"audio",frag:i,part:null,chunkMeta:r,parent:i.type,data:a};this.hls.trigger(tr.BUFFER_APPENDING,e)}this.tickImmediate()}loadFragment(e,t,i){const r=this.fragmentTracker.getState(e);var s;if(this.fragCurrent=e,this.switchingTrack||r===ba||r===wa)if("initSegment"===e.sn)this._loadInitSegment(e,t);else if(null!=(s=t.details)&&s.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=ro;const i=this.mainDetails;i&&i.fragments[0].start!==t.details.fragments[0].start&&Fa(t.details,i)}else this.startFragRequested=!0,super.loadFragment(e,t,i);else this.clearTrackerIfNeeded(e)}flushAudioIfNeeded(e){const{media:t,bufferedTrack:i}=this,r=null==i?void 0:i.attrs,s=e.attrs;t&&r&&(r.CHANNELS!==s.CHANNELS||i.name!==e.name||i.lang!==e.lang)&&(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null)}completeAudioSwitch(e){const{hls:t}=this;this.flushAudioIfNeeded(e),this.bufferedTrack=e,this.switchingTrack=null,t.trigger(tr.AUDIO_TRACK_SWITCHED,qi({},e))}},audioTrackController:class extends la{constructor(e){super(e,"[audio-track-controller]"),this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVEL_LOADING,this.onLevelLoading,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVEL_LOADING,this.onLevelLoading,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(tr.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.audioTracks||[]}onAudioTrackLoaded(e,t){const{id:i,groupId:r,details:s}=t,n=this.tracksInGroup[i];if(!n||n.groupId!==r)return void this.warn(`Audio track with id:${i} and group:${r} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=t.details,this.log(`Audio track ${i} "${n.name}" lang:${n.lang} group:${r} loaded [${s.startSN}-${s.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.audioGroups||null,r=this.groupIds;let s=this.currentTrack;if(!i||(null==r?void 0:r.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==r?void 0:r.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!s&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.audioPreference;if(!s&&t){const i=va(t,e,Ta);if(i>-1)s=e[i];else{const e=va(t,this.tracks);s=this.tracks[e]}}let r=this.findTrackId(s);-1===r&&s&&(r=this.findTrackId(null));const a={audioTracks:e};this.log(`Updating audio tracks, ${e.length} track(s) found in group(s): ${null==i?void 0:i.join(",")}`),this.hls.trigger(tr.AUDIO_TRACKS_UPDATED,a);const o=this.trackId;if(-1!==r&&-1===o)this.setAudioTrack(r);else if(e.length&&-1===o){var n;const t=new Error(`No audio track selected for current audio group-ID(s): ${null==(n=this.groupIds)?void 0:n.join(",")} track count: ${e.length}`);this.warn(t.message),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:t})}}else this.shouldReloadPlaylist(s)&&this.setAudioTrack(this.trackId)}onError(e,t){!t.fatal&&t.context&&(t.context.type!==on||t.context.id!==this.trackId||this.groupIds&&-1===this.groupIds.indexOf(t.context.groupId)||(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){const t=this.hls;if(t.config.audioPreference=e,e){const i=this.allAudioTracks;if(this.selectDefaultTrack=!1,i.length){const r=this.currentTrack;if(r&&ya(e,r,Ta))return r;const s=va(e,this.tracksInGroup,Ta);if(s>-1){const e=this.tracksInGroup[s];return this.setAudioTrack(s),e}if(r){let r=t.loadLevel;-1===r&&(r=t.firstAutoLevel);const s=function(e,t,i,r,s){const n=t[r],a=t.reduce(((e,t,i)=>{const r=t.uri;return(e[r]||(e[r]=[])).push(i),e}),{})[n.uri];a.length>1&&(r=Math.max.apply(Math,a));const o=n.videoRange,l=n.frameRate,h=n.codecSet.substring(0,4),c=Ea(t,r,(t=>{if(t.videoRange!==o||t.frameRate!==l||t.codecSet.substring(0,4)!==h)return!1;const r=t.audioGroups,n=i.filter((e=>!r||-1!==r.indexOf(e.groupId)));return va(e,n,s)>-1}));return c>-1?c:Ea(t,r,(t=>{const r=t.audioGroups,n=i.filter((e=>!r||-1!==r.indexOf(e.groupId)));return va(e,n,s)>-1}))}(e,t.levels,i,r,Ta);if(-1===s)return null;t.nextLoadLevel=s}if(e.channels||e.audioCodec){const t=va(e,i);if(t>-1)return i[t]}}}return null}setAudioTrack(e){const t=this.tracksInGroup;if(e<0||e>=t.length)return void this.warn(`Invalid audio track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,r=t[e],s=r.details&&!r.details.live;if(e===this.trackId&&r===i&&s)return;if(this.log(`Switching to audio-track ${e} "${r.name}" lang:${r.lang} group:${r.groupId} channels:${r.channels}`),this.trackId=e,this.currentTrack=r,this.hls.trigger(tr.AUDIO_TRACK_SWITCHING,qi({},r)),s)return;const n=this.switchParams(r.url,null==i?void 0:i.details,r.details);this.loadPlaylist(n)}findTrackId(e){const t=this.tracksInGroup;for(let i=0;i{this.initialized&&(this.starved=!0),this.buffering=!0},this.onPlaying=()=>{this.initialized||(this.initialized=!0),this.buffering=!1},this.applyPlaylistData=e=>{try{this.apply(e,{ot:Eh.MANIFEST,su:!this.initialized})}catch(e){lr.warn("Could not generate manifest CMCD data.",e)}},this.applyFragmentData=e=>{try{const t=e.frag,i=this.hls.levels[t.level],r=this.getObjectType(t),s={d:1e3*t.duration,ot:r};r!==Eh.VIDEO&&r!==Eh.AUDIO&&r!=Eh.MUXED||(s.br=i.bitrate/1e3,s.tb=this.getTopBandwidth(r)/1e3,s.bl=this.getBufferLength(r)),this.apply(e,s)}catch(e){lr.warn("Could not generate segment CMCD data.",e)}},this.hls=e;const t=this.config=e.config,{cmcd:i}=t;null!=i&&(t.pLoader=this.createPlaylistLoader(),t.fLoader=this.createFragmentLoader(),this.sid=i.sessionId||function(){try{return crypto.randomUUID()}catch(e){try{const e=URL.createObjectURL(new Blob),t=e.toString();return URL.revokeObjectURL(e),t.slice(t.lastIndexOf("/")+1)}catch(e){let t=(new Date).getTime();const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const i=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?i:3&i|8).toString(16)}));return i}}}(),this.cid=i.contentId,this.useHeaders=!0===i.useHeaders,this.includeKeys=i.includeKeys,this.registerListeners())}registerListeners(){const e=this.hls;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHED,this.onMediaDetached,this),e.on(tr.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){const e=this.hls;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHED,this.onMediaDetached,this),e.off(tr.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 i,r;this.audioBuffer=null==(i=t.tracks.audio)?void 0:i.buffer,this.videoBuffer=null==(r=t.tracks.video)?void 0:r.buffer}createData(){var e;return{v:1,sf:Sh.HLS,sid:this.sid,cid:this.cid,pr:null==(e=this.media)?void 0:e.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}}apply(e,t={}){Qi(t,this.createData());const i=t.ot===Eh.INIT||t.ot===Eh.VIDEO||t.ot===Eh.MUXED;this.starved&&i&&(t.bs=!0,t.su=!0,this.starved=!1),null==t.su&&(t.su=this.buffering);const{includeKeys:r}=this;r&&(t=Object.keys(t).reduce(((e,i)=>(r.includes(i)&&(e[i]=t[i]),e)),{})),this.useHeaders?(e.headers||(e.headers={}),ec(e.headers,t)):e.url=rc(e.url,t)}getObjectType(e){const{type:t}=e;return"subtitle"===t?Eh.TIMED_TEXT:"initSegment"===e.sn?Eh.INIT:"audio"===t?Eh.AUDIO:"main"===t?this.hls.audioTracks.length?Eh.VIDEO:Eh.MUXED:void 0}getTopBandwidth(e){let t,i=0;const r=this.hls;if(e===Eh.AUDIO)t=r.audioTracks;else{const e=r.maxAutoLevel,i=e>-1?e+1:r.levels.length;t=r.levels.slice(0,i)}for(const e of t)e.bitrate>i&&(i=e.bitrate);return i>0?i:NaN}getBufferLength(e){const t=this.hls.media,i=e===Eh.AUDIO?this.audioBuffer:this.videoBuffer;if(!i||!t)return NaN;return 1e3*xa.bufferInfo(i,t.currentTime,this.config.maxBufferHole).len}createPlaylistLoader(){const{pLoader:e}=this.config,t=this.applyPlaylistData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,r){t(e),this.loader.load(e,i,r)}}}createFragmentLoader(){const{fLoader:e}=this.config,t=this.applyFragmentData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,r){t(e),this.loader.load(e,i,r)}}}},contentSteeringController: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=lr.log.bind(lr,"[content-steering]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const e=this.hls;e&&(e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.ERROR,this.onError,this))}startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){const e=1e3*this.timeToLoad-(performance.now()-this.updated);if(e>0)return void this.scheduleRefresh(this.uri,e)}this.loadSteeringManifest(this.uri)}}stopLoad(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()}clearTimeout(){-1!==this.reloadTimer&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(e){const t=this.levels;t&&(this.levels=t.filter((t=>t!==e)))}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(e,t){const{contentSteering:i}=t;null!==i&&(this.pathwayId=i.pathwayId,this.uri=i.uri,this.started&&this.startLoad())}onManifestParsed(e,t){this.audioTracks=t.audioTracks,this.subtitleTracks=t.subtitleTracks}onError(e,t){const{errorAction:i}=t;if((null==i?void 0:i.action)===ia&&i.flags===aa){const e=this.levels;let r=this.pathwayPriority,s=this.pathwayId;if(t.context){const{groupId:i,pathwayId:r,type:n}=t.context;i&&e?s=this.getPathwayForGroupId(i,n,s):r&&(s=r)}s in this.penalizedPathways||(this.penalizedPathways[s]=performance.now()),!r&&e&&(r=e.reduce(((e,t)=>(-1===e.indexOf(t.pathwayId)&&e.push(t.pathwayId),e)),[])),r&&r.length>1&&(this.updatePathwayPriority(r),i.resolved=this.pathwayId!==s),i.resolved||lr.warn(`Could not resolve ${t.details} ("${t.error.message}") with content-steering for Pathway: ${s} levels: ${e?e.length:e} priorities: ${JSON.stringify(r)} penalized: ${JSON.stringify(this.penalizedPathways)}`)}}filterParsedLevels(e){this.levels=e;let t=this.getLevelsForPathway(this.pathwayId);if(0===t.length){const i=e[0].pathwayId;this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to "${i}"`),t=this.getLevelsForPathway(i),this.pathwayId=i}return t.length!==e.length?(this.log(`Found ${t.length}/${e.length} levels in Pathway "${this.pathwayId}"`),t):e}getLevelsForPathway(e){return null===this.levels?[]:this.levels.filter((t=>e===t.pathwayId))}updatePathwayPriority(e){let t;this.pathwayPriority=e;const i=this.penalizedPathways,r=performance.now();Object.keys(i).forEach((e=>{r-i[e]>3e5&&delete i[e]}));for(let r=0;r0){this.log(`Setting Pathway to "${s}"`),this.pathwayId=s,jn(t),this.hls.trigger(tr.LEVELS_UPDATED,{levels:t});const e=this.hls.levels[n];a&&e&&this.levels&&(e.attrs["STABLE-VARIANT-ID"]!==a.attrs["STABLE-VARIANT-ID"]&&e.bitrate!==a.bitrate&&this.log(`Unstable Pathways change from bitrate ${a.bitrate} to ${e.bitrate}`),this.hls.nextLoadLevel=n);break}}}getPathwayForGroupId(e,t,i){const r=this.getLevelsForPathway(i).concat(this.levels||[]);for(let i=0;i{const{ID:s,"BASE-ID":n,"URI-REPLACEMENT":a}=e;if(t.some((e=>e.pathwayId===s)))return;const o=this.getLevelsForPathway(n).map((e=>{const t=new dr(e.attrs);t["PATHWAY-ID"]=s;const n=t.AUDIO&&`${t.AUDIO}_clone_${s}`,o=t.SUBTITLES&&`${t.SUBTITLES}_clone_${s}`;n&&(i[t.AUDIO]=n,t.AUDIO=n),o&&(r[t.SUBTITLES]=o,t.SUBTITLES=o);const l=nc(e.uri,t["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",a),h=new Fn({attrs:t,audioCodec:e.audioCodec,bitrate:e.bitrate,height:e.height,name:e.name,url:l,videoCodec:e.videoCodec,width:e.width});if(e.audioGroups)for(let t=1;t{this.log(`Loaded steering manifest: "${r}"`);const n=e.data;if(1!==n.VERSION)return void this.log(`Steering VERSION ${n.VERSION} not supported!`);this.updated=performance.now(),this.timeToLoad=n.TTL;const{"RELOAD-URI":a,"PATHWAY-CLONES":o,"PATHWAY-PRIORITY":l}=n;if(a)try{this.uri=new self.URL(a,r).href}catch(e){return this.enabled=!1,void this.log(`Failed to parse Steering Manifest RELOAD-URI: ${a}`)}this.scheduleRefresh(this.uri||i.url),o&&this.clonePathways(o);const h={steeringManifest:n,url:r.toString()};this.hls.trigger(tr.STEERING_MANIFEST_LOADED,h),l&&this.updatePathwayPriority(l)},onError:(e,t,i,r)=>{if(this.log(`Error loading steering manifest: ${e.code} ${e.text} (${t.url})`),this.stopLoad(),410===e.code)return this.enabled=!1,void this.log(`Steering manifest ${t.url} no longer available`);let s=1e3*this.timeToLoad;if(429!==e.code)this.scheduleRefresh(this.uri||t.url,s);else{const e=this.loader;if("function"==typeof(null==e?void 0:e.getResponseHeader)){const t=e.getResponseHeader("Retry-After");t&&(s=1e3*parseFloat(t))}this.log(`Steering manifest ${t.url} rate limited`)}},onTimeout:(e,t,i)=>{this.log(`Timeout loading steering manifest (${t.url})`),this.scheduleRefresh(this.uri||t.url)}};this.log(`Requesting steering manifest: ${r}`),this.loader.load(s,o,l)}scheduleRefresh(e,t=1e3*this.timeToLoad){this.clearTimeout(),this.reloadTimer=self.setTimeout((()=>{var t;const i=null==(t=this.hls)?void 0:t.media;!i||i.ended?this.scheduleRefresh(e,1e3*this.timeToLoad):this.loadSteeringManifest(e)}),t)}}});function mc(e){return e&&"object"==typeof e?Array.isArray(e)?e.map(mc):Object.keys(e).reduce(((t,i)=>(t[i]=mc(e[i]),t)),{}):e}function pc(e){const t=e.loader;if(t!==hc&&t!==oc)lr.log("[config]: Custom loader detected, cannot enable progressive streaming"),e.progressive=!1;else{(function(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(e){}return!1})()&&(e.loader=hc,e.progressive=!0,e.enableSoftwareAES=!0,lr.log("[config]: Progressive streaming enabled, using FetchLoader"))}}let vc;class yc extends la{constructor(e,t){super(e,"[level-controller]"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=t,this._registerListeners()}_registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.on(tr.ERROR,this.onError,this)}_unregisterListeners(){const{hls:e}=this;e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.off(tr.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach((e=>{e.loadError=0,e.fragmentError=0})),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(e,t){this.resetLevels()}onManifestLoaded(e,t){const i=this.hls.config.preferManagedMediaSource,r=[],s={},n={};let a=!1,o=!1,l=!1;t.levels.forEach((e=>{var t,h;const c=e.attrs;let{audioCodec:d,videoCodec:u}=e;-1!==(null==(t=d)?void 0:t.indexOf("mp4a.40.34"))&&(vc||(vc=/chrome|firefox/i.test(navigator.userAgent)),vc&&(e.audioCodec=d=void 0)),d&&(e.audioCodec=d=Vs(d,i)),0===(null==(h=u)?void 0:h.indexOf("avc1"))&&(u=e.videoCodec=function(e){const t=e.split(".");if(t.length>2){let e=t.shift()+".";return e+=parseInt(t.shift()).toString(16),e+=("000"+parseInt(t.shift()).toString(16)).slice(-4),e}return e}(u));const{width:f,height:g,unknownCodecs:m}=e;if(a||(a=!(!f||!g)),o||(o=!!u),l||(l=!!d),null!=m&&m.length||d&&!Fs(d,"audio",i)||u&&!Fs(u,"video",i))return;const{CODECS:p,"FRAME-RATE":v,"HDCP-LEVEL":y,"PATHWAY-ID":T,RESOLUTION:E,"VIDEO-RANGE":S}=c,b=`${`${T||"."}-`}${e.bitrate}-${E}-${v}-${p}-${S}-${y}`;if(s[b])if(s[b].uri===e.url||e.attrs["PATHWAY-ID"])s[b].addGroupId("audio",c.AUDIO),s[b].addGroupId("text",c.SUBTITLES);else{const t=n[b]+=1;e.attrs["PATHWAY-ID"]=new Array(t+1).join(".");const i=new Fn(e);s[b]=i,r.push(i)}else{const t=new Fn(e);s[b]=t,n[b]=1,r.push(t)}})),this.filterAndSortMediaOptions(r,t,a,o,l)}filterAndSortMediaOptions(e,t,i,r,s){let n=[],a=[],o=e;if((i||r)&&s&&(o=o.filter((({videoCodec:e,videoRange:t,width:i,height:r})=>{return(!!e||!(!i||!r))&&(!!(s=t)&&xn.indexOf(s)>-1);var s}))),0===o.length)return void 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)}`);const e=new Error("no level with compatible codecs found in manifest");this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,error:e,reason:e.message})}}));if(t.audioTracks){const{preferManagedMediaSource:e}=this.hls.config;n=t.audioTracks.filter((t=>!t.audioCodec||Fs(t.audioCodec,"audio",e))),Tc(n)}t.subtitles&&(a=t.subtitles,Tc(a));const l=o.slice(0);o.sort(((e,t)=>{if(e.attrs["HDCP-LEVEL"]!==t.attrs["HDCP-LEVEL"])return(e.attrs["HDCP-LEVEL"]||"")>(t.attrs["HDCP-LEVEL"]||"")?1:-1;if(i&&e.height!==t.height)return e.height-t.height;if(e.frameRate!==t.frameRate)return e.frameRate-t.frameRate;if(e.videoRange!==t.videoRange)return xn.indexOf(e.videoRange)-xn.indexOf(t.videoRange);if(e.videoCodec!==t.videoCodec){const i=Bs(e.videoCodec),r=Bs(t.videoCodec);if(i!==r)return r-i}if(e.uri===t.uri&&e.codecSet!==t.codecSet){const i=$s(e.codecSet),r=$s(t.codecSet);if(i!==r)return r-i}return e.averageBitrate!==t.averageBitrate?e.averageBitrate-t.averageBitrate:0}));let h=l[0];if(this.steering&&(o=this.steering.filterParsedLevels(o),o.length!==l.length))for(let e=0;ei&&i===gc.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=e)}break}const d=s&&!r,u={levels:o,audioTracks:n,subtitleTracks:a,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:s,video:r,altAudio:!d&&n.some((e=>!!e.url))};this.hls.trigger(tr.MANIFEST_PARSED,u),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}get levels(){return 0===this._levels.length?null:this._levels}get level(){return this.currentLevelIndex}set level(e){const t=this._levels;if(0===t.length)return;if(e<0||e>=t.length){const i=new Error("invalid level idx"),r=e<0;if(this.hls.trigger(tr.ERROR,{type:ir.OTHER_ERROR,details:rr.LEVEL_SWITCH_ERROR,level:e,fatal:r,error:i,reason:i.message}),r)return;e=Math.min(e,t.length-1)}const i=this.currentLevelIndex,r=this.currentLevel,s=r?r.attrs["PATHWAY-ID"]:void 0,n=t[e],a=n.attrs["PATHWAY-ID"];if(this.currentLevelIndex=e,this.currentLevel=n,i===e&&n.details&&r&&s===a)return;this.log(`Switching to level ${e} (${n.height?n.height+"p ":""}${n.videoRange?n.videoRange+" ":""}${n.codecSet?n.codecSet+" ":""}@${n.bitrate})${a?" with Pathway "+a:""} from level ${i}${s?" with Pathway "+s:""}`);const o={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(tr.LEVEL_SWITCHING,o);const l=n.details;if(!l||l.live){const e=this.switchParams(n.uri,null==r?void 0:r.details,l);this.loadPlaylist(e)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(e){this.manualLevelIndex=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}get firstLevel(){return this._firstLevel}set firstLevel(e){this._firstLevel=e}get startLevel(){if(void 0===this._startLevel){const e=this.hls.config.startLevel;return void 0!==e?e:this.hls.firstAutoLevel}return this._startLevel}set startLevel(e){this._startLevel=e}onError(e,t){!t.fatal&&t.context&&t.context.type===an&&t.context.level===this.level&&this.checkRetry(t)}onFragBuffered(e,{frag:t}){if(void 0!==t&&t.type===hn){const e=t.elementaryStreams;if(!Object.keys(e).some((t=>!!e[t])))return;const i=this._levels[t.level];null!=i&&i.loadError&&(this.log(`Resetting level error count of ${i.loadError} on frag buffered`),i.loadError=0)}}onLevelLoaded(e,t){var i;const{level:r,details:s}=t,n=this._levels[r];var a;if(!n)return this.warn(`Invalid level index ${r}`),void(null!=(a=t.deliveryDirectives)&&a.skip&&(s.deltaUpdateFailed=!0));r===this.currentLevelIndex?(0===n.fragmentError&&(n.loadError=0),this.playlistLoaded(r,t,n.details)):null!=(i=t.deliveryDirectives)&&i.skip&&(s.deltaUpdateFailed=!0)}loadPlaylist(e){super.loadPlaylist();const t=this.currentLevelIndex,i=this.currentLevel;if(i&&this.shouldLoadPlaylist(i)){let r=i.uri;if(e)try{r=e.addDirectives(r)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}const s=i.attrs["PATHWAY-ID"];this.log(`Loading level index ${t}${void 0!==(null==e?void 0:e.msn)?" at sn "+e.msn+" part "+e.part:""} with${s?" Pathway "+s:""} ${r}`),this.clearTimer(),this.hls.trigger(tr.LEVEL_LOADING,{url:r,level:t,pathwayId:i.attrs["PATHWAY-ID"],id:0,deliveryDirectives:e||null})}}get nextLoadLevel(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(e){this.level=e,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=e)}removeLevel(e){var t;const i=this._levels.filter(((t,i)=>i!==e||(this.steering&&this.steering.removeLevel(t),t===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,t.details&&t.details.fragments.forEach((e=>e.level=-1))),!1)));jn(i),this._levels=i,this.currentLevelIndex>-1&&null!=(t=this.currentLevel)&&t.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.hls.trigger(tr.LEVELS_UPDATED,{levels:i})}onLevelsUpdated(e,{levels:t}){this._levels=t}checkMaxAutoUpdated(){const{autoLevelCapping:e,maxAutoLevel:t,maxHdcpLevel:i}=this.hls;this._maxAutoLevel!==t&&(this._maxAutoLevel=t,this.hls.trigger(tr.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:e,levels:this.levels,maxAutoLevel:t,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:i}))}}function Tc(e){const t={};e.forEach((e=>{const i=e.groupId||"";e.id=t[i]=t[i]||0,t[i]++}))}class Ec{constructor(e){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=e}abort(e){for(const i in this.keyUriToKeyInfo){const r=this.keyUriToKeyInfo[i].loader;if(r){var t;if(e&&e!==(null==(t=r.context)?void 0:t.frag.type))return;r.abort()}}}detach(){for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e];(t.mediaKeySessionContext||t.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[e]}}destroy(){this.detach();for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e].loader;t&&t.destroy()}this.keyUriToKeyInfo={}}createKeyLoadError(e,t=rr.KEY_LOAD_ERROR,i,r,s){return new Ga({type:ir.NETWORK_ERROR,details:t,fatal:!1,frag:e,response:s,error:i,networkDetails:r})}loadClear(e,t){if(this.emeController&&this.config.emeEnabled){const{sn:i,cc:r}=e;for(let e=0;e{s.setKeyFormat(e)}));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 i,r;t&&e.setKeyFormat(t);const s=e.decryptdata;if(!s){const i=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,rr.KEY_LOAD_ERROR,i))}const n=s.uri;if(!n)return Promise.reject(this.createKeyLoadError(e,rr.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${n}"`)));let a=this.keyUriToKeyInfo[n];if(null!=(i=a)&&i.decryptdata.key)return s.key=a.decryptdata.key,Promise.resolve({frag:e,keyInfo:a});var o;if(null!=(r=a)&&r.keyLoadPromise)switch(null==(o=a.mediaKeySessionContext)?void 0:o.keyStatus){case void 0:case"status-pending":case"usable":case"usable-in-future":return a.keyLoadPromise.then((t=>(s.key=t.keyInfo.decryptdata.key,{frag:e,keyInfo:a})))}switch(a=this.keyUriToKeyInfo[n]={decryptdata:s,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},s.method){case"ISO-23001-7":case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return"identity"===s.keyFormat?this.loadKeyHTTP(a,e):this.loadKeyEME(a,e);case"AES-128":return this.loadKeyHTTP(a,e);default:return Promise.reject(this.createKeyLoadError(e,rr.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${s.method}"`)))}}loadKeyEME(e,t){const i={frag:t,keyInfo:e};if(this.emeController&&this.config.emeEnabled){const t=this.emeController.loadKey(i);if(t)return(e.keyLoadPromise=t.then((t=>(e.mediaKeySessionContext=t,i)))).catch((t=>{throw e.keyLoadPromise=null,t}))}return Promise.resolve(i)}loadKeyHTTP(e,t){const i=this.config,r=new(0,i.loader)(i);return t.keyLoader=e.loader=r,e.keyLoadPromise=new Promise(((s,n)=>{const a={keyInfo:e,frag:t,responseType:"arraybuffer",url:e.decryptdata.uri},o=i.keyLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(e,t,i,r)=>{const{frag:a,keyInfo:o,url:l}=i;if(!a.decryptdata||o!==this.keyUriToKeyInfo[l])return n(this.createKeyLoadError(a,rr.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),r));o.decryptdata.key=a.decryptdata.key=new Uint8Array(e.data),a.keyLoader=null,o.loader=null,s({frag:a,keyInfo:o})},onError:(e,i,r,s)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.KEY_LOAD_ERROR,new Error(`HTTP Error ${e.code} loading key ${e.text}`),r,qi({url:a.url,data:void 0},e)))},onTimeout:(e,i,r)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),r))},onAbort:(e,i,r)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.INTERNAL_ABORTED,new Error("key loading aborted"),r))}};r.load(a,l,h)}))}resetLoader(e){const{frag:t,keyInfo:i,url:r}=e,s=i.loader;t.keyLoader===s&&(t.keyLoader=null,i.loader=null),delete this.keyUriToKeyInfo[r],s&&s.destroy()}}function Sc(){return self.SourceBuffer||self.WebKitSourceBuffer}function bc(){if(!Os())return!1;const e=Sc();return!e||e.prototype&&"function"==typeof e.prototype.appendBuffer&&"function"==typeof e.prototype.remove}class Lc{constructor(e,t,i,r){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=i,this.hls=r}destroy(){this.media=null,this.hls=this.fragmentTracker=null}poll(e,t){const{config:i,media:r,stalled:s}=this;if(null===r)return;const{currentTime:n,seeking:a}=r,o=this.seeking&&!a,l=!this.seeking&&a;if(this.seeking=a,n!==e){if(this.moved=!0,a||(this.nudgeRetry=0),null!==s){if(this.stallReported){const e=self.performance.now()-s;lr.warn(`playback not stuck anymore @${n}, after ${Math.round(e)}ms`),this.stallReported=!1}this.stalled=null}return}if(l||o)return void(this.stalled=null);if(r.paused&&!a||r.ended||0===r.playbackRate||!xa.getBuffered(r).length)return void(this.nudgeRetry=0);const h=xa.bufferInfo(r,n,0),c=h.nextStart||0;if(a){const e=h.len>2,i=!c||t&&t.start<=n||c-n>2&&!this.fragmentTracker.getPartialFragment(n);if(e||i)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var d;if(!(h.len>0)&&!c)return;const e=Math.max(c,h.start||0)-n,t=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,i=(null==t||null==(d=t.details)?void 0:d.live)?2*t.details.targetduration:2,s=this.fragmentTracker.getPartialFragment(n);if(e>0&&(e<=i||s))return void(r.paused||this._trySkipBufferHole(s))}const u=self.performance.now();if(null===s)return void(this.stalled=u);const f=u-s;if(!a&&f>=250&&(this._reportStall(h),!this.media))return;const g=xa.bufferInfo(r,n,i.maxBufferHole);this._tryFixBufferStall(g,f)}_tryFixBufferStall(e,t){const{config:i,fragmentTracker:r,media:s}=this;if(null===s)return;const n=s.currentTime,a=r.getPartialFragment(n);if(a){if(this._trySkipBufferHole(a)||!this.media)return}(e.len>i.maxBufferHole||e.nextStart&&e.nextStart-n1e3*i.highBufferWatchdogPeriod&&(lr.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}_reportStall(e){const{hls:t,media:i,stallReported:r}=this;if(!r&&i){this.stallReported=!0;const r=new Error(`Playback stalling at @${i.currentTime} due to low buffer (${JSON.stringify(e)})`);lr.warn(r.message),t.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_STALLED_ERROR,fatal:!1,error:r,buffer:e.len})}}_trySkipBufferHole(e){const{config:t,hls:i,media:r}=this;if(null===r)return 0;const s=r.currentTime,n=xa.bufferInfo(r,s,0),a=s0&&n.len<1&&r.readyState<3,h=a-s;if(h>0&&(o||l)){if(h>t.maxBufferHole){const{fragmentTracker:t}=this;let i=!1;if(0===s){const e=t.getAppendedFrag(0,hn);e&&a1?(e=0,this.bitrateTest=!0):e=i.firstAutoLevel),i.nextLoadLevel=e,this.level=i.loadLevel,this.loadedmetadata=!1}t>0&&-1===e&&(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t),this.state=qa,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=Ya}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case so:{const{levels:e,level:t}=this,i=null==e?void 0:e[t],r=null==i?void 0:i.details;if(r&&(!r.live||this.levelLastLoaded===i)){if(this.waitForCdnTuneIn(r))break;this.state=qa;break}if(this.hls.nextLoadLevel!==this.level){this.state=qa;break}break}case Qa:{var e;const t=self.performance.now(),i=this.retryDate;if(!i||t>=i||null!=(e=this.media)&&e.seeking){const{levels:e,level:t}=this,i=null==e?void 0:e[t];this.resetStartWhenNotLoaded(i||null),this.state=qa}}}this.state===qa&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){super.onTickEnd(),this.checkBuffer(),this.checkFragmentChanged()}doTickIdle(){const{hls:e,levelLastLoaded:t,levels:i,media:r}=this;if(null===t||!r&&(this.startFragRequested||!e.config.startFragPrefetch))return;if(this.altAudio&&this.audioOnly)return;const s=e.nextLoadLevel;if(null==i||!i[s])return;const n=i[s],a=this.getMainFwdBufferInfo();if(null===a)return;const o=this.getLevelDetails();if(o&&this._streamEnded(a,o)){const e={};return this.altAudio&&(e.type="video"),this.hls.trigger(tr.BUFFER_EOS,e),void(this.state=to)}e.loadLevel!==s&&-1===e.manualLevel&&this.log(`Adapting to level ${s} from level ${this.level}`),this.level=e.nextLoadLevel=s;const l=n.details;if(!l||this.state===so||l.live&&this.levelLastLoaded!==n)return this.level=s,void(this.state=so);const h=a.len,c=this.getMaxBufferLength(n.maxBitrate);if(h>=c)return;this.backtrackFragment&&this.backtrackFragment.start>a.end&&(this.backtrackFragment=null);const d=this.backtrackFragment?this.backtrackFragment.start:a.end;let u=this.getNextFragment(d,l);if(this.couldBacktrack&&!this.fragPrevious&&u&&"initSegment"!==u.sn&&this.fragmentTracker.getState(u)!==Aa){var f;const e=(null!=(f=this.backtrackFragment)?f:u).sn-l.startSN,t=l.fragments[e-1];t&&u.cc===t.cc&&(u=t,this.fragmentTracker.removeFragment(t))}else this.backtrackFragment&&a.len&&(this.backtrackFragment=null);if(u&&this.isLoopLoading(u,d)){if(!u.gap){const e=this.audioOnly&&!this.altAudio?mr:pr,t=(e===pr?this.videoBuffer:this.mediaBuffer)||this.media;t&&this.afterBufferFlushed(t,e,hn)}u=this.getNextFragmentLoopLoading(u,l,a,hn,c)}u&&(!u.initSegment||u.initSegment.data||this.bitrateTest||(u=u.initSegment),this.loadFragment(u,n,d))}loadFragment(e,t,i){const r=this.fragmentTracker.getState(e);this.fragCurrent=e,r===ba||r===wa?"initSegment"===e.sn?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,i)):this.clearTrackerIfNeeded(e)}getBufferedFrag(e){return this.fragmentTracker.getBufferedFrag(e,hn)}followingBufferedFrag(e){return e?this.getBufferedFrag(e.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:e,media:t}=this;if(null!=t&&t.readyState){let i;const r=this.getAppendedFrag(t.currentTime);r&&r.start>1&&this.flushMainBuffer(0,r.start-1);const s=this.getLevelDetails();if(null!=s&&s.live){const e=this.getMainFwdBufferInfo();if(!e||e.len<2*s.targetduration)return}if(!t.paused&&e){const t=e[this.hls.nextLoadLevel],r=this.fragLastKbps;i=r&&this.fragCurrent?this.fragCurrent.duration*t.maxBitrate/(1e3*r)+1:0}else i=0;const n=this.getBufferedFrag(t.currentTime+i);if(n){const e=this.followingBufferedFrag(n);if(e){this.abortCurrentFrag();const t=e.maxStartPTS?e.maxStartPTS:e.start,i=e.duration,r=Math.max(n.end,t+Math.min(Math.max(i-this.config.maxFragLookUpTolerance,i*(this.couldBacktrack?.5:.125)),i*(this.couldBacktrack?.75:.25)));this.flushMainBuffer(r,Number.POSITIVE_INFINITY)}}}}abortCurrentFrag(){const e=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,e&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.state){case za:case Xa:case Qa:case Za:case eo:this.state=qa}this.nextLoadPosition=this.getLoadPosition()}flushMainBuffer(e,t){super.flushMainBuffer(e,t,this.altAudio?"video":null)}onMediaAttached(e,t){super.onMediaAttached(e,t);const i=t.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),i.addEventListener("playing",this.onvplaying),i.addEventListener("seeked",this.onvseeked),this.gapController=new Lc(this.config,i,this.fragmentTracker,this.hls)}onMediaDetaching(){const{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(){const e=this.media,t=e?e.currentTime:null;Ji(t)&&this.log(`Media seeked to ${t.toFixed(3)}`);const i=this.getMainFwdBufferInfo();null!==i&&0!==i.len?this.tick():this.warn(`Main forward buffer length on "seeked" event ${i?i.len:"empty"})`)}onManifestLoading(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(tr.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 i=!1,r=!1;t.levels.forEach((e=>{const t=e.audioCodec;t&&(i=i||-1!==t.indexOf("mp4a.40.2"),r=r||-1!==t.indexOf("mp4a.40.5"))})),this.audioCodecSwitch=i&&r&&!function(){var e;const t=Sc();return"function"==typeof(null==t||null==(e=t.prototype)?void 0:e.changeType)}(),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){const{levels:i}=this;if(!i||this.state!==qa)return;const r=i[t.level];(!r.details||r.details.live&&this.levelLastLoaded!==r||this.waitForCdnTuneIn(r.details))&&(this.state=so)}onLevelLoaded(e,t){var i;const{levels:r}=this,s=t.level,n=t.details,a=n.totalduration;if(!r)return void this.warn(`Levels were reset while loading level ${s}`);this.log(`Level ${s} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""}, cc [${n.startCC}, ${n.endCC}] duration:${a}`);const o=r[s],l=this.fragCurrent;!l||this.state!==Xa&&this.state!==Qa||l.level!==t.level&&l.loader&&this.abortCurrentFrag();let h=0;if(n.live||null!=(i=o.details)&&i.live){var c;if(this.checkLiveUpdate(n),n.deltaUpdateFailed)return;h=this.alignPlaylists(n,o.details,null==(c=this.levelLastLoaded)?void 0:c.details)}if(o.details=n,this.levelLastLoaded=o,this.hls.trigger(tr.LEVEL_UPDATED,{details:n,level:s}),this.state===so){if(this.waitForCdnTuneIn(n))return;this.state=qa}this.startFragRequested?n.live&&this.synchronizeToLiveEdge(n):this.setStartPosition(n,h),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:r,payload:s}=e,{levels:n}=this;if(!n)return void this.warn(`Levels were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const a=n[i.level],o=a.details;if(!o)return this.warn(`Dropping fragment ${i.sn} of level ${i.level} after level details were reset`),void this.fragmentTracker.removeFragment(i);const l=a.videoCodec,h=o.PTSKnown||!o.live,c=null==(t=i.initSegment)?void 0:t.data,d=this._getAudioCodec(a),u=this.transmuxer=this.transmuxer||new gl(this.hls,hn,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),f=r?r.index:-1,g=-1!==f,m=new Ca(i.level,i.sn,i.stats.chunkCount,s.byteLength,f,g),p=this.initPTS[i.cc];u.push(s,c,d,l,i,r,o.totalduration,h,m,p)}onAudioTrackSwitching(e,t){const i=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;const e=this.fragCurrent;e&&(this.log("Switching to main audio track, cancel main fragment load"),e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();const e=this.hls;i&&(e.trigger(tr.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),e.trigger(tr.AUDIO_TRACK_SWITCHED,t)}}onAudioTrackSwitched(e,t){const i=t.id,r=!!this.hls.audioTracks[i].url;if(r){const e=this.videoBuffer;e&&this.mediaBuffer!==e&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=e)}this.altAudio=r,this.tick()}onBufferCreated(e,t){const i=t.tracks;let r,s,n=!1;for(const e in i){const t=i[e];if("main"===t.id){if(s=e,r=t,"video"===e){const t=i[e];t&&(this.videoBuffer=t.buffer)}}else n=!0}n&&r?(this.log(`Alternate track found, use ${s}.buffered to schedule main fragment loading`),this.mediaBuffer=r.buffer):this.mediaBuffer=this.media}onFragBuffered(e,t){const{frag:i,part:r}=t;if(i&&i.type!==hn)return;if(this.fragContextChanged(i))return this.warn(`Fragment ${i.sn}${r?" p: "+r.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}`),void(this.state===eo&&(this.state=qa));const s=r?r.stats:i.stats;this.fragLastKbps=Math.round(8*s.total/(s.buffering.end-s.loading.first)),"initSegment"!==i.sn&&(this.fragPrevious=i),this.fragBufferedComplete(i,r)}onError(e,t){var i;if(t.fatal)this.state=io;else switch(t.details){case rr.FRAG_GAP:case rr.FRAG_PARSING_ERROR:case rr.FRAG_DECRYPT_ERROR:case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(hn,t);break;case rr.LEVEL_LOAD_ERROR:case rr.LEVEL_LOAD_TIMEOUT:case rr.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==so||(null==(i=t.context)?void 0:i.type)!==an||(this.state=qa);break;case rr.BUFFER_APPEND_ERROR:case rr.BUFFER_FULL_ERROR:if(!t.parent||"main"!==t.parent)return;if(t.details===rr.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case rr.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}checkBuffer(){const{media:e,gapController:t}=this;if(e&&t&&e.readyState){if(this.loadedmetadata||!xa.getBuffered(e).length){const e=this.state!==qa?this.fragCurrent:null;t.poll(this.lastCurrentTime,e)}this.lastCurrentTime=e.currentTime}}onFragLoadEmergencyAborted(){this.state=qa,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()}onBufferFlushed(e,{type:t}){if(t!==mr||this.audioOnly&&!this.altAudio){const e=(t===pr?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(e,t,hn),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(){const{media:e}=this;if(!e)return;const t=e.currentTime;let i=this.startPosition;if(i>=0&&t0&&(s{const{hls:r}=this;if(!i||this.fragContextChanged(e))return;t.fragmentError=0,this.state=qa,this.startFragRequested=!1,this.bitrateTest=!1;const s=e.stats;s.parsing.start=s.parsing.end=s.buffering.start=s.buffering.end=self.performance.now(),r.trigger(tr.FRAG_LOADED,i),e.bitrateTest=!1}))}_handleTransmuxComplete(e){var t;const i="main",{hls:r}=this,{remuxResult:s,chunkMeta:n}=e,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{video:c,text:d,id3:u,initSegment:f}=s,{details:g}=h,m=this.altAudio?void 0:s.audio;if(this.fragContextChanged(o))this.fragmentTracker.removeFragment(o);else{if(this.state=Za,f){if(null!=f&&f.tracks){const e=o.initSegment||o;this._bufferInitSegment(h,f.tracks,e,n),r.trigger(tr.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:f.tracks})}const e=f.initPTS,t=f.timescale;Ji(e)&&(this.initPTS[o.cc]={baseTime:e,timescale:t},r.trigger(tr.INIT_PTS_FOUND,{frag:o,id:i,initPTS:e,timescale:t}))}if(c&&g&&"initSegment"!==o.sn){const e=g.fragments[o.sn-1-g.startSN],t=o.sn===g.startSN,i=!e||o.cc>e.cc;if(!1!==s.independent){const{startPTS:e,endPTS:r,startDTS:s,endDTS:a}=c;if(l)l.elementaryStreams[c.type]={startPTS:e,endPTS:r,startDTS:s,endDTS:a};else if(c.firstKeyFrame&&c.independent&&1===n.id&&!i&&(this.couldBacktrack=!0),c.dropped&&c.independent){const s=this.getMainFwdBufferInfo(),n=(s?s.end:this.getLoadPosition())+this.config.maxBufferHole,l=c.firstKeyFramePTS?c.firstKeyFramePTS:e;if(!t&&n2&&(o.gap=!0);o.setElementaryStreamInfo(c.type,e,r,s,a),this.backtrackFragment&&(this.backtrackFragment=o),this.bufferFragmentData(c,o,l,n,t||i)}else{if(!t&&!i)return void this.backtrack(o);o.gap=!0}}if(m){const{startPTS:e,endPTS:t,startDTS:i,endDTS:r}=m;l&&(l.elementaryStreams[mr]={startPTS:e,endPTS:t,startDTS:i,endDTS:r}),o.setElementaryStreamInfo(mr,e,t,i,r),this.bufferFragmentData(m,o,l,n)}if(g&&null!=u&&null!=(t=u.samples)&&t.length){const e={id:i,frag:o,details:g,samples:u.samples};r.trigger(tr.FRAG_PARSING_METADATA,e)}if(g&&d){const e={id:i,frag:o,details:g,samples:d.samples};r.trigger(tr.FRAG_PARSING_USERDATA,e)}}}_bufferInitSegment(e,t,i,r){if(this.state!==Za)return;this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&delete t.audio;const{audio:s,video:n,audiovideo:a}=t;if(s){let t=e.audioCodec;const i=navigator.userAgent.toLowerCase();if(this.audioCodecSwitch){t&&(t=-1!==t.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5");const e=s.metadata;e&&"channelCount"in e&&1!==(e.channelCount||1)&&-1===i.indexOf("firefox")&&(t="mp4a.40.5")}t&&-1!==t.indexOf("mp4a.40.5")&&-1!==i.indexOf("android")&&"audio/mpeg"!==s.container&&(t="mp4a.40.2",this.log(`Android: force audio codec to ${t}`)),e.audioCodec&&e.audioCodec!==t&&this.log(`Swapping manifest audio codec "${e.audioCodec}" for "${t}"`),s.levelCodec=t,s.id="main",this.log(`Init audio buffer, container:${s.container}, codecs[selected/level/parsed]=[${t||""}/${e.audioCodec||""}/${s.codec}]`)}n&&(n.levelCodec=e.videoCodec,n.id="main",this.log(`Init video buffer, container:${n.container}, codecs[level/parsed]=[${e.videoCodec||""}/${n.codec}]`)),a&&this.log(`Init audiovideo buffer, container:${a.container}, codecs[level/parsed]=[${e.codecs}/${a.codec}]`),this.hls.trigger(tr.BUFFER_CODECS,t),Object.keys(t).forEach((e=>{const s=t[e].initSegment;null!=s&&s.byteLength&&this.hls.trigger(tr.BUFFER_APPENDING,{type:e,data:s,frag:i,part:null,chunkMeta:r,parent:i.type})})),this.tickImmediate()}getMainFwdBufferInfo(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,hn)}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=qa}checkFragmentChanged(){const e=this.media;let t=null;if(e&&e.readyState>1&&!1===e.seeking){const i=e.currentTime;if(xa.isBuffered(e,i)?t=this.getAppendedFrag(i):xa.isBuffered(e,i+.1)&&(t=this.getAppendedFrag(i+.1)),t){this.backtrackFragment=null;const e=this.fragPlaying,i=t.level;e&&t.sn===e.sn&&e.level===i||(this.fragPlaying=t,this.hls.trigger(tr.FRAG_CHANGED,{frag:t}),e&&e.level===i||this.hls.trigger(tr.LEVEL_SWITCHED,{level:i}))}}}get nextLevel(){const e=this.nextBufferedFrag;return e?e.level:-1}get currentFrag(){const e=this.media;return e?this.fragPlaying||this.getAppendedFrag(e.currentTime):null}get currentProgramDateTime(){const e=this.media;if(e){const t=e.currentTime,i=this.currentFrag;if(i&&Ji(t)&&Ji(i.programDateTime)){const e=i.programDateTime+1e3*(t-i.start);return new Date(e)}}return null}get currentLevel(){const e=this.currentFrag;return e?e.level:-1}get nextBufferedFrag(){const e=this.currentFrag;return e?this.followingBufferedFrag(e):null}get forceStartLoad(){return this._forceStartLoad}}class Ac{static get version(){return"1.5.11"}static isMSESupported(){return bc()}static isSupported(){return function(){if(!bc())return!1;const e=Os();return"function"==typeof(null==e?void 0:e.isTypeSupported)&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some((t=>e.isTypeSupported(Us(t,"video"))))||["mp4a.40.2","fLaC"].some((t=>e.isTypeSupported(Us(t,"audio")))))}()}static getMediaSource(){return Os()}static get Events(){return tr}static get ErrorTypes(){return ir}static get ErrorDetails(){return rr}static get DefaultConfig(){return Ac.defaultConfig?Ac.defaultConfig:gc}static set DefaultConfig(e){Ac.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 fl,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,function(e,t){if("object"==typeof console&&!0===e||"object"==typeof e){or(e,"debug","log","info","warn","error");try{ar.log(`Debug logs enabled for "${t}" in hls.js version 1.5.11`)}catch(e){ar=nr}}else ar=nr}(e.debug||!1,"Hls instance");const t=this.config=function(e,t){if((t.liveSyncDurationCount||t.liveMaxLatencyDurationCount)&&(t.liveSyncDuration||t.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==t.liveMaxLatencyDurationCount&&(void 0===t.liveSyncDurationCount||t.liveMaxLatencyDurationCount<=t.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==t.liveMaxLatencyDuration&&(void 0===t.liveSyncDuration||t.liveMaxLatencyDuration<=t.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');const i=mc(e),r=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach((e=>{const s=`${"level"===e?"playlist":e}LoadPolicy`,n=void 0===t[s],a=[];r.forEach((r=>{const o=`${e}Loading${r}`,l=t[o];if(void 0!==l&&n){a.push(o);const e=i[s].default;switch(t[s]={default:e},r){case"TimeOut":e.maxLoadTimeMs=l,e.maxTimeToFirstByteMs=l;break;case"MaxRetry":e.errorRetry.maxNumRetry=l,e.timeoutRetry.maxNumRetry=l;break;case"RetryDelay":e.errorRetry.retryDelayMs=l,e.timeoutRetry.retryDelayMs=l;break;case"MaxRetryTimeout":e.errorRetry.maxRetryDelayMs=l,e.timeoutRetry.maxRetryDelayMs=l}}})),a.length&&lr.warn(`hls.js config: "${a.join('", "')}" setting(s) are deprecated, use "${s}": ${JSON.stringify(t[s])}`)})),qi(qi({},i),t)}(Ac.DefaultConfig,e);this.userConfig=e,t.progressive&&pc(t);const{abrController:i,bufferController:r,capLevelController:s,errorController:n,fpsController:a}=t,o=new n(this),l=this.abrController=new i(this),h=this.bufferController=new r(this),c=this.capLevelController=new s(this),d=new a(this),u=new gn(this),f=new kn(this),g=t.contentSteeringController,m=g?new g(this):null,p=this.levelController=new yc(this,m),v=new Ra(this),y=new Ec(this.config),T=this.streamController=new wc(this,v,y);c.setStreamController(T),d.setStreamController(T);const E=[u,p,T];m&&E.splice(1,0,m),this.networkControllers=E;const S=[l,h,c,d,f,v];this.audioTrackController=this.createController(t.audioTrackController,E);const b=t.audioStreamController;b&&E.push(new b(this,v,y)),this.subtitleTrackController=this.createController(t.subtitleTrackController,E);const L=t.subtitleStreamController;L&&E.push(new L(this,v,y)),this.createController(t.timelineController,S),y.emeController=this.emeController=this.createController(t.emeController,S),this.cmcdController=this.createController(t.cmcdController,S),this.latencyController=this.createController(_n,S),this.coreComponents=S,E.push(o);const w=o.onErrorOut;"function"==typeof w&&this.on(tr.ERROR,w,o)}createController(e,t){if(e){const i=new e(this);return t&&t.push(i),i}return null}on(e,t,i=this){this._emitter.on(e,t,i)}once(e,t,i=this){this._emitter.once(e,t,i)}removeAllListeners(e){this._emitter.removeAllListeners(e)}off(e,t,i=this,r){this._emitter.off(e,t,i,r)}listeners(e){return this._emitter.listeners(e)}emit(e,t,i){return this._emitter.emit(e,t,i)}trigger(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(t){if(lr.error("An internal error happened while handling event "+e+'. Error message: "'+t.message+'". Here is a stacktrace:',t),!this.triggeringException){this.triggeringException=!0;const i=e===tr.ERROR;this.trigger(tr.ERROR,{type:ir.OTHER_ERROR,details:rr.INTERNAL_EXCEPTION,fatal:i,event:e,error:t}),this.triggeringException=!1}}return!1}listenerCount(e){return this._emitter.listenerCount(e)}destroy(){lr.log("destroy"),this.trigger(tr.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((e=>e.destroy())),this.networkControllers.length=0,this.coreComponents.forEach((e=>e.destroy())),this.coreComponents.length=0;const e=this.config;e.xhrSetup=e.fetchSetup=void 0,this.userConfig=null}attachMedia(e){lr.log("attachMedia"),this._media=e,this.trigger(tr.MEDIA_ATTACHING,{media:e})}detachMedia(){lr.log("detachMedia"),this.trigger(tr.MEDIA_DETACHING,void 0),this._media=null}loadSource(e){this.stopLoad();const t=this.media,i=this.url,r=this.url=Wi.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,lr.log(`loadSource:${r}`),t&&i&&(i!==r||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(t)),this.trigger(tr.MANIFEST_LOADING,{url:e})}startLoad(e=-1){lr.log(`startLoad(${e})`),this.started=!0,this.networkControllers.forEach((t=>{t.startLoad(e)}))}stopLoad(){lr.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(){lr.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){lr.log("recoverMediaError");const e=this._media;this.detachMedia(),e&&this.attachMedia(e)}removeLevel(e){this.levelController.removeLevel(e)}get levels(){const e=this.levelController.levels;return e||[]}get currentLevel(){return this.streamController.currentLevel}set currentLevel(e){lr.log(`set currentLevel:${e}`),this.levelController.manualLevel=e,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(e){lr.log(`set nextLevel:${e}`),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(e){lr.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){lr.log(`set firstLevel:${e}`),this.levelController.firstLevel=e}get startLevel(){const e=this.levelController.startLevel;return-1===e&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:e}set startLevel(e){lr.log(`set startLevel:${e}`),-1!==e&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(e){const t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimate():NaN}set bandwidthEstimate(e){this.abrController.resetEstimator(e)}get ttfbEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimateTTFB():NaN}set autoLevelCapping(e){this._autoLevelCapping!==e&&(lr.log(`set autoLevelCapping:${e}`),this._autoLevelCapping=e,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(e){(function(e){return Dn.indexOf(e)>-1})(e)&&this._maxHdcpLevel!==e&&(this._maxHdcpLevel=e,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return-1===this.levelController.manualLevel}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:e,config:{minAutoBitrate:t}}=this;if(!e)return 0;const i=e.length;for(let r=0;r=t)return r;return 0}get maxAutoLevel(){const{levels:e,autoLevelCapping:t,maxHdcpLevel:i}=this;let r;if(r=-1===t&&null!=e&&e.length?e.length-1:t,i)for(let t=r;t--;){const r=e[t].attrs["HDCP-LEVEL"];if(r&&r<=i)return t}return r}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 null==(t=this.audioTrackController)?void 0:t.setAudioOption(e)}setSubtitleOption(e){var t;return null==(t=this.subtitleTrackController)||t.setSubtitleOption(e),null}get allAudioTracks(){const e=this.audioTrackController;return e?e.allAudioTracks:[]}get audioTracks(){const e=this.audioTrackController;return e?e.audioTracks:[]}get audioTrack(){const e=this.audioTrackController;return e?e.audioTrack:-1}set audioTrack(e){const t=this.audioTrackController;t&&(t.audioTrack=e)}get allSubtitleTracks(){const e=this.subtitleTrackController;return e?e.allSubtitleTracks:[]}get subtitleTracks(){const e=this.subtitleTrackController;return e?e.subtitleTracks:[]}get subtitleTrack(){const e=this.subtitleTrackController;return e?e.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(e){const t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}get subtitleDisplay(){const e=this.subtitleTrackController;return!!e&&e.subtitleDisplay}set subtitleDisplay(e){const t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(e){this.config.lowLatencyMode=e}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}}function Rc(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e.$video.volume=e._options.volume)}),1e3)})),e.event.emit("parsed")}))}))}else if(this.$video.canPlayType("application/vnd.apple.mpegurl")){this.logger.log("Browser support application/vnd.apple.mpegurl : ",this.$video.canPlayType("application/vnd.apple.mpegurl")),this.$video.src=this._options.url;var i=!1;this.$video.addEventListener("canplay",(function(){!i&&e._options.autoPlay&&setTimeout((function(){e.$video.play().then((function(){e.logger.log("autoPlay video!"),setTimeout((function(){e._options.volume>0&&e.setVolume(e._options.volume)}),1e3),i=!0}))}),200)}))}else this.logger.warn("Browser not support hls")},i.isPlayingState=function(){return!this.$video.paused},i.play=function(){if(this.isPlayingState())return Promise.resolve();if(this._options.isLive&&(this.$video.buffered.length>=1&&this.$video.buffered.end(0)>1)){var e=this.$video.buffered.end(0)-1;this.$video.currentTime=e}return this.$video.play()},i.pause=function(){this.$video.pause()},i.setVolume=function(e){this.$video.muted&&(this.$video.muted=!1),this._volume=+(e||0),0===this._volume&&(this.$video.muted=!0),this.$video.volume=this._volume},i.destroy=function(){this.$video&&this.$video.pause(),this._hls&&(this._hls.destroy(),this._hls=null),e.prototype.destroy.call(this)},i._onEvent=function(){var e;(e=this).$video&&(e.$video.addEventListener("canplay",(function(){e.event.emit("canplay")})),e.$video.addEventListener("loadeddata",(function(){e.event.emit("loadeddata")})),e.$video.addEventListener("volumechange",(function(){e.event.emit("volumechange",{data:e.$video.volume})})),e.$video.addEventListener("waiting",(function(){e.event.emit("waiting")})),e.$video.addEventListener("timeupdate",(function(){var t;null==(t=e.event)||t.emit("timeupdate")})),e.$video.addEventListener("seeking",(function(){e.event.emit("seeking",{data:e.$video.currentTime})})),e.$video.addEventListener("seeked",(function(){e.event.emit("seeked")})),e.$video.addEventListener("abort",(function(){e.event.emit("abort")})),e.$video.addEventListener("error",(function(){var t;null==(t=e.event)||t.emit("error",{data:e.$video.error})})),e.$video.addEventListener("ended",(function(){e.event.emit("ended")})))},Rc(t,[{key:"volume",get:function(){return this._volume},set:function(e){this.setVolume(e)}}]),t}(Ri);var xc="wasm_loaded",Cc="wasm_failed",Ic="init";function Pc(e,t){return Pc=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Pc(e,t)}var Oc=function(e){function t(t){var i;return void 0===t&&(t={}),i=e.call(this,t)||this,t.url=function(e,t){void 0===t&&(t=["h264"]);var i=(t||["h264"]).reduce((function(e,t){return t=t.toLowerCase(),e+(Xt[t]||0)}),0),r=e.split("?")[0],s=e.split("?")[1];return s=(s||"").split("&").filter((function(e){return!/^vc=\d?/.test(e)})).join("&"),r+"?"+s+(s?"&":"")+"vc="+i}(null==t?void 0:t.url,["h264","h265"]),function(e,t){if(((null==t?void 0:t.volume)||0)>1?e._volume=1:((null==t?void 0:t.volume)||0)<=0?e._volume=0:e._volume=+((null==t?void 0:t.volume)||0),t.volume=e._volume,e.options=zt({},wi,t),"string"!=typeof e.options.id)throw new Error("id is required!");e.logger=z(e.options.loggerOptions),e.event=new ei,e.logger.log("HlsPlayer version: ",Uc.version),e.logger.log("HlsPlayer options: ",e.options),e.options.logger=e.logger}(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(i),t),i._containerClassName=Li+"-container",i._render(),i}!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Pc(e,t)}(t,e);var i=t.prototype;return i._render=function(){this.$container.classList.add(this._containerClassName)},i.destroy=function(){this.$container&&(this.$container.classList.remove(this._containerClassName),this.$container.innerHTML="",this.$container=null)},t}(Si);function Mc(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e=!0),this.playParam={durationMs:0,fps:0,sampleRate:0,size:{width:0,height:0},audioNone:e,videoCodec:T},!A())throw new Error("Browser not support WebAssembly!");this._onWorkerMessage()},i.play=function(){if(Ui.send(1,{name:"play"}),null===this.player)return Promise.resolve();if(this.playParam.videoCodec===T){var e={seekPos:0,isLive:this.options.isLive,accurateSeek:!0,seekEvent:!1,realPlay:!0};return this.player.play(e)}return this.player.play()},i.pause=function(){return Ui.send(1,{name:"pause"}),null!==this.player&&(this.player.pause(),!0)},i.destroy=function(){var t,i;return Ui.send(1,{name:"destroy"}),void 0!==this.player&&null!==this.player&&(this.playParam.videoCodec===T&&this._m3u8Obj&&(this._m3u8Obj.destroy(),this._m3u8Obj=null),this.player.destroy(),this._decoderWorker&&(this._decoderWorker.postMessage(P(B)),this._decoderWorker.terminate(),this._decoderWorker=null),this.logger.log("destroy"),null==(i=this.event)||null==(t=i.emit)||t.call(i,"destroy"),this.player=null,e.prototype.destroy.call(this),!0)},i.isPlaying=function(){return null!==this.player&&this.player.isPlayingState()},i.setVolume=function(e){var t;(e=+e)>1||e<0?this.logger.warn("volume volume value 0.0 ~ 1.0!"):((t=this).player||(t.event.emit("playerIsNull"),t.logger.warn("Player instance does not exist!"),0))&&(this.player.setVolume(e),this.event.emit("volumeChange",{data:e}))},i.getVersion=function(){return Ui.send(1,{name:"getVersion"}),"0.1.0"},i._m3u8Entry=function(){var e=this;this._m3u8Obj=new Vi({logger:this.logger,decoderWorker:this._decoderWorker,event:this.event}),this._m3u8Obj.bindReady(this),this._m3u8Obj.onFinished=function(e,t){},this._m3u8Obj.onCacheProcess=function(t){e.options.isLive||null==e.onCacheProcess||e.onCacheProcess.call(e,t)},this._m3u8Obj.onDemuxed=this._checkPlayer.bind(this),this._m3u8Obj.onSamples=this._hlsOnSamples.bind(this),this._m3u8Obj.demux(this.url)},i._checkPlayer=function(e,t){var i=this;if(null==i.player){var r,s,n;if(!(null==i||null==(r=i._m3u8Obj)?void 0:r.isHevcParam)||t)return null==i||null==(n=i._m3u8Obj)||null==(s=n.destroy)||s.call(n),i._m3u8Obj=null,this._decoderWorker.terminate(),this._decoderWorker=null,void(i.player=new Dc(Fc({},this.options,{event:this.event,logger:this.logger})));var a=i._m3u8Obj.getACodec(),o=i._m3u8Obj.getFPS(),l=i._m3u8Obj.getSampleRate(),h=i._m3u8Obj.getSize(),c=!1;c=i._m3u8Obj.getSampleChannel()<=0||""===a,i._softPlayer(0,o,l,h,c)}},i._hlsOnSamples=function(e,t){var i,r,s,n=this;if(t.video)null==(s=n.player)||null==(r=s.appendHevcFrame)||r.call(s,t);else if(!(null==(i=n._m3u8Obj)?void 0:i.audioNone)){var a,o;null==(o=n.player)||null==(a=o.appendAACFrame)||a.call(o,t)}},i._onWorkerMessage=function(){var e=this,i=this;this._decoderWorker.onmessage=function(r){var s=r.data;switch(s.cmd){case O:t.__HLS_WASM_DecoderState__=0;break;case M:t.__HLS_WASM_DecoderState__=1,e.logger.log("Wasm already init over!"),i.event.emit(xc),i._decoderWorker.postMessage(P("registerWasmPlayer")),i._m3u8Entry();break;case F:t.__HLS_WASM_DecoderState__=-1,e.logger.error("Wasm init failed!",s),i.event.emit(Cc,s),Ui.send("wasm",{name:"wasm loading failed"}),i._checkPlayer(!0)}}},i._softPlayer=function(e,t,i,r,s,n){var a,o,l=this;void 0===s&&(s=!1),void 0===n&&(n=null);var c,d=this;(this.playParam.durationMs=e,this.playParam.fps=t,this.playParam.sampleRate=i,this.playParam.size=r,this.playParam.audioNone=s,this.playParam.videoCodec=n||T,this.logger.log("this.playParam: ",this.playParam),this.logger.log("start init soft player"),this.player=new xi(Fc({},d.options,{sampleRate:i,fps:t,appendHevcType:h,fixed:!1,id:this.options.id,audioNone:s,videoCodec:n,logger:this.logger,event:this.event,decoderWorker:this._decoderWorker})),this.player.onPlayingTime=function(e){var t;null==d||null==(t=d.onPlayTime)||t.call(d,e)},this.player.onPlayingFinish=function(){var e,t;(l.pause(),null!=l.onPlayFinish)&&(null==(t=l)||null==(e=t.onPlayFinish)||e.call(t))},this.player.onLoadCache=function(){var e,t;null==(t=l)||null==(e=t.onLoadCache)||e.call(t)},this.player.onLoadCacheFinished=function(){var e,t;null==(t=l)||null==(e=t.onLoadCacheFinished)||e.call(t)},null==(a=d.player)||a.setDurationMs(e),null==(o=d.player)||o.setFrameRate(t),null!=d.onReadyShowDone)&&(null==d||null==(c=d.onReadyShowDone)||c.call(d));this.event.emit("parsed"),this.player&&this.options.autoPlay&&this.play()},t.supportType=function(e){if(Ui.send(1,{name:"supportType",options:e}),"hls"===e.type)return!0;if(e.url){var t=e.url;t.startsWith("http://")||t.startsWith("https://")||(t=/^\/\//.test(t)?"http:"+t:location.origin+location.pathname+t);try{return/\.m3u8$/i.test(new URL(t).pathname)}catch(e){}}return!1},Mc(t,[{key:"volume",get:function(){return this.player?this.player.volume:this.options.volume},set:function(e){e=+e,this.setVolume(e)}}]),t}(Oc);return Uc.__HLS_WASM_DecoderState__=0,Uc.version="0.1.0",Uc})); diff --git a/package.json b/package.json index da66fca..d192257 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ezuikit/player-hls", - "version": "0.1.0-beta.2", + "version": "0.1.0", "description": "hls播放器", "main": "dist/index.js", "umd": "dist/index.umd.js", From 8574c30fc3af0471a11f639a514497d6a6c044e9 Mon Sep 17 00:00:00 2001 From: ShineShao Date: Thu, 1 Aug 2024 13:44:35 +0800 Subject: [PATCH 18/20] feat: update version 0.1.0 --- examples/base-app/decoder.worker.js | 2 +- examples/base-app/index.umd.js | 4 ++-- examples/base-app/package.json | 2 +- examples/base-app/pnpm-lock.yaml | 8 ++++---- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/examples/base-app/decoder.worker.js b/examples/base-app/decoder.worker.js index e229e81..4b8dbac 100644 --- a/examples/base-app/decoder.worker.js +++ b/examples/base-app/decoder.worker.js @@ -1,6 +1,6 @@ /* * -* DecoderWorker.js v0.1.0-beta.1 +* DecoderWorker.js v0.1.0 * Copyright (c) 2024-8-1 Ezviz-OpenBiz * . * diff --git a/examples/base-app/index.umd.js b/examples/base-app/index.umd.js index 1d738f6..b67e92b 100644 --- a/examples/base-app/index.umd.js +++ b/examples/base-app/index.umd.js @@ -1,6 +1,6 @@ /* * -* HlsPlayer.js v0.1.0-beta.1 +* HlsPlayer.js v0.1.0 * Copyright (c) 2024-8-1 Ezviz-OpenBiz * . * @@ -57,4 +57,4 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ -const bl={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},Ll=e=>String.fromCharCode(bl[e]||e),wl=15,Al=100,Rl={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},kl={17:2,18:4,21:6,22:8,23:10,19:13,20:15},_l={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},Dl={25:2,26:4,29:6,30:8,31:10,27:13,28:15},xl=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];class Cl{constructor(){this.time=null,this.verboseLevel=0}log(e,t){if(this.verboseLevel>=e){const i="function"==typeof t?t():t;lr.log(`${this.time} [${e}] ${i}`)}}}const Il=function(e){const t=[];for(let i=0;iAl&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=Al)}moveCursor(e){const t=this.pos+e;if(e>1)for(let e=this.pos+1;e=144&&this.backSpace();const t=Ll(e);this.pos>=Al?this.logger.log(0,(()=>"Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!")):(this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1))}clearFromPos(e){let t;for(t=e;t"pacData = "+JSON.stringify(e)));let t=e.row-1;if(this.nrRollUpRows&&t"bkgData = "+JSON.stringify(e))),this.backSpace(),this.setPen(e),this.insertChar(32)}setRollUpRows(e){this.nrRollUpRows=e}rollUp(){if(null===this.nrRollUpRows)return void this.logger.log(3,"roll_up but nrRollUpRows not set yet");this.logger.log(1,(()=>this.getDisplayText()));const e=this.currRow+1-this.nrRollUpRows,t=this.rows.splice(e,1)[0];t.clear(),this.rows.splice(this.currRow,0,t),this.logger.log(2,"Rolling up")}getDisplayText(e){e=e||!1;const t=[];let i="",r=-1;for(let i=0;i0&&(i=e?"["+t.join(" | ")+"]":t.join("\n")),i}getTextAndFormat(){return this.rows}}class Nl{constructor(e,t,i){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 Fl(i),this.nonDisplayedMemory=new Fl(i),this.lastOutputScreen=new Fl(i),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=i}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],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)),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)}insertChars(e){for(let t=0;tt+": "+this.writeScreen.getDisplayText(!0))),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(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"),"MODE_TEXT"!==this.mode&&(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"),"MODE_POP-ON"===this.mode){const e=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=e,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,(()=>"DISP: "+this.displayedMemory.getDisplayText()))}this.outputDataUpdate(!0)}ccTO(e){this.logger.log(2,"TO("+e+") - Tab Offset"),this.writeScreen.moveCursor(e)}ccMIDROW(e){const t={flash:!1};if(t.underline=e%2==1,t.italics=e>=46,t.italics)t.foreground="white";else{const i=Math.floor(e/2)-16,r=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=r[i]}this.logger.log(2,"MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)}outputDataUpdate(e=!1){const t=this.logger.time;null!==t&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?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.cueStartTime=t,this.lastOutputScreen.copy(this.displayedMemory))}cueSplitAtTime(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))}}class Ul{constructor(e,t,i){this.channels=void 0,this.currentChannel=0,this.cmdHistory={a:null,b:null},this.logger=void 0;const r=this.logger=new Cl;this.channels=[null,new Nl(e,t,r),new Nl(e+1,i,r)]}getHandler(e){return this.channels[e].getHandler()}setHandler(e,t){this.channels[e].setHandler(t)}addData(e,t){this.logger.time=e;for(let e=0;e"["+Il([t[e],t[e+1]])+"] -> ("+Il([i,r])+")"));const a=this.cmdHistory;if(i>=16&&i<=31){if($l(i,r,a)){Bl(null,null,a),this.logger.log(3,(()=>"Repeated command ("+Il([i,r])+") is dropped"));continue}Bl(i,r,this.cmdHistory),s=this.parseCmd(i,r),s||(s=this.parseMidrow(i,r)),s||(s=this.parsePAC(i,r)),s||(s=this.parseBackgroundAttributes(i,r))}else Bl(null,null,a);if(!s&&(n=this.parseChars(i,r),n)){const e=this.currentChannel;if(e&&e>0){this.channels[e].insertChars(n)}else this.logger.log(2,"No channel found yet. TEXT-MODE?")}s||n||this.logger.log(2,(()=>"Couldn't parse cleaned data "+Il([i,r])+" orig: "+Il([t[e],t[e+1]])))}}parseCmd(e,t){if(!((20===e||28===e||21===e||29===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=33&&t<=35))return!1;const i=20===e||21===e||23===e?1:2,r=this.channels[i];return 20===e||21===e||28===e||29===e?32===t?r.ccRCL():33===t?r.ccBS():34===t?r.ccAOF():35===t?r.ccAON():36===t?r.ccDER():37===t?r.ccRU(2):38===t?r.ccRU(3):39===t?r.ccRU(4):40===t?r.ccFON():41===t?r.ccRDC():42===t?r.ccTR():43===t?r.ccRTD():44===t?r.ccEDM():45===t?r.ccCR():46===t?r.ccENM():47===t&&r.ccEOC():r.ccTO(t-32),this.currentChannel=i,!0}parseMidrow(e,t){let i=0;if((17===e||25===e)&&t>=32&&t<=47){if(i=17===e?1:2,i!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;const r=this.channels[i];return!!r&&(r.ccMIDROW(t),this.logger.log(3,(()=>"MIDROW ("+Il([e,t])+")")),!0)}return!1}parsePAC(e,t){let i;if(!((e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127)&&!((16===e||24===e)&&t>=64&&t<=95))return!1;const r=e<=23?1:2;i=t>=64&&t<=95?1===r?Rl[e]:_l[e]:1===r?kl[e]:Dl[e];const s=this.channels[r];return!!s&&(s.setPAC(this.interpretPAC(i,t)),this.currentChannel=r,!0)}interpretPAC(e,t){let i;const r={color:null,italics:!1,indent:null,underline:!1,row:e};return i=t>95?t-96:t-64,r.underline=!(1&~i),i<=13?r.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(i/2)]:i<=15?(r.italics=!0,r.color="white"):r.indent=4*Math.floor((i-16)/2),r}parseChars(e,t){let i,r=null,s=null;if(e>=25?(i=2,s=e-8):(i=1,s=e),s>=17&&s<=19){let e;e=17===s?t+80:18===s?t+112:t+144,this.logger.log(2,(()=>"Special char '"+Ll(e)+"' in channel "+i)),r=[e]}else e>=32&&e<=127&&(r=0===t?[e]:[e,t]);return r&&this.logger.log(3,(()=>"Char codes = "+Il(r).join(","))),r}parseBackgroundAttributes(e,t){if(!((16===e||24===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=45&&t<=47))return!1;let i;const r={};16===e||24===e?(i=Math.floor((t-32)/2),r.background=xl[i],t%2==1&&(r.background=r.background+"_semi")):45===t?r.background="transparent":(r.foreground="black",47===t&&(r.underline=!0));const s=e<=23?1:2;return this.channels[s].setBkgData(r),!0}reset(){for(let e=0;ee)&&(this.startTime=e),this.endTime=t,this.screen=i,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}var Kl=function(){if(null!=Ar&&Ar.VTTCue)return self.VTTCue;const e=["","lr","rl"],t=["start","middle","end","left","right"];function i(e,t){if("string"!=typeof t)return!1;if(!Array.isArray(e))return!1;const i=t.toLowerCase();return!!~e.indexOf(i)&&i}function r(e){return i(t,e)}function s(e,...t){let i=1;for(;i100)throw new Error("Position must be between 0 and 100.");T=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"positionAlign",s({},l,{get:function(){return E},set:function(e){const t=r(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");E=t,this.hasBeenReset=!0}})),Object.defineProperty(o,"size",s({},l,{get:function(){return S},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");S=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"align",s({},l,{get:function(){return b},set:function(e){const t=r(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");b=t,this.hasBeenReset=!0}})),o.displayState=void 0}return n.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},n}();class Vl{decode(e,t){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))}}function Hl(e){function t(e,t,i,r){return 3600*(0|e)+60*(0|t)+(0|i)+parseFloat(r||0)}const i=e.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return i?parseFloat(i[2])>59?t(i[2],i[3],0,i[4]):t(i[1],i[2],i[3],i[4]):null}class jl{constructor(){this.values=Object.create(null)}set(e,t){this.get(e)||""===t||(this.values[e]=t)}get(e,t,i){return i?this.has(e)?this.values[e]:t[i]:this.has(e)?this.values[e]:t}has(e){return e in this.values}alt(e,t,i){for(let r=0;r=0&&i<=100)return this.set(e,i),!0}return!1}}function Wl(e,t,i,r){const s=r?e.split(r):[e];for(const e in s){if("string"!=typeof s[e])continue;const r=s[e].split(i);if(2!==r.length)continue;t(r[0],r[1])}}const Yl=new Kl(0,0,""),ql="middle"===Yl.align?"middle":"center";function zl(e,t,i){const r=e;function s(){const t=Hl(e);if(null===t)throw new Error("Malformed timestamp: "+r);return e=e.replace(/^[^\sa-zA-Z-]+/,""),t}function n(){e=e.replace(/^\s+/,"")}if(n(),t.startTime=s(),n(),"--\x3e"!==e.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+r);e=e.slice(3),n(),t.endTime=s(),n(),function(e,t){const r=new jl;Wl(e,(function(e,t){let s;switch(e){case"region":for(let s=i.length-1;s>=0;s--)if(i[s].id===t){r.set(e,i[s].region);break}break;case"vertical":r.alt(e,t,["rl","lr"]);break;case"line":s=t.split(","),r.integer(e,s[0]),r.percent(e,s[0])&&r.set("snapToLines",!1),r.alt(e,s[0],["auto"]),2===s.length&&r.alt("lineAlign",s[1],["start",ql,"end"]);break;case"position":s=t.split(","),r.percent(e,s[0]),2===s.length&&r.alt("positionAlign",s[1],["start",ql,"end","line-left","line-right","auto"]);break;case"size":r.percent(e,t);break;case"align":r.alt(e,t,["start",ql,"end","left","right"])}}),/:/,/\s/),t.region=r.get("region",null),t.vertical=r.get("vertical","");let s=r.get("line","auto");"auto"===s&&-1===Yl.line&&(s=-1),t.line=s,t.lineAlign=r.get("lineAlign","start"),t.snapToLines=r.get("snapToLines",!0),t.size=r.get("size",100),t.align=r.get("align",ql);let n=r.get("position","auto");"auto"===n&&50===Yl.position&&(n="start"===t.align||"left"===t.align?0:"end"===t.align||"right"===t.align?100:50),t.position=n}(e,t)}function Xl(e){return e.replace(//gi,"\n")}class Ql{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new Vl,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(e){const t=this;function i(){let e=t.buffer,i=0;for(e=Xl(e);i>>0).toString()};function th(e,t,i){return eh(e.toString())+eh(t.toString())+eh(i)}function ih(e,t,i,r,s,n,a){const o=new Ql,l=Jr(new Uint8Array(e)).trim().replace(Jl,"\n").split("\n"),h=[],c=t?function(e,t=1){return zo(e,qo,1/t)}(t.baseTime,t.timescale):0;let d,u="00:00.000",f=0,g=0,m=!0;o.oncue=function(e){const n=i[r];let a=i.ccOffset;const o=(f-c)/9e4;if(null!=n&&n.new&&(void 0!==g?a=i.ccOffset=n.start:function(e,t,i){let r=e[t],s=e[r.prevCC];if(!s||!s.new&&r.new)return e.ccOffset=e.presentationOffset=r.start,void(r.new=!1);for(;null!=(n=s)&&n.new;){var n;e.ccOffset+=r.start-s.start,r.new=!1,r=s,s=e[r.prevCC]}e.presentationOffset=i}(i,r,o)),o){if(!t)return void(d=new Error("Missing initPTS for VTT MPEGTS"));a=o-i.presentationOffset}const l=e.endTime-e.startTime,u=tl(9e4*(e.startTime+a-g),9e4*s)/9e4;e.startTime=Math.max(u,0),e.endTime=Math.max(u+l,0);const m=e.text.trim();e.text=decodeURIComponent(encodeURIComponent(m)),e.id||(e.id=th(e.startTime,e.endTime,m)),e.endTime>0&&h.push(e)},o.onparsingerror=function(e){d=e},o.onflush=function(){d?a(d):n(h)},l.forEach((e=>{if(m){if(Zl(e,"X-TIMESTAMP-MAP=")){m=!1,e.slice(16).split(",").forEach((e=>{Zl(e,"LOCAL:")?u=e.slice(6):Zl(e,"MPEGTS:")&&(f=parseInt(e.slice(7)))}));try{g=function(e){let t=parseInt(e.slice(-3));const i=parseInt(e.slice(-6,-4)),r=parseInt(e.slice(-9,-7)),s=e.length>9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!(Ji(t)&&Ji(i)&&Ji(r)&&Ji(s)))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${e}`);return t+=1e3*i,t+=6e4*r,t+=36e5*s,t}(u)/1e3}catch(e){d=e}return}""===e&&(m=!1)}o.parse(e+"\n")})),o.flush()}const rh="stpp.ttml.im1t",sh=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,nh=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,ah={left:"start",center:"center",right:"end",start:"start",end:"end"};function oh(e,t,i,r){const s=ds(new Uint8Array(e),["mdat"]);if(0===s.length)return void r(new Error("Could not parse IMSC1 mdat"));const n=s.map((e=>Jr(e))),a=function(e,t,i=1,r=!1){return zo(e,t,1/i,r)}(t.baseTime,1,t.timescale);try{n.forEach((e=>i(function(e,t){const i=(new DOMParser).parseFromString(e,"text/xml"),r=i.getElementsByTagName("tt")[0];if(!r)throw new Error("Invalid ttml");const s={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},n=Object.keys(s).reduce(((e,t)=>(e[t]=r.getAttribute(`ttp:${t}`)||s[t],e)),{}),a="preserve"!==r.getAttribute("xml:space"),o=hh(lh(r,"styling","style")),l=hh(lh(r,"layout","region")),h=lh(r,"body","[begin]");return[].map.call(h,(e=>{const i=ch(e,a);if(!i||!e.hasAttribute("begin"))return null;const r=fh(e.getAttribute("begin"),n),s=fh(e.getAttribute("dur"),n);let h=fh(e.getAttribute("end"),n);if(null===r)throw uh(e);if(null===h){if(null===s)throw uh(e);h=r+s}const c=new Kl(r-t,h-t,i);c.id=th(c.startTime,c.endTime,c.text);const d=function(e,t,i){const r="http://www.w3.org/ns/ttml#styling";let s=null;const n=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],a=null!=e&&e.hasAttribute("style")?e.getAttribute("style"):null;a&&i.hasOwnProperty(a)&&(s=i[a]);return n.reduce(((i,n)=>{const a=dh(t,r,n)||dh(e,r,n)||dh(s,r,n);return a&&(i[n]=a),i}),{})}(l[e.getAttribute("region")],o[e.getAttribute("style")],o),{textAlign:u}=d;if(u){const e=ah[u];e&&(c.lineAlign=e),c.align=u}return Qi(c,d),c})).filter((e=>null!==e))}(e,a))))}catch(e){r(e)}}function lh(e,t,i){const r=e.getElementsByTagName(t)[0];return r?[].slice.call(r.querySelectorAll(i)):[]}function hh(e){return e.reduce(((e,t)=>{const i=t.getAttribute("xml:id");return i&&(e[i]=t),e}),{})}function ch(e,t){return[].slice.call(e.childNodes).reduce(((e,i,r)=>{var s;return"br"===i.nodeName&&r?e+"\n":null!=(s=i.childNodes)&&s.length?ch(i,t):t?e+i.textContent.trim().replace(/\s+/g," "):e+i.textContent}),"")}function dh(e,t,i){return e&&e.hasAttributeNS(t,i)?e.getAttributeNS(t,i):null}function uh(e){return new Error(`Could not parse ttml timestamp ${e}`)}function fh(e,t){if(!e)return null;let i=Hl(e);return null===i&&(sh.test(e)?i=function(e,t){const i=sh.exec(e),r=(0|i[4])+(0|i[5])/t.subFrameRate;return 3600*(0|i[1])+60*(0|i[2])+(0|i[3])+r/t.frameRate}(e,t):nh.test(e)&&(i=function(e,t){const i=nh.exec(e),r=Number(i[1]);switch(i[2]){case"h":return 3600*r;case"m":return 60*r;case"ms":return 1e3*r;case"f":return r/t.frameRate;case"t":return r/t.tickRate}return r}(e,t))),i}function gh(e){return e.characteristics&&/transcribes-spoken-dialog/gi.test(e.characteristics)&&/describes-music-and-sound/gi.test(e.characteristics)?"captions":"subtitles"}function mh(e,t){return!!e&&e.kind===gh(t)&&vl(t,e)}class ph{constructor(e){this.hls=void 0,this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=e,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}setStreamController(e){this.streamController=e}destroy(){this.hls&&this.unregisterListener(),this.timer&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null}registerListeners(){const{hls:e}=this;e.on(tr.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.on(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){const{hls:e}=this;e.off(tr.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(e,t){const i=this.hls.levels[t.droppedLevel];this.isLevelAllowed(i)&&this.restrictedLevels.push({bitrate:i.bitrate,height:i.height,width:i.width})}onMediaAttaching(e,t){this.media=t.media instanceof HTMLVideoElement?t.media:null,this.clientRect=null,this.timer&&this.hls.levels.length&&this.detectPlayerSize()}onManifestParsed(e,t){const i=this.hls;this.restrictedLevels=[],this.firstLevel=t.firstLevel,i.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onLevelsUpdated(e,t){this.timer&&Ji(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)return void(this.clientRect=null);const e=this.hls.levels;if(e.length){const t=this.hls,i=this.getMaxLevel(e.length-1);i!==this.autoLevelCapping&&lr.log(`Setting autoLevelCapping to ${i}: ${e[i].height}p@${e[i].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),t.autoLevelCapping=i,t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}}getMaxLevel(e){const t=this.hls.levels;if(!t.length)return-1;const i=t.filter(((t,i)=>this.isLevelAllowed(t)&&i<=e));return this.clientRect=null,ph.getMaxLevelByMediaSize(i,this.mediaWidth,this.mediaHeight)}startCapping(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())}stopCapping(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)}getDimensions(){if(this.clientRect)return this.clientRect;const e=this.media,t={width:0,height:0};if(e){const i=e.getBoundingClientRect();t.width=i.width,t.height=i.height,t.width||t.height||(t.width=i.right-i.left||e.width||0,t.height=i.bottom-i.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(e){}return e}isLevelAllowed(e){return!this.restrictedLevels.some((t=>e.bitrate===t.bitrate&&e.width===t.width&&e.height===t.height))}static getMaxLevelByMediaSize(e,t,i){if(null==e||!e.length)return-1;let r=e.length-1;const s=Math.max(t,i);for(let t=0;t=s||i.height>=s)&&(n=i,!(a=e[t+1])||n.width!==a.width||n.height!==a.height)){r=t;break}}var n,a;return r}}const vh="[eme]";class yh{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=yh.CDMCleanupPromise?[yh.CDMCleanupPromise]:[],this.onMediaEncrypted=this._onMediaEncrypted.bind(this),this.onWaitingForKey=this._onWaitingForKey.bind(this),this.debug=lr.debug.bind(lr,vh),this.log=lr.log.bind(lr,vh),this.warn=lr.warn.bind(lr,vh),this.error=lr.error.bind(lr,vh),this.hls=e,this.config=e.config,this.registerListeners()}destroy(){this.unregisterListeners(),this.onMediaDetached();const 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(tr.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(tr.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this)}unregisterListeners(){this.hls.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(tr.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this)}getLicenseServerUrl(e){const{drmSystems:t,widevineLicenseUrl:i}=this.config,r=t[e];if(r)return r.licenseUrl;if(e===Rr.WIDEVINE&&i)return i;throw new Error(`no license server URL configured for key-system "${e}"`)}getServerCertificateUrl(e){const{drmSystems:t}=this.config,i=t[e];if(i)return i.serverCertificateUrl;this.log(`No Server Certificate in config.drmSystems["${e}"]`)}attemptKeySystemAccess(e){const t=this.hls.levels,i=(e,t,i)=>!!e&&i.indexOf(e)===t,r=t.map((e=>e.audioCodec)).filter(i),s=t.map((e=>e.videoCodec)).filter(i);return r.length+s.length===0&&s.push("avc1.42e01e"),new Promise(((t,i)=>{const n=e=>{const a=e.shift();this.getMediaKeysPromise(a,r,s).then((e=>t({keySystem:a,mediaKeys:e}))).catch((t=>{e.length?n(e):i(t instanceof Th?t:new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_ACCESS,error:t,fatal:!0},t.message))}))};n(e)}))}requestMediaKeySystemAccess(e,t){const{requestMediaKeySystemAccessFunc:i}=this.config;if("function"!=typeof i){let e=`Configured requestMediaKeySystemAccess is not a function ${i}`;return null===Mr&&"http:"===self.location.protocol&&(e=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`),Promise.reject(new Error(e))}return i(e,t)}getMediaKeysPromise(e,t,i){const r=function(e,t,i,r){let s;switch(e){case Rr.FAIRPLAY:s=["cenc","sinf"];break;case Rr.WIDEVINE:case Rr.PLAYREADY:s=["cenc"];break;case Rr.CLEARKEY:s=["cenc","keyids"];break;default:throw new Error(`Unknown key-system: ${e}`)}return function(e,t,i,r){return[{initDataTypes:e,persistentState:r.persistentState||"optional",distinctiveIdentifier:r.distinctiveIdentifier||"optional",sessionTypes:r.sessionTypes||[r.sessionType||"temporary"],audioCapabilities:t.map((e=>({contentType:`audio/mp4; codecs="${e}"`,robustness:r.audioRobustness||"",encryptionScheme:r.audioEncryptionScheme||null}))),videoCapabilities:i.map((e=>({contentType:`video/mp4; codecs="${e}"`,robustness:r.videoRobustness||"",encryptionScheme:r.videoEncryptionScheme||null})))}]}(s,t,i,r)}(e,t,i,this.config.drmSystemOptions),s=this.keySystemAccessPromises[e];let n=null==s?void 0:s.keySystemAccess;if(!n){this.log(`Requesting encrypted media "${e}" key-system access with config: ${JSON.stringify(r)}`),n=this.requestMediaKeySystemAccess(e,r);const t=this.keySystemAccessPromises[e]={keySystemAccess:n};return n.catch((t=>{this.log(`Failed to obtain access to key-system "${e}": ${t}`)})),n.then((i=>{this.log(`Access for key-system "${i.keySystem}" obtained`);const r=this.fetchServerCertificate(e);return this.log(`Create media-keys for "${e}"`),t.mediaKeys=i.createMediaKeys().then((t=>(this.log(`Media-keys created for "${e}"`),r.then((i=>i?this.setMediaKeysServerCertificate(t,e,i):t))))),t.mediaKeys.catch((t=>{this.error(`Failed to create media-keys for "${e}"}: ${t}`)})),t.mediaKeys}))}return n.then((()=>s.mediaKeys))}createMediaKeySessionContext({decryptdata:e,keySystem:t,mediaKeys:i}){this.log(`Creating key-system session "${t}" keyId: ${ts(e.keyId||[])}`);const r=i.createSession(),s={decryptdata:e,keySystem:t,mediaKeys:i,mediaKeysSession:r,keyStatus:"status-pending"};return this.mediaKeySessions.push(s),s}renewKeySession(e){const t=e.decryptdata;if(t.pssh){const i=this.createMediaKeySessionContext(e),r=this.getKeyIdString(t),s="cenc";this.keyIdToKeySessionPromise[r]=this.generateRequestWithPreferredKeySession(i,s,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(null===e.keyId)throw new Error("keyId is null");return ts(e.keyId)}updateKeySession(e,t){var i;const r=e.mediaKeysSession;return this.log(`Updating key-session "${r.sessionId}" for keyID ${ts((null==(i=e.decryptdata)?void 0:i.keyId)||[])}\n } (data length: ${t?t.byteLength:t})`),r.update(t)}selectKeySystemFormat(e){const t=Object.keys(e.levelkeys||{});return this.keyFormatPromise||(this.log(`Selecting key-system from fragment (sn: ${e.sn} ${e.type}: ${e.level}) key formats ${t.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(t)),this.keyFormatPromise}getKeyFormatPromise(e){return new Promise(((t,i)=>{const r=Or(this.config),s=e.map(Cr).filter((e=>!!e&&-1!==r.indexOf(e)));return this.getKeySystemSelectionPromise(s).then((({keySystem:e})=>{const r=Pr(e);r?t(r):i(new Error(`Unable to find format for key-system "${e}"`))})).catch(i)}))}loadKey(e){const t=e.keyInfo.decryptdata,i=this.getKeyIdString(t),r=`(keyId: ${i} format: "${t.keyFormat}" method: ${t.method} uri: ${t.uri})`;this.log(`Starting session for key ${r}`);let s=this.keyIdToKeySessionPromise[i];return s||(s=this.keyIdToKeySessionPromise[i]=this.getKeySystemForKeyPromise(t).then((({keySystem:i,mediaKeys:s})=>(this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${e.frag.sn} ${e.frag.type}: ${e.frag.level} using key ${r}`),this.attemptSetMediaKeys(i,s).then((()=>{this.throwIfDestroyed();const e=this.createMediaKeySessionContext({keySystem:i,mediaKeys:s,decryptdata:t});return this.generateRequestWithPreferredKeySession(e,"cenc",t.pssh,"playlist-key")}))))),s.catch((e=>this.handleError(e)))),s}throwIfDestroyed(e="Invalid state"){if(!this.hls)throw new Error("invalid state")}handleError(e){this.hls&&(this.error(e.message),e instanceof Th?this.hls.trigger(tr.ERROR,e.data):this.hls.trigger(tr.ERROR,{type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_KEYS,error:e,fatal:!0}))}getKeySystemForKeyPromise(e){const t=this.getKeyIdString(e),i=this.keyIdToKeySessionPromise[t];if(!i){const t=Cr(e.keyFormat),i=t?[t]:Or(this.config);return this.attemptKeySystemAccess(i)}return i}getKeySystemSelectionPromise(e){if(e.length||(e=Or(this.config)),0===e.length)throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.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){const{initDataType:t,initData:i}=e;if(this.debug(`"${e.type}" event: init data type: "${t}"`),null===i)return;let r,s;if("sinf"===t&&this.config.drmSystems[Rr.FAIRPLAY]){const e=ns(new Uint8Array(i));try{const t=br(JSON.parse(e).sinf),i=ys(new Uint8Array(t));if(!i)return;r=i.subarray(8,24),s=Rr.FAIRPLAY}catch(e){return void this.warn('Failed to parse sinf "encrypted" event message initData')}}else{const e=function(e){if(!(e instanceof ArrayBuffer)||e.byteLength<32)return null;const t={version:0,systemId:"",kids:null,data:null},i=new DataView(e),r=i.getUint32(0);if(e.byteLength!==r&&r>44)return null;if(1886614376!==i.getUint32(4))return null;if(t.version=i.getUint32(8)>>>24,t.version>1)return null;t.systemId=ts(new Uint8Array(e,12,16));const s=i.getUint32(28);if(0===t.version){if(r-32this.generateRequestWithPreferredKeySession(s,t,i,"encrypted-event-key-match")));break}}l||(l=a[n]=this.getKeySystemSelectionPromise([s]).then((({keySystem:e,mediaKeys:s})=>{var a;this.throwIfDestroyed();const o=new ks("ISO-23001-7",n,null!=(a=Pr(e))?a:"");return o.pssh=new Uint8Array(i),o.keyId=r,this.attemptSetMediaKeys(e,s).then((()=>{this.throwIfDestroyed();const r=this.createMediaKeySessionContext({decryptdata:o,keySystem:e,mediaKeys:s});return this.generateRequestWithPreferredKeySession(r,t,i,"encrypted-event-no-match")}))}))),l.catch((e=>this.handleError(e)))}_onWaitingForKey(e){this.log(`"${e.type}" event`)}attemptSetMediaKeys(e,t){const i=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${e}"`);const r=Promise.all(i).then((()=>{if(!this.media)throw new Error("Attempted to set mediaKeys without media element attached");return this.media.setMediaKeys(t)}));return this.setMediaKeysQueue.push(r),r.then((()=>{this.log(`Media-keys set for "${e}"`),i.push(r),this.setMediaKeysQueue=this.setMediaKeysQueue.filter((e=>-1===i.indexOf(e)))}))}generateRequestWithPreferredKeySession(e,t,i,r){var s,n;const a=null==(s=this.config.drmSystems)||null==(n=s[e.keySystem])?void 0:n.generateRequest;if(a)try{const r=a.call(this.hls,t,i,e);if(!r)throw new Error("Invalid response from configured generateRequest filter");t=r.initDataType,i=e.decryptdata.pssh=r.initData?new Uint8Array(r.initData):null}catch(e){var o;if(this.warn(e.message),null!=(o=this.hls)&&o.config.debug)throw e}if(null===i)return this.log(`Skipping key-session request for "${r}" (no initData)`),Promise.resolve(e);const l=this.getKeyIdString(e.decryptdata);this.log(`Generating key-session request for "${r}": ${l} (init data type: ${t} length: ${i?i.byteLength:null})`);const h=new fl,c=e._onmessage=t=>{const i=e.mediaKeysSession;if(!i)return void h.emit("error",new Error("invalid state"));const{messageType:r,message:s}=t;this.log(`"${r}" message event for session "${i.sessionId}" message size: ${s.byteLength}`),"license-request"===r||"license-renewal"===r?this.renewLicense(e,s).catch((e=>{this.handleError(e),h.emit("error",e)})):"license-release"===r?e.keySystem===Rr.FAIRPLAY&&(this.updateKeySession(e,wr("acknowledged")),this.removeSession(e)):this.warn(`unhandled media key message type "${r}"`)},d=e._onkeystatuseschange=t=>{if(!e.mediaKeysSession)return void h.emit("error",new Error("invalid state"));this.onKeyStatusChange(e);const i=e.keyStatus;h.emit("keyStatus",i),"expired"===i&&(this.warn(`${e.keySystem} expired for key ${l}`),this.renewKeySession(e))};e.mediaKeysSession.addEventListener("message",c),e.mediaKeysSession.addEventListener("keystatuseschange",d);const u=new Promise(((e,t)=>{h.on("error",t),h.on("keyStatus",(i=>{i.startsWith("usable")?e():"output-restricted"===i?t(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,fatal:!1},"HDCP level output restricted")):"internal-error"===i?t(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_STATUS_INTERNAL_ERROR,fatal:!0},`key status changed to "${i}"`)):"expired"===i?t(new Error("key expired while generating request")):this.warn(`unhandled key status change "${i}"`)}))}));return e.mediaKeysSession.generateRequest(t,i).then((()=>{var t;this.log(`Request generated for key-session "${null==(t=e.mediaKeysSession)?void 0:t.sessionId}" keyId: ${l}`)})).catch((e=>{throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_SESSION,error:e,fatal:!1},`Error generating key-session request: ${e}`)})).then((()=>u)).catch((t=>{throw h.removeAllListeners(),this.removeSession(e),t})).then((()=>(h.removeAllListeners(),e)))}onKeyStatusChange(e){e.mediaKeysSession.keyStatuses.forEach(((t,i)=>{this.log(`key status change "${t}" for keyStatuses keyId: ${ts("buffer"in i?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):new Uint8Array(i))} session keyId: ${ts(new Uint8Array(e.decryptdata.keyId||[]))} uri: ${e.decryptdata.uri}`),e.keyStatus=t}))}fetchServerCertificate(e){const t=this.config,i=new(0,t.loader)(t),r=this.getServerCertificateUrl(e);return r?(this.log(`Fetching server certificate for "${e}"`),new Promise(((s,n)=>{const a={responseType:"arraybuffer",url:r},o=t.certLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(e,t,i,r)=>{s(e.data)},onError:(t,i,s,o)=>{n(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:s,response:qi({url:a.url,data:void 0},t)},`"${e}" certificate request failed (${r}). Status: ${t.code} (${t.text})`))},onTimeout:(t,i,s)=>{n(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:s,response:{url:a.url,data:void 0}},`"${e}" certificate request timed out (${r})`))},onAbort:(e,t,i)=>{n(new Error("aborted"))}};i.load(a,l,h)}))):Promise.resolve()}setMediaKeysServerCertificate(e,t,i){return new Promise(((r,s)=>{e.setServerCertificate(i).then((s=>{this.log(`setServerCertificate ${s?"success":"not supported by CDM"} (${null==i?void 0:i.byteLength}) on "${t}"`),r(e)})).catch((e=>{s(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:e,fatal:!0},e.message))}))}))}renewLicense(e,t){return this.requestLicense(e,new Uint8Array(t)).then((t=>this.updateKeySession(e,new Uint8Array(t)).catch((e=>{throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SESSION_UPDATE_FAILED,error:e,fatal:!0},e.message)}))))}unpackPlayReadyKeyMessage(e,t){const i=String.fromCharCode.apply(null,new Uint16Array(t.buffer));if(!i.includes("PlayReadyKeyMessage"))return e.setRequestHeader("Content-Type","text/xml; charset=utf-8"),t;const r=(new DOMParser).parseFromString(i,"application/xml"),s=r.querySelectorAll("HttpHeader");if(s.length>0){let t;for(let i=0,r=s.length;i in key message");return wr(atob(l))}setupLicenseXHR(e,t,i,r){const s=this.config.licenseXhrSetup;return s?Promise.resolve().then((()=>{if(!i.decryptdata)throw new Error("Key removed");return s.call(this.hls,e,t,i,r)})).catch((n=>{if(!i.decryptdata)throw n;return e.open("POST",t,!0),s.call(this.hls,e,t,i,r)})).then((i=>{e.readyState||e.open("POST",t,!0);return{xhr:e,licenseChallenge:i||r}})):(e.open("POST",t,!0),Promise.resolve({xhr:e,licenseChallenge:r}))}requestLicense(e,t){const i=this.config.keyLoadPolicy.default;return new Promise(((r,s)=>{const n=this.getLicenseServerUrl(e.keySystem);this.log(`Sending license request to URL: ${n}`);const a=new XMLHttpRequest;a.responseType="arraybuffer",a.onreadystatechange=()=>{if(!this.hls||!e.mediaKeysSession)return s(new Error("invalid state"));if(4===a.readyState)if(200===a.status){this._requestLicenseFailureCount=0;let t=a.response;this.log(`License received ${t instanceof ArrayBuffer?t.byteLength:t}`);const i=this.config.licenseResponseCallback;if(i)try{t=i.call(this.hls,a,n,e)}catch(e){this.error(e)}r(t)}else{const o=i.errorRetry,l=o?o.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>l||a.status>=400&&a.status<500)s(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:a,response:{url:n,data:void 0,code:a.status,text:a.statusText}},`License Request XHR failed (${n}). Status: ${a.status} (${a.statusText})`));else{const i=l-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${i} attempts left`),this.requestLicense(e,t).then(r,s)}}},e.licenseXhr&&e.licenseXhr.readyState!==XMLHttpRequest.DONE&&e.licenseXhr.abort(),e.licenseXhr=a,this.setupLicenseXHR(a,n,e,t).then((({xhr:t,licenseChallenge:i})=>{e.keySystem==Rr.PLAYREADY&&(i=this.unpackPlayReadyKeyMessage(t,i)),t.send(i)}))}))}onMediaAttached(e,t){if(!this.config.emeEnabled)return;const i=t.media;this.media=i,i.addEventListener("encrypted",this.onMediaEncrypted),i.addEventListener("waitingforkey",this.onWaitingForKey)}onMediaDetached(){const 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={},ks.clearKeyUriToKeyIdMap();const i=t.length;yh.CDMCleanupPromise=Promise.all(t.map((e=>this.removeSession(e))).concat(null==e?void 0:e.setMediaKeys(null).catch((e=>{this.log(`Could not clear media keys: ${e}`)})))).then((()=>{i&&(this.log("finished closing key sessions and clearing media keys"),t.length=0)})).catch((e=>{this.log(`Could not close sessions and clear media keys: ${e}`)}))}onManifestLoading(){this.keyFormatPromise=null}onManifestLoaded(e,{sessionKeys:t}){if(t&&this.config.emeEnabled&&!this.keyFormatPromise){const e=t.reduce(((e,t)=>(-1===e.indexOf(t.keyFormat)&&e.push(t.keyFormat),e)),[]);this.log(`Selecting key-system from session-keys ${e.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(e)}}removeSession(e){const{mediaKeysSession:t,licenseXhr:i}=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),i&&i.readyState!==XMLHttpRequest.DONE&&i.abort(),e.mediaKeysSession=e.decryptdata=e.licenseXhr=void 0;const r=this.mediaKeySessions.indexOf(e);return r>-1&&this.mediaKeySessions.splice(r,1),t.remove().catch((e=>{this.log(`Could not remove session: ${e}`)})).then((()=>t.close())).catch((e=>{this.log(`Could not close session: ${e}`)}))}}}yh.CDMCleanupPromise=void 0;class Th 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}}var Eh,Sh,bh;!function(e){e.MANIFEST="m",e.AUDIO="a",e.VIDEO="v",e.MUXED="av",e.INIT="i",e.CAPTION="c",e.TIMED_TEXT="tt",e.KEY="k",e.OTHER="o"}(Eh||(Eh={})),function(e){e.DASH="d",e.HLS="h",e.SMOOTH="s",e.OTHER="o"}(Sh||(Sh={})),function(e){e.OBJECT="CMCD-Object",e.REQUEST="CMCD-Request",e.SESSION="CMCD-Session",e.STATUS="CMCD-Status"}(bh||(bh={}));const Lh={[bh.OBJECT]:["br","d","ot","tb"],[bh.REQUEST]:["bl","dl","mtp","nor","nrr","su"],[bh.SESSION]:["cid","pr","sf","sid","st","v"],[bh.STATUS]:["bs","rtp"]};class wh{constructor(e,t){this.value=void 0,this.params=void 0,Array.isArray(e)&&(e=e.map((e=>e instanceof wh?e:new wh(e)))),this.value=e,this.params=t}}class Ah{constructor(e){this.description=void 0,this.description=e}}const Rh="Dict";function kh(e,t,i,r){return new Error(`failed to ${e} "${s=t,Array.isArray(s)?JSON.stringify(s):s instanceof Map?"Map{}":s instanceof Set?"Set{}":"object"==typeof s?JSON.stringify(s):String(s)}" as ${i}`,{cause:r});var s}const _h="Bare Item",Dh="Boolean",xh="Byte Sequence",Ch="Decimal",Ih="Integer";const Ph=/[\x00-\x1f\x7f]+/,Oh="Token",Mh="Key";function Fh(e,t,i){return kh("serialize",e,t,i)}function Nh(e){if(!1===ArrayBuffer.isView(e))throw Fh(e,xh);return`:${t=e,btoa(String.fromCharCode(...t))}:`;var t}function Uh(e){if(function(e){return e<-999999999999999||99999999999999912)throw Fh(e,Ch);const i=t.toString();return i.includes(".")?i:`${i}.0`}const Gh="String";function Kh(e){const t=(i=e).description||i.toString().slice(7,-1);var i;if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(t))throw Fh(t,Oh);return t}function Vh(e){switch(typeof e){case"number":if(!Ji(e))throw Fh(e,_h);return Number.isInteger(e)?Uh(e):$h(e);case"string":return function(e){if(Ph.test(e))throw Fh(e,Gh);return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}(e);case"symbol":return Kh(e);case"boolean":return function(e){if("boolean"!=typeof e)throw Fh(e,Dh);return e?"?1":"?0"}(e);case"object":if(e instanceof Date)return function(e){return`@${Uh(e.getTime()/1e3)}`}(e);if(e instanceof Uint8Array)return Nh(e);if(e instanceof Ah)return Kh(e);default:throw Fh(e,_h)}}function Hh(e){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(e))throw Fh(e,Mh);return e}function jh(e){return null==e?"":Object.entries(e).map((([e,t])=>!0===t?`;${Hh(e)}`:`;${Hh(e)}=${Vh(t)}`)).join("")}function Wh(e){return e instanceof wh?`${Vh(e.value)}${jh(e.params)}`:Vh(e)}function Yh(e,t={whitespace:!0}){if("object"!=typeof e)throw Fh(e,Rh);const i=e instanceof Map?e.entries():Object.entries(e),r=null!=t&&t.whitespace?" ":"";return Array.from(i).map((([e,t])=>{t instanceof wh==!1&&(t=new wh(t));let i=Hh(e);var r;return!0===t.value?i+=jh(t.params):(i+="=",Array.isArray(t.value)?i+=`(${(r=t).value.map(Wh).join(" ")})${jh(r.params)}`:i+=Wh(t)),i})).join(`,${r}`)}const qh=e=>"ot"===e||"sf"===e||"st"===e,zh=e=>"number"==typeof e?Ji(e):null!=e&&""!==e&&!1!==e;const Xh=e=>Math.round(e),Qh=e=>100*Xh(e/100),Jh={br:Xh,d:Xh,bl:Qh,dl:Qh,mtp:Qh,nor:(e,t)=>(null!=t&&t.baseUrl&&(e=function(e,t){const i=new URL(e),r=new URL(t);if(i.origin!==r.origin)return e;const s=i.pathname.split("/").slice(1),n=r.pathname.split("/").slice(1,-1);for(;s[0]===n[0];)s.shift(),n.shift();for(;n.length;)n.shift(),s.unshift("..");return s.join("/")}(e,t.baseUrl)),encodeURIComponent(e)),rtp:Qh,tb:Xh};function Zh(e,t={}){return e?function(e,t){return Yh(e,t)}(function(e,t){const i={};if(null==e||"object"!=typeof e)return i;const r=Object.keys(e).sort(),s=Qi({},Jh,null==t?void 0:t.formatters),n=null==t?void 0:t.filter;return r.forEach((r=>{if(null!=n&&n(r))return;let a=e[r];const o=s[r];o&&(a=o(a,t)),"v"===r&&1===a||"pr"==r&&1===a||zh(a)&&(qh(r)&&"string"==typeof a&&(a=new Ah(a)),i[r]=a)})),i}(e,t),Qi({whitespace:!1},t)):""}function ec(e,t,i){return Qi(e,function(e,t={}){if(!e)return{};const i=Object.entries(e),r=Object.entries(Lh).concat(Object.entries((null==t?void 0:t.customHeaderMap)||{})),s=i.reduce(((e,t)=>{var i;const[s,n]=t,a=(null==(i=r.find((e=>e[1].includes(s))))?void 0:i[0])||bh.REQUEST;return null!=e[a]||(e[a]={}),e[a][s]=n,e}),{});return Object.entries(s).reduce(((e,[i,r])=>(e[i]=Zh(r,t),e)),{})}(t,i))}const tc="CMCD";const ic=/CMCD=[^&#]+/;function rc(e,t,i){const r=function(e,t={}){if(!e)return"";const i=Zh(e,t);return`${tc}=${encodeURIComponent(i)}`}(t,i);if(!r)return e;if(ic.test(e))return e.replace(ic,r);const s=e.includes("?")?"&":"?";return`${e}${s}${r}`}function sc(e,t,i,r){e&&Object.keys(t).forEach((s=>{const n=e.filter((e=>e.groupId===s)).map((e=>{const n=Qi({},e);return n.details=void 0,n.attrs=new dr(n.attrs),n.url=n.attrs.URI=nc(e.url,e.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",i),n.groupId=n.attrs["GROUP-ID"]=t[s],n.attrs["PATHWAY-ID"]=r,n}));e.push(...n)}))}function nc(e,t,i,r){const{HOST:s,PARAMS:n,[i]:a}=r;let o;t&&(o=null==a?void 0:a[t],o&&(e=o));const l=new self.URL(e);return s&&!o&&(l.host=s),n&&Object.keys(n).sort().forEach((e=>{e&&l.searchParams.set(e,n[e])})),l.href}const ac=/^age:\s*[\d.]+\s*$/im;class oc{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 gr,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null}abortInternal(){const e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,4!==e.readyState&&(this.stats.aborted=!0,e.abort()))}abort(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(e,t,i){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=i,this.loadInternal()}loadInternal(){const{config:e,context:t}=this;if(!e||!t)return;const i=this.loader=new self.XMLHttpRequest,r=this.stats;r.loading.first=0,r.loaded=0,r.aborted=!1;const s=this.xhrSetup;s?Promise.resolve().then((()=>{if(this.loader===i&&!this.stats.aborted)return s(i,t.url)})).catch((e=>{if(this.loader===i&&!this.stats.aborted)return i.open("GET",t.url,!0),s(i,t.url)})).then((()=>{this.loader!==i||this.stats.aborted||this.openAndSendXhr(i,t,e)})).catch((e=>{this.callbacks.onError({code:i.status,text:e.message},t,i,r)})):this.openAndSendXhr(i,t,e)}openAndSendXhr(e,t,i){e.readyState||e.open("GET",t.url,!0);const r=t.headers,{maxTimeToFirstByteMs:s,maxLoadTimeMs:n}=i.loadPolicy;if(r)for(const t in r)e.setRequestHeader(t,r[t]);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),i.timeout=s&&Ji(s)?s:n,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),i.timeout),e.send()}readystatechange(){const{context:e,loader:t,stats:i}=this;if(!e||!t)return;const r=t.readyState,s=this.config;if(!i.aborted&&r>=2&&(0===i.loading.first&&(i.loading.first=Math.max(self.performance.now(),i.loading.start),s.timeout!==s.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),s.timeout=s.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),s.loadPolicy.maxLoadTimeMs-(i.loading.first-i.loading.start)))),4===r)){self.clearTimeout(this.requestTimeout),t.onreadystatechange=null,t.onprogress=null;const r=t.status,n="text"!==t.responseType;if(r>=200&&r<300&&(n&&t.response||null!==t.responseText)){i.loading.end=Math.max(self.performance.now(),i.loading.first);const s=n?t.response:t.responseText,a="arraybuffer"===t.responseType?s.byteLength:s.length;if(i.loaded=i.total=a,i.bwEstimate=8e3*i.total/(i.loading.end-i.loading.first),!this.callbacks)return;const o=this.callbacks.onProgress;if(o&&o(i,e,s,t),!this.callbacks)return;const l={url:t.responseURL,data:s,code:r};this.callbacks.onSuccess(l,i,e,t)}else{const n=s.loadPolicy.errorRetry;Xn(n,i.retry,!1,{url:e.url,data:void 0,code:r})?this.retry(n):(lr.error(`${r} while loading ${e.url}`),this.callbacks.onError({code:r,text:t.statusText},e,t,i))}}}loadtimeout(){if(!this.config)return;const e=this.config.loadPolicy.timeoutRetry;if(Xn(e,this.stats.retry,!0))this.retry(e);else{var t;lr.warn(`timeout while loading ${null==(t=this.context)?void 0:t.url}`);const e=this.callbacks;e&&(this.abortInternal(),e.onTimeout(this.stats,this.context,this.loader))}}retry(e){const{context:t,stats:i}=this;this.retryDelay=qn(e,i.retry),i.retry++,lr.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${null==t?void 0:t.url}, retrying ${i.retry}/${e.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)}loadprogress(e){const t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)}getCacheAge(){let e=null;if(this.loader&&ac.test(this.loader.getAllResponseHeaders())){const t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.loader&&new RegExp(`^${e}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(e):null}}const lc=/(\d+)-(\d+)\/(\d+)/;class hc{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||cc,this.controller=new self.AbortController,this.stats=new gr}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(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(e,t,i){const r=this.stats;if(r.loading.start)throw new Error("Loader can only be used once.");r.loading.start=self.performance.now();const s=function(e,t){const i={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(Qi({},e.headers))};e.rangeEnd&&i.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1));return i}(e,this.controller.signal),n=i.onProgress,a="arraybuffer"===e.responseType,o=a?"byteLength":"length",{maxTimeToFirstByteMs:l,maxLoadTimeMs:h}=t.loadPolicy;this.context=e,this.config=t,this.callbacks=i,this.request=this.fetchSetup(e,s),self.clearTimeout(this.requestTimeout),t.timeout=l&&Ji(l)?l:h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(r,e,this.response)}),t.timeout),self.fetch(this.request).then((s=>{this.response=this.loader=s;const o=Math.max(self.performance.now(),r.loading.start);if(self.clearTimeout(this.requestTimeout),t.timeout=h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(r,e,this.response)}),h-(o-r.loading.start)),!s.ok){const{status:e,statusText:t}=s;throw new dc(t||"fetch, bad network response",e,s)}return r.loading.first=o,r.total=function(e){const t=e.get("Content-Range");if(t){const e=function(e){const t=lc.exec(e);if(t)return parseInt(t[2])-parseInt(t[1])+1}(t);if(Ji(e))return e}const i=e.get("Content-Length");if(i)return parseInt(i)}(s.headers)||r.total,n&&Ji(t.highWaterMark)?this.loadProgressively(s,r,e,t.highWaterMark,n):a?s.arrayBuffer():"json"===e.responseType?s.json():s.text()})).then((s=>{const a=this.response;if(!a)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),r.loading.end=Math.max(self.performance.now(),r.loading.first);const l=s[o];l&&(r.loaded=r.total=l);const h={url:a.url,data:s,code:a.status};n&&!Ji(t.highWaterMark)&&n(r,e,s,a),i.onSuccess(h,r,e,a)})).catch((t=>{if(self.clearTimeout(this.requestTimeout),r.aborted)return;const s=t&&t.code||0,n=t?t.message:null;i.onError({code:s,text:n},e,t?t.details:null,r)}))}getCacheAge(){let e=null;if(this.response){const t=this.response.headers.get("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.response?this.response.headers.get(e):null}loadProgressively(e,t,i,r=0,s){const n=new ao,a=e.body.getReader(),o=()=>a.read().then((a=>{if(a.done)return n.dataLength&&s(t,i,n.flush(),e),Promise.resolve(new ArrayBuffer(0));const l=a.value,h=l.length;return t.loaded+=h,h=r&&s(t,i,n.flush(),e)):s(t,i,l,e),o()})).catch((()=>Promise.reject()));return o()}}function cc(e,t){return new self.Request(e.url,t)}class dc extends Error{constructor(e,t,i){super(e),this.code=void 0,this.details=void 0,this.code=t,this.details=i}}const uc=/\s/,fc={newCue(e,t,i,r){const s=[];let n,a,o,l,h;const c=self.VTTCue||self.TextTrackCue;for(let u=0;u=16?l--:l++;const r=Xl(h.trim()),f=th(t,i,r);null!=e&&null!=(d=e.cues)&&d.getCueById(f)||(a=new c(t,i,r),a.id=f,a.line=u+1,a.align="left",a.position=10+Math.min(80,10*Math.floor(8*l/32)),s.push(a))}return e&&s.length&&(s.sort(((e,t)=>"auto"===e.line||"auto"===t.line?0:e.line>8&&t.line>8?t.line-e.line:e.line-t.line)),s.forEach((t=>pn(e,t)))),s}},gc=qi(qi({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:6e7,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:oc,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController: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.codecTiers=null,this.timer=-1,this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this._abandonRulesCheck=()=>{const{fragCurrent:e,partCurrent:t,hls:i}=this,{autoLevelEnabled:r,media:s}=i;if(!e||!s)return;const n=performance.now(),a=t?t.stats:e.stats,o=t?t.duration:e.duration,l=n-a.loading.start,h=i.minAutoLevel;if(a.aborted||a.loaded&&a.loaded===a.total||e.level<=h)return this.clearTimer(),void(this._nextAutoLevel=-1);if(!r||s.paused||!s.playbackRate||!s.readyState)return;const c=i.mainForwardBufferInfo;if(null===c)return;const d=this.bwEstimator.getEstimateTTFB(),u=Math.abs(s.playbackRate);if(l<=Math.max(d,o/(2*u)*1e3))return;const f=c.len/u,g=a.loading.first?a.loading.first-a.loading.start:-1,m=a.loaded&&g>-1,p=this.getBwEstimate(),v=i.levels,y=v[e.level],T=a.total||Math.max(a.loaded,Math.round(o*y.averageBitrate/8));let E=m?l-g:l;E<1&&m&&(E=Math.min(l,8*a.loaded/p));const S=m?1e3*a.loaded/E:0,b=S?(T-a.loaded)/S:8*T/p+d/1e3;if(b<=f)return;const L=S?8*S:p;let w,A=Number.POSITIVE_INFINITY;for(w=e.level-1;w>h;w--){const e=v[w].maxBitrate;if(A=this.getTimeToLoadFrag(d/1e3,L,o*e,!v[w].details),A=b)return;if(A>10*o)return;i.nextLoadLevel=i.nextAutoLevel=w,m?this.bwEstimator.sample(l-Math.min(d,g),a.loaded):this.bwEstimator.sampleTTFB(l);const R=v[w].maxBitrate;this.getBwEstimate()*this.hls.config.abrBandWidthUpFactor>R&&this.resetEstimator(R),this.clearTimer(),lr.warn(`[abr] Fragment ${e.sn}${t?" part "+t.index:""} of level ${e.level} is loading too slowly;\n Time to underbuffer: ${f.toFixed(3)} s\n Estimated load time for current fragment: ${b.toFixed(3)} s\n Estimated load time for down switch fragment: ${A.toFixed(3)} s\n TTFB estimate: ${0|g} ms\n Current BW estimate: ${Ji(p)?0|p:"Unknown"} bps\n New BW estimate: ${0|this.getBwEstimate()} bps\n Switching to level ${w} @ ${0|R} bps`),i.trigger(tr.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e,part:t,stats:a})},this.hls=e,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(e){e&&(lr.log(`setting initial bwe to ${e}`),this.hls.config.abrEwmaDefaultEstimate=e),this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){const e=this.hls.config;return new ca(e.abrEwmaSlowVoD,e.abrEwmaFastVoD,e.abrEwmaDefaultEstimate)}registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.FRAG_LOADING,this.onFragLoading,this),e.on(tr.FRAG_LOADED,this.onFragLoaded,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e&&(e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.FRAG_LOADING,this.onFragLoading,this),e.off(tr.FRAG_LOADED,this.onFragLoaded,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.off(tr.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){const i=t.frag;if(!this.ignoreFragment(i)){var r;if(!i.bitrateTest)this.fragCurrent=i,this.partCurrent=null!=(r=t.part)?r: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 rr.BUFFER_ADD_CODEC_ERROR:case rr.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case rr.FRAG_LOAD_TIMEOUT:{const e=t.frag,{fragCurrent:i,partCurrent:r}=this;if(e&&i&&e.sn===i.sn&&e.level===i.level){const t=performance.now(),i=r?r.stats:e.stats,s=t-i.loading.start,n=i.loading.first?i.loading.first-i.loading.start:-1;if(i.loaded&&n>-1){const e=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(s-Math.min(e,n),i.loaded)}else this.bwEstimator.sampleTTFB(s)}break}}}getTimeToLoadFrag(e,t,i,r){return e+i/t+(r?this.lastLevelLoadSec:0)}onLevelLoaded(e,t){const i=this.hls.config,{loading:r}=t.stats,s=r.end-r.start;Ji(s)&&(this.lastLevelLoadSec=s/1e3),t.details.live?this.bwEstimator.update(i.abrEwmaSlowLive,i.abrEwmaFastLive):this.bwEstimator.update(i.abrEwmaSlowVoD,i.abrEwmaFastVoD)}onFragLoaded(e,{frag:t,part:i}){const r=i?i.stats:t.stats;if(t.type===hn&&this.bwEstimator.sampleTTFB(r.loading.first-r.loading.start),!this.ignoreFragment(t)){if(this.clearTimer(),t.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){const e=i?i.duration:t.duration,s=this.hls.levels[t.level],n=(s.loaded?s.loaded.bytes:0)+r.loaded,a=(s.loaded?s.loaded.duration:0)+e;s.loaded={bytes:n,duration:a},s.realBitrate=Math.round(8*n/a)}if(t.bitrateTest){const e={stats:r,frag:t,part:i,id:t.type};this.onFragBuffered(tr.FRAG_BUFFERED,e),t.bitrateTest=!1}else this.lastLoadedFragLevel=t.level}}onFragBuffered(e,t){const{frag:i,part:r}=t,s=null!=r&&r.stats.loaded?r.stats:i.stats;if(s.aborted)return;if(this.ignoreFragment(i))return;const n=s.parsing.end-s.loading.start-Math.min(s.loading.first-s.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(n,s.loaded),s.bwEstimate=this.getBwEstimate(),i.bitrateTest?this.bitrateTestDelay=n/1e3:this.bitrateTestDelay=0}ignoreFragment(e){return e.type!==hn||"initSegment"===e.sn}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){const{maxAutoLevel:e,minAutoLevel:t}=this.hls,i=this.getBwEstimate(),r=this.hls.config.maxStarvationDelay,s=this.findBestLevel(i,t,e,0,r,1,1);if(s>-1)return s;const n=this.hls.firstLevel,a=Math.min(Math.max(n,t),e);return lr.warn(`[abr] Could not find best starting auto level. Defaulting to first in playlist ${n} clamped to ${a}`),a}get forcedAutoLevel(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}get nextAutoLevel(){const e=this.forcedAutoLevel,t=this.bwEstimator.canEstimate(),i=this.lastLoadedFragLevel>-1;if(!(-1===e||t&&i&&this.nextAutoLevelKey!==this.getAutoLevelKey()))return e;const r=t&&i?this.getNextABRAutoLevel():this.firstAutoLevel;if(-1!==e){const t=this.hls.levels;if(t.length>Math.max(e,r)&&t[e].loadError<=t[r].loadError)return e}return this._nextAutoLevel=r,this.nextAutoLevelKey=this.getAutoLevelKey(),r}getAutoLevelKey(){return`${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){const{fragCurrent:e,partCurrent:t,hls:i}=this,{maxAutoLevel:r,config:s,minAutoLevel:n}=i,a=t?t.duration:e?e.duration:0,o=this.getBwEstimate(),l=this.getStarvationDelay();let h=s.abrBandWidthFactor,c=s.abrBandWidthUpFactor;if(l){const e=this.findBestLevel(o,n,r,l,0,h,c);if(e>=0)return e}let d=a?Math.min(a,s.maxStarvationDelay):s.maxStarvationDelay;if(!l){const e=this.bitrateTestDelay;if(e){d=(a?Math.min(a,s.maxLoadingDelay):s.maxLoadingDelay)-e,lr.info(`[abr] bitrate test took ${Math.round(1e3*e)}ms, set first fragment max fetchDuration to ${Math.round(1e3*d)} ms`),h=c=1}}const u=this.findBestLevel(o,n,r,l,d,h,c);if(lr.info(`[abr] ${l?"rebuffering expected":"buffer is empty"}, optimal quality level ${u}`),u>-1)return u;const f=i.levels[n],g=i.levels[i.loadLevel];return(null==f?void 0:f.bitrate)<(null==g?void 0:g.bitrate)?n:i.loadLevel}getStarvationDelay(){const e=this.hls,t=e.media;if(!t)return 1/0;const i=t&&0!==t.playbackRate?Math.abs(t.playbackRate):1,r=e.mainForwardBufferInfo;return(r?r.len:0)/i}getBwEstimate(){return this.bwEstimator.canEstimate()?this.bwEstimator.getEstimate():this.hls.config.abrEwmaDefaultEstimate}findBestLevel(e,t,i,r,s,n,a){var o;const l=r+s,h=this.lastLoadedFragLevel,c=-1===h?this.hls.firstLevel:h,{fragCurrent:d,partCurrent:u}=this,{levels:f,allAudioTracks:g,loadLevel:m,config:p}=this.hls;if(1===f.length)return 0;const v=f[c],y=!(null==v||null==(o=v.details)||!o.live),T=-1===m||-1===h;let E,S="SDR",b=(null==v?void 0:v.frameRate)||0;const{audioPreference:L,videoPreference:w}=p,A=this.audioTracksByGroup||(this.audioTracksByGroup=function(e){return e.reduce(((e,t)=>{let i=e.groups[t.groupId];i||(i=e.groups[t.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),i.tracks.push(t);const r=t.channels||"2";return i.channels[r]=(i.channels[r]||0)+1,i.hasDefault=i.hasDefault||t.default,i.hasAutoSelect=i.hasAutoSelect||t.autoselect,i.hasDefault&&(e.hasDefaultAudio=!0),i.hasAutoSelect&&(e.hasAutoSelectAudio=!0),e}),{hasDefaultAudio:!1,hasAutoSelectAudio:!1,groups:{}})}(g));if(T){if(-1!==this.firstSelection)return this.firstSelection;const r=this.codecTiers||(this.codecTiers=function(e,t,i,r){return e.slice(i,r+1).reduce(((e,i)=>{if(!i.codecSet)return e;const r=i.audioGroups;let s=e[i.codecSet];s||(e[i.codecSet]=s={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!r,fragmentError:0}),s.minBitrate=Math.min(s.minBitrate,i.bitrate);const n=Math.min(i.height,i.width);return s.minHeight=Math.min(s.minHeight,n),s.minFramerate=Math.min(s.minFramerate,i.frameRate),s.maxScore=Math.max(s.maxScore,i.score),s.fragmentError+=i.fragmentError,s.videoRanges[i.videoRange]=(s.videoRanges[i.videoRange]||0)+1,r&&r.forEach((e=>{if(!e)return;const i=t.groups[e];i&&(s.hasDefaultAudio=s.hasDefaultAudio||t.hasDefaultAudio?i.hasDefault:i.hasAutoSelect||!t.hasDefaultAudio&&!t.hasAutoSelectAudio,Object.keys(i.channels).forEach((e=>{s.channels[e]=(s.channels[e]||0)+i.channels[e]})))})),e}),{})}(f,A,t,i)),s=function(e,t,i,r,s){const n=Object.keys(e),a=null==r?void 0:r.channels,o=null==r?void 0:r.audioCodec,l=a&&2===parseInt(a);let h=!0,c=!1,d=1/0,u=1/0,f=1/0,g=0,m=[];const{preferHDR:p,allowedVideoRanges:v}=ma(t,s);for(let t=n.length;t--;){const i=e[n[t]];h=i.channels[2]>0,d=Math.min(d,i.minHeight),u=Math.min(u,i.minFramerate),f=Math.min(f,i.minBitrate);const r=v.filter((e=>i.videoRanges[e]>0));r.length>0&&(c=!0,m=r)}d=Ji(d)?d:0,u=Ji(u)?u:0;const y=Math.max(1080,d),T=Math.max(30,u);return f=Ji(f)?f:i,i=Math.max(f,i),c||(t=void 0,m=[]),{codecSet:n.reduce(((t,r)=>{const s=e[r];if(r===t)return t;if(s.minBitrate>i)return pa(r,`min bitrate of ${s.minBitrate} > current estimate of ${i}`),t;if(!s.hasDefaultAudio)return pa(r,"no renditions with default or auto-select sound found"),t;if(o&&r.indexOf(o.substring(0,4))%5!=0)return pa(r,`audio codec preference "${o}" not found`),t;if(a&&!l){if(!s.channels[a])return pa(r,`no renditions with ${a} channel sound found (channels options: ${Object.keys(s.channels)})`),t}else if((!o||l)&&h&&0===s.channels[2])return pa(r,"no renditions with stereo sound found"),t;return s.minHeight>y?(pa(r,`min resolution of ${s.minHeight} > maximum of ${y}`),t):s.minFramerate>T?(pa(r,`min framerate of ${s.minFramerate} > maximum of ${T}`),t):m.some((e=>s.videoRanges[e]>0))?s.maxScore=$s(t)||s.fragmentError>e[t].fragmentError)?t:(g=s.maxScore,r):(pa(r,`no variants with VIDEO-RANGE of ${JSON.stringify(m)} found`),t)}),void 0),videoRanges:m,preferHDR:p,minFramerate:u,minBitrate:f}}(r,S,e,L,w),{codecSet:n,videoRanges:a,minFramerate:o,minBitrate:l,preferHDR:h}=s;E=n,S=h?a[a.length-1]:a[0],b=o,e=Math.max(e,l),lr.log(`[abr] picked start tier ${JSON.stringify(s)}`)}else E=null==v?void 0:v.codecSet,S=null==v?void 0:v.videoRange;const R=u?u.duration:d?d.duration:0,k=this.bwEstimator.getEstimateTTFB()/1e3,_=[];for(let o=i;o>=t;o--){var D;const t=f[o],d=o>c;if(!t)continue;if(p.useMediaCapabilities&&!t.supportedResult&&!t.supportedPromise){const i=navigator.mediaCapabilities;"function"==typeof(null==i?void 0:i.decodingInfo)&&fa(t,A,S,b,e,L)?(t.supportedPromise=ga(t,A,i),t.supportedPromise.then((e=>{if(!this.hls)return;t.supportedResult=e;const i=this.hls.levels,r=i.indexOf(t);e.error?lr.warn(`[abr] MediaCapabilities decodingInfo error: "${e.error}" for level ${r} ${JSON.stringify(e)}`):e.supported||(lr.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${r} ${JSON.stringify(e)}`),r>-1&&i.length>1&&(lr.log(`[abr] Removing unsupported level ${r}`),this.hls.removeLevel(r)))}))):t.supportedResult=da}if(E&&t.codecSet!==E||S&&t.videoRange!==S||d&&b>t.frameRate||!d&&b>0&&b=2*R&&0===s?f[o].averageBitrate:f[o].maxBitrate,I=this.getTimeToLoadFrag(k,x,C*w,void 0===g);if(x>=C&&(o===h||0===t.loadError&&0===t.fragmentError)&&(I<=k||!Ji(I)||y&&!this.bitrateTestDelay||I${o} adjustedbw(${Math.round(x)})-bitrate=${Math.round(x-C)} ttfb:${k.toFixed(1)} avgDuration:${w.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${I.toFixed(1)} firstSelection:${T} codecSet:${E} videoRange:${S} hls.loadLevel:${m}`)),T&&(this.firstSelection=o),o}}return-1}set nextAutoLevel(e){const{maxAutoLevel:t,minAutoLevel:i}=this.hls,r=Math.min(Math.max(e,i),t);this._nextAutoLevel!==r&&(this.nextAutoLevelKey="",this._nextAutoLevel=r)}},bufferController: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=e=>{this.hls&&this.hls.pauseBuffering()},this._onStartStreaming=e=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=()=>{const{media:e,mediaSource:t}=this;this.log("Media source opened"),e&&(e.removeEventListener("emptied",this._onMediaEmptied),this.updateMediaElementDuration(),this.hls.trigger(tr.MEDIA_ATTACHED,{media:e,mediaSource:t})),t&&t.removeEventListener("sourceopen",this._onMediaSourceOpen),this.checkPendingTracks()},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{const{mediaSrc:e,_objectUrl:t}=this;e!==t&&lr.error(`Media element src was set while attaching MediaSource (${t} > ${e})`)},this.hls=e;const t="[buffer-controller]";var i;this.appendSource=(i=Os(e.config.preferManagedMediaSource),"undefined"!=typeof self&&i===self.ManagedMediaSource),this.log=lr.log.bind(lr,t),this.warn=lr.warn.bind(lr,t),this.error=lr.error.bind(lr,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(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.BUFFER_RESET,this.onBufferReset,this),e.on(tr.BUFFER_APPENDING,this.onBufferAppending,this),e.on(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.on(tr.BUFFER_EOS,this.onBufferEos,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(tr.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(tr.FRAG_PARSED,this.onFragParsed,this),e.on(tr.FRAG_CHANGED,this.onFragChanged,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.BUFFER_RESET,this.onBufferReset,this),e.off(tr.BUFFER_APPENDING,this.onBufferAppending,this),e.off(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.off(tr.BUFFER_EOS,this.onBufferEos,this),e.off(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(tr.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(tr.FRAG_PARSED,this.onFragParsed,this),e.off(tr.FRAG_CHANGED,this.onFragChanged,this)}_initSourceBuffer(){this.sourceBuffer={},this.operationQueue=new Tl(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 i=2;(t.audio&&!t.video||!t.altAudio)&&(i=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=i,this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`)}onMediaAttaching(e,t){const i=this.media=t.media,r=Os(this.appendSource);if(i&&r){var s;const e=this.mediaSource=new r;this.log(`created media source: ${null==(s=e.constructor)?void 0:s.name}`),e.addEventListener("sourceopen",this._onMediaSourceOpen),e.addEventListener("sourceended",this._onMediaSourceEnded),e.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(e.addEventListener("startstreaming",this._onStartStreaming),e.addEventListener("endstreaming",this._onEndStreaming));const t=this._objectUrl=self.URL.createObjectURL(e);if(this.appendSource)try{i.removeAttribute("src");const r=self.ManagedMediaSource;i.disableRemotePlayback=i.disableRemotePlayback||r&&e instanceof r,Sl(i),function(e,t){const i=self.document.createElement("source");i.type="video/mp4",i.src=t,e.appendChild(i)}(i,t),i.load()}catch(e){i.src=t}else i.src=t;i.addEventListener("emptied",this._onMediaEmptied)}}onMediaDetaching(){const{media:e,mediaSource:t,_objectUrl:i}=this;if(t){if(this.log("media source detaching"),"open"===t.readyState)try{t.endOfStream()}catch(e){this.warn(`onMediaDetaching: ${e.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),i&&self.URL.revokeObjectURL(i),this.mediaSrc===i?(e.removeAttribute("src"),this.appendSource&&Sl(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(tr.MEDIA_DETACHED,void 0)}onBufferReset(){this.getSourceBufferTypes().forEach((e=>{this.resetBuffer(e)})),this._initSourceBuffer()}resetBuffer(e){const t=this.sourceBuffer[e];try{var i;if(t)this.removeBufferListeners(e),this.sourceBuffer[e]=void 0,null!=(i=this.mediaSource)&&i.sourceBuffers.length&&this.mediaSource.removeSourceBuffer(t)}catch(t){this.warn(`onBufferReset ${e}`,t)}}onBufferCodecs(e,t){const i=this.getSourceBufferTypes().length,r=Object.keys(t);if(r.forEach((e=>{if(i){const i=this.tracks[e];if(i&&"function"==typeof i.buffer.changeType){var r;const{id:s,codec:n,levelCodec:a,container:o,metadata:l}=t[e],h=Hs(i.codec,i.levelCodec),c=null==h?void 0:h.replace(El,"$1");let d=Hs(n,a);const u=null==(r=d)?void 0:r.replace(El,"$1");if(d&&c!==u){"audio"===e.slice(0,5)&&(d=Vs(d,this.appendSource));const t=`${o};codecs=${d}`;this.appendChangeType(e,t),this.log(`switching codec ${h} to ${d}`),this.tracks[e]={buffer:i.buffer,codec:n,container:o,levelCodec:a,metadata:l,id:s}}}}else this.pendingTracks[e]=t[e]})),i)return;const s=Math.max(this.bufferCodecEventsExpected-1,0);this.bufferCodecEventsExpected!==s&&(this.log(`${s} bufferCodec event(s) expected ${r.join(",")}`),this.bufferCodecEventsExpected=s),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks()}appendChangeType(e,t){const{operationQueue:i}=this,r={execute:()=>{const r=this.sourceBuffer[e];r&&(this.log(`changing ${e} sourceBuffer type to ${t}`),r.changeType(t)),i.shiftAndExecuteNext(e)},onStart:()=>{},onComplete:()=>{},onError:t=>{this.warn(`Failed to change ${e} SourceBuffer type`,t)}};i.append(r,e,!!this.pendingTracks[e])}onBufferAppending(e,t){const{hls:i,operationQueue:r,tracks:s}=this,{data:n,type:a,frag:o,part:l,chunkMeta:h}=t,c=h.buffering[a],d=self.performance.now();c.start=d;const u=o.stats.buffering,f=l?l.stats.buffering:null;0===u.start&&(u.start=d),f&&0===f.start&&(f.start=d);const g=s.audio;let m=!1;"audio"===a&&"audio/mpeg"===(null==g?void 0:g.container)&&(m=!this.lastMpegAudioChunk||1===h.id||this.lastMpegAudioChunk.sn!==h.sn,this.lastMpegAudioChunk=h);const p=o.start,v={execute:()=>{if(c.executeStart=self.performance.now(),m){const e=this.sourceBuffer[a];if(e){const t=p-e.timestampOffset;Math.abs(t)>=.1&&(this.log(`Updating audio SourceBuffer timestampOffset to ${p} (delta: ${t}) sn: ${o.sn})`),e.timestampOffset=p)}}this.appendExecutor(n,a)},onStart:()=>{},onComplete:()=>{const e=self.performance.now();c.executeEnd=c.end=e,0===u.first&&(u.first=e),f&&0===f.first&&(f.first=e);const{sourceBuffer:t}=this,i={};for(const e in t)i[e]=xa.getBuffered(t[e]);this.appendErrors[a]=0,"audio"===a||"video"===a?this.appendErrors.audiovideo=0:(this.appendErrors.audio=0,this.appendErrors.video=0),this.hls.trigger(tr.BUFFER_APPENDED,{type:a,frag:o,part:l,chunkMeta:h,parent:o.type,timeRanges:i})},onError:e=>{const t={type:ir.MEDIA_ERROR,parent:o.type,details:rr.BUFFER_APPEND_ERROR,sourceBufferName:a,frag:o,part:l,chunkMeta:h,error:e,err:e,fatal:!1};if(e.code===DOMException.QUOTA_EXCEEDED_ERR)t.details=rr.BUFFER_FULL_ERROR;else{const e=++this.appendErrors[a];t.details=rr.BUFFER_APPEND_ERROR,this.warn(`Failed ${e}/${i.config.appendErrorMaxRetry} times to append segment in "${a}" sourceBuffer`),e>=i.config.appendErrorMaxRetry&&(t.fatal=!0)}i.trigger(tr.ERROR,t)}};r.append(v,a,!!this.pendingTracks[a])}onBufferFlushing(e,t){const{operationQueue:i}=this,r=e=>({execute:this.removeExecutor.bind(this,e,t.startOffset,t.endOffset),onStart:()=>{},onComplete:()=>{this.hls.trigger(tr.BUFFER_FLUSHED,{type:e})},onError:t=>{this.warn(`Failed to remove from ${e} SourceBuffer`,t)}});t.type?i.append(r(t.type),t.type):this.getSourceBufferTypes().forEach((e=>{i.append(r(e),e)}))}onFragParsed(e,t){const{frag:i,part:r}=t,s=[],n=r?r.elementaryStreams:i.elementaryStreams;n[vr]?s.push("audiovideo"):(n[mr]&&s.push("audio"),n[pr]&&s.push("video"));0===s.length&&this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${i.type} level: ${i.level} sn: ${i.sn}`),this.blockBuffers((()=>{const e=self.performance.now();i.stats.buffering.end=e,r&&(r.stats.buffering.end=e);const t=r?r.stats:i.stats;this.hls.trigger(tr.FRAG_BUFFERED,{frag:i,part:r,stats:t,id:i.type})}),s)}onFragChanged(e,t){this.trimBuffers()}onBufferEos(e,t){this.getSourceBufferTypes().reduce(((e,i)=>{const r=this.sourceBuffer[i];return!r||t.type&&t.type!==i||(r.ending=!0,r.ended||(r.ended=!0,this.log(`${i} sourceBuffer now EOS`))),e&&!(r&&!r.ended)}),!0)&&(this.log("Queueing mediaSource.endOfStream()"),this.blockBuffers((()=>{this.getSourceBufferTypes().forEach((e=>{const t=this.sourceBuffer[e];t&&(t.ending=!1)}));const{mediaSource:e}=this;e&&"open"===e.readyState?(this.log("Calling mediaSource.endOfStream()"),e.endOfStream()):e&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${e.readyState}`)})))}onLevelUpdated(e,{details:t}){t.fragments.length&&(this.details=t,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())}trimBuffers(){const{hls:e,details:t,media:i}=this;if(!i||null===t)return;if(!this.getSourceBufferTypes().length)return;const r=e.config,s=i.currentTime,n=t.levelTargetDuration,a=t.live&&null!==r.liveBackBufferLength?r.liveBackBufferLength:r.backBufferLength;if(Ji(a)&&a>0){const e=Math.max(a,n),t=Math.floor(s/n)*n-e;this.flushBackBuffer(s,n,t)}if(Ji(r.frontBufferFlushThreshold)&&r.frontBufferFlushThreshold>0){const e=Math.max(r.maxBufferLength,r.frontBufferFlushThreshold),t=Math.max(e,n),i=Math.floor(s/n)*n+t;this.flushFrontBuffer(s,n,i)}}flushBackBuffer(e,t,i){const{details:r,sourceBuffer:s}=this;this.getSourceBufferTypes().forEach((n=>{const a=s[n];if(a){const s=xa.getBuffered(a);if(s.length>0&&i>s.start(0)){if(this.hls.trigger(tr.BACK_BUFFER_REACHED,{bufferEnd:i}),null!=r&&r.live)this.hls.trigger(tr.LIVE_BACK_BUFFER_REACHED,{bufferEnd:i});else if(a.ended&&s.end(s.length-1)-e<2*t)return void this.log(`Cannot flush ${n} back buffer while SourceBuffer is in ended state`);this.hls.trigger(tr.BUFFER_FLUSHING,{startOffset:0,endOffset:i,type:n})}}}))}flushFrontBuffer(e,t,i){const{sourceBuffer:r}=this;this.getSourceBufferTypes().forEach((s=>{const n=r[s];if(n){const r=xa.getBuffered(n),a=r.length;if(a<2)return;const o=r.start(a-1),l=r.end(a-1);if(i>o||e>=o&&e<=l)return;if(n.ended&&e-l<2*t)return void this.log(`Cannot flush ${s} front buffer while SourceBuffer is in ended state`);this.hls.trigger(tr.BUFFER_FLUSHING,{startOffset:o,endOffset:1/0,type:s})}}))}updateMediaElementDuration(){if(!this.details||!this.media||!this.mediaSource||"open"!==this.mediaSource.readyState)return;const{details:e,hls:t,media:i,mediaSource:r}=this,s=e.fragments[0].start+e.totalduration,n=i.duration,a=Ji(r.duration)?r.duration:0;e.live&&t.config.liveDurationInfinity?(r.duration=1/0,this.updateSeekableRange(e)):(s>a&&s>n||!Ji(n))&&(this.log(`Updating Media Source duration to ${s.toFixed(3)}`),r.duration=s)}updateSeekableRange(e){const t=this.mediaSource,i=e.fragments;if(i.length&&e.live&&null!=t&&t.setLiveSeekableRange){const r=Math.max(0,i[0].start),s=Math.max(r,r+e.totalduration);this.log(`Media Source duration is set to ${t.duration}. Setting seekable range to ${r}-${s}.`),t.setLiveSeekableRange(r,s)}}checkPendingTracks(){const{bufferCodecEventsExpected:e,operationQueue:t,pendingTracks:i}=this,r=Object.keys(i).length;if(r&&(!e||2===r||"audiovideo"in i)){this.createSourceBuffers(i),this.pendingTracks={};const e=this.getSourceBufferTypes();if(e.length)this.hls.trigger(tr.BUFFER_CREATED,{tracks:this.tracks}),e.forEach((e=>{t.executeNext(e)}));else{const e=new Error("could not create source buffer for media codec(s)");this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:e,reason:e.message})}}}createSourceBuffers(e){const{sourceBuffer:t,mediaSource:i}=this;if(!i)throw Error("createSourceBuffers called when mediaSource was null");for(const s in e)if(!t[s]){var r;const n=e[s];if(!n)throw Error(`source buffer exists for track ${s}, however track does not`);let a=-1===(null==(r=n.levelCodec)?void 0:r.indexOf(","))?n.levelCodec:n.codec;a&&"audio"===s.slice(0,5)&&(a=Vs(a,this.appendSource));const o=`${n.container};codecs=${a}`;this.log(`creating sourceBuffer(${o})`);try{const e=t[s]=i.addSourceBuffer(o),r=s;this.addBufferListener(r,"updatestart",this._onSBUpdateStart),this.addBufferListener(r,"updateend",this._onSBUpdateEnd),this.addBufferListener(r,"error",this._onSBUpdateError),this.appendSource&&this.addBufferListener(r,"bufferedchange",((e,t)=>{const i=t.removedRanges;null!=i&&i.length&&this.hls.trigger(tr.BUFFER_FLUSHED,{type:s})})),this.tracks[s]={buffer:e,codec:a,container:n.container,levelCodec:n.levelCodec,metadata:n.metadata,id:n.id}}catch(e){this.error(`error while trying to add sourceBuffer: ${e.message}`),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:e,sourceBufferName:s,mimeType:o})}}}get mediaSrc(){var e;const t=(null==(e=this.media)?void 0:e.firstChild)||this.media;return null==t?void 0:t.src}_onSBUpdateStart(e){const{operationQueue:t}=this;t.current(e).onStart()}_onSBUpdateEnd(e){var t;if("closed"===(null==(t=this.mediaSource)?void 0:t.readyState))return void this.resetBuffer(e);const{operationQueue:i}=this;i.current(e).onComplete(),i.shiftAndExecuteNext(e)}_onSBUpdateError(e,t){var i;const r=new Error(`${e} SourceBuffer error. MediaSource readyState: ${null==(i=this.mediaSource)?void 0:i.readyState}`);this.error(`${r}`,t),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_APPENDING_ERROR,sourceBufferName:e,error:r,fatal:!1});const s=this.operationQueue.current(e);s&&s.onError(r)}removeExecutor(e,t,i){const{media:r,mediaSource:s,operationQueue:n,sourceBuffer:a}=this,o=a[e];if(!r||!s||!o)return this.warn(`Attempting to remove from the ${e} SourceBuffer, but it does not exist`),void n.shiftAndExecuteNext(e);const l=Ji(r.duration)?r.duration:1/0,h=Ji(s.duration)?s.duration:1/0,c=Math.max(0,t),d=Math.min(i,l,h);d>c&&(!o.ending||o.ended)?(o.ended=!1,this.log(`Removing [${c},${d}] from the ${e} SourceBuffer`),o.remove(c,d)):n.shiftAndExecuteNext(e)}appendExecutor(e,t){const i=this.sourceBuffer[t];if(i)i.ended=!1,i.appendBuffer(e);else if(!this.pendingTracks[t])throw new Error(`Attempting to append to the ${t} SourceBuffer, but it does not exist`)}blockBuffers(e,t=this.getSourceBufferTypes()){if(!t.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(e);const{operationQueue:i}=this,r=t.map((e=>i.appendBlocker(e)));Promise.all(r).then((()=>{e(),t.forEach((e=>{const t=this.sourceBuffer[e];null!=t&&t.updating||i.shiftAndExecuteNext(e)}))}))}getSourceBufferTypes(){return Object.keys(this.sourceBuffer)}addBufferListener(e,t,i){const r=this.sourceBuffer[e];if(!r)return;const s=i.bind(this,e);this.listeners[e].push({event:t,listener:s}),r.addEventListener(t,s)}removeBufferListeners(e){const t=this.sourceBuffer[e];t&&this.listeners[e].forEach((e=>{t.removeEventListener(e.event,e.listener)}))}},capLevelController:ph,errorController: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=lr.log.bind(lr,"[info]:"),this.warn=lr.warn.bind(lr,"[warning]:"),this.error=lr.error.bind(lr,"[error]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(tr.ERROR,this.onError,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){const e=this.hls;e&&(e.off(tr.ERROR,this.onError,this),e.off(tr.ERROR,this.onErrorOut,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}}startLoad(e){}stopLoad(){this.playlistError=0}getVariantLevelIndex(e){return(null==e?void 0:e.type)===hn?e.level:this.hls.loadLevel}onManifestLoading(){this.playlistError=0,this.penalizedRenditions={}}onLevelUpdated(){this.playlistError=0}onError(e,t){var i,r;if(t.fatal)return;const s=this.hls,n=t.context;switch(t.details){case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:return void(t.errorAction=this.getFragRetryOrSwitchAction(t));case rr.FRAG_PARSING_ERROR:if(null!=(i=t.frag)&&i.gap)return void(t.errorAction={action:ta,flags:na});case rr.FRAG_GAP:case rr.FRAG_DECRYPT_ERROR:return t.errorAction=this.getFragRetryOrSwitchAction(t),void(t.errorAction.action=ia);case rr.LEVEL_EMPTY_ERROR:case rr.LEVEL_PARSING_ERROR:{var a,o;const e=t.parent===hn?t.level:s.loadLevel;t.details===rr.LEVEL_EMPTY_ERROR&&null!=(a=t.context)&&null!=(o=a.levelDetails)&&o.live?t.errorAction=this.getPlaylistRetryOrSwitchAction(t,e):(t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,e))}return;case rr.LEVEL_LOAD_ERROR:case rr.LEVEL_LOAD_TIMEOUT:return void("number"==typeof(null==n?void 0:n.level)&&(t.errorAction=this.getPlaylistRetryOrSwitchAction(t,n.level)));case rr.AUDIO_TRACK_LOAD_ERROR:case rr.AUDIO_TRACK_LOAD_TIMEOUT:case rr.SUBTITLE_LOAD_ERROR:case rr.SUBTITLE_TRACK_LOAD_TIMEOUT:if(n){const e=s.levels[s.loadLevel];if(e&&(n.type===on&&e.hasAudioGroup(n.groupId)||n.type===ln&&e.hasSubtitleGroup(n.groupId)))return t.errorAction=this.getPlaylistRetryOrSwitchAction(t,s.loadLevel),t.errorAction.action=ia,void(t.errorAction.flags=aa)}return;case rr.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:{const e=s.levels[s.loadLevel],i=null==e?void 0:e.attrs["HDCP-LEVEL"];i?t.errorAction={action:ia,flags:oa,hdcpLevel:i}:this.keySystemError(t)}return;case rr.BUFFER_ADD_CODEC_ERROR:case rr.REMUX_ALLOC_ERROR:case rr.BUFFER_APPEND_ERROR:return void(t.errorAction=this.getLevelSwitchAction(t,null!=(r=t.level)?r:s.loadLevel));case rr.INTERNAL_EXCEPTION:case rr.BUFFER_APPENDING_ERROR:case rr.BUFFER_FULL_ERROR:case rr.LEVEL_SWITCH_ERROR:case rr.BUFFER_STALLED_ERROR:case rr.BUFFER_SEEK_OVER_HOLE:case rr.BUFFER_NUDGE_ON_STALL:return void(t.errorAction={action:ta,flags:na})}t.type===ir.KEY_SYSTEM_ERROR&&this.keySystemError(t)}keySystemError(e){const t=this.getVariantLevelIndex(e.frag);e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,t)}getPlaylistRetryOrSwitchAction(e,t){const i=Yn(this.hls.config.playlistLoadPolicy,e),r=this.playlistError++;if(Xn(i,r,Wn(e),e.response))return{action:sa,flags:na,retryConfig:i,retryCount:r};const s=this.getLevelSwitchAction(e,t);return i&&(s.retryConfig=i,s.retryCount=r),s}getFragRetryOrSwitchAction(e){const t=this.hls,i=this.getVariantLevelIndex(e.frag),r=t.levels[i],{fragLoadPolicy:s,keyLoadPolicy:n}=t.config,a=Yn(e.details.startsWith("key")?n:s,e),o=t.levels.reduce(((e,t)=>e+t.fragmentError),0);if(r){e.details!==rr.FRAG_GAP&&r.fragmentError++;if(Xn(a,o,Wn(e),e.response))return{action:sa,flags:na,retryConfig:a,retryCount:o}}const l=this.getLevelSwitchAction(e,i);return a&&(l.retryConfig=a,l.retryCount=o),l}getLevelSwitchAction(e,t){const i=this.hls;null==t&&(t=i.loadLevel);const r=this.hls.levels[t];if(r){var s,n;const t=e.details;r.loadError++,t===rr.BUFFER_APPEND_ERROR&&r.fragmentError++;let l=-1;const{levels:h,loadLevel:c,minAutoLevel:d,maxAutoLevel:u}=i;i.autoLevelEnabled||(i.loadLevel=-1);const f=null==(s=e.frag)?void 0:s.type,g=(f===cn&&t===rr.FRAG_PARSING_ERROR||"audio"===e.sourceBufferName&&(t===rr.BUFFER_ADD_CODEC_ERROR||t===rr.BUFFER_APPEND_ERROR))&&h.some((({audioCodec:e})=>r.audioCodec!==e)),m="video"===e.sourceBufferName&&(t===rr.BUFFER_ADD_CODEC_ERROR||t===rr.BUFFER_APPEND_ERROR)&&h.some((({codecSet:e,audioCodec:t})=>r.codecSet!==e&&r.audioCodec===t)),{type:p,groupId:v}=null!=(n=e.context)?n:{};for(let i=h.length;i--;){const s=(i+c)%h.length;if(s!==c&&s>=d&&s<=u&&0===h[s].loadError){var a,o;const i=h[s];if(t===rr.FRAG_GAP&&f===hn&&e.frag){const t=h[s].details;if(t){const i=Jn(e.frag,t.fragments,e.frag.start);if(null!=i&&i.gap)continue}}else{if(p===on&&i.hasAudioGroup(v)||p===ln&&i.hasSubtitleGroup(v))continue;if(f===cn&&null!=(a=r.audioGroups)&&a.some((e=>i.hasAudioGroup(e)))||f===dn&&null!=(o=r.subtitleGroups)&&o.some((e=>i.hasSubtitleGroup(e)))||g&&r.audioCodec===i.audioCodec||!g&&r.audioCodec!==i.audioCodec||m&&r.codecSet===i.codecSet)continue}l=s;break}}if(l>-1&&i.loadLevel!==l)return e.levelRetry=!0,this.playlistError=0,{action:ia,flags:na,nextAutoLevel:l}}return{action:ia,flags:aa}}onErrorOut(e,t){var i;switch(null==(i=t.errorAction)?void 0:i.action){case ta:break;case ia:this.sendAlternateToPenaltyBox(t),t.errorAction.resolved||t.details===rr.FRAG_GAP?/MediaSource readyState: ended/.test(t.error.message)&&(this.warn(`MediaSource ended after "${t.sourceBufferName}" sourceBuffer append error. Attempting to recover from media error.`),this.hls.recoverMediaError()):t.fatal=!0}t.fatal&&this.hls.stopLoad()}sendAlternateToPenaltyBox(e){const t=this.hls,i=e.errorAction;if(!i)return;const{flags:r,hdcpLevel:s,nextAutoLevel:n}=i;switch(r){case na:this.switchLevel(e,n);break;case oa:s&&(t.maxHdcpLevel=Dn[Dn.indexOf(s)-1],i.resolved=!0),this.warn(`Restricting playback to HDCP-LEVEL of "${t.maxHdcpLevel}" or lower`)}i.resolved||this.switchLevel(e,n)}switchLevel(e,t){void 0!==t&&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)}},fpsController: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(tr.MEDIA_ATTACHING,this.onMediaAttaching,this)}unregisterListeners(){this.hls.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(e,t){const i=this.hls.config;if(i.capLevelOnFPSDrop){const e=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=e,e&&"function"==typeof e.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),i.fpsDroppedMonitoringPeriod)}}checkFPS(e,t,i){const r=performance.now();if(t){if(this.lastTime){const e=r-this.lastTime,s=i-this.lastDroppedFrames,n=t-this.lastDecodedFrames,a=1e3*s/e,o=this.hls;if(o.trigger(tr.FPS_DROP,{currentDropped:s,currentDecoded:n,totalDroppedFrames:i}),a>0&&s>o.config.fpsDroppedMonitoringThreshold*n){let e=o.currentLevel;lr.warn("drop FPS ratio greater than max allowed value for currentLevel: "+e),e>0&&(-1===o.autoLevelCapping||o.autoLevelCapping>=e)&&(e-=1,o.trigger(tr.FPS_DROP_LEVEL_CAPPING,{level:e,droppedLevel:o.currentLevel}),o.autoLevelCapping=e,this.streamController.nextLevelSwitch())}}this.lastTime=r,this.lastDroppedFrames=i,this.lastDecodedFrames=t}}checkFPSInterval(){const e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){const t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)}},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:Mr,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableID3MetadataCues:!0,useMediaCapabilities:!0,certLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null}},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},{cueHandler:fc,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:class extends no{constructor(e,t,i){super(e,t,i,"[subtitle-stream-controller]",dn),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this._registerListeners()}onHandlerDestroying(){this._unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}_registerListeners(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.ERROR,this.onError,this),e.on(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(tr.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(tr.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this)}_unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.ERROR,this.onError,this),e.off(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(tr.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(tr.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.off(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this)}startLoad(e){this.stopLoad(),this.state=qa,this.setInterval(500),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){const{frag:i,success:r}=t;if(this.fragPrevious=i,this.state=qa,!r)return;const s=this.tracksBuffered[this.currentTrackId];if(!s)return;let n;const a=i.start;for(let e=0;e=s[e].start&&a<=s[e].end){n=s[e];break}const o=i.start+i.duration;n?n.end=o:(n={start:a,end:o},s.push(n)),this.fragmentTracker.fragBuffered(i),this.fragBufferedComplete(i,null)}onBufferFlushing(e,t){const{startOffset:i,endOffset:r}=t;if(0===i&&r!==Number.POSITIVE_INFINITY){const e=r-1;if(e<=0)return;t.endOffsetSubtitles=Math.max(0,e),this.tracksBuffered.forEach((t=>{for(let i=0;inew Fn(e))):(this.tracksBuffered=[],this.levels=t.map((e=>{const t=new Fn(e);return this.tracksBuffered[t.id]=[],t})),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,dn),this.fragPrevious=null,this.mediaBuffer=null)}onSubtitleTrackSwitch(e,t){var i;if(this.currentTrackId=t.id,null==(i=this.levels)||!i.length||-1===this.currentTrackId)return void this.clearInterval();const r=this.levels[this.currentTrackId];null!=r&&r.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,r&&this.setInterval(500)}onSubtitleTrackLoaded(e,t){var i;const{currentTrackId:r,levels:s}=this,{details:n,id:a}=t;if(!s)return void this.warn(`Subtitle tracks were reset while loading level ${a}`);const o=s[a];if(a>=s.length||!o)return;this.log(`Subtitle track ${a} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""},duration:${n.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let l=0;if(n.live||null!=(i=o.details)&&i.live){const e=this.mainDetails;if(n.deltaUpdateFailed||!e)return;const t=e.fragments[0];var h;if(o.details)l=this.alignPlaylists(n,o.details,null==(h=this.levelLastLoaded)?void 0:h.details),0===l&&t&&(l=t.start,Kn(n,l));else n.hasProgramDateTime&&e.hasProgramDateTime?(Fa(n,e),l=n.fragments[0].start):t&&(l=t.start,Kn(n,l))}if(o.details=n,this.levelLastLoaded=o,a===r&&(this.startFragRequested||!this.mainDetails&&n.live||this.setStartPosition(this.mainDetails||n,l),this.tick(),n.live&&!this.fragCurrent&&this.media&&this.state===qa)){Jn(null,n.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),o.details=void 0)}}_handleFragmentLoadComplete(e){const{frag:t,payload:i}=e,r=t.decryptdata,s=this.hls;if(!this.fragContextChanged(t)&&i&&i.byteLength>0&&null!=r&&r.key&&r.iv&&"AES-128"===r.method){const e=performance.now();this.decrypter.decrypt(new Uint8Array(i),r.key.buffer,r.iv.buffer).catch((e=>{throw s.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.FRAG_DECRYPT_ERROR,fatal:!1,error:e,reason:e.message,frag:t}),e})).then((i=>{const r=performance.now();s.trigger(tr.FRAG_DECRYPTED,{frag:t,payload:i,stats:{tstart:e,tdecrypt:r}})})).catch((e=>{this.warn(`${e.name}: ${e.message}`),this.state=qa}))}}doTick(){if(this.media){if(this.state===qa){const{currentTrackId:e,levels:t}=this,i=null==t?void 0:t[e];if(!i||!t.length||!i.details)return;const{config:r}=this,s=this.getLoadPosition(),n=xa.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],s,r.maxBufferHole),{end:a,len:o}=n,l=this.getFwdBufferInfo(this.media,hn),h=i.details;if(o>this.getMaxBufferLength(null==l?void 0:l.len)+h.levelTargetDuration)return;const c=h.fragments,d=c.length,u=h.edge;let f=null;const g=this.fragPrevious;if(au-e?0:e;f=Jn(g,c,Math.max(c[0].start,a),t),!f&&g&&g.startthis.pollTrackChange(0),this.useTextTrackPolling=!1,this.subtitlePollingInterval=-1,this._subtitleDisplay=!0,this.onTextTracksChanged=()=>{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let e=null;const t=Tn(this.media.textTracks);for(let i=0;i-1&&this.toggleTrackModes()}registerListeners(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVEL_LOADING,this.onLevelLoading,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVEL_LOADING,this.onLevelLoading,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(tr.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);Tn(this.media.textTracks).forEach((e=>{vn(e)})),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){const{id:i,groupId:r,details:s}=t,n=this.tracksInGroup[i];if(!n||n.groupId!==r)return void this.warn(`Subtitle track with id:${i} and group:${r} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=t.details,this.log(`Subtitle track ${i} "${n.name}" lang:${n.lang} group:${r} loaded [${s.startSN}-${s.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.subtitleGroups||null,r=this.groupIds;let s=this.currentTrack;if(!i||(null==r?void 0:r.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==r?void 0:r.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!s&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.subtitlePreference;if(!s&&t){this.selectDefaultTrack=!1;const i=va(t,e);if(i>-1)s=e[i];else{const e=va(t,this.tracks);s=this.tracks[e]}}let r=this.findTrackId(s);-1===r&&s&&(r=this.findTrackId(null));const n={subtitleTracks:e};this.log(`Updating subtitle tracks, ${e.length} track(s) found in "${null==i?void 0:i.join(",")}" group-id`),this.hls.trigger(tr.SUBTITLE_TRACKS_UPDATED,n),-1!==r&&-1===this.trackId&&this.setSubtitleTrack(r)}else this.shouldReloadPlaylist(s)&&this.setSubtitleTrack(this.trackId)}findTrackId(e){const t=this.tracksInGroup,i=this.selectDefaultTrack;for(let r=0;r-1){const e=this.tracksInGroup[r];return this.setSubtitleTrack(r),e}if(i)return null;{const i=va(e,t);if(i>-1)return t[i]}}}return null}loadPlaylist(e){super.loadPlaylist();const t=this.currentTrack;if(this.shouldLoadPlaylist(t)&&t){const i=t.id,r=t.groupId;let s=t.url;if(e)try{s=e.addDirectives(s)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}this.log(`Loading subtitle playlist for id ${i}`),this.hls.trigger(tr.SUBTITLE_TRACK_LOADING,{url:s,id:i,groupId:r,deliveryDirectives:e||null})}}toggleTrackModes(){const{media:e}=this;if(!e)return;const t=Tn(e.textTracks),i=this.currentTrack;let r;if(i&&(r=t.filter((e=>vl(i,e)))[0],r||this.warn(`Unable to find subtitle TextTrack with name "${i.name}" and language "${i.lang}"`)),[].slice.call(t).forEach((e=>{"disabled"!==e.mode&&e!==r&&(e.mode="disabled")})),r){const e=this.subtitleDisplay?"showing":"hidden";r.mode!==e&&(r.mode=e)}}setSubtitleTrack(e){const t=this.tracksInGroup;if(!this.media)return void(this.queuedDefaultTrack=e);if(e<-1||e>=t.length||!Ji(e))return void this.warn(`Invalid subtitle track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,r=t[e]||null;if(this.trackId=e,this.currentTrack=r,this.toggleTrackModes(),!r)return void this.hls.trigger(tr.SUBTITLE_TRACK_SWITCH,{id:e});const s=!!r.details&&!r.details.live;if(e===this.trackId&&r===i&&s)return;this.log(`Switching to subtitle-track ${e}`+(r?` "${r.name}" lang:${r.lang} group:${r.groupId}`:""));const{id:n,groupId:a="",name:o,type:l,url:h}=r;this.hls.trigger(tr.SUBTITLE_TRACK_SWITCH,{id:n,groupId:a,name:o,type:l,url:h});const c=this.switchParams(r.url,null==i?void 0:i.details,r.details);this.loadPlaylist(c)}},timelineController: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={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},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(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(tr.FRAG_LOADING,this.onFragLoading,this),e.on(tr.FRAG_LOADED,this.onFragLoaded,this),e.on(tr.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(tr.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(tr.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(tr.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(tr.FRAG_LOADING,this.onFragLoading,this),e.off(tr.FRAG_LOADED,this.onFragLoaded,this),e.off(tr.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(tr.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(tr.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(tr.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(tr.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)){const e=new Gl(this,"textTrack1"),t=new Gl(this,"textTrack2"),i=new Gl(this,"textTrack3"),r=new Gl(this,"textTrack4");this.cea608Parser1=new Ul(1,e,t),this.cea608Parser2=new Ul(3,i,r)}}addCues(e,t,i,r,s){let n=!1;for(let e=s.length;e--;){const r=s[e],c=(a=r[0],o=r[1],l=t,h=i,Math.min(o,h)-Math.max(a,l));if(c>=0&&(r[0]=Math.min(r[0],t),r[1]=Math.max(r[1],i),n=!0,c/(i-t)>.5))return}var a,o,l,h;if(n||s.push([t,i]),this.config.renderTextTracksNatively){const s=this.captionsTracks[e];this.Cues.newCue(s,t,i,r)}else{const s=this.Cues.newCue(null,t,i,r);this.hls.trigger(tr.CUES_PARSED,{type:"captions",cues:s,track:e})}}onInitPtsFound(e,{frag:t,id:i,initPTS:r,timescale:s}){const{unparsedVttFrags:n}=this;"main"===i&&(this.initPTS[t.cc]={baseTime:r,timescale:s}),n.length&&(this.unparsedVttFrags=[],n.forEach((e=>{this.onFragLoaded(tr.FRAG_LOADED,e)})))}getExistingTrack(e,t){const{media:i}=this;if(i)for(let r=0;r{vn(e[t]),delete e[t]})),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:e}=this;if(!e)return;const t=e.textTracks;if(t)for(let e=0;ee.textCodec===rh));if(this.config.enableWebVTT||r&&this.config.enableIMSC1){if(ml(this.tracks,i))return void(this.tracks=i);if(this.textTracks=[],this.tracks=i,this.config.renderTextTracksNatively){const e=this.media,t=e?Tn(e.textTracks):null;if(this.tracks.forEach(((e,i)=>{let r;if(t){let i=null;for(let r=0;rnull!==e)).map((e=>e.label));e.length&&lr.warn(`Media element contains unused subtitle tracks: ${e.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const e=this.tracks.map((e=>({label:e.name,kind:e.type.toLowerCase(),default:e.default,subtitleTrack:e})));this.hls.trigger(tr.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:e})}}}onManifestLoaded(e,t){this.config.enableCEA708Captions&&t.captions&&t.captions.forEach((e=>{const t=/(?:CC|SERVICE)([1-4])/.exec(e.instreamId);if(!t)return;const i=`textTrack${t[1]}`,r=this.captionsProperties[i];r&&(r.label=e.name,e.lang&&(r.languageCode=e.lang),r.media=e)}))}closedCaptionsForLevel(e){const t=this.hls.levels[e.level];return null==t?void 0:t.attrs["CLOSED-CAPTIONS"]}onFragLoading(e,t){if(this.enabled&&t.frag.type===hn){var i,r;const{cea608Parser1:e,cea608Parser2:s,lastSn:n}=this,{cc:a,sn:o}=t.frag,l=null!=(i=null==(r=t.part)?void 0:r.index)?i:-1;e&&s&&(o!==n+1||o===n&&l!==this.lastPartIndex+1||a!==this.lastCc)&&(e.reset(),s.reset()),this.lastCc=a,this.lastSn=o,this.lastPartIndex=l}}onFragLoaded(e,t){const{frag:i,payload:r}=t;if(i.type===dn)if(r.byteLength){const e=i.decryptdata,s="stats"in t;if(null==e||!e.encrypted||s){const e=this.tracks[i.level],s=this.vttCCs;s[i.cc]||(s[i.cc]={start:i.start,prevCC:this.prevCC,new:!0},this.prevCC=i.cc),e&&e.textCodec===rh?this._parseIMSC1(i,r):this._parseVTTs(t)}}else this.hls.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:new Error("Empty subtitle payload")})}_parseIMSC1(e,t){const i=this.hls;oh(t,this.initPTS[e.cc],(t=>{this._appendCues(t,e.level),i.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:e})}),(t=>{lr.log(`Failed to parse IMSC1: ${t}`),i.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e,error:t})}))}_parseVTTs(e){var t;const{frag:i,payload:r}=e,{initPTS:s,unparsedVttFrags:n}=this,a=s.length-1;if(!s[i.cc]&&-1===a)return void n.push(e);const o=this.hls;ih(null!=(t=i.initSegment)&&t.data?Es(i.initSegment.data,new Uint8Array(r)):r,this.initPTS[i.cc],this.vttCCs,i.cc,i.start,(e=>{this._appendCues(e,i.level),o.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:i})}),(t=>{const s="Missing initPTS for VTT MPEGTS"===t.message;s?n.push(e):this._fallbackToIMSC1(i,r),lr.log(`Failed to parse VTT cue: ${t}`),s&&a>i.cc||o.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:t})}))}_fallbackToIMSC1(e,t){const i=this.tracks[e.level];i.textCodec||oh(t,this.initPTS[e.cc],(()=>{i.textCodec=rh,this._parseIMSC1(e,t)}),(()=>{i.textCodec="wvtt"}))}_appendCues(e,t){const i=this.hls;if(this.config.renderTextTracksNatively){const i=this.textTracks[t];if(!i||"disabled"===i.mode)return;e.forEach((e=>pn(i,e)))}else{const r=this.tracks[t];if(!r)return;const s=r.default?"default":"subtitles"+t;i.trigger(tr.CUES_PARSED,{type:"subtitles",cues:e,track:s})}}onFragDecrypted(e,t){const{frag:i}=t;i.type===dn&&this.onFragLoaded(tr.FRAG_LOADED,t)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(e,t){this.initCea608Parsers();const{cea608Parser1:i,cea608Parser2:r}=this;if(!this.enabled||!i||!r)return;const{frag:s,samples:n}=t;if(s.type!==hn||"NONE"!==this.closedCaptionsForLevel(s))for(let e=0;eyn(e[r],t,i)))}if(this.config.renderTextTracksNatively&&0===t&&void 0!==r){const{textTracks:e}=this;Object.keys(e).forEach((i=>yn(e[i],t,r)))}}}extractCea608Data(e){const t=[[],[]],i=31&e[0];let r=2;for(let s=0;s0&&-1===e?(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t,this.state=qa):(this.loadedmetadata=!1,this.state=Ja),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}doTick(){switch(this.state){case qa:this.doTickIdle();break;case Ja:{var e;const{levels:t,trackId:i}=this,r=null==t||null==(e=t[i])?void 0:e.details;if(r){if(this.waitForCdnTuneIn(r))break;this.state=ro}break}case Qa:{var t;const e=performance.now(),i=this.retryDate;if(!i||e>=i||null!=(t=this.media)&&t.seeking){const{levels:e,trackId:t}=this;this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded((null==e?void 0:e[t])||null),this.state=qa}break}case ro:{const e=this.waitingData;if(e){const{frag:t,part:i,cache:r,complete:s}=e;if(void 0!==this.initPTS[t.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=Xa;const e={frag:t,part:i,payload:r.flush(),networkDetails:null};this._handleFragmentLoadProgress(e),s&&super._handleFragmentLoadComplete(e)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log(`Waiting fragment cc (${t.cc}) cancelled because video is at cc ${this.videoTrackCC}`),this.clearWaitingFragment();else{const e=this.getLoadPosition(),i=xa.bufferInfo(this.mediaBuffer,e,this.config.maxBufferHole);Zn(i.end,this.config.maxFragLookUpTolerance,t)<0&&(this.log(`Waiting fragment cc (${t.cc}) @ ${t.start} cancelled because another fragment at ${i.end} is needed`),this.clearWaitingFragment())}}else this.state=qa}}this.onTickEnd()}clearWaitingFragment(){const e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=qa)}resetLoadingState(){this.clearWaitingFragment(),super.resetLoadingState()}onTickEnd(){const{media:e}=this;null!=e&&e.readyState&&(this.lastCurrentTime=e.currentTime)}doTickIdle(){const{hls:e,levels:t,media:i,trackId:r}=this,s=e.config;if(!i&&(this.startFragRequested||!s.startFragPrefetch)||null==t||!t[r])return;const n=t[r],a=n.details;if(!a||a.live&&this.levelLastLoaded!==n||this.waitForCdnTuneIn(a))return void(this.state=Ja);const o=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&o&&(this.bufferFlushed=!1,this.afterBufferFlushed(o,mr,cn));const l=this.getFwdBufferInfo(o,cn);if(null===l)return;const{bufferedTrack:h,switchingTrack:c}=this;if(!c&&this._streamEnded(l,a))return e.trigger(tr.BUFFER_EOS,{type:"audio"}),void(this.state=to);const d=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,hn),u=l.len,f=this.getMaxBufferLength(null==d?void 0:d.len),g=a.fragments,m=g[0].start;let p=this.flushing?this.getLoadPosition():l.end;if(c&&i){const e=this.getLoadPosition();h&&!pl(c.attrs,h.attrs)&&(p=e),a.PTSKnown&&em||l.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),i.currentTime=m+.05)}if(u>=f&&!c&&pd.end+a.targetduration;if(T||(null==d||!d.len)&&l.len){const e=this.getAppendedFrag(v.start,hn);if(null===e)return;if(y||(y=!!e.gap||!!T&&0===d.len),T&&!y||y&&l.nextStart&&l.nextStartnew Fn(e)))}onAudioTrackSwitching(e,t){const i=!!t.url;this.trackId=t.id;const{fragCurrent:r}=this;r&&(r.abortRequests(),this.removeUnbufferedFrags(r.start)),this.resetLoadingState(),i?this.setInterval(100):this.resetTransmuxer(),i?(this.switchingTrack=t,this.state=qa,this.flushAudioIfNeeded(t)):(this.switchingTrack=null,this.bufferedTrack=t,this.state=Ya),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,null!==this.cachedTrackLoadedData&&(this.hls.trigger(tr.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)}onAudioTrackLoaded(e,t){var i;if(null==this.mainDetails)return void(this.cachedTrackLoadedData=t);const{levels:r}=this,{details:s,id:n}=t;if(!r)return void this.warn(`Audio tracks were reset while loading level ${n}`);this.log(`Audio track ${n} loaded [${s.startSN},${s.endSN}]${s.lastPartSn?`[part-${s.lastPartSn}-${s.lastPartIndex}]`:""},duration:${s.totalduration}`);const a=r[n];let o=0;if(s.live||null!=(i=a.details)&&i.live){this.checkLiveUpdate(s);const e=this.mainDetails;if(s.deltaUpdateFailed||!e)return;var l;if(!a.details&&s.hasProgramDateTime&&e.hasProgramDateTime)Fa(s,e),o=s.fragments[0].start;else o=this.alignPlaylists(s,a.details,null==(l=this.levelLastLoaded)?void 0:l.details)}a.details=s,this.levelLastLoaded=a,this.startFragRequested||!this.mainDetails&&s.live||this.setStartPosition(this.mainDetails||s,o),this.state!==Ja||this.waitForCdnTuneIn(s)||(this.state=qa),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:r,payload:s}=e,{config:n,trackId:a,levels:o}=this;if(!o)return void this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const l=o[a];if(!l)return void this.warn("Audio track is undefined on fragment load progress");const h=l.details;if(!h)return this.warn("Audio track details undefined on fragment load progress"),void this.removeUnbufferedFrags(i.start);const c=n.defaultAudioCodec||l.audioCodec||"mp4a.40.2";let d=this.transmuxer;d||(d=this.transmuxer=new gl(this.hls,cn,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));const u=this.initPTS[i.cc],f=null==(t=i.initSegment)?void 0:t.data;if(void 0!==u){const e=!1,t=r?r.index:-1,n=-1!==t,a=new Ca(i.level,i.sn,i.stats.chunkCount,s.byteLength,t,n);d.push(s,f,c,"",i,r,h.totalduration,e,a,u)}else{this.log(`Unknown video PTS for cc ${i.cc}, waiting for video PTS before demuxing audio frag ${i.sn} of [${h.startSN} ,${h.endSN}],track ${a}`);const{cache:e}=this.waitingData=this.waitingData||{frag:i,part:r,cache:new ao,complete:!1};e.push(new Uint8Array(s)),this.waitingVideoCC=this.videoTrackCC,this.state=ro}}_handleFragmentLoadComplete(e){this.waitingData?this.waitingData.complete=!0:super._handleFragmentLoadComplete(e)}onBufferReset(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1}onBufferCreated(e,t){const i=t.tracks.audio;i&&(this.mediaBuffer=i.buffer||null),t.tracks.video&&(this.videoBuffer=t.tracks.video.buffer||null)}onFragBuffered(e,t){const{frag:i,part:r}=t;if(i.type===cn)if(this.fragContextChanged(i))this.warn(`Fragment ${i.sn}${r?" p: "+r.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);else{if("initSegment"!==i.sn){this.fragPrevious=i;const e=this.switchingTrack;e&&(this.bufferedTrack=e,this.switchingTrack=null,this.hls.trigger(tr.AUDIO_TRACK_SWITCHED,qi({},e)))}this.fragBufferedComplete(i,r)}else if(!this.loadedmetadata&&i.type===hn){const e=this.videoBuffer||this.media;if(e){xa.getBuffered(e).length&&(this.loadedmetadata=!0)}}}onError(e,t){var i;if(t.fatal)this.state=io;else switch(t.details){case rr.FRAG_GAP:case rr.FRAG_PARSING_ERROR:case rr.FRAG_DECRYPT_ERROR:case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(cn,t);break;case rr.AUDIO_TRACK_LOAD_ERROR:case rr.AUDIO_TRACK_LOAD_TIMEOUT:case rr.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==Ja||(null==(i=t.context)?void 0:i.type)!==on||(this.state=qa);break;case rr.BUFFER_APPEND_ERROR:case rr.BUFFER_FULL_ERROR:if(!t.parent||"audio"!==t.parent)return;if(t.details===rr.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&(this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"));break;case rr.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}onBufferFlushing(e,{type:t}){t!==pr&&(this.flushing=!0)}onBufferFlushed(e,{type:t}){if(t!==pr){this.flushing=!1,this.bufferFlushed=!0,this.state===to&&(this.state=qa);const e=this.mediaBuffer||this.media;e&&(this.afterBufferFlushed(e,t,cn),this.tick())}}_handleTransmuxComplete(e){var t;const i="audio",{hls:r}=this,{remuxResult:s,chunkMeta:n}=e,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{details:c}=h,{audio:d,text:u,id3:f,initSegment:g}=s;if(!this.fragContextChanged(o)&&c){if(this.state=Za,this.switchingTrack&&d&&this.completeAudioSwitch(this.switchingTrack),null!=g&&g.tracks){const e=o.initSegment||o;this._bufferInitSegment(h,g.tracks,e,n),r.trigger(tr.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:g.tracks})}if(d){const{startPTS:e,endPTS:t,startDTS:i,endDTS:r}=d;l&&(l.elementaryStreams[mr]={startPTS:e,endPTS:t,startDTS:i,endDTS:r}),o.setElementaryStreamInfo(mr,e,t,i,r),this.bufferFragmentData(d,o,l,n)}if(null!=f&&null!=(t=f.samples)&&t.length){const e=Qi({id:i,frag:o,details:c},f);r.trigger(tr.FRAG_PARSING_METADATA,e)}if(u){const e=Qi({id:i,frag:o,details:c},u);r.trigger(tr.FRAG_PARSING_USERDATA,e)}}else this.fragmentTracker.removeFragment(o)}_bufferInitSegment(e,t,i,r){if(this.state!==Za)return;t.video&&delete t.video;const s=t.audio;if(!s)return;s.id="audio";const n=e.audioCodec;this.log(`Init audio buffer, container:${s.container}, codecs[level/parsed]=[${n}/${s.codec}]`),n&&1===n.split(",").length&&(s.levelCodec=n),this.hls.trigger(tr.BUFFER_CODECS,t);const a=s.initSegment;if(null!=a&&a.byteLength){const e={type:"audio",frag:i,part:null,chunkMeta:r,parent:i.type,data:a};this.hls.trigger(tr.BUFFER_APPENDING,e)}this.tickImmediate()}loadFragment(e,t,i){const r=this.fragmentTracker.getState(e);var s;if(this.fragCurrent=e,this.switchingTrack||r===ba||r===wa)if("initSegment"===e.sn)this._loadInitSegment(e,t);else if(null!=(s=t.details)&&s.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=ro;const i=this.mainDetails;i&&i.fragments[0].start!==t.details.fragments[0].start&&Fa(t.details,i)}else this.startFragRequested=!0,super.loadFragment(e,t,i);else this.clearTrackerIfNeeded(e)}flushAudioIfNeeded(e){const{media:t,bufferedTrack:i}=this,r=null==i?void 0:i.attrs,s=e.attrs;t&&r&&(r.CHANNELS!==s.CHANNELS||i.name!==e.name||i.lang!==e.lang)&&(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null)}completeAudioSwitch(e){const{hls:t}=this;this.flushAudioIfNeeded(e),this.bufferedTrack=e,this.switchingTrack=null,t.trigger(tr.AUDIO_TRACK_SWITCHED,qi({},e))}},audioTrackController:class extends la{constructor(e){super(e,"[audio-track-controller]"),this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVEL_LOADING,this.onLevelLoading,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVEL_LOADING,this.onLevelLoading,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(tr.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.audioTracks||[]}onAudioTrackLoaded(e,t){const{id:i,groupId:r,details:s}=t,n=this.tracksInGroup[i];if(!n||n.groupId!==r)return void this.warn(`Audio track with id:${i} and group:${r} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=t.details,this.log(`Audio track ${i} "${n.name}" lang:${n.lang} group:${r} loaded [${s.startSN}-${s.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.audioGroups||null,r=this.groupIds;let s=this.currentTrack;if(!i||(null==r?void 0:r.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==r?void 0:r.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!s&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.audioPreference;if(!s&&t){const i=va(t,e,Ta);if(i>-1)s=e[i];else{const e=va(t,this.tracks);s=this.tracks[e]}}let r=this.findTrackId(s);-1===r&&s&&(r=this.findTrackId(null));const a={audioTracks:e};this.log(`Updating audio tracks, ${e.length} track(s) found in group(s): ${null==i?void 0:i.join(",")}`),this.hls.trigger(tr.AUDIO_TRACKS_UPDATED,a);const o=this.trackId;if(-1!==r&&-1===o)this.setAudioTrack(r);else if(e.length&&-1===o){var n;const t=new Error(`No audio track selected for current audio group-ID(s): ${null==(n=this.groupIds)?void 0:n.join(",")} track count: ${e.length}`);this.warn(t.message),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:t})}}else this.shouldReloadPlaylist(s)&&this.setAudioTrack(this.trackId)}onError(e,t){!t.fatal&&t.context&&(t.context.type!==on||t.context.id!==this.trackId||this.groupIds&&-1===this.groupIds.indexOf(t.context.groupId)||(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){const t=this.hls;if(t.config.audioPreference=e,e){const i=this.allAudioTracks;if(this.selectDefaultTrack=!1,i.length){const r=this.currentTrack;if(r&&ya(e,r,Ta))return r;const s=va(e,this.tracksInGroup,Ta);if(s>-1){const e=this.tracksInGroup[s];return this.setAudioTrack(s),e}if(r){let r=t.loadLevel;-1===r&&(r=t.firstAutoLevel);const s=function(e,t,i,r,s){const n=t[r],a=t.reduce(((e,t,i)=>{const r=t.uri;return(e[r]||(e[r]=[])).push(i),e}),{})[n.uri];a.length>1&&(r=Math.max.apply(Math,a));const o=n.videoRange,l=n.frameRate,h=n.codecSet.substring(0,4),c=Ea(t,r,(t=>{if(t.videoRange!==o||t.frameRate!==l||t.codecSet.substring(0,4)!==h)return!1;const r=t.audioGroups,n=i.filter((e=>!r||-1!==r.indexOf(e.groupId)));return va(e,n,s)>-1}));return c>-1?c:Ea(t,r,(t=>{const r=t.audioGroups,n=i.filter((e=>!r||-1!==r.indexOf(e.groupId)));return va(e,n,s)>-1}))}(e,t.levels,i,r,Ta);if(-1===s)return null;t.nextLoadLevel=s}if(e.channels||e.audioCodec){const t=va(e,i);if(t>-1)return i[t]}}}return null}setAudioTrack(e){const t=this.tracksInGroup;if(e<0||e>=t.length)return void this.warn(`Invalid audio track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,r=t[e],s=r.details&&!r.details.live;if(e===this.trackId&&r===i&&s)return;if(this.log(`Switching to audio-track ${e} "${r.name}" lang:${r.lang} group:${r.groupId} channels:${r.channels}`),this.trackId=e,this.currentTrack=r,this.hls.trigger(tr.AUDIO_TRACK_SWITCHING,qi({},r)),s)return;const n=this.switchParams(r.url,null==i?void 0:i.details,r.details);this.loadPlaylist(n)}findTrackId(e){const t=this.tracksInGroup;for(let i=0;i{this.initialized&&(this.starved=!0),this.buffering=!0},this.onPlaying=()=>{this.initialized||(this.initialized=!0),this.buffering=!1},this.applyPlaylistData=e=>{try{this.apply(e,{ot:Eh.MANIFEST,su:!this.initialized})}catch(e){lr.warn("Could not generate manifest CMCD data.",e)}},this.applyFragmentData=e=>{try{const t=e.frag,i=this.hls.levels[t.level],r=this.getObjectType(t),s={d:1e3*t.duration,ot:r};r!==Eh.VIDEO&&r!==Eh.AUDIO&&r!=Eh.MUXED||(s.br=i.bitrate/1e3,s.tb=this.getTopBandwidth(r)/1e3,s.bl=this.getBufferLength(r)),this.apply(e,s)}catch(e){lr.warn("Could not generate segment CMCD data.",e)}},this.hls=e;const t=this.config=e.config,{cmcd:i}=t;null!=i&&(t.pLoader=this.createPlaylistLoader(),t.fLoader=this.createFragmentLoader(),this.sid=i.sessionId||function(){try{return crypto.randomUUID()}catch(e){try{const e=URL.createObjectURL(new Blob),t=e.toString();return URL.revokeObjectURL(e),t.slice(t.lastIndexOf("/")+1)}catch(e){let t=(new Date).getTime();const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const i=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?i:3&i|8).toString(16)}));return i}}}(),this.cid=i.contentId,this.useHeaders=!0===i.useHeaders,this.includeKeys=i.includeKeys,this.registerListeners())}registerListeners(){const e=this.hls;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHED,this.onMediaDetached,this),e.on(tr.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){const e=this.hls;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHED,this.onMediaDetached,this),e.off(tr.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 i,r;this.audioBuffer=null==(i=t.tracks.audio)?void 0:i.buffer,this.videoBuffer=null==(r=t.tracks.video)?void 0:r.buffer}createData(){var e;return{v:1,sf:Sh.HLS,sid:this.sid,cid:this.cid,pr:null==(e=this.media)?void 0:e.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}}apply(e,t={}){Qi(t,this.createData());const i=t.ot===Eh.INIT||t.ot===Eh.VIDEO||t.ot===Eh.MUXED;this.starved&&i&&(t.bs=!0,t.su=!0,this.starved=!1),null==t.su&&(t.su=this.buffering);const{includeKeys:r}=this;r&&(t=Object.keys(t).reduce(((e,i)=>(r.includes(i)&&(e[i]=t[i]),e)),{})),this.useHeaders?(e.headers||(e.headers={}),ec(e.headers,t)):e.url=rc(e.url,t)}getObjectType(e){const{type:t}=e;return"subtitle"===t?Eh.TIMED_TEXT:"initSegment"===e.sn?Eh.INIT:"audio"===t?Eh.AUDIO:"main"===t?this.hls.audioTracks.length?Eh.VIDEO:Eh.MUXED:void 0}getTopBandwidth(e){let t,i=0;const r=this.hls;if(e===Eh.AUDIO)t=r.audioTracks;else{const e=r.maxAutoLevel,i=e>-1?e+1:r.levels.length;t=r.levels.slice(0,i)}for(const e of t)e.bitrate>i&&(i=e.bitrate);return i>0?i:NaN}getBufferLength(e){const t=this.hls.media,i=e===Eh.AUDIO?this.audioBuffer:this.videoBuffer;if(!i||!t)return NaN;return 1e3*xa.bufferInfo(i,t.currentTime,this.config.maxBufferHole).len}createPlaylistLoader(){const{pLoader:e}=this.config,t=this.applyPlaylistData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,r){t(e),this.loader.load(e,i,r)}}}createFragmentLoader(){const{fLoader:e}=this.config,t=this.applyFragmentData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,r){t(e),this.loader.load(e,i,r)}}}},contentSteeringController: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=lr.log.bind(lr,"[content-steering]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const e=this.hls;e&&(e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.ERROR,this.onError,this))}startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){const e=1e3*this.timeToLoad-(performance.now()-this.updated);if(e>0)return void this.scheduleRefresh(this.uri,e)}this.loadSteeringManifest(this.uri)}}stopLoad(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()}clearTimeout(){-1!==this.reloadTimer&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(e){const t=this.levels;t&&(this.levels=t.filter((t=>t!==e)))}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(e,t){const{contentSteering:i}=t;null!==i&&(this.pathwayId=i.pathwayId,this.uri=i.uri,this.started&&this.startLoad())}onManifestParsed(e,t){this.audioTracks=t.audioTracks,this.subtitleTracks=t.subtitleTracks}onError(e,t){const{errorAction:i}=t;if((null==i?void 0:i.action)===ia&&i.flags===aa){const e=this.levels;let r=this.pathwayPriority,s=this.pathwayId;if(t.context){const{groupId:i,pathwayId:r,type:n}=t.context;i&&e?s=this.getPathwayForGroupId(i,n,s):r&&(s=r)}s in this.penalizedPathways||(this.penalizedPathways[s]=performance.now()),!r&&e&&(r=e.reduce(((e,t)=>(-1===e.indexOf(t.pathwayId)&&e.push(t.pathwayId),e)),[])),r&&r.length>1&&(this.updatePathwayPriority(r),i.resolved=this.pathwayId!==s),i.resolved||lr.warn(`Could not resolve ${t.details} ("${t.error.message}") with content-steering for Pathway: ${s} levels: ${e?e.length:e} priorities: ${JSON.stringify(r)} penalized: ${JSON.stringify(this.penalizedPathways)}`)}}filterParsedLevels(e){this.levels=e;let t=this.getLevelsForPathway(this.pathwayId);if(0===t.length){const i=e[0].pathwayId;this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to "${i}"`),t=this.getLevelsForPathway(i),this.pathwayId=i}return t.length!==e.length?(this.log(`Found ${t.length}/${e.length} levels in Pathway "${this.pathwayId}"`),t):e}getLevelsForPathway(e){return null===this.levels?[]:this.levels.filter((t=>e===t.pathwayId))}updatePathwayPriority(e){let t;this.pathwayPriority=e;const i=this.penalizedPathways,r=performance.now();Object.keys(i).forEach((e=>{r-i[e]>3e5&&delete i[e]}));for(let r=0;r0){this.log(`Setting Pathway to "${s}"`),this.pathwayId=s,jn(t),this.hls.trigger(tr.LEVELS_UPDATED,{levels:t});const e=this.hls.levels[n];a&&e&&this.levels&&(e.attrs["STABLE-VARIANT-ID"]!==a.attrs["STABLE-VARIANT-ID"]&&e.bitrate!==a.bitrate&&this.log(`Unstable Pathways change from bitrate ${a.bitrate} to ${e.bitrate}`),this.hls.nextLoadLevel=n);break}}}getPathwayForGroupId(e,t,i){const r=this.getLevelsForPathway(i).concat(this.levels||[]);for(let i=0;i{const{ID:s,"BASE-ID":n,"URI-REPLACEMENT":a}=e;if(t.some((e=>e.pathwayId===s)))return;const o=this.getLevelsForPathway(n).map((e=>{const t=new dr(e.attrs);t["PATHWAY-ID"]=s;const n=t.AUDIO&&`${t.AUDIO}_clone_${s}`,o=t.SUBTITLES&&`${t.SUBTITLES}_clone_${s}`;n&&(i[t.AUDIO]=n,t.AUDIO=n),o&&(r[t.SUBTITLES]=o,t.SUBTITLES=o);const l=nc(e.uri,t["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",a),h=new Fn({attrs:t,audioCodec:e.audioCodec,bitrate:e.bitrate,height:e.height,name:e.name,url:l,videoCodec:e.videoCodec,width:e.width});if(e.audioGroups)for(let t=1;t{this.log(`Loaded steering manifest: "${r}"`);const n=e.data;if(1!==n.VERSION)return void this.log(`Steering VERSION ${n.VERSION} not supported!`);this.updated=performance.now(),this.timeToLoad=n.TTL;const{"RELOAD-URI":a,"PATHWAY-CLONES":o,"PATHWAY-PRIORITY":l}=n;if(a)try{this.uri=new self.URL(a,r).href}catch(e){return this.enabled=!1,void this.log(`Failed to parse Steering Manifest RELOAD-URI: ${a}`)}this.scheduleRefresh(this.uri||i.url),o&&this.clonePathways(o);const h={steeringManifest:n,url:r.toString()};this.hls.trigger(tr.STEERING_MANIFEST_LOADED,h),l&&this.updatePathwayPriority(l)},onError:(e,t,i,r)=>{if(this.log(`Error loading steering manifest: ${e.code} ${e.text} (${t.url})`),this.stopLoad(),410===e.code)return this.enabled=!1,void this.log(`Steering manifest ${t.url} no longer available`);let s=1e3*this.timeToLoad;if(429!==e.code)this.scheduleRefresh(this.uri||t.url,s);else{const e=this.loader;if("function"==typeof(null==e?void 0:e.getResponseHeader)){const t=e.getResponseHeader("Retry-After");t&&(s=1e3*parseFloat(t))}this.log(`Steering manifest ${t.url} rate limited`)}},onTimeout:(e,t,i)=>{this.log(`Timeout loading steering manifest (${t.url})`),this.scheduleRefresh(this.uri||t.url)}};this.log(`Requesting steering manifest: ${r}`),this.loader.load(s,o,l)}scheduleRefresh(e,t=1e3*this.timeToLoad){this.clearTimeout(),this.reloadTimer=self.setTimeout((()=>{var t;const i=null==(t=this.hls)?void 0:t.media;!i||i.ended?this.scheduleRefresh(e,1e3*this.timeToLoad):this.loadSteeringManifest(e)}),t)}}});function mc(e){return e&&"object"==typeof e?Array.isArray(e)?e.map(mc):Object.keys(e).reduce(((t,i)=>(t[i]=mc(e[i]),t)),{}):e}function pc(e){const t=e.loader;if(t!==hc&&t!==oc)lr.log("[config]: Custom loader detected, cannot enable progressive streaming"),e.progressive=!1;else{(function(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(e){}return!1})()&&(e.loader=hc,e.progressive=!0,e.enableSoftwareAES=!0,lr.log("[config]: Progressive streaming enabled, using FetchLoader"))}}let vc;class yc extends la{constructor(e,t){super(e,"[level-controller]"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=t,this._registerListeners()}_registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.on(tr.ERROR,this.onError,this)}_unregisterListeners(){const{hls:e}=this;e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.off(tr.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach((e=>{e.loadError=0,e.fragmentError=0})),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(e,t){this.resetLevels()}onManifestLoaded(e,t){const i=this.hls.config.preferManagedMediaSource,r=[],s={},n={};let a=!1,o=!1,l=!1;t.levels.forEach((e=>{var t,h;const c=e.attrs;let{audioCodec:d,videoCodec:u}=e;-1!==(null==(t=d)?void 0:t.indexOf("mp4a.40.34"))&&(vc||(vc=/chrome|firefox/i.test(navigator.userAgent)),vc&&(e.audioCodec=d=void 0)),d&&(e.audioCodec=d=Vs(d,i)),0===(null==(h=u)?void 0:h.indexOf("avc1"))&&(u=e.videoCodec=function(e){const t=e.split(".");if(t.length>2){let e=t.shift()+".";return e+=parseInt(t.shift()).toString(16),e+=("000"+parseInt(t.shift()).toString(16)).slice(-4),e}return e}(u));const{width:f,height:g,unknownCodecs:m}=e;if(a||(a=!(!f||!g)),o||(o=!!u),l||(l=!!d),null!=m&&m.length||d&&!Fs(d,"audio",i)||u&&!Fs(u,"video",i))return;const{CODECS:p,"FRAME-RATE":v,"HDCP-LEVEL":y,"PATHWAY-ID":T,RESOLUTION:E,"VIDEO-RANGE":S}=c,b=`${`${T||"."}-`}${e.bitrate}-${E}-${v}-${p}-${S}-${y}`;if(s[b])if(s[b].uri===e.url||e.attrs["PATHWAY-ID"])s[b].addGroupId("audio",c.AUDIO),s[b].addGroupId("text",c.SUBTITLES);else{const t=n[b]+=1;e.attrs["PATHWAY-ID"]=new Array(t+1).join(".");const i=new Fn(e);s[b]=i,r.push(i)}else{const t=new Fn(e);s[b]=t,n[b]=1,r.push(t)}})),this.filterAndSortMediaOptions(r,t,a,o,l)}filterAndSortMediaOptions(e,t,i,r,s){let n=[],a=[],o=e;if((i||r)&&s&&(o=o.filter((({videoCodec:e,videoRange:t,width:i,height:r})=>{return(!!e||!(!i||!r))&&(!!(s=t)&&xn.indexOf(s)>-1);var s}))),0===o.length)return void 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)}`);const e=new Error("no level with compatible codecs found in manifest");this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,error:e,reason:e.message})}}));if(t.audioTracks){const{preferManagedMediaSource:e}=this.hls.config;n=t.audioTracks.filter((t=>!t.audioCodec||Fs(t.audioCodec,"audio",e))),Tc(n)}t.subtitles&&(a=t.subtitles,Tc(a));const l=o.slice(0);o.sort(((e,t)=>{if(e.attrs["HDCP-LEVEL"]!==t.attrs["HDCP-LEVEL"])return(e.attrs["HDCP-LEVEL"]||"")>(t.attrs["HDCP-LEVEL"]||"")?1:-1;if(i&&e.height!==t.height)return e.height-t.height;if(e.frameRate!==t.frameRate)return e.frameRate-t.frameRate;if(e.videoRange!==t.videoRange)return xn.indexOf(e.videoRange)-xn.indexOf(t.videoRange);if(e.videoCodec!==t.videoCodec){const i=Bs(e.videoCodec),r=Bs(t.videoCodec);if(i!==r)return r-i}if(e.uri===t.uri&&e.codecSet!==t.codecSet){const i=$s(e.codecSet),r=$s(t.codecSet);if(i!==r)return r-i}return e.averageBitrate!==t.averageBitrate?e.averageBitrate-t.averageBitrate:0}));let h=l[0];if(this.steering&&(o=this.steering.filterParsedLevels(o),o.length!==l.length))for(let e=0;ei&&i===gc.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=e)}break}const d=s&&!r,u={levels:o,audioTracks:n,subtitleTracks:a,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:s,video:r,altAudio:!d&&n.some((e=>!!e.url))};this.hls.trigger(tr.MANIFEST_PARSED,u),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}get levels(){return 0===this._levels.length?null:this._levels}get level(){return this.currentLevelIndex}set level(e){const t=this._levels;if(0===t.length)return;if(e<0||e>=t.length){const i=new Error("invalid level idx"),r=e<0;if(this.hls.trigger(tr.ERROR,{type:ir.OTHER_ERROR,details:rr.LEVEL_SWITCH_ERROR,level:e,fatal:r,error:i,reason:i.message}),r)return;e=Math.min(e,t.length-1)}const i=this.currentLevelIndex,r=this.currentLevel,s=r?r.attrs["PATHWAY-ID"]:void 0,n=t[e],a=n.attrs["PATHWAY-ID"];if(this.currentLevelIndex=e,this.currentLevel=n,i===e&&n.details&&r&&s===a)return;this.log(`Switching to level ${e} (${n.height?n.height+"p ":""}${n.videoRange?n.videoRange+" ":""}${n.codecSet?n.codecSet+" ":""}@${n.bitrate})${a?" with Pathway "+a:""} from level ${i}${s?" with Pathway "+s:""}`);const o={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(tr.LEVEL_SWITCHING,o);const l=n.details;if(!l||l.live){const e=this.switchParams(n.uri,null==r?void 0:r.details,l);this.loadPlaylist(e)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(e){this.manualLevelIndex=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}get firstLevel(){return this._firstLevel}set firstLevel(e){this._firstLevel=e}get startLevel(){if(void 0===this._startLevel){const e=this.hls.config.startLevel;return void 0!==e?e:this.hls.firstAutoLevel}return this._startLevel}set startLevel(e){this._startLevel=e}onError(e,t){!t.fatal&&t.context&&t.context.type===an&&t.context.level===this.level&&this.checkRetry(t)}onFragBuffered(e,{frag:t}){if(void 0!==t&&t.type===hn){const e=t.elementaryStreams;if(!Object.keys(e).some((t=>!!e[t])))return;const i=this._levels[t.level];null!=i&&i.loadError&&(this.log(`Resetting level error count of ${i.loadError} on frag buffered`),i.loadError=0)}}onLevelLoaded(e,t){var i;const{level:r,details:s}=t,n=this._levels[r];var a;if(!n)return this.warn(`Invalid level index ${r}`),void(null!=(a=t.deliveryDirectives)&&a.skip&&(s.deltaUpdateFailed=!0));r===this.currentLevelIndex?(0===n.fragmentError&&(n.loadError=0),this.playlistLoaded(r,t,n.details)):null!=(i=t.deliveryDirectives)&&i.skip&&(s.deltaUpdateFailed=!0)}loadPlaylist(e){super.loadPlaylist();const t=this.currentLevelIndex,i=this.currentLevel;if(i&&this.shouldLoadPlaylist(i)){let r=i.uri;if(e)try{r=e.addDirectives(r)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}const s=i.attrs["PATHWAY-ID"];this.log(`Loading level index ${t}${void 0!==(null==e?void 0:e.msn)?" at sn "+e.msn+" part "+e.part:""} with${s?" Pathway "+s:""} ${r}`),this.clearTimer(),this.hls.trigger(tr.LEVEL_LOADING,{url:r,level:t,pathwayId:i.attrs["PATHWAY-ID"],id:0,deliveryDirectives:e||null})}}get nextLoadLevel(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(e){this.level=e,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=e)}removeLevel(e){var t;const i=this._levels.filter(((t,i)=>i!==e||(this.steering&&this.steering.removeLevel(t),t===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,t.details&&t.details.fragments.forEach((e=>e.level=-1))),!1)));jn(i),this._levels=i,this.currentLevelIndex>-1&&null!=(t=this.currentLevel)&&t.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.hls.trigger(tr.LEVELS_UPDATED,{levels:i})}onLevelsUpdated(e,{levels:t}){this._levels=t}checkMaxAutoUpdated(){const{autoLevelCapping:e,maxAutoLevel:t,maxHdcpLevel:i}=this.hls;this._maxAutoLevel!==t&&(this._maxAutoLevel=t,this.hls.trigger(tr.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:e,levels:this.levels,maxAutoLevel:t,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:i}))}}function Tc(e){const t={};e.forEach((e=>{const i=e.groupId||"";e.id=t[i]=t[i]||0,t[i]++}))}class Ec{constructor(e){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=e}abort(e){for(const i in this.keyUriToKeyInfo){const r=this.keyUriToKeyInfo[i].loader;if(r){var t;if(e&&e!==(null==(t=r.context)?void 0:t.frag.type))return;r.abort()}}}detach(){for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e];(t.mediaKeySessionContext||t.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[e]}}destroy(){this.detach();for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e].loader;t&&t.destroy()}this.keyUriToKeyInfo={}}createKeyLoadError(e,t=rr.KEY_LOAD_ERROR,i,r,s){return new Ga({type:ir.NETWORK_ERROR,details:t,fatal:!1,frag:e,response:s,error:i,networkDetails:r})}loadClear(e,t){if(this.emeController&&this.config.emeEnabled){const{sn:i,cc:r}=e;for(let e=0;e{s.setKeyFormat(e)}));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 i,r;t&&e.setKeyFormat(t);const s=e.decryptdata;if(!s){const i=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,rr.KEY_LOAD_ERROR,i))}const n=s.uri;if(!n)return Promise.reject(this.createKeyLoadError(e,rr.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${n}"`)));let a=this.keyUriToKeyInfo[n];if(null!=(i=a)&&i.decryptdata.key)return s.key=a.decryptdata.key,Promise.resolve({frag:e,keyInfo:a});var o;if(null!=(r=a)&&r.keyLoadPromise)switch(null==(o=a.mediaKeySessionContext)?void 0:o.keyStatus){case void 0:case"status-pending":case"usable":case"usable-in-future":return a.keyLoadPromise.then((t=>(s.key=t.keyInfo.decryptdata.key,{frag:e,keyInfo:a})))}switch(a=this.keyUriToKeyInfo[n]={decryptdata:s,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},s.method){case"ISO-23001-7":case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return"identity"===s.keyFormat?this.loadKeyHTTP(a,e):this.loadKeyEME(a,e);case"AES-128":return this.loadKeyHTTP(a,e);default:return Promise.reject(this.createKeyLoadError(e,rr.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${s.method}"`)))}}loadKeyEME(e,t){const i={frag:t,keyInfo:e};if(this.emeController&&this.config.emeEnabled){const t=this.emeController.loadKey(i);if(t)return(e.keyLoadPromise=t.then((t=>(e.mediaKeySessionContext=t,i)))).catch((t=>{throw e.keyLoadPromise=null,t}))}return Promise.resolve(i)}loadKeyHTTP(e,t){const i=this.config,r=new(0,i.loader)(i);return t.keyLoader=e.loader=r,e.keyLoadPromise=new Promise(((s,n)=>{const a={keyInfo:e,frag:t,responseType:"arraybuffer",url:e.decryptdata.uri},o=i.keyLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(e,t,i,r)=>{const{frag:a,keyInfo:o,url:l}=i;if(!a.decryptdata||o!==this.keyUriToKeyInfo[l])return n(this.createKeyLoadError(a,rr.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),r));o.decryptdata.key=a.decryptdata.key=new Uint8Array(e.data),a.keyLoader=null,o.loader=null,s({frag:a,keyInfo:o})},onError:(e,i,r,s)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.KEY_LOAD_ERROR,new Error(`HTTP Error ${e.code} loading key ${e.text}`),r,qi({url:a.url,data:void 0},e)))},onTimeout:(e,i,r)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),r))},onAbort:(e,i,r)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.INTERNAL_ABORTED,new Error("key loading aborted"),r))}};r.load(a,l,h)}))}resetLoader(e){const{frag:t,keyInfo:i,url:r}=e,s=i.loader;t.keyLoader===s&&(t.keyLoader=null,i.loader=null),delete this.keyUriToKeyInfo[r],s&&s.destroy()}}function Sc(){return self.SourceBuffer||self.WebKitSourceBuffer}function bc(){if(!Os())return!1;const e=Sc();return!e||e.prototype&&"function"==typeof e.prototype.appendBuffer&&"function"==typeof e.prototype.remove}class Lc{constructor(e,t,i,r){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=i,this.hls=r}destroy(){this.media=null,this.hls=this.fragmentTracker=null}poll(e,t){const{config:i,media:r,stalled:s}=this;if(null===r)return;const{currentTime:n,seeking:a}=r,o=this.seeking&&!a,l=!this.seeking&&a;if(this.seeking=a,n!==e){if(this.moved=!0,a||(this.nudgeRetry=0),null!==s){if(this.stallReported){const e=self.performance.now()-s;lr.warn(`playback not stuck anymore @${n}, after ${Math.round(e)}ms`),this.stallReported=!1}this.stalled=null}return}if(l||o)return void(this.stalled=null);if(r.paused&&!a||r.ended||0===r.playbackRate||!xa.getBuffered(r).length)return void(this.nudgeRetry=0);const h=xa.bufferInfo(r,n,0),c=h.nextStart||0;if(a){const e=h.len>2,i=!c||t&&t.start<=n||c-n>2&&!this.fragmentTracker.getPartialFragment(n);if(e||i)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var d;if(!(h.len>0)&&!c)return;const e=Math.max(c,h.start||0)-n,t=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,i=(null==t||null==(d=t.details)?void 0:d.live)?2*t.details.targetduration:2,s=this.fragmentTracker.getPartialFragment(n);if(e>0&&(e<=i||s))return void(r.paused||this._trySkipBufferHole(s))}const u=self.performance.now();if(null===s)return void(this.stalled=u);const f=u-s;if(!a&&f>=250&&(this._reportStall(h),!this.media))return;const g=xa.bufferInfo(r,n,i.maxBufferHole);this._tryFixBufferStall(g,f)}_tryFixBufferStall(e,t){const{config:i,fragmentTracker:r,media:s}=this;if(null===s)return;const n=s.currentTime,a=r.getPartialFragment(n);if(a){if(this._trySkipBufferHole(a)||!this.media)return}(e.len>i.maxBufferHole||e.nextStart&&e.nextStart-n1e3*i.highBufferWatchdogPeriod&&(lr.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}_reportStall(e){const{hls:t,media:i,stallReported:r}=this;if(!r&&i){this.stallReported=!0;const r=new Error(`Playback stalling at @${i.currentTime} due to low buffer (${JSON.stringify(e)})`);lr.warn(r.message),t.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_STALLED_ERROR,fatal:!1,error:r,buffer:e.len})}}_trySkipBufferHole(e){const{config:t,hls:i,media:r}=this;if(null===r)return 0;const s=r.currentTime,n=xa.bufferInfo(r,s,0),a=s0&&n.len<1&&r.readyState<3,h=a-s;if(h>0&&(o||l)){if(h>t.maxBufferHole){const{fragmentTracker:t}=this;let i=!1;if(0===s){const e=t.getAppendedFrag(0,hn);e&&a1?(e=0,this.bitrateTest=!0):e=i.firstAutoLevel),i.nextLoadLevel=e,this.level=i.loadLevel,this.loadedmetadata=!1}t>0&&-1===e&&(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t),this.state=qa,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=Ya}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case so:{const{levels:e,level:t}=this,i=null==e?void 0:e[t],r=null==i?void 0:i.details;if(r&&(!r.live||this.levelLastLoaded===i)){if(this.waitForCdnTuneIn(r))break;this.state=qa;break}if(this.hls.nextLoadLevel!==this.level){this.state=qa;break}break}case Qa:{var e;const t=self.performance.now(),i=this.retryDate;if(!i||t>=i||null!=(e=this.media)&&e.seeking){const{levels:e,level:t}=this,i=null==e?void 0:e[t];this.resetStartWhenNotLoaded(i||null),this.state=qa}}}this.state===qa&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){super.onTickEnd(),this.checkBuffer(),this.checkFragmentChanged()}doTickIdle(){const{hls:e,levelLastLoaded:t,levels:i,media:r}=this;if(null===t||!r&&(this.startFragRequested||!e.config.startFragPrefetch))return;if(this.altAudio&&this.audioOnly)return;const s=e.nextLoadLevel;if(null==i||!i[s])return;const n=i[s],a=this.getMainFwdBufferInfo();if(null===a)return;const o=this.getLevelDetails();if(o&&this._streamEnded(a,o)){const e={};return this.altAudio&&(e.type="video"),this.hls.trigger(tr.BUFFER_EOS,e),void(this.state=to)}e.loadLevel!==s&&-1===e.manualLevel&&this.log(`Adapting to level ${s} from level ${this.level}`),this.level=e.nextLoadLevel=s;const l=n.details;if(!l||this.state===so||l.live&&this.levelLastLoaded!==n)return this.level=s,void(this.state=so);const h=a.len,c=this.getMaxBufferLength(n.maxBitrate);if(h>=c)return;this.backtrackFragment&&this.backtrackFragment.start>a.end&&(this.backtrackFragment=null);const d=this.backtrackFragment?this.backtrackFragment.start:a.end;let u=this.getNextFragment(d,l);if(this.couldBacktrack&&!this.fragPrevious&&u&&"initSegment"!==u.sn&&this.fragmentTracker.getState(u)!==Aa){var f;const e=(null!=(f=this.backtrackFragment)?f:u).sn-l.startSN,t=l.fragments[e-1];t&&u.cc===t.cc&&(u=t,this.fragmentTracker.removeFragment(t))}else this.backtrackFragment&&a.len&&(this.backtrackFragment=null);if(u&&this.isLoopLoading(u,d)){if(!u.gap){const e=this.audioOnly&&!this.altAudio?mr:pr,t=(e===pr?this.videoBuffer:this.mediaBuffer)||this.media;t&&this.afterBufferFlushed(t,e,hn)}u=this.getNextFragmentLoopLoading(u,l,a,hn,c)}u&&(!u.initSegment||u.initSegment.data||this.bitrateTest||(u=u.initSegment),this.loadFragment(u,n,d))}loadFragment(e,t,i){const r=this.fragmentTracker.getState(e);this.fragCurrent=e,r===ba||r===wa?"initSegment"===e.sn?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,i)):this.clearTrackerIfNeeded(e)}getBufferedFrag(e){return this.fragmentTracker.getBufferedFrag(e,hn)}followingBufferedFrag(e){return e?this.getBufferedFrag(e.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:e,media:t}=this;if(null!=t&&t.readyState){let i;const r=this.getAppendedFrag(t.currentTime);r&&r.start>1&&this.flushMainBuffer(0,r.start-1);const s=this.getLevelDetails();if(null!=s&&s.live){const e=this.getMainFwdBufferInfo();if(!e||e.len<2*s.targetduration)return}if(!t.paused&&e){const t=e[this.hls.nextLoadLevel],r=this.fragLastKbps;i=r&&this.fragCurrent?this.fragCurrent.duration*t.maxBitrate/(1e3*r)+1:0}else i=0;const n=this.getBufferedFrag(t.currentTime+i);if(n){const e=this.followingBufferedFrag(n);if(e){this.abortCurrentFrag();const t=e.maxStartPTS?e.maxStartPTS:e.start,i=e.duration,r=Math.max(n.end,t+Math.min(Math.max(i-this.config.maxFragLookUpTolerance,i*(this.couldBacktrack?.5:.125)),i*(this.couldBacktrack?.75:.25)));this.flushMainBuffer(r,Number.POSITIVE_INFINITY)}}}}abortCurrentFrag(){const e=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,e&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.state){case za:case Xa:case Qa:case Za:case eo:this.state=qa}this.nextLoadPosition=this.getLoadPosition()}flushMainBuffer(e,t){super.flushMainBuffer(e,t,this.altAudio?"video":null)}onMediaAttached(e,t){super.onMediaAttached(e,t);const i=t.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),i.addEventListener("playing",this.onvplaying),i.addEventListener("seeked",this.onvseeked),this.gapController=new Lc(this.config,i,this.fragmentTracker,this.hls)}onMediaDetaching(){const{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(){const e=this.media,t=e?e.currentTime:null;Ji(t)&&this.log(`Media seeked to ${t.toFixed(3)}`);const i=this.getMainFwdBufferInfo();null!==i&&0!==i.len?this.tick():this.warn(`Main forward buffer length on "seeked" event ${i?i.len:"empty"})`)}onManifestLoading(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(tr.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 i=!1,r=!1;t.levels.forEach((e=>{const t=e.audioCodec;t&&(i=i||-1!==t.indexOf("mp4a.40.2"),r=r||-1!==t.indexOf("mp4a.40.5"))})),this.audioCodecSwitch=i&&r&&!function(){var e;const t=Sc();return"function"==typeof(null==t||null==(e=t.prototype)?void 0:e.changeType)}(),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){const{levels:i}=this;if(!i||this.state!==qa)return;const r=i[t.level];(!r.details||r.details.live&&this.levelLastLoaded!==r||this.waitForCdnTuneIn(r.details))&&(this.state=so)}onLevelLoaded(e,t){var i;const{levels:r}=this,s=t.level,n=t.details,a=n.totalduration;if(!r)return void this.warn(`Levels were reset while loading level ${s}`);this.log(`Level ${s} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""}, cc [${n.startCC}, ${n.endCC}] duration:${a}`);const o=r[s],l=this.fragCurrent;!l||this.state!==Xa&&this.state!==Qa||l.level!==t.level&&l.loader&&this.abortCurrentFrag();let h=0;if(n.live||null!=(i=o.details)&&i.live){var c;if(this.checkLiveUpdate(n),n.deltaUpdateFailed)return;h=this.alignPlaylists(n,o.details,null==(c=this.levelLastLoaded)?void 0:c.details)}if(o.details=n,this.levelLastLoaded=o,this.hls.trigger(tr.LEVEL_UPDATED,{details:n,level:s}),this.state===so){if(this.waitForCdnTuneIn(n))return;this.state=qa}this.startFragRequested?n.live&&this.synchronizeToLiveEdge(n):this.setStartPosition(n,h),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:r,payload:s}=e,{levels:n}=this;if(!n)return void this.warn(`Levels were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const a=n[i.level],o=a.details;if(!o)return this.warn(`Dropping fragment ${i.sn} of level ${i.level} after level details were reset`),void this.fragmentTracker.removeFragment(i);const l=a.videoCodec,h=o.PTSKnown||!o.live,c=null==(t=i.initSegment)?void 0:t.data,d=this._getAudioCodec(a),u=this.transmuxer=this.transmuxer||new gl(this.hls,hn,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),f=r?r.index:-1,g=-1!==f,m=new Ca(i.level,i.sn,i.stats.chunkCount,s.byteLength,f,g),p=this.initPTS[i.cc];u.push(s,c,d,l,i,r,o.totalduration,h,m,p)}onAudioTrackSwitching(e,t){const i=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;const e=this.fragCurrent;e&&(this.log("Switching to main audio track, cancel main fragment load"),e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();const e=this.hls;i&&(e.trigger(tr.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),e.trigger(tr.AUDIO_TRACK_SWITCHED,t)}}onAudioTrackSwitched(e,t){const i=t.id,r=!!this.hls.audioTracks[i].url;if(r){const e=this.videoBuffer;e&&this.mediaBuffer!==e&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=e)}this.altAudio=r,this.tick()}onBufferCreated(e,t){const i=t.tracks;let r,s,n=!1;for(const e in i){const t=i[e];if("main"===t.id){if(s=e,r=t,"video"===e){const t=i[e];t&&(this.videoBuffer=t.buffer)}}else n=!0}n&&r?(this.log(`Alternate track found, use ${s}.buffered to schedule main fragment loading`),this.mediaBuffer=r.buffer):this.mediaBuffer=this.media}onFragBuffered(e,t){const{frag:i,part:r}=t;if(i&&i.type!==hn)return;if(this.fragContextChanged(i))return this.warn(`Fragment ${i.sn}${r?" p: "+r.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}`),void(this.state===eo&&(this.state=qa));const s=r?r.stats:i.stats;this.fragLastKbps=Math.round(8*s.total/(s.buffering.end-s.loading.first)),"initSegment"!==i.sn&&(this.fragPrevious=i),this.fragBufferedComplete(i,r)}onError(e,t){var i;if(t.fatal)this.state=io;else switch(t.details){case rr.FRAG_GAP:case rr.FRAG_PARSING_ERROR:case rr.FRAG_DECRYPT_ERROR:case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(hn,t);break;case rr.LEVEL_LOAD_ERROR:case rr.LEVEL_LOAD_TIMEOUT:case rr.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==so||(null==(i=t.context)?void 0:i.type)!==an||(this.state=qa);break;case rr.BUFFER_APPEND_ERROR:case rr.BUFFER_FULL_ERROR:if(!t.parent||"main"!==t.parent)return;if(t.details===rr.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case rr.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}checkBuffer(){const{media:e,gapController:t}=this;if(e&&t&&e.readyState){if(this.loadedmetadata||!xa.getBuffered(e).length){const e=this.state!==qa?this.fragCurrent:null;t.poll(this.lastCurrentTime,e)}this.lastCurrentTime=e.currentTime}}onFragLoadEmergencyAborted(){this.state=qa,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()}onBufferFlushed(e,{type:t}){if(t!==mr||this.audioOnly&&!this.altAudio){const e=(t===pr?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(e,t,hn),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(){const{media:e}=this;if(!e)return;const t=e.currentTime;let i=this.startPosition;if(i>=0&&t0&&(s{const{hls:r}=this;if(!i||this.fragContextChanged(e))return;t.fragmentError=0,this.state=qa,this.startFragRequested=!1,this.bitrateTest=!1;const s=e.stats;s.parsing.start=s.parsing.end=s.buffering.start=s.buffering.end=self.performance.now(),r.trigger(tr.FRAG_LOADED,i),e.bitrateTest=!1}))}_handleTransmuxComplete(e){var t;const i="main",{hls:r}=this,{remuxResult:s,chunkMeta:n}=e,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{video:c,text:d,id3:u,initSegment:f}=s,{details:g}=h,m=this.altAudio?void 0:s.audio;if(this.fragContextChanged(o))this.fragmentTracker.removeFragment(o);else{if(this.state=Za,f){if(null!=f&&f.tracks){const e=o.initSegment||o;this._bufferInitSegment(h,f.tracks,e,n),r.trigger(tr.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:f.tracks})}const e=f.initPTS,t=f.timescale;Ji(e)&&(this.initPTS[o.cc]={baseTime:e,timescale:t},r.trigger(tr.INIT_PTS_FOUND,{frag:o,id:i,initPTS:e,timescale:t}))}if(c&&g&&"initSegment"!==o.sn){const e=g.fragments[o.sn-1-g.startSN],t=o.sn===g.startSN,i=!e||o.cc>e.cc;if(!1!==s.independent){const{startPTS:e,endPTS:r,startDTS:s,endDTS:a}=c;if(l)l.elementaryStreams[c.type]={startPTS:e,endPTS:r,startDTS:s,endDTS:a};else if(c.firstKeyFrame&&c.independent&&1===n.id&&!i&&(this.couldBacktrack=!0),c.dropped&&c.independent){const s=this.getMainFwdBufferInfo(),n=(s?s.end:this.getLoadPosition())+this.config.maxBufferHole,l=c.firstKeyFramePTS?c.firstKeyFramePTS:e;if(!t&&n2&&(o.gap=!0);o.setElementaryStreamInfo(c.type,e,r,s,a),this.backtrackFragment&&(this.backtrackFragment=o),this.bufferFragmentData(c,o,l,n,t||i)}else{if(!t&&!i)return void this.backtrack(o);o.gap=!0}}if(m){const{startPTS:e,endPTS:t,startDTS:i,endDTS:r}=m;l&&(l.elementaryStreams[mr]={startPTS:e,endPTS:t,startDTS:i,endDTS:r}),o.setElementaryStreamInfo(mr,e,t,i,r),this.bufferFragmentData(m,o,l,n)}if(g&&null!=u&&null!=(t=u.samples)&&t.length){const e={id:i,frag:o,details:g,samples:u.samples};r.trigger(tr.FRAG_PARSING_METADATA,e)}if(g&&d){const e={id:i,frag:o,details:g,samples:d.samples};r.trigger(tr.FRAG_PARSING_USERDATA,e)}}}_bufferInitSegment(e,t,i,r){if(this.state!==Za)return;this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&delete t.audio;const{audio:s,video:n,audiovideo:a}=t;if(s){let t=e.audioCodec;const i=navigator.userAgent.toLowerCase();if(this.audioCodecSwitch){t&&(t=-1!==t.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5");const e=s.metadata;e&&"channelCount"in e&&1!==(e.channelCount||1)&&-1===i.indexOf("firefox")&&(t="mp4a.40.5")}t&&-1!==t.indexOf("mp4a.40.5")&&-1!==i.indexOf("android")&&"audio/mpeg"!==s.container&&(t="mp4a.40.2",this.log(`Android: force audio codec to ${t}`)),e.audioCodec&&e.audioCodec!==t&&this.log(`Swapping manifest audio codec "${e.audioCodec}" for "${t}"`),s.levelCodec=t,s.id="main",this.log(`Init audio buffer, container:${s.container}, codecs[selected/level/parsed]=[${t||""}/${e.audioCodec||""}/${s.codec}]`)}n&&(n.levelCodec=e.videoCodec,n.id="main",this.log(`Init video buffer, container:${n.container}, codecs[level/parsed]=[${e.videoCodec||""}/${n.codec}]`)),a&&this.log(`Init audiovideo buffer, container:${a.container}, codecs[level/parsed]=[${e.codecs}/${a.codec}]`),this.hls.trigger(tr.BUFFER_CODECS,t),Object.keys(t).forEach((e=>{const s=t[e].initSegment;null!=s&&s.byteLength&&this.hls.trigger(tr.BUFFER_APPENDING,{type:e,data:s,frag:i,part:null,chunkMeta:r,parent:i.type})})),this.tickImmediate()}getMainFwdBufferInfo(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,hn)}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=qa}checkFragmentChanged(){const e=this.media;let t=null;if(e&&e.readyState>1&&!1===e.seeking){const i=e.currentTime;if(xa.isBuffered(e,i)?t=this.getAppendedFrag(i):xa.isBuffered(e,i+.1)&&(t=this.getAppendedFrag(i+.1)),t){this.backtrackFragment=null;const e=this.fragPlaying,i=t.level;e&&t.sn===e.sn&&e.level===i||(this.fragPlaying=t,this.hls.trigger(tr.FRAG_CHANGED,{frag:t}),e&&e.level===i||this.hls.trigger(tr.LEVEL_SWITCHED,{level:i}))}}}get nextLevel(){const e=this.nextBufferedFrag;return e?e.level:-1}get currentFrag(){const e=this.media;return e?this.fragPlaying||this.getAppendedFrag(e.currentTime):null}get currentProgramDateTime(){const e=this.media;if(e){const t=e.currentTime,i=this.currentFrag;if(i&&Ji(t)&&Ji(i.programDateTime)){const e=i.programDateTime+1e3*(t-i.start);return new Date(e)}}return null}get currentLevel(){const e=this.currentFrag;return e?e.level:-1}get nextBufferedFrag(){const e=this.currentFrag;return e?this.followingBufferedFrag(e):null}get forceStartLoad(){return this._forceStartLoad}}class Ac{static get version(){return"1.5.11"}static isMSESupported(){return bc()}static isSupported(){return function(){if(!bc())return!1;const e=Os();return"function"==typeof(null==e?void 0:e.isTypeSupported)&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some((t=>e.isTypeSupported(Us(t,"video"))))||["mp4a.40.2","fLaC"].some((t=>e.isTypeSupported(Us(t,"audio")))))}()}static getMediaSource(){return Os()}static get Events(){return tr}static get ErrorTypes(){return ir}static get ErrorDetails(){return rr}static get DefaultConfig(){return Ac.defaultConfig?Ac.defaultConfig:gc}static set DefaultConfig(e){Ac.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 fl,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,function(e,t){if("object"==typeof console&&!0===e||"object"==typeof e){or(e,"debug","log","info","warn","error");try{ar.log(`Debug logs enabled for "${t}" in hls.js version 1.5.11`)}catch(e){ar=nr}}else ar=nr}(e.debug||!1,"Hls instance");const t=this.config=function(e,t){if((t.liveSyncDurationCount||t.liveMaxLatencyDurationCount)&&(t.liveSyncDuration||t.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==t.liveMaxLatencyDurationCount&&(void 0===t.liveSyncDurationCount||t.liveMaxLatencyDurationCount<=t.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==t.liveMaxLatencyDuration&&(void 0===t.liveSyncDuration||t.liveMaxLatencyDuration<=t.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');const i=mc(e),r=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach((e=>{const s=`${"level"===e?"playlist":e}LoadPolicy`,n=void 0===t[s],a=[];r.forEach((r=>{const o=`${e}Loading${r}`,l=t[o];if(void 0!==l&&n){a.push(o);const e=i[s].default;switch(t[s]={default:e},r){case"TimeOut":e.maxLoadTimeMs=l,e.maxTimeToFirstByteMs=l;break;case"MaxRetry":e.errorRetry.maxNumRetry=l,e.timeoutRetry.maxNumRetry=l;break;case"RetryDelay":e.errorRetry.retryDelayMs=l,e.timeoutRetry.retryDelayMs=l;break;case"MaxRetryTimeout":e.errorRetry.maxRetryDelayMs=l,e.timeoutRetry.maxRetryDelayMs=l}}})),a.length&&lr.warn(`hls.js config: "${a.join('", "')}" setting(s) are deprecated, use "${s}": ${JSON.stringify(t[s])}`)})),qi(qi({},i),t)}(Ac.DefaultConfig,e);this.userConfig=e,t.progressive&&pc(t);const{abrController:i,bufferController:r,capLevelController:s,errorController:n,fpsController:a}=t,o=new n(this),l=this.abrController=new i(this),h=this.bufferController=new r(this),c=this.capLevelController=new s(this),d=new a(this),u=new gn(this),f=new kn(this),g=t.contentSteeringController,m=g?new g(this):null,p=this.levelController=new yc(this,m),v=new Ra(this),y=new Ec(this.config),T=this.streamController=new wc(this,v,y);c.setStreamController(T),d.setStreamController(T);const E=[u,p,T];m&&E.splice(1,0,m),this.networkControllers=E;const S=[l,h,c,d,f,v];this.audioTrackController=this.createController(t.audioTrackController,E);const b=t.audioStreamController;b&&E.push(new b(this,v,y)),this.subtitleTrackController=this.createController(t.subtitleTrackController,E);const L=t.subtitleStreamController;L&&E.push(new L(this,v,y)),this.createController(t.timelineController,S),y.emeController=this.emeController=this.createController(t.emeController,S),this.cmcdController=this.createController(t.cmcdController,S),this.latencyController=this.createController(_n,S),this.coreComponents=S,E.push(o);const w=o.onErrorOut;"function"==typeof w&&this.on(tr.ERROR,w,o)}createController(e,t){if(e){const i=new e(this);return t&&t.push(i),i}return null}on(e,t,i=this){this._emitter.on(e,t,i)}once(e,t,i=this){this._emitter.once(e,t,i)}removeAllListeners(e){this._emitter.removeAllListeners(e)}off(e,t,i=this,r){this._emitter.off(e,t,i,r)}listeners(e){return this._emitter.listeners(e)}emit(e,t,i){return this._emitter.emit(e,t,i)}trigger(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(t){if(lr.error("An internal error happened while handling event "+e+'. Error message: "'+t.message+'". Here is a stacktrace:',t),!this.triggeringException){this.triggeringException=!0;const i=e===tr.ERROR;this.trigger(tr.ERROR,{type:ir.OTHER_ERROR,details:rr.INTERNAL_EXCEPTION,fatal:i,event:e,error:t}),this.triggeringException=!1}}return!1}listenerCount(e){return this._emitter.listenerCount(e)}destroy(){lr.log("destroy"),this.trigger(tr.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((e=>e.destroy())),this.networkControllers.length=0,this.coreComponents.forEach((e=>e.destroy())),this.coreComponents.length=0;const e=this.config;e.xhrSetup=e.fetchSetup=void 0,this.userConfig=null}attachMedia(e){lr.log("attachMedia"),this._media=e,this.trigger(tr.MEDIA_ATTACHING,{media:e})}detachMedia(){lr.log("detachMedia"),this.trigger(tr.MEDIA_DETACHING,void 0),this._media=null}loadSource(e){this.stopLoad();const t=this.media,i=this.url,r=this.url=Wi.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,lr.log(`loadSource:${r}`),t&&i&&(i!==r||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(t)),this.trigger(tr.MANIFEST_LOADING,{url:e})}startLoad(e=-1){lr.log(`startLoad(${e})`),this.started=!0,this.networkControllers.forEach((t=>{t.startLoad(e)}))}stopLoad(){lr.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(){lr.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){lr.log("recoverMediaError");const e=this._media;this.detachMedia(),e&&this.attachMedia(e)}removeLevel(e){this.levelController.removeLevel(e)}get levels(){const e=this.levelController.levels;return e||[]}get currentLevel(){return this.streamController.currentLevel}set currentLevel(e){lr.log(`set currentLevel:${e}`),this.levelController.manualLevel=e,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(e){lr.log(`set nextLevel:${e}`),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(e){lr.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){lr.log(`set firstLevel:${e}`),this.levelController.firstLevel=e}get startLevel(){const e=this.levelController.startLevel;return-1===e&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:e}set startLevel(e){lr.log(`set startLevel:${e}`),-1!==e&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(e){const t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimate():NaN}set bandwidthEstimate(e){this.abrController.resetEstimator(e)}get ttfbEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimateTTFB():NaN}set autoLevelCapping(e){this._autoLevelCapping!==e&&(lr.log(`set autoLevelCapping:${e}`),this._autoLevelCapping=e,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(e){(function(e){return Dn.indexOf(e)>-1})(e)&&this._maxHdcpLevel!==e&&(this._maxHdcpLevel=e,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return-1===this.levelController.manualLevel}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:e,config:{minAutoBitrate:t}}=this;if(!e)return 0;const i=e.length;for(let r=0;r=t)return r;return 0}get maxAutoLevel(){const{levels:e,autoLevelCapping:t,maxHdcpLevel:i}=this;let r;if(r=-1===t&&null!=e&&e.length?e.length-1:t,i)for(let t=r;t--;){const r=e[t].attrs["HDCP-LEVEL"];if(r&&r<=i)return t}return r}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 null==(t=this.audioTrackController)?void 0:t.setAudioOption(e)}setSubtitleOption(e){var t;return null==(t=this.subtitleTrackController)||t.setSubtitleOption(e),null}get allAudioTracks(){const e=this.audioTrackController;return e?e.allAudioTracks:[]}get audioTracks(){const e=this.audioTrackController;return e?e.audioTracks:[]}get audioTrack(){const e=this.audioTrackController;return e?e.audioTrack:-1}set audioTrack(e){const t=this.audioTrackController;t&&(t.audioTrack=e)}get allSubtitleTracks(){const e=this.subtitleTrackController;return e?e.allSubtitleTracks:[]}get subtitleTracks(){const e=this.subtitleTrackController;return e?e.subtitleTracks:[]}get subtitleTrack(){const e=this.subtitleTrackController;return e?e.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(e){const t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}get subtitleDisplay(){const e=this.subtitleTrackController;return!!e&&e.subtitleDisplay}set subtitleDisplay(e){const t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(e){this.config.lowLatencyMode=e}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}}function Rc(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e.$video.volume=e._options.volume)}),1e3)})),e.event.emit("parsed")}))}))}else if(this.$video.canPlayType("application/vnd.apple.mpegurl")){this.logger.log("Browser support application/vnd.apple.mpegurl : ",this.$video.canPlayType("application/vnd.apple.mpegurl")),this.$video.src=this._options.url;var i=!1;this.$video.addEventListener("canplay",(function(){!i&&e._options.autoPlay&&setTimeout((function(){e.$video.play().then((function(){e.logger.log("autoPlay video!"),setTimeout((function(){e._options.volume>0&&e.setVolume(e._options.volume)}),1e3),i=!0}))}),200)}))}else this.logger.warn("Browser not support hls")},i.isPlayingState=function(){return!this.$video.paused},i.play=function(){if(this.isPlayingState())return Promise.resolve();if(this._options.isLive&&(this.$video.buffered.length>=1&&this.$video.buffered.end(0)>1)){var e=this.$video.buffered.end(0)-1;this.$video.currentTime=e}return this.$video.play()},i.pause=function(){this.$video.pause()},i.setVolume=function(e){this.$video.muted&&(this.$video.muted=!1),this._volume=+(e||0),0===this._volume&&(this.$video.muted=!0),this.$video.volume=this._volume},i.destroy=function(){this.$video&&this.$video.pause(),this._hls&&(this._hls.destroy(),this._hls=null),e.prototype.destroy.call(this)},i._onEvent=function(){var e;(e=this).$video&&(e.$video.addEventListener("canplay",(function(){e.event.emit("canplay")})),e.$video.addEventListener("loadeddata",(function(){e.event.emit("loadeddata")})),e.$video.addEventListener("volumechange",(function(){e.event.emit("volumechange",{data:e.$video.volume})})),e.$video.addEventListener("waiting",(function(){e.event.emit("waiting")})),e.$video.addEventListener("timeupdate",(function(){var t;null==(t=e.event)||t.emit("timeupdate")})),e.$video.addEventListener("seeking",(function(){e.event.emit("seeking",{data:e.$video.currentTime})})),e.$video.addEventListener("seeked",(function(){e.event.emit("seeked")})),e.$video.addEventListener("abort",(function(){e.event.emit("abort")})),e.$video.addEventListener("error",(function(){var t;null==(t=e.event)||t.emit("error",{data:e.$video.error})})),e.$video.addEventListener("ended",(function(){e.event.emit("ended")})))},Rc(t,[{key:"volume",get:function(){return this._volume},set:function(e){this.setVolume(e)}}]),t}(Ri);var xc="wasm_loaded",Cc="wasm_failed",Ic="init";function Pc(e,t){return Pc=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Pc(e,t)}var Oc=function(e){function t(t){var i;return void 0===t&&(t={}),i=e.call(this,t)||this,t.url=function(e,t){void 0===t&&(t=["h264"]);var i=(t||["h264"]).reduce((function(e,t){return t=t.toLowerCase(),e+(Xt[t]||0)}),0),r=e.split("?")[0],s=e.split("?")[1];return s=(s||"").split("&").filter((function(e){return!/^vc=\d?/.test(e)})).join("&"),r+"?"+s+(s?"&":"")+"vc="+i}(null==t?void 0:t.url,["h264","h265"]),function(e,t){if(((null==t?void 0:t.volume)||0)>1?e._volume=1:((null==t?void 0:t.volume)||0)<=0?e._volume=0:e._volume=+((null==t?void 0:t.volume)||0),t.volume=e._volume,e.options=zt({},wi,t),"string"!=typeof e.options.id)throw new Error("id is required!");e.logger=z(e.options.loggerOptions),e.event=new ei,e.logger.log("HlsPlayer version: ",Uc.version),e.logger.log("HlsPlayer options: ",e.options),e.options.logger=e.logger}(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(i),t),i._containerClassName=Li+"-container",i._render(),i}!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Pc(e,t)}(t,e);var i=t.prototype;return i._render=function(){this.$container.classList.add(this._containerClassName)},i.destroy=function(){this.$container&&(this.$container.classList.remove(this._containerClassName),this.$container.innerHTML="",this.$container=null)},t}(Si);function Mc(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e=!0),this.playParam={durationMs:0,fps:0,sampleRate:0,size:{width:0,height:0},audioNone:e,videoCodec:T},!A())throw new Error("Browser not support WebAssembly!");this._onWorkerMessage()},i.play=function(){if(Ui.send(1,{name:"play"}),null===this.player)return Promise.resolve();if(this.playParam.videoCodec===T){var e={seekPos:0,isLive:this.options.isLive,accurateSeek:!0,seekEvent:!1,realPlay:!0};return this.player.play(e)}return this.player.play()},i.pause=function(){return Ui.send(1,{name:"pause"}),null!==this.player&&(this.player.pause(),!0)},i.destroy=function(){var t,i;return Ui.send(1,{name:"destroy"}),void 0!==this.player&&null!==this.player&&(this.playParam.videoCodec===T&&this._m3u8Obj&&(this._m3u8Obj.destroy(),this._m3u8Obj=null),this.player.destroy(),this._decoderWorker&&(this._decoderWorker.postMessage(P(B)),this._decoderWorker.terminate(),this._decoderWorker=null),this.logger.log("destroy"),null==(i=this.event)||null==(t=i.emit)||t.call(i,"destroy"),this.player=null,e.prototype.destroy.call(this),!0)},i.isPlaying=function(){return null!==this.player&&this.player.isPlayingState()},i.setVolume=function(e){var t;(e=+e)>1||e<0?this.logger.warn("volume volume value 0.0 ~ 1.0!"):((t=this).player||(t.event.emit("playerIsNull"),t.logger.warn("Player instance does not exist!"),0))&&(this.player.setVolume(e),this.event.emit("volumeChange",{data:e}))},i.getVersion=function(){return Ui.send(1,{name:"getVersion"}),"0.1.0-beta.1"},i._m3u8Entry=function(){var e=this;this._m3u8Obj=new Vi({logger:this.logger,decoderWorker:this._decoderWorker,event:this.event}),this._m3u8Obj.bindReady(this),this._m3u8Obj.onFinished=function(e,t){},this._m3u8Obj.onCacheProcess=function(t){e.options.isLive||null==e.onCacheProcess||e.onCacheProcess.call(e,t)},this._m3u8Obj.onDemuxed=this._checkPlayer.bind(this),this._m3u8Obj.onSamples=this._hlsOnSamples.bind(this),this._m3u8Obj.demux(this.url)},i._checkPlayer=function(e,t){var i=this;if(null==i.player){var r,s,n;if(!(null==i||null==(r=i._m3u8Obj)?void 0:r.isHevcParam)||t)return null==i||null==(n=i._m3u8Obj)||null==(s=n.destroy)||s.call(n),i._m3u8Obj=null,this._decoderWorker.terminate(),this._decoderWorker=null,void(i.player=new Dc(Fc({},this.options,{event:this.event,logger:this.logger})));var a=i._m3u8Obj.getACodec(),o=i._m3u8Obj.getFPS(),l=i._m3u8Obj.getSampleRate(),h=i._m3u8Obj.getSize(),c=!1;c=i._m3u8Obj.getSampleChannel()<=0||""===a,i._softPlayer(0,o,l,h,c)}},i._hlsOnSamples=function(e,t){var i,r,s,n=this;if(t.video)null==(s=n.player)||null==(r=s.appendHevcFrame)||r.call(s,t);else if(!(null==(i=n._m3u8Obj)?void 0:i.audioNone)){var a,o;null==(o=n.player)||null==(a=o.appendAACFrame)||a.call(o,t)}},i._onWorkerMessage=function(){var e=this,i=this;this._decoderWorker.onmessage=function(r){var s=r.data;switch(s.cmd){case O:t.__HLS_WASM_DecoderState__=0;break;case M:t.__HLS_WASM_DecoderState__=1,e.logger.log("Wasm already init over!"),i.event.emit(xc),i._decoderWorker.postMessage(P("registerWasmPlayer")),i._m3u8Entry();break;case F:t.__HLS_WASM_DecoderState__=-1,e.logger.error("Wasm init failed!",s),i.event.emit(Cc,s),Ui.send("wasm",{name:"wasm loading failed"}),i._checkPlayer(!0)}}},i._softPlayer=function(e,t,i,r,s,n){var a,o,l=this;void 0===s&&(s=!1),void 0===n&&(n=null);var c,d=this;(this.playParam.durationMs=e,this.playParam.fps=t,this.playParam.sampleRate=i,this.playParam.size=r,this.playParam.audioNone=s,this.playParam.videoCodec=n||T,this.logger.log("this.playParam: ",this.playParam),this.logger.log("start init soft player"),this.player=new xi(Fc({},d.options,{sampleRate:i,fps:t,appendHevcType:h,fixed:!1,id:this.options.id,audioNone:s,videoCodec:n,logger:this.logger,event:this.event,decoderWorker:this._decoderWorker})),this.player.onPlayingTime=function(e){var t;null==d||null==(t=d.onPlayTime)||t.call(d,e)},this.player.onPlayingFinish=function(){var e,t;(l.pause(),null!=l.onPlayFinish)&&(null==(t=l)||null==(e=t.onPlayFinish)||e.call(t))},this.player.onLoadCache=function(){var e,t;null==(t=l)||null==(e=t.onLoadCache)||e.call(t)},this.player.onLoadCacheFinished=function(){var e,t;null==(t=l)||null==(e=t.onLoadCacheFinished)||e.call(t)},null==(a=d.player)||a.setDurationMs(e),null==(o=d.player)||o.setFrameRate(t),null!=d.onReadyShowDone)&&(null==d||null==(c=d.onReadyShowDone)||c.call(d));this.event.emit("parsed"),this.player&&this.options.autoPlay&&this.play()},t.supportType=function(e){if(Ui.send(1,{name:"supportType",options:e}),"hls"===e.type)return!0;if(e.url){var t=e.url;t.startsWith("http://")||t.startsWith("https://")||(t=/^\/\//.test(t)?"http:"+t:location.origin+location.pathname+t);try{return/\.m3u8$/i.test(new URL(t).pathname)}catch(e){}}return!1},Mc(t,[{key:"volume",get:function(){return this.player?this.player.volume:this.options.volume},set:function(e){e=+e,this.setVolume(e)}}]),t}(Oc);return Uc.__HLS_WASM_DecoderState__=0,Uc.version="0.1.0-beta.1",Uc})); +const bl={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},Ll=e=>String.fromCharCode(bl[e]||e),wl=15,Al=100,Rl={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},kl={17:2,18:4,21:6,22:8,23:10,19:13,20:15},_l={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},Dl={25:2,26:4,29:6,30:8,31:10,27:13,28:15},xl=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];class Cl{constructor(){this.time=null,this.verboseLevel=0}log(e,t){if(this.verboseLevel>=e){const i="function"==typeof t?t():t;lr.log(`${this.time} [${e}] ${i}`)}}}const Il=function(e){const t=[];for(let i=0;iAl&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=Al)}moveCursor(e){const t=this.pos+e;if(e>1)for(let e=this.pos+1;e=144&&this.backSpace();const t=Ll(e);this.pos>=Al?this.logger.log(0,(()=>"Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!")):(this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1))}clearFromPos(e){let t;for(t=e;t"pacData = "+JSON.stringify(e)));let t=e.row-1;if(this.nrRollUpRows&&t"bkgData = "+JSON.stringify(e))),this.backSpace(),this.setPen(e),this.insertChar(32)}setRollUpRows(e){this.nrRollUpRows=e}rollUp(){if(null===this.nrRollUpRows)return void this.logger.log(3,"roll_up but nrRollUpRows not set yet");this.logger.log(1,(()=>this.getDisplayText()));const e=this.currRow+1-this.nrRollUpRows,t=this.rows.splice(e,1)[0];t.clear(),this.rows.splice(this.currRow,0,t),this.logger.log(2,"Rolling up")}getDisplayText(e){e=e||!1;const t=[];let i="",r=-1;for(let i=0;i0&&(i=e?"["+t.join(" | ")+"]":t.join("\n")),i}getTextAndFormat(){return this.rows}}class Nl{constructor(e,t,i){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 Fl(i),this.nonDisplayedMemory=new Fl(i),this.lastOutputScreen=new Fl(i),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=i}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],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)),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)}insertChars(e){for(let t=0;tt+": "+this.writeScreen.getDisplayText(!0))),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(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"),"MODE_TEXT"!==this.mode&&(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"),"MODE_POP-ON"===this.mode){const e=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=e,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,(()=>"DISP: "+this.displayedMemory.getDisplayText()))}this.outputDataUpdate(!0)}ccTO(e){this.logger.log(2,"TO("+e+") - Tab Offset"),this.writeScreen.moveCursor(e)}ccMIDROW(e){const t={flash:!1};if(t.underline=e%2==1,t.italics=e>=46,t.italics)t.foreground="white";else{const i=Math.floor(e/2)-16,r=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=r[i]}this.logger.log(2,"MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)}outputDataUpdate(e=!1){const t=this.logger.time;null!==t&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?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.cueStartTime=t,this.lastOutputScreen.copy(this.displayedMemory))}cueSplitAtTime(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))}}class Ul{constructor(e,t,i){this.channels=void 0,this.currentChannel=0,this.cmdHistory={a:null,b:null},this.logger=void 0;const r=this.logger=new Cl;this.channels=[null,new Nl(e,t,r),new Nl(e+1,i,r)]}getHandler(e){return this.channels[e].getHandler()}setHandler(e,t){this.channels[e].setHandler(t)}addData(e,t){this.logger.time=e;for(let e=0;e"["+Il([t[e],t[e+1]])+"] -> ("+Il([i,r])+")"));const a=this.cmdHistory;if(i>=16&&i<=31){if($l(i,r,a)){Bl(null,null,a),this.logger.log(3,(()=>"Repeated command ("+Il([i,r])+") is dropped"));continue}Bl(i,r,this.cmdHistory),s=this.parseCmd(i,r),s||(s=this.parseMidrow(i,r)),s||(s=this.parsePAC(i,r)),s||(s=this.parseBackgroundAttributes(i,r))}else Bl(null,null,a);if(!s&&(n=this.parseChars(i,r),n)){const e=this.currentChannel;if(e&&e>0){this.channels[e].insertChars(n)}else this.logger.log(2,"No channel found yet. TEXT-MODE?")}s||n||this.logger.log(2,(()=>"Couldn't parse cleaned data "+Il([i,r])+" orig: "+Il([t[e],t[e+1]])))}}parseCmd(e,t){if(!((20===e||28===e||21===e||29===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=33&&t<=35))return!1;const i=20===e||21===e||23===e?1:2,r=this.channels[i];return 20===e||21===e||28===e||29===e?32===t?r.ccRCL():33===t?r.ccBS():34===t?r.ccAOF():35===t?r.ccAON():36===t?r.ccDER():37===t?r.ccRU(2):38===t?r.ccRU(3):39===t?r.ccRU(4):40===t?r.ccFON():41===t?r.ccRDC():42===t?r.ccTR():43===t?r.ccRTD():44===t?r.ccEDM():45===t?r.ccCR():46===t?r.ccENM():47===t&&r.ccEOC():r.ccTO(t-32),this.currentChannel=i,!0}parseMidrow(e,t){let i=0;if((17===e||25===e)&&t>=32&&t<=47){if(i=17===e?1:2,i!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;const r=this.channels[i];return!!r&&(r.ccMIDROW(t),this.logger.log(3,(()=>"MIDROW ("+Il([e,t])+")")),!0)}return!1}parsePAC(e,t){let i;if(!((e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127)&&!((16===e||24===e)&&t>=64&&t<=95))return!1;const r=e<=23?1:2;i=t>=64&&t<=95?1===r?Rl[e]:_l[e]:1===r?kl[e]:Dl[e];const s=this.channels[r];return!!s&&(s.setPAC(this.interpretPAC(i,t)),this.currentChannel=r,!0)}interpretPAC(e,t){let i;const r={color:null,italics:!1,indent:null,underline:!1,row:e};return i=t>95?t-96:t-64,r.underline=!(1&~i),i<=13?r.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(i/2)]:i<=15?(r.italics=!0,r.color="white"):r.indent=4*Math.floor((i-16)/2),r}parseChars(e,t){let i,r=null,s=null;if(e>=25?(i=2,s=e-8):(i=1,s=e),s>=17&&s<=19){let e;e=17===s?t+80:18===s?t+112:t+144,this.logger.log(2,(()=>"Special char '"+Ll(e)+"' in channel "+i)),r=[e]}else e>=32&&e<=127&&(r=0===t?[e]:[e,t]);return r&&this.logger.log(3,(()=>"Char codes = "+Il(r).join(","))),r}parseBackgroundAttributes(e,t){if(!((16===e||24===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=45&&t<=47))return!1;let i;const r={};16===e||24===e?(i=Math.floor((t-32)/2),r.background=xl[i],t%2==1&&(r.background=r.background+"_semi")):45===t?r.background="transparent":(r.foreground="black",47===t&&(r.underline=!0));const s=e<=23?1:2;return this.channels[s].setBkgData(r),!0}reset(){for(let e=0;ee)&&(this.startTime=e),this.endTime=t,this.screen=i,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}var Kl=function(){if(null!=Ar&&Ar.VTTCue)return self.VTTCue;const e=["","lr","rl"],t=["start","middle","end","left","right"];function i(e,t){if("string"!=typeof t)return!1;if(!Array.isArray(e))return!1;const i=t.toLowerCase();return!!~e.indexOf(i)&&i}function r(e){return i(t,e)}function s(e,...t){let i=1;for(;i100)throw new Error("Position must be between 0 and 100.");T=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"positionAlign",s({},l,{get:function(){return E},set:function(e){const t=r(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");E=t,this.hasBeenReset=!0}})),Object.defineProperty(o,"size",s({},l,{get:function(){return S},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");S=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"align",s({},l,{get:function(){return b},set:function(e){const t=r(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");b=t,this.hasBeenReset=!0}})),o.displayState=void 0}return n.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},n}();class Vl{decode(e,t){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))}}function Hl(e){function t(e,t,i,r){return 3600*(0|e)+60*(0|t)+(0|i)+parseFloat(r||0)}const i=e.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return i?parseFloat(i[2])>59?t(i[2],i[3],0,i[4]):t(i[1],i[2],i[3],i[4]):null}class jl{constructor(){this.values=Object.create(null)}set(e,t){this.get(e)||""===t||(this.values[e]=t)}get(e,t,i){return i?this.has(e)?this.values[e]:t[i]:this.has(e)?this.values[e]:t}has(e){return e in this.values}alt(e,t,i){for(let r=0;r=0&&i<=100)return this.set(e,i),!0}return!1}}function Wl(e,t,i,r){const s=r?e.split(r):[e];for(const e in s){if("string"!=typeof s[e])continue;const r=s[e].split(i);if(2!==r.length)continue;t(r[0],r[1])}}const Yl=new Kl(0,0,""),ql="middle"===Yl.align?"middle":"center";function zl(e,t,i){const r=e;function s(){const t=Hl(e);if(null===t)throw new Error("Malformed timestamp: "+r);return e=e.replace(/^[^\sa-zA-Z-]+/,""),t}function n(){e=e.replace(/^\s+/,"")}if(n(),t.startTime=s(),n(),"--\x3e"!==e.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+r);e=e.slice(3),n(),t.endTime=s(),n(),function(e,t){const r=new jl;Wl(e,(function(e,t){let s;switch(e){case"region":for(let s=i.length-1;s>=0;s--)if(i[s].id===t){r.set(e,i[s].region);break}break;case"vertical":r.alt(e,t,["rl","lr"]);break;case"line":s=t.split(","),r.integer(e,s[0]),r.percent(e,s[0])&&r.set("snapToLines",!1),r.alt(e,s[0],["auto"]),2===s.length&&r.alt("lineAlign",s[1],["start",ql,"end"]);break;case"position":s=t.split(","),r.percent(e,s[0]),2===s.length&&r.alt("positionAlign",s[1],["start",ql,"end","line-left","line-right","auto"]);break;case"size":r.percent(e,t);break;case"align":r.alt(e,t,["start",ql,"end","left","right"])}}),/:/,/\s/),t.region=r.get("region",null),t.vertical=r.get("vertical","");let s=r.get("line","auto");"auto"===s&&-1===Yl.line&&(s=-1),t.line=s,t.lineAlign=r.get("lineAlign","start"),t.snapToLines=r.get("snapToLines",!0),t.size=r.get("size",100),t.align=r.get("align",ql);let n=r.get("position","auto");"auto"===n&&50===Yl.position&&(n="start"===t.align||"left"===t.align?0:"end"===t.align||"right"===t.align?100:50),t.position=n}(e,t)}function Xl(e){return e.replace(//gi,"\n")}class Ql{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new Vl,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(e){const t=this;function i(){let e=t.buffer,i=0;for(e=Xl(e);i>>0).toString()};function th(e,t,i){return eh(e.toString())+eh(t.toString())+eh(i)}function ih(e,t,i,r,s,n,a){const o=new Ql,l=Jr(new Uint8Array(e)).trim().replace(Jl,"\n").split("\n"),h=[],c=t?function(e,t=1){return zo(e,qo,1/t)}(t.baseTime,t.timescale):0;let d,u="00:00.000",f=0,g=0,m=!0;o.oncue=function(e){const n=i[r];let a=i.ccOffset;const o=(f-c)/9e4;if(null!=n&&n.new&&(void 0!==g?a=i.ccOffset=n.start:function(e,t,i){let r=e[t],s=e[r.prevCC];if(!s||!s.new&&r.new)return e.ccOffset=e.presentationOffset=r.start,void(r.new=!1);for(;null!=(n=s)&&n.new;){var n;e.ccOffset+=r.start-s.start,r.new=!1,r=s,s=e[r.prevCC]}e.presentationOffset=i}(i,r,o)),o){if(!t)return void(d=new Error("Missing initPTS for VTT MPEGTS"));a=o-i.presentationOffset}const l=e.endTime-e.startTime,u=tl(9e4*(e.startTime+a-g),9e4*s)/9e4;e.startTime=Math.max(u,0),e.endTime=Math.max(u+l,0);const m=e.text.trim();e.text=decodeURIComponent(encodeURIComponent(m)),e.id||(e.id=th(e.startTime,e.endTime,m)),e.endTime>0&&h.push(e)},o.onparsingerror=function(e){d=e},o.onflush=function(){d?a(d):n(h)},l.forEach((e=>{if(m){if(Zl(e,"X-TIMESTAMP-MAP=")){m=!1,e.slice(16).split(",").forEach((e=>{Zl(e,"LOCAL:")?u=e.slice(6):Zl(e,"MPEGTS:")&&(f=parseInt(e.slice(7)))}));try{g=function(e){let t=parseInt(e.slice(-3));const i=parseInt(e.slice(-6,-4)),r=parseInt(e.slice(-9,-7)),s=e.length>9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!(Ji(t)&&Ji(i)&&Ji(r)&&Ji(s)))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${e}`);return t+=1e3*i,t+=6e4*r,t+=36e5*s,t}(u)/1e3}catch(e){d=e}return}""===e&&(m=!1)}o.parse(e+"\n")})),o.flush()}const rh="stpp.ttml.im1t",sh=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,nh=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,ah={left:"start",center:"center",right:"end",start:"start",end:"end"};function oh(e,t,i,r){const s=ds(new Uint8Array(e),["mdat"]);if(0===s.length)return void r(new Error("Could not parse IMSC1 mdat"));const n=s.map((e=>Jr(e))),a=function(e,t,i=1,r=!1){return zo(e,t,1/i,r)}(t.baseTime,1,t.timescale);try{n.forEach((e=>i(function(e,t){const i=(new DOMParser).parseFromString(e,"text/xml"),r=i.getElementsByTagName("tt")[0];if(!r)throw new Error("Invalid ttml");const s={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},n=Object.keys(s).reduce(((e,t)=>(e[t]=r.getAttribute(`ttp:${t}`)||s[t],e)),{}),a="preserve"!==r.getAttribute("xml:space"),o=hh(lh(r,"styling","style")),l=hh(lh(r,"layout","region")),h=lh(r,"body","[begin]");return[].map.call(h,(e=>{const i=ch(e,a);if(!i||!e.hasAttribute("begin"))return null;const r=fh(e.getAttribute("begin"),n),s=fh(e.getAttribute("dur"),n);let h=fh(e.getAttribute("end"),n);if(null===r)throw uh(e);if(null===h){if(null===s)throw uh(e);h=r+s}const c=new Kl(r-t,h-t,i);c.id=th(c.startTime,c.endTime,c.text);const d=function(e,t,i){const r="http://www.w3.org/ns/ttml#styling";let s=null;const n=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],a=null!=e&&e.hasAttribute("style")?e.getAttribute("style"):null;a&&i.hasOwnProperty(a)&&(s=i[a]);return n.reduce(((i,n)=>{const a=dh(t,r,n)||dh(e,r,n)||dh(s,r,n);return a&&(i[n]=a),i}),{})}(l[e.getAttribute("region")],o[e.getAttribute("style")],o),{textAlign:u}=d;if(u){const e=ah[u];e&&(c.lineAlign=e),c.align=u}return Qi(c,d),c})).filter((e=>null!==e))}(e,a))))}catch(e){r(e)}}function lh(e,t,i){const r=e.getElementsByTagName(t)[0];return r?[].slice.call(r.querySelectorAll(i)):[]}function hh(e){return e.reduce(((e,t)=>{const i=t.getAttribute("xml:id");return i&&(e[i]=t),e}),{})}function ch(e,t){return[].slice.call(e.childNodes).reduce(((e,i,r)=>{var s;return"br"===i.nodeName&&r?e+"\n":null!=(s=i.childNodes)&&s.length?ch(i,t):t?e+i.textContent.trim().replace(/\s+/g," "):e+i.textContent}),"")}function dh(e,t,i){return e&&e.hasAttributeNS(t,i)?e.getAttributeNS(t,i):null}function uh(e){return new Error(`Could not parse ttml timestamp ${e}`)}function fh(e,t){if(!e)return null;let i=Hl(e);return null===i&&(sh.test(e)?i=function(e,t){const i=sh.exec(e),r=(0|i[4])+(0|i[5])/t.subFrameRate;return 3600*(0|i[1])+60*(0|i[2])+(0|i[3])+r/t.frameRate}(e,t):nh.test(e)&&(i=function(e,t){const i=nh.exec(e),r=Number(i[1]);switch(i[2]){case"h":return 3600*r;case"m":return 60*r;case"ms":return 1e3*r;case"f":return r/t.frameRate;case"t":return r/t.tickRate}return r}(e,t))),i}function gh(e){return e.characteristics&&/transcribes-spoken-dialog/gi.test(e.characteristics)&&/describes-music-and-sound/gi.test(e.characteristics)?"captions":"subtitles"}function mh(e,t){return!!e&&e.kind===gh(t)&&vl(t,e)}class ph{constructor(e){this.hls=void 0,this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=e,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}setStreamController(e){this.streamController=e}destroy(){this.hls&&this.unregisterListener(),this.timer&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null}registerListeners(){const{hls:e}=this;e.on(tr.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.on(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){const{hls:e}=this;e.off(tr.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(e,t){const i=this.hls.levels[t.droppedLevel];this.isLevelAllowed(i)&&this.restrictedLevels.push({bitrate:i.bitrate,height:i.height,width:i.width})}onMediaAttaching(e,t){this.media=t.media instanceof HTMLVideoElement?t.media:null,this.clientRect=null,this.timer&&this.hls.levels.length&&this.detectPlayerSize()}onManifestParsed(e,t){const i=this.hls;this.restrictedLevels=[],this.firstLevel=t.firstLevel,i.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onLevelsUpdated(e,t){this.timer&&Ji(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)return void(this.clientRect=null);const e=this.hls.levels;if(e.length){const t=this.hls,i=this.getMaxLevel(e.length-1);i!==this.autoLevelCapping&&lr.log(`Setting autoLevelCapping to ${i}: ${e[i].height}p@${e[i].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),t.autoLevelCapping=i,t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}}getMaxLevel(e){const t=this.hls.levels;if(!t.length)return-1;const i=t.filter(((t,i)=>this.isLevelAllowed(t)&&i<=e));return this.clientRect=null,ph.getMaxLevelByMediaSize(i,this.mediaWidth,this.mediaHeight)}startCapping(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())}stopCapping(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)}getDimensions(){if(this.clientRect)return this.clientRect;const e=this.media,t={width:0,height:0};if(e){const i=e.getBoundingClientRect();t.width=i.width,t.height=i.height,t.width||t.height||(t.width=i.right-i.left||e.width||0,t.height=i.bottom-i.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(e){}return e}isLevelAllowed(e){return!this.restrictedLevels.some((t=>e.bitrate===t.bitrate&&e.width===t.width&&e.height===t.height))}static getMaxLevelByMediaSize(e,t,i){if(null==e||!e.length)return-1;let r=e.length-1;const s=Math.max(t,i);for(let t=0;t=s||i.height>=s)&&(n=i,!(a=e[t+1])||n.width!==a.width||n.height!==a.height)){r=t;break}}var n,a;return r}}const vh="[eme]";class yh{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=yh.CDMCleanupPromise?[yh.CDMCleanupPromise]:[],this.onMediaEncrypted=this._onMediaEncrypted.bind(this),this.onWaitingForKey=this._onWaitingForKey.bind(this),this.debug=lr.debug.bind(lr,vh),this.log=lr.log.bind(lr,vh),this.warn=lr.warn.bind(lr,vh),this.error=lr.error.bind(lr,vh),this.hls=e,this.config=e.config,this.registerListeners()}destroy(){this.unregisterListeners(),this.onMediaDetached();const 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(tr.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(tr.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this)}unregisterListeners(){this.hls.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(tr.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this)}getLicenseServerUrl(e){const{drmSystems:t,widevineLicenseUrl:i}=this.config,r=t[e];if(r)return r.licenseUrl;if(e===Rr.WIDEVINE&&i)return i;throw new Error(`no license server URL configured for key-system "${e}"`)}getServerCertificateUrl(e){const{drmSystems:t}=this.config,i=t[e];if(i)return i.serverCertificateUrl;this.log(`No Server Certificate in config.drmSystems["${e}"]`)}attemptKeySystemAccess(e){const t=this.hls.levels,i=(e,t,i)=>!!e&&i.indexOf(e)===t,r=t.map((e=>e.audioCodec)).filter(i),s=t.map((e=>e.videoCodec)).filter(i);return r.length+s.length===0&&s.push("avc1.42e01e"),new Promise(((t,i)=>{const n=e=>{const a=e.shift();this.getMediaKeysPromise(a,r,s).then((e=>t({keySystem:a,mediaKeys:e}))).catch((t=>{e.length?n(e):i(t instanceof Th?t:new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_ACCESS,error:t,fatal:!0},t.message))}))};n(e)}))}requestMediaKeySystemAccess(e,t){const{requestMediaKeySystemAccessFunc:i}=this.config;if("function"!=typeof i){let e=`Configured requestMediaKeySystemAccess is not a function ${i}`;return null===Mr&&"http:"===self.location.protocol&&(e=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`),Promise.reject(new Error(e))}return i(e,t)}getMediaKeysPromise(e,t,i){const r=function(e,t,i,r){let s;switch(e){case Rr.FAIRPLAY:s=["cenc","sinf"];break;case Rr.WIDEVINE:case Rr.PLAYREADY:s=["cenc"];break;case Rr.CLEARKEY:s=["cenc","keyids"];break;default:throw new Error(`Unknown key-system: ${e}`)}return function(e,t,i,r){return[{initDataTypes:e,persistentState:r.persistentState||"optional",distinctiveIdentifier:r.distinctiveIdentifier||"optional",sessionTypes:r.sessionTypes||[r.sessionType||"temporary"],audioCapabilities:t.map((e=>({contentType:`audio/mp4; codecs="${e}"`,robustness:r.audioRobustness||"",encryptionScheme:r.audioEncryptionScheme||null}))),videoCapabilities:i.map((e=>({contentType:`video/mp4; codecs="${e}"`,robustness:r.videoRobustness||"",encryptionScheme:r.videoEncryptionScheme||null})))}]}(s,t,i,r)}(e,t,i,this.config.drmSystemOptions),s=this.keySystemAccessPromises[e];let n=null==s?void 0:s.keySystemAccess;if(!n){this.log(`Requesting encrypted media "${e}" key-system access with config: ${JSON.stringify(r)}`),n=this.requestMediaKeySystemAccess(e,r);const t=this.keySystemAccessPromises[e]={keySystemAccess:n};return n.catch((t=>{this.log(`Failed to obtain access to key-system "${e}": ${t}`)})),n.then((i=>{this.log(`Access for key-system "${i.keySystem}" obtained`);const r=this.fetchServerCertificate(e);return this.log(`Create media-keys for "${e}"`),t.mediaKeys=i.createMediaKeys().then((t=>(this.log(`Media-keys created for "${e}"`),r.then((i=>i?this.setMediaKeysServerCertificate(t,e,i):t))))),t.mediaKeys.catch((t=>{this.error(`Failed to create media-keys for "${e}"}: ${t}`)})),t.mediaKeys}))}return n.then((()=>s.mediaKeys))}createMediaKeySessionContext({decryptdata:e,keySystem:t,mediaKeys:i}){this.log(`Creating key-system session "${t}" keyId: ${ts(e.keyId||[])}`);const r=i.createSession(),s={decryptdata:e,keySystem:t,mediaKeys:i,mediaKeysSession:r,keyStatus:"status-pending"};return this.mediaKeySessions.push(s),s}renewKeySession(e){const t=e.decryptdata;if(t.pssh){const i=this.createMediaKeySessionContext(e),r=this.getKeyIdString(t),s="cenc";this.keyIdToKeySessionPromise[r]=this.generateRequestWithPreferredKeySession(i,s,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(null===e.keyId)throw new Error("keyId is null");return ts(e.keyId)}updateKeySession(e,t){var i;const r=e.mediaKeysSession;return this.log(`Updating key-session "${r.sessionId}" for keyID ${ts((null==(i=e.decryptdata)?void 0:i.keyId)||[])}\n } (data length: ${t?t.byteLength:t})`),r.update(t)}selectKeySystemFormat(e){const t=Object.keys(e.levelkeys||{});return this.keyFormatPromise||(this.log(`Selecting key-system from fragment (sn: ${e.sn} ${e.type}: ${e.level}) key formats ${t.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(t)),this.keyFormatPromise}getKeyFormatPromise(e){return new Promise(((t,i)=>{const r=Or(this.config),s=e.map(Cr).filter((e=>!!e&&-1!==r.indexOf(e)));return this.getKeySystemSelectionPromise(s).then((({keySystem:e})=>{const r=Pr(e);r?t(r):i(new Error(`Unable to find format for key-system "${e}"`))})).catch(i)}))}loadKey(e){const t=e.keyInfo.decryptdata,i=this.getKeyIdString(t),r=`(keyId: ${i} format: "${t.keyFormat}" method: ${t.method} uri: ${t.uri})`;this.log(`Starting session for key ${r}`);let s=this.keyIdToKeySessionPromise[i];return s||(s=this.keyIdToKeySessionPromise[i]=this.getKeySystemForKeyPromise(t).then((({keySystem:i,mediaKeys:s})=>(this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${e.frag.sn} ${e.frag.type}: ${e.frag.level} using key ${r}`),this.attemptSetMediaKeys(i,s).then((()=>{this.throwIfDestroyed();const e=this.createMediaKeySessionContext({keySystem:i,mediaKeys:s,decryptdata:t});return this.generateRequestWithPreferredKeySession(e,"cenc",t.pssh,"playlist-key")}))))),s.catch((e=>this.handleError(e)))),s}throwIfDestroyed(e="Invalid state"){if(!this.hls)throw new Error("invalid state")}handleError(e){this.hls&&(this.error(e.message),e instanceof Th?this.hls.trigger(tr.ERROR,e.data):this.hls.trigger(tr.ERROR,{type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_KEYS,error:e,fatal:!0}))}getKeySystemForKeyPromise(e){const t=this.getKeyIdString(e),i=this.keyIdToKeySessionPromise[t];if(!i){const t=Cr(e.keyFormat),i=t?[t]:Or(this.config);return this.attemptKeySystemAccess(i)}return i}getKeySystemSelectionPromise(e){if(e.length||(e=Or(this.config)),0===e.length)throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.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){const{initDataType:t,initData:i}=e;if(this.debug(`"${e.type}" event: init data type: "${t}"`),null===i)return;let r,s;if("sinf"===t&&this.config.drmSystems[Rr.FAIRPLAY]){const e=ns(new Uint8Array(i));try{const t=br(JSON.parse(e).sinf),i=ys(new Uint8Array(t));if(!i)return;r=i.subarray(8,24),s=Rr.FAIRPLAY}catch(e){return void this.warn('Failed to parse sinf "encrypted" event message initData')}}else{const e=function(e){if(!(e instanceof ArrayBuffer)||e.byteLength<32)return null;const t={version:0,systemId:"",kids:null,data:null},i=new DataView(e),r=i.getUint32(0);if(e.byteLength!==r&&r>44)return null;if(1886614376!==i.getUint32(4))return null;if(t.version=i.getUint32(8)>>>24,t.version>1)return null;t.systemId=ts(new Uint8Array(e,12,16));const s=i.getUint32(28);if(0===t.version){if(r-32this.generateRequestWithPreferredKeySession(s,t,i,"encrypted-event-key-match")));break}}l||(l=a[n]=this.getKeySystemSelectionPromise([s]).then((({keySystem:e,mediaKeys:s})=>{var a;this.throwIfDestroyed();const o=new ks("ISO-23001-7",n,null!=(a=Pr(e))?a:"");return o.pssh=new Uint8Array(i),o.keyId=r,this.attemptSetMediaKeys(e,s).then((()=>{this.throwIfDestroyed();const r=this.createMediaKeySessionContext({decryptdata:o,keySystem:e,mediaKeys:s});return this.generateRequestWithPreferredKeySession(r,t,i,"encrypted-event-no-match")}))}))),l.catch((e=>this.handleError(e)))}_onWaitingForKey(e){this.log(`"${e.type}" event`)}attemptSetMediaKeys(e,t){const i=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${e}"`);const r=Promise.all(i).then((()=>{if(!this.media)throw new Error("Attempted to set mediaKeys without media element attached");return this.media.setMediaKeys(t)}));return this.setMediaKeysQueue.push(r),r.then((()=>{this.log(`Media-keys set for "${e}"`),i.push(r),this.setMediaKeysQueue=this.setMediaKeysQueue.filter((e=>-1===i.indexOf(e)))}))}generateRequestWithPreferredKeySession(e,t,i,r){var s,n;const a=null==(s=this.config.drmSystems)||null==(n=s[e.keySystem])?void 0:n.generateRequest;if(a)try{const r=a.call(this.hls,t,i,e);if(!r)throw new Error("Invalid response from configured generateRequest filter");t=r.initDataType,i=e.decryptdata.pssh=r.initData?new Uint8Array(r.initData):null}catch(e){var o;if(this.warn(e.message),null!=(o=this.hls)&&o.config.debug)throw e}if(null===i)return this.log(`Skipping key-session request for "${r}" (no initData)`),Promise.resolve(e);const l=this.getKeyIdString(e.decryptdata);this.log(`Generating key-session request for "${r}": ${l} (init data type: ${t} length: ${i?i.byteLength:null})`);const h=new fl,c=e._onmessage=t=>{const i=e.mediaKeysSession;if(!i)return void h.emit("error",new Error("invalid state"));const{messageType:r,message:s}=t;this.log(`"${r}" message event for session "${i.sessionId}" message size: ${s.byteLength}`),"license-request"===r||"license-renewal"===r?this.renewLicense(e,s).catch((e=>{this.handleError(e),h.emit("error",e)})):"license-release"===r?e.keySystem===Rr.FAIRPLAY&&(this.updateKeySession(e,wr("acknowledged")),this.removeSession(e)):this.warn(`unhandled media key message type "${r}"`)},d=e._onkeystatuseschange=t=>{if(!e.mediaKeysSession)return void h.emit("error",new Error("invalid state"));this.onKeyStatusChange(e);const i=e.keyStatus;h.emit("keyStatus",i),"expired"===i&&(this.warn(`${e.keySystem} expired for key ${l}`),this.renewKeySession(e))};e.mediaKeysSession.addEventListener("message",c),e.mediaKeysSession.addEventListener("keystatuseschange",d);const u=new Promise(((e,t)=>{h.on("error",t),h.on("keyStatus",(i=>{i.startsWith("usable")?e():"output-restricted"===i?t(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,fatal:!1},"HDCP level output restricted")):"internal-error"===i?t(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_STATUS_INTERNAL_ERROR,fatal:!0},`key status changed to "${i}"`)):"expired"===i?t(new Error("key expired while generating request")):this.warn(`unhandled key status change "${i}"`)}))}));return e.mediaKeysSession.generateRequest(t,i).then((()=>{var t;this.log(`Request generated for key-session "${null==(t=e.mediaKeysSession)?void 0:t.sessionId}" keyId: ${l}`)})).catch((e=>{throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_NO_SESSION,error:e,fatal:!1},`Error generating key-session request: ${e}`)})).then((()=>u)).catch((t=>{throw h.removeAllListeners(),this.removeSession(e),t})).then((()=>(h.removeAllListeners(),e)))}onKeyStatusChange(e){e.mediaKeysSession.keyStatuses.forEach(((t,i)=>{this.log(`key status change "${t}" for keyStatuses keyId: ${ts("buffer"in i?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):new Uint8Array(i))} session keyId: ${ts(new Uint8Array(e.decryptdata.keyId||[]))} uri: ${e.decryptdata.uri}`),e.keyStatus=t}))}fetchServerCertificate(e){const t=this.config,i=new(0,t.loader)(t),r=this.getServerCertificateUrl(e);return r?(this.log(`Fetching server certificate for "${e}"`),new Promise(((s,n)=>{const a={responseType:"arraybuffer",url:r},o=t.certLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(e,t,i,r)=>{s(e.data)},onError:(t,i,s,o)=>{n(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:s,response:qi({url:a.url,data:void 0},t)},`"${e}" certificate request failed (${r}). Status: ${t.code} (${t.text})`))},onTimeout:(t,i,s)=>{n(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:s,response:{url:a.url,data:void 0}},`"${e}" certificate request timed out (${r})`))},onAbort:(e,t,i)=>{n(new Error("aborted"))}};i.load(a,l,h)}))):Promise.resolve()}setMediaKeysServerCertificate(e,t,i){return new Promise(((r,s)=>{e.setServerCertificate(i).then((s=>{this.log(`setServerCertificate ${s?"success":"not supported by CDM"} (${null==i?void 0:i.byteLength}) on "${t}"`),r(e)})).catch((e=>{s(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:e,fatal:!0},e.message))}))}))}renewLicense(e,t){return this.requestLicense(e,new Uint8Array(t)).then((t=>this.updateKeySession(e,new Uint8Array(t)).catch((e=>{throw new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_SESSION_UPDATE_FAILED,error:e,fatal:!0},e.message)}))))}unpackPlayReadyKeyMessage(e,t){const i=String.fromCharCode.apply(null,new Uint16Array(t.buffer));if(!i.includes("PlayReadyKeyMessage"))return e.setRequestHeader("Content-Type","text/xml; charset=utf-8"),t;const r=(new DOMParser).parseFromString(i,"application/xml"),s=r.querySelectorAll("HttpHeader");if(s.length>0){let t;for(let i=0,r=s.length;i in key message");return wr(atob(l))}setupLicenseXHR(e,t,i,r){const s=this.config.licenseXhrSetup;return s?Promise.resolve().then((()=>{if(!i.decryptdata)throw new Error("Key removed");return s.call(this.hls,e,t,i,r)})).catch((n=>{if(!i.decryptdata)throw n;return e.open("POST",t,!0),s.call(this.hls,e,t,i,r)})).then((i=>{e.readyState||e.open("POST",t,!0);return{xhr:e,licenseChallenge:i||r}})):(e.open("POST",t,!0),Promise.resolve({xhr:e,licenseChallenge:r}))}requestLicense(e,t){const i=this.config.keyLoadPolicy.default;return new Promise(((r,s)=>{const n=this.getLicenseServerUrl(e.keySystem);this.log(`Sending license request to URL: ${n}`);const a=new XMLHttpRequest;a.responseType="arraybuffer",a.onreadystatechange=()=>{if(!this.hls||!e.mediaKeysSession)return s(new Error("invalid state"));if(4===a.readyState)if(200===a.status){this._requestLicenseFailureCount=0;let t=a.response;this.log(`License received ${t instanceof ArrayBuffer?t.byteLength:t}`);const i=this.config.licenseResponseCallback;if(i)try{t=i.call(this.hls,a,n,e)}catch(e){this.error(e)}r(t)}else{const o=i.errorRetry,l=o?o.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>l||a.status>=400&&a.status<500)s(new Th({type:ir.KEY_SYSTEM_ERROR,details:rr.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:a,response:{url:n,data:void 0,code:a.status,text:a.statusText}},`License Request XHR failed (${n}). Status: ${a.status} (${a.statusText})`));else{const i=l-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${i} attempts left`),this.requestLicense(e,t).then(r,s)}}},e.licenseXhr&&e.licenseXhr.readyState!==XMLHttpRequest.DONE&&e.licenseXhr.abort(),e.licenseXhr=a,this.setupLicenseXHR(a,n,e,t).then((({xhr:t,licenseChallenge:i})=>{e.keySystem==Rr.PLAYREADY&&(i=this.unpackPlayReadyKeyMessage(t,i)),t.send(i)}))}))}onMediaAttached(e,t){if(!this.config.emeEnabled)return;const i=t.media;this.media=i,i.addEventListener("encrypted",this.onMediaEncrypted),i.addEventListener("waitingforkey",this.onWaitingForKey)}onMediaDetached(){const 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={},ks.clearKeyUriToKeyIdMap();const i=t.length;yh.CDMCleanupPromise=Promise.all(t.map((e=>this.removeSession(e))).concat(null==e?void 0:e.setMediaKeys(null).catch((e=>{this.log(`Could not clear media keys: ${e}`)})))).then((()=>{i&&(this.log("finished closing key sessions and clearing media keys"),t.length=0)})).catch((e=>{this.log(`Could not close sessions and clear media keys: ${e}`)}))}onManifestLoading(){this.keyFormatPromise=null}onManifestLoaded(e,{sessionKeys:t}){if(t&&this.config.emeEnabled&&!this.keyFormatPromise){const e=t.reduce(((e,t)=>(-1===e.indexOf(t.keyFormat)&&e.push(t.keyFormat),e)),[]);this.log(`Selecting key-system from session-keys ${e.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(e)}}removeSession(e){const{mediaKeysSession:t,licenseXhr:i}=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),i&&i.readyState!==XMLHttpRequest.DONE&&i.abort(),e.mediaKeysSession=e.decryptdata=e.licenseXhr=void 0;const r=this.mediaKeySessions.indexOf(e);return r>-1&&this.mediaKeySessions.splice(r,1),t.remove().catch((e=>{this.log(`Could not remove session: ${e}`)})).then((()=>t.close())).catch((e=>{this.log(`Could not close session: ${e}`)}))}}}yh.CDMCleanupPromise=void 0;class Th 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}}var Eh,Sh,bh;!function(e){e.MANIFEST="m",e.AUDIO="a",e.VIDEO="v",e.MUXED="av",e.INIT="i",e.CAPTION="c",e.TIMED_TEXT="tt",e.KEY="k",e.OTHER="o"}(Eh||(Eh={})),function(e){e.DASH="d",e.HLS="h",e.SMOOTH="s",e.OTHER="o"}(Sh||(Sh={})),function(e){e.OBJECT="CMCD-Object",e.REQUEST="CMCD-Request",e.SESSION="CMCD-Session",e.STATUS="CMCD-Status"}(bh||(bh={}));const Lh={[bh.OBJECT]:["br","d","ot","tb"],[bh.REQUEST]:["bl","dl","mtp","nor","nrr","su"],[bh.SESSION]:["cid","pr","sf","sid","st","v"],[bh.STATUS]:["bs","rtp"]};class wh{constructor(e,t){this.value=void 0,this.params=void 0,Array.isArray(e)&&(e=e.map((e=>e instanceof wh?e:new wh(e)))),this.value=e,this.params=t}}class Ah{constructor(e){this.description=void 0,this.description=e}}const Rh="Dict";function kh(e,t,i,r){return new Error(`failed to ${e} "${s=t,Array.isArray(s)?JSON.stringify(s):s instanceof Map?"Map{}":s instanceof Set?"Set{}":"object"==typeof s?JSON.stringify(s):String(s)}" as ${i}`,{cause:r});var s}const _h="Bare Item",Dh="Boolean",xh="Byte Sequence",Ch="Decimal",Ih="Integer";const Ph=/[\x00-\x1f\x7f]+/,Oh="Token",Mh="Key";function Fh(e,t,i){return kh("serialize",e,t,i)}function Nh(e){if(!1===ArrayBuffer.isView(e))throw Fh(e,xh);return`:${t=e,btoa(String.fromCharCode(...t))}:`;var t}function Uh(e){if(function(e){return e<-999999999999999||99999999999999912)throw Fh(e,Ch);const i=t.toString();return i.includes(".")?i:`${i}.0`}const Gh="String";function Kh(e){const t=(i=e).description||i.toString().slice(7,-1);var i;if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(t))throw Fh(t,Oh);return t}function Vh(e){switch(typeof e){case"number":if(!Ji(e))throw Fh(e,_h);return Number.isInteger(e)?Uh(e):$h(e);case"string":return function(e){if(Ph.test(e))throw Fh(e,Gh);return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}(e);case"symbol":return Kh(e);case"boolean":return function(e){if("boolean"!=typeof e)throw Fh(e,Dh);return e?"?1":"?0"}(e);case"object":if(e instanceof Date)return function(e){return`@${Uh(e.getTime()/1e3)}`}(e);if(e instanceof Uint8Array)return Nh(e);if(e instanceof Ah)return Kh(e);default:throw Fh(e,_h)}}function Hh(e){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(e))throw Fh(e,Mh);return e}function jh(e){return null==e?"":Object.entries(e).map((([e,t])=>!0===t?`;${Hh(e)}`:`;${Hh(e)}=${Vh(t)}`)).join("")}function Wh(e){return e instanceof wh?`${Vh(e.value)}${jh(e.params)}`:Vh(e)}function Yh(e,t={whitespace:!0}){if("object"!=typeof e)throw Fh(e,Rh);const i=e instanceof Map?e.entries():Object.entries(e),r=null!=t&&t.whitespace?" ":"";return Array.from(i).map((([e,t])=>{t instanceof wh==!1&&(t=new wh(t));let i=Hh(e);var r;return!0===t.value?i+=jh(t.params):(i+="=",Array.isArray(t.value)?i+=`(${(r=t).value.map(Wh).join(" ")})${jh(r.params)}`:i+=Wh(t)),i})).join(`,${r}`)}const qh=e=>"ot"===e||"sf"===e||"st"===e,zh=e=>"number"==typeof e?Ji(e):null!=e&&""!==e&&!1!==e;const Xh=e=>Math.round(e),Qh=e=>100*Xh(e/100),Jh={br:Xh,d:Xh,bl:Qh,dl:Qh,mtp:Qh,nor:(e,t)=>(null!=t&&t.baseUrl&&(e=function(e,t){const i=new URL(e),r=new URL(t);if(i.origin!==r.origin)return e;const s=i.pathname.split("/").slice(1),n=r.pathname.split("/").slice(1,-1);for(;s[0]===n[0];)s.shift(),n.shift();for(;n.length;)n.shift(),s.unshift("..");return s.join("/")}(e,t.baseUrl)),encodeURIComponent(e)),rtp:Qh,tb:Xh};function Zh(e,t={}){return e?function(e,t){return Yh(e,t)}(function(e,t){const i={};if(null==e||"object"!=typeof e)return i;const r=Object.keys(e).sort(),s=Qi({},Jh,null==t?void 0:t.formatters),n=null==t?void 0:t.filter;return r.forEach((r=>{if(null!=n&&n(r))return;let a=e[r];const o=s[r];o&&(a=o(a,t)),"v"===r&&1===a||"pr"==r&&1===a||zh(a)&&(qh(r)&&"string"==typeof a&&(a=new Ah(a)),i[r]=a)})),i}(e,t),Qi({whitespace:!1},t)):""}function ec(e,t,i){return Qi(e,function(e,t={}){if(!e)return{};const i=Object.entries(e),r=Object.entries(Lh).concat(Object.entries((null==t?void 0:t.customHeaderMap)||{})),s=i.reduce(((e,t)=>{var i;const[s,n]=t,a=(null==(i=r.find((e=>e[1].includes(s))))?void 0:i[0])||bh.REQUEST;return null!=e[a]||(e[a]={}),e[a][s]=n,e}),{});return Object.entries(s).reduce(((e,[i,r])=>(e[i]=Zh(r,t),e)),{})}(t,i))}const tc="CMCD";const ic=/CMCD=[^&#]+/;function rc(e,t,i){const r=function(e,t={}){if(!e)return"";const i=Zh(e,t);return`${tc}=${encodeURIComponent(i)}`}(t,i);if(!r)return e;if(ic.test(e))return e.replace(ic,r);const s=e.includes("?")?"&":"?";return`${e}${s}${r}`}function sc(e,t,i,r){e&&Object.keys(t).forEach((s=>{const n=e.filter((e=>e.groupId===s)).map((e=>{const n=Qi({},e);return n.details=void 0,n.attrs=new dr(n.attrs),n.url=n.attrs.URI=nc(e.url,e.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",i),n.groupId=n.attrs["GROUP-ID"]=t[s],n.attrs["PATHWAY-ID"]=r,n}));e.push(...n)}))}function nc(e,t,i,r){const{HOST:s,PARAMS:n,[i]:a}=r;let o;t&&(o=null==a?void 0:a[t],o&&(e=o));const l=new self.URL(e);return s&&!o&&(l.host=s),n&&Object.keys(n).sort().forEach((e=>{e&&l.searchParams.set(e,n[e])})),l.href}const ac=/^age:\s*[\d.]+\s*$/im;class oc{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 gr,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null}abortInternal(){const e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,4!==e.readyState&&(this.stats.aborted=!0,e.abort()))}abort(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(e,t,i){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=i,this.loadInternal()}loadInternal(){const{config:e,context:t}=this;if(!e||!t)return;const i=this.loader=new self.XMLHttpRequest,r=this.stats;r.loading.first=0,r.loaded=0,r.aborted=!1;const s=this.xhrSetup;s?Promise.resolve().then((()=>{if(this.loader===i&&!this.stats.aborted)return s(i,t.url)})).catch((e=>{if(this.loader===i&&!this.stats.aborted)return i.open("GET",t.url,!0),s(i,t.url)})).then((()=>{this.loader!==i||this.stats.aborted||this.openAndSendXhr(i,t,e)})).catch((e=>{this.callbacks.onError({code:i.status,text:e.message},t,i,r)})):this.openAndSendXhr(i,t,e)}openAndSendXhr(e,t,i){e.readyState||e.open("GET",t.url,!0);const r=t.headers,{maxTimeToFirstByteMs:s,maxLoadTimeMs:n}=i.loadPolicy;if(r)for(const t in r)e.setRequestHeader(t,r[t]);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),i.timeout=s&&Ji(s)?s:n,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),i.timeout),e.send()}readystatechange(){const{context:e,loader:t,stats:i}=this;if(!e||!t)return;const r=t.readyState,s=this.config;if(!i.aborted&&r>=2&&(0===i.loading.first&&(i.loading.first=Math.max(self.performance.now(),i.loading.start),s.timeout!==s.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),s.timeout=s.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),s.loadPolicy.maxLoadTimeMs-(i.loading.first-i.loading.start)))),4===r)){self.clearTimeout(this.requestTimeout),t.onreadystatechange=null,t.onprogress=null;const r=t.status,n="text"!==t.responseType;if(r>=200&&r<300&&(n&&t.response||null!==t.responseText)){i.loading.end=Math.max(self.performance.now(),i.loading.first);const s=n?t.response:t.responseText,a="arraybuffer"===t.responseType?s.byteLength:s.length;if(i.loaded=i.total=a,i.bwEstimate=8e3*i.total/(i.loading.end-i.loading.first),!this.callbacks)return;const o=this.callbacks.onProgress;if(o&&o(i,e,s,t),!this.callbacks)return;const l={url:t.responseURL,data:s,code:r};this.callbacks.onSuccess(l,i,e,t)}else{const n=s.loadPolicy.errorRetry;Xn(n,i.retry,!1,{url:e.url,data:void 0,code:r})?this.retry(n):(lr.error(`${r} while loading ${e.url}`),this.callbacks.onError({code:r,text:t.statusText},e,t,i))}}}loadtimeout(){if(!this.config)return;const e=this.config.loadPolicy.timeoutRetry;if(Xn(e,this.stats.retry,!0))this.retry(e);else{var t;lr.warn(`timeout while loading ${null==(t=this.context)?void 0:t.url}`);const e=this.callbacks;e&&(this.abortInternal(),e.onTimeout(this.stats,this.context,this.loader))}}retry(e){const{context:t,stats:i}=this;this.retryDelay=qn(e,i.retry),i.retry++,lr.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${null==t?void 0:t.url}, retrying ${i.retry}/${e.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)}loadprogress(e){const t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)}getCacheAge(){let e=null;if(this.loader&&ac.test(this.loader.getAllResponseHeaders())){const t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.loader&&new RegExp(`^${e}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(e):null}}const lc=/(\d+)-(\d+)\/(\d+)/;class hc{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||cc,this.controller=new self.AbortController,this.stats=new gr}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(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(e,t,i){const r=this.stats;if(r.loading.start)throw new Error("Loader can only be used once.");r.loading.start=self.performance.now();const s=function(e,t){const i={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(Qi({},e.headers))};e.rangeEnd&&i.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1));return i}(e,this.controller.signal),n=i.onProgress,a="arraybuffer"===e.responseType,o=a?"byteLength":"length",{maxTimeToFirstByteMs:l,maxLoadTimeMs:h}=t.loadPolicy;this.context=e,this.config=t,this.callbacks=i,this.request=this.fetchSetup(e,s),self.clearTimeout(this.requestTimeout),t.timeout=l&&Ji(l)?l:h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(r,e,this.response)}),t.timeout),self.fetch(this.request).then((s=>{this.response=this.loader=s;const o=Math.max(self.performance.now(),r.loading.start);if(self.clearTimeout(this.requestTimeout),t.timeout=h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(r,e,this.response)}),h-(o-r.loading.start)),!s.ok){const{status:e,statusText:t}=s;throw new dc(t||"fetch, bad network response",e,s)}return r.loading.first=o,r.total=function(e){const t=e.get("Content-Range");if(t){const e=function(e){const t=lc.exec(e);if(t)return parseInt(t[2])-parseInt(t[1])+1}(t);if(Ji(e))return e}const i=e.get("Content-Length");if(i)return parseInt(i)}(s.headers)||r.total,n&&Ji(t.highWaterMark)?this.loadProgressively(s,r,e,t.highWaterMark,n):a?s.arrayBuffer():"json"===e.responseType?s.json():s.text()})).then((s=>{const a=this.response;if(!a)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),r.loading.end=Math.max(self.performance.now(),r.loading.first);const l=s[o];l&&(r.loaded=r.total=l);const h={url:a.url,data:s,code:a.status};n&&!Ji(t.highWaterMark)&&n(r,e,s,a),i.onSuccess(h,r,e,a)})).catch((t=>{if(self.clearTimeout(this.requestTimeout),r.aborted)return;const s=t&&t.code||0,n=t?t.message:null;i.onError({code:s,text:n},e,t?t.details:null,r)}))}getCacheAge(){let e=null;if(this.response){const t=this.response.headers.get("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.response?this.response.headers.get(e):null}loadProgressively(e,t,i,r=0,s){const n=new ao,a=e.body.getReader(),o=()=>a.read().then((a=>{if(a.done)return n.dataLength&&s(t,i,n.flush(),e),Promise.resolve(new ArrayBuffer(0));const l=a.value,h=l.length;return t.loaded+=h,h=r&&s(t,i,n.flush(),e)):s(t,i,l,e),o()})).catch((()=>Promise.reject()));return o()}}function cc(e,t){return new self.Request(e.url,t)}class dc extends Error{constructor(e,t,i){super(e),this.code=void 0,this.details=void 0,this.code=t,this.details=i}}const uc=/\s/,fc={newCue(e,t,i,r){const s=[];let n,a,o,l,h;const c=self.VTTCue||self.TextTrackCue;for(let u=0;u=16?l--:l++;const r=Xl(h.trim()),f=th(t,i,r);null!=e&&null!=(d=e.cues)&&d.getCueById(f)||(a=new c(t,i,r),a.id=f,a.line=u+1,a.align="left",a.position=10+Math.min(80,10*Math.floor(8*l/32)),s.push(a))}return e&&s.length&&(s.sort(((e,t)=>"auto"===e.line||"auto"===t.line?0:e.line>8&&t.line>8?t.line-e.line:e.line-t.line)),s.forEach((t=>pn(e,t)))),s}},gc=qi(qi({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:6e7,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:oc,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController: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.codecTiers=null,this.timer=-1,this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this._abandonRulesCheck=()=>{const{fragCurrent:e,partCurrent:t,hls:i}=this,{autoLevelEnabled:r,media:s}=i;if(!e||!s)return;const n=performance.now(),a=t?t.stats:e.stats,o=t?t.duration:e.duration,l=n-a.loading.start,h=i.minAutoLevel;if(a.aborted||a.loaded&&a.loaded===a.total||e.level<=h)return this.clearTimer(),void(this._nextAutoLevel=-1);if(!r||s.paused||!s.playbackRate||!s.readyState)return;const c=i.mainForwardBufferInfo;if(null===c)return;const d=this.bwEstimator.getEstimateTTFB(),u=Math.abs(s.playbackRate);if(l<=Math.max(d,o/(2*u)*1e3))return;const f=c.len/u,g=a.loading.first?a.loading.first-a.loading.start:-1,m=a.loaded&&g>-1,p=this.getBwEstimate(),v=i.levels,y=v[e.level],T=a.total||Math.max(a.loaded,Math.round(o*y.averageBitrate/8));let E=m?l-g:l;E<1&&m&&(E=Math.min(l,8*a.loaded/p));const S=m?1e3*a.loaded/E:0,b=S?(T-a.loaded)/S:8*T/p+d/1e3;if(b<=f)return;const L=S?8*S:p;let w,A=Number.POSITIVE_INFINITY;for(w=e.level-1;w>h;w--){const e=v[w].maxBitrate;if(A=this.getTimeToLoadFrag(d/1e3,L,o*e,!v[w].details),A=b)return;if(A>10*o)return;i.nextLoadLevel=i.nextAutoLevel=w,m?this.bwEstimator.sample(l-Math.min(d,g),a.loaded):this.bwEstimator.sampleTTFB(l);const R=v[w].maxBitrate;this.getBwEstimate()*this.hls.config.abrBandWidthUpFactor>R&&this.resetEstimator(R),this.clearTimer(),lr.warn(`[abr] Fragment ${e.sn}${t?" part "+t.index:""} of level ${e.level} is loading too slowly;\n Time to underbuffer: ${f.toFixed(3)} s\n Estimated load time for current fragment: ${b.toFixed(3)} s\n Estimated load time for down switch fragment: ${A.toFixed(3)} s\n TTFB estimate: ${0|g} ms\n Current BW estimate: ${Ji(p)?0|p:"Unknown"} bps\n New BW estimate: ${0|this.getBwEstimate()} bps\n Switching to level ${w} @ ${0|R} bps`),i.trigger(tr.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e,part:t,stats:a})},this.hls=e,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(e){e&&(lr.log(`setting initial bwe to ${e}`),this.hls.config.abrEwmaDefaultEstimate=e),this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){const e=this.hls.config;return new ca(e.abrEwmaSlowVoD,e.abrEwmaFastVoD,e.abrEwmaDefaultEstimate)}registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.FRAG_LOADING,this.onFragLoading,this),e.on(tr.FRAG_LOADED,this.onFragLoaded,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e&&(e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.FRAG_LOADING,this.onFragLoading,this),e.off(tr.FRAG_LOADED,this.onFragLoaded,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.off(tr.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){const i=t.frag;if(!this.ignoreFragment(i)){var r;if(!i.bitrateTest)this.fragCurrent=i,this.partCurrent=null!=(r=t.part)?r: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 rr.BUFFER_ADD_CODEC_ERROR:case rr.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case rr.FRAG_LOAD_TIMEOUT:{const e=t.frag,{fragCurrent:i,partCurrent:r}=this;if(e&&i&&e.sn===i.sn&&e.level===i.level){const t=performance.now(),i=r?r.stats:e.stats,s=t-i.loading.start,n=i.loading.first?i.loading.first-i.loading.start:-1;if(i.loaded&&n>-1){const e=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(s-Math.min(e,n),i.loaded)}else this.bwEstimator.sampleTTFB(s)}break}}}getTimeToLoadFrag(e,t,i,r){return e+i/t+(r?this.lastLevelLoadSec:0)}onLevelLoaded(e,t){const i=this.hls.config,{loading:r}=t.stats,s=r.end-r.start;Ji(s)&&(this.lastLevelLoadSec=s/1e3),t.details.live?this.bwEstimator.update(i.abrEwmaSlowLive,i.abrEwmaFastLive):this.bwEstimator.update(i.abrEwmaSlowVoD,i.abrEwmaFastVoD)}onFragLoaded(e,{frag:t,part:i}){const r=i?i.stats:t.stats;if(t.type===hn&&this.bwEstimator.sampleTTFB(r.loading.first-r.loading.start),!this.ignoreFragment(t)){if(this.clearTimer(),t.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){const e=i?i.duration:t.duration,s=this.hls.levels[t.level],n=(s.loaded?s.loaded.bytes:0)+r.loaded,a=(s.loaded?s.loaded.duration:0)+e;s.loaded={bytes:n,duration:a},s.realBitrate=Math.round(8*n/a)}if(t.bitrateTest){const e={stats:r,frag:t,part:i,id:t.type};this.onFragBuffered(tr.FRAG_BUFFERED,e),t.bitrateTest=!1}else this.lastLoadedFragLevel=t.level}}onFragBuffered(e,t){const{frag:i,part:r}=t,s=null!=r&&r.stats.loaded?r.stats:i.stats;if(s.aborted)return;if(this.ignoreFragment(i))return;const n=s.parsing.end-s.loading.start-Math.min(s.loading.first-s.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(n,s.loaded),s.bwEstimate=this.getBwEstimate(),i.bitrateTest?this.bitrateTestDelay=n/1e3:this.bitrateTestDelay=0}ignoreFragment(e){return e.type!==hn||"initSegment"===e.sn}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){const{maxAutoLevel:e,minAutoLevel:t}=this.hls,i=this.getBwEstimate(),r=this.hls.config.maxStarvationDelay,s=this.findBestLevel(i,t,e,0,r,1,1);if(s>-1)return s;const n=this.hls.firstLevel,a=Math.min(Math.max(n,t),e);return lr.warn(`[abr] Could not find best starting auto level. Defaulting to first in playlist ${n} clamped to ${a}`),a}get forcedAutoLevel(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}get nextAutoLevel(){const e=this.forcedAutoLevel,t=this.bwEstimator.canEstimate(),i=this.lastLoadedFragLevel>-1;if(!(-1===e||t&&i&&this.nextAutoLevelKey!==this.getAutoLevelKey()))return e;const r=t&&i?this.getNextABRAutoLevel():this.firstAutoLevel;if(-1!==e){const t=this.hls.levels;if(t.length>Math.max(e,r)&&t[e].loadError<=t[r].loadError)return e}return this._nextAutoLevel=r,this.nextAutoLevelKey=this.getAutoLevelKey(),r}getAutoLevelKey(){return`${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){const{fragCurrent:e,partCurrent:t,hls:i}=this,{maxAutoLevel:r,config:s,minAutoLevel:n}=i,a=t?t.duration:e?e.duration:0,o=this.getBwEstimate(),l=this.getStarvationDelay();let h=s.abrBandWidthFactor,c=s.abrBandWidthUpFactor;if(l){const e=this.findBestLevel(o,n,r,l,0,h,c);if(e>=0)return e}let d=a?Math.min(a,s.maxStarvationDelay):s.maxStarvationDelay;if(!l){const e=this.bitrateTestDelay;if(e){d=(a?Math.min(a,s.maxLoadingDelay):s.maxLoadingDelay)-e,lr.info(`[abr] bitrate test took ${Math.round(1e3*e)}ms, set first fragment max fetchDuration to ${Math.round(1e3*d)} ms`),h=c=1}}const u=this.findBestLevel(o,n,r,l,d,h,c);if(lr.info(`[abr] ${l?"rebuffering expected":"buffer is empty"}, optimal quality level ${u}`),u>-1)return u;const f=i.levels[n],g=i.levels[i.loadLevel];return(null==f?void 0:f.bitrate)<(null==g?void 0:g.bitrate)?n:i.loadLevel}getStarvationDelay(){const e=this.hls,t=e.media;if(!t)return 1/0;const i=t&&0!==t.playbackRate?Math.abs(t.playbackRate):1,r=e.mainForwardBufferInfo;return(r?r.len:0)/i}getBwEstimate(){return this.bwEstimator.canEstimate()?this.bwEstimator.getEstimate():this.hls.config.abrEwmaDefaultEstimate}findBestLevel(e,t,i,r,s,n,a){var o;const l=r+s,h=this.lastLoadedFragLevel,c=-1===h?this.hls.firstLevel:h,{fragCurrent:d,partCurrent:u}=this,{levels:f,allAudioTracks:g,loadLevel:m,config:p}=this.hls;if(1===f.length)return 0;const v=f[c],y=!(null==v||null==(o=v.details)||!o.live),T=-1===m||-1===h;let E,S="SDR",b=(null==v?void 0:v.frameRate)||0;const{audioPreference:L,videoPreference:w}=p,A=this.audioTracksByGroup||(this.audioTracksByGroup=function(e){return e.reduce(((e,t)=>{let i=e.groups[t.groupId];i||(i=e.groups[t.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),i.tracks.push(t);const r=t.channels||"2";return i.channels[r]=(i.channels[r]||0)+1,i.hasDefault=i.hasDefault||t.default,i.hasAutoSelect=i.hasAutoSelect||t.autoselect,i.hasDefault&&(e.hasDefaultAudio=!0),i.hasAutoSelect&&(e.hasAutoSelectAudio=!0),e}),{hasDefaultAudio:!1,hasAutoSelectAudio:!1,groups:{}})}(g));if(T){if(-1!==this.firstSelection)return this.firstSelection;const r=this.codecTiers||(this.codecTiers=function(e,t,i,r){return e.slice(i,r+1).reduce(((e,i)=>{if(!i.codecSet)return e;const r=i.audioGroups;let s=e[i.codecSet];s||(e[i.codecSet]=s={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!r,fragmentError:0}),s.minBitrate=Math.min(s.minBitrate,i.bitrate);const n=Math.min(i.height,i.width);return s.minHeight=Math.min(s.minHeight,n),s.minFramerate=Math.min(s.minFramerate,i.frameRate),s.maxScore=Math.max(s.maxScore,i.score),s.fragmentError+=i.fragmentError,s.videoRanges[i.videoRange]=(s.videoRanges[i.videoRange]||0)+1,r&&r.forEach((e=>{if(!e)return;const i=t.groups[e];i&&(s.hasDefaultAudio=s.hasDefaultAudio||t.hasDefaultAudio?i.hasDefault:i.hasAutoSelect||!t.hasDefaultAudio&&!t.hasAutoSelectAudio,Object.keys(i.channels).forEach((e=>{s.channels[e]=(s.channels[e]||0)+i.channels[e]})))})),e}),{})}(f,A,t,i)),s=function(e,t,i,r,s){const n=Object.keys(e),a=null==r?void 0:r.channels,o=null==r?void 0:r.audioCodec,l=a&&2===parseInt(a);let h=!0,c=!1,d=1/0,u=1/0,f=1/0,g=0,m=[];const{preferHDR:p,allowedVideoRanges:v}=ma(t,s);for(let t=n.length;t--;){const i=e[n[t]];h=i.channels[2]>0,d=Math.min(d,i.minHeight),u=Math.min(u,i.minFramerate),f=Math.min(f,i.minBitrate);const r=v.filter((e=>i.videoRanges[e]>0));r.length>0&&(c=!0,m=r)}d=Ji(d)?d:0,u=Ji(u)?u:0;const y=Math.max(1080,d),T=Math.max(30,u);return f=Ji(f)?f:i,i=Math.max(f,i),c||(t=void 0,m=[]),{codecSet:n.reduce(((t,r)=>{const s=e[r];if(r===t)return t;if(s.minBitrate>i)return pa(r,`min bitrate of ${s.minBitrate} > current estimate of ${i}`),t;if(!s.hasDefaultAudio)return pa(r,"no renditions with default or auto-select sound found"),t;if(o&&r.indexOf(o.substring(0,4))%5!=0)return pa(r,`audio codec preference "${o}" not found`),t;if(a&&!l){if(!s.channels[a])return pa(r,`no renditions with ${a} channel sound found (channels options: ${Object.keys(s.channels)})`),t}else if((!o||l)&&h&&0===s.channels[2])return pa(r,"no renditions with stereo sound found"),t;return s.minHeight>y?(pa(r,`min resolution of ${s.minHeight} > maximum of ${y}`),t):s.minFramerate>T?(pa(r,`min framerate of ${s.minFramerate} > maximum of ${T}`),t):m.some((e=>s.videoRanges[e]>0))?s.maxScore=$s(t)||s.fragmentError>e[t].fragmentError)?t:(g=s.maxScore,r):(pa(r,`no variants with VIDEO-RANGE of ${JSON.stringify(m)} found`),t)}),void 0),videoRanges:m,preferHDR:p,minFramerate:u,minBitrate:f}}(r,S,e,L,w),{codecSet:n,videoRanges:a,minFramerate:o,minBitrate:l,preferHDR:h}=s;E=n,S=h?a[a.length-1]:a[0],b=o,e=Math.max(e,l),lr.log(`[abr] picked start tier ${JSON.stringify(s)}`)}else E=null==v?void 0:v.codecSet,S=null==v?void 0:v.videoRange;const R=u?u.duration:d?d.duration:0,k=this.bwEstimator.getEstimateTTFB()/1e3,_=[];for(let o=i;o>=t;o--){var D;const t=f[o],d=o>c;if(!t)continue;if(p.useMediaCapabilities&&!t.supportedResult&&!t.supportedPromise){const i=navigator.mediaCapabilities;"function"==typeof(null==i?void 0:i.decodingInfo)&&fa(t,A,S,b,e,L)?(t.supportedPromise=ga(t,A,i),t.supportedPromise.then((e=>{if(!this.hls)return;t.supportedResult=e;const i=this.hls.levels,r=i.indexOf(t);e.error?lr.warn(`[abr] MediaCapabilities decodingInfo error: "${e.error}" for level ${r} ${JSON.stringify(e)}`):e.supported||(lr.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${r} ${JSON.stringify(e)}`),r>-1&&i.length>1&&(lr.log(`[abr] Removing unsupported level ${r}`),this.hls.removeLevel(r)))}))):t.supportedResult=da}if(E&&t.codecSet!==E||S&&t.videoRange!==S||d&&b>t.frameRate||!d&&b>0&&b=2*R&&0===s?f[o].averageBitrate:f[o].maxBitrate,I=this.getTimeToLoadFrag(k,x,C*w,void 0===g);if(x>=C&&(o===h||0===t.loadError&&0===t.fragmentError)&&(I<=k||!Ji(I)||y&&!this.bitrateTestDelay||I${o} adjustedbw(${Math.round(x)})-bitrate=${Math.round(x-C)} ttfb:${k.toFixed(1)} avgDuration:${w.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${I.toFixed(1)} firstSelection:${T} codecSet:${E} videoRange:${S} hls.loadLevel:${m}`)),T&&(this.firstSelection=o),o}}return-1}set nextAutoLevel(e){const{maxAutoLevel:t,minAutoLevel:i}=this.hls,r=Math.min(Math.max(e,i),t);this._nextAutoLevel!==r&&(this.nextAutoLevelKey="",this._nextAutoLevel=r)}},bufferController: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=e=>{this.hls&&this.hls.pauseBuffering()},this._onStartStreaming=e=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=()=>{const{media:e,mediaSource:t}=this;this.log("Media source opened"),e&&(e.removeEventListener("emptied",this._onMediaEmptied),this.updateMediaElementDuration(),this.hls.trigger(tr.MEDIA_ATTACHED,{media:e,mediaSource:t})),t&&t.removeEventListener("sourceopen",this._onMediaSourceOpen),this.checkPendingTracks()},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{const{mediaSrc:e,_objectUrl:t}=this;e!==t&&lr.error(`Media element src was set while attaching MediaSource (${t} > ${e})`)},this.hls=e;const t="[buffer-controller]";var i;this.appendSource=(i=Os(e.config.preferManagedMediaSource),"undefined"!=typeof self&&i===self.ManagedMediaSource),this.log=lr.log.bind(lr,t),this.warn=lr.warn.bind(lr,t),this.error=lr.error.bind(lr,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(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.BUFFER_RESET,this.onBufferReset,this),e.on(tr.BUFFER_APPENDING,this.onBufferAppending,this),e.on(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.on(tr.BUFFER_EOS,this.onBufferEos,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(tr.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(tr.FRAG_PARSED,this.onFragParsed,this),e.on(tr.FRAG_CHANGED,this.onFragChanged,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.BUFFER_RESET,this.onBufferReset,this),e.off(tr.BUFFER_APPENDING,this.onBufferAppending,this),e.off(tr.BUFFER_CODECS,this.onBufferCodecs,this),e.off(tr.BUFFER_EOS,this.onBufferEos,this),e.off(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(tr.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(tr.FRAG_PARSED,this.onFragParsed,this),e.off(tr.FRAG_CHANGED,this.onFragChanged,this)}_initSourceBuffer(){this.sourceBuffer={},this.operationQueue=new Tl(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 i=2;(t.audio&&!t.video||!t.altAudio)&&(i=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=i,this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`)}onMediaAttaching(e,t){const i=this.media=t.media,r=Os(this.appendSource);if(i&&r){var s;const e=this.mediaSource=new r;this.log(`created media source: ${null==(s=e.constructor)?void 0:s.name}`),e.addEventListener("sourceopen",this._onMediaSourceOpen),e.addEventListener("sourceended",this._onMediaSourceEnded),e.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(e.addEventListener("startstreaming",this._onStartStreaming),e.addEventListener("endstreaming",this._onEndStreaming));const t=this._objectUrl=self.URL.createObjectURL(e);if(this.appendSource)try{i.removeAttribute("src");const r=self.ManagedMediaSource;i.disableRemotePlayback=i.disableRemotePlayback||r&&e instanceof r,Sl(i),function(e,t){const i=self.document.createElement("source");i.type="video/mp4",i.src=t,e.appendChild(i)}(i,t),i.load()}catch(e){i.src=t}else i.src=t;i.addEventListener("emptied",this._onMediaEmptied)}}onMediaDetaching(){const{media:e,mediaSource:t,_objectUrl:i}=this;if(t){if(this.log("media source detaching"),"open"===t.readyState)try{t.endOfStream()}catch(e){this.warn(`onMediaDetaching: ${e.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),i&&self.URL.revokeObjectURL(i),this.mediaSrc===i?(e.removeAttribute("src"),this.appendSource&&Sl(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(tr.MEDIA_DETACHED,void 0)}onBufferReset(){this.getSourceBufferTypes().forEach((e=>{this.resetBuffer(e)})),this._initSourceBuffer()}resetBuffer(e){const t=this.sourceBuffer[e];try{var i;if(t)this.removeBufferListeners(e),this.sourceBuffer[e]=void 0,null!=(i=this.mediaSource)&&i.sourceBuffers.length&&this.mediaSource.removeSourceBuffer(t)}catch(t){this.warn(`onBufferReset ${e}`,t)}}onBufferCodecs(e,t){const i=this.getSourceBufferTypes().length,r=Object.keys(t);if(r.forEach((e=>{if(i){const i=this.tracks[e];if(i&&"function"==typeof i.buffer.changeType){var r;const{id:s,codec:n,levelCodec:a,container:o,metadata:l}=t[e],h=Hs(i.codec,i.levelCodec),c=null==h?void 0:h.replace(El,"$1");let d=Hs(n,a);const u=null==(r=d)?void 0:r.replace(El,"$1");if(d&&c!==u){"audio"===e.slice(0,5)&&(d=Vs(d,this.appendSource));const t=`${o};codecs=${d}`;this.appendChangeType(e,t),this.log(`switching codec ${h} to ${d}`),this.tracks[e]={buffer:i.buffer,codec:n,container:o,levelCodec:a,metadata:l,id:s}}}}else this.pendingTracks[e]=t[e]})),i)return;const s=Math.max(this.bufferCodecEventsExpected-1,0);this.bufferCodecEventsExpected!==s&&(this.log(`${s} bufferCodec event(s) expected ${r.join(",")}`),this.bufferCodecEventsExpected=s),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks()}appendChangeType(e,t){const{operationQueue:i}=this,r={execute:()=>{const r=this.sourceBuffer[e];r&&(this.log(`changing ${e} sourceBuffer type to ${t}`),r.changeType(t)),i.shiftAndExecuteNext(e)},onStart:()=>{},onComplete:()=>{},onError:t=>{this.warn(`Failed to change ${e} SourceBuffer type`,t)}};i.append(r,e,!!this.pendingTracks[e])}onBufferAppending(e,t){const{hls:i,operationQueue:r,tracks:s}=this,{data:n,type:a,frag:o,part:l,chunkMeta:h}=t,c=h.buffering[a],d=self.performance.now();c.start=d;const u=o.stats.buffering,f=l?l.stats.buffering:null;0===u.start&&(u.start=d),f&&0===f.start&&(f.start=d);const g=s.audio;let m=!1;"audio"===a&&"audio/mpeg"===(null==g?void 0:g.container)&&(m=!this.lastMpegAudioChunk||1===h.id||this.lastMpegAudioChunk.sn!==h.sn,this.lastMpegAudioChunk=h);const p=o.start,v={execute:()=>{if(c.executeStart=self.performance.now(),m){const e=this.sourceBuffer[a];if(e){const t=p-e.timestampOffset;Math.abs(t)>=.1&&(this.log(`Updating audio SourceBuffer timestampOffset to ${p} (delta: ${t}) sn: ${o.sn})`),e.timestampOffset=p)}}this.appendExecutor(n,a)},onStart:()=>{},onComplete:()=>{const e=self.performance.now();c.executeEnd=c.end=e,0===u.first&&(u.first=e),f&&0===f.first&&(f.first=e);const{sourceBuffer:t}=this,i={};for(const e in t)i[e]=xa.getBuffered(t[e]);this.appendErrors[a]=0,"audio"===a||"video"===a?this.appendErrors.audiovideo=0:(this.appendErrors.audio=0,this.appendErrors.video=0),this.hls.trigger(tr.BUFFER_APPENDED,{type:a,frag:o,part:l,chunkMeta:h,parent:o.type,timeRanges:i})},onError:e=>{const t={type:ir.MEDIA_ERROR,parent:o.type,details:rr.BUFFER_APPEND_ERROR,sourceBufferName:a,frag:o,part:l,chunkMeta:h,error:e,err:e,fatal:!1};if(e.code===DOMException.QUOTA_EXCEEDED_ERR)t.details=rr.BUFFER_FULL_ERROR;else{const e=++this.appendErrors[a];t.details=rr.BUFFER_APPEND_ERROR,this.warn(`Failed ${e}/${i.config.appendErrorMaxRetry} times to append segment in "${a}" sourceBuffer`),e>=i.config.appendErrorMaxRetry&&(t.fatal=!0)}i.trigger(tr.ERROR,t)}};r.append(v,a,!!this.pendingTracks[a])}onBufferFlushing(e,t){const{operationQueue:i}=this,r=e=>({execute:this.removeExecutor.bind(this,e,t.startOffset,t.endOffset),onStart:()=>{},onComplete:()=>{this.hls.trigger(tr.BUFFER_FLUSHED,{type:e})},onError:t=>{this.warn(`Failed to remove from ${e} SourceBuffer`,t)}});t.type?i.append(r(t.type),t.type):this.getSourceBufferTypes().forEach((e=>{i.append(r(e),e)}))}onFragParsed(e,t){const{frag:i,part:r}=t,s=[],n=r?r.elementaryStreams:i.elementaryStreams;n[vr]?s.push("audiovideo"):(n[mr]&&s.push("audio"),n[pr]&&s.push("video"));0===s.length&&this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${i.type} level: ${i.level} sn: ${i.sn}`),this.blockBuffers((()=>{const e=self.performance.now();i.stats.buffering.end=e,r&&(r.stats.buffering.end=e);const t=r?r.stats:i.stats;this.hls.trigger(tr.FRAG_BUFFERED,{frag:i,part:r,stats:t,id:i.type})}),s)}onFragChanged(e,t){this.trimBuffers()}onBufferEos(e,t){this.getSourceBufferTypes().reduce(((e,i)=>{const r=this.sourceBuffer[i];return!r||t.type&&t.type!==i||(r.ending=!0,r.ended||(r.ended=!0,this.log(`${i} sourceBuffer now EOS`))),e&&!(r&&!r.ended)}),!0)&&(this.log("Queueing mediaSource.endOfStream()"),this.blockBuffers((()=>{this.getSourceBufferTypes().forEach((e=>{const t=this.sourceBuffer[e];t&&(t.ending=!1)}));const{mediaSource:e}=this;e&&"open"===e.readyState?(this.log("Calling mediaSource.endOfStream()"),e.endOfStream()):e&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${e.readyState}`)})))}onLevelUpdated(e,{details:t}){t.fragments.length&&(this.details=t,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())}trimBuffers(){const{hls:e,details:t,media:i}=this;if(!i||null===t)return;if(!this.getSourceBufferTypes().length)return;const r=e.config,s=i.currentTime,n=t.levelTargetDuration,a=t.live&&null!==r.liveBackBufferLength?r.liveBackBufferLength:r.backBufferLength;if(Ji(a)&&a>0){const e=Math.max(a,n),t=Math.floor(s/n)*n-e;this.flushBackBuffer(s,n,t)}if(Ji(r.frontBufferFlushThreshold)&&r.frontBufferFlushThreshold>0){const e=Math.max(r.maxBufferLength,r.frontBufferFlushThreshold),t=Math.max(e,n),i=Math.floor(s/n)*n+t;this.flushFrontBuffer(s,n,i)}}flushBackBuffer(e,t,i){const{details:r,sourceBuffer:s}=this;this.getSourceBufferTypes().forEach((n=>{const a=s[n];if(a){const s=xa.getBuffered(a);if(s.length>0&&i>s.start(0)){if(this.hls.trigger(tr.BACK_BUFFER_REACHED,{bufferEnd:i}),null!=r&&r.live)this.hls.trigger(tr.LIVE_BACK_BUFFER_REACHED,{bufferEnd:i});else if(a.ended&&s.end(s.length-1)-e<2*t)return void this.log(`Cannot flush ${n} back buffer while SourceBuffer is in ended state`);this.hls.trigger(tr.BUFFER_FLUSHING,{startOffset:0,endOffset:i,type:n})}}}))}flushFrontBuffer(e,t,i){const{sourceBuffer:r}=this;this.getSourceBufferTypes().forEach((s=>{const n=r[s];if(n){const r=xa.getBuffered(n),a=r.length;if(a<2)return;const o=r.start(a-1),l=r.end(a-1);if(i>o||e>=o&&e<=l)return;if(n.ended&&e-l<2*t)return void this.log(`Cannot flush ${s} front buffer while SourceBuffer is in ended state`);this.hls.trigger(tr.BUFFER_FLUSHING,{startOffset:o,endOffset:1/0,type:s})}}))}updateMediaElementDuration(){if(!this.details||!this.media||!this.mediaSource||"open"!==this.mediaSource.readyState)return;const{details:e,hls:t,media:i,mediaSource:r}=this,s=e.fragments[0].start+e.totalduration,n=i.duration,a=Ji(r.duration)?r.duration:0;e.live&&t.config.liveDurationInfinity?(r.duration=1/0,this.updateSeekableRange(e)):(s>a&&s>n||!Ji(n))&&(this.log(`Updating Media Source duration to ${s.toFixed(3)}`),r.duration=s)}updateSeekableRange(e){const t=this.mediaSource,i=e.fragments;if(i.length&&e.live&&null!=t&&t.setLiveSeekableRange){const r=Math.max(0,i[0].start),s=Math.max(r,r+e.totalduration);this.log(`Media Source duration is set to ${t.duration}. Setting seekable range to ${r}-${s}.`),t.setLiveSeekableRange(r,s)}}checkPendingTracks(){const{bufferCodecEventsExpected:e,operationQueue:t,pendingTracks:i}=this,r=Object.keys(i).length;if(r&&(!e||2===r||"audiovideo"in i)){this.createSourceBuffers(i),this.pendingTracks={};const e=this.getSourceBufferTypes();if(e.length)this.hls.trigger(tr.BUFFER_CREATED,{tracks:this.tracks}),e.forEach((e=>{t.executeNext(e)}));else{const e=new Error("could not create source buffer for media codec(s)");this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:e,reason:e.message})}}}createSourceBuffers(e){const{sourceBuffer:t,mediaSource:i}=this;if(!i)throw Error("createSourceBuffers called when mediaSource was null");for(const s in e)if(!t[s]){var r;const n=e[s];if(!n)throw Error(`source buffer exists for track ${s}, however track does not`);let a=-1===(null==(r=n.levelCodec)?void 0:r.indexOf(","))?n.levelCodec:n.codec;a&&"audio"===s.slice(0,5)&&(a=Vs(a,this.appendSource));const o=`${n.container};codecs=${a}`;this.log(`creating sourceBuffer(${o})`);try{const e=t[s]=i.addSourceBuffer(o),r=s;this.addBufferListener(r,"updatestart",this._onSBUpdateStart),this.addBufferListener(r,"updateend",this._onSBUpdateEnd),this.addBufferListener(r,"error",this._onSBUpdateError),this.appendSource&&this.addBufferListener(r,"bufferedchange",((e,t)=>{const i=t.removedRanges;null!=i&&i.length&&this.hls.trigger(tr.BUFFER_FLUSHED,{type:s})})),this.tracks[s]={buffer:e,codec:a,container:n.container,levelCodec:n.levelCodec,metadata:n.metadata,id:n.id}}catch(e){this.error(`error while trying to add sourceBuffer: ${e.message}`),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:e,sourceBufferName:s,mimeType:o})}}}get mediaSrc(){var e;const t=(null==(e=this.media)?void 0:e.firstChild)||this.media;return null==t?void 0:t.src}_onSBUpdateStart(e){const{operationQueue:t}=this;t.current(e).onStart()}_onSBUpdateEnd(e){var t;if("closed"===(null==(t=this.mediaSource)?void 0:t.readyState))return void this.resetBuffer(e);const{operationQueue:i}=this;i.current(e).onComplete(),i.shiftAndExecuteNext(e)}_onSBUpdateError(e,t){var i;const r=new Error(`${e} SourceBuffer error. MediaSource readyState: ${null==(i=this.mediaSource)?void 0:i.readyState}`);this.error(`${r}`,t),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_APPENDING_ERROR,sourceBufferName:e,error:r,fatal:!1});const s=this.operationQueue.current(e);s&&s.onError(r)}removeExecutor(e,t,i){const{media:r,mediaSource:s,operationQueue:n,sourceBuffer:a}=this,o=a[e];if(!r||!s||!o)return this.warn(`Attempting to remove from the ${e} SourceBuffer, but it does not exist`),void n.shiftAndExecuteNext(e);const l=Ji(r.duration)?r.duration:1/0,h=Ji(s.duration)?s.duration:1/0,c=Math.max(0,t),d=Math.min(i,l,h);d>c&&(!o.ending||o.ended)?(o.ended=!1,this.log(`Removing [${c},${d}] from the ${e} SourceBuffer`),o.remove(c,d)):n.shiftAndExecuteNext(e)}appendExecutor(e,t){const i=this.sourceBuffer[t];if(i)i.ended=!1,i.appendBuffer(e);else if(!this.pendingTracks[t])throw new Error(`Attempting to append to the ${t} SourceBuffer, but it does not exist`)}blockBuffers(e,t=this.getSourceBufferTypes()){if(!t.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(e);const{operationQueue:i}=this,r=t.map((e=>i.appendBlocker(e)));Promise.all(r).then((()=>{e(),t.forEach((e=>{const t=this.sourceBuffer[e];null!=t&&t.updating||i.shiftAndExecuteNext(e)}))}))}getSourceBufferTypes(){return Object.keys(this.sourceBuffer)}addBufferListener(e,t,i){const r=this.sourceBuffer[e];if(!r)return;const s=i.bind(this,e);this.listeners[e].push({event:t,listener:s}),r.addEventListener(t,s)}removeBufferListeners(e){const t=this.sourceBuffer[e];t&&this.listeners[e].forEach((e=>{t.removeEventListener(e.event,e.listener)}))}},capLevelController:ph,errorController: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=lr.log.bind(lr,"[info]:"),this.warn=lr.warn.bind(lr,"[warning]:"),this.error=lr.error.bind(lr,"[error]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(tr.ERROR,this.onError,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){const e=this.hls;e&&(e.off(tr.ERROR,this.onError,this),e.off(tr.ERROR,this.onErrorOut,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}}startLoad(e){}stopLoad(){this.playlistError=0}getVariantLevelIndex(e){return(null==e?void 0:e.type)===hn?e.level:this.hls.loadLevel}onManifestLoading(){this.playlistError=0,this.penalizedRenditions={}}onLevelUpdated(){this.playlistError=0}onError(e,t){var i,r;if(t.fatal)return;const s=this.hls,n=t.context;switch(t.details){case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:return void(t.errorAction=this.getFragRetryOrSwitchAction(t));case rr.FRAG_PARSING_ERROR:if(null!=(i=t.frag)&&i.gap)return void(t.errorAction={action:ta,flags:na});case rr.FRAG_GAP:case rr.FRAG_DECRYPT_ERROR:return t.errorAction=this.getFragRetryOrSwitchAction(t),void(t.errorAction.action=ia);case rr.LEVEL_EMPTY_ERROR:case rr.LEVEL_PARSING_ERROR:{var a,o;const e=t.parent===hn?t.level:s.loadLevel;t.details===rr.LEVEL_EMPTY_ERROR&&null!=(a=t.context)&&null!=(o=a.levelDetails)&&o.live?t.errorAction=this.getPlaylistRetryOrSwitchAction(t,e):(t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,e))}return;case rr.LEVEL_LOAD_ERROR:case rr.LEVEL_LOAD_TIMEOUT:return void("number"==typeof(null==n?void 0:n.level)&&(t.errorAction=this.getPlaylistRetryOrSwitchAction(t,n.level)));case rr.AUDIO_TRACK_LOAD_ERROR:case rr.AUDIO_TRACK_LOAD_TIMEOUT:case rr.SUBTITLE_LOAD_ERROR:case rr.SUBTITLE_TRACK_LOAD_TIMEOUT:if(n){const e=s.levels[s.loadLevel];if(e&&(n.type===on&&e.hasAudioGroup(n.groupId)||n.type===ln&&e.hasSubtitleGroup(n.groupId)))return t.errorAction=this.getPlaylistRetryOrSwitchAction(t,s.loadLevel),t.errorAction.action=ia,void(t.errorAction.flags=aa)}return;case rr.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:{const e=s.levels[s.loadLevel],i=null==e?void 0:e.attrs["HDCP-LEVEL"];i?t.errorAction={action:ia,flags:oa,hdcpLevel:i}:this.keySystemError(t)}return;case rr.BUFFER_ADD_CODEC_ERROR:case rr.REMUX_ALLOC_ERROR:case rr.BUFFER_APPEND_ERROR:return void(t.errorAction=this.getLevelSwitchAction(t,null!=(r=t.level)?r:s.loadLevel));case rr.INTERNAL_EXCEPTION:case rr.BUFFER_APPENDING_ERROR:case rr.BUFFER_FULL_ERROR:case rr.LEVEL_SWITCH_ERROR:case rr.BUFFER_STALLED_ERROR:case rr.BUFFER_SEEK_OVER_HOLE:case rr.BUFFER_NUDGE_ON_STALL:return void(t.errorAction={action:ta,flags:na})}t.type===ir.KEY_SYSTEM_ERROR&&this.keySystemError(t)}keySystemError(e){const t=this.getVariantLevelIndex(e.frag);e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,t)}getPlaylistRetryOrSwitchAction(e,t){const i=Yn(this.hls.config.playlistLoadPolicy,e),r=this.playlistError++;if(Xn(i,r,Wn(e),e.response))return{action:sa,flags:na,retryConfig:i,retryCount:r};const s=this.getLevelSwitchAction(e,t);return i&&(s.retryConfig=i,s.retryCount=r),s}getFragRetryOrSwitchAction(e){const t=this.hls,i=this.getVariantLevelIndex(e.frag),r=t.levels[i],{fragLoadPolicy:s,keyLoadPolicy:n}=t.config,a=Yn(e.details.startsWith("key")?n:s,e),o=t.levels.reduce(((e,t)=>e+t.fragmentError),0);if(r){e.details!==rr.FRAG_GAP&&r.fragmentError++;if(Xn(a,o,Wn(e),e.response))return{action:sa,flags:na,retryConfig:a,retryCount:o}}const l=this.getLevelSwitchAction(e,i);return a&&(l.retryConfig=a,l.retryCount=o),l}getLevelSwitchAction(e,t){const i=this.hls;null==t&&(t=i.loadLevel);const r=this.hls.levels[t];if(r){var s,n;const t=e.details;r.loadError++,t===rr.BUFFER_APPEND_ERROR&&r.fragmentError++;let l=-1;const{levels:h,loadLevel:c,minAutoLevel:d,maxAutoLevel:u}=i;i.autoLevelEnabled||(i.loadLevel=-1);const f=null==(s=e.frag)?void 0:s.type,g=(f===cn&&t===rr.FRAG_PARSING_ERROR||"audio"===e.sourceBufferName&&(t===rr.BUFFER_ADD_CODEC_ERROR||t===rr.BUFFER_APPEND_ERROR))&&h.some((({audioCodec:e})=>r.audioCodec!==e)),m="video"===e.sourceBufferName&&(t===rr.BUFFER_ADD_CODEC_ERROR||t===rr.BUFFER_APPEND_ERROR)&&h.some((({codecSet:e,audioCodec:t})=>r.codecSet!==e&&r.audioCodec===t)),{type:p,groupId:v}=null!=(n=e.context)?n:{};for(let i=h.length;i--;){const s=(i+c)%h.length;if(s!==c&&s>=d&&s<=u&&0===h[s].loadError){var a,o;const i=h[s];if(t===rr.FRAG_GAP&&f===hn&&e.frag){const t=h[s].details;if(t){const i=Jn(e.frag,t.fragments,e.frag.start);if(null!=i&&i.gap)continue}}else{if(p===on&&i.hasAudioGroup(v)||p===ln&&i.hasSubtitleGroup(v))continue;if(f===cn&&null!=(a=r.audioGroups)&&a.some((e=>i.hasAudioGroup(e)))||f===dn&&null!=(o=r.subtitleGroups)&&o.some((e=>i.hasSubtitleGroup(e)))||g&&r.audioCodec===i.audioCodec||!g&&r.audioCodec!==i.audioCodec||m&&r.codecSet===i.codecSet)continue}l=s;break}}if(l>-1&&i.loadLevel!==l)return e.levelRetry=!0,this.playlistError=0,{action:ia,flags:na,nextAutoLevel:l}}return{action:ia,flags:aa}}onErrorOut(e,t){var i;switch(null==(i=t.errorAction)?void 0:i.action){case ta:break;case ia:this.sendAlternateToPenaltyBox(t),t.errorAction.resolved||t.details===rr.FRAG_GAP?/MediaSource readyState: ended/.test(t.error.message)&&(this.warn(`MediaSource ended after "${t.sourceBufferName}" sourceBuffer append error. Attempting to recover from media error.`),this.hls.recoverMediaError()):t.fatal=!0}t.fatal&&this.hls.stopLoad()}sendAlternateToPenaltyBox(e){const t=this.hls,i=e.errorAction;if(!i)return;const{flags:r,hdcpLevel:s,nextAutoLevel:n}=i;switch(r){case na:this.switchLevel(e,n);break;case oa:s&&(t.maxHdcpLevel=Dn[Dn.indexOf(s)-1],i.resolved=!0),this.warn(`Restricting playback to HDCP-LEVEL of "${t.maxHdcpLevel}" or lower`)}i.resolved||this.switchLevel(e,n)}switchLevel(e,t){void 0!==t&&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)}},fpsController: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(tr.MEDIA_ATTACHING,this.onMediaAttaching,this)}unregisterListeners(){this.hls.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(e,t){const i=this.hls.config;if(i.capLevelOnFPSDrop){const e=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=e,e&&"function"==typeof e.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),i.fpsDroppedMonitoringPeriod)}}checkFPS(e,t,i){const r=performance.now();if(t){if(this.lastTime){const e=r-this.lastTime,s=i-this.lastDroppedFrames,n=t-this.lastDecodedFrames,a=1e3*s/e,o=this.hls;if(o.trigger(tr.FPS_DROP,{currentDropped:s,currentDecoded:n,totalDroppedFrames:i}),a>0&&s>o.config.fpsDroppedMonitoringThreshold*n){let e=o.currentLevel;lr.warn("drop FPS ratio greater than max allowed value for currentLevel: "+e),e>0&&(-1===o.autoLevelCapping||o.autoLevelCapping>=e)&&(e-=1,o.trigger(tr.FPS_DROP_LEVEL_CAPPING,{level:e,droppedLevel:o.currentLevel}),o.autoLevelCapping=e,this.streamController.nextLevelSwitch())}}this.lastTime=r,this.lastDroppedFrames=i,this.lastDecodedFrames=t}}checkFPSInterval(){const e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){const t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)}},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:Mr,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableID3MetadataCues:!0,useMediaCapabilities:!0,certLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null}},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},{cueHandler:fc,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:class extends no{constructor(e,t,i){super(e,t,i,"[subtitle-stream-controller]",dn),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this._registerListeners()}onHandlerDestroying(){this._unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}_registerListeners(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.ERROR,this.onError,this),e.on(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(tr.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(tr.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this)}_unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.ERROR,this.onError,this),e.off(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(tr.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(tr.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.off(tr.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this)}startLoad(e){this.stopLoad(),this.state=qa,this.setInterval(500),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){const{frag:i,success:r}=t;if(this.fragPrevious=i,this.state=qa,!r)return;const s=this.tracksBuffered[this.currentTrackId];if(!s)return;let n;const a=i.start;for(let e=0;e=s[e].start&&a<=s[e].end){n=s[e];break}const o=i.start+i.duration;n?n.end=o:(n={start:a,end:o},s.push(n)),this.fragmentTracker.fragBuffered(i),this.fragBufferedComplete(i,null)}onBufferFlushing(e,t){const{startOffset:i,endOffset:r}=t;if(0===i&&r!==Number.POSITIVE_INFINITY){const e=r-1;if(e<=0)return;t.endOffsetSubtitles=Math.max(0,e),this.tracksBuffered.forEach((t=>{for(let i=0;inew Fn(e))):(this.tracksBuffered=[],this.levels=t.map((e=>{const t=new Fn(e);return this.tracksBuffered[t.id]=[],t})),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,dn),this.fragPrevious=null,this.mediaBuffer=null)}onSubtitleTrackSwitch(e,t){var i;if(this.currentTrackId=t.id,null==(i=this.levels)||!i.length||-1===this.currentTrackId)return void this.clearInterval();const r=this.levels[this.currentTrackId];null!=r&&r.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,r&&this.setInterval(500)}onSubtitleTrackLoaded(e,t){var i;const{currentTrackId:r,levels:s}=this,{details:n,id:a}=t;if(!s)return void this.warn(`Subtitle tracks were reset while loading level ${a}`);const o=s[a];if(a>=s.length||!o)return;this.log(`Subtitle track ${a} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""},duration:${n.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let l=0;if(n.live||null!=(i=o.details)&&i.live){const e=this.mainDetails;if(n.deltaUpdateFailed||!e)return;const t=e.fragments[0];var h;if(o.details)l=this.alignPlaylists(n,o.details,null==(h=this.levelLastLoaded)?void 0:h.details),0===l&&t&&(l=t.start,Kn(n,l));else n.hasProgramDateTime&&e.hasProgramDateTime?(Fa(n,e),l=n.fragments[0].start):t&&(l=t.start,Kn(n,l))}if(o.details=n,this.levelLastLoaded=o,a===r&&(this.startFragRequested||!this.mainDetails&&n.live||this.setStartPosition(this.mainDetails||n,l),this.tick(),n.live&&!this.fragCurrent&&this.media&&this.state===qa)){Jn(null,n.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),o.details=void 0)}}_handleFragmentLoadComplete(e){const{frag:t,payload:i}=e,r=t.decryptdata,s=this.hls;if(!this.fragContextChanged(t)&&i&&i.byteLength>0&&null!=r&&r.key&&r.iv&&"AES-128"===r.method){const e=performance.now();this.decrypter.decrypt(new Uint8Array(i),r.key.buffer,r.iv.buffer).catch((e=>{throw s.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.FRAG_DECRYPT_ERROR,fatal:!1,error:e,reason:e.message,frag:t}),e})).then((i=>{const r=performance.now();s.trigger(tr.FRAG_DECRYPTED,{frag:t,payload:i,stats:{tstart:e,tdecrypt:r}})})).catch((e=>{this.warn(`${e.name}: ${e.message}`),this.state=qa}))}}doTick(){if(this.media){if(this.state===qa){const{currentTrackId:e,levels:t}=this,i=null==t?void 0:t[e];if(!i||!t.length||!i.details)return;const{config:r}=this,s=this.getLoadPosition(),n=xa.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],s,r.maxBufferHole),{end:a,len:o}=n,l=this.getFwdBufferInfo(this.media,hn),h=i.details;if(o>this.getMaxBufferLength(null==l?void 0:l.len)+h.levelTargetDuration)return;const c=h.fragments,d=c.length,u=h.edge;let f=null;const g=this.fragPrevious;if(au-e?0:e;f=Jn(g,c,Math.max(c[0].start,a),t),!f&&g&&g.startthis.pollTrackChange(0),this.useTextTrackPolling=!1,this.subtitlePollingInterval=-1,this._subtitleDisplay=!0,this.onTextTracksChanged=()=>{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let e=null;const t=Tn(this.media.textTracks);for(let i=0;i-1&&this.toggleTrackModes()}registerListeners(){const{hls:e}=this;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVEL_LOADING,this.onLevelLoading,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVEL_LOADING,this.onLevelLoading,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(tr.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);Tn(this.media.textTracks).forEach((e=>{vn(e)})),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){const{id:i,groupId:r,details:s}=t,n=this.tracksInGroup[i];if(!n||n.groupId!==r)return void this.warn(`Subtitle track with id:${i} and group:${r} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=t.details,this.log(`Subtitle track ${i} "${n.name}" lang:${n.lang} group:${r} loaded [${s.startSN}-${s.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.subtitleGroups||null,r=this.groupIds;let s=this.currentTrack;if(!i||(null==r?void 0:r.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==r?void 0:r.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!s&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.subtitlePreference;if(!s&&t){this.selectDefaultTrack=!1;const i=va(t,e);if(i>-1)s=e[i];else{const e=va(t,this.tracks);s=this.tracks[e]}}let r=this.findTrackId(s);-1===r&&s&&(r=this.findTrackId(null));const n={subtitleTracks:e};this.log(`Updating subtitle tracks, ${e.length} track(s) found in "${null==i?void 0:i.join(",")}" group-id`),this.hls.trigger(tr.SUBTITLE_TRACKS_UPDATED,n),-1!==r&&-1===this.trackId&&this.setSubtitleTrack(r)}else this.shouldReloadPlaylist(s)&&this.setSubtitleTrack(this.trackId)}findTrackId(e){const t=this.tracksInGroup,i=this.selectDefaultTrack;for(let r=0;r-1){const e=this.tracksInGroup[r];return this.setSubtitleTrack(r),e}if(i)return null;{const i=va(e,t);if(i>-1)return t[i]}}}return null}loadPlaylist(e){super.loadPlaylist();const t=this.currentTrack;if(this.shouldLoadPlaylist(t)&&t){const i=t.id,r=t.groupId;let s=t.url;if(e)try{s=e.addDirectives(s)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}this.log(`Loading subtitle playlist for id ${i}`),this.hls.trigger(tr.SUBTITLE_TRACK_LOADING,{url:s,id:i,groupId:r,deliveryDirectives:e||null})}}toggleTrackModes(){const{media:e}=this;if(!e)return;const t=Tn(e.textTracks),i=this.currentTrack;let r;if(i&&(r=t.filter((e=>vl(i,e)))[0],r||this.warn(`Unable to find subtitle TextTrack with name "${i.name}" and language "${i.lang}"`)),[].slice.call(t).forEach((e=>{"disabled"!==e.mode&&e!==r&&(e.mode="disabled")})),r){const e=this.subtitleDisplay?"showing":"hidden";r.mode!==e&&(r.mode=e)}}setSubtitleTrack(e){const t=this.tracksInGroup;if(!this.media)return void(this.queuedDefaultTrack=e);if(e<-1||e>=t.length||!Ji(e))return void this.warn(`Invalid subtitle track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,r=t[e]||null;if(this.trackId=e,this.currentTrack=r,this.toggleTrackModes(),!r)return void this.hls.trigger(tr.SUBTITLE_TRACK_SWITCH,{id:e});const s=!!r.details&&!r.details.live;if(e===this.trackId&&r===i&&s)return;this.log(`Switching to subtitle-track ${e}`+(r?` "${r.name}" lang:${r.lang} group:${r.groupId}`:""));const{id:n,groupId:a="",name:o,type:l,url:h}=r;this.hls.trigger(tr.SUBTITLE_TRACK_SWITCH,{id:n,groupId:a,name:o,type:l,url:h});const c=this.switchParams(r.url,null==i?void 0:i.details,r.details);this.loadPlaylist(c)}},timelineController: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={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},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(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(tr.FRAG_LOADING,this.onFragLoading,this),e.on(tr.FRAG_LOADED,this.onFragLoaded,this),e.on(tr.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(tr.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(tr.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(tr.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(tr.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:e}=this;e.off(tr.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(tr.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(tr.FRAG_LOADING,this.onFragLoading,this),e.off(tr.FRAG_LOADED,this.onFragLoaded,this),e.off(tr.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(tr.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(tr.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(tr.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(tr.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)){const e=new Gl(this,"textTrack1"),t=new Gl(this,"textTrack2"),i=new Gl(this,"textTrack3"),r=new Gl(this,"textTrack4");this.cea608Parser1=new Ul(1,e,t),this.cea608Parser2=new Ul(3,i,r)}}addCues(e,t,i,r,s){let n=!1;for(let e=s.length;e--;){const r=s[e],c=(a=r[0],o=r[1],l=t,h=i,Math.min(o,h)-Math.max(a,l));if(c>=0&&(r[0]=Math.min(r[0],t),r[1]=Math.max(r[1],i),n=!0,c/(i-t)>.5))return}var a,o,l,h;if(n||s.push([t,i]),this.config.renderTextTracksNatively){const s=this.captionsTracks[e];this.Cues.newCue(s,t,i,r)}else{const s=this.Cues.newCue(null,t,i,r);this.hls.trigger(tr.CUES_PARSED,{type:"captions",cues:s,track:e})}}onInitPtsFound(e,{frag:t,id:i,initPTS:r,timescale:s}){const{unparsedVttFrags:n}=this;"main"===i&&(this.initPTS[t.cc]={baseTime:r,timescale:s}),n.length&&(this.unparsedVttFrags=[],n.forEach((e=>{this.onFragLoaded(tr.FRAG_LOADED,e)})))}getExistingTrack(e,t){const{media:i}=this;if(i)for(let r=0;r{vn(e[t]),delete e[t]})),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:e}=this;if(!e)return;const t=e.textTracks;if(t)for(let e=0;ee.textCodec===rh));if(this.config.enableWebVTT||r&&this.config.enableIMSC1){if(ml(this.tracks,i))return void(this.tracks=i);if(this.textTracks=[],this.tracks=i,this.config.renderTextTracksNatively){const e=this.media,t=e?Tn(e.textTracks):null;if(this.tracks.forEach(((e,i)=>{let r;if(t){let i=null;for(let r=0;rnull!==e)).map((e=>e.label));e.length&&lr.warn(`Media element contains unused subtitle tracks: ${e.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const e=this.tracks.map((e=>({label:e.name,kind:e.type.toLowerCase(),default:e.default,subtitleTrack:e})));this.hls.trigger(tr.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:e})}}}onManifestLoaded(e,t){this.config.enableCEA708Captions&&t.captions&&t.captions.forEach((e=>{const t=/(?:CC|SERVICE)([1-4])/.exec(e.instreamId);if(!t)return;const i=`textTrack${t[1]}`,r=this.captionsProperties[i];r&&(r.label=e.name,e.lang&&(r.languageCode=e.lang),r.media=e)}))}closedCaptionsForLevel(e){const t=this.hls.levels[e.level];return null==t?void 0:t.attrs["CLOSED-CAPTIONS"]}onFragLoading(e,t){if(this.enabled&&t.frag.type===hn){var i,r;const{cea608Parser1:e,cea608Parser2:s,lastSn:n}=this,{cc:a,sn:o}=t.frag,l=null!=(i=null==(r=t.part)?void 0:r.index)?i:-1;e&&s&&(o!==n+1||o===n&&l!==this.lastPartIndex+1||a!==this.lastCc)&&(e.reset(),s.reset()),this.lastCc=a,this.lastSn=o,this.lastPartIndex=l}}onFragLoaded(e,t){const{frag:i,payload:r}=t;if(i.type===dn)if(r.byteLength){const e=i.decryptdata,s="stats"in t;if(null==e||!e.encrypted||s){const e=this.tracks[i.level],s=this.vttCCs;s[i.cc]||(s[i.cc]={start:i.start,prevCC:this.prevCC,new:!0},this.prevCC=i.cc),e&&e.textCodec===rh?this._parseIMSC1(i,r):this._parseVTTs(t)}}else this.hls.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:new Error("Empty subtitle payload")})}_parseIMSC1(e,t){const i=this.hls;oh(t,this.initPTS[e.cc],(t=>{this._appendCues(t,e.level),i.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:e})}),(t=>{lr.log(`Failed to parse IMSC1: ${t}`),i.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e,error:t})}))}_parseVTTs(e){var t;const{frag:i,payload:r}=e,{initPTS:s,unparsedVttFrags:n}=this,a=s.length-1;if(!s[i.cc]&&-1===a)return void n.push(e);const o=this.hls;ih(null!=(t=i.initSegment)&&t.data?Es(i.initSegment.data,new Uint8Array(r)):r,this.initPTS[i.cc],this.vttCCs,i.cc,i.start,(e=>{this._appendCues(e,i.level),o.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:i})}),(t=>{const s="Missing initPTS for VTT MPEGTS"===t.message;s?n.push(e):this._fallbackToIMSC1(i,r),lr.log(`Failed to parse VTT cue: ${t}`),s&&a>i.cc||o.trigger(tr.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:t})}))}_fallbackToIMSC1(e,t){const i=this.tracks[e.level];i.textCodec||oh(t,this.initPTS[e.cc],(()=>{i.textCodec=rh,this._parseIMSC1(e,t)}),(()=>{i.textCodec="wvtt"}))}_appendCues(e,t){const i=this.hls;if(this.config.renderTextTracksNatively){const i=this.textTracks[t];if(!i||"disabled"===i.mode)return;e.forEach((e=>pn(i,e)))}else{const r=this.tracks[t];if(!r)return;const s=r.default?"default":"subtitles"+t;i.trigger(tr.CUES_PARSED,{type:"subtitles",cues:e,track:s})}}onFragDecrypted(e,t){const{frag:i}=t;i.type===dn&&this.onFragLoaded(tr.FRAG_LOADED,t)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(e,t){this.initCea608Parsers();const{cea608Parser1:i,cea608Parser2:r}=this;if(!this.enabled||!i||!r)return;const{frag:s,samples:n}=t;if(s.type!==hn||"NONE"!==this.closedCaptionsForLevel(s))for(let e=0;eyn(e[r],t,i)))}if(this.config.renderTextTracksNatively&&0===t&&void 0!==r){const{textTracks:e}=this;Object.keys(e).forEach((i=>yn(e[i],t,r)))}}}extractCea608Data(e){const t=[[],[]],i=31&e[0];let r=2;for(let s=0;s0&&-1===e?(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t,this.state=qa):(this.loadedmetadata=!1,this.state=Ja),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}doTick(){switch(this.state){case qa:this.doTickIdle();break;case Ja:{var e;const{levels:t,trackId:i}=this,r=null==t||null==(e=t[i])?void 0:e.details;if(r){if(this.waitForCdnTuneIn(r))break;this.state=ro}break}case Qa:{var t;const e=performance.now(),i=this.retryDate;if(!i||e>=i||null!=(t=this.media)&&t.seeking){const{levels:e,trackId:t}=this;this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded((null==e?void 0:e[t])||null),this.state=qa}break}case ro:{const e=this.waitingData;if(e){const{frag:t,part:i,cache:r,complete:s}=e;if(void 0!==this.initPTS[t.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=Xa;const e={frag:t,part:i,payload:r.flush(),networkDetails:null};this._handleFragmentLoadProgress(e),s&&super._handleFragmentLoadComplete(e)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log(`Waiting fragment cc (${t.cc}) cancelled because video is at cc ${this.videoTrackCC}`),this.clearWaitingFragment();else{const e=this.getLoadPosition(),i=xa.bufferInfo(this.mediaBuffer,e,this.config.maxBufferHole);Zn(i.end,this.config.maxFragLookUpTolerance,t)<0&&(this.log(`Waiting fragment cc (${t.cc}) @ ${t.start} cancelled because another fragment at ${i.end} is needed`),this.clearWaitingFragment())}}else this.state=qa}}this.onTickEnd()}clearWaitingFragment(){const e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=qa)}resetLoadingState(){this.clearWaitingFragment(),super.resetLoadingState()}onTickEnd(){const{media:e}=this;null!=e&&e.readyState&&(this.lastCurrentTime=e.currentTime)}doTickIdle(){const{hls:e,levels:t,media:i,trackId:r}=this,s=e.config;if(!i&&(this.startFragRequested||!s.startFragPrefetch)||null==t||!t[r])return;const n=t[r],a=n.details;if(!a||a.live&&this.levelLastLoaded!==n||this.waitForCdnTuneIn(a))return void(this.state=Ja);const o=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&o&&(this.bufferFlushed=!1,this.afterBufferFlushed(o,mr,cn));const l=this.getFwdBufferInfo(o,cn);if(null===l)return;const{bufferedTrack:h,switchingTrack:c}=this;if(!c&&this._streamEnded(l,a))return e.trigger(tr.BUFFER_EOS,{type:"audio"}),void(this.state=to);const d=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,hn),u=l.len,f=this.getMaxBufferLength(null==d?void 0:d.len),g=a.fragments,m=g[0].start;let p=this.flushing?this.getLoadPosition():l.end;if(c&&i){const e=this.getLoadPosition();h&&!pl(c.attrs,h.attrs)&&(p=e),a.PTSKnown&&em||l.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),i.currentTime=m+.05)}if(u>=f&&!c&&pd.end+a.targetduration;if(T||(null==d||!d.len)&&l.len){const e=this.getAppendedFrag(v.start,hn);if(null===e)return;if(y||(y=!!e.gap||!!T&&0===d.len),T&&!y||y&&l.nextStart&&l.nextStartnew Fn(e)))}onAudioTrackSwitching(e,t){const i=!!t.url;this.trackId=t.id;const{fragCurrent:r}=this;r&&(r.abortRequests(),this.removeUnbufferedFrags(r.start)),this.resetLoadingState(),i?this.setInterval(100):this.resetTransmuxer(),i?(this.switchingTrack=t,this.state=qa,this.flushAudioIfNeeded(t)):(this.switchingTrack=null,this.bufferedTrack=t,this.state=Ya),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,null!==this.cachedTrackLoadedData&&(this.hls.trigger(tr.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)}onAudioTrackLoaded(e,t){var i;if(null==this.mainDetails)return void(this.cachedTrackLoadedData=t);const{levels:r}=this,{details:s,id:n}=t;if(!r)return void this.warn(`Audio tracks were reset while loading level ${n}`);this.log(`Audio track ${n} loaded [${s.startSN},${s.endSN}]${s.lastPartSn?`[part-${s.lastPartSn}-${s.lastPartIndex}]`:""},duration:${s.totalduration}`);const a=r[n];let o=0;if(s.live||null!=(i=a.details)&&i.live){this.checkLiveUpdate(s);const e=this.mainDetails;if(s.deltaUpdateFailed||!e)return;var l;if(!a.details&&s.hasProgramDateTime&&e.hasProgramDateTime)Fa(s,e),o=s.fragments[0].start;else o=this.alignPlaylists(s,a.details,null==(l=this.levelLastLoaded)?void 0:l.details)}a.details=s,this.levelLastLoaded=a,this.startFragRequested||!this.mainDetails&&s.live||this.setStartPosition(this.mainDetails||s,o),this.state!==Ja||this.waitForCdnTuneIn(s)||(this.state=qa),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:r,payload:s}=e,{config:n,trackId:a,levels:o}=this;if(!o)return void this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const l=o[a];if(!l)return void this.warn("Audio track is undefined on fragment load progress");const h=l.details;if(!h)return this.warn("Audio track details undefined on fragment load progress"),void this.removeUnbufferedFrags(i.start);const c=n.defaultAudioCodec||l.audioCodec||"mp4a.40.2";let d=this.transmuxer;d||(d=this.transmuxer=new gl(this.hls,cn,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));const u=this.initPTS[i.cc],f=null==(t=i.initSegment)?void 0:t.data;if(void 0!==u){const e=!1,t=r?r.index:-1,n=-1!==t,a=new Ca(i.level,i.sn,i.stats.chunkCount,s.byteLength,t,n);d.push(s,f,c,"",i,r,h.totalduration,e,a,u)}else{this.log(`Unknown video PTS for cc ${i.cc}, waiting for video PTS before demuxing audio frag ${i.sn} of [${h.startSN} ,${h.endSN}],track ${a}`);const{cache:e}=this.waitingData=this.waitingData||{frag:i,part:r,cache:new ao,complete:!1};e.push(new Uint8Array(s)),this.waitingVideoCC=this.videoTrackCC,this.state=ro}}_handleFragmentLoadComplete(e){this.waitingData?this.waitingData.complete=!0:super._handleFragmentLoadComplete(e)}onBufferReset(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1}onBufferCreated(e,t){const i=t.tracks.audio;i&&(this.mediaBuffer=i.buffer||null),t.tracks.video&&(this.videoBuffer=t.tracks.video.buffer||null)}onFragBuffered(e,t){const{frag:i,part:r}=t;if(i.type===cn)if(this.fragContextChanged(i))this.warn(`Fragment ${i.sn}${r?" p: "+r.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);else{if("initSegment"!==i.sn){this.fragPrevious=i;const e=this.switchingTrack;e&&(this.bufferedTrack=e,this.switchingTrack=null,this.hls.trigger(tr.AUDIO_TRACK_SWITCHED,qi({},e)))}this.fragBufferedComplete(i,r)}else if(!this.loadedmetadata&&i.type===hn){const e=this.videoBuffer||this.media;if(e){xa.getBuffered(e).length&&(this.loadedmetadata=!0)}}}onError(e,t){var i;if(t.fatal)this.state=io;else switch(t.details){case rr.FRAG_GAP:case rr.FRAG_PARSING_ERROR:case rr.FRAG_DECRYPT_ERROR:case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(cn,t);break;case rr.AUDIO_TRACK_LOAD_ERROR:case rr.AUDIO_TRACK_LOAD_TIMEOUT:case rr.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==Ja||(null==(i=t.context)?void 0:i.type)!==on||(this.state=qa);break;case rr.BUFFER_APPEND_ERROR:case rr.BUFFER_FULL_ERROR:if(!t.parent||"audio"!==t.parent)return;if(t.details===rr.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&(this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"));break;case rr.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}onBufferFlushing(e,{type:t}){t!==pr&&(this.flushing=!0)}onBufferFlushed(e,{type:t}){if(t!==pr){this.flushing=!1,this.bufferFlushed=!0,this.state===to&&(this.state=qa);const e=this.mediaBuffer||this.media;e&&(this.afterBufferFlushed(e,t,cn),this.tick())}}_handleTransmuxComplete(e){var t;const i="audio",{hls:r}=this,{remuxResult:s,chunkMeta:n}=e,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{details:c}=h,{audio:d,text:u,id3:f,initSegment:g}=s;if(!this.fragContextChanged(o)&&c){if(this.state=Za,this.switchingTrack&&d&&this.completeAudioSwitch(this.switchingTrack),null!=g&&g.tracks){const e=o.initSegment||o;this._bufferInitSegment(h,g.tracks,e,n),r.trigger(tr.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:g.tracks})}if(d){const{startPTS:e,endPTS:t,startDTS:i,endDTS:r}=d;l&&(l.elementaryStreams[mr]={startPTS:e,endPTS:t,startDTS:i,endDTS:r}),o.setElementaryStreamInfo(mr,e,t,i,r),this.bufferFragmentData(d,o,l,n)}if(null!=f&&null!=(t=f.samples)&&t.length){const e=Qi({id:i,frag:o,details:c},f);r.trigger(tr.FRAG_PARSING_METADATA,e)}if(u){const e=Qi({id:i,frag:o,details:c},u);r.trigger(tr.FRAG_PARSING_USERDATA,e)}}else this.fragmentTracker.removeFragment(o)}_bufferInitSegment(e,t,i,r){if(this.state!==Za)return;t.video&&delete t.video;const s=t.audio;if(!s)return;s.id="audio";const n=e.audioCodec;this.log(`Init audio buffer, container:${s.container}, codecs[level/parsed]=[${n}/${s.codec}]`),n&&1===n.split(",").length&&(s.levelCodec=n),this.hls.trigger(tr.BUFFER_CODECS,t);const a=s.initSegment;if(null!=a&&a.byteLength){const e={type:"audio",frag:i,part:null,chunkMeta:r,parent:i.type,data:a};this.hls.trigger(tr.BUFFER_APPENDING,e)}this.tickImmediate()}loadFragment(e,t,i){const r=this.fragmentTracker.getState(e);var s;if(this.fragCurrent=e,this.switchingTrack||r===ba||r===wa)if("initSegment"===e.sn)this._loadInitSegment(e,t);else if(null!=(s=t.details)&&s.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=ro;const i=this.mainDetails;i&&i.fragments[0].start!==t.details.fragments[0].start&&Fa(t.details,i)}else this.startFragRequested=!0,super.loadFragment(e,t,i);else this.clearTrackerIfNeeded(e)}flushAudioIfNeeded(e){const{media:t,bufferedTrack:i}=this,r=null==i?void 0:i.attrs,s=e.attrs;t&&r&&(r.CHANNELS!==s.CHANNELS||i.name!==e.name||i.lang!==e.lang)&&(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null)}completeAudioSwitch(e){const{hls:t}=this;this.flushAudioIfNeeded(e),this.bufferedTrack=e,this.switchingTrack=null,t.trigger(tr.AUDIO_TRACK_SWITCHED,qi({},e))}},audioTrackController:class extends la{constructor(e){super(e,"[audio-track-controller]"),this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.LEVEL_LOADING,this.onLevelLoading,this),e.on(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(tr.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.LEVEL_LOADING,this.onLevelLoading,this),e.off(tr.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(tr.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(tr.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.audioTracks||[]}onAudioTrackLoaded(e,t){const{id:i,groupId:r,details:s}=t,n=this.tracksInGroup[i];if(!n||n.groupId!==r)return void this.warn(`Audio track with id:${i} and group:${r} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=t.details,this.log(`Audio track ${i} "${n.name}" lang:${n.lang} group:${r} loaded [${s.startSN}-${s.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.audioGroups||null,r=this.groupIds;let s=this.currentTrack;if(!i||(null==r?void 0:r.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==r?void 0:r.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!s&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.audioPreference;if(!s&&t){const i=va(t,e,Ta);if(i>-1)s=e[i];else{const e=va(t,this.tracks);s=this.tracks[e]}}let r=this.findTrackId(s);-1===r&&s&&(r=this.findTrackId(null));const a={audioTracks:e};this.log(`Updating audio tracks, ${e.length} track(s) found in group(s): ${null==i?void 0:i.join(",")}`),this.hls.trigger(tr.AUDIO_TRACKS_UPDATED,a);const o=this.trackId;if(-1!==r&&-1===o)this.setAudioTrack(r);else if(e.length&&-1===o){var n;const t=new Error(`No audio track selected for current audio group-ID(s): ${null==(n=this.groupIds)?void 0:n.join(",")} track count: ${e.length}`);this.warn(t.message),this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:t})}}else this.shouldReloadPlaylist(s)&&this.setAudioTrack(this.trackId)}onError(e,t){!t.fatal&&t.context&&(t.context.type!==on||t.context.id!==this.trackId||this.groupIds&&-1===this.groupIds.indexOf(t.context.groupId)||(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){const t=this.hls;if(t.config.audioPreference=e,e){const i=this.allAudioTracks;if(this.selectDefaultTrack=!1,i.length){const r=this.currentTrack;if(r&&ya(e,r,Ta))return r;const s=va(e,this.tracksInGroup,Ta);if(s>-1){const e=this.tracksInGroup[s];return this.setAudioTrack(s),e}if(r){let r=t.loadLevel;-1===r&&(r=t.firstAutoLevel);const s=function(e,t,i,r,s){const n=t[r],a=t.reduce(((e,t,i)=>{const r=t.uri;return(e[r]||(e[r]=[])).push(i),e}),{})[n.uri];a.length>1&&(r=Math.max.apply(Math,a));const o=n.videoRange,l=n.frameRate,h=n.codecSet.substring(0,4),c=Ea(t,r,(t=>{if(t.videoRange!==o||t.frameRate!==l||t.codecSet.substring(0,4)!==h)return!1;const r=t.audioGroups,n=i.filter((e=>!r||-1!==r.indexOf(e.groupId)));return va(e,n,s)>-1}));return c>-1?c:Ea(t,r,(t=>{const r=t.audioGroups,n=i.filter((e=>!r||-1!==r.indexOf(e.groupId)));return va(e,n,s)>-1}))}(e,t.levels,i,r,Ta);if(-1===s)return null;t.nextLoadLevel=s}if(e.channels||e.audioCodec){const t=va(e,i);if(t>-1)return i[t]}}}return null}setAudioTrack(e){const t=this.tracksInGroup;if(e<0||e>=t.length)return void this.warn(`Invalid audio track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,r=t[e],s=r.details&&!r.details.live;if(e===this.trackId&&r===i&&s)return;if(this.log(`Switching to audio-track ${e} "${r.name}" lang:${r.lang} group:${r.groupId} channels:${r.channels}`),this.trackId=e,this.currentTrack=r,this.hls.trigger(tr.AUDIO_TRACK_SWITCHING,qi({},r)),s)return;const n=this.switchParams(r.url,null==i?void 0:i.details,r.details);this.loadPlaylist(n)}findTrackId(e){const t=this.tracksInGroup;for(let i=0;i{this.initialized&&(this.starved=!0),this.buffering=!0},this.onPlaying=()=>{this.initialized||(this.initialized=!0),this.buffering=!1},this.applyPlaylistData=e=>{try{this.apply(e,{ot:Eh.MANIFEST,su:!this.initialized})}catch(e){lr.warn("Could not generate manifest CMCD data.",e)}},this.applyFragmentData=e=>{try{const t=e.frag,i=this.hls.levels[t.level],r=this.getObjectType(t),s={d:1e3*t.duration,ot:r};r!==Eh.VIDEO&&r!==Eh.AUDIO&&r!=Eh.MUXED||(s.br=i.bitrate/1e3,s.tb=this.getTopBandwidth(r)/1e3,s.bl=this.getBufferLength(r)),this.apply(e,s)}catch(e){lr.warn("Could not generate segment CMCD data.",e)}},this.hls=e;const t=this.config=e.config,{cmcd:i}=t;null!=i&&(t.pLoader=this.createPlaylistLoader(),t.fLoader=this.createFragmentLoader(),this.sid=i.sessionId||function(){try{return crypto.randomUUID()}catch(e){try{const e=URL.createObjectURL(new Blob),t=e.toString();return URL.revokeObjectURL(e),t.slice(t.lastIndexOf("/")+1)}catch(e){let t=(new Date).getTime();const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const i=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?i:3&i|8).toString(16)}));return i}}}(),this.cid=i.contentId,this.useHeaders=!0===i.useHeaders,this.includeKeys=i.includeKeys,this.registerListeners())}registerListeners(){const e=this.hls;e.on(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(tr.MEDIA_DETACHED,this.onMediaDetached,this),e.on(tr.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){const e=this.hls;e.off(tr.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(tr.MEDIA_DETACHED,this.onMediaDetached,this),e.off(tr.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 i,r;this.audioBuffer=null==(i=t.tracks.audio)?void 0:i.buffer,this.videoBuffer=null==(r=t.tracks.video)?void 0:r.buffer}createData(){var e;return{v:1,sf:Sh.HLS,sid:this.sid,cid:this.cid,pr:null==(e=this.media)?void 0:e.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}}apply(e,t={}){Qi(t,this.createData());const i=t.ot===Eh.INIT||t.ot===Eh.VIDEO||t.ot===Eh.MUXED;this.starved&&i&&(t.bs=!0,t.su=!0,this.starved=!1),null==t.su&&(t.su=this.buffering);const{includeKeys:r}=this;r&&(t=Object.keys(t).reduce(((e,i)=>(r.includes(i)&&(e[i]=t[i]),e)),{})),this.useHeaders?(e.headers||(e.headers={}),ec(e.headers,t)):e.url=rc(e.url,t)}getObjectType(e){const{type:t}=e;return"subtitle"===t?Eh.TIMED_TEXT:"initSegment"===e.sn?Eh.INIT:"audio"===t?Eh.AUDIO:"main"===t?this.hls.audioTracks.length?Eh.VIDEO:Eh.MUXED:void 0}getTopBandwidth(e){let t,i=0;const r=this.hls;if(e===Eh.AUDIO)t=r.audioTracks;else{const e=r.maxAutoLevel,i=e>-1?e+1:r.levels.length;t=r.levels.slice(0,i)}for(const e of t)e.bitrate>i&&(i=e.bitrate);return i>0?i:NaN}getBufferLength(e){const t=this.hls.media,i=e===Eh.AUDIO?this.audioBuffer:this.videoBuffer;if(!i||!t)return NaN;return 1e3*xa.bufferInfo(i,t.currentTime,this.config.maxBufferHole).len}createPlaylistLoader(){const{pLoader:e}=this.config,t=this.applyPlaylistData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,r){t(e),this.loader.load(e,i,r)}}}createFragmentLoader(){const{fLoader:e}=this.config,t=this.applyFragmentData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,r){t(e),this.loader.load(e,i,r)}}}},contentSteeringController: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=lr.log.bind(lr,"[content-steering]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.on(tr.ERROR,this.onError,this)}unregisterListeners(){const e=this.hls;e&&(e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.MANIFEST_PARSED,this.onManifestParsed,this),e.off(tr.ERROR,this.onError,this))}startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){const e=1e3*this.timeToLoad-(performance.now()-this.updated);if(e>0)return void this.scheduleRefresh(this.uri,e)}this.loadSteeringManifest(this.uri)}}stopLoad(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()}clearTimeout(){-1!==this.reloadTimer&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(e){const t=this.levels;t&&(this.levels=t.filter((t=>t!==e)))}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(e,t){const{contentSteering:i}=t;null!==i&&(this.pathwayId=i.pathwayId,this.uri=i.uri,this.started&&this.startLoad())}onManifestParsed(e,t){this.audioTracks=t.audioTracks,this.subtitleTracks=t.subtitleTracks}onError(e,t){const{errorAction:i}=t;if((null==i?void 0:i.action)===ia&&i.flags===aa){const e=this.levels;let r=this.pathwayPriority,s=this.pathwayId;if(t.context){const{groupId:i,pathwayId:r,type:n}=t.context;i&&e?s=this.getPathwayForGroupId(i,n,s):r&&(s=r)}s in this.penalizedPathways||(this.penalizedPathways[s]=performance.now()),!r&&e&&(r=e.reduce(((e,t)=>(-1===e.indexOf(t.pathwayId)&&e.push(t.pathwayId),e)),[])),r&&r.length>1&&(this.updatePathwayPriority(r),i.resolved=this.pathwayId!==s),i.resolved||lr.warn(`Could not resolve ${t.details} ("${t.error.message}") with content-steering for Pathway: ${s} levels: ${e?e.length:e} priorities: ${JSON.stringify(r)} penalized: ${JSON.stringify(this.penalizedPathways)}`)}}filterParsedLevels(e){this.levels=e;let t=this.getLevelsForPathway(this.pathwayId);if(0===t.length){const i=e[0].pathwayId;this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to "${i}"`),t=this.getLevelsForPathway(i),this.pathwayId=i}return t.length!==e.length?(this.log(`Found ${t.length}/${e.length} levels in Pathway "${this.pathwayId}"`),t):e}getLevelsForPathway(e){return null===this.levels?[]:this.levels.filter((t=>e===t.pathwayId))}updatePathwayPriority(e){let t;this.pathwayPriority=e;const i=this.penalizedPathways,r=performance.now();Object.keys(i).forEach((e=>{r-i[e]>3e5&&delete i[e]}));for(let r=0;r0){this.log(`Setting Pathway to "${s}"`),this.pathwayId=s,jn(t),this.hls.trigger(tr.LEVELS_UPDATED,{levels:t});const e=this.hls.levels[n];a&&e&&this.levels&&(e.attrs["STABLE-VARIANT-ID"]!==a.attrs["STABLE-VARIANT-ID"]&&e.bitrate!==a.bitrate&&this.log(`Unstable Pathways change from bitrate ${a.bitrate} to ${e.bitrate}`),this.hls.nextLoadLevel=n);break}}}getPathwayForGroupId(e,t,i){const r=this.getLevelsForPathway(i).concat(this.levels||[]);for(let i=0;i{const{ID:s,"BASE-ID":n,"URI-REPLACEMENT":a}=e;if(t.some((e=>e.pathwayId===s)))return;const o=this.getLevelsForPathway(n).map((e=>{const t=new dr(e.attrs);t["PATHWAY-ID"]=s;const n=t.AUDIO&&`${t.AUDIO}_clone_${s}`,o=t.SUBTITLES&&`${t.SUBTITLES}_clone_${s}`;n&&(i[t.AUDIO]=n,t.AUDIO=n),o&&(r[t.SUBTITLES]=o,t.SUBTITLES=o);const l=nc(e.uri,t["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",a),h=new Fn({attrs:t,audioCodec:e.audioCodec,bitrate:e.bitrate,height:e.height,name:e.name,url:l,videoCodec:e.videoCodec,width:e.width});if(e.audioGroups)for(let t=1;t{this.log(`Loaded steering manifest: "${r}"`);const n=e.data;if(1!==n.VERSION)return void this.log(`Steering VERSION ${n.VERSION} not supported!`);this.updated=performance.now(),this.timeToLoad=n.TTL;const{"RELOAD-URI":a,"PATHWAY-CLONES":o,"PATHWAY-PRIORITY":l}=n;if(a)try{this.uri=new self.URL(a,r).href}catch(e){return this.enabled=!1,void this.log(`Failed to parse Steering Manifest RELOAD-URI: ${a}`)}this.scheduleRefresh(this.uri||i.url),o&&this.clonePathways(o);const h={steeringManifest:n,url:r.toString()};this.hls.trigger(tr.STEERING_MANIFEST_LOADED,h),l&&this.updatePathwayPriority(l)},onError:(e,t,i,r)=>{if(this.log(`Error loading steering manifest: ${e.code} ${e.text} (${t.url})`),this.stopLoad(),410===e.code)return this.enabled=!1,void this.log(`Steering manifest ${t.url} no longer available`);let s=1e3*this.timeToLoad;if(429!==e.code)this.scheduleRefresh(this.uri||t.url,s);else{const e=this.loader;if("function"==typeof(null==e?void 0:e.getResponseHeader)){const t=e.getResponseHeader("Retry-After");t&&(s=1e3*parseFloat(t))}this.log(`Steering manifest ${t.url} rate limited`)}},onTimeout:(e,t,i)=>{this.log(`Timeout loading steering manifest (${t.url})`),this.scheduleRefresh(this.uri||t.url)}};this.log(`Requesting steering manifest: ${r}`),this.loader.load(s,o,l)}scheduleRefresh(e,t=1e3*this.timeToLoad){this.clearTimeout(),this.reloadTimer=self.setTimeout((()=>{var t;const i=null==(t=this.hls)?void 0:t.media;!i||i.ended?this.scheduleRefresh(e,1e3*this.timeToLoad):this.loadSteeringManifest(e)}),t)}}});function mc(e){return e&&"object"==typeof e?Array.isArray(e)?e.map(mc):Object.keys(e).reduce(((t,i)=>(t[i]=mc(e[i]),t)),{}):e}function pc(e){const t=e.loader;if(t!==hc&&t!==oc)lr.log("[config]: Custom loader detected, cannot enable progressive streaming"),e.progressive=!1;else{(function(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(e){}return!1})()&&(e.loader=hc,e.progressive=!0,e.enableSoftwareAES=!0,lr.log("[config]: Progressive streaming enabled, using FetchLoader"))}}let vc;class yc extends la{constructor(e,t){super(e,"[level-controller]"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=t,this._registerListeners()}_registerListeners(){const{hls:e}=this;e.on(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.on(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.on(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.on(tr.ERROR,this.onError,this)}_unregisterListeners(){const{hls:e}=this;e.off(tr.MANIFEST_LOADING,this.onManifestLoading,this),e.off(tr.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(tr.LEVEL_LOADED,this.onLevelLoaded,this),e.off(tr.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(tr.FRAG_BUFFERED,this.onFragBuffered,this),e.off(tr.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach((e=>{e.loadError=0,e.fragmentError=0})),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(e,t){this.resetLevels()}onManifestLoaded(e,t){const i=this.hls.config.preferManagedMediaSource,r=[],s={},n={};let a=!1,o=!1,l=!1;t.levels.forEach((e=>{var t,h;const c=e.attrs;let{audioCodec:d,videoCodec:u}=e;-1!==(null==(t=d)?void 0:t.indexOf("mp4a.40.34"))&&(vc||(vc=/chrome|firefox/i.test(navigator.userAgent)),vc&&(e.audioCodec=d=void 0)),d&&(e.audioCodec=d=Vs(d,i)),0===(null==(h=u)?void 0:h.indexOf("avc1"))&&(u=e.videoCodec=function(e){const t=e.split(".");if(t.length>2){let e=t.shift()+".";return e+=parseInt(t.shift()).toString(16),e+=("000"+parseInt(t.shift()).toString(16)).slice(-4),e}return e}(u));const{width:f,height:g,unknownCodecs:m}=e;if(a||(a=!(!f||!g)),o||(o=!!u),l||(l=!!d),null!=m&&m.length||d&&!Fs(d,"audio",i)||u&&!Fs(u,"video",i))return;const{CODECS:p,"FRAME-RATE":v,"HDCP-LEVEL":y,"PATHWAY-ID":T,RESOLUTION:E,"VIDEO-RANGE":S}=c,b=`${`${T||"."}-`}${e.bitrate}-${E}-${v}-${p}-${S}-${y}`;if(s[b])if(s[b].uri===e.url||e.attrs["PATHWAY-ID"])s[b].addGroupId("audio",c.AUDIO),s[b].addGroupId("text",c.SUBTITLES);else{const t=n[b]+=1;e.attrs["PATHWAY-ID"]=new Array(t+1).join(".");const i=new Fn(e);s[b]=i,r.push(i)}else{const t=new Fn(e);s[b]=t,n[b]=1,r.push(t)}})),this.filterAndSortMediaOptions(r,t,a,o,l)}filterAndSortMediaOptions(e,t,i,r,s){let n=[],a=[],o=e;if((i||r)&&s&&(o=o.filter((({videoCodec:e,videoRange:t,width:i,height:r})=>{return(!!e||!(!i||!r))&&(!!(s=t)&&xn.indexOf(s)>-1);var s}))),0===o.length)return void 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)}`);const e=new Error("no level with compatible codecs found in manifest");this.hls.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,error:e,reason:e.message})}}));if(t.audioTracks){const{preferManagedMediaSource:e}=this.hls.config;n=t.audioTracks.filter((t=>!t.audioCodec||Fs(t.audioCodec,"audio",e))),Tc(n)}t.subtitles&&(a=t.subtitles,Tc(a));const l=o.slice(0);o.sort(((e,t)=>{if(e.attrs["HDCP-LEVEL"]!==t.attrs["HDCP-LEVEL"])return(e.attrs["HDCP-LEVEL"]||"")>(t.attrs["HDCP-LEVEL"]||"")?1:-1;if(i&&e.height!==t.height)return e.height-t.height;if(e.frameRate!==t.frameRate)return e.frameRate-t.frameRate;if(e.videoRange!==t.videoRange)return xn.indexOf(e.videoRange)-xn.indexOf(t.videoRange);if(e.videoCodec!==t.videoCodec){const i=Bs(e.videoCodec),r=Bs(t.videoCodec);if(i!==r)return r-i}if(e.uri===t.uri&&e.codecSet!==t.codecSet){const i=$s(e.codecSet),r=$s(t.codecSet);if(i!==r)return r-i}return e.averageBitrate!==t.averageBitrate?e.averageBitrate-t.averageBitrate:0}));let h=l[0];if(this.steering&&(o=this.steering.filterParsedLevels(o),o.length!==l.length))for(let e=0;ei&&i===gc.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=e)}break}const d=s&&!r,u={levels:o,audioTracks:n,subtitleTracks:a,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:s,video:r,altAudio:!d&&n.some((e=>!!e.url))};this.hls.trigger(tr.MANIFEST_PARSED,u),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}get levels(){return 0===this._levels.length?null:this._levels}get level(){return this.currentLevelIndex}set level(e){const t=this._levels;if(0===t.length)return;if(e<0||e>=t.length){const i=new Error("invalid level idx"),r=e<0;if(this.hls.trigger(tr.ERROR,{type:ir.OTHER_ERROR,details:rr.LEVEL_SWITCH_ERROR,level:e,fatal:r,error:i,reason:i.message}),r)return;e=Math.min(e,t.length-1)}const i=this.currentLevelIndex,r=this.currentLevel,s=r?r.attrs["PATHWAY-ID"]:void 0,n=t[e],a=n.attrs["PATHWAY-ID"];if(this.currentLevelIndex=e,this.currentLevel=n,i===e&&n.details&&r&&s===a)return;this.log(`Switching to level ${e} (${n.height?n.height+"p ":""}${n.videoRange?n.videoRange+" ":""}${n.codecSet?n.codecSet+" ":""}@${n.bitrate})${a?" with Pathway "+a:""} from level ${i}${s?" with Pathway "+s:""}`);const o={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(tr.LEVEL_SWITCHING,o);const l=n.details;if(!l||l.live){const e=this.switchParams(n.uri,null==r?void 0:r.details,l);this.loadPlaylist(e)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(e){this.manualLevelIndex=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}get firstLevel(){return this._firstLevel}set firstLevel(e){this._firstLevel=e}get startLevel(){if(void 0===this._startLevel){const e=this.hls.config.startLevel;return void 0!==e?e:this.hls.firstAutoLevel}return this._startLevel}set startLevel(e){this._startLevel=e}onError(e,t){!t.fatal&&t.context&&t.context.type===an&&t.context.level===this.level&&this.checkRetry(t)}onFragBuffered(e,{frag:t}){if(void 0!==t&&t.type===hn){const e=t.elementaryStreams;if(!Object.keys(e).some((t=>!!e[t])))return;const i=this._levels[t.level];null!=i&&i.loadError&&(this.log(`Resetting level error count of ${i.loadError} on frag buffered`),i.loadError=0)}}onLevelLoaded(e,t){var i;const{level:r,details:s}=t,n=this._levels[r];var a;if(!n)return this.warn(`Invalid level index ${r}`),void(null!=(a=t.deliveryDirectives)&&a.skip&&(s.deltaUpdateFailed=!0));r===this.currentLevelIndex?(0===n.fragmentError&&(n.loadError=0),this.playlistLoaded(r,t,n.details)):null!=(i=t.deliveryDirectives)&&i.skip&&(s.deltaUpdateFailed=!0)}loadPlaylist(e){super.loadPlaylist();const t=this.currentLevelIndex,i=this.currentLevel;if(i&&this.shouldLoadPlaylist(i)){let r=i.uri;if(e)try{r=e.addDirectives(r)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}const s=i.attrs["PATHWAY-ID"];this.log(`Loading level index ${t}${void 0!==(null==e?void 0:e.msn)?" at sn "+e.msn+" part "+e.part:""} with${s?" Pathway "+s:""} ${r}`),this.clearTimer(),this.hls.trigger(tr.LEVEL_LOADING,{url:r,level:t,pathwayId:i.attrs["PATHWAY-ID"],id:0,deliveryDirectives:e||null})}}get nextLoadLevel(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(e){this.level=e,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=e)}removeLevel(e){var t;const i=this._levels.filter(((t,i)=>i!==e||(this.steering&&this.steering.removeLevel(t),t===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,t.details&&t.details.fragments.forEach((e=>e.level=-1))),!1)));jn(i),this._levels=i,this.currentLevelIndex>-1&&null!=(t=this.currentLevel)&&t.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.hls.trigger(tr.LEVELS_UPDATED,{levels:i})}onLevelsUpdated(e,{levels:t}){this._levels=t}checkMaxAutoUpdated(){const{autoLevelCapping:e,maxAutoLevel:t,maxHdcpLevel:i}=this.hls;this._maxAutoLevel!==t&&(this._maxAutoLevel=t,this.hls.trigger(tr.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:e,levels:this.levels,maxAutoLevel:t,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:i}))}}function Tc(e){const t={};e.forEach((e=>{const i=e.groupId||"";e.id=t[i]=t[i]||0,t[i]++}))}class Ec{constructor(e){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=e}abort(e){for(const i in this.keyUriToKeyInfo){const r=this.keyUriToKeyInfo[i].loader;if(r){var t;if(e&&e!==(null==(t=r.context)?void 0:t.frag.type))return;r.abort()}}}detach(){for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e];(t.mediaKeySessionContext||t.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[e]}}destroy(){this.detach();for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e].loader;t&&t.destroy()}this.keyUriToKeyInfo={}}createKeyLoadError(e,t=rr.KEY_LOAD_ERROR,i,r,s){return new Ga({type:ir.NETWORK_ERROR,details:t,fatal:!1,frag:e,response:s,error:i,networkDetails:r})}loadClear(e,t){if(this.emeController&&this.config.emeEnabled){const{sn:i,cc:r}=e;for(let e=0;e{s.setKeyFormat(e)}));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 i,r;t&&e.setKeyFormat(t);const s=e.decryptdata;if(!s){const i=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,rr.KEY_LOAD_ERROR,i))}const n=s.uri;if(!n)return Promise.reject(this.createKeyLoadError(e,rr.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${n}"`)));let a=this.keyUriToKeyInfo[n];if(null!=(i=a)&&i.decryptdata.key)return s.key=a.decryptdata.key,Promise.resolve({frag:e,keyInfo:a});var o;if(null!=(r=a)&&r.keyLoadPromise)switch(null==(o=a.mediaKeySessionContext)?void 0:o.keyStatus){case void 0:case"status-pending":case"usable":case"usable-in-future":return a.keyLoadPromise.then((t=>(s.key=t.keyInfo.decryptdata.key,{frag:e,keyInfo:a})))}switch(a=this.keyUriToKeyInfo[n]={decryptdata:s,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},s.method){case"ISO-23001-7":case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return"identity"===s.keyFormat?this.loadKeyHTTP(a,e):this.loadKeyEME(a,e);case"AES-128":return this.loadKeyHTTP(a,e);default:return Promise.reject(this.createKeyLoadError(e,rr.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${s.method}"`)))}}loadKeyEME(e,t){const i={frag:t,keyInfo:e};if(this.emeController&&this.config.emeEnabled){const t=this.emeController.loadKey(i);if(t)return(e.keyLoadPromise=t.then((t=>(e.mediaKeySessionContext=t,i)))).catch((t=>{throw e.keyLoadPromise=null,t}))}return Promise.resolve(i)}loadKeyHTTP(e,t){const i=this.config,r=new(0,i.loader)(i);return t.keyLoader=e.loader=r,e.keyLoadPromise=new Promise(((s,n)=>{const a={keyInfo:e,frag:t,responseType:"arraybuffer",url:e.decryptdata.uri},o=i.keyLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(e,t,i,r)=>{const{frag:a,keyInfo:o,url:l}=i;if(!a.decryptdata||o!==this.keyUriToKeyInfo[l])return n(this.createKeyLoadError(a,rr.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),r));o.decryptdata.key=a.decryptdata.key=new Uint8Array(e.data),a.keyLoader=null,o.loader=null,s({frag:a,keyInfo:o})},onError:(e,i,r,s)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.KEY_LOAD_ERROR,new Error(`HTTP Error ${e.code} loading key ${e.text}`),r,qi({url:a.url,data:void 0},e)))},onTimeout:(e,i,r)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),r))},onAbort:(e,i,r)=>{this.resetLoader(i),n(this.createKeyLoadError(t,rr.INTERNAL_ABORTED,new Error("key loading aborted"),r))}};r.load(a,l,h)}))}resetLoader(e){const{frag:t,keyInfo:i,url:r}=e,s=i.loader;t.keyLoader===s&&(t.keyLoader=null,i.loader=null),delete this.keyUriToKeyInfo[r],s&&s.destroy()}}function Sc(){return self.SourceBuffer||self.WebKitSourceBuffer}function bc(){if(!Os())return!1;const e=Sc();return!e||e.prototype&&"function"==typeof e.prototype.appendBuffer&&"function"==typeof e.prototype.remove}class Lc{constructor(e,t,i,r){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=i,this.hls=r}destroy(){this.media=null,this.hls=this.fragmentTracker=null}poll(e,t){const{config:i,media:r,stalled:s}=this;if(null===r)return;const{currentTime:n,seeking:a}=r,o=this.seeking&&!a,l=!this.seeking&&a;if(this.seeking=a,n!==e){if(this.moved=!0,a||(this.nudgeRetry=0),null!==s){if(this.stallReported){const e=self.performance.now()-s;lr.warn(`playback not stuck anymore @${n}, after ${Math.round(e)}ms`),this.stallReported=!1}this.stalled=null}return}if(l||o)return void(this.stalled=null);if(r.paused&&!a||r.ended||0===r.playbackRate||!xa.getBuffered(r).length)return void(this.nudgeRetry=0);const h=xa.bufferInfo(r,n,0),c=h.nextStart||0;if(a){const e=h.len>2,i=!c||t&&t.start<=n||c-n>2&&!this.fragmentTracker.getPartialFragment(n);if(e||i)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var d;if(!(h.len>0)&&!c)return;const e=Math.max(c,h.start||0)-n,t=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,i=(null==t||null==(d=t.details)?void 0:d.live)?2*t.details.targetduration:2,s=this.fragmentTracker.getPartialFragment(n);if(e>0&&(e<=i||s))return void(r.paused||this._trySkipBufferHole(s))}const u=self.performance.now();if(null===s)return void(this.stalled=u);const f=u-s;if(!a&&f>=250&&(this._reportStall(h),!this.media))return;const g=xa.bufferInfo(r,n,i.maxBufferHole);this._tryFixBufferStall(g,f)}_tryFixBufferStall(e,t){const{config:i,fragmentTracker:r,media:s}=this;if(null===s)return;const n=s.currentTime,a=r.getPartialFragment(n);if(a){if(this._trySkipBufferHole(a)||!this.media)return}(e.len>i.maxBufferHole||e.nextStart&&e.nextStart-n1e3*i.highBufferWatchdogPeriod&&(lr.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}_reportStall(e){const{hls:t,media:i,stallReported:r}=this;if(!r&&i){this.stallReported=!0;const r=new Error(`Playback stalling at @${i.currentTime} due to low buffer (${JSON.stringify(e)})`);lr.warn(r.message),t.trigger(tr.ERROR,{type:ir.MEDIA_ERROR,details:rr.BUFFER_STALLED_ERROR,fatal:!1,error:r,buffer:e.len})}}_trySkipBufferHole(e){const{config:t,hls:i,media:r}=this;if(null===r)return 0;const s=r.currentTime,n=xa.bufferInfo(r,s,0),a=s0&&n.len<1&&r.readyState<3,h=a-s;if(h>0&&(o||l)){if(h>t.maxBufferHole){const{fragmentTracker:t}=this;let i=!1;if(0===s){const e=t.getAppendedFrag(0,hn);e&&a1?(e=0,this.bitrateTest=!0):e=i.firstAutoLevel),i.nextLoadLevel=e,this.level=i.loadLevel,this.loadedmetadata=!1}t>0&&-1===e&&(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t),this.state=qa,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=Ya}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case so:{const{levels:e,level:t}=this,i=null==e?void 0:e[t],r=null==i?void 0:i.details;if(r&&(!r.live||this.levelLastLoaded===i)){if(this.waitForCdnTuneIn(r))break;this.state=qa;break}if(this.hls.nextLoadLevel!==this.level){this.state=qa;break}break}case Qa:{var e;const t=self.performance.now(),i=this.retryDate;if(!i||t>=i||null!=(e=this.media)&&e.seeking){const{levels:e,level:t}=this,i=null==e?void 0:e[t];this.resetStartWhenNotLoaded(i||null),this.state=qa}}}this.state===qa&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){super.onTickEnd(),this.checkBuffer(),this.checkFragmentChanged()}doTickIdle(){const{hls:e,levelLastLoaded:t,levels:i,media:r}=this;if(null===t||!r&&(this.startFragRequested||!e.config.startFragPrefetch))return;if(this.altAudio&&this.audioOnly)return;const s=e.nextLoadLevel;if(null==i||!i[s])return;const n=i[s],a=this.getMainFwdBufferInfo();if(null===a)return;const o=this.getLevelDetails();if(o&&this._streamEnded(a,o)){const e={};return this.altAudio&&(e.type="video"),this.hls.trigger(tr.BUFFER_EOS,e),void(this.state=to)}e.loadLevel!==s&&-1===e.manualLevel&&this.log(`Adapting to level ${s} from level ${this.level}`),this.level=e.nextLoadLevel=s;const l=n.details;if(!l||this.state===so||l.live&&this.levelLastLoaded!==n)return this.level=s,void(this.state=so);const h=a.len,c=this.getMaxBufferLength(n.maxBitrate);if(h>=c)return;this.backtrackFragment&&this.backtrackFragment.start>a.end&&(this.backtrackFragment=null);const d=this.backtrackFragment?this.backtrackFragment.start:a.end;let u=this.getNextFragment(d,l);if(this.couldBacktrack&&!this.fragPrevious&&u&&"initSegment"!==u.sn&&this.fragmentTracker.getState(u)!==Aa){var f;const e=(null!=(f=this.backtrackFragment)?f:u).sn-l.startSN,t=l.fragments[e-1];t&&u.cc===t.cc&&(u=t,this.fragmentTracker.removeFragment(t))}else this.backtrackFragment&&a.len&&(this.backtrackFragment=null);if(u&&this.isLoopLoading(u,d)){if(!u.gap){const e=this.audioOnly&&!this.altAudio?mr:pr,t=(e===pr?this.videoBuffer:this.mediaBuffer)||this.media;t&&this.afterBufferFlushed(t,e,hn)}u=this.getNextFragmentLoopLoading(u,l,a,hn,c)}u&&(!u.initSegment||u.initSegment.data||this.bitrateTest||(u=u.initSegment),this.loadFragment(u,n,d))}loadFragment(e,t,i){const r=this.fragmentTracker.getState(e);this.fragCurrent=e,r===ba||r===wa?"initSegment"===e.sn?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,i)):this.clearTrackerIfNeeded(e)}getBufferedFrag(e){return this.fragmentTracker.getBufferedFrag(e,hn)}followingBufferedFrag(e){return e?this.getBufferedFrag(e.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:e,media:t}=this;if(null!=t&&t.readyState){let i;const r=this.getAppendedFrag(t.currentTime);r&&r.start>1&&this.flushMainBuffer(0,r.start-1);const s=this.getLevelDetails();if(null!=s&&s.live){const e=this.getMainFwdBufferInfo();if(!e||e.len<2*s.targetduration)return}if(!t.paused&&e){const t=e[this.hls.nextLoadLevel],r=this.fragLastKbps;i=r&&this.fragCurrent?this.fragCurrent.duration*t.maxBitrate/(1e3*r)+1:0}else i=0;const n=this.getBufferedFrag(t.currentTime+i);if(n){const e=this.followingBufferedFrag(n);if(e){this.abortCurrentFrag();const t=e.maxStartPTS?e.maxStartPTS:e.start,i=e.duration,r=Math.max(n.end,t+Math.min(Math.max(i-this.config.maxFragLookUpTolerance,i*(this.couldBacktrack?.5:.125)),i*(this.couldBacktrack?.75:.25)));this.flushMainBuffer(r,Number.POSITIVE_INFINITY)}}}}abortCurrentFrag(){const e=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,e&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.state){case za:case Xa:case Qa:case Za:case eo:this.state=qa}this.nextLoadPosition=this.getLoadPosition()}flushMainBuffer(e,t){super.flushMainBuffer(e,t,this.altAudio?"video":null)}onMediaAttached(e,t){super.onMediaAttached(e,t);const i=t.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),i.addEventListener("playing",this.onvplaying),i.addEventListener("seeked",this.onvseeked),this.gapController=new Lc(this.config,i,this.fragmentTracker,this.hls)}onMediaDetaching(){const{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(){const e=this.media,t=e?e.currentTime:null;Ji(t)&&this.log(`Media seeked to ${t.toFixed(3)}`);const i=this.getMainFwdBufferInfo();null!==i&&0!==i.len?this.tick():this.warn(`Main forward buffer length on "seeked" event ${i?i.len:"empty"})`)}onManifestLoading(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(tr.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 i=!1,r=!1;t.levels.forEach((e=>{const t=e.audioCodec;t&&(i=i||-1!==t.indexOf("mp4a.40.2"),r=r||-1!==t.indexOf("mp4a.40.5"))})),this.audioCodecSwitch=i&&r&&!function(){var e;const t=Sc();return"function"==typeof(null==t||null==(e=t.prototype)?void 0:e.changeType)}(),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){const{levels:i}=this;if(!i||this.state!==qa)return;const r=i[t.level];(!r.details||r.details.live&&this.levelLastLoaded!==r||this.waitForCdnTuneIn(r.details))&&(this.state=so)}onLevelLoaded(e,t){var i;const{levels:r}=this,s=t.level,n=t.details,a=n.totalduration;if(!r)return void this.warn(`Levels were reset while loading level ${s}`);this.log(`Level ${s} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""}, cc [${n.startCC}, ${n.endCC}] duration:${a}`);const o=r[s],l=this.fragCurrent;!l||this.state!==Xa&&this.state!==Qa||l.level!==t.level&&l.loader&&this.abortCurrentFrag();let h=0;if(n.live||null!=(i=o.details)&&i.live){var c;if(this.checkLiveUpdate(n),n.deltaUpdateFailed)return;h=this.alignPlaylists(n,o.details,null==(c=this.levelLastLoaded)?void 0:c.details)}if(o.details=n,this.levelLastLoaded=o,this.hls.trigger(tr.LEVEL_UPDATED,{details:n,level:s}),this.state===so){if(this.waitForCdnTuneIn(n))return;this.state=qa}this.startFragRequested?n.live&&this.synchronizeToLiveEdge(n):this.setStartPosition(n,h),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:r,payload:s}=e,{levels:n}=this;if(!n)return void this.warn(`Levels were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const a=n[i.level],o=a.details;if(!o)return this.warn(`Dropping fragment ${i.sn} of level ${i.level} after level details were reset`),void this.fragmentTracker.removeFragment(i);const l=a.videoCodec,h=o.PTSKnown||!o.live,c=null==(t=i.initSegment)?void 0:t.data,d=this._getAudioCodec(a),u=this.transmuxer=this.transmuxer||new gl(this.hls,hn,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),f=r?r.index:-1,g=-1!==f,m=new Ca(i.level,i.sn,i.stats.chunkCount,s.byteLength,f,g),p=this.initPTS[i.cc];u.push(s,c,d,l,i,r,o.totalduration,h,m,p)}onAudioTrackSwitching(e,t){const i=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;const e=this.fragCurrent;e&&(this.log("Switching to main audio track, cancel main fragment load"),e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();const e=this.hls;i&&(e.trigger(tr.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),e.trigger(tr.AUDIO_TRACK_SWITCHED,t)}}onAudioTrackSwitched(e,t){const i=t.id,r=!!this.hls.audioTracks[i].url;if(r){const e=this.videoBuffer;e&&this.mediaBuffer!==e&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=e)}this.altAudio=r,this.tick()}onBufferCreated(e,t){const i=t.tracks;let r,s,n=!1;for(const e in i){const t=i[e];if("main"===t.id){if(s=e,r=t,"video"===e){const t=i[e];t&&(this.videoBuffer=t.buffer)}}else n=!0}n&&r?(this.log(`Alternate track found, use ${s}.buffered to schedule main fragment loading`),this.mediaBuffer=r.buffer):this.mediaBuffer=this.media}onFragBuffered(e,t){const{frag:i,part:r}=t;if(i&&i.type!==hn)return;if(this.fragContextChanged(i))return this.warn(`Fragment ${i.sn}${r?" p: "+r.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}`),void(this.state===eo&&(this.state=qa));const s=r?r.stats:i.stats;this.fragLastKbps=Math.round(8*s.total/(s.buffering.end-s.loading.first)),"initSegment"!==i.sn&&(this.fragPrevious=i),this.fragBufferedComplete(i,r)}onError(e,t){var i;if(t.fatal)this.state=io;else switch(t.details){case rr.FRAG_GAP:case rr.FRAG_PARSING_ERROR:case rr.FRAG_DECRYPT_ERROR:case rr.FRAG_LOAD_ERROR:case rr.FRAG_LOAD_TIMEOUT:case rr.KEY_LOAD_ERROR:case rr.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(hn,t);break;case rr.LEVEL_LOAD_ERROR:case rr.LEVEL_LOAD_TIMEOUT:case rr.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==so||(null==(i=t.context)?void 0:i.type)!==an||(this.state=qa);break;case rr.BUFFER_APPEND_ERROR:case rr.BUFFER_FULL_ERROR:if(!t.parent||"main"!==t.parent)return;if(t.details===rr.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case rr.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}checkBuffer(){const{media:e,gapController:t}=this;if(e&&t&&e.readyState){if(this.loadedmetadata||!xa.getBuffered(e).length){const e=this.state!==qa?this.fragCurrent:null;t.poll(this.lastCurrentTime,e)}this.lastCurrentTime=e.currentTime}}onFragLoadEmergencyAborted(){this.state=qa,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()}onBufferFlushed(e,{type:t}){if(t!==mr||this.audioOnly&&!this.altAudio){const e=(t===pr?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(e,t,hn),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(){const{media:e}=this;if(!e)return;const t=e.currentTime;let i=this.startPosition;if(i>=0&&t0&&(s{const{hls:r}=this;if(!i||this.fragContextChanged(e))return;t.fragmentError=0,this.state=qa,this.startFragRequested=!1,this.bitrateTest=!1;const s=e.stats;s.parsing.start=s.parsing.end=s.buffering.start=s.buffering.end=self.performance.now(),r.trigger(tr.FRAG_LOADED,i),e.bitrateTest=!1}))}_handleTransmuxComplete(e){var t;const i="main",{hls:r}=this,{remuxResult:s,chunkMeta:n}=e,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{video:c,text:d,id3:u,initSegment:f}=s,{details:g}=h,m=this.altAudio?void 0:s.audio;if(this.fragContextChanged(o))this.fragmentTracker.removeFragment(o);else{if(this.state=Za,f){if(null!=f&&f.tracks){const e=o.initSegment||o;this._bufferInitSegment(h,f.tracks,e,n),r.trigger(tr.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:f.tracks})}const e=f.initPTS,t=f.timescale;Ji(e)&&(this.initPTS[o.cc]={baseTime:e,timescale:t},r.trigger(tr.INIT_PTS_FOUND,{frag:o,id:i,initPTS:e,timescale:t}))}if(c&&g&&"initSegment"!==o.sn){const e=g.fragments[o.sn-1-g.startSN],t=o.sn===g.startSN,i=!e||o.cc>e.cc;if(!1!==s.independent){const{startPTS:e,endPTS:r,startDTS:s,endDTS:a}=c;if(l)l.elementaryStreams[c.type]={startPTS:e,endPTS:r,startDTS:s,endDTS:a};else if(c.firstKeyFrame&&c.independent&&1===n.id&&!i&&(this.couldBacktrack=!0),c.dropped&&c.independent){const s=this.getMainFwdBufferInfo(),n=(s?s.end:this.getLoadPosition())+this.config.maxBufferHole,l=c.firstKeyFramePTS?c.firstKeyFramePTS:e;if(!t&&n2&&(o.gap=!0);o.setElementaryStreamInfo(c.type,e,r,s,a),this.backtrackFragment&&(this.backtrackFragment=o),this.bufferFragmentData(c,o,l,n,t||i)}else{if(!t&&!i)return void this.backtrack(o);o.gap=!0}}if(m){const{startPTS:e,endPTS:t,startDTS:i,endDTS:r}=m;l&&(l.elementaryStreams[mr]={startPTS:e,endPTS:t,startDTS:i,endDTS:r}),o.setElementaryStreamInfo(mr,e,t,i,r),this.bufferFragmentData(m,o,l,n)}if(g&&null!=u&&null!=(t=u.samples)&&t.length){const e={id:i,frag:o,details:g,samples:u.samples};r.trigger(tr.FRAG_PARSING_METADATA,e)}if(g&&d){const e={id:i,frag:o,details:g,samples:d.samples};r.trigger(tr.FRAG_PARSING_USERDATA,e)}}}_bufferInitSegment(e,t,i,r){if(this.state!==Za)return;this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&delete t.audio;const{audio:s,video:n,audiovideo:a}=t;if(s){let t=e.audioCodec;const i=navigator.userAgent.toLowerCase();if(this.audioCodecSwitch){t&&(t=-1!==t.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5");const e=s.metadata;e&&"channelCount"in e&&1!==(e.channelCount||1)&&-1===i.indexOf("firefox")&&(t="mp4a.40.5")}t&&-1!==t.indexOf("mp4a.40.5")&&-1!==i.indexOf("android")&&"audio/mpeg"!==s.container&&(t="mp4a.40.2",this.log(`Android: force audio codec to ${t}`)),e.audioCodec&&e.audioCodec!==t&&this.log(`Swapping manifest audio codec "${e.audioCodec}" for "${t}"`),s.levelCodec=t,s.id="main",this.log(`Init audio buffer, container:${s.container}, codecs[selected/level/parsed]=[${t||""}/${e.audioCodec||""}/${s.codec}]`)}n&&(n.levelCodec=e.videoCodec,n.id="main",this.log(`Init video buffer, container:${n.container}, codecs[level/parsed]=[${e.videoCodec||""}/${n.codec}]`)),a&&this.log(`Init audiovideo buffer, container:${a.container}, codecs[level/parsed]=[${e.codecs}/${a.codec}]`),this.hls.trigger(tr.BUFFER_CODECS,t),Object.keys(t).forEach((e=>{const s=t[e].initSegment;null!=s&&s.byteLength&&this.hls.trigger(tr.BUFFER_APPENDING,{type:e,data:s,frag:i,part:null,chunkMeta:r,parent:i.type})})),this.tickImmediate()}getMainFwdBufferInfo(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,hn)}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=qa}checkFragmentChanged(){const e=this.media;let t=null;if(e&&e.readyState>1&&!1===e.seeking){const i=e.currentTime;if(xa.isBuffered(e,i)?t=this.getAppendedFrag(i):xa.isBuffered(e,i+.1)&&(t=this.getAppendedFrag(i+.1)),t){this.backtrackFragment=null;const e=this.fragPlaying,i=t.level;e&&t.sn===e.sn&&e.level===i||(this.fragPlaying=t,this.hls.trigger(tr.FRAG_CHANGED,{frag:t}),e&&e.level===i||this.hls.trigger(tr.LEVEL_SWITCHED,{level:i}))}}}get nextLevel(){const e=this.nextBufferedFrag;return e?e.level:-1}get currentFrag(){const e=this.media;return e?this.fragPlaying||this.getAppendedFrag(e.currentTime):null}get currentProgramDateTime(){const e=this.media;if(e){const t=e.currentTime,i=this.currentFrag;if(i&&Ji(t)&&Ji(i.programDateTime)){const e=i.programDateTime+1e3*(t-i.start);return new Date(e)}}return null}get currentLevel(){const e=this.currentFrag;return e?e.level:-1}get nextBufferedFrag(){const e=this.currentFrag;return e?this.followingBufferedFrag(e):null}get forceStartLoad(){return this._forceStartLoad}}class Ac{static get version(){return"1.5.11"}static isMSESupported(){return bc()}static isSupported(){return function(){if(!bc())return!1;const e=Os();return"function"==typeof(null==e?void 0:e.isTypeSupported)&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some((t=>e.isTypeSupported(Us(t,"video"))))||["mp4a.40.2","fLaC"].some((t=>e.isTypeSupported(Us(t,"audio")))))}()}static getMediaSource(){return Os()}static get Events(){return tr}static get ErrorTypes(){return ir}static get ErrorDetails(){return rr}static get DefaultConfig(){return Ac.defaultConfig?Ac.defaultConfig:gc}static set DefaultConfig(e){Ac.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 fl,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,function(e,t){if("object"==typeof console&&!0===e||"object"==typeof e){or(e,"debug","log","info","warn","error");try{ar.log(`Debug logs enabled for "${t}" in hls.js version 1.5.11`)}catch(e){ar=nr}}else ar=nr}(e.debug||!1,"Hls instance");const t=this.config=function(e,t){if((t.liveSyncDurationCount||t.liveMaxLatencyDurationCount)&&(t.liveSyncDuration||t.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==t.liveMaxLatencyDurationCount&&(void 0===t.liveSyncDurationCount||t.liveMaxLatencyDurationCount<=t.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==t.liveMaxLatencyDuration&&(void 0===t.liveSyncDuration||t.liveMaxLatencyDuration<=t.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');const i=mc(e),r=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach((e=>{const s=`${"level"===e?"playlist":e}LoadPolicy`,n=void 0===t[s],a=[];r.forEach((r=>{const o=`${e}Loading${r}`,l=t[o];if(void 0!==l&&n){a.push(o);const e=i[s].default;switch(t[s]={default:e},r){case"TimeOut":e.maxLoadTimeMs=l,e.maxTimeToFirstByteMs=l;break;case"MaxRetry":e.errorRetry.maxNumRetry=l,e.timeoutRetry.maxNumRetry=l;break;case"RetryDelay":e.errorRetry.retryDelayMs=l,e.timeoutRetry.retryDelayMs=l;break;case"MaxRetryTimeout":e.errorRetry.maxRetryDelayMs=l,e.timeoutRetry.maxRetryDelayMs=l}}})),a.length&&lr.warn(`hls.js config: "${a.join('", "')}" setting(s) are deprecated, use "${s}": ${JSON.stringify(t[s])}`)})),qi(qi({},i),t)}(Ac.DefaultConfig,e);this.userConfig=e,t.progressive&&pc(t);const{abrController:i,bufferController:r,capLevelController:s,errorController:n,fpsController:a}=t,o=new n(this),l=this.abrController=new i(this),h=this.bufferController=new r(this),c=this.capLevelController=new s(this),d=new a(this),u=new gn(this),f=new kn(this),g=t.contentSteeringController,m=g?new g(this):null,p=this.levelController=new yc(this,m),v=new Ra(this),y=new Ec(this.config),T=this.streamController=new wc(this,v,y);c.setStreamController(T),d.setStreamController(T);const E=[u,p,T];m&&E.splice(1,0,m),this.networkControllers=E;const S=[l,h,c,d,f,v];this.audioTrackController=this.createController(t.audioTrackController,E);const b=t.audioStreamController;b&&E.push(new b(this,v,y)),this.subtitleTrackController=this.createController(t.subtitleTrackController,E);const L=t.subtitleStreamController;L&&E.push(new L(this,v,y)),this.createController(t.timelineController,S),y.emeController=this.emeController=this.createController(t.emeController,S),this.cmcdController=this.createController(t.cmcdController,S),this.latencyController=this.createController(_n,S),this.coreComponents=S,E.push(o);const w=o.onErrorOut;"function"==typeof w&&this.on(tr.ERROR,w,o)}createController(e,t){if(e){const i=new e(this);return t&&t.push(i),i}return null}on(e,t,i=this){this._emitter.on(e,t,i)}once(e,t,i=this){this._emitter.once(e,t,i)}removeAllListeners(e){this._emitter.removeAllListeners(e)}off(e,t,i=this,r){this._emitter.off(e,t,i,r)}listeners(e){return this._emitter.listeners(e)}emit(e,t,i){return this._emitter.emit(e,t,i)}trigger(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(t){if(lr.error("An internal error happened while handling event "+e+'. Error message: "'+t.message+'". Here is a stacktrace:',t),!this.triggeringException){this.triggeringException=!0;const i=e===tr.ERROR;this.trigger(tr.ERROR,{type:ir.OTHER_ERROR,details:rr.INTERNAL_EXCEPTION,fatal:i,event:e,error:t}),this.triggeringException=!1}}return!1}listenerCount(e){return this._emitter.listenerCount(e)}destroy(){lr.log("destroy"),this.trigger(tr.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((e=>e.destroy())),this.networkControllers.length=0,this.coreComponents.forEach((e=>e.destroy())),this.coreComponents.length=0;const e=this.config;e.xhrSetup=e.fetchSetup=void 0,this.userConfig=null}attachMedia(e){lr.log("attachMedia"),this._media=e,this.trigger(tr.MEDIA_ATTACHING,{media:e})}detachMedia(){lr.log("detachMedia"),this.trigger(tr.MEDIA_DETACHING,void 0),this._media=null}loadSource(e){this.stopLoad();const t=this.media,i=this.url,r=this.url=Wi.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,lr.log(`loadSource:${r}`),t&&i&&(i!==r||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(t)),this.trigger(tr.MANIFEST_LOADING,{url:e})}startLoad(e=-1){lr.log(`startLoad(${e})`),this.started=!0,this.networkControllers.forEach((t=>{t.startLoad(e)}))}stopLoad(){lr.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(){lr.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){lr.log("recoverMediaError");const e=this._media;this.detachMedia(),e&&this.attachMedia(e)}removeLevel(e){this.levelController.removeLevel(e)}get levels(){const e=this.levelController.levels;return e||[]}get currentLevel(){return this.streamController.currentLevel}set currentLevel(e){lr.log(`set currentLevel:${e}`),this.levelController.manualLevel=e,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(e){lr.log(`set nextLevel:${e}`),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(e){lr.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){lr.log(`set firstLevel:${e}`),this.levelController.firstLevel=e}get startLevel(){const e=this.levelController.startLevel;return-1===e&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:e}set startLevel(e){lr.log(`set startLevel:${e}`),-1!==e&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(e){const t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimate():NaN}set bandwidthEstimate(e){this.abrController.resetEstimator(e)}get ttfbEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimateTTFB():NaN}set autoLevelCapping(e){this._autoLevelCapping!==e&&(lr.log(`set autoLevelCapping:${e}`),this._autoLevelCapping=e,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(e){(function(e){return Dn.indexOf(e)>-1})(e)&&this._maxHdcpLevel!==e&&(this._maxHdcpLevel=e,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return-1===this.levelController.manualLevel}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:e,config:{minAutoBitrate:t}}=this;if(!e)return 0;const i=e.length;for(let r=0;r=t)return r;return 0}get maxAutoLevel(){const{levels:e,autoLevelCapping:t,maxHdcpLevel:i}=this;let r;if(r=-1===t&&null!=e&&e.length?e.length-1:t,i)for(let t=r;t--;){const r=e[t].attrs["HDCP-LEVEL"];if(r&&r<=i)return t}return r}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 null==(t=this.audioTrackController)?void 0:t.setAudioOption(e)}setSubtitleOption(e){var t;return null==(t=this.subtitleTrackController)||t.setSubtitleOption(e),null}get allAudioTracks(){const e=this.audioTrackController;return e?e.allAudioTracks:[]}get audioTracks(){const e=this.audioTrackController;return e?e.audioTracks:[]}get audioTrack(){const e=this.audioTrackController;return e?e.audioTrack:-1}set audioTrack(e){const t=this.audioTrackController;t&&(t.audioTrack=e)}get allSubtitleTracks(){const e=this.subtitleTrackController;return e?e.allSubtitleTracks:[]}get subtitleTracks(){const e=this.subtitleTrackController;return e?e.subtitleTracks:[]}get subtitleTrack(){const e=this.subtitleTrackController;return e?e.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(e){const t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}get subtitleDisplay(){const e=this.subtitleTrackController;return!!e&&e.subtitleDisplay}set subtitleDisplay(e){const t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(e){this.config.lowLatencyMode=e}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}}function Rc(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e.$video.volume=e._options.volume)}),1e3)})),e.event.emit("parsed")}))}))}else if(this.$video.canPlayType("application/vnd.apple.mpegurl")){this.logger.log("Browser support application/vnd.apple.mpegurl : ",this.$video.canPlayType("application/vnd.apple.mpegurl")),this.$video.src=this._options.url;var i=!1;this.$video.addEventListener("canplay",(function(){!i&&e._options.autoPlay&&setTimeout((function(){e.$video.play().then((function(){e.logger.log("autoPlay video!"),setTimeout((function(){e._options.volume>0&&e.setVolume(e._options.volume)}),1e3),i=!0}))}),200)}))}else this.logger.warn("Browser not support hls")},i.isPlayingState=function(){return!this.$video.paused},i.play=function(){if(this.isPlayingState())return Promise.resolve();if(this._options.isLive&&(this.$video.buffered.length>=1&&this.$video.buffered.end(0)>1)){var e=this.$video.buffered.end(0)-1;this.$video.currentTime=e}return this.$video.play()},i.pause=function(){this.$video.pause()},i.setVolume=function(e){this.$video.muted&&(this.$video.muted=!1),this._volume=+(e||0),0===this._volume&&(this.$video.muted=!0),this.$video.volume=this._volume},i.destroy=function(){this.$video&&this.$video.pause(),this._hls&&(this._hls.destroy(),this._hls=null),e.prototype.destroy.call(this)},i._onEvent=function(){var e;(e=this).$video&&(e.$video.addEventListener("canplay",(function(){e.event.emit("canplay")})),e.$video.addEventListener("loadeddata",(function(){e.event.emit("loadeddata")})),e.$video.addEventListener("volumechange",(function(){e.event.emit("volumechange",{data:e.$video.volume})})),e.$video.addEventListener("waiting",(function(){e.event.emit("waiting")})),e.$video.addEventListener("timeupdate",(function(){var t;null==(t=e.event)||t.emit("timeupdate")})),e.$video.addEventListener("seeking",(function(){e.event.emit("seeking",{data:e.$video.currentTime})})),e.$video.addEventListener("seeked",(function(){e.event.emit("seeked")})),e.$video.addEventListener("abort",(function(){e.event.emit("abort")})),e.$video.addEventListener("error",(function(){var t;null==(t=e.event)||t.emit("error",{data:e.$video.error})})),e.$video.addEventListener("ended",(function(){e.event.emit("ended")})))},Rc(t,[{key:"volume",get:function(){return this._volume},set:function(e){this.setVolume(e)}}]),t}(Ri);var xc="wasm_loaded",Cc="wasm_failed",Ic="init";function Pc(e,t){return Pc=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Pc(e,t)}var Oc=function(e){function t(t){var i;return void 0===t&&(t={}),i=e.call(this,t)||this,t.url=function(e,t){void 0===t&&(t=["h264"]);var i=(t||["h264"]).reduce((function(e,t){return t=t.toLowerCase(),e+(Xt[t]||0)}),0),r=e.split("?")[0],s=e.split("?")[1];return s=(s||"").split("&").filter((function(e){return!/^vc=\d?/.test(e)})).join("&"),r+"?"+s+(s?"&":"")+"vc="+i}(null==t?void 0:t.url,["h264","h265"]),function(e,t){if(((null==t?void 0:t.volume)||0)>1?e._volume=1:((null==t?void 0:t.volume)||0)<=0?e._volume=0:e._volume=+((null==t?void 0:t.volume)||0),t.volume=e._volume,e.options=zt({},wi,t),"string"!=typeof e.options.id)throw new Error("id is required!");e.logger=z(e.options.loggerOptions),e.event=new ei,e.logger.log("HlsPlayer version: ",Uc.version),e.logger.log("HlsPlayer options: ",e.options),e.options.logger=e.logger}(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(i),t),i._containerClassName=Li+"-container",i._render(),i}!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Pc(e,t)}(t,e);var i=t.prototype;return i._render=function(){this.$container.classList.add(this._containerClassName)},i.destroy=function(){this.$container&&(this.$container.classList.remove(this._containerClassName),this.$container.innerHTML="",this.$container=null)},t}(Si);function Mc(e,t,i){return t&&function(e,t){for(var i=0;i0&&(e=!0),this.playParam={durationMs:0,fps:0,sampleRate:0,size:{width:0,height:0},audioNone:e,videoCodec:T},!A())throw new Error("Browser not support WebAssembly!");this._onWorkerMessage()},i.play=function(){if(Ui.send(1,{name:"play"}),null===this.player)return Promise.resolve();if(this.playParam.videoCodec===T){var e={seekPos:0,isLive:this.options.isLive,accurateSeek:!0,seekEvent:!1,realPlay:!0};return this.player.play(e)}return this.player.play()},i.pause=function(){return Ui.send(1,{name:"pause"}),null!==this.player&&(this.player.pause(),!0)},i.destroy=function(){var t,i;return Ui.send(1,{name:"destroy"}),void 0!==this.player&&null!==this.player&&(this.playParam.videoCodec===T&&this._m3u8Obj&&(this._m3u8Obj.destroy(),this._m3u8Obj=null),this.player.destroy(),this._decoderWorker&&(this._decoderWorker.postMessage(P(B)),this._decoderWorker.terminate(),this._decoderWorker=null),this.logger.log("destroy"),null==(i=this.event)||null==(t=i.emit)||t.call(i,"destroy"),this.player=null,e.prototype.destroy.call(this),!0)},i.isPlaying=function(){return null!==this.player&&this.player.isPlayingState()},i.setVolume=function(e){var t;(e=+e)>1||e<0?this.logger.warn("volume volume value 0.0 ~ 1.0!"):((t=this).player||(t.event.emit("playerIsNull"),t.logger.warn("Player instance does not exist!"),0))&&(this.player.setVolume(e),this.event.emit("volumeChange",{data:e}))},i.getVersion=function(){return Ui.send(1,{name:"getVersion"}),"0.1.0"},i._m3u8Entry=function(){var e=this;this._m3u8Obj=new Vi({logger:this.logger,decoderWorker:this._decoderWorker,event:this.event}),this._m3u8Obj.bindReady(this),this._m3u8Obj.onFinished=function(e,t){},this._m3u8Obj.onCacheProcess=function(t){e.options.isLive||null==e.onCacheProcess||e.onCacheProcess.call(e,t)},this._m3u8Obj.onDemuxed=this._checkPlayer.bind(this),this._m3u8Obj.onSamples=this._hlsOnSamples.bind(this),this._m3u8Obj.demux(this.url)},i._checkPlayer=function(e,t){var i=this;if(null==i.player){var r,s,n;if(!(null==i||null==(r=i._m3u8Obj)?void 0:r.isHevcParam)||t)return null==i||null==(n=i._m3u8Obj)||null==(s=n.destroy)||s.call(n),i._m3u8Obj=null,this._decoderWorker.terminate(),this._decoderWorker=null,void(i.player=new Dc(Fc({},this.options,{event:this.event,logger:this.logger})));var a=i._m3u8Obj.getACodec(),o=i._m3u8Obj.getFPS(),l=i._m3u8Obj.getSampleRate(),h=i._m3u8Obj.getSize(),c=!1;c=i._m3u8Obj.getSampleChannel()<=0||""===a,i._softPlayer(0,o,l,h,c)}},i._hlsOnSamples=function(e,t){var i,r,s,n=this;if(t.video)null==(s=n.player)||null==(r=s.appendHevcFrame)||r.call(s,t);else if(!(null==(i=n._m3u8Obj)?void 0:i.audioNone)){var a,o;null==(o=n.player)||null==(a=o.appendAACFrame)||a.call(o,t)}},i._onWorkerMessage=function(){var e=this,i=this;this._decoderWorker.onmessage=function(r){var s=r.data;switch(s.cmd){case O:t.__HLS_WASM_DecoderState__=0;break;case M:t.__HLS_WASM_DecoderState__=1,e.logger.log("Wasm already init over!"),i.event.emit(xc),i._decoderWorker.postMessage(P("registerWasmPlayer")),i._m3u8Entry();break;case F:t.__HLS_WASM_DecoderState__=-1,e.logger.error("Wasm init failed!",s),i.event.emit(Cc,s),Ui.send("wasm",{name:"wasm loading failed"}),i._checkPlayer(!0)}}},i._softPlayer=function(e,t,i,r,s,n){var a,o,l=this;void 0===s&&(s=!1),void 0===n&&(n=null);var c,d=this;(this.playParam.durationMs=e,this.playParam.fps=t,this.playParam.sampleRate=i,this.playParam.size=r,this.playParam.audioNone=s,this.playParam.videoCodec=n||T,this.logger.log("this.playParam: ",this.playParam),this.logger.log("start init soft player"),this.player=new xi(Fc({},d.options,{sampleRate:i,fps:t,appendHevcType:h,fixed:!1,id:this.options.id,audioNone:s,videoCodec:n,logger:this.logger,event:this.event,decoderWorker:this._decoderWorker})),this.player.onPlayingTime=function(e){var t;null==d||null==(t=d.onPlayTime)||t.call(d,e)},this.player.onPlayingFinish=function(){var e,t;(l.pause(),null!=l.onPlayFinish)&&(null==(t=l)||null==(e=t.onPlayFinish)||e.call(t))},this.player.onLoadCache=function(){var e,t;null==(t=l)||null==(e=t.onLoadCache)||e.call(t)},this.player.onLoadCacheFinished=function(){var e,t;null==(t=l)||null==(e=t.onLoadCacheFinished)||e.call(t)},null==(a=d.player)||a.setDurationMs(e),null==(o=d.player)||o.setFrameRate(t),null!=d.onReadyShowDone)&&(null==d||null==(c=d.onReadyShowDone)||c.call(d));this.event.emit("parsed"),this.player&&this.options.autoPlay&&this.play()},t.supportType=function(e){if(Ui.send(1,{name:"supportType",options:e}),"hls"===e.type)return!0;if(e.url){var t=e.url;t.startsWith("http://")||t.startsWith("https://")||(t=/^\/\//.test(t)?"http:"+t:location.origin+location.pathname+t);try{return/\.m3u8$/i.test(new URL(t).pathname)}catch(e){}}return!1},Mc(t,[{key:"volume",get:function(){return this.player?this.player.volume:this.options.volume},set:function(e){e=+e,this.setVolume(e)}}]),t}(Oc);return Uc.__HLS_WASM_DecoderState__=0,Uc.version="0.1.0",Uc})); diff --git a/examples/base-app/package.json b/examples/base-app/package.json index 778d2ea..a6be6f2 100644 --- a/examples/base-app/package.json +++ b/examples/base-app/package.json @@ -9,6 +9,6 @@ "http-server": "^14.1.1" }, "dependencies": { - "@ezuikit/player-hls": "^0.1.0-beta.2" + "@ezuikit/player-hls": "^0.1.0" } } diff --git a/examples/base-app/pnpm-lock.yaml b/examples/base-app/pnpm-lock.yaml index 027fdb1..852b579 100644 --- a/examples/base-app/pnpm-lock.yaml +++ b/examples/base-app/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: '@ezuikit/player-hls': - specifier: ^0.1.0-beta.2 - version: 0.1.0-beta.2 + specifier: ^0.1.0 + version: 0.1.0 devDependencies: http-server: @@ -28,8 +28,8 @@ packages: ua-parser-js: 1.0.37 dev: false - /@ezuikit/player-hls@0.1.0-beta.2: - resolution: {integrity: sha512-iYe9Hft4dwxndrFwJCe8OlkM7Ir3gpox1oJe633R/tEmKfXxOino6Pbo3xgyIa8YmXBEQnuDeXg5+Hb2h8KVoQ==} + /@ezuikit/player-hls@0.1.0: + resolution: {integrity: sha512-T5PCj65mw3mP1MpfJOrx/MXpNZFMrW37fjjYnil1rCuy6ACGBNWXFVvOlzuh5k7G4DFV+HjbbMJnG21icNdZnw==} dependencies: '@ezuikit/player-base': 0.1.0 '@ezuikit/utils-collect': 0.1.0 From c66614494ab5363feaf99cfef97fb1f979673262 Mon Sep 17 00:00:00 2001 From: ShineShao Date: Thu, 1 Aug 2024 13:47:39 +0800 Subject: [PATCH 19/20] feat: update version 0.1.0 --- examples/vue-app/package.json | 2 +- examples/vue-app/pnpm-lock.yaml | 8 ++++---- examples/vue-app/src/components/Player.vue | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/vue-app/package.json b/examples/vue-app/package.json index dd17a15..1d75c59 100644 --- a/examples/vue-app/package.json +++ b/examples/vue-app/package.json @@ -10,7 +10,7 @@ "format": "prettier --write src/" }, "dependencies": { - "@ezuikit/player-hls": "^0.1.0-beta.2", + "@ezuikit/player-hls": "^0.1.0", "vue": "^3.3.4" }, "devDependencies": { diff --git a/examples/vue-app/pnpm-lock.yaml b/examples/vue-app/pnpm-lock.yaml index 12a2637..41e451c 100644 --- a/examples/vue-app/pnpm-lock.yaml +++ b/examples/vue-app/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: '@ezuikit/player-hls': - specifier: ^0.1.0-beta.2 - version: 0.1.0-beta.2 + specifier: ^0.1.0 + version: 0.1.0 vue: specifier: ^3.3.4 version: 3.4.35 @@ -307,8 +307,8 @@ packages: ua-parser-js: 1.0.37 dev: false - /@ezuikit/player-hls@0.1.0-beta.2: - resolution: {integrity: sha512-iYe9Hft4dwxndrFwJCe8OlkM7Ir3gpox1oJe633R/tEmKfXxOino6Pbo3xgyIa8YmXBEQnuDeXg5+Hb2h8KVoQ==} + /@ezuikit/player-hls@0.1.0: + resolution: {integrity: sha512-T5PCj65mw3mP1MpfJOrx/MXpNZFMrW37fjjYnil1rCuy6ACGBNWXFVvOlzuh5k7G4DFV+HjbbMJnG21icNdZnw==} dependencies: '@ezuikit/player-base': 0.1.0 '@ezuikit/utils-collect': 0.1.0 diff --git a/examples/vue-app/src/components/Player.vue b/examples/vue-app/src/components/Player.vue index 92fddc4..795ff5f 100644 --- a/examples/vue-app/src/components/Player.vue +++ b/examples/vue-app/src/components/Player.vue @@ -8,7 +8,7 @@ onMounted(() => { /** @type {HlsPlayer} */ player = new HlsPlayer({ id: 'container', - url: 'https://open.ys7.com/v3/openlive/AA2615287_1_1.m3u8?expire=1753581976&id=739061430059499520&t=7842a33355d630ec646075c8637e59ae589e733f6b56105812ef37c2b78d0770&ev=100', + url: '', }) // 默认自动播放 // player.play() From e4d729120217b53b2d273daaa1424c384f374b2f Mon Sep 17 00:00:00 2001 From: ShineShao Date: Thu, 1 Aug 2024 13:52:38 +0800 Subject: [PATCH 20/20] feat: update version 0.1.0 --- examples/react-app/package.json | 2 +- examples/react-app/pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/react-app/package.json b/examples/react-app/package.json index a59cfdf..6553cef 100644 --- a/examples/react-app/package.json +++ b/examples/react-app/package.json @@ -6,7 +6,7 @@ "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", - "@ezuikit/player-hls": "^0.1.0-beta.2", + "@ezuikit/player-hls": "^0.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", diff --git a/examples/react-app/pnpm-lock.yaml b/examples/react-app/pnpm-lock.yaml index 7de139c..67ab204 100644 --- a/examples/react-app/pnpm-lock.yaml +++ b/examples/react-app/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: '@ezuikit/player-hls': - specifier: ^0.1.0-beta.2 - version: 0.1.0-beta.2 + specifier: ^0.1.0 + version: 0.1.0 '@testing-library/jest-dom': specifier: ^5.17.0 version: 5.17.0 @@ -1794,8 +1794,8 @@ packages: ua-parser-js: 1.0.37 dev: false - /@ezuikit/player-hls@0.1.0-beta.2: - resolution: {integrity: sha512-iYe9Hft4dwxndrFwJCe8OlkM7Ir3gpox1oJe633R/tEmKfXxOino6Pbo3xgyIa8YmXBEQnuDeXg5+Hb2h8KVoQ==} + /@ezuikit/player-hls@0.1.0: + resolution: {integrity: sha512-T5PCj65mw3mP1MpfJOrx/MXpNZFMrW37fjjYnil1rCuy6ACGBNWXFVvOlzuh5k7G4DFV+HjbbMJnG21icNdZnw==} dependencies: '@ezuikit/player-base': 0.1.0 '@ezuikit/utils-collect': 0.1.0

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�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