@vkontakte/videoplayer-core 2.0.178-dev.e3b3fe921.0 → 2.0.179-dev.4cee6bcff.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/es2015.esm.js CHANGED
@@ -1,9 +1,9 @@
1
1
  /**
2
- * @vkontakte/videoplayer-core v2.0.178-dev.e3b3fe921.0
3
- * Tue, 29 Sep 2026 17:41:13 GMT
4
- * https://st.mycdn.me/static/vkontakte-videoplayer/2-0-178/doc/
2
+ * @vkontakte/videoplayer-core v2.0.179-dev.4cee6bcff.0
3
+ * Tue, 06 Oct 2026 11:43:34 GMT
4
+ * https://st.mycdn.me/static/vkontakte-videoplayer/2-0-179/doc/
5
5
  */
6
- import{objectEntries as le}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as ue}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as de}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as fe,assertNonNullable as pe,isNonNullable as me,ValueSubject as he,Subject as ge,Subscription as _e,merge as ve,observableFrom as ye,fromEvent as be,map as xe,tap as Se,filterChanged as Ce,isNullable as we,ErrorCategory as Te}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as ke,combine as Ae,debounce as je,ErrorCategory as Me,filter as Ne,filterChanged as Pe,isNonNullable as Fe,isNullable as Ie,map as Le,Subscription as Re,ValueSubject as ze}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Be,assertNonNullable as Ve,ErrorCategory as He,getHighestQuality as Ue,isNonNullable as We}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Ge}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Ke}from"@vkontakte/videoplayer-shared/es2015";import{createTimers as tt,TimerModule as nt}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as it}from"@vkontakte/videoplayer-shared/es2015";import{isBrowserWindow as at,ValueSubject as ot}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as st}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as ct,isNullable as lt}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as N}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as dt,isBrowserWindow as ft}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as ht,isBrowserWindow as gt}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as bt,isBrowserWindow as xt}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Ft,isBrowserWindow as It}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Wt,ErrorCategory as Gt,filter as Kt,Subject as qt,Subscription as Jt,tap as Yt,ValueSubject as Xt,fromEvent as Zt,getWindow as Qt}from"@vkontakte/videoplayer-shared/es2015";import{ValueSubject as nn,Subject as rn,map as an,Subscription as on,combine as sn,filterChanged as cn,assertNonNullable as ln}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as dn}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as fn}from"@vkontakte/videoplayer-shared/es2015";import{objectFromEntries as pn}from"@vkontakte/videoplayer-shared/es2015";import{promiseFinally as mn}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as hn,Subject as gn,merge as _n}from"@vkontakte/videoplayer-shared/es2015";import"@vkontakte/videoplayer-shared/es2015";import{assertNever as bn,debounce as xn,ErrorCategory as Sn,fromEvent as Cn,map as wn,merge as Tn,observableFrom as En,Subject as Dn,Subscription as On,timeout as kn}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Fn}from"@vkontakte/videoplayer-shared/es2015";import{clearVideoElement as In,fromEvent as Ln,getWindow as Rn,Subscription as zn}from"@vkontakte/videoplayer-shared/es2015";import{clearVideoElement as Bn}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as tr}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as nr}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as rr,isNonNullable as ir,isNullable as ar,fromEvent as or,merge as sr,observableFrom as cr,filterChanged as lr,map as ur,Subject as dr,Subscription as fr,ValueSubject as pr,ErrorCategory as mr}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as hr,isNullable as gr,Subscription as _r}from"@vkontakte/videoplayer-shared/es2015";import{fromEvent as F,map as jr,merge as Mr,filterChanged as Nr,isNonNullable as Pr,Subject as Fr,filter as Ir,mapTo as Lr,combine as Rr,once as zr,shareReplay as I,throttle as Br,ErrorCategory as Vr,ErrorOrigin as Hr,ValueSubject as Ur,Subscription as Wr}from"@vkontakte/videoplayer-shared/es2015";import{VideoQuality as Xr}from"@vkontakte/videoplayer-shared/es2015";import{assertNotEmptyArray as Qr,getWindow as $r,isInvariantQuality as ei,ValueSubject as ti}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as ni}from"@vkontakte/videoplayer-shared/es2015";import{objectFromEntries as ri}from"@vkontakte/videoplayer-shared/es2015";import{now as ai}from"@vkontakte/videoplayer-shared/es2015";import{flattenObject as si,isInvariantQuality as ci,isLowerOrEqual as li,isNonNullable as ui,now as di}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as fi}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as pi}from"@vkontakte/videoplayer-shared/es2015";import{isLowerOrEqual as mi,isNonNullable as hi,isNullable as gi}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Mi,isNonNullable as Ni,isNullable as Pi}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as Fi}from"@vkontakte/videoplayer-shared/es2015";import{Subscription as Ii}from"@vkontakte/videoplayer-shared/es2015";import{Subscription as zi}from"@vkontakte/videoplayer-shared/es2015";import{isHigher as Zi,isInvariantQuality as Qi,isNonNullable as $i}from"@vkontakte/videoplayer-shared/es2015";import{isHigherOrEqual as ta,isLowerOrEqual as na,isNonNullable as ra,videoSizeToQuality as ia}from"@vkontakte/videoplayer-shared/es2015";import{isHigherOrEqual as oa,isNullable as sa}from"@vkontakte/videoplayer-shared/es2015";import{isHigher as ca,isLower as la,isNonNullable as ua,isNullable as da,videoHeightToQuality as fa}from"@vkontakte/videoplayer-shared/es2015";import{isHigherOrEqual as va,isNonNullable as ya,isNullable as ba,now as xa}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Ca}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as wa}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Da,isLowerOrEqual as Oa,isNonNullable as ka,isNullable as Aa}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Ma}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Pa,now as Fa}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Va,assertNonNullable as Ha,combine as Ua,debounce as Wa,ErrorCategory as Ga,filter as Ka,filterChanged as qa,isNonNullable as Ja,map as Ya,merge as Xa,observableFrom as Za,once as Qa,Subscription as $a,ValueSubject as eo,videoQualityToHeight as to,videoSizeToQuality as no}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as ro}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as oo,isNullable as so,assertNonNullable as co}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as lo}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as uo,assertNonNullable as fo,now as po}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as Co}from"@vkontakte/videoplayer-shared/es2015";import{Subject as To}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Eo}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as Oo}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as ko}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as Ro}from"@vkontakte/videoplayer-shared/es2015";import{debounce as zo,filter as Bo,fromEvent as Vo,interval as Ho,isHigher as Uo,isInvariantQuality as Wo,isLower as Go,merge as Ko,Subject as qo,Subscription as Jo}from"@vkontakte/videoplayer-shared/es2015";import{map as Zo,Observable as Qo}from"@vkontakte/videoplayer-shared/es2015";import{fromEvent as $o}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as ns}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as rs}from"@vkontakte/videoplayer-shared/es2015";import{filter as Es,filterChanged as Ds,isNonNullable as Os}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as ks,assertNonNullable as As,debounce as js,ErrorCategory as Ms,filter as Ns,filterChanged as Ps,fromEvent as Fs,isNonNullable as Is,isNullable as Ls,map as Rs,mapTo as zs,merge as Bs,observableFrom as Vs,once as Hs,Subscription as Us,throttle as Ws}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Gs}from"@vkontakte/videoplayer-shared/es2015";import{videoSizeToQuality as Ks}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as ec,now as tc,once as nc,Subscription as rc,ValueSubject as ic,isNonNullable as ac,safeStorage as oc,filterChanged as sc}from"@vkontakte/videoplayer-shared/es2015";import{combine as gc,map as _c,observeElementSize as vc,Subscription as yc,ValueSubject as bc,noop as xc}from"@vkontakte/videoplayer-shared/es2015";import{filter as Cc,map as wc,once as Tc}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Dc}from"@vkontakte/videoplayer-shared/es2015";import{filterChanged as Oc,isNonNullable as kc,isNullable as Ac,now as jc,once as Mc,Subscription as Nc,ValueSubject as Pc}from"@vkontakte/videoplayer-shared/es2015";import{isInvariantQuality as Ic,isNonNullable as Lc,isNullable as Rc,Subscription as zc,ValueSubject as Bc}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Vc}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as Zc}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as Qc}from"@vkontakte/videoplayer-shared/es2015";import{stringTrimStart as $c}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as el}from"@vkontakte/videoplayer-shared/es2015";import{abortable as nl,assertNonNullable as rl,ErrorCategory as il,ErrorOrigin as al,filter as ol,filterChanged as sl,flattenObject as cl,fromEvent as ll,getTraceSubscriptionMethod as ul,getWindow as dl,interval as fl,isNonNullable as pl,isNullable as ml,map as hl,merge as gl,nowInt as _l,Subject as vl,Subscription as yl,SubscriptionRemovable as bl,ValueSubject as z}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as xl}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as Sl}from"@vkontakte/videoplayer-shared/es2015";import{abortable as Tl,assertNever as El,ErrorCategory as Dl,flattenObject as Ol,fromEvent as kl,getWindow as Al,isNonNullable as jl,merge as Ml,now as Nl,Subject as Pl,Subscription as Fl,suppressAbort as Il,ValueSubject as Ll,videoQualityToHeight as Rl,VideoQuality as zl,isAbortError as Bl}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Hl,ErrorOrigin as Ul}from"@vkontakte/videoplayer-shared/es2015";import{devNull as Xl,getWindow as Zl}from"@vkontakte/videoplayer-shared/es2015";import{stringReplaceAll as lu}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as uu}from"@vkontakte/videoplayer-shared/es2015";import{stringPadStart as du}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as fu}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as pu}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as mu}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as hu}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as _u,isNullable as vu}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as yu}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as Eu}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Du}from"@vkontakte/videoplayer-shared/es2015";import{requestIdleCallbackPolyfilled as Ou}from"@vkontakte/videoplayer-shared/es2015";import{abortable as ku,assertNonNullable as Au,ErrorCategory as ju,ErrorOrigin as Mu,flattenObject as B,fromEvent as Nu,getExponentialDelay as Pu,getWindow as Fu,isAbortError as Iu,isHigher as Lu,isNonNullable as V,isNullable as H,once as Ru,Subject as zu,Subscription as Bu,ValueSubject as Vu}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Hu}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Gu}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Sd}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Cd,isNonNullable as wd,isNullable as Td}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Ed}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Ld}from"@vkontakte/videoplayer-shared/es2015";import{videoSizeToQuality as Rd}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Xd,getWindow as Zd,isNonNullable as Qd,isNullable as $d,now as ef,isAbortError as tf}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as rf,getWindow as af,isAbortError as of,isNullable as sf,now as cf}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as uf}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as df,ErrorCategory as ff,isNullable as pf,ValueSubject as mf}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as _f,fromEvent as vf,isNullable as yf,Subject as bf,Subscription as xf,ValueSubject as Sf}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Cf,ErrorCategory as wf,Subject as Tf}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as Mf}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Nf,isHigher as Pf,isLower as Ff,isLowerOrEqual as If,VideoQuality as Lf}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Xf,combine as Zf,ErrorCategory as Qf,filter as $f,filterChanged as ep,fromEvent as tp,isNonNullable as np,map as rp,merge as ip}from"@vkontakte/videoplayer-shared/es2015";import{combine as sp,merge as cp,filter as lp,filterChanged as up,isNullable as dp,map as fp,ValueSubject as pp,isNonNullable as mp}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as Sp,ValueSubject as Cp}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as kp,combine as Ap,ErrorCategory as jp,filter as Mp,filterChanged as Np,fromEvent as Pp,interval as Fp,isNonNullable as Ip,isNullable as Lp,map as Rp,now as zp,throttle as Bp}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as Hp,ValueSubject as Up}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as qp,assertNonNullable as Jp,combine as Yp,debounce as Xp,ErrorCategory as Zp,filter as Qp,filterChanged as $p,fromEvent as em,isNonNullable as tm,isNullable as nm,map as rm,merge as im,observableFrom as am,once as om,Subscription as sm,throttle as cm}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as lm}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as um}from"@vkontakte/videoplayer-shared/es2015";import{abortable as fm,assertNonNullable as pm,combine as mm,ErrorCategory as hm,ErrorOrigin as gm,filter as _m,filterChanged as vm,flattenObject as ym,fromEvent as bm,getTraceSubscriptionMethod as xm,interval as Sm,isNonNullable as Cm,isNullable as wm,map as Tm,merge as Em,now as Dm,Subject as Om,Subscription as km,SubscriptionRemovable as Am,tap as jm,throttle as Mm,ValueSubject as W}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as Nm}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Pm}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Fm}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as Im}from"@vkontakte/videoplayer-shared/es2015";import{cancelIdleCallbackPolyfilled as Lm}from"@vkontakte/videoplayer-shared/es2015";import{requestIdleCallbackPolyfilled as Rm}from"@vkontakte/videoplayer-shared/es2015";import{promiseFinally as zm}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Bm,ErrorCategory as Vm,Subject as Hm}from"@vkontakte/videoplayer-shared/es2015";import{abortable as Jm,assertNonNullable as Ym,ErrorCategory as Xm,ErrorOrigin as Zm,flattenObject as Qm,fromEvent as $m,getExponentialDelay as eh,getWindow as th,isHigher as nh,isNonNullable as rh,isNullable as G,now as ih,once as ah,Subject as oh,Subscription as sh,ValueSubject as ch,isAbortError as lh}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as dh}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as fh}from"@vkontakte/videoplayer-shared/es2015";import{abortable as ph,assertNever as mh,fromEvent as hh,merge as gh,now as _h,Subject as vh,ValueSubject as yh,flattenObject as bh,ErrorCategory as xh,SubscriptionRemovable as Sh,getWindow as Ch,isNonNullable as wh,suppressAbort as Th,videoQualityToHeight as Eh,VideoQuality as Dh}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Oh,ErrorOrigin as kh}from"@vkontakte/videoplayer-shared/es2015";import{devNull as Ih,getWindow as Lh}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as Xh,ValueSubject as Zh}from"@vkontakte/videoplayer-shared/es2015";import{combine as ig,merge as ag,filter as og,filterChanged as sg,isNullable as cg,map as lg,ValueSubject as ug,isNonNullable as dg}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as pg}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as mg}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as _g,combine as vg,debounce as yg,ErrorCategory as bg,filter as xg,filterChanged as Sg,isNonNullable as Cg,isNullable as wg,map as Tg,merge as Eg,observableFrom as Dg,Subscription as Og,ValueSubject as kg,VideoQuality as Ag}from"@vkontakte/videoplayer-shared/es2015";import{objectFromEntries as jg}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as Mg}from"@vkontakte/videoplayer-shared/es2015";import{videoSizeToQuality as Ng,getExponentialDelay as Pg}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as Ug}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as Wg}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Gg,Subscription as Kg,throttle as qg,ValueSubject as Jg,Subject as Yg,ErrorCategory as Xg}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as $g,debounce as e_,ErrorCategory as t_,fromEvent as n_,isInvariantQuality as r_,isNonNullable as i_,isNullable as a_,map as o_,merge as s_,observableFrom as c_,Subscription as l_,ValueSubject as u_,VideoQuality as d_}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as p_}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as m_}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as h_}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as g_,assertNonNullable as __,debounce as v_,ErrorCategory as y_,isHigherOrEqual as b_,isLowerOrEqual as x_,isNonNullable as S_,merge as C_,observableFrom as w_,Subscription as T_,map as E_}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as O_,debounce as k_,merge as A_,observableFrom as j_,Subscription as M_,map as N_,ValueSubject as P_,ErrorCategory as F_,VideoQuality as I_}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as L_}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as G_,assertNonNullable as K_,ErrorCategory as q_,ErrorOrigin as J_,filter as Y_,isNonNullable as X_,isNullable as Z_,map as Q_,merge as $_,once as ev,Subject as K,Subscription as tv,ValueSubject as q,flattenObject as nv,devNull as rv,getWindow as iv}from"@vkontakte/videoplayer-shared/es2015";import{Observable as av,map as ov,Subscription as sv,Subject as cv,now as lv,combine as uv}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as fv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as pv,Subscription as mv,combine as hv,filter as gv,once as _v}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as vv}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as xv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Sv,Subject as Cv,Subscription as wv,merge as Tv,isNonNullable as Ev}from"@vkontakte/videoplayer-shared/es2015";import{ErrorOrigin as Dv,flattenObject as Ov,isNullable as kv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Mv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Pv,ErrorOrigin as Fv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorOrigin as Lv,flattenObject as Rv}from"@vkontakte/videoplayer-shared/es2015";import{filterChanged as Bv,flattenObject as Vv,fromEvent as Hv,getWindow as Uv,isNonNullable as Wv,merge as Gv,now as Kv,Subject as qv,Subscription as Jv,ErrorOrigin as Yv}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as Qv,isNonNullable as $v,getWindow as ey}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as iy,isNonNullable as ay,Subscription as oy}from"@vkontakte/videoplayer-shared/es2015";import{fromEvent as uy,once as dy,combine as fy,Subscription as py,ValueSubject as my,map as hy,filter as gy,isNonNullable as _y,now as J,safeStorage as vy,getWindow as yy}from"@vkontakte/videoplayer-shared/es2015";import{fillWithDefault as Ay,VideoQuality as jy}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Py,combine as Fy,devNull as Iy,ErrorCategory as Ly,filter as Y,filterChanged as X,flattenObject as Ry,fromEvent as zy,getPlayerId as By,getTimersDiagnostics as Vy,getTraceSubscriptionMethod as Hy,getWindow as Uy,InternalsExposure as Wy,isHigher as Gy,isInvariantQuality as Ky,isNonNullable as qy,isNullable as Jy,Logger as Yy,map as Z,mapTo as Xy,merge as Zy,now as Qy,once as Q,releaseTimers as $y,retainTimers as eb,Subject as $,Subscription as tb,tap as nb,throttle as rb,TracerFactory as ib,ValueSubject as ab,combineLatest as ob}from"@vkontakte/videoplayer-shared/es2015";import{merge as sb,map as cb,filter as lb,isNonNullable as ub}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as fb}from"@vkontakte/videoplayer-shared/es2015";import{filter as mb,once as hb}from"@vkontakte/videoplayer-shared/es2015";import{requestIdleCallbackPolyfilled as _b}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as vb}from"@vkontakte/videoplayer-shared/es2015";import{cancelIdleCallbackPolyfilled as yb}from"@vkontakte/videoplayer-shared/es2015";import{devNull as bb,getWindow as xb}from"@vkontakte/videoplayer-shared/es2015";import{Subscription as kb,Observable as Ab,Subject as jb,ValueSubject as Mb,VideoQuality as Nb}from"@vkontakte/videoplayer-shared/es2015";var _oxcModkov207=function(){function e(t){"@babel/helpers - typeof";return e=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},e(t)}var t=e;function n(e,n){if(t(e)!=`object`||!e)return e;var r=e[Symbol._oxc_toPrimitive];if(r!==void 0){var i=r.call(e,n||`default`);if(t(i)!=`object`)return i;throw TypeError(`@@_oxc_toPrimitive must return a primitive value.`)}return(n===`string`?String:Number)(e)}var t=e,r=n;function i(e){var n=r(e,`string`);return t(n)==`symbol`?n:n+``}var a=i;function o(e,t,n){return(t=a(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var s=o;function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?c(Object(n),!0).forEach(function(t){s(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function u(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){n(e);return}s.done?t(c):Promise.resolve(c).then(r,i)}function d(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var a=e.apply(t,n);function o(e){u(a,r,i,o,s,`next`,e)}function s(e){u(a,r,i,o,s,`throw`,e)}o(void 0)})}}function f(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.includes(r))continue;n[r]=e[r]}return n}var p=f;function m(e,t){if(e==null)return{};var n,r,i=p(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.includes(n)||{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function h(e,t){this.v=e,this.k=t}var g=h;function _(e){return new g(e,0)}var g=h;function v(e){return function(){return new y(e.apply(this,arguments))}}function y(e){var t,n;function r(t,n){try{var a=e[t](n),o=a.value,s=o instanceof g;Promise.resolve(s?o.v:o).then(function(n){if(s){var c=t===`return`?`return`:`next`;if(!o.k||n.done)return r(c,n);n=e[c](n).value}i(a.done?`return`:`normal`,n)},function(e){r(`throw`,e)})}catch(e){i(`throw`,e)}}function i(e,i){switch(e){case`return`:t.resolve({value:i,done:!0});break;case`throw`:t.reject(i);break;default:t.resolve({value:i,done:!1})}(t=t.next)?r(t.key,t.arg):n=null}this._invoke=function(e,i){return new Promise(function(a,o){var s={key:e,arg:i,resolve:a,reject:o,next:null};n?n=n.next=s:(t=n=s,r(e,i))})},typeof e.return!=`function`&&(this.return=void 0)}y.prototype[typeof Symbol==`function`&&Symbol.asyncIterator||`@@asyncIterator`]=function(){return this},y.prototype.next=function(e){return this._invoke(`next`,e)},y.prototype.throw=function(e){return this._invoke(`throw`,e)},y.prototype.return=function(e){return this._invoke(`return`,e)};const b=[`name`],x=[`url`],S=[`url`],C=[`downloadingItems`],w=[`data`],T=[`container`];var E=l,D=d,O=m,ee=_,k=v,te=`2.0.178-dev.e3b3fe921.0`,ne;(e=>{e.STOPPED=`stopped`,e.READY=`ready`,e.PLAYING=`playing`,e.PAUSED=`paused`})(ne||={});var re;(e=>{e.MPEG=`MPEG`,e.DASH=`DASH`,e.DASH_SEP=`DASH_SEP`,e.DASH_SEP_VK=`DASH_SEP`,e.DASH_WEBM=`DASH_WEBM`,e.DASH_WEBM_AV1=`DASH_WEBM_AV1`,e.DASH_STREAMS=`DASH_STREAMS`,e.DASH_WEBM_VK=`DASH_WEBM`,e.DASH_ONDEMAND=`DASH_ONDEMAND`,e.DASH_ONDEMAND_VK=`DASH_ONDEMAND`,e.DASH_LIVE=`DASH_LIVE`,e.DASH_LIVE_CMAF=`DASH_LIVE_CMAF`,e.DASH_LIVE_WEBM=`DASH_LIVE_WEBM`,e.HLS=`HLS`,e.HLS_ONDEMAND=`HLS_ONDEMAND`,e.HLS_JS=`HLS`,e.HLS_FMP4=`HLS_FMP4`,e.HLS_LIVE=`HLS_LIVE`,e.HLS_LIVE_CMAF=`HLS_LIVE_CMAF`,e.WEB_RTC_LIVE=`WEB_RTC_LIVE`})(re||={});var ie;(e=>{e.AV1=`av1`,e.VP9=`vp9`,e.AVC1=`avc1`,e.HEV1=`hev1`})(ie||={});var ae;(e=>{e.NOT_AVAILABLE=`NOT_AVAILABLE`,e.AVAILABLE=`AVAILABLE`,e.CONNECTING=`CONNECTING`,e.CONNECTED=`CONNECTED`})(ae||={});var oe;(e=>{e.HTTP1=`http1`,e.HTTP2=`http2`,e.QUIC=`quic`})(oe||={});var se;(e=>{e.NONE=`none`,e.INLINE=`inline`,e.FULLSCREEN=`fullscreen`,e.SECOND_SCREEN=`second_screen`,e.PIP=`pip`,e.INVISIBLE=`invisible`})(se||={});var ce;(e=>{e.TRAFFIC_SAVING=`traffic_saving`,e.HIGH_QUALITY=`high_quality`,e.UNKNOWN=`unknown`})(ce||={});var Ee=e=>new Promise((t,n)=>{let r=document.createElement(`script`);r.setAttribute(`src`,e),r.onload=()=>t(),r.onerror=e=>n(e),document.body.appendChild(r)});class De{constructor(e){this.connection$=new he(void 0),this.castState$=new he(`NOT_AVAILABLE`),this.errorEvent$=new ge,this.contentId=void 0,this.realCastState$=new he(`NOT_AVAILABLE`),this.subscription=new _e,this.log=void 0,this.params=void 0,this.isDestroyed=!1,this.params=e,this.log=this.params.dependencies.logger.createComponentLog(`ChromecastInitializer`);let t=`chrome`in window;if(this.log({message:`[constructor] receiverApplicationId: ${this.params.receiverApplicationId}, isDisabled: ${this.params.isDisabled}, isSupported: ${t}`}),e.isDisabled||!t)return;let n=me(window.chrome?.cast),r=!!window.__onGCastApiAvailable;n?this.initializeCastApi():(window.__onGCastApiAvailable=e=>{delete window.__onGCastApiAvailable,e&&!this.isDestroyed&&this.initializeCastApi()},r||Ee(`https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1`).catch(()=>this.errorEvent$.next({id:`ChromecastLoading`,category:Te.NETWORK,message:`Script loading failed!`})))}connect(){cast.framework.CastContext.getInstance()?.requestSession()}disconnect(){var e;(e=cast.framework.CastContext.getInstance())==null||(e=e.getCurrentSession())==null||e.endSession(!0)}stopMedia(){return new Promise((e,t)=>{var n;(n=cast.framework.CastContext.getInstance())==null||(n=n.getCurrentSession())==null||(n=n.getMediaSession())==null||n.stop(new chrome.cast.media.StopRequest,e,t)})}toggleConnection(){me(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();we(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();we(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.isDestroyed=!0,this.subscription.unsubscribe()}initListeners(){let e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),n=cast.framework.CastContext.getInstance();this.subscription.add(be(n,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(e=>{switch(e.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:var t;this.contentId=(t=n.getCurrentSession())==null||(t=t.getMediaSession())==null||(t=t.media)==null?void 0:t.contentId;break;case cast.framework.SessionState.NO_SESSION:case cast.framework.SessionState.SESSION_ENDING:case cast.framework.SessionState.SESSION_ENDED:case cast.framework.SessionState.SESSION_START_FAILED:this.contentId=void 0;break;default:return fe(e.sessionState)}})).add(ve(be(n,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(Se(e=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(e)}`})}),xe(e=>e.castState)),ye([n.getCastState()])).pipe(Ce(),xe(Oe),Se(e=>{this.log({message:`realCastState$: ${e}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(r=>{let i=r===`CONNECTED`,a=me(this.connection$.getValue());if(i&&!a){var o;let r=n.getCurrentSession();pe(r);let i=r.getCastDevice(),a=(o=r.getMediaSession())==null||(o=o.media)==null?void 0:o.contentId;(we(a)||a===this.contentId)&&(this.log({message:`connection created`}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:r,castDevice:i}))}else!i&&a&&(this.log({message:`connection destroyed`}),this.connection$.next(void 0));this.castState$.next(r===`CONNECTED`?me(this.connection$.getValue())?`CONNECTED`:`AVAILABLE`:r)}))}initializeCastApi(){let e,t,n;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,n=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:n}),this.initListeners()}catch(e){this.errorEvent$.next({id:`ChromecastInitializer`,category:Te.EXTERNAL_API,message:`[initializeCastApi] failed`,thrown:e})}}}var Oe=e=>{switch(e){case cast.framework.CastState.NO_DEVICES_AVAILABLE:return`NOT_AVAILABLE`;case cast.framework.CastState.NOT_CONNECTED:return`AVAILABLE`;case cast.framework.CastState.CONNECTING:return`CONNECTING`;case cast.framework.CastState.CONNECTED:return`CONNECTED`;default:return fe(e)}};var qe=`_offset_p`,Je=e=>{if(Ge(e,qe))return!0;try{return new URL(e).searchParams.has(`offset_p`)}catch{return!1}},A=(e,t=0,n=0)=>{switch(n){case 0:return e.replace(qe,t===0?``:`_`+t.toFixed(0));case 1:{if(t===0)return e;let n=new URL(e);return n.searchParams.append(`playback_shift`,t.toFixed(0)),n.toString()}case 2:{let n=new URL(e);return!n.searchParams.get(`offset_p`)&&t===0?e:(n.searchParams.set(`offset_p`,t.toFixed(0)),n.toString())}default:Ke(n)}return e},Ye=(e,t)=>{switch(t){case 0:return NaN;case 1:{let t=new URL(e);return Number(t.searchParams.get(`playback_shift`))}case 2:{let t=new URL(e);return Number(t.searchParams.get(`offset_p`)??0)}default:Ke(t)}},Xe=e=>{let{source:t,format:n,meta:r,output:i}=e,a,o,s;switch(n){case`MPEG`:{let e=t[n];Ve(e);let r=Ue(Object.keys(e));Ve(r);let i=e[r];Ve(i),a=i,o=`video/mp4`,s=Ze();break}case`HLS`:case`HLS_FMP4`:case`HLS_ONDEMAND`:{let e=t[n];Ve(e),a=e.url,o=`application/x-mpegurl`,s=Ze();break}case`DASH_SEP`:case`DASH_ONDEMAND`:case`DASH_WEBM`:case`DASH_WEBM_AV1`:case`DASH_STREAMS`:{let e=t[n];Ve(e),a=e.url,o=`application/dash+xml`,s=Ze();break}case`DASH_LIVE_CMAF`:{let e=t[n];Ve(e),a=e.url,o=`application/dash+xml`,s=Qe();break}case`HLS_LIVE`:case`HLS_LIVE_CMAF`:{let e=t[n];Ve(e),a=A(e.url),o=`application/x-mpegurl`,s=Qe();break}case`DASH_LIVE`:case`WEB_RTC_LIVE`:{let e=`Unsupported format for Chromecast`,t=Error(e);throw i.error$.next({id:`ChromecastProvider.createMediaInfo()`,category:He.VIDEO_PIPELINE,message:e,thrown:t}),t}case`DASH`:case`DASH_LIVE_WEBM`:throw Error(`${n} is no longer supported`);default:return Be(n)}let c=$e(r.videoId??a,o);c.contentUrl=a,c.streamType=s,c.metadata=et();let{title:l,subtitle:u}=r;return We(l)&&(c.metadata.title=l),We(u)&&(c.metadata.subtitle=u),c};function Ze(){var e;return((e=chrome.cast)==null||(e=e.media)==null||(e=e.StreamType)==null?void 0:e.BUFFERED)??`BUFFERED`}function Qe(){var e;return((e=chrome.cast)==null||(e=e.media)==null||(e=e.StreamType)==null?void 0:e.LIVE)??`LIVE`}function $e(e,t){var n;return!((n=chrome.cast)==null||(n=n.media)==null)&&n.MediaInfo?new chrome.cast.media.MediaInfo(e,t):{contentId:e,contentType:t,metadata:{title:``,subtitle:``},streamType:Ze()}}function et(){var e;return!((e=chrome.cast)==null||(e=e.media)==null)&&e.GenericMediaMetadata?new chrome.cast.media.GenericMediaMetadata:{images:[],metadataType:0,releaseDate:``,subtitle:``,title:``,releaseYear:1970,type:0}}var j=(e,t,n=!1)=>{let r=e.getTransition();(n||!r||r.to===t)&&e.setState(t)};var M=tt(nt.CORE);class rt{constructor(e){this.params=void 0,this.interval=0,this.startVideoPosition=void 0,this.startTs=void 0,this.params=e}start(e=0){M.clearInterval(this.interval),this.startVideoPosition=e,this.startTs=Date.now(),this.interval=M.setInterval(()=>{let e=(Date.now()-this.startTs)/1e3,t=this.startVideoPosition+e;this.params.output.position$.next(t)},1e3)}pause(){M.clearInterval(this.interval)}destroy(){M.clearInterval(this.interval)}}class ut{constructor(){this._current=void 0,this._current_version=void 0,this._chromeVersion=void 0,this._firefoxVersion=void 0,this._safariVersion=void 0,this._operaVersion=void 0,this._edgeVersion=void 0,this._yandexVersion=void 0,this._isMiuiBrowser=!1}get current(){return this._current}get isChrome(){return this.current===`Chrome`}get isChromiumBased(){return st([`Chrome`,`Chromium`,`Opera`,`Yandex`,`Edge`,`SamsungBrowser`],this.current)}get isFirefox(){return this.current===`Firefox`}get isSafari(){return this.current===`Safari`}get isOpera(){return this.current===`Opera`}get isEdge(){return this.current===`Edge`}get isYandex(){return this.current===`Yandex`}get isSamsungBrowser(){return this.current===`SamsungBrowser`}get currentVersion(){return this._current_version}get chromeVersion(){return this._chromeVersion}get firefoxVersion(){return this._firefoxVersion}get safariVersion(){return this._safariVersion}get operaVersion(){return this._operaVersion}get edgeVersion(){return this._edgeVersion}get yandexVersion(){return this._yandexVersion}get isMiuiBrowser(){return this._isMiuiBrowser}detect(){let{userAgent:e}=navigator;try{let t=/yabrowser/i.test(e)?`Yandex`:void 0,n=/samsungbrowser/i.test(e)?`SamsungBrowser`:void 0,r=/chrome|crios/i.test(e)?`Chrome`:void 0,i=/chromium/i.test(e)?`Chromium`:void 0,a=/firefox|fxios/i.test(e)?`Firefox`:void 0,o=/smart-tv;.*tizen/i.test(e)?`Chrome`:void 0,s=/webkit|safari|khtml/i.test(e)?`Safari`:void 0,c=/opr\//i.test(e)?`Opera`:void 0,l=/edg/i.test(e)?`Edge`:void 0;this._isMiuiBrowser=/(XiaoMi)|(MiuiBrowser)/i.test(e),this._current=t||n||a||c||l||r||i||o||s||`Rest`}catch(e){console.error(e)}this.isChrome&&this.detectChromeVersion(),this.isFirefox&&this.detectFirefoxVersion(),this.isSafari&&this.detectSafariVersion(),this.isOpera&&this.detectOperaVersion(),this.isEdge&&this.detectEdgeVersion(),this.isYandex&&this.detectYandexVersion()}detectVersion(e){try{let{userAgent:t}=ct().navigator,n=t.match(e);if(!n)return;let r=n[1],i=parseInt(r,10);if(!isNaN(i))return this._current_version=i,i}catch(e){console.error(e)}}detectChromeVersion(){this._chromeVersion=this.detectVersion(/Chrome\/(\d+\.\d+)/),lt(this._chromeVersion)&&(this._chromeVersion=this.detectVersion(/(\d+\.\d+\.\d+\.\d+)\/\d+\.\d+ TV/))}detectFirefoxVersion(){this._firefoxVersion=this.detectVersion(/Firefox\/(\d+\.\d+)/)}detectSafariVersion(){this._safariVersion=this.detectVersion(/Version\/(\d+)/)}detectOperaVersion(){this._operaVersion=this.detectVersion(/OPR\/(\d+\.\d+)/)}detectEdgeVersion(){this._edgeVersion=this.detectVersion(/Edg\/(\d+\.\d+)/)}detectYandexVersion(){this._yandexVersion=this.detectVersion(/YaBrowser\/(\d+\.\d+\.\d+)/)}}var pt=()=>{var e;return/Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(navigator.appVersion??navigator.userAgent)||((e=navigator)==null||(e=e.userAgentData)==null?void 0:e.mobile)};class mt{constructor(e){this._displayChecker=void 0,this._isMobile=void 0,this._current=void 0,this._iosVersion=void 0,this._highEntropyValues={},this._os={name:`Unknown`,version:`Unknown`,full:`Unknown`},this._details={vendor:`Unknown`,model:`Unknown`},this._hardware={},this._gpuDetection=void 0,this._displayChecker=e}get current(){return this._current}get os(){return this._os}get details(){return this._details}get hardware(){return this._hardware}get highEntropyValues(){return this._highEntropyValues}get isIOS(){return this._highEntropyValues.platform===`iOS`||N(this.os.name.toLowerCase(),`ios`)||N([`iPhone`,`iPad`,`iPod`],this.current)}get isIPadOS(){let e=this.current===`Mac`&&this._displayChecker.isTouch;return this.current===`iPad`||e}get isMac(){return this._highEntropyValues.platform===`macOS`||N(this.os.name.toLowerCase(),`mac`)||this.current===`Mac`}get isApple(){return this.isIOS||this.isMac}get isIphoneOrOldIpad(){if(!this.isApple||!this._displayChecker.isTouch)return!1;let e=this.current===`iPad`||this._displayChecker.width>700,t=this._iosVersion;return!e||e&&!!t&&t<16}get isAndroid(){return this._highEntropyValues.platform===`Android`||N(this.os.name.toLowerCase(),`android`)||this.current===`Android`}get isWindows(){return N(this.os.name.toLowerCase(),`windows`)}get isLinux(){return N(this.os.name.toLowerCase(),`linux`)&&!this.isAndroid}get isMobile(){return this._highEntropyValues.mobile||this._isMobile}get iOSVersion(){return this._iosVersion}detect(){let e=dt();if(!ft(e))return;let{userAgent:t}=e.navigator;try{this._isMobile=pt()}catch(e){console.error(`DeviceChecker: calling isMobile error - `,e)}this.detectDevice(t),this.detectOS(t),this.detectDeviceDetails(t),this.detectHardware(e),this.detectHighEntropyValues(),this.isIOS&&this.detectIOSVersion()}detectHardware(e){let t=e.navigator;try{this._hardware={cpuCores:t.hardwareConcurrency,memoryGb:t.deviceMemory}}catch(e){console.error(`DeviceChecker: detectHardware error - `,e)}}detectGpu(){return this._gpuDetection??=this.requestGpuInfo(),this._gpuDetection}requestGpuInfo(){var e=this;return D(function*(){let t=dt();if(ft(t))try{var n,r;let i=yield t.navigator.gpu?.requestAdapter();e._hardware=E(E({},e._hardware),{},{gpuVendor:(i==null||(n=i.info)==null?void 0:n.vendor)||void 0,gpuArchitecture:(i==null||(r=i.info)==null?void 0:r.architecture)||void 0})}catch(e){console.error(`DeviceChecker: detectGpu error - `,e)}})()}detectHighEntropyValues(){var e=this;return D(function*(){let t=dt();if(!ft(t))return;let{userAgentData:n}=t.navigator;if(n?.getHighEntropyValues){let t=yield n.getHighEntropyValues([`architecture`,`bitness`,`brands`,`mobile`,`platform`,`formFactor`,`model`,`platformVersion`,`wow64`]);e._highEntropyValues=t,t.platform&&(e._os.name=e.normalizeOSName(t.platform),t.platformVersion&&(e._os.version=e.normalizeOSVersion(t.platformVersion),e._os.full=`${e._os.name} ${e._os.version}`)),t.model&&(e._details.model=t.model)}})()}detectDevice(e){try{let t=/android/i.test(e)?`Android`:void 0,n=/iphone/i.test(e)?`iPhone`:void 0,r=/ipad/i.test(e)?`iPad`:void 0,i=/ipod/i.test(e)?`iPod`:void 0,a=/mac/i.test(e)?`Mac`:void 0,o=/webOS|BlackBerry|IEMobile|Opera Mini/i.test(e)?`RestMobile`:void 0;this._current=t||n||r||i||o||a||`Desktop`}catch(e){console.error(`DeviceChecker: device detection error - `,e)}}detectOS(e){try{for(let[t,n]of[[/(windows nt) (6\.[23]); arm/i,[`Windows RT`]],[/(windows nt) (6\.3); arm/i,[`Windows RT 8.1`]],[/(windows (?:phone|mobile|iot))(?: os)?[/ ]?([\d.]+)/i,[`Windows Mobile`,2]],[/(windows)[/ ](xp|vista|7|8(\.1)?|10|11|2000|me)/i,[1,1]],[/windows nt ?([\d.]+)/i,[`Windows`,1]],[/(windows)[/ ](95|98|me|2000|xp|vista|7|8|8\.1|10|11)/i,[1,2]],[/(iphone os|cpu iphone os) ([\d_.]+)/i,[`iOS`,2]],[/(ipad os|cpu os) ([\d_.]+)/i,[`iPadOS`,2]],[/(ipod os|cpu ipod os) ([\d_.]+)/i,[`iOS`,2]],[/(?:ios|os) ([\d_.]+) like mac os x/i,[`iOS`,1]],[/cfnetwork\/.+darwin/i,[`iOS`]],[/(mac os x) ?([\d_.]+)/i,[`macOS`,2]],[/(macintosh|mac os)/i,[`macOS`]],[/(android) ([\d.]+)/i,[1,2]],[/(harmonyos)[/ ]?([\d.]*)/i,[`HarmonyOS`,2]],[/\b(ubuntu|debian|fedora|centos|arch|linux)(?:[-/ ]([\w.]+))?/i,[1,2]],[/(cros)\D*([\d.]+)/i,[`Chrome OS`,2]],[/(freebsd|openbsd|netbsd|dragonfly)[/ ]?([\w.]*)/i,[1,2]],[/(sunos|solaris)?([\d.]*)/i,[`Solaris`,2]],[/(aix)?([\d.]*)/i,[`AIX`,2]]]){let r=e.match(t);if(r){let t=n.length>0,i=n.length>1,a=`Unknown`,o=`Unknown`;if(t){let e=n[0];typeof e==`number`?e<r.length&&r[e]!==void 0&&(a=r[e]):a=e}if(i){let e=n[1];typeof e==`number`?e<r.length&&r[e]!==void 0&&(o=r[e]):e!==void 0&&(o=e)}else r[2]===void 0?r[1]!==void 0&&t&&typeof n[0]==`string`&&(o=r[1]):o=r[2];a=this.normalizeOSName(a),o=this.normalizeOSVersion(o,a),a===`iOS`&&/ipad/i.test(e)?a=`iPadOS`:a===`iPadOS`&&/ip(hone|od)/i.test(e)&&(a=`iOS`),this._os={name:a,version:o||`Unknown`,full:o&&o!==`Unknown`?`${a} ${o}`:a};break}}}catch(e){console.error(`DeviceChecker: OS detection error - `,e)}}normalizeOSName(e){if(!e)return`Unknown`;let t=e.toLowerCase();return N(t,`windows`)?`Windows`:N(t,`mac os`)||N(t,`macintosh`)?`macOS`:N(t,`iphone`)||N(t,`ios`)?`iOS`:N(t,`ipados`)?`iPadOS`:N(t,`android`)?`Android`:N(t,`harmonyos`)?`HarmonyOS`:N(t,`linux`)?`Linux`:N(t,`cros`)?`Chrome OS`:N(t,`freebsd`)?`FreeBSD`:N(t,`openbsd`)?`OpenBSD`:N(t,`solaris`)||N(t,`sunos`)?`Solaris`:N(t,`aix`)?`AIX`:e}normalizeOSVersion(e,t){if(!e)return`Unknown`;if(e!==`Unknown`&&(e=e.replace(/_/g,`.`),t===`Windows`)){let t=parseFloat(e);if(!isNaN(t)){if(t>=11)return`11`;if(t>=10)return`10`;if(t===6.3)return`8.1`;if(t===6.2)return`8`;if(t===6.1)return`7`;if(t===6)return`Vista`;if(t===5.1||t===5.2)return`XP`;if(t===5)return`2000`;if(t===4)return`NT 4.0`}}return e}detectDeviceDetails(e){try{for(let[t,n]of[[/(iphone)/i,[`Apple`,`iPhone`]],[/(ipad)/i,[`Apple`,`iPad`]],[/(ipod)/i,[`Apple`,`iPod`]],[/(macintosh)/i,[`Apple`,`Macintosh`]],[/(windows[\w\-_ ]*phone)/i,[`Microsoft`,0]],[/(windows nt|win64|win32|wow64)/i,[`Microsoft`,`PC`]],[/\b(sch-i[89]0\d|shw-m380s|sm-[ptxs]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i,[`Samsung`,1]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?\d+a?|galaxy nexus)/i,[`Samsung`,1]],[/samsung[- ]((?!sm-[lr]|browser)[-\w]+)/i,[`Samsung`,1]],[/sec-(sgh\w+)/i,[`Samsung`,1]],[/smart-tv.+(samsung)/i,[`Samsung`,`Smart TV`]],[/(samsung).*tizen/i,[`Samsung`,`Smart TV`]],[/(pixel (?:c|tablet|[0-9a-z ]+))/i,[`Google`,1]],[/(pixelbook(?: go)?)/i,[`Google`,1]],[/nexus [0-9]/i,[`Google`,0]],[/(redmi[-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(mi[\w\-_ ]+)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(poco[\w ]+)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(hm[-_ ]?note?[\w ]*)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(?:xiao)?mi[\w\-_ ]+pad/i,[`Xiaomi`,0]],[/(?:huawei|honor) ?([-\w ]+)[;)]/i,[`Huawei`,1]],[/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][\dc][adnt]?)\b(?!.+d\/s)/i,[`Huawei`,1]],[/\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?)/i,[`Huawei`,1]],[/(?:one)?(?:plus)? ?([a\d0]\d\d\d?)(?: b|\))/i,[`OnePlus`,1]],[/droid.+; (cph2[3-6]\d[13579]|((?:gm|hd)19|(?:ac|be|in|kb)20|(?:d[en]|eb|le|mt)21|ne22)[0-2]\d)(?: bui|\))/i,[`OnePlus`,1]],[/(oneplus)[-_ ]?([-\w]*)/i,[`OnePlus`,2]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i,[`Realme`,1]],[/(realme)[-_ ]?([-\w]*)/i,[`Realme`,2]],[/; (\w+) bui.+ oppo/i,[`OPPO`,1]],[/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i,[`OPPO`,1]],[/\b(opd2(\d{3}a?))(?: bui|\))/i,[`OPPO`,1]],[/(oppo)[-_ ]?([-\w]*)/i,[`OPPO`,2]],[/; vivo (\w+)(?: bui|\))/i,[`Vivo`,1]],[/\b(v[12]\d{3}\w?[at])(?: bui|;)/i,[`Vivo`,1]],[/(vivo)[-_ ]?([-\w]*)/i,[`Vivo`,2]],[/\bmot(?:orola)?[- ]([\w\s]+)(\)| bui)/i,[`Motorola`,1]],[/((?:moto(?! 360)[-\w() ]+|xt\d{3,4}[cgkosw+]?[-\d]*|nexus 6)(?= bui|\)))/i,[`Motorola`,1]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b/i,[`Motorola`,0]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i,[`Motorola`,0]],[/droid.+; ([a-z]?\d[0-2]{2}[a-z]{2}|[c-g]\d{4}|so[-gl]\w+|xq-[a-z]{2}\d\d)(?= bui|\))/i,[`Sony`,1]],[/sony tablet [ps]/i,[`Sony`,`Xperia Tablet`]],[/\b(?:sony)?sgp\w+(?: bui|\))/i,[`Sony`,0]],[/(sony)[-_ ]?([-\w]*)/i,[`Sony`,2]],[/\blg[-e;/ ]+(?!.*(?:browser|netcast|android tv|watch|webos))(\w+)/i,[`LG`,1]],[/\blg-?([\d\w]+) bui/i,[`LG`,1]],[/(lm(?:-?f100[nv]?|-[\w.]+)(?= bui|\))|nexus [45])/i,[`LG`,1]],[/((?=lg)?[vl]k-?\d{3}) bui/i,[`LG`,0]],[/(lg)[-_ ]?([-\w]*)/i,[`LG`,2]],[/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,[`Nokia`,1]],[/nokia[-_ ]?(([-\w. ]*?))(?: bui|\)|;|\/)/i,[`Nokia`,1]],[/(nokia) (t[12][01])/i,[`Nokia`,2]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i,[`ASUS`,1]],[/(?:asus[-_ ])?(zenfone[\w\-_ ]*)/i,[`ASUS`,1]],[/(rog[\w\-_ ]*)/i,[`ASUS`,1]],[/(asus)[-_ ]?([-\w]*)/i,[`ASUS`,2]],[/lenovo[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i,[`Lenovo`,1]],[/(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])(?: bui|;|\)|\/)/i,[`Lenovo`,1]],[/(thinkpad[\w\-_ ]*)/i,[`Lenovo`,0]],[/(kf[a-z]{2}[a-z]*)(?: bui|\))/i,[`Amazon`,1]],[/(alexa)webm/i,[`Amazon`,`Echo`]],[/(fire[\w\-_ ]*)/i,[`Amazon`,0]],[/(amazon)[-_ ]?([-\w]*)/i,[`Amazon`,2]],[/(?:blackberry|\(bb10;) (\w+)/i,[`BlackBerry`,1]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,[`BlackBerry`,1]],[/(playbook);[-\w),; ]+(rim)/i,[`BlackBerry`,1]],[/(microsoft); (lumia[\w ]+)/i,[`Microsoft`,2]],[/(surface duo)/i,[`Microsoft`,`Surface Duo`]],[/(surface[\w\-_ ]*)/i,[`Microsoft`,0]],[/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,[`ZTE`,2]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,[`HTC`,2]],[/(alcatel|tcl)[-_ ]?([-\w]*)/i,[1,2]],[/(meizu)[-_ ]?([-\w]*)/i,[`Meizu`,2]],[/(tecno)[-_ ]?([-\w]*)/i,[`Tecno`,2]],[/(infinix)[-_ ]?([-\w]*)/i,[`Infinix`,2]],[/(micromax)[-_ ]?([-\w]*)/i,[`Micromax`,2]],[/(lava)[-_ ]?([-\w]*)/i,[`Lava`,2]],[/(panasonic)[-_ ]?([-\w]*)/i,[`Panasonic`,2]],[/(sharp)\/?([-\w]*)/i,[`Sharp`,2]],[/(benq)[-_ ]?([-\w]*)/i,[`BenQ`,2]],[/(palm)[-_ ]?([-\w]*)/i,[`Palm`,2]],[/(vertu)[-_ ]?([-\w]*)/i,[`Vertu`,2]],[/(gionee)[-_ ]?([-\w]*)/i,[`Gionee`,2]],[/(doogee)[-_ ]?([-\w]*)/i,[`Doogee`,2]],[/(ulefone)[-_ ]?([-\w]*)/i,[`Ulefone`,2]],[/(blackview)[-_ ]?([-\w]*)/i,[`Blackview`,2]],[/(cubot)[-_ ]?([-\w]*)/i,[`Cubot`,2]],[/(umidigi)[-_ ]?([-\w]*)/i,[`UMIDIGI`,2]],[/(oukitel)[-_ ]?([-\w]*)/i,[`Oukitel`,2]],[/(fairphone)[-_ ]?([-\w]*)/i,[`Fairphone`,2]],[/(cat)[-_ ]?([-\w]*)/i,[`Cat`,2]],[/(energy)[-_ ]?([-\w]*)/i,[`Energizer`,2]],[/(land rover)[-_ ]?([-\w]*)/i,[`Land Rover`,2]],[/(shield[\w\-_ ]*)/i,[`Nvidia`,0]],[/(crkey)/i,[`Google`,`Chromecast`]],[/(roku)[\dx]*/i,[`Roku`,0]],[/(apple)[-_ ]?tv/i,[`Apple`,`TV`]],[/(amazon)[-_ ]?tv/i,[`Amazon`,`Fire TV`]],[/(google)[-_ ]?tv/i,[`Google`,`TV`]],[/(smart[\w\-_ ]*tv)/i,[0,`Smart TV`]],[/(playstation[\w\-_ ]*)/i,[`Sony`,0]],[/(nintendo[\w\-_ ]*)/i,[`Nintendo`,0]],[/(xbox[\w\-_ ]*)/i,[`Microsoft`,0]],[/(googlebot)/i,[`Google`,`Bot`]],[/(bingbot)/i,[`Microsoft`,`Bing Bot`]],[/(yandexbot)/i,[`Yandex`,`Bot`]],[/(slackbot)/i,[`Slack`,`Bot`]],[/(twitterbot)/i,[`Twitter`,`Bot`]],[/(facebookbot)/i,[`Facebook`,`Bot`]],[/(linkedinbot)/i,[`LinkedIn`,`Bot`]],[/(tesla)[-_ ]?([-\w]*)/i,[`Tesla`,2]],[/(raspberry[\w\-_ ]*)/i,[`Raspberry Pi`,0]]]){let r=e.match(t);if(r){let e=n[0],t=n[1],i=typeof e==`number`?r[e]===void 0?`Unknown`:this.normalizeVendorName(r[e]):this.normalizeVendorName(e),a=`Unknown`;typeof t==`number`?a=r[t]===void 0?`Unknown`:r[t]:t===void 0?r[1]===void 0?r[0]!==void 0&&(a=r[0]):a=r[1]:a=t,a=this.normalizeModelName(a,i),this.details.vendor=i,this.details.model=a;break}}}catch(e){console.error(`DeviceChecker: device details detection error - `,e)}}normalizeVendorName(e){return e?{apple:`Apple`,samsung:`Samsung`,google:`Google`,xiaomi:`Xiaomi`,huawei:`Huawei`,oneplus:`OnePlus`,oppo:`OPPO`,vivo:`Vivo`,realme:`Realme`,motorola:`Motorola`,sony:`Sony`,lg:`LG`,nokia:`Nokia`,asus:`ASUS`,lenovo:`Lenovo`,amazon:`Amazon`,blackberry:`BlackBerry`,microsoft:`Microsoft`,zte:`ZTE`,htc:`HTC`,alcatel:`Alcatel`,tcl:`TCL`,meizu:`Meizu`,tecno:`Tecno`,infinix:`Infinix`,micromax:`Micromax`,lava:`Lava`,panasonic:`Panasonic`,sharp:`Sharp`,benq:`BenQ`,palm:`Palm`,honor:`Honor`,nvidia:`NVIDIA`,roku:`Roku`}[e.toLowerCase()]||e.charAt(0).toUpperCase()+e.slice(1).toLowerCase():`Unknown`}normalizeModelName(e,t){if(!e||e===`Unknown`)return e;if(e===`0`)return`Unknown`;let n=e.replace(/^build\//i,``).replace(/\s+bui$/i,``).replace(/\)$/,``).replace(/[;,)]/g,``).replace(/\s*\(.*?\)\s*/g,``).trim(),r=t.toLowerCase();return N(r,`samsung`)?n=n.replace(/^(sm-|gt-|sgh-|sch-)/i,``):N(r,`xiaomi`)?n=n.replace(/^(mi[\s\-_]*|redmi[\s\-_]*)/i,``):N(r,`oneplus`)?n=n.replace(/^oneplus[\s\-_]*/i,``):N(r,`google`)&&(n=n.replace(/^(pixel[\s\-_]*|nexus[\s\-_]*)/i,``)),n=n.replace(/_/g,` `).replace(/-/g,` `).replace(/\s+/g,` `).trim(),n?(n.length>0&&/^[a-z]/.test(n)&&(n=n.charAt(0).toUpperCase()+n.slice(1)),n):`Unknown`}detectIOSVersion(){try{let e=dt();if(!ft(e))return;if(this._highEntropyValues.platformVersion){let e=this._highEntropyValues.platformVersion.split(`.`).slice(0,2).join(`.`);this._iosVersion=parseFloat(e);return}if(this._os.version!==`Unknown`){let e=this._os.version.split(`.`),t=e.length>=2?`${e[0]}.${e[1]}`:e[0];this._iosVersion=parseFloat(t);return}let t=e.navigator.userAgent.match(/OS (\d+(_\d+)?)/i);t?.[1]&&(this._iosVersion=parseFloat(t[1].replace(/_/g,`.`)))}catch(e){console.error(`DeviceChecker: iOS version detection error - `,e)}}}var _t=[`rec2020`,`p3`,`srgb`],vt=[`standalone`,`minimal-ui`,`fullscreen`,`window-controls-overlay`,`picture-in-picture`];class yt{constructor(){this._maxTouchPoints=void 0,this._height=void 0,this._width=void 0,this._isHdr=void 0,this._pixelRatio=void 0,this._screenHeight=void 0,this._screenWidth=void 0,this._colorDepth=void 0,this._colorGamut=void 0,this._displayMode=`browser`,this._isStandalone=!1}get isTouch(){return typeof this._maxTouchPoints==`number`?this._maxTouchPoints>1:`ontouchstart`in ht()}get maxTouchPoints(){return this._maxTouchPoints}get height(){return this._height}get width(){return this._width}get screenHeight(){return this._screenHeight}get screenWidth(){return this._screenWidth}get pixelRatio(){return this._pixelRatio}get isHDR(){return this._isHdr}get colorDepth(){return this._colorDepth}get colorGamut(){return this._colorGamut}get displayMode(){return this._displayMode}get isStandalone(){return this._isStandalone}detect(){let e=ht();if(!gt(e))return;let{navigator:t,screen:n}=e,{maxTouchPoints:r}=t;try{this._maxTouchPoints=r??0,this._isHdr=!!e.matchMedia(`(dynamic-range: high)`)?.matches,this._colorDepth=n.colorDepth,this._colorGamut=this.detectColorGamut(e)}catch(e){console.error(e)}try{this._pixelRatio=e.devicePixelRatio||1,this._height=n.height,this._width=n.width,this._height=n.height,this._screenHeight=this._height*this._pixelRatio,this._screenWidth=this._width*this._pixelRatio}catch(e){console.error(e)}try{this._displayMode=this.detectDisplayMode(e);let n=t.standalone===!0;this._isStandalone=n||this._displayMode!==`browser`}catch(e){console.error(e)}}detectColorGamut(e){return _t.find(t=>{var n;return(n=e.matchMedia)==null||(n=n.call(e,`(color-gamut: ${t})`))==null?void 0:n.matches})}detectDisplayMode(e){return vt.find(t=>{var n;return(n=e.matchMedia)==null||(n=n.call(e,`(display-mode: ${t})`))==null?void 0:n.matches})??`browser`}}var St=()=>window.ManagedMediaSource||window.MediaSource,Ct=()=>{var e;return!!(window.ManagedMediaSource&&!((e=window.ManagedSourceBuffer)==null||(e=e.prototype)==null)&&e.appendBuffer)},wt=()=>{var e;return!!(window.MediaSource&&!((e=window.SourceBuffer)==null||(e=e.prototype)==null)&&e.appendBuffer)},Tt=()=>window.ManagedMediaSource?new ManagedMediaSource:new MediaSource,Et=bt().document?.createElement(`video`),Dt=`video/mp4; codecs="avc1.42000a,mp4a.40.2"`,Ot=`video/mp4; codecs="hev1.1.6.L93.B0"`,kt=`video/webm; codecs="vp09.00.10.08"`,At=`video/webm; codecs="av01.0.00M.08"`,jt=`audio/mp4; codecs="mp4a.40.2"`,Mt=`audio/webm; codecs="opus"`,Nt;(function(){var e=D(function*(){let e=bt();if(!xt(e)||!(`mediaCapabilities`in e.navigator))return;let t={type:`media-source`,video:{contentType:`video/webm`,width:1280,height:720,bitrate:1e6,framerate:30}},[n,r]=yield Promise.all([e.navigator.mediaCapabilities.decodingInfo(E(E({},t),{},{video:E(E({},t.video),{},{contentType:At})})),e.navigator.mediaCapabilities.decodingInfo(E(E({},t),{},{video:E(E({},t.video),{},{contentType:kt})}))]);Nt={DASH_WEBM_AV1:n,DASH_WEBM:r}});return function(){return e.apply(this,arguments)}})()().catch(e=>{console.log(Et),console.error(e)});class Pt{constructor(e,t){this._video=void 0,this._deviceChecker=void 0,this._browserChecker=void 0,this._protocols=void 0,this._containers=void 0,this._codecs=void 0,this._nativeHlsSupported=void 0,this._deviceChecker=e,this._browserChecker=t}get protocols(){return this._protocols}get containers(){return this._containers}get codecs(){return this._codecs}get webmDecodingInfo(){return Nt}get supportedCodecs(){return Object.keys(this._codecs).filter(e=>this._codecs[e])}get nativeHlsSupported(){return this._nativeHlsSupported}detect(){let e=bt();if(!xt(e))return;let t=e.document;this._video=t.createElement(`video`);try{var n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_;this._protocols={mms:Ct(),mse:wt(),hls:!!((n=this._video).canPlayType?.call(n,`application/x-mpegurl`)||(r=this._video).canPlayType?.call(r,`vnd.apple.mpegURL`)),webrtc:!!e.RTCPeerConnection,ws:!!e.WebSocket},this._containers={mp4:!!(i=this._video).canPlayType?.call(i,`video/mp4`),webm:!!(a=this._video).canPlayType?.call(a,`video/webm`),cmaf:!0};let t=!!(!((o=St())==null||(s=o.isTypeSupported)==null)&&s.call(o,Dt)),v=!!(!((c=St())==null||(l=c.isTypeSupported)==null)&&l.call(c,Ot)),y=!!(!((u=St())==null||(d=u.isTypeSupported)==null)&&d.call(u,jt));this._codecs={h264:t,h265:v,vp9:!!(!((f=St())==null||(p=f.isTypeSupported)==null)&&p.call(f,kt)),av1:!!(!((m=St())==null||(h=m.isTypeSupported)==null)&&h.call(m,At)),aac:y,opus:!!(!((g=St())==null||(_=g.isTypeSupported)==null)&&_.call(g,Mt)),mpeg:(t||v)&&y},this._nativeHlsSupported=this._protocols.hls&&this._containers.mp4}catch(e){console.error(e)}try{this.destroyVideoElement()}catch(e){console.error(`Error destroying video element:`,e)}}destroyVideoElement(){if(!this._video)return;if(this._video.pause(),this._video.currentTime=0,this._video.removeAttribute(`src`),this._video.src=``,this._video.load(),this._video.remove){this._video.remove(),this._video=null;return}this._video.parentNode&&this._video.parentNode.removeChild(this._video);let e=this._video.cloneNode(!1);this._video.parentNode?.replaceChild(e,this._video),this._video=null}}var Lt=`audio/mpeg`;class Rt{constructor(){this._audio=void 0,this._containers=void 0,this._codecs=void 0}supportMp3(){return this._codecs.mp3&&this._containers.mpeg}detect(){let e=Ft();if(!It(e))return;let t=e.document;this._audio=t.createElement(`audio`);try{var n,r,i;this._containers={mpeg:!!(n=this._audio).canPlayType?.call(n,Lt)},this._codecs={mp3:!!(!((r=St())==null||(i=r.isTypeSupported)==null)&&i.call(r,Lt))}}catch(e){console.error(e)}try{this.destroyAudioElement()}catch(e){console.error(`Error destroying audio element:`,e)}}destroyAudioElement(){if(!this._audio)return;if(this._audio.pause(),this._audio.currentTime=0,this._audio.removeAttribute(`src`),this._audio.src=``,this._audio.load(),this._audio.remove){this._audio.remove(),this._audio=null;return}this._audio.parentNode&&this._audio.parentNode.removeChild(this._audio);let e=this._audio.cloneNode(!1);this._audio.parentNode?.replaceChild(e,this._audio),this._audio=null}}class zt{constructor(){this.isInited$=new ot(!1),this._displayChecker=void 0,this._deviceChecker=void 0,this._browserChecker=void 0,this._videoChecker=void 0,this._audioChecker=void 0,this._displayChecker=new yt,this._deviceChecker=new mt(this._displayChecker),this._browserChecker=new ut,this._videoChecker=new Pt(this._deviceChecker,this._browserChecker),this._audioChecker=new Rt,this.detect()}get display(){return this._displayChecker}get device(){return this._deviceChecker}get browser(){return this._browserChecker}get video(){return this._videoChecker}get audio(){return this._audioChecker}detect(){var e=this;return D(function*(){at()&&(e._displayChecker.detect(),e._deviceChecker.detect(),e._browserChecker.detect(),e._videoChecker.detect(),e._audioChecker.detect(),e.isInited$.next(!0))})()}}var P=new zt,Bt=(e,t=!1)=>{let{containers:n,protocols:r,codecs:i,nativeHlsSupported:a}=P.video,{isMobile:o}=P.device,s=P.device.isMac&&P.browser.isSafari,c=t&&!o&&!s,l=(i.h264||i.h265)&&i.aac,u=r.mse||r.mms;return e.filter(e=>{switch(e){case`DASH_SEP`:return u&&n.mp4&&l;case`DASH_WEBM`:return u&&n.webm&&i.vp9&&i.opus;case`DASH_WEBM_AV1`:return u&&n.webm&&i.av1&&i.opus;case`DASH_STREAMS`:return u&&(n.mp4&&l||n.webm&&(i.vp9||i.av1)&&(i.opus||i.aac));case`DASH_LIVE`:return u&&n.mp4&&l;case`DASH_LIVE_CMAF`:return u&&n.mp4&&l&&n.cmaf;case`DASH_ONDEMAND`:return u&&n.mp4&&l;case`HLS`:case`HLS_ONDEMAND`:case`HLS_FMP4`:case`HLS_LIVE`:case`HLS_LIVE_CMAF`:return a&&!c;case`MPEG`:return n.mp4;case`DASH`:case`DASH_LIVE_WEBM`:return!1;case`WEB_RTC_LIVE`:return r.webrtc&&r.ws&&i.h264&&(n.mp4||n.webm);default:return it(e)}})},Vt=e=>{switch(e){case`MPEG`:case`DASH`:case`DASH_SEP`:case`DASH_ONDEMAND`:case`DASH_WEBM`:case`DASH_WEBM_AV1`:case`DASH_STREAMS`:case`HLS`:case`HLS_FMP4`:case`HLS_ONDEMAND`:return!1;case`DASH_LIVE`:case`DASH_LIVE_CMAF`:case`HLS_LIVE`:case`HLS_LIVE_CMAF`:case`DASH_LIVE_WEBM`:case`WEB_RTC_LIVE`:return!0;default:return it(e)}},Ht=(e,t=!1)=>Bt(Object.keys(e).filter(e=>!Vt(e)),t).length>0;class Ut{constructor(e){this.subscription=new Re,this.log=void 0,this.params=void 0,this.sessionId$=new ze(null),this.mediaSessionId$=new ze(null),this.contentId$=new ze(null),this.progressTicker=void 0,this.isMobile=pt(),this.mobileVolumeState={muted:!1,volume:0},this.media=null,this.lastRequestedVolume=null,this.syncMediaState=e=>{if(Ie(e))return;this.media=e,this.mediaSessionId$.next(e.mediaSessionId??null);let t=e.media?.contentId;t&&this.contentId$.next(t),this.syncPlaybackState(e);let n=e.media?.duration;Fe(n)&&this.params.output.duration$.next(Math.max(0,n));let r=e.currentTime;if(Fe(r)){this.params.desiredState.seekState.getState().state===`applying`&&this.params.output.seekedEvent$.next(),this.params.output.position$.next(r);let t=this.params.output.isLive$.getValue();e.playerState===`PLAYING`&&!t?this.progressTicker.start(r):this.progressTicker.pause()}},this.params=e,this.progressTicker=new rt(e),this.log=this.params.dependencies.logger.createComponentLog(`ChromecastPresentationApiProvider`),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Vt(e.format)),this.subscribe()}subscribe(){let e=e=>{this.params.output.error$.next({category:Me.WTF,id:`ChromecastPresentationApiProvider`,message:e?.message??`Unknown error`,thrown:e})};this.subscription.add(this.params.chromecastConnector.message$.pipe(Ne(e=>!!e)).subscribe(e=>{this.handleMessage(e)},e)),this.subscription.add(this.sessionId$.pipe(Ne(Fe),Pe(),je(0)).subscribe(()=>{this.loadMedia()},e));let t=this.contentId$.pipe(Pe(),Le(Boolean));this.subscription.add(Ae({seekState:this.params.desiredState.seekState.stateChangeEnded$,mediaLoaded:t}).pipe(Ne(({mediaLoaded:e})=>e)).subscribe(()=>{let e=this.params.desiredState.seekState.getState();e.state===`requested`&&this.seek(e.position/1e3)},e));let n=Ae({playbackState:this.params.desiredState.playbackState.stateChangeStarted$,mediaLoaded:t});this.subscription.add(n.pipe(Ne(({mediaLoaded:e})=>e),je(0)).subscribe(()=>{this.syncPlayback()},e)),this.subscription.add(n.pipe(Ne(({mediaLoaded:e,playbackState:{from:t,to:n}})=>!e&&t===`stopped`&&n===`playing`)).subscribe(()=>{this.loadMedia()},e)),this.subscription.add(Ae({volumeState:this.params.desiredState.volume.stateChangeStarted$.pipe(je(30)),mediaLoaded:t}).pipe(Ne(({mediaLoaded:e})=>e)).subscribe(({volumeState:e})=>{let{muted:t,volume:n}=e.to;this.setVolume(n,t)},e))}handleMessage(e){switch(e.type){case`new_session`:case`update_session`:{var t;this.sessionId$.next(e.message.sessionId);let n=(t=e.message)==null||(t=t.media)==null?void 0:t[0];this.syncMediaState(n);let r=e.message?.receiver.volume;this.syncVolumeState(r)}break;case`v2_message`:switch(e.message?.type){case`MEDIA_STATUS`:{var n;let t=(n=e.message)==null||(n=n.status)==null?void 0:n[0];this.syncMediaState(t);break}}break}}loadMedia(){let e=Xe(this.params),t=this.media?.currentTime,n=this.params.desiredState.seekState.getState(),r=t??(n.state===`none`?0:n.position/1e3),i=this.params.desiredState.playbackState.getState()===`playing`;this.params.chromecastConnector.sendV2Message({type:`LOAD`,requestId:0,media:e,autoplay:i,currentTime:r,customData:null,activeTrackIds:null}),this.params.output.willSeekEvent$.next()}stop(){this.params.chromecastConnector.stopMedia()}play(){let e=this.mediaSessionId$.getValue();ke(e,`play on null mediaSessionId`),this.params.chromecastConnector.sendV2Message({type:`PLAY`,mediaSessionId:e,customData:null})}pause(){let e=this.mediaSessionId$.getValue();ke(e,`pause on null mediaSessionId`),this.params.chromecastConnector.sendV2Message({type:`PAUSE`,mediaSessionId:e,customData:null})}seek(e){let t=this.mediaSessionId$.getValue();ke(t,`seek on null mediaSessionId`),this.params.chromecastConnector.sendV2Message({type:`SEEK`,currentTime:e,mediaSessionId:t}),this.params.output.willSeekEvent$.next()}setVolume(e,t){let n=e,r=`[setVolume] volume: ${e}, muted: ${t}`;this.isMobile&&(n=this.mobileVolumeState.volume,r+=`, mobile next volume: ${n}`),this.log({message:r}),this.lastRequestedVolume={volume:n,muted:t},this.params.chromecastConnector.sendV2Message({type:`SET_VOLUME`,requestId:0,volume:{level:t?0:n,muted:t?!0:null}})}syncPlaybackState({playerState:e,idleReason:t}){let n=this.params.output.isBuffering$.getValue(),r=e===`BUFFERING`;switch(n!==r&&this.params.output.isBuffering$.next(r),e){case`PAUSED`:j(this.params.desiredState.playbackState,`paused`);break;case`PLAYING`:j(this.params.desiredState.playbackState,`playing`);break;case`IDLE`:t===`FINISHED`?(this.params.output.endedEvent$.next(),j(this.params.desiredState.playbackState,`stopped`),this.contentId$.next(null)):j(this.params.desiredState.playbackState,`ready`);break;case`BUFFERING`:break}}syncPlayback(){let e=this.params.desiredState.playbackState.getState();switch(this.log({message:`[syncPlayback] ${e}`}),e){case`ready`:break;case`playing`:this.play();break;case`paused`:this.pause();break;case`stopped`:this.stop();break}}syncVolumeState(e){if(Ie(e))return;let{level:t,muted:n}=e,r={muted:n??!1,volume:t??0};this.lastRequestedVolume&&=(n&&(r.volume=this.lastRequestedVolume.volume),this.lastRequestedVolume.muted&&!t&&!n&&(r.volume=this.lastRequestedVolume.volume,r.muted=!0),null);let i=`[syncVolumeState] volume: ${r.volume}, muted: ${r.muted}`;this.isMobile&&(this.mobileVolumeState.volume=r.volume,this.mobileVolumeState.muted=r.muted,r.volume=this.params.output.volume$.getValue().volume,i+=`, volume passed to state machine: ${r.volume}`),this.log({message:i}),this.params.output.volume$.next(r)}destroy(){this.progressTicker.destroy(),this.subscription.unsubscribe()}}var $t=e=>({castDevice:{friendlyName:e},remotePlayer:{},remotePlayerController:{},session:{}}),en=()=>String(Date.now())+String(Math.floor(Math.random()*1e5));class tn{constructor(e){this.params=void 0,this.clientId=void 0,this.capabilities=[`WEB`],this.presentationRequest$=new Xt(null),this.log=void 0,this.sessionId$=new Xt(null),this.broadcastChannel=new BroadcastChannel(`vk_player_chromecast_events`),this.subscription=new Jt,this.subscriptionEvents=new Jt,this.isDestroyed=!1,this.sequenceNumber=0,this.presentationAvailable$=new Xt(!1),this.presentationConnection$=new Xt(null),this.message$=new Xt(null),this.friendlyName$=new Xt(null),this.errorEvent$=new qt,this.clientId=this.getClientId(),this.params=e,this.log=e.logger.createComponentLog(`ChromecastPresentationApiConnector`),this.log({message:`constructor`}),this.safeReinitPresentation(),this.subscribe()}destroy(){this.log({message:`destroy`}),this.subscription.unsubscribe(),this.subscriptionEvents.unsubscribe(),this.broadcastChannel.close(),this.isDestroyed=!0}disconnect(e=!0){this.log({message:`disconnect`}),e&&this.stopMedia(),this.presentationRequest$.next(null);let t=this.presentationConnection$.getValue();t&&t.close(),this.presentationConnection$.next(null),this.friendlyName$.next(null),this.resetSequenceNumber(),this.resetSubscriptionEvents()}stopMedia(){this.log({message:`stopMedia`}),this.sendV2Message({type:`STOP`})}reinitPresentation(e=!0){let t=this.createCastUrl(),n=new PresentationRequest(t);this.presentationRequest$.next(n),this.log({message:`PresentationRequest created`}),n.getAvailability().then(e=>{let t=()=>{this.log({message:`PresentationRequest presentation availability: ${e.value}`}),this.presentationAvailable$.next(e.value)};this.subscriptionEvents.add(Zt(e,`change`).subscribe(()=>{t()})),t()}).catch(()=>{this.presentationAvailable$.next(!0)}),Qt().navigator.presentation.defaultRequest=n,e&&n.reconnect(`auto-join`).then(e=>{this.log({message:`PresentationRequest reconnect success`}),this.handleConnection(e)}).catch(()=>{this.log({message:`PresentationRequest reconnect failed`})})}safeReinitPresentation(e){try{this.reinitPresentation(e)}catch(e){this.errorEvent$.next({category:Gt.WTF,id:`ChromecastPresentationApiConnector`,message:e?.message??`reinitPresentation error`,thrown:e})}}connect(){var e=this;return D(function*(){e.log({message:`connect`});try{e.presentationRequest$.getValue()||(e.log({message:`reinitPresentation`}),e.reinitPresentation(!1));let t=e.presentationRequest$.getValue();Wt(t,`connect with null presentationRequest`);let n=yield t.start();e.handleConnection(n)}catch(t){switch(t?.name){case`AbortError`:case`NotAllowedError`:break;default:e.errorEvent$.next({category:Gt.WTF,id:`ChromecastPresentationApiConnector`,message:t?.message??`connect error`,thrown:t});break}}})()}subscribe(){this.subscription.add(Zt(this.broadcastChannel,`message`).subscribe(e=>{this.log({message:`broadcast connection data: ${e.data}`}),e.data===`connection`&&this.disconnect(!1)})),this.subscription.add(this.presentationAvailable$.subscribe(e=>{this.log({message:`presentationAvailable$: ${e}`})})),this.subscription.add(this.presentationConnection$.pipe(Yt(e=>{this.log({message:`presentationConnection$: ${!!e}`})}),Kt(e=>!!e)).subscribe(e=>{let t=Zt(e,`message`).subscribe(e=>{let t=JSON.parse(e.data);t.clientId===this.clientId&&(this.log({message:`[onmessage] ${e.data}`}),this.handleMessage(t),this.message$.next(t))}),n=Zt(e,`connect`).subscribe(()=>{this.send(`client_connect`)}),r=Zt(e,`close`).subscribe(e=>{switch(e.reason){case`error`:this.errorEvent$.next({category:Gt.WTF,id:`ChromecastPresentationApiConnector`,message:`Session error`,thrown:e});break;case`closed`:break}});this.subscriptionEvents.add(t),this.subscriptionEvents.add(n),this.subscriptionEvents.add(r)}))}send(e){switch(e){case`client_connect`:{let e={type:`client_connect`,message:this.clientId,sequenceNumber:-1,timeoutMillis:0,clientId:this.clientId};this.safeSend(JSON.stringify(e));break}}}sendV2Message(e){let t=this.sessionId$.getValue();if(t){let n={type:`v2_message`,sequenceNumber:this.getSequenceNumber(),timeoutMillis:0,clientId:this.clientId,message:E(E({},e),{},{sessionId:t})};this.safeSend(JSON.stringify(n))}}safeSend(e){try{this.log({message:`[send] ${e}`});let t=this.presentationConnection$.getValue();t?.state===`connected`&&t?.send(e)}catch(t){this.errorEvent$.next({category:Gt.WTF,id:`ChromecastPresentationApiConnector`,message:`PresentationConnection send error`,data:{message:e},thrown:t})}}handleMessage(e){switch(e.type){case`new_session`:case`update_session`:this.sessionId$.next(e.message.sessionId),this.friendlyName$.next(e.message.receiver.friendlyName||`Chromecast Device`);break;case`receiver_action`:e.message?.action===`stop`&&this.disconnect();break}}createCastUrl(){return`cast:${this.params.appId}?clientId=${this.clientId}&autoJoinPolicy=tab_and_origin_scoped&defaultActionPolicy=create_session&launchTimeout=60000&supportedAppTypes=${this.capabilities}&appParams=%7B%22launchCheckerParams%22%3A%7B%7D%7D`}getSequenceNumber(){let e=this.sequenceNumber;return this.sequenceNumber=(this.sequenceNumber+1)%(2**53-1),e}resetSequenceNumber(){this.sequenceNumber=0}getClientId(){let e=`__vk_player_chromecast_id`;return Qt()[e]=Qt()[e]||en()}resetSubscriptionEvents(){this.subscriptionEvents.unsubscribe(),this.subscriptionEvents=new Jt}handleConnection(e){this.log({message:`connection available`}),this.isDestroyed?(this.log({message:`connected on already destroyed component`}),e.close()):(this.broadcastChannel.postMessage(`connection`),this.presentationConnection$.next(e))}}class un{static isSupported(){return`chrome`in window&&`presentation`in navigator&&`BroadcastChannel`in window}constructor(e){this.subscription=new on,this.log=void 0,this.contentId=void 0,this.connection$=new nn(void 0),this.castState$=new nn(`NOT_AVAILABLE`),this.errorEvent$=new rn,this.chromecastConnector=void 0;let t=un.isSupported();this.log=e.dependencies.logger.createComponentLog(`ChromecastPresentationApiInitializer`),this.log({message:`[constructor] receiverApplicationId: ${e.receiverApplicationId}, isDisabled: ${e.isDisabled}, isSupported: ${t}`}),!(!t||e.isDisabled||!e.receiverApplicationId)&&(this.chromecastConnector=new tn({appId:e.receiverApplicationId,logger:e.dependencies.logger}),this.subscribe())}subscribe(){ln(this.chromecastConnector,`subscribe with null chromecastConnector`),this.subscription.add(this.chromecastConnector.errorEvent$.subscribe(this.errorEvent$));let e=sn({connection:this.chromecastConnector.presentationConnection$,available:this.chromecastConnector.presentationAvailable$,friendlyName:this.chromecastConnector.friendlyName$.pipe(cn())});this.subscription.add(e.pipe(an(({connection:e,friendlyName:t})=>!!(e&&t)),cn()).subscribe(e=>{let t=this.chromecastConnector?.friendlyName$.getValue()??``;this.connection$.next(e?$t(t):void 0)})).add(e.subscribe(({available:e,connection:t})=>{e?t?this.castState$.next(`CONNECTED`):this.castState$.next(`AVAILABLE`):this.castState$.next(`NOT_AVAILABLE`)}))}connect(){this.log({message:`connect`}),this.chromecastConnector?.connect()}disconnect(){this.log({message:`disconnect`}),this.chromecastConnector?.disconnect()}stopMedia(){var e=this;return D(function*(){e.log({message:`stopMedia`}),e.chromecastConnector?.stopMedia()})()}toggleConnection(){let e=!!this.chromecastConnector?.presentationConnection$.getValue();this.log({message:`toggleConnection: isConnected - ${e}`}),e?this.disconnect():this.connect()}setVolume(e){}setMuted(e){}destroy(){this.log({message:`destroy`}),this.chromecastConnector?.destroy(),this.subscription.unsubscribe()}}var vn=(e,t)=>e===t;class yn{constructor(e,t=vn){this.comparator=void 0,this.state=void 0,this.prevState=void 0,this.transition=void 0,this.transitionStarted$=new gn,this.transitionEnded$=new gn,this.transitionUpdated$=new gn,this.forceChanged$=new gn,this.stateChangeStarted$=_n(this.transitionStarted$,this.transitionUpdated$),this.stateChangeEnded$=_n(this.transitionEnded$,this.forceChanged$),this.comparator=t,this.state=e,this.prevState=void 0}setState(e){let t=this.transition,n=this.state;this.transition=void 0,this.prevState=n,this.state=e,t?this.comparator(t.to,e)?this.transitionEnded$.next(t):this.forceChanged$.next({from:t.from,to:e,canceledTransition:t}):this.forceChanged$.next({from:n,to:e,canceledTransition:t})}startTransitionTo(e){let t=this.transition,n=this.state;this.comparator(n,e)||hn(t)&&this.comparator(t.to,e)||(this.prevState=n,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:n,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}}var An=5,jn=5,Mn=500,Nn=7e3;class Pn{constructor(e){this.subscription=new On,this.loadMediaTimeoutSubscription=new On,this.videoState=new yn(`stopped`),this.params=void 0,this.log=void 0,this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),n=this.params.desiredState.playbackState.getState(),r=this.params.desiredState.playbackState.getTransition(),i=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${e}; videoTransition: ${JSON.stringify(t)}; desiredPlaybackState: ${n}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(i)};`}),n===`stopped`){e!==`stopped`&&(this.videoState.startTransitionTo(`stopped`),this.stop());return}if(!t){if(r?.to!==`paused`&&i.state===`requested`&&e!==`stopped`){this.seek(i.position/1e3);return}switch(n){case`ready`:switch(e){case`playing`:case`paused`:case`ready`:break;case`stopped`:this.videoState.startTransitionTo(`ready`),this.prepare();break;default:bn(e)}break;case`playing`:switch(e){case`playing`:break;case`paused`:this.videoState.startTransitionTo(`playing`),this.params.connection.remotePlayerController.playOrPause();break;case`ready`:this.videoState.startTransitionTo(`playing`),this.params.connection.remotePlayerController.playOrPause();break;case`stopped`:this.videoState.startTransitionTo(`ready`),this.prepare();break;default:bn(e)}break;case`paused`:switch(e){case`playing`:this.videoState.startTransitionTo(`paused`),this.params.connection.remotePlayerController.playOrPause();break;case`paused`:break;case`ready`:this.videoState.startTransitionTo(`paused`),this.videoState.setState(`paused`);break;case`stopped`:this.videoState.startTransitionTo(`ready`),this.prepare();break;default:bn(e)}break;default:bn(n)}}},this.params=e,this.log=this.params.dependencies.logger.createComponentLog(`ChromecastProvider`),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Vt(e.format)),this.params.output.isAudioAvailable$.next(!0),this.handleRemoteVolumeChange({volume:this.params.connection.remotePlayer.volumeLevel,muted:this.params.connection.remotePlayer.isMuted});let t=this.params.connection.session.getMediaSession();t&&this.restoreSession(t),this.subscribe()}destroy(){this.log({message:`[destroy]`}),this.subscription.unsubscribe()}subscribe(){this.subscription.add(this.loadMediaTimeoutSubscription);let e=new On;this.subscription.add(e),this.subscription.add(Tn(this.videoState.stateChangeStarted$.pipe(wn(e=>`stateChangeStarted$ ${JSON.stringify(e)}`)),this.videoState.stateChangeEnded$.pipe(wn(e=>`stateChangeEnded$ ${JSON.stringify(e)}`))).subscribe(e=>this.log({message:`[videoState] ${e}`})));let t=(e,t)=>this.subscription.add(e.subscribe(t));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{let t=new Dn;e.add(t.pipe(xn(Mn)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let n=NaN;e.add(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(e=>{this.logRemoteEvent(e);let r=e.value;this.params.output.position$.next(r),(this.params.desiredState.seekState.getState().state===`applying`||Math.abs(r-n)>An)&&t.next(r),n=r})),e.add(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(e=>{this.logRemoteEvent(e),this.params.output.duration$.next(e.value)}))}t(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),t=>{this.logRemoteEvent(t),t.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),e=>{this.logRemoteEvent(e),e.value?this.handleRemotePause():this.handleRemotePlay()}),t(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),e=>{this.logRemoteEvent(e);let{remotePlayer:t}=this.params.connection,n=e.value,r=this.params.output.isBuffering$.getValue(),i=n===chrome.cast.media.PlayerState.BUFFERING;switch(r!==i&&this.params.output.isBuffering$.next(i),n){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&t.duration-t.currentTime<jn&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),j(this.params.desiredState.playbackState,`stopped`);break;case chrome.cast.media.PlayerState.PAUSED:this.handleRemotePause();break;case chrome.cast.media.PlayerState.PLAYING:this.handleRemotePlay();break;case chrome.cast.media.PlayerState.BUFFERING:break;default:bn(n)}}),t(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),e=>{this.logRemoteEvent(e),this.handleRemoteVolumeChange({volume:e.value})}),t(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),e=>{this.logRemoteEvent(e),this.handleRemoteVolumeChange({muted:e.value})}),t(Tn(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,En([`init`])).pipe(xn(0)),this.syncPlayback)}restoreSession(e){this.log({message:`restoreSession`});let{remotePlayer:t}=this.params.connection;if(e.playerState!==chrome.cast.media.PlayerState.IDLE){t.isPaused?(this.videoState.setState(`paused`),j(this.params.desiredState.playbackState,`paused`)):(this.videoState.setState(`playing`),j(this.params.desiredState.playbackState,`playing`));let e=this.params.output.isLive$.getValue();this.params.output.duration$.next(e?0:t.duration),this.params.output.position$.next(e?0:t.currentTime),this.params.desiredState.seekState.setState({state:`none`})}}prepare(){let e=this.params.format;this.log({message:`[prepare] format: ${e}`});let t=Xe(this.params),n=this.createLoadRequest(t);this.loadMedia(n)}handleRemotePause(){let e=this.videoState.getState();(this.videoState.getTransition()?.to===`paused`||e===`playing`)&&(this.videoState.setState(`paused`),j(this.params.desiredState.playbackState,`paused`))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to===`playing`||e===`paused`)&&(this.videoState.setState(`playing`),j(this.params.desiredState.playbackState,`playing`))}handleRemoteReady(){this.videoState.getTransition()?.to===`ready`&&this.videoState.setState(`ready`),this.params.desiredState.playbackState.getTransition()?.to===`ready`&&j(this.params.desiredState.playbackState,`ready`)}handleRemoteStop(){this.videoState.getState()!==`stopped`&&this.videoState.setState(`stopped`)}handleRemoteVolumeChange(e){let t=this.params.output.volume$.getValue(),n={volume:e.volume??t.volume,muted:e.muted??t.muted};(n.volume!==t.volume||n.muted!==n.muted)&&this.params.output.volume$.next(n)}seek(e){this.params.output.willSeekEvent$.next();let{remotePlayer:t,remotePlayerController:n}=this.params.connection;t.currentTime=e,n.seek()}stop(){let{remotePlayerController:e}=this.params.connection;e.stop()}createLoadRequest(e){let t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;let n=this.params.desiredState.seekState.getState();return n.state===`applying`||n.state===`requested`?t.currentTime=this.params.output.isLive$.getValue()?0:n.position/1e3:t.currentTime=0,t}loadMedia(e){let t=this.params.connection.session.loadMedia(e),n=new Promise((e,t)=>{this.loadMediaTimeoutSubscription.add(kn(Nn).subscribe(()=>t(`timeout(${Nn})`)))});mn(Promise.race([t,n]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state===`applying`&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},e=>{let t=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${e}`;this.log({message:t}),this.params.output.error$.next({id:`ChromecastProvider.loadMedia`,category:Sn.VIDEO_PIPELINE,message:t,thrown:e})}),()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}}var Vn=e=>{try{e.pause(),e.playbackRate=0,Bn(e),e.remove()}catch(e){console.error(e)}},Hn=`__spvc`;class Un{constructor(){this.attribute=`data-pool-reused`}get(e){return e.hasAttribute(this.attribute)}set(e,t){e.toggleAttribute(this.attribute,t)}delete(e){e.removeAttribute(this.attribute)}}var Wn=Rn(),Gn=Wn.WeakMap?new Wn.WeakMap:new Un,Kn=Wn.WeakMap?new Wn.WeakMap:new Map,qn=(e,t=20)=>{let n=0;return Ln(e,`ratechange`).subscribe(r=>{n++,n>=t&&(e.currentTime=e.currentTime,n=0)})};function Jn(e){e.style.position=`fixed`,e.style.left=`100%`,e.setAttribute(`data-role`,`screen`),Rn().document.body.appendChild(e)}function Yn(e,t){e.style.position=``,e.style.left=``,t.appendChild(e)}var Xn=(e,{audioVideoSyncRate:t,disableYandexPiP:n,reuseOwnVideoElement:r})=>{let i,a=e.querySelector(`video`),o=!!a,s=Rn().document.querySelector(`body > video[data-role=screen]`)||void 0;r?Wn[Hn]=s:(s?.remove(),delete Wn[Hn]),a?(i=a,In(i)):s&&s===Wn[Hn]?(i=s,Yn(i,e)):(i=Rn().document.createElement(`video`),e.appendChild(i),r&&(Wn[Hn]=i)),Gn.set(i,o);let c=new zn;return c.add(qn(i,t)),Kn.set(i,c),i.setAttribute(`crossorigin`,`anonymous`),i.setAttribute(`playsinline`,`playsinline`),n&&i.setAttribute(`x-yandex-pip`,`false`),i.controls=!1,i.setAttribute(`poster`,`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=`),i},Zn=e=>(e.setAttribute(`crossorigin`,`anonymous`),e.controls=!1,e),Qn=(e,t)=>{if(e instanceof HTMLAudioElement){$n(e,t);return}if(e instanceof HTMLVideoElement){er(e,t);return}};function $n(e,{clearAudioElementOnDispose:t}){if(t){In(e);return}Vn(e)}function er(e,{reuseOwnVideoElement:t}){Kn.get(e)?.unsubscribe(),Kn.delete(e);let n=Gn.get(e);Gn.delete(e),In(e),t&&!n&&Jn(e)}var vr=(e,t,n,{equal:r=(e,t)=>e===t,changed$:i,onError:a}={})=>{let o=e.getState(),s=t(),c=gr(i),l=new _r;return i&&l.add(i.subscribe(t=>{r(t,e.getState())&&e.setState(t)},a)),r(s,o)||(n(o),c&&e.setState(o)),l.add(e.stateChangeStarted$.subscribe(t=>{n(t.to),c&&e.setState(t.to)},a)),l},yr=(e,t,n)=>vr(t,()=>e.loop,t=>{hr(t)&&(e.loop=t)},{onError:n}),br=(e,t,n,r,i)=>vr(t,()=>({muted:e.muted,volume:e.volume}),t=>{i?.skipVideoElVolumeSync$.getValue()||hr(t)&&(e.muted=t.muted,e.volume=t.volume)},{equal:(e,t)=>e===t||e?.muted===t?.muted&&e?.volume===t?.volume,changed$:n,onError:r}),xr=(e,t,n,r)=>vr(t,()=>e.playbackRate,t=>{hr(t)&&(e.playbackRate=t)},{changed$:n,onError:r}),Sr=vr,Cr=e=>[`__`,e.language,e.label].join(`|`),wr=(e,t)=>{if(e.id===t)return!0;let[n,r,i]=t.split(`|`);return e.language===r&&e.label===i};class Tr{constructor(e){this.available$=new dr,this.current$=new pr(void 0),this.error$=new dr,this.video=void 0,this.cueSettings=void 0,this.subscription=new fr,this.externalTracks=new Map,this.internalTracks=new Map,this.baseURL=void 0,this.baseURL=e}connect(e,t,n){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();let r=e=>{this.error$.next({id:`TextTracksManager`,category:mr.WTF,message:`Generic HtmlVideoTextTrackManager error`,thrown:e})};this.subscription.add(this.available$.subscribe(n.availableTextTracks$)),this.subscription.add(this.current$.subscribe(n.currentTextTrack$)),this.subscription.add(this.error$.subscribe(n.error$)),this.subscription.add(Sr(t.internalTextTracks,()=>tr(this.internalTracks),e=>{ir(e)&&this.setInternal(e)},{equal:(e,t)=>ir(e)&&ir(t)&&e.length===t.length&&e.every(({id:e},n)=>e===t[n].id),changed$:this.available$.pipe(ur(e=>e.filter(({type:e})=>e===`internal`))),onError:r})),this.subscription.add(Sr(t.externalTextTracks,()=>tr(this.externalTracks),e=>{ir(e)&&this.setExternal(e)},{equal:(e,t)=>ir(e)&&ir(t)&&e.length===t.length&&e.every(({id:e},n)=>e===t[n].id),changed$:this.available$.pipe(ur(e=>e.filter(({type:e})=>e===`external`))),onError:r})),this.subscription.add(Sr(t.currentTextTrack,()=>{if(this.video)return;let e=this.htmlTextTracksAsArray().find(({mode:e})=>e===`showing`);return e&&this.htmlTextTrackToITextTrack(e).id},e=>this.select(e),{changed$:this.current$,onError:r})),this.subscription.add(Sr(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let e of this.htmlTextTracksAsArray())this.applyCueSettings(e.cues),this.applyCueSettings(e.activeCues)}))}subscribe(){rr(this.video);let{textTracks:e}=this.video;this.subscription.add(or(e,`addtrack`).subscribe(()=>{let e=this.current$.getValue();e&&this.select(e)})),this.subscription.add(sr(or(e,`addtrack`),or(e,`removetrack`),cr([`init`])).pipe(ur(()=>this.htmlTextTracksAsArray().map(e=>this.htmlTextTrackToITextTrack(e))),lr((e,t)=>e.length===t.length&&e.every(({id:e},n)=>e===t[n].id))).subscribe(this.available$)),this.subscription.add(sr(or(e,`change`),cr([`init`])).pipe(ur(()=>this.htmlTextTracksAsArray().find(({mode:e})=>e===`showing`)),ur(e=>e&&this.htmlTextTrackToITextTrack(e).id),lr()).subscribe(this.current$));let t=e=>this.applyCueSettings(e.target?.activeCues??null);this.subscription.add(or(e,`addtrack`).subscribe(e=>{e.track?.addEventListener(`cuechange`,t);let n=e=>{let t=e.target?.cues??null;t&&t.length&&(this.applyCueSettings(e.target?.cues??null),e.target?.removeEventListener(`cuechange`,n))};e.track?.addEventListener(`cuechange`,n)})),this.subscription.add(or(e,`removetrack`).subscribe(e=>{e.track?.removeEventListener(`cuechange`,t)}))}applyCueSettings(e){if(!e||!e.length)return;let t=this.cueSettings.getState();for(let n of Array.from(e)){let e=n;ir(t.align)&&(e.align=t.align),ir(t.position)&&(e.position=t.position),ir(t.size)&&(e.size=t.size),ir(t.line)&&(e.line=t.line)}}htmlTextTracksAsArray(e=!1){rr(this.video);let t=[...this.video.textTracks];return e?t:t.filter(Tr.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:n}=e,r=e.id?e.id:Cr(e),i=this.externalTracks.has(r),a=(i?this.externalTracks.get(r)?.isAuto:this.internalTracks.get(r)?.isAuto)??nr(r,`auto`);return i?{id:r,type:`external`,isAuto:a,language:t,label:n,url:this.externalTracks.get(r)?.url}:{id:r,type:`internal`,isAuto:a,language:t,label:n,url:this.internalTracks.get(r)?.url}}static isHealthyTrack(e){return!(e.kind===`metadata`||e.groupId||e.id===``&&e.label===``&&e.language===``)}setExternal(e){this.internalTracks.size>0&&Array.from(this.internalTracks).forEach(([,e])=>this.detach(e)),e.filter(({id:e})=>!this.externalTracks.has(e)).forEach(e=>this.attach(e)),Array.from(this.externalTracks).filter(([t])=>!e.find(e=>e.id===t)).forEach(([,e])=>this.detach(e))}setInternal(e){let t=[...this.externalTracks];e.filter(({id:e,language:n,isAuto:r})=>!this.internalTracks.has(e)&&!t.some(([,e])=>e.language===n&&e.isAuto===r)).forEach(e=>this.attach(e)),Array.from(this.internalTracks).filter(([t])=>!e.find(e=>e.id===t)).forEach(([,e])=>this.detach(e))}select(e){rr(this.video);for(let e of this.htmlTextTracksAsArray(!0))e.mode=`showing`;for(let t of this.htmlTextTracksAsArray(!0))(ar(e)||!wr(t,e))&&(t.mode=`disabled`)}destroy(){if(this.subscription.unsubscribe(),this.video)for(let e of Array.from(this.video.getElementsByTagName(`track`))){let t=e.getAttribute(`id`);t&&this.externalTracks.has(t)&&this.video.removeChild(e)}this.externalTracks.clear()}attach(e){rr(this.video);let t=document.createElement(`track`);this.baseURL?t.setAttribute(`src`,new URL(e.url,this.baseURL).toString()):t.setAttribute(`src`,e.url),t.setAttribute(`id`,e.id),e.label&&t.setAttribute(`label`,e.label),e.language&&t.setAttribute(`srclang`,e.language),e.type===`external`?this.externalTracks.set(e.id,e):e.type===`internal`&&this.internalTracks.set(e.id,e),this.video.appendChild(t)}detach(e){rr(this.video);let t=Array.prototype.find.call(this.video.getElementsByTagName(`track`),t=>t.getAttribute(`id`)===e.id);t&&this.video.removeChild(t),e.type===`external`?this.externalTracks.delete(e.id):e.type===`internal`&&this.internalTracks.delete(e.id)}}var Er=Tr;class Dr{constructor(){this.pausedTime=0,this.streamOffset=0,this.pauseTimestamp=0}getTotalPausedTime(){return this.pausedTime+this.getCurrentPausedTime()}getCurrentPausedTime(){return this.pauseTimestamp>0?Date.now()-this.pauseTimestamp:0}getStreamOffset(){return this.streamOffset}getTotalOffset(){return this.getTotalPausedTime()+this.streamOffset}pause(){this.pauseTimestamp===0&&(this.pauseTimestamp=Date.now())}resume(){this.pauseTimestamp>0&&(this.pausedTime+=this.getCurrentPausedTime(),this.pauseTimestamp=0)}resetTo(e,t=!1){this.streamOffset=e,this.pauseTimestamp=0,this.pausedTime=0,t&&this.pause()}}var Or=e=>{let t=e;for(;!(t instanceof Document)&&!(t instanceof ShadowRoot)&&t!==null;)t=t?.parentNode;return t??void 0},kr=e=>{let t=Or(e);return!!(t&&t.fullscreenElement&&t.fullscreenElement===e)},Ar=e=>{let t=Or(e);return!!(t&&t.pictureInPictureElement&&t.pictureInPictureElement===e)};var Gr=3,Kr=(e,t,n=Gr)=>{let r=0,i=0;for(let a=0;a<e.length;a++){let o=e.start(a),s=e.end(a);if(o<=t&&t<=s){if(r=o,i=s,!n)return{from:r,to:i};for(let t=a-1;t>=0;t--)e.end(t)+n>=r&&(r=e.start(t));for(let t=a+1;t<e.length;t++)e.start(t)-n<=i&&(i=e.end(t))}}return{from:r,to:i}},qr=e=>{let t=0;for(let n=0;n<e.length;n++)t+=e.end(n)-e.start(n);return t},Jr=e=>{let t=0;for(let n=0;n<e.length;n++)t+=e.end(n)-e.start(n);return t*1e3},Yr=e=>{let t=t=>F(e,t).pipe(Lr(void 0),I(1)),n=new Wr,r=()=>n.unsubscribe(),i=Mr(F(e,`progress`),F(e,`timeupdate`)),a=i.pipe(jr(()=>Kr(e.buffered,e.currentTime)),I(1)),o=i.pipe(jr(()=>Jr(e.buffered)),I(1)),s=i.pipe(jr(()=>e.buffered.length),I(1)),c=P.browser.isSafari?Rr({play:t(`play`).pipe(zr()),playing:t(`playing`)}).pipe(Lr(void 0),I(1)):t(`playing`),l=F(e,`volumechange`).pipe(jr(()=>({muted:e.muted,volume:e.volume})),I(1)),u=F(e,`ratechange`).pipe(jr(()=>e.playbackRate),I(1)),d=F(e,`error`).pipe(Ir(()=>!!(e.error||e.played.length)),jr(()=>{let t=e.error;return{id:t?`MediaError#${t.code}`:`HtmlVideoError`,category:Vr.VIDEO_PIPELINE,message:t?t.message:`Error event from HTML video element`,thrown:e.error??void 0,origin:Hr.MediaError,data:t?{code:t.code}:void 0}}),I(1)),f=F(e,`timeupdate`).pipe(jr(()=>e.currentTime),I(1)),p=Mr(F(e,`loadedmetadata`),F(e,`timeupdate`),F(e,`pause`),F(e,`seeked`),F(e,`ended`)).pipe(jr(()=>qr(e.played)),Nr(),I(1)),m=[`waiting`,`seeking`,`seeked`,`timeupdate`],h=new Fr,g=.3,_;n.add(Mr(...m.map(t=>F(e,t))).subscribe(t=>{let n=e.currentTime;e.loop&&Pr(_)&&Pr(n)&&_>=e.duration-g&&n<=g&&h.next(_),_=n}));let v=t(`pause`).pipe(Ir(()=>!e.error&&_!==e.duration),I(1)),y=F(e,`enterpictureinpicture`).pipe(I(1)),b=F(e,`leavepictureinpicture`).pipe(I(1)),x=new Ur(Ar(e));n.add(y.subscribe(()=>x.next(!0))),n.add(b.subscribe(()=>x.next(!1)));let S=new Ur(kr(e)),C=F(e,`fullscreenchange`).pipe(I(1));n.add(C.pipe(jr(()=>kr(e))).subscribe(S));let w=F(e,`timeupdate`).pipe(jr(t=>e.duration-e.currentTime<.1),Nr(),I(1)),T=Mr(w.pipe(Ir(t=>!e.loop&&t)),F(e,`ended`)).pipe(Br(1e3),Lr(void 0),I(1)),E=Mr(...[`waiting`,`pause`,`canplay`,`play`,`canplaythrough`,`playing`,`seeking`,`seeked`,`ended`].map(t=>F(e,t)),w.pipe(jr(e=>({type:e?`ended`:`unknown`})))).pipe(jr(t=>P.browser.isFirefox&&t.type===`ended`?e.readyState<2:e.readyState<3),Nr(),I(1));return{playing$:c,pause$:v,canplay$:t(`canplay`),ended$:T,looped$:h,error$:d,seeked$:t(`seeked`),seeking$:t(`seeking`),progress$:t(`progress`),loadStart$:t(`loadstart`),loadedMetadata$:t(`loadedmetadata`),loadedData$:t(`loadeddata`),timeUpdate$:f,durationChange$:F(e,`durationchange`).pipe(jr(()=>e.duration),I(1)),playedTime$:p,isBuffering$:E,currentBuffer$:a,totalBufferDuration$:o,bufferRangeCount$:s,volumeState$:l,playbackRateState$:u,inPiP$:x,inFullscreen$:S,enterPip$:y,leavePip$:b,destroy:r}};var Zr=e=>{switch(e){case`mobile`:return Xr.Q_144P;case`lowest`:return Xr.Q_240P;case`low`:return Xr.Q_360P;case`sd`:case`medium`:return Xr.Q_480P;case`hd`:case`high`:return Xr.Q_720P;case`fullhd`:case`full`:return Xr.Q_1080P;case`quadhd`:case`quad`:return Xr.Q_1440P;case`ultrahd`:case`ultra`:return Xr.Q_2160P}};var ii=e=>`audioTracksAsc`in e;class oi{constructor(){this.last=void 0,this.history={}}recordSelection(e){this.history[e.id]=ai()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}}var _i=(e,t)=>(e??0)/(t>0?t:1),vi=e=>`quality`in e,yi=e=>(t,n)=>e*(Number(t.bitrate)-Number(n.bitrate)),bi=e=>(t,n)=>e*(mi(t.quality,n.quality)?-1:1),xi=e=>(t,n)=>vi(t)&&vi(n)?bi(e)(t,n):yi(e)(t,n),Si=(e,t)=>xi(1)(e,t)<0,Ci=(e,t)=>Math.log(t)/Math.log(e),wi=(e,t,n)=>(t-n)*2**(-10*e)+n,Ti=(e,t,n,r)=>{if(gi(e))return n[0];let i=n.filter(t=>hi(t.bitrate)&&hi(e.bitrate)?e.bitrate/t.bitrate>r:!0),a=fi(n,Math.round(n.length*t.indexOf(e)/(t.length+1)))??fi(n,-1);return a&&pi(i,a)?a:i.length?fi(i,-1):fi(n,0)},Ei=(e,t)=>{if(gi(t)||gi(e))return;let n=e.get(t.id);if(!n?.length)return;let r=(n[n.length-1].time.to-n[0].time.from)/1e3;if(r<=0)return;let i=n.reduce((e,t)=>e+(t.size??1/0),0)*8/1024/r;return isFinite(i)?i:void 0},Di=(e,t)=>hi(e)&&hi(t)&&t>0&&e>0&&e<=t*2,Oi=e=>{let{name:t}=e;return`
6
+ import{objectEntries as le}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as ue}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as de}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as fe,assertNonNullable as pe,isNonNullable as me,ValueSubject as he,Subject as ge,Subscription as _e,merge as ve,observableFrom as ye,fromEvent as be,map as xe,tap as Se,filterChanged as Ce,isNullable as we,ErrorCategory as Te}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as ke,combine as Ae,debounce as je,ErrorCategory as Me,filter as Ne,filterChanged as Pe,isNonNullable as Fe,isNullable as Ie,map as Le,Subscription as Re,ValueSubject as ze}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Be,assertNonNullable as Ve,ErrorCategory as He,getHighestQuality as Ue,isNonNullable as We}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Ge}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Ke}from"@vkontakte/videoplayer-shared/es2015";import{createTimers as tt,TimerModule as nt}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as it}from"@vkontakte/videoplayer-shared/es2015";import{isBrowserWindow as at,ValueSubject as ot}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as st}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as ct,isNullable as lt}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as N}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as dt,isBrowserWindow as ft}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as ht,isBrowserWindow as gt}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as bt,isBrowserWindow as xt}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Ft,isBrowserWindow as It}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Wt,ErrorCategory as Gt,filter as Kt,Subject as qt,Subscription as Jt,tap as Yt,ValueSubject as Xt,fromEvent as Zt,getWindow as Qt}from"@vkontakte/videoplayer-shared/es2015";import{ValueSubject as nn,Subject as rn,map as an,Subscription as on,combine as sn,filterChanged as cn,assertNonNullable as ln}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as dn}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as fn}from"@vkontakte/videoplayer-shared/es2015";import{objectFromEntries as pn}from"@vkontakte/videoplayer-shared/es2015";import{promiseFinally as mn}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as hn,Subject as gn,merge as _n}from"@vkontakte/videoplayer-shared/es2015";import"@vkontakte/videoplayer-shared/es2015";import{assertNever as bn,debounce as xn,ErrorCategory as Sn,fromEvent as Cn,map as wn,merge as Tn,observableFrom as En,Subject as Dn,Subscription as On,timeout as kn}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Fn}from"@vkontakte/videoplayer-shared/es2015";import{clearVideoElement as In,fromEvent as Ln,getWindow as Rn,Subscription as zn}from"@vkontakte/videoplayer-shared/es2015";import{clearVideoElement as Bn}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as tr}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as nr}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as rr,isNonNullable as ir,isNullable as ar,fromEvent as or,merge as sr,observableFrom as cr,filterChanged as lr,map as ur,Subject as dr,Subscription as fr,ValueSubject as pr,ErrorCategory as mr}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as hr,isNullable as gr,Subscription as _r}from"@vkontakte/videoplayer-shared/es2015";import{fromEvent as F,map as jr,merge as Mr,filterChanged as Nr,isNonNullable as Pr,Subject as Fr,filter as Ir,mapTo as Lr,combine as Rr,once as zr,shareReplay as I,throttle as Br,ErrorCategory as Vr,ErrorOrigin as Hr,ValueSubject as Ur,Subscription as Wr}from"@vkontakte/videoplayer-shared/es2015";import{VideoQuality as Xr}from"@vkontakte/videoplayer-shared/es2015";import{assertNotEmptyArray as Qr,getWindow as $r,isInvariantQuality as ei,ValueSubject as ti}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as ni}from"@vkontakte/videoplayer-shared/es2015";import{objectFromEntries as ri}from"@vkontakte/videoplayer-shared/es2015";import{now as ai}from"@vkontakte/videoplayer-shared/es2015";import{flattenObject as si,isInvariantQuality as ci,isLowerOrEqual as li,isNonNullable as ui,now as di}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as fi}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as pi}from"@vkontakte/videoplayer-shared/es2015";import{isLowerOrEqual as mi,isNonNullable as hi,isNullable as gi}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Mi,isNonNullable as Ni,isNullable as Pi}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as Fi}from"@vkontakte/videoplayer-shared/es2015";import{Subscription as Ii}from"@vkontakte/videoplayer-shared/es2015";import{Subscription as zi}from"@vkontakte/videoplayer-shared/es2015";import{isHigher as Zi,isInvariantQuality as Qi,isNonNullable as $i}from"@vkontakte/videoplayer-shared/es2015";import{isHigherOrEqual as ta,isLowerOrEqual as na,isNonNullable as ra,videoSizeToQuality as ia}from"@vkontakte/videoplayer-shared/es2015";import{isHigherOrEqual as oa,isNullable as sa}from"@vkontakte/videoplayer-shared/es2015";import{isHigher as ca,isLower as la,isNonNullable as ua,isNullable as da,videoHeightToQuality as fa}from"@vkontakte/videoplayer-shared/es2015";import{isHigherOrEqual as va,isNonNullable as ya,isNullable as ba,now as xa}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Ca}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as wa}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Da,isLowerOrEqual as Oa,isNonNullable as ka,isNullable as Aa}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Ma}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Pa,now as Fa}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Va,assertNonNullable as Ha,combine as Ua,debounce as Wa,ErrorCategory as Ga,filter as Ka,filterChanged as qa,isNonNullable as Ja,map as Ya,merge as Xa,observableFrom as Za,once as Qa,Subscription as $a,ValueSubject as eo,videoQualityToHeight as to,videoSizeToQuality as no}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as ro}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as oo,isNullable as so,assertNonNullable as co}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as lo}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as uo,assertNonNullable as fo,now as po}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as Co}from"@vkontakte/videoplayer-shared/es2015";import{Subject as To}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Eo}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as Oo}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as ko}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as Ro}from"@vkontakte/videoplayer-shared/es2015";import{debounce as zo,filter as Bo,fromEvent as Vo,interval as Ho,isHigher as Uo,isInvariantQuality as Wo,isLower as Go,merge as Ko,Subject as qo,Subscription as Jo}from"@vkontakte/videoplayer-shared/es2015";import{map as Zo,Observable as Qo}from"@vkontakte/videoplayer-shared/es2015";import{fromEvent as $o}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as ns}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as rs}from"@vkontakte/videoplayer-shared/es2015";import{filter as Es,filterChanged as Ds,isNonNullable as Os}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as ks,assertNonNullable as As,debounce as js,ErrorCategory as Ms,filter as Ns,filterChanged as Ps,fromEvent as Fs,isNonNullable as Is,isNullable as Ls,map as Rs,mapTo as zs,merge as Bs,observableFrom as Vs,once as Hs,Subscription as Us,throttle as Ws}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Gs}from"@vkontakte/videoplayer-shared/es2015";import{videoSizeToQuality as Ks}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as ec,now as tc,once as nc,Subscription as rc,ValueSubject as ic,isNonNullable as ac,safeStorage as oc,filterChanged as sc}from"@vkontakte/videoplayer-shared/es2015";import{combine as gc,map as _c,observeElementSize as vc,Subscription as yc,ValueSubject as bc,noop as xc}from"@vkontakte/videoplayer-shared/es2015";import{filter as Cc,map as wc,once as Tc}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Dc}from"@vkontakte/videoplayer-shared/es2015";import{filterChanged as Oc,isNonNullable as kc,isNullable as Ac,now as jc,once as Mc,Subscription as Nc,ValueSubject as Pc}from"@vkontakte/videoplayer-shared/es2015";import{isInvariantQuality as Ic,isNonNullable as Lc,isNullable as Rc,Subscription as zc,ValueSubject as Bc}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Vc}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as Zc}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as Qc}from"@vkontakte/videoplayer-shared/es2015";import{stringTrimStart as $c}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as el}from"@vkontakte/videoplayer-shared/es2015";import{abortable as nl,assertNonNullable as rl,ErrorCategory as il,ErrorOrigin as al,filter as ol,filterChanged as sl,flattenObject as cl,fromEvent as ll,getTraceSubscriptionMethod as ul,getWindow as dl,interval as fl,isNonNullable as pl,isNullable as ml,map as hl,merge as gl,nowInt as _l,Subject as vl,Subscription as yl,SubscriptionRemovable as bl,ValueSubject as z}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as xl}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as Sl}from"@vkontakte/videoplayer-shared/es2015";import{abortable as Tl,assertNever as El,ErrorCategory as Dl,flattenObject as Ol,fromEvent as kl,getWindow as Al,isNonNullable as jl,merge as Ml,now as Nl,Subject as Pl,Subscription as Fl,suppressAbort as Il,ValueSubject as Ll,videoQualityToHeight as Rl,VideoQuality as zl,isAbortError as Bl}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Hl,ErrorOrigin as Ul}from"@vkontakte/videoplayer-shared/es2015";import{devNull as Xl,getWindow as Zl}from"@vkontakte/videoplayer-shared/es2015";import{stringReplaceAll as lu}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as uu}from"@vkontakte/videoplayer-shared/es2015";import{stringPadStart as du}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as fu}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as pu}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as mu}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as hu}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as _u,isNullable as vu}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as yu}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as Eu}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Du}from"@vkontakte/videoplayer-shared/es2015";import{requestIdleCallbackPolyfilled as Ou}from"@vkontakte/videoplayer-shared/es2015";import{abortable as ku,assertNonNullable as Au,ErrorCategory as ju,ErrorOrigin as Mu,flattenObject as B,fromEvent as Nu,getExponentialDelay as Pu,getWindow as Fu,isAbortError as Iu,isHigher as Lu,isNonNullable as V,isNullable as H,once as Ru,Subject as zu,Subscription as Bu,ValueSubject as Vu}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Hu}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Gu}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Sd}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Cd,isNonNullable as wd,isNullable as Td}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Ed}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Ld}from"@vkontakte/videoplayer-shared/es2015";import{videoSizeToQuality as Rd}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Xd,getWindow as Zd,isNonNullable as Qd,isNullable as $d,now as ef,isAbortError as tf}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as rf,getWindow as af,isAbortError as of,isNullable as sf,now as cf}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as uf}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as df,ErrorCategory as ff,isNullable as pf,ValueSubject as mf}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as _f,fromEvent as vf,isNullable as yf,Subject as bf,Subscription as xf,ValueSubject as Sf}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Cf,ErrorCategory as wf,Subject as Tf}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as Mf}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Nf,isHigher as Pf,isLower as Ff,isLowerOrEqual as If,VideoQuality as Lf}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Xf,combine as Zf,ErrorCategory as Qf,filter as $f,filterChanged as ep,fromEvent as tp,isNonNullable as np,map as rp,merge as ip}from"@vkontakte/videoplayer-shared/es2015";import{combine as sp,merge as cp,filter as lp,filterChanged as up,isNullable as dp,map as fp,ValueSubject as pp,isNonNullable as mp}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as Sp,ValueSubject as Cp}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as kp,combine as Ap,ErrorCategory as jp,filter as Mp,filterChanged as Np,fromEvent as Pp,interval as Fp,isNonNullable as Ip,isNullable as Lp,map as Rp,now as zp,throttle as Bp}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as Hp,ValueSubject as Up}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as qp,assertNonNullable as Jp,combine as Yp,debounce as Xp,ErrorCategory as Zp,filter as Qp,filterChanged as $p,fromEvent as em,isNonNullable as tm,isNullable as nm,map as rm,merge as im,observableFrom as am,once as om,Subscription as sm,throttle as cm}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as lm}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as um}from"@vkontakte/videoplayer-shared/es2015";import{abortable as fm,assertNonNullable as pm,combine as mm,ErrorCategory as hm,ErrorOrigin as gm,filter as _m,filterChanged as vm,flattenObject as ym,fromEvent as bm,getTraceSubscriptionMethod as xm,interval as Sm,isNonNullable as Cm,isNullable as wm,map as Tm,merge as Em,now as Dm,Subject as Om,Subscription as km,SubscriptionRemovable as Am,tap as jm,throttle as Mm,ValueSubject as W}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as Nm}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Pm}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Fm}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as Im}from"@vkontakte/videoplayer-shared/es2015";import{cancelIdleCallbackPolyfilled as Lm}from"@vkontakte/videoplayer-shared/es2015";import{requestIdleCallbackPolyfilled as Rm}from"@vkontakte/videoplayer-shared/es2015";import{promiseFinally as zm}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Bm,ErrorCategory as Vm,Subject as Hm}from"@vkontakte/videoplayer-shared/es2015";import{abortable as Jm,assertNonNullable as Ym,ErrorCategory as Xm,ErrorOrigin as Zm,flattenObject as Qm,fromEvent as $m,getExponentialDelay as eh,getWindow as th,isHigher as nh,isNonNullable as rh,isNullable as G,now as ih,once as ah,Subject as oh,Subscription as sh,ValueSubject as ch,isAbortError as lh}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as dh}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as fh}from"@vkontakte/videoplayer-shared/es2015";import{abortable as ph,assertNever as mh,fromEvent as hh,merge as gh,now as _h,Subject as vh,ValueSubject as yh,flattenObject as bh,ErrorCategory as xh,SubscriptionRemovable as Sh,getWindow as Ch,isNonNullable as wh,suppressAbort as Th,videoQualityToHeight as Eh,VideoQuality as Dh}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Oh,ErrorOrigin as kh}from"@vkontakte/videoplayer-shared/es2015";import{devNull as Ih,getWindow as Lh}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as Xh,ValueSubject as Zh}from"@vkontakte/videoplayer-shared/es2015";import{combine as ig,merge as ag,filter as og,filterChanged as sg,isNullable as cg,map as lg,ValueSubject as ug,isNonNullable as dg}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as pg}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as mg}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as _g,combine as vg,debounce as yg,ErrorCategory as bg,filter as xg,filterChanged as Sg,isNonNullable as Cg,isNullable as wg,map as Tg,merge as Eg,observableFrom as Dg,Subscription as Og,ValueSubject as kg,VideoQuality as Ag}from"@vkontakte/videoplayer-shared/es2015";import{objectFromEntries as jg}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as Mg}from"@vkontakte/videoplayer-shared/es2015";import{videoSizeToQuality as Ng,getExponentialDelay as Pg}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as Ug}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as Wg}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Gg,Subscription as Kg,throttle as qg,ValueSubject as Jg,Subject as Yg,ErrorCategory as Xg}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as $g,debounce as e_,ErrorCategory as t_,fromEvent as n_,isInvariantQuality as r_,isNonNullable as i_,isNullable as a_,map as o_,merge as s_,observableFrom as c_,Subscription as l_,ValueSubject as u_,VideoQuality as d_}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as p_}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as m_}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as h_}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as g_,assertNonNullable as __,debounce as v_,ErrorCategory as y_,isHigherOrEqual as b_,isLowerOrEqual as x_,isNonNullable as S_,merge as C_,observableFrom as w_,Subscription as T_,map as E_}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as O_,debounce as k_,merge as A_,observableFrom as j_,Subscription as M_,map as N_,ValueSubject as P_,ErrorCategory as F_,VideoQuality as I_}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as L_}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as G_,assertNonNullable as K_,ErrorCategory as q_,ErrorOrigin as J_,filter as Y_,isNonNullable as X_,isNullable as Z_,map as Q_,merge as $_,once as ev,Subject as K,Subscription as tv,ValueSubject as q,flattenObject as nv,devNull as rv,getWindow as iv}from"@vkontakte/videoplayer-shared/es2015";import{Observable as av,map as ov,Subscription as sv,Subject as cv,now as lv,combine as uv}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as fv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as pv,Subscription as mv,combine as hv,filter as gv,once as _v}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as vv}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as xv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Sv,Subject as Cv,Subscription as wv,merge as Tv,isNonNullable as Ev}from"@vkontakte/videoplayer-shared/es2015";import{ErrorOrigin as Dv,flattenObject as Ov,isNullable as kv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Mv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Pv,ErrorOrigin as Fv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorOrigin as Lv,flattenObject as Rv}from"@vkontakte/videoplayer-shared/es2015";import{filterChanged as Bv,flattenObject as Vv,fromEvent as Hv,getWindow as Uv,isNonNullable as Wv,merge as Gv,now as Kv,Subject as qv,Subscription as Jv,ErrorOrigin as Yv}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as Qv,isNonNullable as $v,getWindow as ey}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as iy,isNonNullable as ay,Subscription as oy}from"@vkontakte/videoplayer-shared/es2015";import{fromEvent as uy,once as dy,combine as fy,Subscription as py,ValueSubject as my,map as hy,filter as gy,isNonNullable as _y,now as J,safeStorage as vy,getWindow as yy}from"@vkontakte/videoplayer-shared/es2015";import{fillWithDefault as Ay,VideoQuality as jy}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Py,combine as Fy,devNull as Iy,ErrorCategory as Ly,filter as Y,filterChanged as X,flattenObject as Ry,fromEvent as zy,getPlayerId as By,getTimersDiagnostics as Vy,getTraceSubscriptionMethod as Hy,getWindow as Uy,InternalsExposure as Wy,isHigher as Gy,isInvariantQuality as Ky,isNonNullable as qy,isNullable as Jy,Logger as Yy,map as Z,mapTo as Xy,merge as Zy,now as Qy,once as Q,releaseTimers as $y,retainTimers as eb,Subject as $,Subscription as tb,tap as nb,throttle as rb,TracerFactory as ib,ValueSubject as ab,combineLatest as ob}from"@vkontakte/videoplayer-shared/es2015";import{merge as sb,map as cb,filter as lb,isNonNullable as ub}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as fb}from"@vkontakte/videoplayer-shared/es2015";import{filter as mb,once as hb}from"@vkontakte/videoplayer-shared/es2015";import{requestIdleCallbackPolyfilled as _b}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as vb}from"@vkontakte/videoplayer-shared/es2015";import{cancelIdleCallbackPolyfilled as yb}from"@vkontakte/videoplayer-shared/es2015";import{devNull as bb,getWindow as xb}from"@vkontakte/videoplayer-shared/es2015";import{Subscription as kb,Observable as Ab,Subject as jb,ValueSubject as Mb,VideoQuality as Nb}from"@vkontakte/videoplayer-shared/es2015";var _oxcModkv5rn1=function(){function e(t){"@babel/helpers - typeof";return e=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},e(t)}var t=e;function n(e,n){if(t(e)!=`object`||!e)return e;var r=e[Symbol._oxc_toPrimitive];if(r!==void 0){var i=r.call(e,n||`default`);if(t(i)!=`object`)return i;throw TypeError(`@@_oxc_toPrimitive must return a primitive value.`)}return(n===`string`?String:Number)(e)}var t=e,r=n;function i(e){var n=r(e,`string`);return t(n)==`symbol`?n:n+``}var a=i;function o(e,t,n){return(t=a(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var s=o;function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?c(Object(n),!0).forEach(function(t){s(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function u(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){n(e);return}s.done?t(c):Promise.resolve(c).then(r,i)}function d(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var a=e.apply(t,n);function o(e){u(a,r,i,o,s,`next`,e)}function s(e){u(a,r,i,o,s,`throw`,e)}o(void 0)})}}function f(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.includes(r))continue;n[r]=e[r]}return n}var p=f;function m(e,t){if(e==null)return{};var n,r,i=p(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.includes(n)||{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function h(e,t){this.v=e,this.k=t}var g=h;function _(e){return new g(e,0)}var g=h;function v(e){return function(){return new y(e.apply(this,arguments))}}function y(e){var t,n;function r(t,n){try{var a=e[t](n),o=a.value,s=o instanceof g;Promise.resolve(s?o.v:o).then(function(n){if(s){var c=t===`return`?`return`:`next`;if(!o.k||n.done)return r(c,n);n=e[c](n).value}i(a.done?`return`:`normal`,n)},function(e){r(`throw`,e)})}catch(e){i(`throw`,e)}}function i(e,i){switch(e){case`return`:t.resolve({value:i,done:!0});break;case`throw`:t.reject(i);break;default:t.resolve({value:i,done:!1})}(t=t.next)?r(t.key,t.arg):n=null}this._invoke=function(e,i){return new Promise(function(a,o){var s={key:e,arg:i,resolve:a,reject:o,next:null};n?n=n.next=s:(t=n=s,r(e,i))})},typeof e.return!=`function`&&(this.return=void 0)}y.prototype[typeof Symbol==`function`&&Symbol.asyncIterator||`@@asyncIterator`]=function(){return this},y.prototype.next=function(e){return this._invoke(`next`,e)},y.prototype.throw=function(e){return this._invoke(`throw`,e)},y.prototype.return=function(e){return this._invoke(`return`,e)};const b=[`name`],x=[`url`],S=[`url`],C=[`downloadingItems`],w=[`data`],T=[`container`];var E=l,D=d,O=m,ee=_,k=v,te=`2.0.179-dev.4cee6bcff.0`,ne;(e=>{e.STOPPED=`stopped`,e.READY=`ready`,e.PLAYING=`playing`,e.PAUSED=`paused`})(ne||={});var re;(e=>{e.MPEG=`MPEG`,e.DASH=`DASH`,e.DASH_SEP=`DASH_SEP`,e.DASH_SEP_VK=`DASH_SEP`,e.DASH_WEBM=`DASH_WEBM`,e.DASH_WEBM_AV1=`DASH_WEBM_AV1`,e.DASH_STREAMS=`DASH_STREAMS`,e.DASH_WEBM_VK=`DASH_WEBM`,e.DASH_ONDEMAND=`DASH_ONDEMAND`,e.DASH_ONDEMAND_VK=`DASH_ONDEMAND`,e.DASH_LIVE=`DASH_LIVE`,e.DASH_LIVE_CMAF=`DASH_LIVE_CMAF`,e.DASH_LIVE_WEBM=`DASH_LIVE_WEBM`,e.HLS=`HLS`,e.HLS_ONDEMAND=`HLS_ONDEMAND`,e.HLS_JS=`HLS`,e.HLS_FMP4=`HLS_FMP4`,e.HLS_LIVE=`HLS_LIVE`,e.HLS_LIVE_CMAF=`HLS_LIVE_CMAF`,e.WEB_RTC_LIVE=`WEB_RTC_LIVE`})(re||={});var ie;(e=>{e.AV1=`av1`,e.VP9=`vp9`,e.AVC1=`avc1`,e.HEV1=`hev1`})(ie||={});var ae;(e=>{e.NOT_AVAILABLE=`NOT_AVAILABLE`,e.AVAILABLE=`AVAILABLE`,e.CONNECTING=`CONNECTING`,e.CONNECTED=`CONNECTED`})(ae||={});var oe;(e=>{e.HTTP1=`http1`,e.HTTP2=`http2`,e.QUIC=`quic`})(oe||={});var se;(e=>{e.NONE=`none`,e.INLINE=`inline`,e.FULLSCREEN=`fullscreen`,e.SECOND_SCREEN=`second_screen`,e.PIP=`pip`,e.INVISIBLE=`invisible`})(se||={});var ce;(e=>{e.TRAFFIC_SAVING=`traffic_saving`,e.HIGH_QUALITY=`high_quality`,e.UNKNOWN=`unknown`})(ce||={});var Ee=e=>new Promise((t,n)=>{let r=document.createElement(`script`);r.setAttribute(`src`,e),r.onload=()=>t(),r.onerror=e=>n(e),document.body.appendChild(r)});class De{constructor(e){this.connection$=new he(void 0),this.castState$=new he(`NOT_AVAILABLE`),this.errorEvent$=new ge,this.contentId=void 0,this.realCastState$=new he(`NOT_AVAILABLE`),this.subscription=new _e,this.log=void 0,this.params=void 0,this.isDestroyed=!1,this.params=e,this.log=this.params.dependencies.logger.createComponentLog(`ChromecastInitializer`);let t=`chrome`in window;if(this.log({message:`[constructor] receiverApplicationId: ${this.params.receiverApplicationId}, isDisabled: ${this.params.isDisabled}, isSupported: ${t}`}),e.isDisabled||!t)return;let n=me(window.chrome?.cast),r=!!window.__onGCastApiAvailable;n?this.initializeCastApi():(window.__onGCastApiAvailable=e=>{delete window.__onGCastApiAvailable,e&&!this.isDestroyed&&this.initializeCastApi()},r||Ee(`https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1`).catch(()=>this.errorEvent$.next({id:`ChromecastLoading`,category:Te.NETWORK,message:`Script loading failed!`})))}connect(){cast.framework.CastContext.getInstance()?.requestSession()}disconnect(){var e;(e=cast.framework.CastContext.getInstance())==null||(e=e.getCurrentSession())==null||e.endSession(!0)}stopMedia(){return new Promise((e,t)=>{var n;(n=cast.framework.CastContext.getInstance())==null||(n=n.getCurrentSession())==null||(n=n.getMediaSession())==null||n.stop(new chrome.cast.media.StopRequest,e,t)})}toggleConnection(){me(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();we(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();we(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.isDestroyed=!0,this.subscription.unsubscribe()}initListeners(){let e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),n=cast.framework.CastContext.getInstance();this.subscription.add(be(n,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(e=>{switch(e.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:var t;this.contentId=(t=n.getCurrentSession())==null||(t=t.getMediaSession())==null||(t=t.media)==null?void 0:t.contentId;break;case cast.framework.SessionState.NO_SESSION:case cast.framework.SessionState.SESSION_ENDING:case cast.framework.SessionState.SESSION_ENDED:case cast.framework.SessionState.SESSION_START_FAILED:this.contentId=void 0;break;default:return fe(e.sessionState)}})).add(ve(be(n,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(Se(e=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(e)}`})}),xe(e=>e.castState)),ye([n.getCastState()])).pipe(Ce(),xe(Oe),Se(e=>{this.log({message:`realCastState$: ${e}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(r=>{let i=r===`CONNECTED`,a=me(this.connection$.getValue());if(i&&!a){var o;let r=n.getCurrentSession();pe(r);let i=r.getCastDevice(),a=(o=r.getMediaSession())==null||(o=o.media)==null?void 0:o.contentId;(we(a)||a===this.contentId)&&(this.log({message:`connection created`}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:r,castDevice:i}))}else!i&&a&&(this.log({message:`connection destroyed`}),this.connection$.next(void 0));this.castState$.next(r===`CONNECTED`?me(this.connection$.getValue())?`CONNECTED`:`AVAILABLE`:r)}))}initializeCastApi(){let e,t,n;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,n=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:n}),this.initListeners()}catch(e){this.errorEvent$.next({id:`ChromecastInitializer`,category:Te.EXTERNAL_API,message:`[initializeCastApi] failed`,thrown:e})}}}var Oe=e=>{switch(e){case cast.framework.CastState.NO_DEVICES_AVAILABLE:return`NOT_AVAILABLE`;case cast.framework.CastState.NOT_CONNECTED:return`AVAILABLE`;case cast.framework.CastState.CONNECTING:return`CONNECTING`;case cast.framework.CastState.CONNECTED:return`CONNECTED`;default:return fe(e)}};var qe=`_offset_p`,Je=e=>{if(Ge(e,qe))return!0;try{return new URL(e).searchParams.has(`offset_p`)}catch{return!1}},A=(e,t=0,n=0)=>{switch(n){case 0:return e.replace(qe,t===0?``:`_`+t.toFixed(0));case 1:{if(t===0)return e;let n=new URL(e);return n.searchParams.append(`playback_shift`,t.toFixed(0)),n.toString()}case 2:{let n=new URL(e);return!n.searchParams.get(`offset_p`)&&t===0?e:(n.searchParams.set(`offset_p`,t.toFixed(0)),n.toString())}default:Ke(n)}return e},Ye=(e,t)=>{switch(t){case 0:return NaN;case 1:{let t=new URL(e);return Number(t.searchParams.get(`playback_shift`))}case 2:{let t=new URL(e);return Number(t.searchParams.get(`offset_p`)??0)}default:Ke(t)}},Xe=e=>{let{source:t,format:n,meta:r,output:i}=e,a,o,s;switch(n){case`MPEG`:{let e=t[n];Ve(e);let r=Ue(Object.keys(e));Ve(r);let i=e[r];Ve(i),a=i,o=`video/mp4`,s=Ze();break}case`HLS`:case`HLS_FMP4`:case`HLS_ONDEMAND`:{let e=t[n];Ve(e),a=e.url,o=`application/x-mpegurl`,s=Ze();break}case`DASH_SEP`:case`DASH_ONDEMAND`:case`DASH_WEBM`:case`DASH_WEBM_AV1`:case`DASH_STREAMS`:{let e=t[n];Ve(e),a=e.url,o=`application/dash+xml`,s=Ze();break}case`DASH_LIVE_CMAF`:{let e=t[n];Ve(e),a=e.url,o=`application/dash+xml`,s=Qe();break}case`HLS_LIVE`:case`HLS_LIVE_CMAF`:{let e=t[n];Ve(e),a=A(e.url),o=`application/x-mpegurl`,s=Qe();break}case`DASH_LIVE`:case`WEB_RTC_LIVE`:{let e=`Unsupported format for Chromecast`,t=Error(e);throw i.error$.next({id:`ChromecastProvider.createMediaInfo()`,category:He.VIDEO_PIPELINE,message:e,thrown:t}),t}case`DASH`:case`DASH_LIVE_WEBM`:throw Error(`${n} is no longer supported`);default:return Be(n)}let c=$e(r.videoId??a,o);c.contentUrl=a,c.streamType=s,c.metadata=et();let{title:l,subtitle:u}=r;return We(l)&&(c.metadata.title=l),We(u)&&(c.metadata.subtitle=u),c};function Ze(){var e;return((e=chrome.cast)==null||(e=e.media)==null||(e=e.StreamType)==null?void 0:e.BUFFERED)??`BUFFERED`}function Qe(){var e;return((e=chrome.cast)==null||(e=e.media)==null||(e=e.StreamType)==null?void 0:e.LIVE)??`LIVE`}function $e(e,t){var n;return!((n=chrome.cast)==null||(n=n.media)==null)&&n.MediaInfo?new chrome.cast.media.MediaInfo(e,t):{contentId:e,contentType:t,metadata:{title:``,subtitle:``},streamType:Ze()}}function et(){var e;return!((e=chrome.cast)==null||(e=e.media)==null)&&e.GenericMediaMetadata?new chrome.cast.media.GenericMediaMetadata:{images:[],metadataType:0,releaseDate:``,subtitle:``,title:``,releaseYear:1970,type:0}}var j=(e,t,n=!1)=>{let r=e.getTransition();(n||!r||r.to===t)&&e.setState(t)};var M=tt(nt.CORE);class rt{constructor(e){this.params=void 0,this.interval=0,this.startVideoPosition=void 0,this.startTs=void 0,this.params=e}start(e=0){M.clearInterval(this.interval),this.startVideoPosition=e,this.startTs=Date.now(),this.interval=M.setInterval(()=>{let e=(Date.now()-this.startTs)/1e3,t=this.startVideoPosition+e;this.params.output.position$.next(t)},1e3)}pause(){M.clearInterval(this.interval)}destroy(){M.clearInterval(this.interval)}}class ut{constructor(){this._current=void 0,this._current_version=void 0,this._chromeVersion=void 0,this._firefoxVersion=void 0,this._safariVersion=void 0,this._operaVersion=void 0,this._edgeVersion=void 0,this._yandexVersion=void 0,this._isMiuiBrowser=!1}get current(){return this._current}get isChrome(){return this.current===`Chrome`}get isChromiumBased(){return st([`Chrome`,`Chromium`,`Opera`,`Yandex`,`Edge`,`SamsungBrowser`],this.current)}get isFirefox(){return this.current===`Firefox`}get isSafari(){return this.current===`Safari`}get isOpera(){return this.current===`Opera`}get isEdge(){return this.current===`Edge`}get isYandex(){return this.current===`Yandex`}get isSamsungBrowser(){return this.current===`SamsungBrowser`}get currentVersion(){return this._current_version}get chromeVersion(){return this._chromeVersion}get firefoxVersion(){return this._firefoxVersion}get safariVersion(){return this._safariVersion}get operaVersion(){return this._operaVersion}get edgeVersion(){return this._edgeVersion}get yandexVersion(){return this._yandexVersion}get isMiuiBrowser(){return this._isMiuiBrowser}detect(){let{userAgent:e}=navigator;try{let t=/yabrowser/i.test(e)?`Yandex`:void 0,n=/samsungbrowser/i.test(e)?`SamsungBrowser`:void 0,r=/chrome|crios/i.test(e)?`Chrome`:void 0,i=/chromium/i.test(e)?`Chromium`:void 0,a=/firefox|fxios/i.test(e)?`Firefox`:void 0,o=/smart-tv;.*tizen/i.test(e)?`Chrome`:void 0,s=/webkit|safari|khtml/i.test(e)?`Safari`:void 0,c=/opr\//i.test(e)?`Opera`:void 0,l=/edg/i.test(e)?`Edge`:void 0;this._isMiuiBrowser=/(XiaoMi)|(MiuiBrowser)/i.test(e),this._current=t||n||a||c||l||r||i||o||s||`Rest`}catch(e){console.error(e)}this.isChrome&&this.detectChromeVersion(),this.isFirefox&&this.detectFirefoxVersion(),this.isSafari&&this.detectSafariVersion(),this.isOpera&&this.detectOperaVersion(),this.isEdge&&this.detectEdgeVersion(),this.isYandex&&this.detectYandexVersion()}detectVersion(e){try{let{userAgent:t}=ct().navigator,n=t.match(e);if(!n)return;let r=n[1],i=parseInt(r,10);if(!isNaN(i))return this._current_version=i,i}catch(e){console.error(e)}}detectChromeVersion(){this._chromeVersion=this.detectVersion(/Chrome\/(\d+\.\d+)/),lt(this._chromeVersion)&&(this._chromeVersion=this.detectVersion(/(\d+\.\d+\.\d+\.\d+)\/\d+\.\d+ TV/))}detectFirefoxVersion(){this._firefoxVersion=this.detectVersion(/Firefox\/(\d+\.\d+)/)}detectSafariVersion(){this._safariVersion=this.detectVersion(/Version\/(\d+)/)}detectOperaVersion(){this._operaVersion=this.detectVersion(/OPR\/(\d+\.\d+)/)}detectEdgeVersion(){this._edgeVersion=this.detectVersion(/Edg\/(\d+\.\d+)/)}detectYandexVersion(){this._yandexVersion=this.detectVersion(/YaBrowser\/(\d+\.\d+\.\d+)/)}}var pt=()=>{var e;return/Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(navigator.appVersion??navigator.userAgent)||((e=navigator)==null||(e=e.userAgentData)==null?void 0:e.mobile)};class mt{constructor(e){this._displayChecker=void 0,this._isMobile=void 0,this._current=void 0,this._iosVersion=void 0,this._highEntropyValues={},this._os={name:`Unknown`,version:`Unknown`,full:`Unknown`},this._details={vendor:`Unknown`,model:`Unknown`},this._hardware={},this._gpuDetection=void 0,this._displayChecker=e}get current(){return this._current}get os(){return this._os}get details(){return this._details}get hardware(){return this._hardware}get highEntropyValues(){return this._highEntropyValues}get isIOS(){return this._highEntropyValues.platform===`iOS`||N(this.os.name.toLowerCase(),`ios`)||N([`iPhone`,`iPad`,`iPod`],this.current)}get isIPadOS(){let e=this.current===`Mac`&&this._displayChecker.isTouch;return this.current===`iPad`||e}get isMac(){return this._highEntropyValues.platform===`macOS`||N(this.os.name.toLowerCase(),`mac`)||this.current===`Mac`}get isApple(){return this.isIOS||this.isMac}get isIphoneOrOldIpad(){if(!this.isApple||!this._displayChecker.isTouch)return!1;let e=this.current===`iPad`||this._displayChecker.width>700,t=this._iosVersion;return!e||e&&!!t&&t<16}get isAndroid(){return this._highEntropyValues.platform===`Android`||N(this.os.name.toLowerCase(),`android`)||this.current===`Android`}get isWindows(){return N(this.os.name.toLowerCase(),`windows`)}get isLinux(){return N(this.os.name.toLowerCase(),`linux`)&&!this.isAndroid}get isMobile(){return this._highEntropyValues.mobile||this._isMobile}get iOSVersion(){return this._iosVersion}detect(){let e=dt();if(!ft(e))return;let{userAgent:t}=e.navigator;try{this._isMobile=pt()}catch(e){console.error(`DeviceChecker: calling isMobile error - `,e)}this.detectDevice(t),this.detectOS(t),this.detectDeviceDetails(t),this.detectHardware(e),this.detectHighEntropyValues(),this.isIOS&&this.detectIOSVersion()}detectHardware(e){let t=e.navigator;try{this._hardware={cpuCores:t.hardwareConcurrency,memoryGb:t.deviceMemory}}catch(e){console.error(`DeviceChecker: detectHardware error - `,e)}}detectGpu(){return this._gpuDetection??=this.requestGpuInfo(),this._gpuDetection}requestGpuInfo(){var e=this;return D(function*(){let t=dt();if(ft(t))try{var n,r;let i=yield t.navigator.gpu?.requestAdapter();e._hardware=E(E({},e._hardware),{},{gpuVendor:(i==null||(n=i.info)==null?void 0:n.vendor)||void 0,gpuArchitecture:(i==null||(r=i.info)==null?void 0:r.architecture)||void 0})}catch(e){console.error(`DeviceChecker: detectGpu error - `,e)}})()}detectHighEntropyValues(){var e=this;return D(function*(){let t=dt();if(!ft(t))return;let{userAgentData:n}=t.navigator;if(n?.getHighEntropyValues){let t=yield n.getHighEntropyValues([`architecture`,`bitness`,`brands`,`mobile`,`platform`,`formFactor`,`model`,`platformVersion`,`wow64`]);e._highEntropyValues=t,t.platform&&(e._os.name=e.normalizeOSName(t.platform),t.platformVersion&&(e._os.version=e.normalizeOSVersion(t.platformVersion),e._os.full=`${e._os.name} ${e._os.version}`)),t.model&&(e._details.model=t.model)}})()}detectDevice(e){try{let t=/android/i.test(e)?`Android`:void 0,n=/iphone/i.test(e)?`iPhone`:void 0,r=/ipad/i.test(e)?`iPad`:void 0,i=/ipod/i.test(e)?`iPod`:void 0,a=/mac/i.test(e)?`Mac`:void 0,o=/webOS|BlackBerry|IEMobile|Opera Mini/i.test(e)?`RestMobile`:void 0;this._current=t||n||r||i||o||a||`Desktop`}catch(e){console.error(`DeviceChecker: device detection error - `,e)}}detectOS(e){try{for(let[t,n]of[[/(windows nt) (6\.[23]); arm/i,[`Windows RT`]],[/(windows nt) (6\.3); arm/i,[`Windows RT 8.1`]],[/(windows (?:phone|mobile|iot))(?: os)?[/ ]?([\d.]+)/i,[`Windows Mobile`,2]],[/(windows)[/ ](xp|vista|7|8(\.1)?|10|11|2000|me)/i,[1,1]],[/windows nt ?([\d.]+)/i,[`Windows`,1]],[/(windows)[/ ](95|98|me|2000|xp|vista|7|8|8\.1|10|11)/i,[1,2]],[/(iphone os|cpu iphone os) ([\d_.]+)/i,[`iOS`,2]],[/(ipad os|cpu os) ([\d_.]+)/i,[`iPadOS`,2]],[/(ipod os|cpu ipod os) ([\d_.]+)/i,[`iOS`,2]],[/(?:ios|os) ([\d_.]+) like mac os x/i,[`iOS`,1]],[/cfnetwork\/.+darwin/i,[`iOS`]],[/(mac os x) ?([\d_.]+)/i,[`macOS`,2]],[/(macintosh|mac os)/i,[`macOS`]],[/(android) ([\d.]+)/i,[1,2]],[/(harmonyos)[/ ]?([\d.]*)/i,[`HarmonyOS`,2]],[/\b(ubuntu|debian|fedora|centos|arch|linux)(?:[-/ ]([\w.]+))?/i,[1,2]],[/(cros)\D*([\d.]+)/i,[`Chrome OS`,2]],[/(freebsd|openbsd|netbsd|dragonfly)[/ ]?([\w.]*)/i,[1,2]],[/(sunos|solaris)?([\d.]*)/i,[`Solaris`,2]],[/(aix)?([\d.]*)/i,[`AIX`,2]]]){let r=e.match(t);if(r){let t=n.length>0,i=n.length>1,a=`Unknown`,o=`Unknown`;if(t){let e=n[0];typeof e==`number`?e<r.length&&r[e]!==void 0&&(a=r[e]):a=e}if(i){let e=n[1];typeof e==`number`?e<r.length&&r[e]!==void 0&&(o=r[e]):e!==void 0&&(o=e)}else r[2]===void 0?r[1]!==void 0&&t&&typeof n[0]==`string`&&(o=r[1]):o=r[2];a=this.normalizeOSName(a),o=this.normalizeOSVersion(o,a),a===`iOS`&&/ipad/i.test(e)?a=`iPadOS`:a===`iPadOS`&&/ip(hone|od)/i.test(e)&&(a=`iOS`),this._os={name:a,version:o||`Unknown`,full:o&&o!==`Unknown`?`${a} ${o}`:a};break}}}catch(e){console.error(`DeviceChecker: OS detection error - `,e)}}normalizeOSName(e){if(!e)return`Unknown`;let t=e.toLowerCase();return N(t,`windows`)?`Windows`:N(t,`mac os`)||N(t,`macintosh`)?`macOS`:N(t,`iphone`)||N(t,`ios`)?`iOS`:N(t,`ipados`)?`iPadOS`:N(t,`android`)?`Android`:N(t,`harmonyos`)?`HarmonyOS`:N(t,`linux`)?`Linux`:N(t,`cros`)?`Chrome OS`:N(t,`freebsd`)?`FreeBSD`:N(t,`openbsd`)?`OpenBSD`:N(t,`solaris`)||N(t,`sunos`)?`Solaris`:N(t,`aix`)?`AIX`:e}normalizeOSVersion(e,t){if(!e)return`Unknown`;if(e!==`Unknown`&&(e=e.replace(/_/g,`.`),t===`Windows`)){let t=parseFloat(e);if(!isNaN(t)){if(t>=11)return`11`;if(t>=10)return`10`;if(t===6.3)return`8.1`;if(t===6.2)return`8`;if(t===6.1)return`7`;if(t===6)return`Vista`;if(t===5.1||t===5.2)return`XP`;if(t===5)return`2000`;if(t===4)return`NT 4.0`}}return e}detectDeviceDetails(e){try{for(let[t,n]of[[/(iphone)/i,[`Apple`,`iPhone`]],[/(ipad)/i,[`Apple`,`iPad`]],[/(ipod)/i,[`Apple`,`iPod`]],[/(macintosh)/i,[`Apple`,`Macintosh`]],[/(windows[\w\-_ ]*phone)/i,[`Microsoft`,0]],[/(windows nt|win64|win32|wow64)/i,[`Microsoft`,`PC`]],[/\b(sch-i[89]0\d|shw-m380s|sm-[ptxs]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i,[`Samsung`,1]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?\d+a?|galaxy nexus)/i,[`Samsung`,1]],[/samsung[- ]((?!sm-[lr]|browser)[-\w]+)/i,[`Samsung`,1]],[/sec-(sgh\w+)/i,[`Samsung`,1]],[/smart-tv.+(samsung)/i,[`Samsung`,`Smart TV`]],[/(samsung).*tizen/i,[`Samsung`,`Smart TV`]],[/(pixel (?:c|tablet|[0-9a-z ]+))/i,[`Google`,1]],[/(pixelbook(?: go)?)/i,[`Google`,1]],[/nexus [0-9]/i,[`Google`,0]],[/(redmi[-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(mi[\w\-_ ]+)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(poco[\w ]+)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(hm[-_ ]?note?[\w ]*)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(?:xiao)?mi[\w\-_ ]+pad/i,[`Xiaomi`,0]],[/(?:huawei|honor) ?([-\w ]+)[;)]/i,[`Huawei`,1]],[/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][\dc][adnt]?)\b(?!.+d\/s)/i,[`Huawei`,1]],[/\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?)/i,[`Huawei`,1]],[/(?:one)?(?:plus)? ?([a\d0]\d\d\d?)(?: b|\))/i,[`OnePlus`,1]],[/droid.+; (cph2[3-6]\d[13579]|((?:gm|hd)19|(?:ac|be|in|kb)20|(?:d[en]|eb|le|mt)21|ne22)[0-2]\d)(?: bui|\))/i,[`OnePlus`,1]],[/(oneplus)[-_ ]?([-\w]*)/i,[`OnePlus`,2]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i,[`Realme`,1]],[/(realme)[-_ ]?([-\w]*)/i,[`Realme`,2]],[/; (\w+) bui.+ oppo/i,[`OPPO`,1]],[/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i,[`OPPO`,1]],[/\b(opd2(\d{3}a?))(?: bui|\))/i,[`OPPO`,1]],[/(oppo)[-_ ]?([-\w]*)/i,[`OPPO`,2]],[/; vivo (\w+)(?: bui|\))/i,[`Vivo`,1]],[/\b(v[12]\d{3}\w?[at])(?: bui|;)/i,[`Vivo`,1]],[/(vivo)[-_ ]?([-\w]*)/i,[`Vivo`,2]],[/\bmot(?:orola)?[- ]([\w\s]+)(\)| bui)/i,[`Motorola`,1]],[/((?:moto(?! 360)[-\w() ]+|xt\d{3,4}[cgkosw+]?[-\d]*|nexus 6)(?= bui|\)))/i,[`Motorola`,1]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b/i,[`Motorola`,0]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i,[`Motorola`,0]],[/droid.+; ([a-z]?\d[0-2]{2}[a-z]{2}|[c-g]\d{4}|so[-gl]\w+|xq-[a-z]{2}\d\d)(?= bui|\))/i,[`Sony`,1]],[/sony tablet [ps]/i,[`Sony`,`Xperia Tablet`]],[/\b(?:sony)?sgp\w+(?: bui|\))/i,[`Sony`,0]],[/(sony)[-_ ]?([-\w]*)/i,[`Sony`,2]],[/\blg[-e;/ ]+(?!.*(?:browser|netcast|android tv|watch|webos))(\w+)/i,[`LG`,1]],[/\blg-?([\d\w]+) bui/i,[`LG`,1]],[/(lm(?:-?f100[nv]?|-[\w.]+)(?= bui|\))|nexus [45])/i,[`LG`,1]],[/((?=lg)?[vl]k-?\d{3}) bui/i,[`LG`,0]],[/(lg)[-_ ]?([-\w]*)/i,[`LG`,2]],[/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,[`Nokia`,1]],[/nokia[-_ ]?(([-\w. ]*?))(?: bui|\)|;|\/)/i,[`Nokia`,1]],[/(nokia) (t[12][01])/i,[`Nokia`,2]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i,[`ASUS`,1]],[/(?:asus[-_ ])?(zenfone[\w\-_ ]*)/i,[`ASUS`,1]],[/(rog[\w\-_ ]*)/i,[`ASUS`,1]],[/(asus)[-_ ]?([-\w]*)/i,[`ASUS`,2]],[/lenovo[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i,[`Lenovo`,1]],[/(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])(?: bui|;|\)|\/)/i,[`Lenovo`,1]],[/(thinkpad[\w\-_ ]*)/i,[`Lenovo`,0]],[/(kf[a-z]{2}[a-z]*)(?: bui|\))/i,[`Amazon`,1]],[/(alexa)webm/i,[`Amazon`,`Echo`]],[/(fire[\w\-_ ]*)/i,[`Amazon`,0]],[/(amazon)[-_ ]?([-\w]*)/i,[`Amazon`,2]],[/(?:blackberry|\(bb10;) (\w+)/i,[`BlackBerry`,1]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,[`BlackBerry`,1]],[/(playbook);[-\w),; ]+(rim)/i,[`BlackBerry`,1]],[/(microsoft); (lumia[\w ]+)/i,[`Microsoft`,2]],[/(surface duo)/i,[`Microsoft`,`Surface Duo`]],[/(surface[\w\-_ ]*)/i,[`Microsoft`,0]],[/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,[`ZTE`,2]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,[`HTC`,2]],[/(alcatel|tcl)[-_ ]?([-\w]*)/i,[1,2]],[/(meizu)[-_ ]?([-\w]*)/i,[`Meizu`,2]],[/(tecno)[-_ ]?([-\w]*)/i,[`Tecno`,2]],[/(infinix)[-_ ]?([-\w]*)/i,[`Infinix`,2]],[/(micromax)[-_ ]?([-\w]*)/i,[`Micromax`,2]],[/(lava)[-_ ]?([-\w]*)/i,[`Lava`,2]],[/(panasonic)[-_ ]?([-\w]*)/i,[`Panasonic`,2]],[/(sharp)\/?([-\w]*)/i,[`Sharp`,2]],[/(benq)[-_ ]?([-\w]*)/i,[`BenQ`,2]],[/(palm)[-_ ]?([-\w]*)/i,[`Palm`,2]],[/(vertu)[-_ ]?([-\w]*)/i,[`Vertu`,2]],[/(gionee)[-_ ]?([-\w]*)/i,[`Gionee`,2]],[/(doogee)[-_ ]?([-\w]*)/i,[`Doogee`,2]],[/(ulefone)[-_ ]?([-\w]*)/i,[`Ulefone`,2]],[/(blackview)[-_ ]?([-\w]*)/i,[`Blackview`,2]],[/(cubot)[-_ ]?([-\w]*)/i,[`Cubot`,2]],[/(umidigi)[-_ ]?([-\w]*)/i,[`UMIDIGI`,2]],[/(oukitel)[-_ ]?([-\w]*)/i,[`Oukitel`,2]],[/(fairphone)[-_ ]?([-\w]*)/i,[`Fairphone`,2]],[/(cat)[-_ ]?([-\w]*)/i,[`Cat`,2]],[/(energy)[-_ ]?([-\w]*)/i,[`Energizer`,2]],[/(land rover)[-_ ]?([-\w]*)/i,[`Land Rover`,2]],[/(shield[\w\-_ ]*)/i,[`Nvidia`,0]],[/(crkey)/i,[`Google`,`Chromecast`]],[/(roku)[\dx]*/i,[`Roku`,0]],[/(apple)[-_ ]?tv/i,[`Apple`,`TV`]],[/(amazon)[-_ ]?tv/i,[`Amazon`,`Fire TV`]],[/(google)[-_ ]?tv/i,[`Google`,`TV`]],[/(smart[\w\-_ ]*tv)/i,[0,`Smart TV`]],[/(playstation[\w\-_ ]*)/i,[`Sony`,0]],[/(nintendo[\w\-_ ]*)/i,[`Nintendo`,0]],[/(xbox[\w\-_ ]*)/i,[`Microsoft`,0]],[/(googlebot)/i,[`Google`,`Bot`]],[/(bingbot)/i,[`Microsoft`,`Bing Bot`]],[/(yandexbot)/i,[`Yandex`,`Bot`]],[/(slackbot)/i,[`Slack`,`Bot`]],[/(twitterbot)/i,[`Twitter`,`Bot`]],[/(facebookbot)/i,[`Facebook`,`Bot`]],[/(linkedinbot)/i,[`LinkedIn`,`Bot`]],[/(tesla)[-_ ]?([-\w]*)/i,[`Tesla`,2]],[/(raspberry[\w\-_ ]*)/i,[`Raspberry Pi`,0]]]){let r=e.match(t);if(r){let e=n[0],t=n[1],i=typeof e==`number`?r[e]===void 0?`Unknown`:this.normalizeVendorName(r[e]):this.normalizeVendorName(e),a=`Unknown`;typeof t==`number`?a=r[t]===void 0?`Unknown`:r[t]:t===void 0?r[1]===void 0?r[0]!==void 0&&(a=r[0]):a=r[1]:a=t,a=this.normalizeModelName(a,i),this.details.vendor=i,this.details.model=a;break}}}catch(e){console.error(`DeviceChecker: device details detection error - `,e)}}normalizeVendorName(e){return e?{apple:`Apple`,samsung:`Samsung`,google:`Google`,xiaomi:`Xiaomi`,huawei:`Huawei`,oneplus:`OnePlus`,oppo:`OPPO`,vivo:`Vivo`,realme:`Realme`,motorola:`Motorola`,sony:`Sony`,lg:`LG`,nokia:`Nokia`,asus:`ASUS`,lenovo:`Lenovo`,amazon:`Amazon`,blackberry:`BlackBerry`,microsoft:`Microsoft`,zte:`ZTE`,htc:`HTC`,alcatel:`Alcatel`,tcl:`TCL`,meizu:`Meizu`,tecno:`Tecno`,infinix:`Infinix`,micromax:`Micromax`,lava:`Lava`,panasonic:`Panasonic`,sharp:`Sharp`,benq:`BenQ`,palm:`Palm`,honor:`Honor`,nvidia:`NVIDIA`,roku:`Roku`}[e.toLowerCase()]||e.charAt(0).toUpperCase()+e.slice(1).toLowerCase():`Unknown`}normalizeModelName(e,t){if(!e||e===`Unknown`)return e;if(e===`0`)return`Unknown`;let n=e.replace(/^build\//i,``).replace(/\s+bui$/i,``).replace(/\)$/,``).replace(/[;,)]/g,``).replace(/\s*\(.*?\)\s*/g,``).trim(),r=t.toLowerCase();return N(r,`samsung`)?n=n.replace(/^(sm-|gt-|sgh-|sch-)/i,``):N(r,`xiaomi`)?n=n.replace(/^(mi[\s\-_]*|redmi[\s\-_]*)/i,``):N(r,`oneplus`)?n=n.replace(/^oneplus[\s\-_]*/i,``):N(r,`google`)&&(n=n.replace(/^(pixel[\s\-_]*|nexus[\s\-_]*)/i,``)),n=n.replace(/_/g,` `).replace(/-/g,` `).replace(/\s+/g,` `).trim(),n?(n.length>0&&/^[a-z]/.test(n)&&(n=n.charAt(0).toUpperCase()+n.slice(1)),n):`Unknown`}detectIOSVersion(){try{let e=dt();if(!ft(e))return;if(this._highEntropyValues.platformVersion){let e=this._highEntropyValues.platformVersion.split(`.`).slice(0,2).join(`.`);this._iosVersion=parseFloat(e);return}if(this._os.version!==`Unknown`){let e=this._os.version.split(`.`),t=e.length>=2?`${e[0]}.${e[1]}`:e[0];this._iosVersion=parseFloat(t);return}let t=e.navigator.userAgent.match(/OS (\d+(_\d+)?)/i);t?.[1]&&(this._iosVersion=parseFloat(t[1].replace(/_/g,`.`)))}catch(e){console.error(`DeviceChecker: iOS version detection error - `,e)}}}var _t=[`rec2020`,`p3`,`srgb`],vt=[`standalone`,`minimal-ui`,`fullscreen`,`window-controls-overlay`,`picture-in-picture`];class yt{constructor(){this._maxTouchPoints=void 0,this._height=void 0,this._width=void 0,this._isHdr=void 0,this._pixelRatio=void 0,this._screenHeight=void 0,this._screenWidth=void 0,this._colorDepth=void 0,this._colorGamut=void 0,this._displayMode=`browser`,this._isStandalone=!1}get isTouch(){return typeof this._maxTouchPoints==`number`?this._maxTouchPoints>1:`ontouchstart`in ht()}get maxTouchPoints(){return this._maxTouchPoints}get height(){return this._height}get width(){return this._width}get screenHeight(){return this._screenHeight}get screenWidth(){return this._screenWidth}get pixelRatio(){return this._pixelRatio}get isHDR(){return this._isHdr}get colorDepth(){return this._colorDepth}get colorGamut(){return this._colorGamut}get displayMode(){return this._displayMode}get isStandalone(){return this._isStandalone}detect(){let e=ht();if(!gt(e))return;let{navigator:t,screen:n}=e,{maxTouchPoints:r}=t;try{this._maxTouchPoints=r??0,this._isHdr=!!e.matchMedia(`(dynamic-range: high)`)?.matches,this._colorDepth=n.colorDepth,this._colorGamut=this.detectColorGamut(e)}catch(e){console.error(e)}try{this._pixelRatio=e.devicePixelRatio||1,this._height=n.height,this._width=n.width,this._height=n.height,this._screenHeight=this._height*this._pixelRatio,this._screenWidth=this._width*this._pixelRatio}catch(e){console.error(e)}try{this._displayMode=this.detectDisplayMode(e);let n=t.standalone===!0;this._isStandalone=n||this._displayMode!==`browser`}catch(e){console.error(e)}}detectColorGamut(e){return _t.find(t=>{var n;return(n=e.matchMedia)==null||(n=n.call(e,`(color-gamut: ${t})`))==null?void 0:n.matches})}detectDisplayMode(e){return vt.find(t=>{var n;return(n=e.matchMedia)==null||(n=n.call(e,`(display-mode: ${t})`))==null?void 0:n.matches})??`browser`}}var St=()=>window.ManagedMediaSource||window.MediaSource,Ct=()=>{var e;return!!(window.ManagedMediaSource&&!((e=window.ManagedSourceBuffer)==null||(e=e.prototype)==null)&&e.appendBuffer)},wt=()=>{var e;return!!(window.MediaSource&&!((e=window.SourceBuffer)==null||(e=e.prototype)==null)&&e.appendBuffer)},Tt=()=>window.ManagedMediaSource?new ManagedMediaSource:new MediaSource,Et=bt().document?.createElement(`video`),Dt=`video/mp4; codecs="avc1.42000a,mp4a.40.2"`,Ot=`video/mp4; codecs="hev1.1.6.L93.B0"`,kt=`video/webm; codecs="vp09.00.10.08"`,At=`video/webm; codecs="av01.0.00M.08"`,jt=`audio/mp4; codecs="mp4a.40.2"`,Mt=`audio/webm; codecs="opus"`,Nt;(function(){var e=D(function*(){let e=bt();if(!xt(e)||!(`mediaCapabilities`in e.navigator))return;let t={type:`media-source`,video:{contentType:`video/webm`,width:1280,height:720,bitrate:1e6,framerate:30}},[n,r]=yield Promise.all([e.navigator.mediaCapabilities.decodingInfo(E(E({},t),{},{video:E(E({},t.video),{},{contentType:At})})),e.navigator.mediaCapabilities.decodingInfo(E(E({},t),{},{video:E(E({},t.video),{},{contentType:kt})}))]);Nt={DASH_WEBM_AV1:n,DASH_WEBM:r}});return function(){return e.apply(this,arguments)}})()().catch(e=>{console.log(Et),console.error(e)});class Pt{constructor(e,t){this._video=void 0,this._deviceChecker=void 0,this._browserChecker=void 0,this._protocols=void 0,this._containers=void 0,this._codecs=void 0,this._nativeHlsSupported=void 0,this._deviceChecker=e,this._browserChecker=t}get protocols(){return this._protocols}get containers(){return this._containers}get codecs(){return this._codecs}get webmDecodingInfo(){return Nt}get supportedCodecs(){return Object.keys(this._codecs).filter(e=>this._codecs[e])}get nativeHlsSupported(){return this._nativeHlsSupported}detect(){let e=bt();if(!xt(e))return;let t=e.document;this._video=t.createElement(`video`);try{var n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_;this._protocols={mms:Ct(),mse:wt(),hls:!!((n=this._video).canPlayType?.call(n,`application/x-mpegurl`)||(r=this._video).canPlayType?.call(r,`vnd.apple.mpegURL`)),webrtc:!!e.RTCPeerConnection,ws:!!e.WebSocket},this._containers={mp4:!!(i=this._video).canPlayType?.call(i,`video/mp4`),webm:!!(a=this._video).canPlayType?.call(a,`video/webm`),cmaf:!0};let t=!!(!((o=St())==null||(s=o.isTypeSupported)==null)&&s.call(o,Dt)),v=!!(!((c=St())==null||(l=c.isTypeSupported)==null)&&l.call(c,Ot)),y=!!(!((u=St())==null||(d=u.isTypeSupported)==null)&&d.call(u,jt));this._codecs={h264:t,h265:v,vp9:!!(!((f=St())==null||(p=f.isTypeSupported)==null)&&p.call(f,kt)),av1:!!(!((m=St())==null||(h=m.isTypeSupported)==null)&&h.call(m,At)),aac:y,opus:!!(!((g=St())==null||(_=g.isTypeSupported)==null)&&_.call(g,Mt)),mpeg:(t||v)&&y},this._nativeHlsSupported=this._protocols.hls&&this._containers.mp4}catch(e){console.error(e)}try{this.destroyVideoElement()}catch(e){console.error(`Error destroying video element:`,e)}}destroyVideoElement(){if(!this._video)return;if(this._video.pause(),this._video.currentTime=0,this._video.removeAttribute(`src`),this._video.src=``,this._video.load(),this._video.remove){this._video.remove(),this._video=null;return}this._video.parentNode&&this._video.parentNode.removeChild(this._video);let e=this._video.cloneNode(!1);this._video.parentNode?.replaceChild(e,this._video),this._video=null}}var Lt=`audio/mpeg`;class Rt{constructor(){this._audio=void 0,this._containers=void 0,this._codecs=void 0}supportMp3(){return this._codecs.mp3&&this._containers.mpeg}detect(){let e=Ft();if(!It(e))return;let t=e.document;this._audio=t.createElement(`audio`);try{var n,r,i;this._containers={mpeg:!!(n=this._audio).canPlayType?.call(n,Lt)},this._codecs={mp3:!!(!((r=St())==null||(i=r.isTypeSupported)==null)&&i.call(r,Lt))}}catch(e){console.error(e)}try{this.destroyAudioElement()}catch(e){console.error(`Error destroying audio element:`,e)}}destroyAudioElement(){if(!this._audio)return;if(this._audio.pause(),this._audio.currentTime=0,this._audio.removeAttribute(`src`),this._audio.src=``,this._audio.load(),this._audio.remove){this._audio.remove(),this._audio=null;return}this._audio.parentNode&&this._audio.parentNode.removeChild(this._audio);let e=this._audio.cloneNode(!1);this._audio.parentNode?.replaceChild(e,this._audio),this._audio=null}}class zt{constructor(){this.isInited$=new ot(!1),this._displayChecker=void 0,this._deviceChecker=void 0,this._browserChecker=void 0,this._videoChecker=void 0,this._audioChecker=void 0,this._displayChecker=new yt,this._deviceChecker=new mt(this._displayChecker),this._browserChecker=new ut,this._videoChecker=new Pt(this._deviceChecker,this._browserChecker),this._audioChecker=new Rt,this.detect()}get display(){return this._displayChecker}get device(){return this._deviceChecker}get browser(){return this._browserChecker}get video(){return this._videoChecker}get audio(){return this._audioChecker}detect(){var e=this;return D(function*(){at()&&(e._displayChecker.detect(),e._deviceChecker.detect(),e._browserChecker.detect(),e._videoChecker.detect(),e._audioChecker.detect(),e.isInited$.next(!0))})()}}var P=new zt,Bt=(e,t=!1)=>{let{containers:n,protocols:r,codecs:i,nativeHlsSupported:a}=P.video,{isMobile:o}=P.device,s=P.device.isMac&&P.browser.isSafari,c=t&&!o&&!s,l=(i.h264||i.h265)&&i.aac,u=r.mse||r.mms;return e.filter(e=>{switch(e){case`DASH_SEP`:return u&&n.mp4&&l;case`DASH_WEBM`:return u&&n.webm&&i.vp9&&i.opus;case`DASH_WEBM_AV1`:return u&&n.webm&&i.av1&&i.opus;case`DASH_STREAMS`:return u&&(n.mp4&&l||n.webm&&(i.vp9||i.av1)&&(i.opus||i.aac));case`DASH_LIVE`:return u&&n.mp4&&l;case`DASH_LIVE_CMAF`:return u&&n.mp4&&l&&n.cmaf;case`DASH_ONDEMAND`:return u&&n.mp4&&l;case`HLS`:case`HLS_ONDEMAND`:case`HLS_FMP4`:case`HLS_LIVE`:case`HLS_LIVE_CMAF`:return a&&!c;case`MPEG`:return n.mp4;case`DASH`:case`DASH_LIVE_WEBM`:return!1;case`WEB_RTC_LIVE`:return r.webrtc&&r.ws&&i.h264&&(n.mp4||n.webm);default:return it(e)}})},Vt=e=>{switch(e){case`MPEG`:case`DASH`:case`DASH_SEP`:case`DASH_ONDEMAND`:case`DASH_WEBM`:case`DASH_WEBM_AV1`:case`DASH_STREAMS`:case`HLS`:case`HLS_FMP4`:case`HLS_ONDEMAND`:return!1;case`DASH_LIVE`:case`DASH_LIVE_CMAF`:case`HLS_LIVE`:case`HLS_LIVE_CMAF`:case`DASH_LIVE_WEBM`:case`WEB_RTC_LIVE`:return!0;default:return it(e)}},Ht=(e,t=!1)=>Bt(Object.keys(e).filter(e=>!Vt(e)),t).length>0;class Ut{constructor(e){this.subscription=new Re,this.log=void 0,this.params=void 0,this.sessionId$=new ze(null),this.mediaSessionId$=new ze(null),this.contentId$=new ze(null),this.progressTicker=void 0,this.isMobile=pt(),this.mobileVolumeState={muted:!1,volume:0},this.media=null,this.lastRequestedVolume=null,this.syncMediaState=e=>{if(Ie(e))return;this.media=e,this.mediaSessionId$.next(e.mediaSessionId??null);let t=e.media?.contentId;t&&this.contentId$.next(t),this.syncPlaybackState(e);let n=e.media?.duration;Fe(n)&&this.params.output.duration$.next(Math.max(0,n));let r=e.currentTime;if(Fe(r)){this.params.desiredState.seekState.getState().state===`applying`&&this.params.output.seekedEvent$.next(),this.params.output.position$.next(r);let t=this.params.output.isLive$.getValue();e.playerState===`PLAYING`&&!t?this.progressTicker.start(r):this.progressTicker.pause()}},this.params=e,this.progressTicker=new rt(e),this.log=this.params.dependencies.logger.createComponentLog(`ChromecastPresentationApiProvider`),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Vt(e.format)),this.subscribe()}subscribe(){let e=e=>{this.params.output.error$.next({category:Me.WTF,id:`ChromecastPresentationApiProvider`,message:e?.message??`Unknown error`,thrown:e})};this.subscription.add(this.params.chromecastConnector.message$.pipe(Ne(e=>!!e)).subscribe(e=>{this.handleMessage(e)},e)),this.subscription.add(this.sessionId$.pipe(Ne(Fe),Pe(),je(0)).subscribe(()=>{this.loadMedia()},e));let t=this.contentId$.pipe(Pe(),Le(Boolean));this.subscription.add(Ae({seekState:this.params.desiredState.seekState.stateChangeEnded$,mediaLoaded:t}).pipe(Ne(({mediaLoaded:e})=>e)).subscribe(()=>{let e=this.params.desiredState.seekState.getState();e.state===`requested`&&this.seek(e.position/1e3)},e));let n=Ae({playbackState:this.params.desiredState.playbackState.stateChangeStarted$,mediaLoaded:t});this.subscription.add(n.pipe(Ne(({mediaLoaded:e})=>e),je(0)).subscribe(()=>{this.syncPlayback()},e)),this.subscription.add(n.pipe(Ne(({mediaLoaded:e,playbackState:{from:t,to:n}})=>!e&&t===`stopped`&&n===`playing`)).subscribe(()=>{this.loadMedia()},e)),this.subscription.add(Ae({volumeState:this.params.desiredState.volume.stateChangeStarted$.pipe(je(30)),mediaLoaded:t}).pipe(Ne(({mediaLoaded:e})=>e)).subscribe(({volumeState:e})=>{let{muted:t,volume:n}=e.to;this.setVolume(n,t)},e))}handleMessage(e){switch(e.type){case`new_session`:case`update_session`:{var t;this.sessionId$.next(e.message.sessionId);let n=(t=e.message)==null||(t=t.media)==null?void 0:t[0];this.syncMediaState(n);let r=e.message?.receiver.volume;this.syncVolumeState(r)}break;case`v2_message`:switch(e.message?.type){case`MEDIA_STATUS`:{var n;let t=(n=e.message)==null||(n=n.status)==null?void 0:n[0];this.syncMediaState(t);break}}break}}loadMedia(){let e=Xe(this.params),t=this.media?.currentTime,n=this.params.desiredState.seekState.getState(),r=t??(n.state===`none`?0:n.position/1e3),i=this.params.desiredState.playbackState.getState()===`playing`;this.params.chromecastConnector.sendV2Message({type:`LOAD`,requestId:0,media:e,autoplay:i,currentTime:r,customData:null,activeTrackIds:null}),this.params.output.willSeekEvent$.next()}stop(){this.params.chromecastConnector.stopMedia()}play(){let e=this.mediaSessionId$.getValue();ke(e,`play on null mediaSessionId`),this.params.chromecastConnector.sendV2Message({type:`PLAY`,mediaSessionId:e,customData:null})}pause(){let e=this.mediaSessionId$.getValue();ke(e,`pause on null mediaSessionId`),this.params.chromecastConnector.sendV2Message({type:`PAUSE`,mediaSessionId:e,customData:null})}seek(e){let t=this.mediaSessionId$.getValue();ke(t,`seek on null mediaSessionId`),this.params.chromecastConnector.sendV2Message({type:`SEEK`,currentTime:e,mediaSessionId:t}),this.params.output.willSeekEvent$.next()}setVolume(e,t){let n=e,r=`[setVolume] volume: ${e}, muted: ${t}`;this.isMobile&&(n=this.mobileVolumeState.volume,r+=`, mobile next volume: ${n}`),this.log({message:r}),this.lastRequestedVolume={volume:n,muted:t},this.params.chromecastConnector.sendV2Message({type:`SET_VOLUME`,requestId:0,volume:{level:t?0:n,muted:t?!0:null}})}syncPlaybackState({playerState:e,idleReason:t}){let n=this.params.output.isBuffering$.getValue(),r=e===`BUFFERING`;switch(n!==r&&this.params.output.isBuffering$.next(r),e){case`PAUSED`:j(this.params.desiredState.playbackState,`paused`);break;case`PLAYING`:j(this.params.desiredState.playbackState,`playing`);break;case`IDLE`:t===`FINISHED`?(this.params.output.endedEvent$.next(),j(this.params.desiredState.playbackState,`stopped`),this.contentId$.next(null)):j(this.params.desiredState.playbackState,`ready`);break;case`BUFFERING`:break}}syncPlayback(){let e=this.params.desiredState.playbackState.getState();switch(this.log({message:`[syncPlayback] ${e}`}),e){case`ready`:break;case`playing`:this.play();break;case`paused`:this.pause();break;case`stopped`:this.stop();break}}syncVolumeState(e){if(Ie(e))return;let{level:t,muted:n}=e,r={muted:n??!1,volume:t??0};this.lastRequestedVolume&&=(n&&(r.volume=this.lastRequestedVolume.volume),this.lastRequestedVolume.muted&&!t&&!n&&(r.volume=this.lastRequestedVolume.volume,r.muted=!0),null);let i=`[syncVolumeState] volume: ${r.volume}, muted: ${r.muted}`;this.isMobile&&(this.mobileVolumeState.volume=r.volume,this.mobileVolumeState.muted=r.muted,r.volume=this.params.output.volume$.getValue().volume,i+=`, volume passed to state machine: ${r.volume}`),this.log({message:i}),this.params.output.volume$.next(r)}destroy(){this.progressTicker.destroy(),this.subscription.unsubscribe()}}var $t=e=>({castDevice:{friendlyName:e},remotePlayer:{},remotePlayerController:{},session:{}}),en=()=>String(Date.now())+String(Math.floor(Math.random()*1e5));class tn{constructor(e){this.params=void 0,this.clientId=void 0,this.capabilities=[`WEB`],this.presentationRequest$=new Xt(null),this.log=void 0,this.sessionId$=new Xt(null),this.broadcastChannel=new BroadcastChannel(`vk_player_chromecast_events`),this.subscription=new Jt,this.subscriptionEvents=new Jt,this.isDestroyed=!1,this.sequenceNumber=0,this.presentationAvailable$=new Xt(!1),this.presentationConnection$=new Xt(null),this.message$=new Xt(null),this.friendlyName$=new Xt(null),this.errorEvent$=new qt,this.clientId=this.getClientId(),this.params=e,this.log=e.logger.createComponentLog(`ChromecastPresentationApiConnector`),this.log({message:`constructor`}),this.safeReinitPresentation(),this.subscribe()}destroy(){this.log({message:`destroy`}),this.subscription.unsubscribe(),this.subscriptionEvents.unsubscribe(),this.broadcastChannel.close(),this.isDestroyed=!0}disconnect(e=!0){this.log({message:`disconnect`}),e&&this.stopMedia(),this.presentationRequest$.next(null);let t=this.presentationConnection$.getValue();t&&t.close(),this.presentationConnection$.next(null),this.friendlyName$.next(null),this.resetSequenceNumber(),this.resetSubscriptionEvents()}stopMedia(){this.log({message:`stopMedia`}),this.sendV2Message({type:`STOP`})}reinitPresentation(e=!0){let t=this.createCastUrl(),n=new PresentationRequest(t);this.presentationRequest$.next(n),this.log({message:`PresentationRequest created`}),n.getAvailability().then(e=>{let t=()=>{this.log({message:`PresentationRequest presentation availability: ${e.value}`}),this.presentationAvailable$.next(e.value)};this.subscriptionEvents.add(Zt(e,`change`).subscribe(()=>{t()})),t()}).catch(()=>{this.presentationAvailable$.next(!0)}),Qt().navigator.presentation.defaultRequest=n,e&&n.reconnect(`auto-join`).then(e=>{this.log({message:`PresentationRequest reconnect success`}),this.handleConnection(e)}).catch(()=>{this.log({message:`PresentationRequest reconnect failed`})})}safeReinitPresentation(e){try{this.reinitPresentation(e)}catch(e){this.errorEvent$.next({category:Gt.WTF,id:`ChromecastPresentationApiConnector`,message:e?.message??`reinitPresentation error`,thrown:e})}}connect(){var e=this;return D(function*(){e.log({message:`connect`});try{e.presentationRequest$.getValue()||(e.log({message:`reinitPresentation`}),e.reinitPresentation(!1));let t=e.presentationRequest$.getValue();Wt(t,`connect with null presentationRequest`);let n=yield t.start();e.handleConnection(n)}catch(t){switch(t?.name){case`AbortError`:case`NotAllowedError`:break;default:e.errorEvent$.next({category:Gt.WTF,id:`ChromecastPresentationApiConnector`,message:t?.message??`connect error`,thrown:t});break}}})()}subscribe(){this.subscription.add(Zt(this.broadcastChannel,`message`).subscribe(e=>{this.log({message:`broadcast connection data: ${e.data}`}),e.data===`connection`&&this.disconnect(!1)})),this.subscription.add(this.presentationAvailable$.subscribe(e=>{this.log({message:`presentationAvailable$: ${e}`})})),this.subscription.add(this.presentationConnection$.pipe(Yt(e=>{this.log({message:`presentationConnection$: ${!!e}`})}),Kt(e=>!!e)).subscribe(e=>{let t=Zt(e,`message`).subscribe(e=>{let t=JSON.parse(e.data);t.clientId===this.clientId&&(this.log({message:`[onmessage] ${e.data}`}),this.handleMessage(t),this.message$.next(t))}),n=Zt(e,`connect`).subscribe(()=>{this.send(`client_connect`)}),r=Zt(e,`close`).subscribe(e=>{switch(e.reason){case`error`:this.errorEvent$.next({category:Gt.WTF,id:`ChromecastPresentationApiConnector`,message:`Session error`,thrown:e});break;case`closed`:break}});this.subscriptionEvents.add(t),this.subscriptionEvents.add(n),this.subscriptionEvents.add(r)}))}send(e){switch(e){case`client_connect`:{let e={type:`client_connect`,message:this.clientId,sequenceNumber:-1,timeoutMillis:0,clientId:this.clientId};this.safeSend(JSON.stringify(e));break}}}sendV2Message(e){let t=this.sessionId$.getValue();if(t){let n={type:`v2_message`,sequenceNumber:this.getSequenceNumber(),timeoutMillis:0,clientId:this.clientId,message:E(E({},e),{},{sessionId:t})};this.safeSend(JSON.stringify(n))}}safeSend(e){try{this.log({message:`[send] ${e}`});let t=this.presentationConnection$.getValue();t?.state===`connected`&&t?.send(e)}catch(t){this.errorEvent$.next({category:Gt.WTF,id:`ChromecastPresentationApiConnector`,message:`PresentationConnection send error`,data:{message:e},thrown:t})}}handleMessage(e){switch(e.type){case`new_session`:case`update_session`:this.sessionId$.next(e.message.sessionId),this.friendlyName$.next(e.message.receiver.friendlyName||`Chromecast Device`);break;case`receiver_action`:e.message?.action===`stop`&&this.disconnect();break}}createCastUrl(){return`cast:${this.params.appId}?clientId=${this.clientId}&autoJoinPolicy=tab_and_origin_scoped&defaultActionPolicy=create_session&launchTimeout=60000&supportedAppTypes=${this.capabilities}&appParams=%7B%22launchCheckerParams%22%3A%7B%7D%7D`}getSequenceNumber(){let e=this.sequenceNumber;return this.sequenceNumber=(this.sequenceNumber+1)%(2**53-1),e}resetSequenceNumber(){this.sequenceNumber=0}getClientId(){let e=`__vk_player_chromecast_id`;return Qt()[e]=Qt()[e]||en()}resetSubscriptionEvents(){this.subscriptionEvents.unsubscribe(),this.subscriptionEvents=new Jt}handleConnection(e){this.log({message:`connection available`}),this.isDestroyed?(this.log({message:`connected on already destroyed component`}),e.close()):(this.broadcastChannel.postMessage(`connection`),this.presentationConnection$.next(e))}}class un{static isSupported(){return`chrome`in window&&`presentation`in navigator&&`BroadcastChannel`in window}constructor(e){this.subscription=new on,this.log=void 0,this.contentId=void 0,this.connection$=new nn(void 0),this.castState$=new nn(`NOT_AVAILABLE`),this.errorEvent$=new rn,this.chromecastConnector=void 0;let t=un.isSupported();this.log=e.dependencies.logger.createComponentLog(`ChromecastPresentationApiInitializer`),this.log({message:`[constructor] receiverApplicationId: ${e.receiverApplicationId}, isDisabled: ${e.isDisabled}, isSupported: ${t}`}),!(!t||e.isDisabled||!e.receiverApplicationId)&&(this.chromecastConnector=new tn({appId:e.receiverApplicationId,logger:e.dependencies.logger}),this.subscribe())}subscribe(){ln(this.chromecastConnector,`subscribe with null chromecastConnector`),this.subscription.add(this.chromecastConnector.errorEvent$.subscribe(this.errorEvent$));let e=sn({connection:this.chromecastConnector.presentationConnection$,available:this.chromecastConnector.presentationAvailable$,friendlyName:this.chromecastConnector.friendlyName$.pipe(cn())});this.subscription.add(e.pipe(an(({connection:e,friendlyName:t})=>!!(e&&t)),cn()).subscribe(e=>{let t=this.chromecastConnector?.friendlyName$.getValue()??``;this.connection$.next(e?$t(t):void 0)})).add(e.subscribe(({available:e,connection:t})=>{e?t?this.castState$.next(`CONNECTED`):this.castState$.next(`AVAILABLE`):this.castState$.next(`NOT_AVAILABLE`)}))}connect(){this.log({message:`connect`}),this.chromecastConnector?.connect()}disconnect(){this.log({message:`disconnect`}),this.chromecastConnector?.disconnect()}stopMedia(){var e=this;return D(function*(){e.log({message:`stopMedia`}),e.chromecastConnector?.stopMedia()})()}toggleConnection(){let e=!!this.chromecastConnector?.presentationConnection$.getValue();this.log({message:`toggleConnection: isConnected - ${e}`}),e?this.disconnect():this.connect()}setVolume(e){}setMuted(e){}destroy(){this.log({message:`destroy`}),this.chromecastConnector?.destroy(),this.subscription.unsubscribe()}}var vn=(e,t)=>e===t;class yn{constructor(e,t=vn){this.comparator=void 0,this.state=void 0,this.prevState=void 0,this.transition=void 0,this.transitionStarted$=new gn,this.transitionEnded$=new gn,this.transitionUpdated$=new gn,this.forceChanged$=new gn,this.stateChangeStarted$=_n(this.transitionStarted$,this.transitionUpdated$),this.stateChangeEnded$=_n(this.transitionEnded$,this.forceChanged$),this.comparator=t,this.state=e,this.prevState=void 0}setState(e){let t=this.transition,n=this.state;this.transition=void 0,this.prevState=n,this.state=e,t?this.comparator(t.to,e)?this.transitionEnded$.next(t):this.forceChanged$.next({from:t.from,to:e,canceledTransition:t}):this.forceChanged$.next({from:n,to:e,canceledTransition:t})}startTransitionTo(e){let t=this.transition,n=this.state;this.comparator(n,e)||hn(t)&&this.comparator(t.to,e)||(this.prevState=n,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:n,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}}var An=5,jn=5,Mn=500,Nn=7e3;class Pn{constructor(e){this.subscription=new On,this.loadMediaTimeoutSubscription=new On,this.videoState=new yn(`stopped`),this.params=void 0,this.log=void 0,this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),n=this.params.desiredState.playbackState.getState(),r=this.params.desiredState.playbackState.getTransition(),i=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${e}; videoTransition: ${JSON.stringify(t)}; desiredPlaybackState: ${n}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(i)};`}),n===`stopped`){e!==`stopped`&&(this.videoState.startTransitionTo(`stopped`),this.stop());return}if(!t){if(r?.to!==`paused`&&i.state===`requested`&&e!==`stopped`){this.seek(i.position/1e3);return}switch(n){case`ready`:switch(e){case`playing`:case`paused`:case`ready`:break;case`stopped`:this.videoState.startTransitionTo(`ready`),this.prepare();break;default:bn(e)}break;case`playing`:switch(e){case`playing`:break;case`paused`:this.videoState.startTransitionTo(`playing`),this.params.connection.remotePlayerController.playOrPause();break;case`ready`:this.videoState.startTransitionTo(`playing`),this.params.connection.remotePlayerController.playOrPause();break;case`stopped`:this.videoState.startTransitionTo(`ready`),this.prepare();break;default:bn(e)}break;case`paused`:switch(e){case`playing`:this.videoState.startTransitionTo(`paused`),this.params.connection.remotePlayerController.playOrPause();break;case`paused`:break;case`ready`:this.videoState.startTransitionTo(`paused`),this.videoState.setState(`paused`);break;case`stopped`:this.videoState.startTransitionTo(`ready`),this.prepare();break;default:bn(e)}break;default:bn(n)}}},this.params=e,this.log=this.params.dependencies.logger.createComponentLog(`ChromecastProvider`),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Vt(e.format)),this.params.output.isAudioAvailable$.next(!0),this.handleRemoteVolumeChange({volume:this.params.connection.remotePlayer.volumeLevel,muted:this.params.connection.remotePlayer.isMuted});let t=this.params.connection.session.getMediaSession();t&&this.restoreSession(t),this.subscribe()}destroy(){this.log({message:`[destroy]`}),this.subscription.unsubscribe()}subscribe(){this.subscription.add(this.loadMediaTimeoutSubscription);let e=new On;this.subscription.add(e),this.subscription.add(Tn(this.videoState.stateChangeStarted$.pipe(wn(e=>`stateChangeStarted$ ${JSON.stringify(e)}`)),this.videoState.stateChangeEnded$.pipe(wn(e=>`stateChangeEnded$ ${JSON.stringify(e)}`))).subscribe(e=>this.log({message:`[videoState] ${e}`})));let t=(e,t)=>this.subscription.add(e.subscribe(t));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{let t=new Dn;e.add(t.pipe(xn(Mn)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let n=NaN;e.add(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(e=>{this.logRemoteEvent(e);let r=e.value;this.params.output.position$.next(r),(this.params.desiredState.seekState.getState().state===`applying`||Math.abs(r-n)>An)&&t.next(r),n=r})),e.add(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(e=>{this.logRemoteEvent(e),this.params.output.duration$.next(e.value)}))}t(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),t=>{this.logRemoteEvent(t),t.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),e=>{this.logRemoteEvent(e),e.value?this.handleRemotePause():this.handleRemotePlay()}),t(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),e=>{this.logRemoteEvent(e);let{remotePlayer:t}=this.params.connection,n=e.value,r=this.params.output.isBuffering$.getValue(),i=n===chrome.cast.media.PlayerState.BUFFERING;switch(r!==i&&this.params.output.isBuffering$.next(i),n){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&t.duration-t.currentTime<jn&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),j(this.params.desiredState.playbackState,`stopped`);break;case chrome.cast.media.PlayerState.PAUSED:this.handleRemotePause();break;case chrome.cast.media.PlayerState.PLAYING:this.handleRemotePlay();break;case chrome.cast.media.PlayerState.BUFFERING:break;default:bn(n)}}),t(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),e=>{this.logRemoteEvent(e),this.handleRemoteVolumeChange({volume:e.value})}),t(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),e=>{this.logRemoteEvent(e),this.handleRemoteVolumeChange({muted:e.value})}),t(Tn(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,En([`init`])).pipe(xn(0)),this.syncPlayback)}restoreSession(e){this.log({message:`restoreSession`});let{remotePlayer:t}=this.params.connection;if(e.playerState!==chrome.cast.media.PlayerState.IDLE){t.isPaused?(this.videoState.setState(`paused`),j(this.params.desiredState.playbackState,`paused`)):(this.videoState.setState(`playing`),j(this.params.desiredState.playbackState,`playing`));let e=this.params.output.isLive$.getValue();this.params.output.duration$.next(e?0:t.duration),this.params.output.position$.next(e?0:t.currentTime),this.params.desiredState.seekState.setState({state:`none`})}}prepare(){let e=this.params.format;this.log({message:`[prepare] format: ${e}`});let t=Xe(this.params),n=this.createLoadRequest(t);this.loadMedia(n)}handleRemotePause(){let e=this.videoState.getState();(this.videoState.getTransition()?.to===`paused`||e===`playing`)&&(this.videoState.setState(`paused`),j(this.params.desiredState.playbackState,`paused`))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to===`playing`||e===`paused`)&&(this.videoState.setState(`playing`),j(this.params.desiredState.playbackState,`playing`))}handleRemoteReady(){this.videoState.getTransition()?.to===`ready`&&this.videoState.setState(`ready`),this.params.desiredState.playbackState.getTransition()?.to===`ready`&&j(this.params.desiredState.playbackState,`ready`)}handleRemoteStop(){this.videoState.getState()!==`stopped`&&this.videoState.setState(`stopped`)}handleRemoteVolumeChange(e){let t=this.params.output.volume$.getValue(),n={volume:e.volume??t.volume,muted:e.muted??t.muted};(n.volume!==t.volume||n.muted!==n.muted)&&this.params.output.volume$.next(n)}seek(e){this.params.output.willSeekEvent$.next();let{remotePlayer:t,remotePlayerController:n}=this.params.connection;t.currentTime=e,n.seek()}stop(){let{remotePlayerController:e}=this.params.connection;e.stop()}createLoadRequest(e){let t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;let n=this.params.desiredState.seekState.getState();return n.state===`applying`||n.state===`requested`?t.currentTime=this.params.output.isLive$.getValue()?0:n.position/1e3:t.currentTime=0,t}loadMedia(e){let t=this.params.connection.session.loadMedia(e),n=new Promise((e,t)=>{this.loadMediaTimeoutSubscription.add(kn(Nn).subscribe(()=>t(`timeout(${Nn})`)))});mn(Promise.race([t,n]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state===`applying`&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},e=>{let t=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${e}`;this.log({message:t}),this.params.output.error$.next({id:`ChromecastProvider.loadMedia`,category:Sn.VIDEO_PIPELINE,message:t,thrown:e})}),()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}}var Vn=e=>{try{e.pause(),e.playbackRate=0,Bn(e),e.remove()}catch(e){console.error(e)}},Hn=`__spvc`;class Un{constructor(){this.attribute=`data-pool-reused`}get(e){return e.hasAttribute(this.attribute)}set(e,t){e.toggleAttribute(this.attribute,t)}delete(e){e.removeAttribute(this.attribute)}}var Wn=Rn(),Gn=Wn.WeakMap?new Wn.WeakMap:new Un,Kn=Wn.WeakMap?new Wn.WeakMap:new Map,qn=(e,t=20)=>{let n=0;return Ln(e,`ratechange`).subscribe(r=>{n++,n>=t&&(e.currentTime=e.currentTime,n=0)})};function Jn(e){e.style.position=`fixed`,e.style.left=`100%`,e.setAttribute(`data-role`,`screen`),Rn().document.body.appendChild(e)}function Yn(e,t){e.style.position=``,e.style.left=``,t.appendChild(e)}var Xn=(e,{audioVideoSyncRate:t,disableYandexPiP:n,reuseOwnVideoElement:r,reuseOwnVideoElementOnBackgroundTabOnly:i})=>{let a,o=e.querySelector(`video`),s=!!o,c=Rn().document.querySelector(`body > video[data-role=screen]`)||void 0;r&&!i?Wn[Hn]=c:(c?.remove(),delete Wn[Hn]),o?(a=o,In(a)):c&&c===Wn[Hn]?(a=c,Yn(a,e)):(a=Rn().document.createElement(`video`),e.appendChild(a),r&&!i&&(Wn[Hn]=a)),Gn.set(a,s);let l=new zn;return l.add(qn(a,t)),Kn.set(a,l),a.setAttribute(`crossorigin`,`anonymous`),a.setAttribute(`playsinline`,`playsinline`),n&&a.setAttribute(`x-yandex-pip`,`false`),a.controls=!1,a.setAttribute(`poster`,`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=`),a},Zn=e=>(e.setAttribute(`crossorigin`,`anonymous`),e.controls=!1,e),Qn=(e,t)=>{if(e instanceof HTMLAudioElement){$n(e,t);return}if(e instanceof HTMLVideoElement){er(e,t);return}};function $n(e,{clearAudioElementOnDispose:t}){if(t){In(e);return}Vn(e)}function er(e,{reuseOwnVideoElement:t,reuseOwnVideoElementOnBackgroundTabOnly:n}){Kn.get(e)?.unsubscribe(),Kn.delete(e);let r=Gn.get(e);Gn.delete(e),In(e),t&&!n&&!r&&Jn(e)}var vr=(e,t,n,{equal:r=(e,t)=>e===t,changed$:i,onError:a}={})=>{let o=e.getState(),s=t(),c=gr(i),l=new _r;return i&&l.add(i.subscribe(t=>{r(t,e.getState())&&e.setState(t)},a)),r(s,o)||(n(o),c&&e.setState(o)),l.add(e.stateChangeStarted$.subscribe(t=>{n(t.to),c&&e.setState(t.to)},a)),l},yr=(e,t,n)=>vr(t,()=>e.loop,t=>{hr(t)&&(e.loop=t)},{onError:n}),br=(e,t,n,r,i)=>vr(t,()=>({muted:e.muted,volume:e.volume}),t=>{i?.skipVideoElVolumeSync$.getValue()||hr(t)&&(e.muted=t.muted,e.volume=t.volume)},{equal:(e,t)=>e===t||e?.muted===t?.muted&&e?.volume===t?.volume,changed$:n,onError:r}),xr=(e,t,n,r)=>vr(t,()=>e.playbackRate,t=>{hr(t)&&(e.playbackRate=t)},{changed$:n,onError:r}),Sr=vr,Cr=e=>[`__`,e.language,e.label].join(`|`),wr=(e,t)=>{if(e.id===t)return!0;let[n,r,i]=t.split(`|`);return e.language===r&&e.label===i};class Tr{constructor(e){this.available$=new dr,this.current$=new pr(void 0),this.error$=new dr,this.video=void 0,this.cueSettings=void 0,this.subscription=new fr,this.externalTracks=new Map,this.internalTracks=new Map,this.baseURL=void 0,this.baseURL=e}connect(e,t,n){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();let r=e=>{this.error$.next({id:`TextTracksManager`,category:mr.WTF,message:`Generic HtmlVideoTextTrackManager error`,thrown:e})};this.subscription.add(this.available$.subscribe(n.availableTextTracks$)),this.subscription.add(this.current$.subscribe(n.currentTextTrack$)),this.subscription.add(this.error$.subscribe(n.error$)),this.subscription.add(Sr(t.internalTextTracks,()=>tr(this.internalTracks),e=>{ir(e)&&this.setInternal(e)},{equal:(e,t)=>ir(e)&&ir(t)&&e.length===t.length&&e.every(({id:e},n)=>e===t[n].id),changed$:this.available$.pipe(ur(e=>e.filter(({type:e})=>e===`internal`))),onError:r})),this.subscription.add(Sr(t.externalTextTracks,()=>tr(this.externalTracks),e=>{ir(e)&&this.setExternal(e)},{equal:(e,t)=>ir(e)&&ir(t)&&e.length===t.length&&e.every(({id:e},n)=>e===t[n].id),changed$:this.available$.pipe(ur(e=>e.filter(({type:e})=>e===`external`))),onError:r})),this.subscription.add(Sr(t.currentTextTrack,()=>{if(this.video)return;let e=this.htmlTextTracksAsArray().find(({mode:e})=>e===`showing`);return e&&this.htmlTextTrackToITextTrack(e).id},e=>this.select(e),{changed$:this.current$,onError:r})),this.subscription.add(Sr(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let e of this.htmlTextTracksAsArray())this.applyCueSettings(e.cues),this.applyCueSettings(e.activeCues)}))}subscribe(){rr(this.video);let{textTracks:e}=this.video;this.subscription.add(or(e,`addtrack`).subscribe(()=>{let e=this.current$.getValue();e&&this.select(e)})),this.subscription.add(sr(or(e,`addtrack`),or(e,`removetrack`),cr([`init`])).pipe(ur(()=>this.htmlTextTracksAsArray().map(e=>this.htmlTextTrackToITextTrack(e))),lr((e,t)=>e.length===t.length&&e.every(({id:e},n)=>e===t[n].id))).subscribe(this.available$)),this.subscription.add(sr(or(e,`change`),cr([`init`])).pipe(ur(()=>this.htmlTextTracksAsArray().find(({mode:e})=>e===`showing`)),ur(e=>e&&this.htmlTextTrackToITextTrack(e).id),lr()).subscribe(this.current$));let t=e=>this.applyCueSettings(e.target?.activeCues??null);this.subscription.add(or(e,`addtrack`).subscribe(e=>{e.track?.addEventListener(`cuechange`,t);let n=e=>{let t=e.target?.cues??null;t&&t.length&&(this.applyCueSettings(e.target?.cues??null),e.target?.removeEventListener(`cuechange`,n))};e.track?.addEventListener(`cuechange`,n)})),this.subscription.add(or(e,`removetrack`).subscribe(e=>{e.track?.removeEventListener(`cuechange`,t)}))}applyCueSettings(e){if(!e||!e.length)return;let t=this.cueSettings.getState();for(let n of Array.from(e)){let e=n;ir(t.align)&&(e.align=t.align),ir(t.position)&&(e.position=t.position),ir(t.size)&&(e.size=t.size),ir(t.line)&&(e.line=t.line)}}htmlTextTracksAsArray(e=!1){rr(this.video);let t=[...this.video.textTracks];return e?t:t.filter(Tr.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:n}=e,r=e.id?e.id:Cr(e),i=this.externalTracks.has(r),a=(i?this.externalTracks.get(r)?.isAuto:this.internalTracks.get(r)?.isAuto)??nr(r,`auto`);return i?{id:r,type:`external`,isAuto:a,language:t,label:n,url:this.externalTracks.get(r)?.url}:{id:r,type:`internal`,isAuto:a,language:t,label:n,url:this.internalTracks.get(r)?.url}}static isHealthyTrack(e){return!(e.kind===`metadata`||e.groupId||e.id===``&&e.label===``&&e.language===``)}setExternal(e){this.internalTracks.size>0&&Array.from(this.internalTracks).forEach(([,e])=>this.detach(e)),e.filter(({id:e})=>!this.externalTracks.has(e)).forEach(e=>this.attach(e)),Array.from(this.externalTracks).filter(([t])=>!e.find(e=>e.id===t)).forEach(([,e])=>this.detach(e))}setInternal(e){let t=[...this.externalTracks];e.filter(({id:e,language:n,isAuto:r})=>!this.internalTracks.has(e)&&!t.some(([,e])=>e.language===n&&e.isAuto===r)).forEach(e=>this.attach(e)),Array.from(this.internalTracks).filter(([t])=>!e.find(e=>e.id===t)).forEach(([,e])=>this.detach(e))}select(e){rr(this.video);for(let e of this.htmlTextTracksAsArray(!0))e.mode=`showing`;for(let t of this.htmlTextTracksAsArray(!0))(ar(e)||!wr(t,e))&&(t.mode=`disabled`)}destroy(){if(this.subscription.unsubscribe(),this.video)for(let e of Array.from(this.video.getElementsByTagName(`track`))){let t=e.getAttribute(`id`);t&&this.externalTracks.has(t)&&this.video.removeChild(e)}this.externalTracks.clear()}attach(e){rr(this.video);let t=document.createElement(`track`);this.baseURL?t.setAttribute(`src`,new URL(e.url,this.baseURL).toString()):t.setAttribute(`src`,e.url),t.setAttribute(`id`,e.id),e.label&&t.setAttribute(`label`,e.label),e.language&&t.setAttribute(`srclang`,e.language),e.type===`external`?this.externalTracks.set(e.id,e):e.type===`internal`&&this.internalTracks.set(e.id,e),this.video.appendChild(t)}detach(e){rr(this.video);let t=Array.prototype.find.call(this.video.getElementsByTagName(`track`),t=>t.getAttribute(`id`)===e.id);t&&this.video.removeChild(t),e.type===`external`?this.externalTracks.delete(e.id):e.type===`internal`&&this.internalTracks.delete(e.id)}}var Er=Tr;class Dr{constructor(){this.pausedTime=0,this.streamOffset=0,this.pauseTimestamp=0}getTotalPausedTime(){return this.pausedTime+this.getCurrentPausedTime()}getCurrentPausedTime(){return this.pauseTimestamp>0?Date.now()-this.pauseTimestamp:0}getStreamOffset(){return this.streamOffset}getTotalOffset(){return this.getTotalPausedTime()+this.streamOffset}pause(){this.pauseTimestamp===0&&(this.pauseTimestamp=Date.now())}resume(){this.pauseTimestamp>0&&(this.pausedTime+=this.getCurrentPausedTime(),this.pauseTimestamp=0)}resetTo(e,t=!1){this.streamOffset=e,this.pauseTimestamp=0,this.pausedTime=0,t&&this.pause()}}var Or=e=>{let t=e;for(;!(t instanceof Document)&&!(t instanceof ShadowRoot)&&t!==null;)t=t?.parentNode;return t??void 0},kr=e=>{let t=Or(e);return!!(t&&t.fullscreenElement&&t.fullscreenElement===e)},Ar=e=>{let t=Or(e);return!!(t&&t.pictureInPictureElement&&t.pictureInPictureElement===e)};var Gr=3,Kr=(e,t,n=Gr)=>{let r=0,i=0;for(let a=0;a<e.length;a++){let o=e.start(a),s=e.end(a);if(o<=t&&t<=s){if(r=o,i=s,!n)return{from:r,to:i};for(let t=a-1;t>=0;t--)e.end(t)+n>=r&&(r=e.start(t));for(let t=a+1;t<e.length;t++)e.start(t)-n<=i&&(i=e.end(t))}}return{from:r,to:i}},qr=e=>{let t=0;for(let n=0;n<e.length;n++)t+=e.end(n)-e.start(n);return t},Jr=e=>{let t=0;for(let n=0;n<e.length;n++)t+=e.end(n)-e.start(n);return t*1e3},Yr=e=>{let t=t=>F(e,t).pipe(Lr(void 0),I(1)),n=new Wr,r=()=>n.unsubscribe(),i=Mr(F(e,`progress`),F(e,`timeupdate`)),a=i.pipe(jr(()=>Kr(e.buffered,e.currentTime)),I(1)),o=i.pipe(jr(()=>Jr(e.buffered)),I(1)),s=i.pipe(jr(()=>e.buffered.length),I(1)),c=P.browser.isSafari?Rr({play:t(`play`).pipe(zr()),playing:t(`playing`)}).pipe(Lr(void 0),I(1)):t(`playing`),l=F(e,`volumechange`).pipe(jr(()=>({muted:e.muted,volume:e.volume})),I(1)),u=F(e,`ratechange`).pipe(jr(()=>e.playbackRate),I(1)),d=F(e,`error`).pipe(Ir(()=>!!(e.error||e.played.length)),jr(()=>{let t=e.error;return{id:t?`MediaError#${t.code}`:`HtmlVideoError`,category:Vr.VIDEO_PIPELINE,message:t?t.message:`Error event from HTML video element`,thrown:e.error??void 0,origin:Hr.MediaError,data:t?{code:t.code}:void 0}}),I(1)),f=F(e,`timeupdate`).pipe(jr(()=>e.currentTime),I(1)),p=Mr(F(e,`loadedmetadata`),F(e,`timeupdate`),F(e,`pause`),F(e,`seeked`),F(e,`ended`)).pipe(jr(()=>qr(e.played)),Nr(),I(1)),m=[`waiting`,`seeking`,`seeked`,`timeupdate`],h=new Fr,g=.3,_;n.add(Mr(...m.map(t=>F(e,t))).subscribe(t=>{let n=e.currentTime;e.loop&&Pr(_)&&Pr(n)&&_>=e.duration-g&&n<=g&&h.next(_),_=n}));let v=t(`pause`).pipe(Ir(()=>!e.error&&_!==e.duration),I(1)),y=F(e,`enterpictureinpicture`).pipe(I(1)),b=F(e,`leavepictureinpicture`).pipe(I(1)),x=new Ur(Ar(e));n.add(y.subscribe(()=>x.next(!0))),n.add(b.subscribe(()=>x.next(!1)));let S=new Ur(kr(e)),C=F(e,`fullscreenchange`).pipe(I(1));n.add(C.pipe(jr(()=>kr(e))).subscribe(S));let w=F(e,`timeupdate`).pipe(jr(t=>e.duration-e.currentTime<.1),Nr(),I(1)),T=Mr(w.pipe(Ir(t=>!e.loop&&t)),F(e,`ended`)).pipe(Br(1e3),Lr(void 0),I(1)),E=Mr(...[`waiting`,`pause`,`canplay`,`play`,`canplaythrough`,`playing`,`seeking`,`seeked`,`ended`].map(t=>F(e,t)),w.pipe(jr(e=>({type:e?`ended`:`unknown`})))).pipe(jr(t=>P.browser.isFirefox&&t.type===`ended`?e.readyState<2:e.readyState<3),Nr(),I(1));return{playing$:c,pause$:v,canplay$:t(`canplay`),ended$:T,looped$:h,error$:d,seeked$:t(`seeked`),seeking$:t(`seeking`),progress$:t(`progress`),loadStart$:t(`loadstart`),loadedMetadata$:t(`loadedmetadata`),loadedData$:t(`loadeddata`),timeUpdate$:f,durationChange$:F(e,`durationchange`).pipe(jr(()=>e.duration),I(1)),playedTime$:p,isBuffering$:E,currentBuffer$:a,totalBufferDuration$:o,bufferRangeCount$:s,volumeState$:l,playbackRateState$:u,inPiP$:x,inFullscreen$:S,enterPip$:y,leavePip$:b,destroy:r}};var Zr=e=>{switch(e){case`mobile`:return Xr.Q_144P;case`lowest`:return Xr.Q_240P;case`low`:return Xr.Q_360P;case`sd`:case`medium`:return Xr.Q_480P;case`hd`:case`high`:return Xr.Q_720P;case`fullhd`:case`full`:return Xr.Q_1080P;case`quadhd`:case`quad`:return Xr.Q_1440P;case`ultrahd`:case`ultra`:return Xr.Q_2160P}};var ii=e=>`audioTracksAsc`in e;class oi{constructor(){this.last=void 0,this.history={}}recordSelection(e){this.history[e.id]=ai()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}}var _i=(e,t)=>(e??0)/(t>0?t:1),vi=e=>`quality`in e,yi=e=>(t,n)=>e*(Number(t.bitrate)-Number(n.bitrate)),bi=e=>(t,n)=>e*(mi(t.quality,n.quality)?-1:1),xi=e=>(t,n)=>vi(t)&&vi(n)?bi(e)(t,n):yi(e)(t,n),Si=(e,t)=>xi(1)(e,t)<0,Ci=(e,t)=>Math.log(t)/Math.log(e),wi=(e,t,n)=>(t-n)*2**(-10*e)+n,Ti=(e,t,n,r)=>{if(gi(e))return n[0];let i=n.filter(t=>hi(t.bitrate)&&hi(e.bitrate)?e.bitrate/t.bitrate>r:!0),a=fi(n,Math.round(n.length*t.indexOf(e)/(t.length+1)))??fi(n,-1);return a&&pi(i,a)?a:i.length?fi(i,-1):fi(n,0)},Ei=(e,t)=>{if(gi(t)||gi(e))return;let n=e.get(t.id);if(!n?.length)return;let r=(n[n.length-1].time.to-n[0].time.from)/1e3;if(r<=0)return;let i=n.reduce((e,t)=>e+(t.size??1/0),0)*8/1024/r;return isFinite(i)?i:void 0},Di=(e,t)=>hi(e)&&hi(t)&&t>0&&e>0&&e<=t*2,Oi=e=>{let{name:t}=e;return`
7
7
  ${t}
8
8
  ${ni(O(e,b)).map(([e,t])=>` ${e}: ${t}`).join(`
9
9
  `)}
@@ -37,4 +37,4 @@ ${ni(O(e,b)).map(([e,t])=>` ${e}: ${t}`).join(`
37
37
  `,e.map(({time:e,data:t,stack:n})=>`${e}: ${JSON.stringify(t)}${n?`
38
38
  `+n:``}`).join(`
39
39
  `),`
40
- ===== DASH_LIVE DEBUG END ====`),n){let t=e.reduce((e,{time:t,data:n,stack:r})=>{let i=fn(n).map(([e,t])=>`${e}:${t}`).join(`,`);return e+=`${t}: ${i}${r?`: ${r}`:``};`,e},``);rv.push(`core`,{key:`vp_dash_live_debug`,strings:[t]})}};return e.add(this.providerError$.subscribe(e=>{e.id.startsWith(`ProviderHangup`)&&(R({m:`final.0`,e:e.id}),t())})).add(this.noAvailableProvidersError$.subscribe(()=>{R({m:`final.1`}),t()})),e.add(this.mayday.recommendation$.subscribe(({error:e,recommendation:t})=>{let n=this.current$.getValue().destination??`SCREEN`;if(this.handleMaydayRecommendation(t,n),t.action!==`wait`){let t={error:e,currentDestination:n};e.traceAsLog?this.tracer.log(`providerInfo`,nv(t)):this.tracer.error(`providerError`,nv(t))}})),e.add(this.providerError$.subscribe(e=>{let t=this.current$.getValue(),{destination:n}=t;n===`CHROMECAST`?(this.destroyProvider(),this.params.dependencies.chromecastInitializer.stopMedia().then(()=>this.switchToNextProvider(`CHROMECAST`),()=>this.params.dependencies.chromecastInitializer.disconnect())):(this.applyErrorSideEffects(e,t.type),this.mayday.handleError(e))})),e}}var by=`vk_uvp_throughput`,xy=`vk_uvp_rtt`,Sy=`one_video_throughput`,Cy=`one_video_rtt`,wy=()=>{let{navigator:e}=yy();if(e)return e.connection},Ty=()=>{let e=wy()?.downlink;if(_y(e)&&e!==10)return e*1e3},Ey=()=>{let e=wy()?.rtt;if(_y(e)&&e!==3e3)return e},Dy=(e,t,n)=>{let r=n*8;return r/(r/e+t)};class Oy{constructor(e){this.throughput=void 0,this.rtt=void 0,this.subscription=new py,this.tuningConfig=void 0,this.concurrentDownloads=new Map,this.throughput$=void 0,this.rtt$=void 0,this.rttAdjustedThroughput$=void 0,this.tuningConfig=e;let t=Oy.loadStored(by,Sy,e)||(e.useBrowserEstimation?Ty():void 0)||e.initialThroughput,n=Oy.loadStored(xy,Cy,e)??(e.useBrowserEstimation?Ey():void 0)??0;if(this.throughput$=new my(t),this.rtt$=new my(n),this.rttAdjustedThroughput$=new my(Dy(t,n,e.rttPenaltyRequestSize)),this.throughput=Op.getSmoothedValue(t,-1,e),this.rtt=Op.getSmoothedValue(n,1,e),e.useBrowserEstimation){let e=()=>{let e=Ty();e&&this.throughput.next(e);let t=Ey();_y(t)&&this.rtt.next(t)},t=wy();t&&`onchange`in t&&this.subscription.add(uy(t,`change`).subscribe(e)),e()}this.subscription.add(this.throughput.smoothed$.subscribe(t=>{Oy.writeStored(by,Sy,t,e)})),this.subscription.add(this.rtt.smoothed$.subscribe(t=>{Oy.writeStored(xy,Cy,t,e)})),this.subscription.add(this.throughput.debounced$.pipe(hy(e=>Math.round(e))).subscribe(this.throughput$)),this.subscription.add(this.rtt.debounced$.subscribe(this.rtt$)),this.subscription.add(fy({throughput:this.throughput.smoothed$,rtt:this.rtt.smoothed$}).pipe(hy(({throughput:t,rtt:n})=>Dy(t,n,e.rttPenaltyRequestSize)),gy(t=>{let n=this.rttAdjustedThroughput$.getValue()||0;return Math.abs(t-n)/n>=e.changeThreshold})).subscribe(this.rttAdjustedThroughput$))}destroy(){this.concurrentDownloads.clear(),this.subscription.unsubscribe()}trackXHR(e){let t=0,n=J(),r=new py;switch(this.subscription.add(r),this.concurrentDownloads.set(e,J()),e.readyState){case 4:break;case 3:case 2:r.add(uy(e,`progress`).pipe(dy()).subscribe(e=>{t=e.loaded,n=J()}));break;case 1:case 0:r.add(uy(e,`loadstart`).subscribe(()=>{t=0,n=J()}));break}r.add(uy(e,`loadend`).subscribe(i=>{if(e.status===200){let e=i.loaded,r=J(),a=e-t,o=r-n;this.addRawSpeed(a,o,1)}this.concurrentDownloads.delete(e),r.unsubscribe()}))}trackStream(e,t=!1){var n=this;let r=e.getReader();if(!r){e.cancel(`Could not get reader`);return}let i=0,a=J(),o=0,s=J(),c=t=>{this.concurrentDownloads.delete(e),r.releaseLock(),e.cancel(`Throughput Estimator error: ${t}`).catch(()=>{})},l=function(){var u=D(function*({done:u,value:d}){if(u){if(!t){let e=n.tuningConfig.measureFastSamples?n.countActiveDownloads(a):1;n.addRawSpeed(i,J()-a,e)}n.concurrentDownloads.delete(e)}else if(d){if(n.tuningConfig.measureFastSamples&&n.concurrentDownloads.set(e,J()),t){let e=J();if(e-s>n.tuningConfig.lowLatency.continuesByteSequenceInterval||e-a>n.tuningConfig.lowLatency.maxLastEvaluationTimeout){let e=s-a;e&&n.addRawSpeed(o,e,1,t),o=d.byteLength,a=J()}else o+=d.byteLength;s=J()}else if(i+=d.byteLength,o+=d.byteLength,o>=n.tuningConfig.streamMinSampleSize&&J()-s>=n.tuningConfig.streamMinSampleTime){let e=n.tuningConfig.measureFastSamples?n.countActiveDownloads(s):n.concurrentDownloads.size;n.addRawSpeed(o,J()-s,e),o=0,s=J()}yield r?.read().then(l,c)}});return function(e){return u.apply(this,arguments)}}();this.concurrentDownloads.set(e,J()),r?.read().then(l,c)}addRawSpeed(e,t,n=1,r=!1){if(this.sanityCheck(e,t,r)){let i=e*8/t*n;if(this.isFastSample(t,r)&&i<this.throughput.smoothed$.getValue())return;this.throughput.next(i)}}countActiveDownloads(e){let t=0;return this.concurrentDownloads.forEach(n=>{n>=e&&t++}),Math.max(t,1)}isFastSample(e,t){return this.tuningConfig.measureFastSamples&&!t&&e<=this.tuningConfig.cacheThresholdSize}addRawThroughput(e){this.throughput.next(e)}addRawRtt(e){this.rtt.next(e)}sanityCheck(e,t,n=!1){let r=e*8/t;return!(!r||!isFinite(r)||r>1e6||r<30||n&&e<1e4||!n&&e<10*1024&&(!this.tuningConfig.measureNonSegmentRequests||t<this.tuningConfig.smallSampleMinDuration+this.rtt$.getValue())||!n&&!this.tuningConfig.measureFastSamples&&t<=this.tuningConfig.cacheThresholdSize)}get throughputVariance$(){return this.throughput.varianceCoefficient$}static loadStored(e,t,n){if(!n.useThroughputTtl){let e=vy.get(t);if(!_y(e))return;let n=parseInt(e,10);return isNaN(n)?void 0:n}let r=vy.get(e)??vy.get(t);if(_y(r))try{let e=JSON.parse(r);if(typeof e==`object`&&e&&typeof e.value==`number`)return Oy.validateStored(e,n)}catch{}}static writeStored(e,t,n,r){if(!r.useThroughputTtl){vy.set(t,n.toFixed(0));return}let i=JSON.stringify({value:Math.round(n),timestamp:Date.now(),networkType:wy()?.effectiveType});vy.set(e,i)}static validateStored(e,t){if(!t.useThroughputTtl)return e.value;if(Date.now()-e.timestamp>t.storedThroughputTtlMs)return;let n=wy()?.effectiveType;if(!(n!==void 0&&e.networkType!==void 0&&n!==e.networkType))return e.value}}var ky=Oy;var My={mayday:{playingUnstableThresholdMs:3e3,heuristics:[],hangupGraceDecayFactor:.5,hangupGraceMinTimeoutMs:0,deferAudibleHangupOnHiddenTab:!1},allowPlayerReuse:!1,useWorkerTimers:[],throughputEstimator:{type:`EmaAndMa`,emaAlphaSlow:.2,emaAlphaFast:.7,emaAlpha:.45,basisTrendChangeCount:10,changeThreshold:.05,useBrowserEstimation:!0,initialThroughput:5e3,measureNonSegmentRequests:!1,rttPenaltyRequestSize:1*1024*1024,streamMinSampleSize:10*1024,streamMinSampleTime:300,smallSampleMinDuration:100,cacheThresholdSize:20,cacheHitTtfbMaxMs:10,measureFastSamples:!1,deviationDepth:20,deviationFactor:.5,lowLatency:{continuesByteSequenceInterval:50,maxLastEvaluationTimeout:300},useThroughputTtl:!1,storedThroughputTtlMs:144e5},autoTrackSelection:{maxBitrateFactorAtEmptyBuffer:4,bitrateFactorAtEmptyBuffer:2.8,minBitrateFactorAtEmptyBuffer:1.5,bitrateAudioFactorAtEmptyBuffer:10,maxBitrateFactorAtFullBuffer:3,bitrateFactorAtFullBuffer:2,minBitrateFactorAtFullBuffer:1,bitrateAudioFactorAtFullBuffer:7,minVideoAudioRatio:5,minAvailableThroughputAudioRatio:5,usePixelRatio:!0,pixelRatioMultiplier:void 0,pixelRatioLogBase:3,pixelRatioLogCoefficients:[1,0,1],limitByContainer:!0,maxContainerSizeFactor:2,containerSizeFactor:1.3,minContainerSizeFactor:1,lazyQualitySwitch:!0,minBufferToSwitchUp:.4,considerPlaybackRate:!1,trackCooldownIncreaseQuality:15e3,trackCooldownDecreaseQuality:3e3,backgroundVideoQualityLimit:jy.Q_4320P,activeVideoAreaThreshold:.1,highQualityLimit:jy.Q_720P,trafficSavingLimit:jy.Q_480P,lowQualityTelemetryLimit:jy.Q_240P},stallsManager:{enabled:!1,ignoreDynamicAbrForShortVideo:!1,stallDurationNoDataBeforeQualityDecrease:500,stallDurationToBeCount:100,stallCountBeforeQualityDecrease:3,resetQualityRestrictionTimeout:1e4,ignoreStallsOnSeek:!0,stallsMetricsHistoryLength:20,maxPossibleStallDuration:3e4,minTvtToBeCounted:120,maxTvtToBeCounted:10800,significantTvt:600,targetStallsDurationPerTvt:1,deviationStallsDurationPerTvt:.5,criticalStallsDurationPerTvt:6,abrAdjustingSpeed:.1,emaAlpha:.6,useTotalStallsDurationPerTvt:!0,useAverageStallsDurationPerTvt:!0,useEmaStallsDurationPerTvt:!0,ignoreStallsOnPause:!1},droppedFramesChecker:{enabled:!1,percentLimit:.1,checkTime:1e3,countLimit:3,tickCountAfterQualityChange:5,qualityUpWaitingTime:5e3,minQualityBanLimit:jy.Q_480P},dash:{forwardBufferTarget:6e4,forwardBufferTargetAuto:6e4,forwardBufferTargetManual:5*6e4,forwardBufferTargetPreload:5e3,audioBufferAheadOfVideoMs:1e4,seekBiasInTheEnd:2e3,maxSegmentDurationLeftToSelectNextSegment:3e3,minSafeBufferThreshold:.5,bufferPruningSafeZone:1e3,segmentRequestSize:1*1024*1024,maxVirtualBufferSize:250*1024*1024,virtualBufferPruneSize:100*1024*1024,representationSwitchForwardBufferGap:6e4,crashOnStallTimeout:25e3,crashOnStallTWithoutDataTimeout:5e3,restoreBufferBeforeCrashTimeout:1e3,enableSubSegmentBufferFeeding:!0,bufferEmptinessTolerance:100,virtualBufferEmptinessTolerance:100,useBufferQueueVerification:!1,useVirtualBufferImplicitSeek:!1,bufferQueueVerificationMinPosition:2e3,useNewRepresentationSwitch:!1,useDelayedRepresentationSwitch:!1,useSmartRepresentationSwitch:!1,brokenSegmentAppendDetection:!1,brokenSegmentAppendTolerance:100,useFetchPriorityHints:!0,enableBaseUrlSupport:!0,maxSegmentRetryCount:5,sourceOpenTimeout:1e3,vktvAbrThrottle:0,timeupdateEventTickThrottle:300,fetcherBufferOptimisation:!0,usePersistentGaps:!1,abrThrottle:0,useVideoElementWaitingCurrentTimeReassign:!0,stallWatchdogInterval:100,liveUpdateInterval:1e3,liveStallReinitInterval:3e3,ignoreNetworkErrorsOnLoadInit:!1,bufferTolerance:100,useBufferGapWatchdog:!1,jumpToFirstNativeBufferFrame:!1,minNativeBufferSize:5e3,removeTimeShiftFromSegment:500,tickMaintainInterval:100,minSafeBufferToPlay:0,useBufferHoldingOnlyOnStall:!0,useAbrPhases:!1,abrVideoRules:[`fits_container_rule`,`throughput_rule`,`buffer_rule`,`stalls_rule`,`upper_limit_rule`,`lower_limit_rule`],abrAudioRules:[`throughput_rule`,`min_audio_for_video_rule`],useFailoverHostsOnAllProviderCrash:!1,saveData3gQualityLimit:jy.Q_240P,saveData2gQualityLimit:jy.Q_144P,useConnectionDataUpperLimit:!1,abandon:{minElapsedMs:1500,bufferSafetyFactor:.8,minLoadedFraction:.15,minBufferToActivateMs:500},bola:{bufferTargetMs:3e4,minBufferMs:1e4,minBufferPerBitrateLevelMs:2e3,placeholderBufferDecay:.99,fallbackSegmentDurationMs:4e3,finiteThresholdMs:6e4,adaptiveBufferTargetK:.5,adaptiveBufferTargetMaxMs:6e4,trimDetectThresholdMs:1e4,antiCascadeDownshift:!0},insufficientBuffer:{thresholdMs:500,gracePeriodAfterPlaybackResetMs:1e3,budgetFactor:.5,fallbackSegmentDurationMs:6e3},videoStreamRepresentaionsFilter:[],filterOnDemandQualityList:!1,dashMaxTvVideoQuality:!1,checkRepresentationCanPlayType:!1,preloadFirstSegment:!1,maxQualityForFirstSegmentPreload:jy.Q_480P,tracerResumeOnUnexpectedStall:!1,tracerResumeOnLowQuality:!1,recoverStuckSegmentLoading:!1,enableMaintainNativeBufferSwitchMutexBypass:!1},dashCmafLive:{externalStopControl:!1,keepSilentStallWatchdogWhenNotActive:!1,maxActiveLiveOffset:1e4,normalizedTargetMinBufferSize:6e4,normalizedLiveMinBufferSize:5e3,normalizedActualBufferOffset:1e4,offsetCalculationError:3e3,maxLiveDuration:7200,catchupLiveForMutedInactiveTab:!0,lowLatency:{maxTargetOffset:3e3,maxTargetOffsetDeviation:250,playbackCatchupSpeedup:.05,isActiveOnDefault:!1,bufferEstimator:{emaAlpha:.45,changeThreshold:.05,deviationDepth:20,deviationFactor:.5,extremumInterval:5}}},live:{minBuffer:3e3,minBufferSegments:3,lowLatencyMinBuffer:1e3,lowLatencyMinBufferSegments:1,isLiveCatchUpMode:!1,lowLatencyActiveLiveDelay:3e3,activeLiveDelay:5e3,maxPausedTime:5e3,catchupLiveForMutedInactiveTab:!1,disableLiveSeekWithoutOffsetMarker:!1},downloadBackoff:{bufferThreshold:100,start:100,factor:2,max:3*1e3,random:.1},enableWakeLock:!0,enableTelemetryAtStart:!1,forceFormat:void 0,formatsToAvoid:[],disableChromecast:!1,chromecastReceiverId:`07A4434E`,chromecastPresentationApi:!1,useWebmBigRequest:!1,webmCodec:`vp9`,androidPreferredFormat:`dash`,iosPreferredFormat:`hls`,preferCMAF:!1,preferWebRTC:!1,preferMultiStream:!1,preferHDR:!1,bigRequestMinInitSize:50*1024,bigRequestMinDataSize:1*1024*1024,stripRangeHeader:!0,flushShortLoopedBuffers:!0,insufficientBufferRuleMargin:1e4,seekNearDurationBias:1,dashSeekInSegmentDurationThreshold:180*1e3,dashSeekInSegmentAlwaysSeekDelta:1e4,useDelayedPlaybackHangupWithData:!1,playbackHangupNoDataThreshold:5e3,hangupTimeoutMs:5e3,endGapTolerance:300,stallIgnoreThreshold:33,stallHandlingStrategy:`exclude-threshold`,stallIgnoreOnPause:!1,gapWatchdogInterval:50,requestQuick:!1,useHlsJs:!1,disableHlsOnDesktop:!1,useNativeHLSTextTracks:!1,useNewSwitchTo:!1,alwaysAbortPreviousSwitch:!1,useDashProviderVirtual:!1,useDashProviderVirtualMobile:!1,useDashLiveProviderVirtual:!1,useDashLiveProviderVirtualMobile:!1,useSafariEndlessRequestBugfix:!0,useAbortableGeneratorReturnOnAbort:!1,useSafariOptimisticPositionForLiveEdgeBugfix:!1,isAudioDisabled:!1,autoplayOnlyInActiveTab:!0,autoplayOnlyIfVisible:!0,dynamicImportTimeout:5e3,maxPlaybackTransitionInterval:2e4,providerErrorLimit:3,manifestRetryInterval:300,manifestRetryMaxInterval:1e4,manifestRetryMaxCount:10,audioVideoSyncRate:20,webrtc:{connectionRetryMaxNumber:3},useVolumeMultiplier:!1,ignoreAudioRendererError:!1,useEnableSubtitlesParam:!1,useHlsLiveNewTextManager:!1,exposeInternalsToGlobal:!1,hlsLiveNewTextManagerDownloadThreshold:4e3,disableYandexPiP:!1,asyncResolveClientChecker:!1,changePlaybackStateToPausedWhenEnded:!1,suppressExceptionsInObservables:!0,devNullLogEnabled:!1,collectingDecodingInfoEnabled:!1,sendDashLiveDebug:!1,logDashLiveDebug:!1,reuseOwnVideoElement:!1,handleExtendedNetworkErrorsSet:!1,useUrlCacheMechanism:!1,useDurationFromSegments:!0,dropUrlCacheWhenProviderCrashed:!1,ignoreForcePlayResultWhenProviderChanged:!1,hls:{filterOnDemandQualityList:!1},disableSubtitles:!1,audioOnly:!1,clearAudioElementOnDispose:!0,readyOnLoadedMetadata:!1},Ny=e=>Ay(e,My);var db=({seekState:e,position$:t})=>sb(e.stateChangeEnded$.pipe(cb(({to:e})=>e.state===`none`?void 0:(e.position??NaN)/1e3),lb(ub)),t.pipe(lb(()=>e.getState().state===`none`)));var pb=e=>{let t=typeof e.container==`string`?document.getElementById(e.container):e.container;return fb(t,`Wrong container or containerId {${e.container}}`),t};var gb=(e,t,n,r)=>{e!==void 0&&t.getState()===void 0&&t.getPrevState()===void 0&&n?.getValue().length===0?n.pipe(mb(e=>e.length>0),hb()).subscribe(n=>{n.find(r)&&t.startTransitionTo(e)}):(e===void 0||n?.getValue().find(r))&&t.startTransitionTo(e)};var Sb=()=>{let e=`mediaCapabilities`in xb().navigator?Cb:wb,t=_b(D(function*(){let t=yield Promise.all(vb(Tb).map(function(){var t=D(function*([t,n]){return{codec:t,supported:yield e(n)}});return function(e){return t.apply(this,arguments)}}())),n=[P.browser.current,...t.map(e=>JSON.stringify(e))].slice(0,16);return bb.push(`core`,{key:`videoplayer_decoding_info`,strings:n}),t}));return()=>yb(t)},Cb=function(){var e=D(function*(e){if(!e)return Promise.resolve({supported:!1});let t={[`channels`in e?`audio`:`video`]:e};return yield xb().navigator.mediaCapabilities.decodingInfo(E({type:`media-source`},t))});return function(t){return e.apply(this,arguments)}}(),wb=e=>{if(!e)return Promise.resolve({supported:!1});let t=xb().document,n=`channels`in e?t.createElement(`audio`):t.createElement(`video`);return Promise.resolve({supported:n.canPlayType(e?.contentType??``)===`probably`})},Tb={H264:{contentType:`video/mp4; codecs="avc1.4D400C"`,width:720,height:720,bitrate:2886,framerate:30},H265:{contentType:`video/mp4; codecs="hvc1.1.6.L123.B0"`,width:720,height:720,bitrate:2886,framerate:30},VP8:{contentType:`video/webm; codecs="vp8"`,width:720,height:720,bitrate:2886,framerate:30},VP9:{contentType:`video/webm; codecs="vp09.00.10.08"`,width:720,height:720,bitrate:2886,framerate:30},AV1:{contentType:`video/mp4; codecs="av01.0.01M.08"`,width:720,height:720,bitrate:2886,framerate:30},OPUS:{contentType:`audio/ogg; codecs="opus"`,channels:`2`,bitrate:128e3},AAC_LC:{contentType:`audio/mp4; codecs="mp4a.40.2"`,channels:`2`,bitrate:128e3},AC3:{contentType:`audio/mp4; codecs="ac-3"`,channels:`6`,bitrate:128e3},EAC3:{contentType:`audio/mp4; codecs="ec-3"`,channels:`6`,bitrate:128e3},AAC_HE_V1:{contentType:`audio/mp4; codecs="mp4a.40.5"`,channels:`2`,bitrate:128e3},AAC_HE_V2:{contentType:`audio/mp4; codecs="mp4a.40.29"`,channels:`2`,bitrate:128e3},AAC_xHE:{contentType:`audio/mp4; codecs="mp4a.40.42"`,channels:`2`,bitrate:128e3}},Eb={playbackState$:void 0,position$:0,duration$:1/0,playedTime$:0,muted$:!1,volume$:1,availableVideoStreams$:[],currentVideoStream$:void 0,availableVideoTracks$:[],availableQualities$:[],availableQualitiesFps$:{},currentQuality$:void 0,isAutoQualityEnabled$:!0,autoQualityLimitingAvailable$:!1,autoQualityLimits$:{},predefinedQualityLimitType$:`unknown`,availableAudioStreams$:[],currentAudioStream$:void 0,availableAudioTracks$:[],isAudioAvailable$:!0,currentPlaybackRate$:1,currentVideoBuffer$:{start:0,end:0},currentAudioBuffer$:{start:0,end:0},totalBufferDuration$:0,currentNativeVideoBuffer$:{start:0,end:0},currentNativeAudioBuffer$:{start:0,end:0},isBuffering$:!0,isStalled$:!1,stallStartTime$:0,isEnded$:!1,isLooped$:!1,isLive$:void 0,isLiveEnded$:null,canPlayLiveTailBuffer$:!1,canChangePlaybackSpeed$:void 0,atLiveEdge$:void 0,atLiveDurationEdge$:void 0,liveTime$:void 0,liveBufferTime$:void 0,liveLatency$:void 0,currentFormat$:void 0,availableTextTracks$:[],currentTextTrack$:void 0,throughputEstimation$:void 0,rttEstimation$:void 0,videoBitrate$:void 0,hostname$:void 0,httpConnectionType$:void 0,httpConnectionReused$:void 0,httpConnectionMetrics$:void 0,httpDownloadMetrics$:void 0,surface$:`none`,chromecastState$:`NOT_AVAILABLE`,chromecastDeviceName$:void 0,intrinsicVideoSize$:void 0,availableSources$:void 0,currentVideoSegmentLength$:0,currentAudioSegmentLength$:0,debugData$:{volume:0,muted:!1}},Db={audioStream:void 0,autoVideoTrackLimits:{},autoVideoTrackSwitching:!0,currentTextTrack:void 0,externalTextTracks:[],internalTextTracks:[],isLooped:!1,isLowLatency:!1,playbackRate:1,playbackState:`stopped`,seekState:{state:`none`},textTrackCuesSettings:{},videoTrack:void 0,videoStream:void 0,volume:{volume:1,muted:!1}};class Ob{constructor(e={},t=ib.createRootTracer(`fake`),n){this.subscription=new tb,this.persistentSubscription=new tb,this.domContainer=null,this.providerContainer=void 0,this.chromecastInitializer=void 0,this.logger=new Yy,this.tracer=void 0,this.abrLogger=this.logger.createComponentLog(`ABR`),this.config=void 0,this.tuning=void 0,this.throughputEstimator=void 0,this.internalsExposure=null,this.isPlaybackStarted=!1,this.suppressWillStop=!1,this.initedAt=void 0,this.hasLiveOffsetByPaused=new ab(!1),this.hasLiveOffsetByPausedTimer=0,this.playerInitRequest=0,this.playerInited=new ab(!1),this.explicitInitialQuality=void 0,this.wasSetStartedQuality=!1,this.desiredState=le(Db).reduce((e,[t,n])=>(e[t]=new yn(n),e),{}),this.info=le(Eb).reduce((e,[t,n])=>(e[t]=new ab(n),e),{}),this.events={inited$:new $,ready$:new $,started$:new $,playing$:new $,paused$:new $,stopped$:new $,willReady$:new $,willStart$:new $,willResume$:new $,willPause$:new $,willStop$:new $,willDestruct$:new $,watchCoverageRecord$:new $,watchCoverageLive$:new $,managedError$:new $,fatalError$:new $,fetcherRecoverableError$:new $,ended$:new $,looped$:new $,seeked$:new $,willSeek$:new $,autoplaySoundProhibited$:new $,manifestRequested$:new $,firstBytesManifest$:new $,manifestReceived$:new $,firstBytesRequested$:new $,firstBytesReceived$:new $,firstBytes$:new $,loadedMetadata$:new $,firstFrame$:new $,canplay$:new $,log$:new $,fetcherError$:new $,severeStallOccured$:new $},this.experimental={element$:new ab(void 0),enableDebugTelemetry$:new ab(!1),dumpTelemetry:yp,getCurrentTime$:new ab(null),skipVideoElVolumeSync$:new ab(!1)},this.devNullLog=void 0,this.collectDecodingInfoDestroyCb=void 0,this.hasReleasedTimers=!1,this.doInit=e=>{let{container:t}=e,n=O(e,T);this.tracer.log(`initVideo`,Ry(n),!0),this.domContainer=pb(e),this.chromecastInitializer.contentId=e.meta?.videoId,this.providerContainer=new ly({sources:e.sources,meta:e.meta??{},failoverHosts:e.failoverHosts??[],container:this.domContainer,desiredState:this.desiredState,dependencies:{throughputEstimator:this.throughputEstimator,chromecastInitializer:this.chromecastInitializer,tracer:this.tracer,logger:this.logger,abrLogger:this.abrLogger},tuning:this.tuning,volumeMultiplier:e.volumeMultiplier,panelSize:e.panelSize,skipVideoElVolumeSync$:this.experimental.skipVideoElVolumeSync$,handleNetworkRecoverableErrorAsProviderError:e.handleNetworkRecoverableErrorAsProviderError}),this.initProviderContainerSubscription(this.providerContainer),this.initStartingVideoTrack(this.providerContainer),this.providerContainer.init(),this.setLiveLowLatency(this.tuning.dashCmafLive.lowLatency.isActiveOnDefault),this.initDebugTelemetry(),this.initWakeLock(),this.playerInited.next(!0),this.devNullLog&&this.tuning.devNullLogEnabled?(Iy.subscribe(`core`,this.devNullLog),this.tuning.collectingDecodingInfoEnabled&&(this.collectDecodingInfoDestroyCb=Sb())):Iy.destroy(`core`)},this.initLogs(),this.tuning=Ny(e),this.tracer=t,eb(this.tuning.useWorkerTimers),this.tuning.suppressExceptionsInObservables&&(ue(this.info).forEach(e=>e.setSuppressErrors(!0)),ue(this.events).forEach(e=>e.setSuppressErrors(!0)));let r={receiverApplicationId:this.tuning.chromecastReceiverId,isDisabled:this.tuning.disableChromecast,dependencies:{logger:this.logger}};if(this.chromecastInitializer=this.tuning.chromecastPresentationApi?new un(r):new De(r),this.throughputEstimator=new ky(this.tuning.throughputEstimator),e.exposeInternalsToGlobal&&(this.internalsExposure=new Wy(`core`,By(n?.playerId)),this.internalsExposure.expose({player:this,getTimersDiagnostics:Vy})),this.initChromecastSubscription(),this.initDesiredStateSubscriptions(),this.initDebugDataSubscriptions(),this.devNullLog=n?.onDevNullLog,Iy.create(`core`),Proxy&&Reflect)return new Proxy(this,{get:(e,t,n)=>{let r=Reflect.get(e,t,n);return typeof r==`function`?(...n)=>{try{return r.apply(e,n)}catch(e){let r=n.map(e=>JSON.stringify(e,(e,t)=>{let n=typeof t;return de([`number`,`string`,`boolean`],n)?t:t===null?null:`<${n}>`})),i=`Player.${String(t)}`,a=`Exception calling ${i} (${r.join(`, `)})`;throw this.events.fatalError$.next({id:i,category:Ly.WTF,message:a,thrown:e}),e}}:r}})}resetDesiredState(){let e=(e,t)=>{e.setState(t)};Object.keys(this.desiredState).forEach(t=>{e(this.desiredState[t],Db[t])})}reset(){this.subscription.unsubscribe(),this.providerContainer?.destroy(),this.providerContainer=void 0,M.clearTimeout(this.hasLiveOffsetByPausedTimer),this.collectDecodingInfoDestroyCb?.call(this),this.playerInited.next(!1),this.resetDesiredState();let e=(e,t)=>{e.next(t)},t=[`muted$`,`volume$`];Object.keys(this.info).forEach(n=>{de(t,n)?e(this.info[n],this.info[n].getValue()):e(this.info[n],Eb[n])})}initAudio(e){return this.initVideo(E(E({},e),{},{container:e.audioElement??document.createElement(`audio`)}))}initVideo(e){let t=Uy();this.config=e,this.internalsExposure?.expose({config:e,logger:this.logger,tuning:this.tuning}),this.setMuted(e.isMuted??this.tuning.isAudioDisabled);let n=()=>{this.tuning.autoplayOnlyIfVisible&&t.requestAnimationFrame?this.playerInitRequest=t.requestAnimationFrame(()=>this.doInit(e)):this.doInit(e)},r=()=>{this.tuning.asyncResolveClientChecker?P.isInited$.pipe(Y(e=>!!e),Q()).subscribe(()=>{console.log(`Core SDK async start`),n()}):n()};return this.isNotActiveTabCase()?(this.tracer.log(`request play from hidden tab`),zy(t.document,`visibilitychange`).pipe(Q()).subscribe(r)):r(),this}destroy(e){let t=Uy();this.tracer.log(`destroy`),M.clearTimeout(this.hasLiveOffsetByPausedTimer),this.playerInitRequest&&t.cancelAnimationFrame(this.playerInitRequest),this.events.willDestruct$.next(),this.suppressWillStop=e?.reportStop===!1,this.stop(),this.providerContainer?.destroy(),this.throughputEstimator.destroy(),this.chromecastInitializer.destroy(),this.subscription.unsubscribe(),this.persistentSubscription.unsubscribe(),this.tracer.end(),this.internalsExposure?.destroy(),Iy.destroy(`core`),this.collectDecodingInfoDestroyCb?.call(this),this.hasReleasedTimers||(this.hasReleasedTimers=!0,$y())}waitInit(e){this.playerInited.getValue()?e():this.subscription.add(this.playerInited.pipe(Y(e=>!!e),Q()).subscribe(e))}prepare(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`prepare`,{currentPlayBackState:e.getState()}),e.getState()===`stopped`&&e.startTransitionTo(`ready`)}),this}play(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`play`,{currentPlayBackState:e.getState()}),e.getState()!==`playing`&&e.startTransitionTo(`playing`)}),this}pause(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`pause`,{currentPlayBackState:e.getState()}),e.getState()!==`paused`&&e.startTransitionTo(`paused`)}),this}stop(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`stop`,{currentPlayBackState:e.getState()}),e.getState()!==`stopped`&&(e.startTransitionTo(`stopped`),this.tuning.allowPlayerReuse&&this.reset())}),this}seekTime(e,t=!0){return this.waitInit(()=>{let n=this.info.duration$.getValue(),r=this.info.isLive$.getValue(),i=e;e>=n&&!r&&(i=n-this.tuning.seekNearDurationBias),i<0&&!r&&(i=0),this.tracer.log(`seekTime`,{duration:n,isLive:r,time:e,calculatedTime:i,forcePrecise:t}),Number.isFinite(i)&&(this.events.willSeek$.next({from:this.getExactTime(),to:i}),this.desiredState.seekState.setState({state:`requested`,position:i*1e3,forcePrecise:t}))}),this}seekPercent(e){return this.waitInit(()=>{let t=this.info.duration$.getValue();this.tracer.log(`seekPercent`,{percent:e,duration:t}),isFinite(t)&&this.seekTime(Math.abs(t)*e,!1)}),this}setVolume(e,t,n=!1){return this.waitInit(()=>{this.experimental.skipVideoElVolumeSync$.next(n);let r=this.desiredState.volume,i=r.getTransition()?.to.muted??this.info.muted$.getValue(),a=t??(this.tuning.isAudioDisabled||i);this.tracer.log(`setVolume`,{volume:e,isAudioDisabled:this.tuning.isAudioDisabled,chromecastState:this.chromecastInitializer.castState$.getValue(),muted:a}),this.chromecastInitializer.castState$.getValue()===`CONNECTED`&&!(this.chromecastInitializer instanceof un)?this.chromecastInitializer.setVolume(e):r.startTransitionTo({volume:e,muted:a})}),this}setMuted(e,t=!1,n=!1){return this.waitInit(()=>{this.experimental.skipVideoElVolumeSync$.next(n);let r=this.desiredState.volume,i=this.tuning.isAudioDisabled&&!t||e,a=r.getTransition()?.to.volume??this.info.volume$.getValue();this.tracer.log(`setMuted`,{isMuted:e,nextMuted:i,volume:a,isAudioDisabled:this.tuning.isAudioDisabled,chromecastState:this.chromecastInitializer.castState$.getValue()}),this.chromecastInitializer.castState$.getValue()===`CONNECTED`&&!(this.chromecastInitializer instanceof un)?this.chromecastInitializer.setMuted(i):r.startTransitionTo({volume:a,muted:i})}),this}setVideoStream(e){return this.waitInit(()=>{this.desiredState.videoStream.startTransitionTo(e)}),this}setAudioStream(e){return this.waitInit(()=>{this.desiredState.audioStream.startTransitionTo(e)}),this}setQuality(e){return this.waitInit(()=>{Py(this.providerContainer);let t=this.providerContainer.providerOutput.availableVideoTracks$.getValue();this.tracer.log(`setQuality`,{isDelayed:t.length===0,quality:e}),this.desiredState.videoTrack.getState()===void 0&&this.desiredState.videoTrack.getPrevState()===void 0&&t.length===0?this.wasSetStartedQuality?this.providerContainer.providerOutput.availableVideoTracks$.pipe(Y(e=>e.length>0),Q()).subscribe(t=>{this.setVideoTrackIdByQuality(t,e)}):this.explicitInitialQuality=e:t.length>0&&this.setVideoTrackIdByQuality(t,e)}),this}setAutoQuality(e){return this.waitInit(()=>{this.tracer.log(`setAutoQuality`,{enable:e}),this.desiredState.autoVideoTrackSwitching.startTransitionTo(e)}),this}setAutoQualityLimits(e){return this.waitInit(()=>{this.tracer.log(`setAutoQualityLimits`,Ry(e)),this.desiredState.autoVideoTrackLimits.startTransitionTo(e)}),this}setPredefinedQualityLimits(e){return this.waitInit(()=>{if(this.info.predefinedQualityLimitType$.getValue()===e)return this;let{highQualityLimit:t,trafficSavingLimit:n}=this.tuning.autoTrackSelection,r;switch(e){case`high_quality`:r={min:t,max:void 0};break;case`traffic_saving`:r={max:n,min:void 0};break;default:r={max:void 0,min:void 0}}this.setAutoQualityLimits(r)}),this}setPlaybackRate(e){return this.waitInit(()=>{this.tracer.log(`setPlaybackRate`,{playbackRate:e}),this.desiredState.playbackRate.startTransitionTo(e)}),this}setExternalTextTracks(e){return this.waitInit(()=>{e.length&&this.tracer.log(`setExternalTextTracks`,Ry(e)),this.desiredState.externalTextTracks.startTransitionTo(e.map(e=>E({type:`external`},e)))}),this}selectTextTrack(e){return this.waitInit(()=>{gb(e,this.desiredState.currentTextTrack,this.providerContainer?.providerOutput.availableTextTracks$,t=>t.id===e),this.tracer.log(`selectTextTrack`,{textTrackId:e})}),this}setTextTrackCueSettings(e){return this.waitInit(()=>{this.tracer.log(`setTextTrackCueSettings`,E({},e)),this.desiredState.textTrackCuesSettings.startTransitionTo(e)}),this}setLiveLowLatency(e){let t=this.info.isLive$.getValue(),n=this.desiredState.isLowLatency.getState();return!t||n===e?this:(this.tracer.log(`live switch to low latency `+e),this.desiredState.isLowLatency.setState(e),this.seekTime(0))}setLooped(e){return this.waitInit(()=>{this.tracer.log(`setLooped`,{isLooped:e}),this.desiredState.isLooped.startTransitionTo(e)}),this}toggleChromecast(){this.tracer.log(`toggleChromecast`),this.chromecastInitializer.toggleConnection()}getExactTime(){if(!this.providerContainer)return 0;let e=this.providerContainer.providerOutput.element$.getValue();if(Jy(e))return this.info.position$.getValue();let t=this.desiredState.seekState.getState(),n=t.state===`none`?void 0:t.position;return qy(n)?n/1e3:e.currentTime}getExactLiveTime(){if(!this.providerContainer)return 0;let e=this.desiredState.seekState.getState(),t=e.state===`none`?void 0:e.position;return(qy(t)?t:this.info.liveTime$.getValue()??0)/1e3}getAllLogs(){return this.logger.getAllLogs()}getDebugData(){return this.info.debugData$.getValue()}buildDebugData([e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v]){let y={version:te,volume:Math.round(_*100),muted:v,provider:e,cdn:t,videoSize:n?`${n.width}x${n.height}`:void 0,speed:l,bitrate:u,liveLatency:d,currentVideoSegmentLength:f,currentAudioSegmentLength:p,videoCodec:m?.codec,audioCodec:h?.codec,hdr:m?.hdr,audioLanguage:h?.language,position:g};return r&&a&&(s&&c?(y.videoBuffer=r.end-c,y.nativeVideoBuffer=a.end-c):(y.videoBuffer=Math.max(r.end-g,0),y.nativeVideoBuffer=Math.max(a.end-g,0))),i&&(y.audioBuffer=Math.max(i.end-g,0),o&&(y.nativeAudioBuffer=Math.max(o.end-g,0))),y}setIntrinsicVideoSize(...e){let t={width:e.reduce((e,{width:t})=>e||t||0,0),height:e.reduce((e,{height:t})=>e||t||0,0)};t.width&&t.height&&this.info.intrinsicVideoSize$.next({width:t.width,height:t.height})}initDebugDataSubscriptions(){this.subscription.add(ob([this.info.currentFormat$,this.info.hostname$,this.info.intrinsicVideoSize$,this.info.currentVideoBuffer$,this.info.currentAudioBuffer$,this.info.currentNativeVideoBuffer$,this.info.currentNativeAudioBuffer$,this.info.isLive$,this.info.liveBufferTime$,this.info.throughputEstimation$,this.info.videoBitrate$,this.info.liveLatency$,this.info.currentVideoSegmentLength$,this.info.currentAudioSegmentLength$,this.info.currentVideoStream$,this.info.currentAudioStream$,this.info.position$,this.info.volume$,this.info.muted$]).pipe(Z(e=>this.buildDebugData(e))).subscribe(this.info.debugData$))}initDesiredStateSubscriptions(){this.persistentSubscription.add(Zy(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(Z(e=>e.to)).subscribe(this.info.playbackState$)).add(this.desiredState.isLooped.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(this.info.isLooped$)).add(this.desiredState.playbackRate.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(this.info.currentPlaybackRate$)).add(this.desiredState.autoVideoTrackSwitching.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(this.info.isAutoQualityEnabled$)).add(this.desiredState.autoVideoTrackLimits.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(e=>{this.info.autoQualityLimits$.next(e);let{highQualityLimit:t,trafficSavingLimit:n}=this.tuning.autoTrackSelection;this.info.predefinedQualityLimitType$.next(pa(e,t,n))})).add(Zy(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(Y(({from:e})=>e===`stopped`)).subscribe(()=>{this.initedAt=Qy(),this.events.inited$.next()})).add(this.desiredState.playbackState.stateChangeEnded$.subscribe(e=>{switch(e.to){case`ready`:this.events.ready$.next();break;case`playing`:this.isPlaybackStarted||this.events.started$.next(),this.isPlaybackStarted=!0,this.events.playing$.next();break;case`paused`:this.events.paused$.next();break;case`stopped`:this.events.stopped$.next()}})).add(this.desiredState.playbackState.stateChangeStarted$.subscribe(e=>{switch(e.to){case`ready`:this.events.willReady$.next();break;case`paused`:this.events.willPause$.next();break;case`playing`:this.isPlaybackStarted?this.events.willResume$.next():this.events.willStart$.next();break;case`stopped`:this.suppressWillStop||this.events.willStop$.next();break;default:}}))}initProviderContainerSubscription(e){this.subscription.add(e.providerOutput.willSeekEvent$.subscribe(()=>{let e=this.desiredState.seekState.getState();this.tracer.log(`willSeekEvent`,Ry(e)),e.state===`requested`?this.desiredState.seekState.setState(E(E({},e),{},{state:`applying`})):this.events.managedError$.next({id:`WillSeekIn${e.state}`,category:Ly.WTF,message:`Received unexpeceted willSeek$`})})).add(e.providerOutput.soundProhibitedEvent$.pipe(Q()).subscribe(this.events.autoplaySoundProhibited$)).add(e.providerOutput.severeStallOccurred$.subscribe(this.events.severeStallOccured$)).add(e.providerOutput.seekedEvent$.subscribe(()=>{let e=this.desiredState.seekState.getState();this.tracer.log(`seekedEvent`,Ry(e)),e.state===`applying`&&(this.desiredState.seekState.setState({state:`none`}),this.events.seeked$.next())})).add(e.current$.pipe(Z(e=>e.type)).subscribe(this.info.currentFormat$)).add(e.current$.pipe(Z(e=>e.destination),X()).subscribe(()=>this.isPlaybackStarted=!1)).add(e.providerOutput.availableVideoStreams$.subscribe(this.info.availableVideoStreams$)).add(e.providerOutput.availableVideoTracks$.subscribe(this.info.availableVideoTracks$)).add(Fy({availableVideoTracks:e.providerOutput.availableVideoTracks$,currentVideoStream:e.providerOutput.currentVideoStream$}).pipe(Z(({availableVideoTracks:e,currentVideoStream:t})=>e.filter(e=>t?t.id===e.streamId:!0).map(({quality:e})=>e).sort((e,t)=>Ky(e)?1:Ky(t)?-1:Gy(t,e)?1:-1))).subscribe(this.info.availableQualities$)).add(e.providerOutput.availableVideoTracks$.subscribe(e=>{let t={};for(let n of e)n.fps&&(t[n.quality]=n.fps);this.info.availableQualitiesFps$.next(t)})).add(e.providerOutput.availableAudioStreams$.subscribe(this.info.availableAudioStreams$)).add(e.providerOutput.currentVideoStream$.subscribe(this.info.currentVideoStream$)).add(e.providerOutput.currentAudioStream$.subscribe(this.info.currentAudioStream$)).add(e.providerOutput.availableAudioTracks$.subscribe(this.info.availableAudioTracks$)).add(e.providerOutput.isAudioAvailable$.pipe(X()).subscribe(this.info.isAudioAvailable$)).add(e.providerOutput.currentVideoTrack$.pipe(Y(e=>qy(e))).subscribe(e=>{this.info.currentQuality$.next(e?.quality),this.info.videoBitrate$.next(e?.bitrate)})).add(e.providerOutput.currentVideoSegmentLength$.pipe(X((e,t)=>Math.round(e)===Math.round(t))).subscribe(this.info.currentVideoSegmentLength$)).add(e.providerOutput.currentAudioSegmentLength$.pipe(X((e,t)=>Math.round(e)===Math.round(t))).subscribe(this.info.currentAudioSegmentLength$)).add(e.providerOutput.hostname$.pipe(X()).subscribe(this.info.hostname$)).add(e.providerOutput.httpConnectionType$.pipe(X()).subscribe(this.info.httpConnectionType$)).add(e.providerOutput.httpConnectionReused$.pipe(X()).subscribe(this.info.httpConnectionReused$)).add(e.providerOutput.httpConnectionMetrics$.pipe(X()).subscribe(this.info.httpConnectionMetrics$)).add(e.providerOutput.httpDownloadMetrics$.pipe(X()).subscribe(this.info.httpDownloadMetrics$)).add(e.providerOutput.currentTextTrack$.subscribe(this.info.currentTextTrack$)).add(e.providerOutput.availableTextTracks$.subscribe(this.info.availableTextTracks$)).add(e.providerOutput.autoVideoTrackLimitingAvailable$.subscribe(this.info.autoQualityLimitingAvailable$)).add(e.providerOutput.autoVideoTrackLimits$.subscribe(e=>{this.desiredState.autoVideoTrackLimits.setState(e??{})})).add(e.providerOutput.currentVideoBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentVideoBuffer$)).add(e.providerOutput.currentAudioBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentAudioBuffer$)).add(e.providerOutput.currentNativeVideoBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentNativeVideoBuffer$)).add(e.providerOutput.currentNativeAudioBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentNativeAudioBuffer$)).add(e.providerOutput.totalBufferDuration$.subscribe(this.info.totalBufferDuration$)).add(e.providerOutput.duration$.subscribe(this.info.duration$)).add(e.providerOutput.playedTime$.subscribe(this.info.playedTime$)).add(e.providerOutput.isBuffering$.subscribe(this.info.isBuffering$)).add(e.providerOutput.isLive$.subscribe(this.info.isLive$)).add(e.providerOutput.isLiveEnded$.pipe(nb(e=>e&&this.stop())).subscribe(this.info.isLiveEnded$)).add(e.providerOutput.canPlayLiveTailBuffer$.subscribe(this.info.canPlayLiveTailBuffer$)).add(e.providerOutput.canChangePlaybackSpeed$.subscribe(this.info.canChangePlaybackSpeed$)).add(e.providerOutput.liveTime$.pipe(X()).subscribe(this.info.liveTime$)).add(e.providerOutput.liveBufferTime$.subscribe(this.info.liveBufferTime$)).add(e.providerOutput.liveLatency$.subscribe(this.info.liveLatency$)).add(Fy({hasLiveOffsetByPaused:Zy(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(Z(e=>e.to),X(),Z(e=>e===`paused`)),isLowLatency:e.providerOutput.isLowLatency$}).subscribe(({hasLiveOffsetByPaused:e,isLowLatency:t})=>{if(M.clearTimeout(this.hasLiveOffsetByPausedTimer),e){this.hasLiveOffsetByPausedTimer=M.setTimeout(()=>{this.hasLiveOffsetByPaused.next(!0)},this.getActiveLiveDelay(t));return}this.hasLiveOffsetByPaused.next(!1)})).add(Fy({atLiveEdge:Fy({isLive:e.providerOutput.isLive$,isLowLatency:e.providerOutput.isLowLatency$,position:db({seekState:this.desiredState.seekState,position$:e.providerOutput.position$})}).pipe(Z(({isLive:e,position:t,isLowLatency:n})=>{let r=this.getActiveLiveDelay(n);return e&&Math.abs(t)<r/1e3}),X(),nb(e=>e&&this.setPlaybackRate(1))),hasPausedTimeoutCase:this.hasLiveOffsetByPaused}).pipe(Z(({atLiveEdge:e,hasPausedTimeoutCase:t})=>e&&!t)).subscribe(this.info.atLiveEdge$)).add(Fy({isLive:e.providerOutput.isLive$,position:P.browser.isSafari&&this.tuning.useSafariOptimisticPositionForLiveEdgeBugfix?db({seekState:this.desiredState.seekState,position$:e.providerOutput.position$}):e.providerOutput.position$,duration:e.providerOutput.duration$}).pipe(Z(({isLive:e,position:t,duration:n})=>e&&(Math.abs(n)-Math.abs(t))*1e3<this.tuning.live.activeLiveDelay),X(),nb(e=>e&&this.setPlaybackRate(1))).subscribe(this.info.atLiveDurationEdge$)).add(e.providerOutput.volume$.pipe(Z(e=>e.muted),X()).subscribe(this.info.muted$)).add(e.providerOutput.volume$.pipe(Z(e=>e.volume),X()).subscribe(this.info.volume$)).add(db({seekState:this.desiredState.seekState,position$:e.providerOutput.position$}).subscribe(this.info.position$)).add(e.providerOutput.seekedEvent$.subscribe(()=>{this.info.isEnded$.getValue()&&this.tuning.changePlaybackStateToPausedWhenEnded&&this.play()})).add(Zy(e.providerOutput.endedEvent$.pipe(Xy(!0)),e.providerOutput.seekedEvent$.pipe(Xy(!1))).pipe(X()).subscribe(this.info.isEnded$)).add(e.providerOutput.endedEvent$.subscribe(this.events.ended$)).add(e.providerOutput.loopedEvent$.subscribe(this.events.looped$)).add(e.providerError$.subscribe(this.events.managedError$)).add(e.providerOutput.updateDurationError$.subscribe(this.events.managedError$)).add(e.providerOutput.fetcherRecoverableError$.subscribe(this.events.fetcherRecoverableError$)).add(e.providerOutput.fetcherError$.pipe(Y(e=>e.category===Ly.FATAL)).subscribe(this.events.fatalError$)).add(e.volumeMultiplierError$.subscribe(this.events.managedError$)).add(e.noAvailableProvidersError$.pipe(Z(({forced:e,input:t,supported:n})=>{let r,i;return e?(r=`NoForcedFormat`,i=`${e} was forced but failed or not available`):n.length?(r=`NoFormats`,i=`All formats failed`):t.length?(r=`NoSupportedFormats`,i=`No supported formats`):(r=`NoInputFormats`,i=`No formats supplied`),Py(r),{id:r,category:Ly.VIDEO_PIPELINE,message:i}})).subscribe(this.events.fatalError$)).add(e.providerOutput.element$.subscribe(this.experimental.element$)).add(e.providerOutput.getCurrentTime$.subscribe(this.experimental.getCurrentTime$)).add(e.providerOutput.manifestRequested$.pipe(Q()).subscribe(this.events.manifestRequested$)).add(e.providerOutput.firstBytesManifest$.pipe(Q()).subscribe(this.events.firstBytesManifest$)).add(e.providerOutput.manifestReceived$.pipe(Q()).subscribe(this.events.manifestReceived$)).add(e.providerOutput.firstBytesRequested$.pipe(Q()).subscribe(this.events.firstBytesRequested$)).add(e.providerOutput.firstBytesReceived$.pipe(Q()).subscribe(this.events.firstBytesReceived$)).add(e.providerOutput.firstBytesEvent$.pipe(Q(),Z(e=>e??Qy()-this.initedAt)).subscribe(this.events.firstBytes$)).add(e.providerOutput.loadedMetadataEvent$.subscribe(this.events.loadedMetadata$)).add(e.providerOutput.firstFrameEvent$.pipe(Q(),Z(()=>Qy()-this.initedAt)).subscribe(this.events.firstFrame$)).add(e.providerOutput.canplay$.pipe(Q(),Z(()=>Qy()-this.initedAt)).subscribe(this.events.canplay$)).add(this.throughputEstimator.throughput$.subscribe(this.info.throughputEstimation$)).add(this.throughputEstimator.rtt$.subscribe(this.info.rttEstimation$)).add(e.providerOutput.availableSources$.subscribe(this.info.availableSources$));let t=new ab(!1);this.subscription.add(e.providerOutput.seekedEvent$.subscribe(()=>t.next(!1))).add(e.providerOutput.willSeekEvent$.subscribe(()=>t.next(!0)));let n=new ab(!0),r=new tb;this.subscription.add(r).add(e.current$.subscribe(()=>{n.next(!0),r.unsubscribe(),r.add(this.desiredState.playbackState.stateChangeEnded$.pipe(Y(({to:e})=>e===`playing`),Q()).subscribe(()=>n.next(!1)))}));let i=new ab(!1);this.subscription.add(this.desiredState.playbackState.stateChangeEnded$.subscribe(({to:e})=>i.next(e===`paused`)));let a=0,o=0,s=Zy(e.providerOutput.isBuffering$,t,n,i).pipe(Z(()=>{let r=e.providerOutput.isBuffering$.getValue(),a=t.getValue()||n.getValue()||this.tuning.stallIgnoreOnPause&&i.getValue();return r&&!a}),X());this.subscription.add(s.subscribe(e=>{let{stallIgnoreThreshold:t,stallHandlingStrategy:n}=this.tuning;e?(o=Qy(),n===`verbose`&&this.info.stallStartTime$.next(o),a=M.setTimeout(()=>{this.info.isStalled$.next(!0),o&&this.info.stallStartTime$.next(n===`exclude-threshold`?Qy():o)},t)):(M.clearTimeout(a),this.info.isStalled$.next(!1),o=0,this.info.stallStartTime$.next(0))})),this.subscription.add(Zy(e.providerOutput.canplay$,e.providerOutput.firstFrameEvent$,e.providerOutput.firstBytesEvent$).subscribe(()=>{let t=e.providerOutput.element$.getValue();this.setIntrinsicVideoSize({width:t?.videoWidth,height:t?.videoHeight})})).add(e.providerOutput.currentVideoTrack$.subscribe(t=>{var n,r;let i=e.providerOutput.element$.getValue();this.setIntrinsicVideoSize({width:t==null||(n=t.size)==null?void 0:n.width,height:t==null||(r=t.size)==null?void 0:r.height},{width:i?.videoWidth,height:i?.videoHeight})})),this.subscription.add(Zy(e.providerOutput.inPiP$,e.providerOutput.inFullscreen$,e.providerOutput.element$,e.providerOutput.elementVisible$,this.chromecastInitializer.castState$).subscribe(()=>{let t=e.providerOutput.inPiP$.getValue(),n=e.providerOutput.inFullscreen$.getValue(),r=e.providerOutput.element$.getValue(),i=e.providerOutput.elementVisible$.getValue(),a=this.chromecastInitializer.castState$.getValue(),o;o=a===`CONNECTED`?`second_screen`:r?i?t?`pip`:n?`fullscreen`:`inline`:`invisible`:`none`,this.info.surface$.getValue()!==o&&this.info.surface$.next(o)}))}initChromecastSubscription(){this.subscription.add(this.chromecastInitializer.castState$.subscribe(this.info.chromecastState$)),this.subscription.add(this.chromecastInitializer.connection$.pipe(Z(e=>e?.castDevice.friendlyName)).subscribe(this.info.chromecastDeviceName$)),this.subscription.add(this.chromecastInitializer.errorEvent$.subscribe(this.events.managedError$))}initStartingVideoTrack(e){let t=new tb;this.subscription.add(t),this.subscription.add(e.current$.pipe(X((e,t)=>e.provider===t.provider)).subscribe(()=>{t.unsubscribe(),t.add(e.providerOutput.availableVideoTracks$.pipe(Y(e=>e.length>0),Q()).subscribe(e=>{this.setStartingVideoTrack(e)}))}))}setStartingVideoTrack(e){let t;this.wasSetStartedQuality=!0;let n=this.explicitInitialQuality??this.info.currentQuality$.getValue();n&&(t=e.find(({quality:e,tvDisabled:t})=>e===n&&!t),t||this.setAutoQuality(!0)),!t&&(t=za({videoTracks:e,tuning:this.tuning,abrLogger:this.abrLogger,tracer:this.tracer,container:this.domContainer?.getBoundingClientRect()??null,panelSize:this.config.panelSize??null,estimatedThroughput:this.throughputEstimator.throughput$.getValue(),limits:this.desiredState.autoVideoTrackLimits.getState(),playbackRate:this.info.currentPlaybackRate$.getValue(),forwardBufferHealth:0})),this.desiredState.videoTrack.startTransitionTo(t),this.info.currentQuality$.next(t.quality),this.info.videoBitrate$.next(t.bitrate)}initLogs(){this.persistentSubscription.add(Zy(this.desiredState.videoTrack.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`quality`,type:`start`}))),this.desiredState.videoTrack.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`quality`,type:`end`}))),this.desiredState.autoVideoTrackSwitching.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`autoQualityEnabled`,type:`start`}))),this.desiredState.autoVideoTrackSwitching.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`autoQualityEnabled`,type:`end`}))),this.desiredState.seekState.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`seekState`,type:`start`}))),this.desiredState.seekState.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`seekState`,type:`end`}))),this.desiredState.playbackState.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`playbackState`,type:`start`}))),this.desiredState.playbackState.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`playbackState`,type:`end`})))).pipe(Z(e=>({component:`desiredState`,message:`[${e.entity} change] ${e.type}: ${JSON.stringify(e.transition)}`}))).subscribe(this.logger.log)),this.persistentSubscription.add(this.logger.log$.subscribe(this.events.log$))}initDebugTelemetry(){let e=this.providerContainer?.providerOutput;Py(this.providerContainer),Py(e),vp(),this.experimental.enableDebugTelemetry$.next(this.tuning.enableTelemetryAtStart),[this.experimental.enableDebugTelemetry$.subscribe(e=>_p(e)),this.providerContainer.current$.subscribe(({type:e})=>bp(`provider`,e)),e.duration$.subscribe(e=>bp(`duration`,e)),e.availableVideoTracks$.pipe(Y(e=>!!e.length),Q()).subscribe(e=>bp(`tracks`,e)),this.events.fatalError$.subscribe(new xp(`fatalError`)),this.events.managedError$.subscribe(new xp(`managedError`)),e.position$.subscribe(new xp(`position`)),e.currentVideoTrack$.pipe(Z(e=>e?.quality)).subscribe(new xp(`quality`)),this.info.currentVideoBuffer$.subscribe(new xp(`buffer`)),e.isBuffering$.subscribe(new xp(`isBuffering`))].forEach(e=>this.subscription.add(e)),bp(`codecs`,P.video.supportedCodecs)}initTracerSubscription(){let e=Hy(this.tracer.log.bind(this.tracer)),t=Hy(this.tracer.error.bind(this.tracer));this.subscription.add(this.info.playbackState$.subscribe(e(`playbackState`))).add(this.info.isLooped$.subscribe(e(`isLooped`))).add(this.info.currentPlaybackRate$.pipe(X()).subscribe(e(`currentPlaybackRate`))).add(this.info.isAutoQualityEnabled$.subscribe(e(`isAutoQualityEnabled`))).add(this.info.autoQualityLimits$.subscribe(e(`autoQualityLimits`))).add(this.info.currentFormat$.subscribe(e(`currentFormat`))).add(this.info.availableQualities$.subscribe(e(`availableQualities`))).add(this.info.availableQualitiesFps$.subscribe(e(`availableQualitiesFps`))).add(this.info.availableAudioTracks$.subscribe(e(`availableAudioTracks`))).add(this.info.isAudioAvailable$.subscribe(e(`isAudioAvailable`))).add(Fy({currentQuality:this.info.currentQuality$,videoBitrate:this.info.videoBitrate$}).pipe(Y(({currentQuality:e,videoBitrate:t})=>!!e&&!!t),X((e,t)=>e.currentQuality===t.currentQuality)).subscribe(e(`currentVideoTrack`))).add(this.info.currentVideoSegmentLength$.pipe(Y(e=>e>0),X()).subscribe(e(`currentVideoSegmentLength`))).add(this.info.currentAudioSegmentLength$.pipe(Y(e=>e>0),X()).subscribe(e(`currentAudioSegmentLength`))).add(this.info.hostname$.subscribe(e(`hostname`))).add(this.info.currentTextTrack$.subscribe(e(`currentTextTrack`))).add(this.info.availableTextTracks$.subscribe(e(`availableTextTracks`))).add(this.info.autoQualityLimitingAvailable$.subscribe(e(`autoQualityLimitingAvailable`))).add(Fy({currentBuffer:this.info.currentVideoBuffer$.pipe(Y(e=>e.end>0),X((e,t)=>e.end===t.end&&e.start===t.start)),position:this.info.position$.pipe(X())}).pipe(rb(1e3)).subscribe(e(`currentBufferAndPosition`))).add(this.info.duration$.pipe(X()).subscribe(e(`duration`))).add(this.info.isBuffering$.subscribe(e(`isBuffering`))).add(this.info.isLive$.pipe(X()).subscribe(e(`isLive`))).add(this.info.canChangePlaybackSpeed$.pipe(X()).subscribe(e(`canChangePlaybackSpeed`))).add(Fy({liveTime:this.info.liveTime$,liveBufferTime:this.info.liveBufferTime$,position:this.info.position$}).pipe(Y(({liveTime:e,liveBufferTime:t})=>!!e&&!!t),rb(1e3)).subscribe(e(`liveBufferAndPosition`))).add(this.info.atLiveEdge$.pipe(X(),Y(e=>e===!0)).subscribe(e(`atLiveEdge`))).add(this.info.atLiveDurationEdge$.pipe(X(),Y(e=>e===!0)).subscribe(e(`atLiveDurationEdge`))).add(this.info.muted$.pipe(X()).subscribe(e(`muted`))).add(this.info.volume$.pipe(X()).subscribe(e(`volume`))).add(this.info.isEnded$.pipe(X(),Y(e=>e===!0)).subscribe(e(`isEnded`))).add(this.info.availableSources$.subscribe(e(`availableSources`))).add(Fy({throughputEstimation:this.info.throughputEstimation$,rtt:this.info.rttEstimation$}).pipe(Y(({throughputEstimation:e,rtt:t})=>!!e&&!!t),rb(3e3)).subscribe(e(`throughputEstimation`))).add(this.info.isStalled$.subscribe(e(`isStalled`))).add(this.info.surface$.subscribe(e(`surface`))).add(this.events.ended$.subscribe(e(`ended`))).add(this.events.looped$.subscribe(e(`looped`))).add(this.events.managedError$.subscribe(t(`managedError`))).add(this.events.fatalError$.subscribe(t(`fatalError`))).add(this.events.firstBytes$.subscribe(e(`firstBytes`))).add(this.events.firstFrame$.subscribe(e(`firstFrame`))).add(this.events.canplay$.subscribe(e(`canplay`)))}initWakeLock(){var e=this;let t=Uy();if(!t.navigator.wakeLock||!this.tuning.enableWakeLock)return;let n,r=()=>{n?.release(),n=void 0},i=function(){var t=D(function*(){r(),n=yield window.navigator.wakeLock.request(`screen`).catch(t=>{t instanceof DOMException&&t.name===`NotAllowedError`||e.events.managedError$.next({id:`WakeLock`,category:Ly.DOM,message:String(t)})})});return function(){return t.apply(this,arguments)}}();this.subscription.add(Zy(zy(t.document,`visibilitychange`),zy(t.document,`fullscreenchange`),this.desiredState.playbackState.stateChangeEnded$).subscribe(()=>{let e=t.document.visibilityState===`visible`,a=this.desiredState.playbackState.getState()===`playing`,o=!!n&&!n?.released;e&&a?o||i():r()})).add(this.events.willDestruct$.subscribe(r))}setVideoTrackIdByQuality(e,t){let n=e.find(e=>e.quality===t);this.tracer.log(`setVideoTrackIdByQuality`,Ry({quality:t,availableTracks:Ry(e),track:Ry(n),isAutoQuality:!n})),n?n.tvDisabled?(this.setAutoQuality(!0),this.events.managedError$.next({id:`SetQualityTrackTvDisabled`,category:Ly.WTF,message:`Set quality was called on track with tvDisabled flag`})):this.desiredState.videoTrack.startTransitionTo(n):this.setAutoQuality(!0)}getActiveLiveDelay(e=!1){return e?this.tuning.live.lowLatencyActiveLiveDelay:this.tuning.live.activeLiveDelay}isNotActiveTabCase(){return Uy().document.hidden&&this.tuning.autoplayOnlyInActiveTab&&!es()}}var Pb=`@vkontakte/videoplayer-core@${te}`;;return{pt,P,Ht,is,Nb,re,ie,Mb,te,se,kb,jb,Pb,ce,Ob,ne,Ab,oe,ae};}();var{pt:_oxcModkov207_pt,P:_oxcModkov207_P,Ht:_oxcModkov207_Ht,is:_oxcModkov207_is,Nb:_oxcModkov207_Nb,re:_oxcModkov207_re,ie:_oxcModkov207_ie,Mb:_oxcModkov207_Mb,te:_oxcModkov207_te,se:_oxcModkov207_se,kb:_oxcModkov207_kb,jb:_oxcModkov207_jb,Pb:_oxcModkov207_Pb,ce:_oxcModkov207_ce,Ob:_oxcModkov207_Ob,ne:_oxcModkov207_ne,Ab:_oxcModkov207_Ab,oe:_oxcModkov207_oe,ae:_oxcModkov207_ae}=_oxcModkov207;export{_oxcModkov207_pt as isMobile,_oxcModkov207_P as clientChecker,_oxcModkov207_Ht as areValidLiveRecordSources,_oxcModkov207_is as WebmCodecStrategy,_oxcModkov207_Nb as VideoQuality,_oxcModkov207_re as VideoFormat,_oxcModkov207_ie as VideoCodecName,_oxcModkov207_Mb as ValueSubject,_oxcModkov207_te as VERSION,_oxcModkov207_se as Surface,_oxcModkov207_kb as Subscription,_oxcModkov207_jb as Subject,_oxcModkov207_Pb as SDK_VERSION,_oxcModkov207_ce as PredefinedQualityLimits,_oxcModkov207_Ob as Player,_oxcModkov207_ne as PlaybackState,_oxcModkov207_Ab as Observable,_oxcModkov207_oe as HttpConnectionType,_oxcModkov207_ae as ChromecastState};
40
+ ===== DASH_LIVE DEBUG END ====`),n){let t=e.reduce((e,{time:t,data:n,stack:r})=>{let i=fn(n).map(([e,t])=>`${e}:${t}`).join(`,`);return e+=`${t}: ${i}${r?`: ${r}`:``};`,e},``);rv.push(`core`,{key:`vp_dash_live_debug`,strings:[t]})}};return e.add(this.providerError$.subscribe(e=>{e.id.startsWith(`ProviderHangup`)&&(R({m:`final.0`,e:e.id}),t())})).add(this.noAvailableProvidersError$.subscribe(()=>{R({m:`final.1`}),t()})),e.add(this.mayday.recommendation$.subscribe(({error:e,recommendation:t})=>{let n=this.current$.getValue().destination??`SCREEN`;if(this.handleMaydayRecommendation(t,n),t.action!==`wait`){let t={error:e,currentDestination:n};e.traceAsLog?this.tracer.log(`providerInfo`,nv(t)):this.tracer.error(`providerError`,nv(t))}})),e.add(this.providerError$.subscribe(e=>{let t=this.current$.getValue(),{destination:n}=t;n===`CHROMECAST`?(this.destroyProvider(),this.params.dependencies.chromecastInitializer.stopMedia().then(()=>this.switchToNextProvider(`CHROMECAST`),()=>this.params.dependencies.chromecastInitializer.disconnect())):(this.applyErrorSideEffects(e,t.type),this.mayday.handleError(e))})),e}}var by=`vk_uvp_throughput`,xy=`vk_uvp_rtt`,Sy=`one_video_throughput`,Cy=`one_video_rtt`,wy=()=>{let{navigator:e}=yy();if(e)return e.connection},Ty=()=>{let e=wy()?.downlink;if(_y(e)&&e!==10)return e*1e3},Ey=()=>{let e=wy()?.rtt;if(_y(e)&&e!==3e3)return e},Dy=(e,t,n)=>{let r=n*8;return r/(r/e+t)};class Oy{constructor(e){this.throughput=void 0,this.rtt=void 0,this.subscription=new py,this.tuningConfig=void 0,this.concurrentDownloads=new Map,this.throughput$=void 0,this.rtt$=void 0,this.rttAdjustedThroughput$=void 0,this.tuningConfig=e;let t=Oy.loadStored(by,Sy,e)||(e.useBrowserEstimation?Ty():void 0)||e.initialThroughput,n=Oy.loadStored(xy,Cy,e)??(e.useBrowserEstimation?Ey():void 0)??0;if(this.throughput$=new my(t),this.rtt$=new my(n),this.rttAdjustedThroughput$=new my(Dy(t,n,e.rttPenaltyRequestSize)),this.throughput=Op.getSmoothedValue(t,-1,e),this.rtt=Op.getSmoothedValue(n,1,e),e.useBrowserEstimation){let e=()=>{let e=Ty();e&&this.throughput.next(e);let t=Ey();_y(t)&&this.rtt.next(t)},t=wy();t&&`onchange`in t&&this.subscription.add(uy(t,`change`).subscribe(e)),e()}this.subscription.add(this.throughput.smoothed$.subscribe(t=>{Oy.writeStored(by,Sy,t,e)})),this.subscription.add(this.rtt.smoothed$.subscribe(t=>{Oy.writeStored(xy,Cy,t,e)})),this.subscription.add(this.throughput.debounced$.pipe(hy(e=>Math.round(e))).subscribe(this.throughput$)),this.subscription.add(this.rtt.debounced$.subscribe(this.rtt$)),this.subscription.add(fy({throughput:this.throughput.smoothed$,rtt:this.rtt.smoothed$}).pipe(hy(({throughput:t,rtt:n})=>Dy(t,n,e.rttPenaltyRequestSize)),gy(t=>{let n=this.rttAdjustedThroughput$.getValue()||0;return Math.abs(t-n)/n>=e.changeThreshold})).subscribe(this.rttAdjustedThroughput$))}destroy(){this.concurrentDownloads.clear(),this.subscription.unsubscribe()}trackXHR(e){let t=0,n=J(),r=new py;switch(this.subscription.add(r),this.concurrentDownloads.set(e,J()),e.readyState){case 4:break;case 3:case 2:r.add(uy(e,`progress`).pipe(dy()).subscribe(e=>{t=e.loaded,n=J()}));break;case 1:case 0:r.add(uy(e,`loadstart`).subscribe(()=>{t=0,n=J()}));break}r.add(uy(e,`loadend`).subscribe(i=>{if(e.status===200){let e=i.loaded,r=J(),a=e-t,o=r-n;this.addRawSpeed(a,o,1)}this.concurrentDownloads.delete(e),r.unsubscribe()}))}trackStream(e,t=!1){var n=this;let r=e.getReader();if(!r){e.cancel(`Could not get reader`);return}let i=0,a=J(),o=0,s=J(),c=t=>{this.concurrentDownloads.delete(e),r.releaseLock(),e.cancel(`Throughput Estimator error: ${t}`).catch(()=>{})},l=function(){var u=D(function*({done:u,value:d}){if(u){if(!t){let e=n.tuningConfig.measureFastSamples?n.countActiveDownloads(a):1;n.addRawSpeed(i,J()-a,e)}n.concurrentDownloads.delete(e)}else if(d){if(n.tuningConfig.measureFastSamples&&n.concurrentDownloads.set(e,J()),t){let e=J();if(e-s>n.tuningConfig.lowLatency.continuesByteSequenceInterval||e-a>n.tuningConfig.lowLatency.maxLastEvaluationTimeout){let e=s-a;e&&n.addRawSpeed(o,e,1,t),o=d.byteLength,a=J()}else o+=d.byteLength;s=J()}else if(i+=d.byteLength,o+=d.byteLength,o>=n.tuningConfig.streamMinSampleSize&&J()-s>=n.tuningConfig.streamMinSampleTime){let e=n.tuningConfig.measureFastSamples?n.countActiveDownloads(s):n.concurrentDownloads.size;n.addRawSpeed(o,J()-s,e),o=0,s=J()}yield r?.read().then(l,c)}});return function(e){return u.apply(this,arguments)}}();this.concurrentDownloads.set(e,J()),r?.read().then(l,c)}addRawSpeed(e,t,n=1,r=!1){if(this.sanityCheck(e,t,r)){let i=e*8/t*n;if(this.isFastSample(t,r)&&i<this.throughput.smoothed$.getValue())return;this.throughput.next(i)}}countActiveDownloads(e){let t=0;return this.concurrentDownloads.forEach(n=>{n>=e&&t++}),Math.max(t,1)}isFastSample(e,t){return this.tuningConfig.measureFastSamples&&!t&&e<=this.tuningConfig.cacheThresholdSize}addRawThroughput(e){this.throughput.next(e)}addRawRtt(e){this.rtt.next(e)}sanityCheck(e,t,n=!1){let r=e*8/t;return!(!r||!isFinite(r)||r>1e6||r<30||n&&e<1e4||!n&&e<10*1024&&(!this.tuningConfig.measureNonSegmentRequests||t<this.tuningConfig.smallSampleMinDuration+this.rtt$.getValue())||!n&&!this.tuningConfig.measureFastSamples&&t<=this.tuningConfig.cacheThresholdSize)}get throughputVariance$(){return this.throughput.varianceCoefficient$}static loadStored(e,t,n){if(!n.useThroughputTtl){let e=vy.get(t);if(!_y(e))return;let n=parseInt(e,10);return isNaN(n)?void 0:n}let r=vy.get(e)??vy.get(t);if(_y(r))try{let e=JSON.parse(r);if(typeof e==`object`&&e&&typeof e.value==`number`)return Oy.validateStored(e,n)}catch{}}static writeStored(e,t,n,r){if(!r.useThroughputTtl){vy.set(t,n.toFixed(0));return}let i=JSON.stringify({value:Math.round(n),timestamp:Date.now(),networkType:wy()?.effectiveType});vy.set(e,i)}static validateStored(e,t){if(!t.useThroughputTtl)return e.value;if(Date.now()-e.timestamp>t.storedThroughputTtlMs)return;let n=wy()?.effectiveType;if(!(n!==void 0&&e.networkType!==void 0&&n!==e.networkType))return e.value}}var ky=Oy;var My={mayday:{playingUnstableThresholdMs:3e3,heuristics:[],hangupGraceDecayFactor:.5,hangupGraceMinTimeoutMs:0,deferAudibleHangupOnHiddenTab:!1},allowPlayerReuse:!1,useWorkerTimers:[],throughputEstimator:{type:`EmaAndMa`,emaAlphaSlow:.2,emaAlphaFast:.7,emaAlpha:.45,basisTrendChangeCount:10,changeThreshold:.05,useBrowserEstimation:!0,initialThroughput:5e3,measureNonSegmentRequests:!1,rttPenaltyRequestSize:1*1024*1024,streamMinSampleSize:10*1024,streamMinSampleTime:300,smallSampleMinDuration:100,cacheThresholdSize:20,cacheHitTtfbMaxMs:10,measureFastSamples:!1,deviationDepth:20,deviationFactor:.5,lowLatency:{continuesByteSequenceInterval:50,maxLastEvaluationTimeout:300},useThroughputTtl:!1,storedThroughputTtlMs:144e5},autoTrackSelection:{maxBitrateFactorAtEmptyBuffer:4,bitrateFactorAtEmptyBuffer:2.8,minBitrateFactorAtEmptyBuffer:1.5,bitrateAudioFactorAtEmptyBuffer:10,maxBitrateFactorAtFullBuffer:3,bitrateFactorAtFullBuffer:2,minBitrateFactorAtFullBuffer:1,bitrateAudioFactorAtFullBuffer:7,minVideoAudioRatio:5,minAvailableThroughputAudioRatio:5,usePixelRatio:!0,pixelRatioMultiplier:void 0,pixelRatioLogBase:3,pixelRatioLogCoefficients:[1,0,1],limitByContainer:!0,maxContainerSizeFactor:2,containerSizeFactor:1.3,minContainerSizeFactor:1,lazyQualitySwitch:!0,minBufferToSwitchUp:.4,considerPlaybackRate:!1,trackCooldownIncreaseQuality:15e3,trackCooldownDecreaseQuality:3e3,backgroundVideoQualityLimit:jy.Q_4320P,activeVideoAreaThreshold:.1,highQualityLimit:jy.Q_720P,trafficSavingLimit:jy.Q_480P,lowQualityTelemetryLimit:jy.Q_240P},stallsManager:{enabled:!1,ignoreDynamicAbrForShortVideo:!1,stallDurationNoDataBeforeQualityDecrease:500,stallDurationToBeCount:100,stallCountBeforeQualityDecrease:3,resetQualityRestrictionTimeout:1e4,ignoreStallsOnSeek:!0,stallsMetricsHistoryLength:20,maxPossibleStallDuration:3e4,minTvtToBeCounted:120,maxTvtToBeCounted:10800,significantTvt:600,targetStallsDurationPerTvt:1,deviationStallsDurationPerTvt:.5,criticalStallsDurationPerTvt:6,abrAdjustingSpeed:.1,emaAlpha:.6,useTotalStallsDurationPerTvt:!0,useAverageStallsDurationPerTvt:!0,useEmaStallsDurationPerTvt:!0,ignoreStallsOnPause:!1},droppedFramesChecker:{enabled:!1,percentLimit:.1,checkTime:1e3,countLimit:3,tickCountAfterQualityChange:5,qualityUpWaitingTime:5e3,minQualityBanLimit:jy.Q_480P},dash:{forwardBufferTarget:6e4,forwardBufferTargetAuto:6e4,forwardBufferTargetManual:5*6e4,forwardBufferTargetPreload:5e3,audioBufferAheadOfVideoMs:1e4,seekBiasInTheEnd:2e3,maxSegmentDurationLeftToSelectNextSegment:3e3,minSafeBufferThreshold:.5,bufferPruningSafeZone:1e3,segmentRequestSize:1*1024*1024,maxVirtualBufferSize:250*1024*1024,virtualBufferPruneSize:100*1024*1024,representationSwitchForwardBufferGap:6e4,crashOnStallTimeout:25e3,crashOnStallTWithoutDataTimeout:5e3,restoreBufferBeforeCrashTimeout:1e3,enableSubSegmentBufferFeeding:!0,bufferEmptinessTolerance:100,virtualBufferEmptinessTolerance:100,useBufferQueueVerification:!1,useVirtualBufferImplicitSeek:!1,bufferQueueVerificationMinPosition:2e3,useNewRepresentationSwitch:!1,useDelayedRepresentationSwitch:!1,useSmartRepresentationSwitch:!1,brokenSegmentAppendDetection:!1,brokenSegmentAppendTolerance:100,useFetchPriorityHints:!0,enableBaseUrlSupport:!0,maxSegmentRetryCount:5,sourceOpenTimeout:1e3,vktvAbrThrottle:0,timeupdateEventTickThrottle:300,fetcherBufferOptimisation:!0,usePersistentGaps:!1,abrThrottle:0,useVideoElementWaitingCurrentTimeReassign:!0,stallWatchdogInterval:100,liveUpdateInterval:1e3,liveStallReinitInterval:3e3,ignoreNetworkErrorsOnLoadInit:!1,bufferTolerance:100,useBufferGapWatchdog:!1,jumpToFirstNativeBufferFrame:!1,minNativeBufferSize:5e3,removeTimeShiftFromSegment:500,tickMaintainInterval:100,minSafeBufferToPlay:0,useBufferHoldingOnlyOnStall:!0,useAbrPhases:!1,abrVideoRules:[`fits_container_rule`,`throughput_rule`,`buffer_rule`,`stalls_rule`,`upper_limit_rule`,`lower_limit_rule`],abrAudioRules:[`throughput_rule`,`min_audio_for_video_rule`],useFailoverHostsOnAllProviderCrash:!1,saveData3gQualityLimit:jy.Q_240P,saveData2gQualityLimit:jy.Q_144P,useConnectionDataUpperLimit:!1,abandon:{minElapsedMs:1500,bufferSafetyFactor:.8,minLoadedFraction:.15,minBufferToActivateMs:500},bola:{bufferTargetMs:3e4,minBufferMs:1e4,minBufferPerBitrateLevelMs:2e3,placeholderBufferDecay:.99,fallbackSegmentDurationMs:4e3,finiteThresholdMs:6e4,adaptiveBufferTargetK:.5,adaptiveBufferTargetMaxMs:6e4,trimDetectThresholdMs:1e4,antiCascadeDownshift:!0},insufficientBuffer:{thresholdMs:500,gracePeriodAfterPlaybackResetMs:1e3,budgetFactor:.5,fallbackSegmentDurationMs:6e3},videoStreamRepresentaionsFilter:[],filterOnDemandQualityList:!1,dashMaxTvVideoQuality:!1,checkRepresentationCanPlayType:!1,preloadFirstSegment:!1,maxQualityForFirstSegmentPreload:jy.Q_480P,tracerResumeOnUnexpectedStall:!1,tracerResumeOnLowQuality:!1,recoverStuckSegmentLoading:!1,enableMaintainNativeBufferSwitchMutexBypass:!1},dashCmafLive:{externalStopControl:!1,keepSilentStallWatchdogWhenNotActive:!1,maxActiveLiveOffset:1e4,normalizedTargetMinBufferSize:6e4,normalizedLiveMinBufferSize:5e3,normalizedActualBufferOffset:1e4,offsetCalculationError:3e3,maxLiveDuration:7200,catchupLiveForMutedInactiveTab:!0,lowLatency:{maxTargetOffset:3e3,maxTargetOffsetDeviation:250,playbackCatchupSpeedup:.05,isActiveOnDefault:!1,bufferEstimator:{emaAlpha:.45,changeThreshold:.05,deviationDepth:20,deviationFactor:.5,extremumInterval:5}}},live:{minBuffer:3e3,minBufferSegments:3,lowLatencyMinBuffer:1e3,lowLatencyMinBufferSegments:1,isLiveCatchUpMode:!1,lowLatencyActiveLiveDelay:3e3,activeLiveDelay:5e3,maxPausedTime:5e3,catchupLiveForMutedInactiveTab:!1,disableLiveSeekWithoutOffsetMarker:!1},downloadBackoff:{bufferThreshold:100,start:100,factor:2,max:3*1e3,random:.1},enableWakeLock:!0,enableTelemetryAtStart:!1,forceFormat:void 0,formatsToAvoid:[],disableChromecast:!1,chromecastReceiverId:`07A4434E`,chromecastPresentationApi:!1,useWebmBigRequest:!1,webmCodec:`vp9`,androidPreferredFormat:`dash`,iosPreferredFormat:`hls`,preferCMAF:!1,preferWebRTC:!1,preferMultiStream:!1,preferHDR:!1,bigRequestMinInitSize:50*1024,bigRequestMinDataSize:1*1024*1024,stripRangeHeader:!0,flushShortLoopedBuffers:!0,insufficientBufferRuleMargin:1e4,seekNearDurationBias:1,dashSeekInSegmentDurationThreshold:180*1e3,dashSeekInSegmentAlwaysSeekDelta:1e4,useDelayedPlaybackHangupWithData:!1,playbackHangupNoDataThreshold:5e3,hangupTimeoutMs:5e3,endGapTolerance:300,stallIgnoreThreshold:33,stallHandlingStrategy:`exclude-threshold`,stallIgnoreOnPause:!1,gapWatchdogInterval:50,requestQuick:!1,useHlsJs:!1,disableHlsOnDesktop:!1,useNativeHLSTextTracks:!1,useNewSwitchTo:!1,alwaysAbortPreviousSwitch:!1,useDashProviderVirtual:!1,useDashProviderVirtualMobile:!1,useDashLiveProviderVirtual:!1,useDashLiveProviderVirtualMobile:!1,useSafariEndlessRequestBugfix:!0,useAbortableGeneratorReturnOnAbort:!1,useSafariOptimisticPositionForLiveEdgeBugfix:!1,isAudioDisabled:!1,autoplayOnlyInActiveTab:!0,autoplayOnlyIfVisible:!0,dynamicImportTimeout:5e3,maxPlaybackTransitionInterval:2e4,providerErrorLimit:3,manifestRetryInterval:300,manifestRetryMaxInterval:1e4,manifestRetryMaxCount:10,audioVideoSyncRate:20,webrtc:{connectionRetryMaxNumber:3},useVolumeMultiplier:!1,ignoreAudioRendererError:!1,useEnableSubtitlesParam:!1,useHlsLiveNewTextManager:!1,exposeInternalsToGlobal:!1,hlsLiveNewTextManagerDownloadThreshold:4e3,disableYandexPiP:!1,asyncResolveClientChecker:!1,changePlaybackStateToPausedWhenEnded:!1,suppressExceptionsInObservables:!0,devNullLogEnabled:!1,collectingDecodingInfoEnabled:!1,sendDashLiveDebug:!1,logDashLiveDebug:!1,reuseOwnVideoElement:!1,reuseOwnVideoElementOnBackgroundTabOnly:!1,handleExtendedNetworkErrorsSet:!1,useUrlCacheMechanism:!1,useDurationFromSegments:!0,dropUrlCacheWhenProviderCrashed:!1,ignoreForcePlayResultWhenProviderChanged:!1,hls:{filterOnDemandQualityList:!1},disableSubtitles:!1,audioOnly:!1,clearAudioElementOnDispose:!0,readyOnLoadedMetadata:!1},Ny=e=>Ay(e,My);var db=({seekState:e,position$:t})=>sb(e.stateChangeEnded$.pipe(cb(({to:e})=>e.state===`none`?void 0:(e.position??NaN)/1e3),lb(ub)),t.pipe(lb(()=>e.getState().state===`none`)));var pb=e=>{let t=typeof e.container==`string`?document.getElementById(e.container):e.container;return fb(t,`Wrong container or containerId {${e.container}}`),t};var gb=(e,t,n,r)=>{e!==void 0&&t.getState()===void 0&&t.getPrevState()===void 0&&n?.getValue().length===0?n.pipe(mb(e=>e.length>0),hb()).subscribe(n=>{n.find(r)&&t.startTransitionTo(e)}):(e===void 0||n?.getValue().find(r))&&t.startTransitionTo(e)};var Sb=()=>{let e=`mediaCapabilities`in xb().navigator?Cb:wb,t=_b(D(function*(){let t=yield Promise.all(vb(Tb).map(function(){var t=D(function*([t,n]){return{codec:t,supported:yield e(n)}});return function(e){return t.apply(this,arguments)}}())),n=[P.browser.current,...t.map(e=>JSON.stringify(e))].slice(0,16);return bb.push(`core`,{key:`videoplayer_decoding_info`,strings:n}),t}));return()=>yb(t)},Cb=function(){var e=D(function*(e){if(!e)return Promise.resolve({supported:!1});let t={[`channels`in e?`audio`:`video`]:e};return yield xb().navigator.mediaCapabilities.decodingInfo(E({type:`media-source`},t))});return function(t){return e.apply(this,arguments)}}(),wb=e=>{if(!e)return Promise.resolve({supported:!1});let t=xb().document,n=`channels`in e?t.createElement(`audio`):t.createElement(`video`);return Promise.resolve({supported:n.canPlayType(e?.contentType??``)===`probably`})},Tb={H264:{contentType:`video/mp4; codecs="avc1.4D400C"`,width:720,height:720,bitrate:2886,framerate:30},H265:{contentType:`video/mp4; codecs="hvc1.1.6.L123.B0"`,width:720,height:720,bitrate:2886,framerate:30},VP8:{contentType:`video/webm; codecs="vp8"`,width:720,height:720,bitrate:2886,framerate:30},VP9:{contentType:`video/webm; codecs="vp09.00.10.08"`,width:720,height:720,bitrate:2886,framerate:30},AV1:{contentType:`video/mp4; codecs="av01.0.01M.08"`,width:720,height:720,bitrate:2886,framerate:30},OPUS:{contentType:`audio/ogg; codecs="opus"`,channels:`2`,bitrate:128e3},AAC_LC:{contentType:`audio/mp4; codecs="mp4a.40.2"`,channels:`2`,bitrate:128e3},AC3:{contentType:`audio/mp4; codecs="ac-3"`,channels:`6`,bitrate:128e3},EAC3:{contentType:`audio/mp4; codecs="ec-3"`,channels:`6`,bitrate:128e3},AAC_HE_V1:{contentType:`audio/mp4; codecs="mp4a.40.5"`,channels:`2`,bitrate:128e3},AAC_HE_V2:{contentType:`audio/mp4; codecs="mp4a.40.29"`,channels:`2`,bitrate:128e3},AAC_xHE:{contentType:`audio/mp4; codecs="mp4a.40.42"`,channels:`2`,bitrate:128e3}},Eb={playbackState$:void 0,position$:0,duration$:1/0,playedTime$:0,muted$:!1,volume$:1,availableVideoStreams$:[],currentVideoStream$:void 0,availableVideoTracks$:[],availableQualities$:[],availableQualitiesFps$:{},currentQuality$:void 0,isAutoQualityEnabled$:!0,autoQualityLimitingAvailable$:!1,autoQualityLimits$:{},predefinedQualityLimitType$:`unknown`,availableAudioStreams$:[],currentAudioStream$:void 0,availableAudioTracks$:[],isAudioAvailable$:!0,currentPlaybackRate$:1,currentVideoBuffer$:{start:0,end:0},currentAudioBuffer$:{start:0,end:0},totalBufferDuration$:0,currentNativeVideoBuffer$:{start:0,end:0},currentNativeAudioBuffer$:{start:0,end:0},isBuffering$:!0,isStalled$:!1,stallStartTime$:0,isEnded$:!1,isLooped$:!1,isLive$:void 0,isLiveEnded$:null,canPlayLiveTailBuffer$:!1,canChangePlaybackSpeed$:void 0,atLiveEdge$:void 0,atLiveDurationEdge$:void 0,liveTime$:void 0,liveBufferTime$:void 0,liveLatency$:void 0,currentFormat$:void 0,availableTextTracks$:[],currentTextTrack$:void 0,throughputEstimation$:void 0,rttEstimation$:void 0,videoBitrate$:void 0,hostname$:void 0,httpConnectionType$:void 0,httpConnectionReused$:void 0,httpConnectionMetrics$:void 0,httpDownloadMetrics$:void 0,surface$:`none`,chromecastState$:`NOT_AVAILABLE`,chromecastDeviceName$:void 0,intrinsicVideoSize$:void 0,availableSources$:void 0,currentVideoSegmentLength$:0,currentAudioSegmentLength$:0,debugData$:{volume:0,muted:!1}},Db={audioStream:void 0,autoVideoTrackLimits:{},autoVideoTrackSwitching:!0,currentTextTrack:void 0,externalTextTracks:[],internalTextTracks:[],isLooped:!1,isLowLatency:!1,playbackRate:1,playbackState:`stopped`,seekState:{state:`none`},textTrackCuesSettings:{},videoTrack:void 0,videoStream:void 0,volume:{volume:1,muted:!1}};class Ob{constructor(e={},t=ib.createRootTracer(`fake`),n){this.subscription=new tb,this.persistentSubscription=new tb,this.domContainer=null,this.providerContainer=void 0,this.chromecastInitializer=void 0,this.logger=new Yy,this.tracer=void 0,this.abrLogger=this.logger.createComponentLog(`ABR`),this.config=void 0,this.tuning=void 0,this.throughputEstimator=void 0,this.internalsExposure=null,this.isPlaybackStarted=!1,this.suppressWillStop=!1,this.initedAt=void 0,this.hasLiveOffsetByPaused=new ab(!1),this.hasLiveOffsetByPausedTimer=0,this.playerInitRequest=0,this.playerInited=new ab(!1),this.explicitInitialQuality=void 0,this.wasSetStartedQuality=!1,this.desiredState=le(Db).reduce((e,[t,n])=>(e[t]=new yn(n),e),{}),this.info=le(Eb).reduce((e,[t,n])=>(e[t]=new ab(n),e),{}),this.events={inited$:new $,ready$:new $,started$:new $,playing$:new $,paused$:new $,stopped$:new $,willReady$:new $,willStart$:new $,willResume$:new $,willPause$:new $,willStop$:new $,willDestruct$:new $,watchCoverageRecord$:new $,watchCoverageLive$:new $,managedError$:new $,fatalError$:new $,fetcherRecoverableError$:new $,ended$:new $,looped$:new $,seeked$:new $,willSeek$:new $,autoplaySoundProhibited$:new $,manifestRequested$:new $,firstBytesManifest$:new $,manifestReceived$:new $,firstBytesRequested$:new $,firstBytesReceived$:new $,firstBytes$:new $,loadedMetadata$:new $,firstFrame$:new $,canplay$:new $,log$:new $,fetcherError$:new $,severeStallOccured$:new $},this.experimental={element$:new ab(void 0),enableDebugTelemetry$:new ab(!1),dumpTelemetry:yp,getCurrentTime$:new ab(null),skipVideoElVolumeSync$:new ab(!1)},this.devNullLog=void 0,this.collectDecodingInfoDestroyCb=void 0,this.hasReleasedTimers=!1,this.doInit=e=>{let{container:t}=e,n=O(e,T);this.tracer.log(`initVideo`,Ry(n),!0),this.domContainer=pb(e),this.chromecastInitializer.contentId=e.meta?.videoId,this.providerContainer=new ly({sources:e.sources,meta:e.meta??{},failoverHosts:e.failoverHosts??[],container:this.domContainer,desiredState:this.desiredState,dependencies:{throughputEstimator:this.throughputEstimator,chromecastInitializer:this.chromecastInitializer,tracer:this.tracer,logger:this.logger,abrLogger:this.abrLogger},tuning:this.tuning,volumeMultiplier:e.volumeMultiplier,panelSize:e.panelSize,skipVideoElVolumeSync$:this.experimental.skipVideoElVolumeSync$,handleNetworkRecoverableErrorAsProviderError:e.handleNetworkRecoverableErrorAsProviderError}),this.initProviderContainerSubscription(this.providerContainer),this.initStartingVideoTrack(this.providerContainer),this.providerContainer.init(),this.setLiveLowLatency(this.tuning.dashCmafLive.lowLatency.isActiveOnDefault),this.initDebugTelemetry(),this.initWakeLock(),this.playerInited.next(!0),this.devNullLog&&this.tuning.devNullLogEnabled?(Iy.subscribe(`core`,this.devNullLog),this.tuning.collectingDecodingInfoEnabled&&(this.collectDecodingInfoDestroyCb=Sb())):Iy.destroy(`core`)},this.initLogs(),this.tuning=Ny(e),this.tracer=t,eb(this.tuning.useWorkerTimers),this.tuning.suppressExceptionsInObservables&&(ue(this.info).forEach(e=>e.setSuppressErrors(!0)),ue(this.events).forEach(e=>e.setSuppressErrors(!0)));let r={receiverApplicationId:this.tuning.chromecastReceiverId,isDisabled:this.tuning.disableChromecast,dependencies:{logger:this.logger}};if(this.chromecastInitializer=this.tuning.chromecastPresentationApi?new un(r):new De(r),this.throughputEstimator=new ky(this.tuning.throughputEstimator),e.exposeInternalsToGlobal&&(this.internalsExposure=new Wy(`core`,By(n?.playerId)),this.internalsExposure.expose({player:this,getTimersDiagnostics:Vy})),this.initChromecastSubscription(),this.initDesiredStateSubscriptions(),this.initDebugDataSubscriptions(),this.devNullLog=n?.onDevNullLog,Iy.create(`core`),Proxy&&Reflect)return new Proxy(this,{get:(e,t,n)=>{let r=Reflect.get(e,t,n);return typeof r==`function`?(...n)=>{try{return r.apply(e,n)}catch(e){let r=n.map(e=>JSON.stringify(e,(e,t)=>{let n=typeof t;return de([`number`,`string`,`boolean`],n)?t:t===null?null:`<${n}>`})),i=`Player.${String(t)}`,a=`Exception calling ${i} (${r.join(`, `)})`;throw this.events.fatalError$.next({id:i,category:Ly.WTF,message:a,thrown:e}),e}}:r}})}resetDesiredState(){let e=(e,t)=>{e.setState(t)};Object.keys(this.desiredState).forEach(t=>{e(this.desiredState[t],Db[t])})}reset(){this.subscription.unsubscribe(),this.providerContainer?.destroy(),this.providerContainer=void 0,M.clearTimeout(this.hasLiveOffsetByPausedTimer),this.collectDecodingInfoDestroyCb?.call(this),this.playerInited.next(!1),this.resetDesiredState();let e=(e,t)=>{e.next(t)},t=[`muted$`,`volume$`];Object.keys(this.info).forEach(n=>{de(t,n)?e(this.info[n],this.info[n].getValue()):e(this.info[n],Eb[n])})}initAudio(e){return this.initVideo(E(E({},e),{},{container:e.audioElement??document.createElement(`audio`)}))}initVideo(e){let t=Uy();this.config=e,this.internalsExposure?.expose({config:e,logger:this.logger,tuning:this.tuning}),this.setMuted(e.isMuted??this.tuning.isAudioDisabled);let n=()=>{this.tuning.autoplayOnlyIfVisible&&t.requestAnimationFrame?this.playerInitRequest=t.requestAnimationFrame(()=>this.doInit(e)):this.doInit(e)},r=()=>{this.tuning.asyncResolveClientChecker?P.isInited$.pipe(Y(e=>!!e),Q()).subscribe(()=>{console.log(`Core SDK async start`),n()}):n()};return this.isNotActiveTabCase()?(this.tracer.log(`request play from hidden tab`),zy(t.document,`visibilitychange`).pipe(Q()).subscribe(r)):r(),this}destroy(e){let t=Uy();this.tracer.log(`destroy`),M.clearTimeout(this.hasLiveOffsetByPausedTimer),this.playerInitRequest&&t.cancelAnimationFrame(this.playerInitRequest),this.events.willDestruct$.next(),this.suppressWillStop=e?.reportStop===!1,this.stop(),this.providerContainer?.destroy(),this.throughputEstimator.destroy(),this.chromecastInitializer.destroy(),this.subscription.unsubscribe(),this.persistentSubscription.unsubscribe(),this.tracer.end(),this.internalsExposure?.destroy(),Iy.destroy(`core`),this.collectDecodingInfoDestroyCb?.call(this),this.hasReleasedTimers||(this.hasReleasedTimers=!0,$y())}waitInit(e){this.playerInited.getValue()?e():this.subscription.add(this.playerInited.pipe(Y(e=>!!e),Q()).subscribe(e))}prepare(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`prepare`,{currentPlayBackState:e.getState()}),e.getState()===`stopped`&&e.startTransitionTo(`ready`)}),this}play(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`play`,{currentPlayBackState:e.getState()}),e.getState()!==`playing`&&e.startTransitionTo(`playing`)}),this}pause(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`pause`,{currentPlayBackState:e.getState()}),e.getState()!==`paused`&&e.startTransitionTo(`paused`)}),this}stop(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`stop`,{currentPlayBackState:e.getState()}),e.getState()!==`stopped`&&(e.startTransitionTo(`stopped`),this.tuning.allowPlayerReuse&&this.reset())}),this}seekTime(e,t=!0){return this.waitInit(()=>{let n=this.info.duration$.getValue(),r=this.info.isLive$.getValue(),i=e;e>=n&&!r&&(i=n-this.tuning.seekNearDurationBias),i<0&&!r&&(i=0),this.tracer.log(`seekTime`,{duration:n,isLive:r,time:e,calculatedTime:i,forcePrecise:t}),Number.isFinite(i)&&(this.events.willSeek$.next({from:this.getExactTime(),to:i}),this.desiredState.seekState.setState({state:`requested`,position:i*1e3,forcePrecise:t}))}),this}seekPercent(e){return this.waitInit(()=>{let t=this.info.duration$.getValue();this.tracer.log(`seekPercent`,{percent:e,duration:t}),isFinite(t)&&this.seekTime(Math.abs(t)*e,!1)}),this}setVolume(e,t,n=!1){return this.waitInit(()=>{this.experimental.skipVideoElVolumeSync$.next(n);let r=this.desiredState.volume,i=r.getTransition()?.to.muted??this.info.muted$.getValue(),a=t??(this.tuning.isAudioDisabled||i);this.tracer.log(`setVolume`,{volume:e,isAudioDisabled:this.tuning.isAudioDisabled,chromecastState:this.chromecastInitializer.castState$.getValue(),muted:a}),this.chromecastInitializer.castState$.getValue()===`CONNECTED`&&!(this.chromecastInitializer instanceof un)?this.chromecastInitializer.setVolume(e):r.startTransitionTo({volume:e,muted:a})}),this}setMuted(e,t=!1,n=!1){return this.waitInit(()=>{this.experimental.skipVideoElVolumeSync$.next(n);let r=this.desiredState.volume,i=this.tuning.isAudioDisabled&&!t||e,a=r.getTransition()?.to.volume??this.info.volume$.getValue();this.tracer.log(`setMuted`,{isMuted:e,nextMuted:i,volume:a,isAudioDisabled:this.tuning.isAudioDisabled,chromecastState:this.chromecastInitializer.castState$.getValue()}),this.chromecastInitializer.castState$.getValue()===`CONNECTED`&&!(this.chromecastInitializer instanceof un)?this.chromecastInitializer.setMuted(i):r.startTransitionTo({volume:a,muted:i})}),this}setVideoStream(e){return this.waitInit(()=>{this.desiredState.videoStream.startTransitionTo(e)}),this}setAudioStream(e){return this.waitInit(()=>{this.desiredState.audioStream.startTransitionTo(e)}),this}setQuality(e){return this.waitInit(()=>{Py(this.providerContainer);let t=this.providerContainer.providerOutput.availableVideoTracks$.getValue();this.tracer.log(`setQuality`,{isDelayed:t.length===0,quality:e}),this.desiredState.videoTrack.getState()===void 0&&this.desiredState.videoTrack.getPrevState()===void 0&&t.length===0?this.wasSetStartedQuality?this.providerContainer.providerOutput.availableVideoTracks$.pipe(Y(e=>e.length>0),Q()).subscribe(t=>{this.setVideoTrackIdByQuality(t,e)}):this.explicitInitialQuality=e:t.length>0&&this.setVideoTrackIdByQuality(t,e)}),this}setAutoQuality(e){return this.waitInit(()=>{this.tracer.log(`setAutoQuality`,{enable:e}),this.desiredState.autoVideoTrackSwitching.startTransitionTo(e)}),this}setAutoQualityLimits(e){return this.waitInit(()=>{this.tracer.log(`setAutoQualityLimits`,Ry(e)),this.desiredState.autoVideoTrackLimits.startTransitionTo(e)}),this}setPredefinedQualityLimits(e){return this.waitInit(()=>{if(this.info.predefinedQualityLimitType$.getValue()===e)return this;let{highQualityLimit:t,trafficSavingLimit:n}=this.tuning.autoTrackSelection,r;switch(e){case`high_quality`:r={min:t,max:void 0};break;case`traffic_saving`:r={max:n,min:void 0};break;default:r={max:void 0,min:void 0}}this.setAutoQualityLimits(r)}),this}setPlaybackRate(e){return this.waitInit(()=>{this.tracer.log(`setPlaybackRate`,{playbackRate:e}),this.desiredState.playbackRate.startTransitionTo(e)}),this}setExternalTextTracks(e){return this.waitInit(()=>{e.length&&this.tracer.log(`setExternalTextTracks`,Ry(e)),this.desiredState.externalTextTracks.startTransitionTo(e.map(e=>E({type:`external`},e)))}),this}selectTextTrack(e){return this.waitInit(()=>{gb(e,this.desiredState.currentTextTrack,this.providerContainer?.providerOutput.availableTextTracks$,t=>t.id===e),this.tracer.log(`selectTextTrack`,{textTrackId:e})}),this}setTextTrackCueSettings(e){return this.waitInit(()=>{this.tracer.log(`setTextTrackCueSettings`,E({},e)),this.desiredState.textTrackCuesSettings.startTransitionTo(e)}),this}setLiveLowLatency(e){let t=this.info.isLive$.getValue(),n=this.desiredState.isLowLatency.getState();return!t||n===e?this:(this.tracer.log(`live switch to low latency `+e),this.desiredState.isLowLatency.setState(e),this.seekTime(0))}setLooped(e){return this.waitInit(()=>{this.tracer.log(`setLooped`,{isLooped:e}),this.desiredState.isLooped.startTransitionTo(e)}),this}toggleChromecast(){this.tracer.log(`toggleChromecast`),this.chromecastInitializer.toggleConnection()}getExactTime(){if(!this.providerContainer)return 0;let e=this.providerContainer.providerOutput.element$.getValue();if(Jy(e))return this.info.position$.getValue();let t=this.desiredState.seekState.getState(),n=t.state===`none`?void 0:t.position;return qy(n)?n/1e3:e.currentTime}getExactLiveTime(){if(!this.providerContainer)return 0;let e=this.desiredState.seekState.getState(),t=e.state===`none`?void 0:e.position;return(qy(t)?t:this.info.liveTime$.getValue()??0)/1e3}getAllLogs(){return this.logger.getAllLogs()}getDebugData(){return this.info.debugData$.getValue()}buildDebugData([e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v]){let y={version:te,volume:Math.round(_*100),muted:v,provider:e,cdn:t,videoSize:n?`${n.width}x${n.height}`:void 0,speed:l,bitrate:u,liveLatency:d,currentVideoSegmentLength:f,currentAudioSegmentLength:p,videoCodec:m?.codec,audioCodec:h?.codec,hdr:m?.hdr,audioLanguage:h?.language,position:g};return r&&a&&(s&&c?(y.videoBuffer=r.end-c,y.nativeVideoBuffer=a.end-c):(y.videoBuffer=Math.max(r.end-g,0),y.nativeVideoBuffer=Math.max(a.end-g,0))),i&&(y.audioBuffer=Math.max(i.end-g,0),o&&(y.nativeAudioBuffer=Math.max(o.end-g,0))),y}setIntrinsicVideoSize(...e){let t={width:e.reduce((e,{width:t})=>e||t||0,0),height:e.reduce((e,{height:t})=>e||t||0,0)};t.width&&t.height&&this.info.intrinsicVideoSize$.next({width:t.width,height:t.height})}initDebugDataSubscriptions(){this.subscription.add(ob([this.info.currentFormat$,this.info.hostname$,this.info.intrinsicVideoSize$,this.info.currentVideoBuffer$,this.info.currentAudioBuffer$,this.info.currentNativeVideoBuffer$,this.info.currentNativeAudioBuffer$,this.info.isLive$,this.info.liveBufferTime$,this.info.throughputEstimation$,this.info.videoBitrate$,this.info.liveLatency$,this.info.currentVideoSegmentLength$,this.info.currentAudioSegmentLength$,this.info.currentVideoStream$,this.info.currentAudioStream$,this.info.position$,this.info.volume$,this.info.muted$]).pipe(Z(e=>this.buildDebugData(e))).subscribe(this.info.debugData$))}initDesiredStateSubscriptions(){this.persistentSubscription.add(Zy(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(Z(e=>e.to)).subscribe(this.info.playbackState$)).add(this.desiredState.isLooped.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(this.info.isLooped$)).add(this.desiredState.playbackRate.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(this.info.currentPlaybackRate$)).add(this.desiredState.autoVideoTrackSwitching.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(this.info.isAutoQualityEnabled$)).add(this.desiredState.autoVideoTrackLimits.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(e=>{this.info.autoQualityLimits$.next(e);let{highQualityLimit:t,trafficSavingLimit:n}=this.tuning.autoTrackSelection;this.info.predefinedQualityLimitType$.next(pa(e,t,n))})).add(Zy(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(Y(({from:e})=>e===`stopped`)).subscribe(()=>{this.initedAt=Qy(),this.events.inited$.next()})).add(this.desiredState.playbackState.stateChangeEnded$.subscribe(e=>{switch(e.to){case`ready`:this.events.ready$.next();break;case`playing`:this.isPlaybackStarted||this.events.started$.next(),this.isPlaybackStarted=!0,this.events.playing$.next();break;case`paused`:this.events.paused$.next();break;case`stopped`:this.events.stopped$.next()}})).add(this.desiredState.playbackState.stateChangeStarted$.subscribe(e=>{switch(e.to){case`ready`:this.events.willReady$.next();break;case`paused`:this.events.willPause$.next();break;case`playing`:this.isPlaybackStarted?this.events.willResume$.next():this.events.willStart$.next();break;case`stopped`:this.suppressWillStop||this.events.willStop$.next();break;default:}}))}initProviderContainerSubscription(e){this.subscription.add(e.providerOutput.willSeekEvent$.subscribe(()=>{let e=this.desiredState.seekState.getState();this.tracer.log(`willSeekEvent`,Ry(e)),e.state===`requested`?this.desiredState.seekState.setState(E(E({},e),{},{state:`applying`})):this.events.managedError$.next({id:`WillSeekIn${e.state}`,category:Ly.WTF,message:`Received unexpeceted willSeek$`})})).add(e.providerOutput.soundProhibitedEvent$.pipe(Q()).subscribe(this.events.autoplaySoundProhibited$)).add(e.providerOutput.severeStallOccurred$.subscribe(this.events.severeStallOccured$)).add(e.providerOutput.seekedEvent$.subscribe(()=>{let e=this.desiredState.seekState.getState();this.tracer.log(`seekedEvent`,Ry(e)),e.state===`applying`&&(this.desiredState.seekState.setState({state:`none`}),this.events.seeked$.next())})).add(e.current$.pipe(Z(e=>e.type)).subscribe(this.info.currentFormat$)).add(e.current$.pipe(Z(e=>e.destination),X()).subscribe(()=>this.isPlaybackStarted=!1)).add(e.providerOutput.availableVideoStreams$.subscribe(this.info.availableVideoStreams$)).add(e.providerOutput.availableVideoTracks$.subscribe(this.info.availableVideoTracks$)).add(Fy({availableVideoTracks:e.providerOutput.availableVideoTracks$,currentVideoStream:e.providerOutput.currentVideoStream$}).pipe(Z(({availableVideoTracks:e,currentVideoStream:t})=>e.filter(e=>t?t.id===e.streamId:!0).map(({quality:e})=>e).sort((e,t)=>Ky(e)?1:Ky(t)?-1:Gy(t,e)?1:-1))).subscribe(this.info.availableQualities$)).add(e.providerOutput.availableVideoTracks$.subscribe(e=>{let t={};for(let n of e)n.fps&&(t[n.quality]=n.fps);this.info.availableQualitiesFps$.next(t)})).add(e.providerOutput.availableAudioStreams$.subscribe(this.info.availableAudioStreams$)).add(e.providerOutput.currentVideoStream$.subscribe(this.info.currentVideoStream$)).add(e.providerOutput.currentAudioStream$.subscribe(this.info.currentAudioStream$)).add(e.providerOutput.availableAudioTracks$.subscribe(this.info.availableAudioTracks$)).add(e.providerOutput.isAudioAvailable$.pipe(X()).subscribe(this.info.isAudioAvailable$)).add(e.providerOutput.currentVideoTrack$.pipe(Y(e=>qy(e))).subscribe(e=>{this.info.currentQuality$.next(e?.quality),this.info.videoBitrate$.next(e?.bitrate)})).add(e.providerOutput.currentVideoSegmentLength$.pipe(X((e,t)=>Math.round(e)===Math.round(t))).subscribe(this.info.currentVideoSegmentLength$)).add(e.providerOutput.currentAudioSegmentLength$.pipe(X((e,t)=>Math.round(e)===Math.round(t))).subscribe(this.info.currentAudioSegmentLength$)).add(e.providerOutput.hostname$.pipe(X()).subscribe(this.info.hostname$)).add(e.providerOutput.httpConnectionType$.pipe(X()).subscribe(this.info.httpConnectionType$)).add(e.providerOutput.httpConnectionReused$.pipe(X()).subscribe(this.info.httpConnectionReused$)).add(e.providerOutput.httpConnectionMetrics$.pipe(X()).subscribe(this.info.httpConnectionMetrics$)).add(e.providerOutput.httpDownloadMetrics$.pipe(X()).subscribe(this.info.httpDownloadMetrics$)).add(e.providerOutput.currentTextTrack$.subscribe(this.info.currentTextTrack$)).add(e.providerOutput.availableTextTracks$.subscribe(this.info.availableTextTracks$)).add(e.providerOutput.autoVideoTrackLimitingAvailable$.subscribe(this.info.autoQualityLimitingAvailable$)).add(e.providerOutput.autoVideoTrackLimits$.subscribe(e=>{this.desiredState.autoVideoTrackLimits.setState(e??{})})).add(e.providerOutput.currentVideoBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentVideoBuffer$)).add(e.providerOutput.currentAudioBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentAudioBuffer$)).add(e.providerOutput.currentNativeVideoBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentNativeVideoBuffer$)).add(e.providerOutput.currentNativeAudioBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentNativeAudioBuffer$)).add(e.providerOutput.totalBufferDuration$.subscribe(this.info.totalBufferDuration$)).add(e.providerOutput.duration$.subscribe(this.info.duration$)).add(e.providerOutput.playedTime$.subscribe(this.info.playedTime$)).add(e.providerOutput.isBuffering$.subscribe(this.info.isBuffering$)).add(e.providerOutput.isLive$.subscribe(this.info.isLive$)).add(e.providerOutput.isLiveEnded$.pipe(nb(e=>e&&this.stop())).subscribe(this.info.isLiveEnded$)).add(e.providerOutput.canPlayLiveTailBuffer$.subscribe(this.info.canPlayLiveTailBuffer$)).add(e.providerOutput.canChangePlaybackSpeed$.subscribe(this.info.canChangePlaybackSpeed$)).add(e.providerOutput.liveTime$.pipe(X()).subscribe(this.info.liveTime$)).add(e.providerOutput.liveBufferTime$.subscribe(this.info.liveBufferTime$)).add(e.providerOutput.liveLatency$.subscribe(this.info.liveLatency$)).add(Fy({hasLiveOffsetByPaused:Zy(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(Z(e=>e.to),X(),Z(e=>e===`paused`)),isLowLatency:e.providerOutput.isLowLatency$}).subscribe(({hasLiveOffsetByPaused:e,isLowLatency:t})=>{if(M.clearTimeout(this.hasLiveOffsetByPausedTimer),e){this.hasLiveOffsetByPausedTimer=M.setTimeout(()=>{this.hasLiveOffsetByPaused.next(!0)},this.getActiveLiveDelay(t));return}this.hasLiveOffsetByPaused.next(!1)})).add(Fy({atLiveEdge:Fy({isLive:e.providerOutput.isLive$,isLowLatency:e.providerOutput.isLowLatency$,position:db({seekState:this.desiredState.seekState,position$:e.providerOutput.position$})}).pipe(Z(({isLive:e,position:t,isLowLatency:n})=>{let r=this.getActiveLiveDelay(n);return e&&Math.abs(t)<r/1e3}),X(),nb(e=>e&&this.setPlaybackRate(1))),hasPausedTimeoutCase:this.hasLiveOffsetByPaused}).pipe(Z(({atLiveEdge:e,hasPausedTimeoutCase:t})=>e&&!t)).subscribe(this.info.atLiveEdge$)).add(Fy({isLive:e.providerOutput.isLive$,position:P.browser.isSafari&&this.tuning.useSafariOptimisticPositionForLiveEdgeBugfix?db({seekState:this.desiredState.seekState,position$:e.providerOutput.position$}):e.providerOutput.position$,duration:e.providerOutput.duration$}).pipe(Z(({isLive:e,position:t,duration:n})=>e&&(Math.abs(n)-Math.abs(t))*1e3<this.tuning.live.activeLiveDelay),X(),nb(e=>e&&this.setPlaybackRate(1))).subscribe(this.info.atLiveDurationEdge$)).add(e.providerOutput.volume$.pipe(Z(e=>e.muted),X()).subscribe(this.info.muted$)).add(e.providerOutput.volume$.pipe(Z(e=>e.volume),X()).subscribe(this.info.volume$)).add(db({seekState:this.desiredState.seekState,position$:e.providerOutput.position$}).subscribe(this.info.position$)).add(e.providerOutput.seekedEvent$.subscribe(()=>{this.info.isEnded$.getValue()&&this.tuning.changePlaybackStateToPausedWhenEnded&&this.play()})).add(Zy(e.providerOutput.endedEvent$.pipe(Xy(!0)),e.providerOutput.seekedEvent$.pipe(Xy(!1))).pipe(X()).subscribe(this.info.isEnded$)).add(e.providerOutput.endedEvent$.subscribe(this.events.ended$)).add(e.providerOutput.loopedEvent$.subscribe(this.events.looped$)).add(e.providerError$.subscribe(this.events.managedError$)).add(e.providerOutput.updateDurationError$.subscribe(this.events.managedError$)).add(e.providerOutput.fetcherRecoverableError$.subscribe(this.events.fetcherRecoverableError$)).add(e.providerOutput.fetcherError$.pipe(Y(e=>e.category===Ly.FATAL)).subscribe(this.events.fatalError$)).add(e.volumeMultiplierError$.subscribe(this.events.managedError$)).add(e.noAvailableProvidersError$.pipe(Z(({forced:e,input:t,supported:n})=>{let r,i;return e?(r=`NoForcedFormat`,i=`${e} was forced but failed or not available`):n.length?(r=`NoFormats`,i=`All formats failed`):t.length?(r=`NoSupportedFormats`,i=`No supported formats`):(r=`NoInputFormats`,i=`No formats supplied`),Py(r),{id:r,category:Ly.VIDEO_PIPELINE,message:i}})).subscribe(this.events.fatalError$)).add(e.providerOutput.element$.subscribe(this.experimental.element$)).add(e.providerOutput.getCurrentTime$.subscribe(this.experimental.getCurrentTime$)).add(e.providerOutput.manifestRequested$.pipe(Q()).subscribe(this.events.manifestRequested$)).add(e.providerOutput.firstBytesManifest$.pipe(Q()).subscribe(this.events.firstBytesManifest$)).add(e.providerOutput.manifestReceived$.pipe(Q()).subscribe(this.events.manifestReceived$)).add(e.providerOutput.firstBytesRequested$.pipe(Q()).subscribe(this.events.firstBytesRequested$)).add(e.providerOutput.firstBytesReceived$.pipe(Q()).subscribe(this.events.firstBytesReceived$)).add(e.providerOutput.firstBytesEvent$.pipe(Q(),Z(e=>e??Qy()-this.initedAt)).subscribe(this.events.firstBytes$)).add(e.providerOutput.loadedMetadataEvent$.subscribe(this.events.loadedMetadata$)).add(e.providerOutput.firstFrameEvent$.pipe(Q(),Z(()=>Qy()-this.initedAt)).subscribe(this.events.firstFrame$)).add(e.providerOutput.canplay$.pipe(Q(),Z(()=>Qy()-this.initedAt)).subscribe(this.events.canplay$)).add(this.throughputEstimator.throughput$.subscribe(this.info.throughputEstimation$)).add(this.throughputEstimator.rtt$.subscribe(this.info.rttEstimation$)).add(e.providerOutput.availableSources$.subscribe(this.info.availableSources$));let t=new ab(!1);this.subscription.add(e.providerOutput.seekedEvent$.subscribe(()=>t.next(!1))).add(e.providerOutput.willSeekEvent$.subscribe(()=>t.next(!0)));let n=new ab(!0),r=new tb;this.subscription.add(r).add(e.current$.subscribe(()=>{n.next(!0),r.unsubscribe(),r.add(this.desiredState.playbackState.stateChangeEnded$.pipe(Y(({to:e})=>e===`playing`),Q()).subscribe(()=>n.next(!1)))}));let i=new ab(!1);this.subscription.add(this.desiredState.playbackState.stateChangeEnded$.subscribe(({to:e})=>i.next(e===`paused`)));let a=0,o=0,s=Zy(e.providerOutput.isBuffering$,t,n,i).pipe(Z(()=>{let r=e.providerOutput.isBuffering$.getValue(),a=t.getValue()||n.getValue()||this.tuning.stallIgnoreOnPause&&i.getValue();return r&&!a}),X());this.subscription.add(s.subscribe(e=>{let{stallIgnoreThreshold:t,stallHandlingStrategy:n}=this.tuning;e?(o=Qy(),n===`verbose`&&this.info.stallStartTime$.next(o),a=M.setTimeout(()=>{this.info.isStalled$.next(!0),o&&this.info.stallStartTime$.next(n===`exclude-threshold`?Qy():o)},t)):(M.clearTimeout(a),this.info.isStalled$.next(!1),o=0,this.info.stallStartTime$.next(0))})),this.subscription.add(Zy(e.providerOutput.canplay$,e.providerOutput.firstFrameEvent$,e.providerOutput.firstBytesEvent$).subscribe(()=>{let t=e.providerOutput.element$.getValue();this.setIntrinsicVideoSize({width:t?.videoWidth,height:t?.videoHeight})})).add(e.providerOutput.currentVideoTrack$.subscribe(t=>{var n,r;let i=e.providerOutput.element$.getValue();this.setIntrinsicVideoSize({width:t==null||(n=t.size)==null?void 0:n.width,height:t==null||(r=t.size)==null?void 0:r.height},{width:i?.videoWidth,height:i?.videoHeight})})),this.subscription.add(Zy(e.providerOutput.inPiP$,e.providerOutput.inFullscreen$,e.providerOutput.element$,e.providerOutput.elementVisible$,this.chromecastInitializer.castState$).subscribe(()=>{let t=e.providerOutput.inPiP$.getValue(),n=e.providerOutput.inFullscreen$.getValue(),r=e.providerOutput.element$.getValue(),i=e.providerOutput.elementVisible$.getValue(),a=this.chromecastInitializer.castState$.getValue(),o;o=a===`CONNECTED`?`second_screen`:r?i?t?`pip`:n?`fullscreen`:`inline`:`invisible`:`none`,this.info.surface$.getValue()!==o&&this.info.surface$.next(o)}))}initChromecastSubscription(){this.subscription.add(this.chromecastInitializer.castState$.subscribe(this.info.chromecastState$)),this.subscription.add(this.chromecastInitializer.connection$.pipe(Z(e=>e?.castDevice.friendlyName)).subscribe(this.info.chromecastDeviceName$)),this.subscription.add(this.chromecastInitializer.errorEvent$.subscribe(this.events.managedError$))}initStartingVideoTrack(e){let t=new tb;this.subscription.add(t),this.subscription.add(e.current$.pipe(X((e,t)=>e.provider===t.provider)).subscribe(()=>{t.unsubscribe(),t.add(e.providerOutput.availableVideoTracks$.pipe(Y(e=>e.length>0),Q()).subscribe(e=>{this.setStartingVideoTrack(e)}))}))}setStartingVideoTrack(e){let t;this.wasSetStartedQuality=!0;let n=this.explicitInitialQuality??this.info.currentQuality$.getValue();n&&(t=e.find(({quality:e,tvDisabled:t})=>e===n&&!t),t||this.setAutoQuality(!0)),!t&&(t=za({videoTracks:e,tuning:this.tuning,abrLogger:this.abrLogger,tracer:this.tracer,container:this.domContainer?.getBoundingClientRect()??null,panelSize:this.config.panelSize??null,estimatedThroughput:this.throughputEstimator.throughput$.getValue(),limits:this.desiredState.autoVideoTrackLimits.getState(),playbackRate:this.info.currentPlaybackRate$.getValue(),forwardBufferHealth:0})),this.desiredState.videoTrack.startTransitionTo(t),this.info.currentQuality$.next(t.quality),this.info.videoBitrate$.next(t.bitrate)}initLogs(){this.persistentSubscription.add(Zy(this.desiredState.videoTrack.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`quality`,type:`start`}))),this.desiredState.videoTrack.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`quality`,type:`end`}))),this.desiredState.autoVideoTrackSwitching.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`autoQualityEnabled`,type:`start`}))),this.desiredState.autoVideoTrackSwitching.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`autoQualityEnabled`,type:`end`}))),this.desiredState.seekState.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`seekState`,type:`start`}))),this.desiredState.seekState.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`seekState`,type:`end`}))),this.desiredState.playbackState.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`playbackState`,type:`start`}))),this.desiredState.playbackState.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`playbackState`,type:`end`})))).pipe(Z(e=>({component:`desiredState`,message:`[${e.entity} change] ${e.type}: ${JSON.stringify(e.transition)}`}))).subscribe(this.logger.log)),this.persistentSubscription.add(this.logger.log$.subscribe(this.events.log$))}initDebugTelemetry(){let e=this.providerContainer?.providerOutput;Py(this.providerContainer),Py(e),vp(),this.experimental.enableDebugTelemetry$.next(this.tuning.enableTelemetryAtStart),[this.experimental.enableDebugTelemetry$.subscribe(e=>_p(e)),this.providerContainer.current$.subscribe(({type:e})=>bp(`provider`,e)),e.duration$.subscribe(e=>bp(`duration`,e)),e.availableVideoTracks$.pipe(Y(e=>!!e.length),Q()).subscribe(e=>bp(`tracks`,e)),this.events.fatalError$.subscribe(new xp(`fatalError`)),this.events.managedError$.subscribe(new xp(`managedError`)),e.position$.subscribe(new xp(`position`)),e.currentVideoTrack$.pipe(Z(e=>e?.quality)).subscribe(new xp(`quality`)),this.info.currentVideoBuffer$.subscribe(new xp(`buffer`)),e.isBuffering$.subscribe(new xp(`isBuffering`))].forEach(e=>this.subscription.add(e)),bp(`codecs`,P.video.supportedCodecs)}initTracerSubscription(){let e=Hy(this.tracer.log.bind(this.tracer)),t=Hy(this.tracer.error.bind(this.tracer));this.subscription.add(this.info.playbackState$.subscribe(e(`playbackState`))).add(this.info.isLooped$.subscribe(e(`isLooped`))).add(this.info.currentPlaybackRate$.pipe(X()).subscribe(e(`currentPlaybackRate`))).add(this.info.isAutoQualityEnabled$.subscribe(e(`isAutoQualityEnabled`))).add(this.info.autoQualityLimits$.subscribe(e(`autoQualityLimits`))).add(this.info.currentFormat$.subscribe(e(`currentFormat`))).add(this.info.availableQualities$.subscribe(e(`availableQualities`))).add(this.info.availableQualitiesFps$.subscribe(e(`availableQualitiesFps`))).add(this.info.availableAudioTracks$.subscribe(e(`availableAudioTracks`))).add(this.info.isAudioAvailable$.subscribe(e(`isAudioAvailable`))).add(Fy({currentQuality:this.info.currentQuality$,videoBitrate:this.info.videoBitrate$}).pipe(Y(({currentQuality:e,videoBitrate:t})=>!!e&&!!t),X((e,t)=>e.currentQuality===t.currentQuality)).subscribe(e(`currentVideoTrack`))).add(this.info.currentVideoSegmentLength$.pipe(Y(e=>e>0),X()).subscribe(e(`currentVideoSegmentLength`))).add(this.info.currentAudioSegmentLength$.pipe(Y(e=>e>0),X()).subscribe(e(`currentAudioSegmentLength`))).add(this.info.hostname$.subscribe(e(`hostname`))).add(this.info.currentTextTrack$.subscribe(e(`currentTextTrack`))).add(this.info.availableTextTracks$.subscribe(e(`availableTextTracks`))).add(this.info.autoQualityLimitingAvailable$.subscribe(e(`autoQualityLimitingAvailable`))).add(Fy({currentBuffer:this.info.currentVideoBuffer$.pipe(Y(e=>e.end>0),X((e,t)=>e.end===t.end&&e.start===t.start)),position:this.info.position$.pipe(X())}).pipe(rb(1e3)).subscribe(e(`currentBufferAndPosition`))).add(this.info.duration$.pipe(X()).subscribe(e(`duration`))).add(this.info.isBuffering$.subscribe(e(`isBuffering`))).add(this.info.isLive$.pipe(X()).subscribe(e(`isLive`))).add(this.info.canChangePlaybackSpeed$.pipe(X()).subscribe(e(`canChangePlaybackSpeed`))).add(Fy({liveTime:this.info.liveTime$,liveBufferTime:this.info.liveBufferTime$,position:this.info.position$}).pipe(Y(({liveTime:e,liveBufferTime:t})=>!!e&&!!t),rb(1e3)).subscribe(e(`liveBufferAndPosition`))).add(this.info.atLiveEdge$.pipe(X(),Y(e=>e===!0)).subscribe(e(`atLiveEdge`))).add(this.info.atLiveDurationEdge$.pipe(X(),Y(e=>e===!0)).subscribe(e(`atLiveDurationEdge`))).add(this.info.muted$.pipe(X()).subscribe(e(`muted`))).add(this.info.volume$.pipe(X()).subscribe(e(`volume`))).add(this.info.isEnded$.pipe(X(),Y(e=>e===!0)).subscribe(e(`isEnded`))).add(this.info.availableSources$.subscribe(e(`availableSources`))).add(Fy({throughputEstimation:this.info.throughputEstimation$,rtt:this.info.rttEstimation$}).pipe(Y(({throughputEstimation:e,rtt:t})=>!!e&&!!t),rb(3e3)).subscribe(e(`throughputEstimation`))).add(this.info.isStalled$.subscribe(e(`isStalled`))).add(this.info.surface$.subscribe(e(`surface`))).add(this.events.ended$.subscribe(e(`ended`))).add(this.events.looped$.subscribe(e(`looped`))).add(this.events.managedError$.subscribe(t(`managedError`))).add(this.events.fatalError$.subscribe(t(`fatalError`))).add(this.events.firstBytes$.subscribe(e(`firstBytes`))).add(this.events.firstFrame$.subscribe(e(`firstFrame`))).add(this.events.canplay$.subscribe(e(`canplay`)))}initWakeLock(){var e=this;let t=Uy();if(!t.navigator.wakeLock||!this.tuning.enableWakeLock)return;let n,r=()=>{n?.release(),n=void 0},i=function(){var t=D(function*(){r(),n=yield window.navigator.wakeLock.request(`screen`).catch(t=>{t instanceof DOMException&&t.name===`NotAllowedError`||e.events.managedError$.next({id:`WakeLock`,category:Ly.DOM,message:String(t)})})});return function(){return t.apply(this,arguments)}}();this.subscription.add(Zy(zy(t.document,`visibilitychange`),zy(t.document,`fullscreenchange`),this.desiredState.playbackState.stateChangeEnded$).subscribe(()=>{let e=t.document.visibilityState===`visible`,a=this.desiredState.playbackState.getState()===`playing`,o=!!n&&!n?.released;e&&a?o||i():r()})).add(this.events.willDestruct$.subscribe(r))}setVideoTrackIdByQuality(e,t){let n=e.find(e=>e.quality===t);this.tracer.log(`setVideoTrackIdByQuality`,Ry({quality:t,availableTracks:Ry(e),track:Ry(n),isAutoQuality:!n})),n?n.tvDisabled?(this.setAutoQuality(!0),this.events.managedError$.next({id:`SetQualityTrackTvDisabled`,category:Ly.WTF,message:`Set quality was called on track with tvDisabled flag`})):this.desiredState.videoTrack.startTransitionTo(n):this.setAutoQuality(!0)}getActiveLiveDelay(e=!1){return e?this.tuning.live.lowLatencyActiveLiveDelay:this.tuning.live.activeLiveDelay}isNotActiveTabCase(){return Uy().document.hidden&&this.tuning.autoplayOnlyInActiveTab&&!es()}}var Pb=`@vkontakte/videoplayer-core@${te}`;;return{ae,oe,Ab,ne,Ob,ce,Pb,jb,kb,se,te,Mb,ie,re,Nb,is,Ht,P,pt};}();var{ae:_oxcModkv5rn1_ae,oe:_oxcModkv5rn1_oe,Ab:_oxcModkv5rn1_Ab,ne:_oxcModkv5rn1_ne,Ob:_oxcModkv5rn1_Ob,ce:_oxcModkv5rn1_ce,Pb:_oxcModkv5rn1_Pb,jb:_oxcModkv5rn1_jb,kb:_oxcModkv5rn1_kb,se:_oxcModkv5rn1_se,te:_oxcModkv5rn1_te,Mb:_oxcModkv5rn1_Mb,ie:_oxcModkv5rn1_ie,re:_oxcModkv5rn1_re,Nb:_oxcModkv5rn1_Nb,is:_oxcModkv5rn1_is,Ht:_oxcModkv5rn1_Ht,P:_oxcModkv5rn1_P,pt:_oxcModkv5rn1_pt}=_oxcModkv5rn1;export{_oxcModkv5rn1_ae as ChromecastState,_oxcModkv5rn1_oe as HttpConnectionType,_oxcModkv5rn1_Ab as Observable,_oxcModkv5rn1_ne as PlaybackState,_oxcModkv5rn1_Ob as Player,_oxcModkv5rn1_ce as PredefinedQualityLimits,_oxcModkv5rn1_Pb as SDK_VERSION,_oxcModkv5rn1_jb as Subject,_oxcModkv5rn1_kb as Subscription,_oxcModkv5rn1_se as Surface,_oxcModkv5rn1_te as VERSION,_oxcModkv5rn1_Mb as ValueSubject,_oxcModkv5rn1_ie as VideoCodecName,_oxcModkv5rn1_re as VideoFormat,_oxcModkv5rn1_Nb as VideoQuality,_oxcModkv5rn1_is as WebmCodecStrategy,_oxcModkv5rn1_Ht as areValidLiveRecordSources,_oxcModkv5rn1_P as clientChecker,_oxcModkv5rn1_pt as isMobile};