@vkontakte/videoplayer-core 2.0.116-dev.66fa3538.0 → 2.0.116-dev.68a2c5fb.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.cjs.js +9 -9
- package/es2015.esm.js +7 -7
- package/es2018.cjs.js +10 -10
- package/es2018.esm.js +8 -8
- package/esnext.cjs.js +4 -4
- package/esnext.esm.js +4 -4
- package/evergreen.esm.js +4 -4
- package/package.json +2 -2
- package/types/player/Player.d.ts +2 -0
- package/types/utils/tuningConfig.d.ts +1 -0
package/esnext.esm.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @vkontakte/videoplayer-core v2.0.116-dev.
|
|
3
|
-
*
|
|
2
|
+
* @vkontakte/videoplayer-core v2.0.116-dev.68a2c5fb.0
|
|
3
|
+
* Thu, 07 Nov 2024 09:04:05 GMT
|
|
4
4
|
* https://st.mycdn.me/static/vkontakte-videoplayer/2-0-116/doc/
|
|
5
5
|
*/
|
|
6
|
-
var Yg=Object.create;var zu=Object.defineProperty;var zg=Object.getOwnPropertyDescriptor;var Kg=Object.getOwnPropertyNames;var Jg=Object.getPrototypeOf,Xg=Object.prototype.hasOwnProperty;var f=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var Zg=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Kg(e))!Xg.call(r,a)&&a!==t&&zu(r,a,{get:()=>e[a],enumerable:!(i=zg(e,a))||i.enumerable});return r};var Ve=(r,e,t)=>(t=r!=null?Yg(Jg(r)):{},Zg(e||!r||!r.__esModule?zu(t,"default",{value:r,enumerable:!0}):t,r));var Se=f((t$,rl)=>{"use strict";rl.exports=function(r){try{return!!r()}catch{return!0}}});var Ui=f((i$,al)=>{"use strict";var oS=Se();al.exports=!oS(function(){var r=function(){}.bind();return typeof r!="function"||r.hasOwnProperty("prototype")})});var oe=f((r$,ol)=>{"use strict";var sl=Ui(),nl=Function.prototype,Js=nl.call,uS=sl&&nl.bind.bind(Js,Js);ol.exports=sl?uS:function(r){return function(){return Js.apply(r,arguments)}}});var ui=f((a$,ll)=>{"use strict";var ul=oe(),lS=ul({}.toString),cS=ul("".slice);ll.exports=function(r){return cS(lS(r),8,-1)}});var dl=f((s$,cl)=>{"use strict";var dS=oe(),pS=Se(),hS=ui(),Xs=Object,fS=dS("".split);cl.exports=pS(function(){return!Xs("z").propertyIsEnumerable(0)})?function(r){return hS(r)==="String"?fS(r,""):Xs(r)}:Xs});var li=f((n$,pl)=>{"use strict";pl.exports=function(r){return r==null}});var qi=f((o$,hl)=>{"use strict";var mS=li(),bS=TypeError;hl.exports=function(r){if(mS(r))throw new bS("Can't call method on "+r);return r}});var ci=f((u$,fl)=>{"use strict";var gS=dl(),SS=qi();fl.exports=function(r){return gS(SS(r))}});var Zs=f((l$,ml)=>{"use strict";ml.exports=function(){}});var Dt=f((c$,bl)=>{"use strict";bl.exports={}});var G=f((en,gl)=>{"use strict";var Hi=function(r){return r&&r.Math===Math&&r};gl.exports=Hi(typeof globalThis=="object"&&globalThis)||Hi(typeof window=="object"&&window)||Hi(typeof self=="object"&&self)||Hi(typeof global=="object"&&global)||Hi(typeof en=="object"&&en)||function(){return this}()||Function("return this")()});var j=f((d$,Sl)=>{"use strict";var tn=typeof document=="object"&&document.all;Sl.exports=typeof tn>"u"&&tn!==void 0?function(r){return typeof r=="function"||r===tn}:function(r){return typeof r=="function"}});var Tl=f((p$,yl)=>{"use strict";var vS=G(),yS=j(),vl=vS.WeakMap;yl.exports=yS(vl)&&/native code/.test(String(vl))});var Ae=f((h$,Il)=>{"use strict";var TS=j();Il.exports=function(r){return typeof r=="object"?r!==null:TS(r)}});var ke=f((f$,El)=>{"use strict";var IS=Se();El.exports=!IS(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7})});var Pa=f((m$,Pl)=>{"use strict";var ES=G(),xl=Ae(),rn=ES.document,xS=xl(rn)&&xl(rn.createElement);Pl.exports=function(r){return xS?rn.createElement(r):{}}});var an=f((b$,Al)=>{"use strict";var PS=ke(),AS=Se(),kS=Pa();Al.exports=!PS&&!AS(function(){return Object.defineProperty(kS("div"),"a",{get:function(){return 7}}).a!==7})});var sn=f((g$,kl)=>{"use strict";var wS=ke(),RS=Se();kl.exports=wS&&RS(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42})});var Qe=f((S$,wl)=>{"use strict";var $S=Ae(),LS=String,MS=TypeError;wl.exports=function(r){if($S(r))return r;throw new MS(LS(r)+" is not an object")}});var ve=f((v$,Rl)=>{"use strict";var CS=Ui(),Aa=Function.prototype.call;Rl.exports=CS?Aa.bind(Aa):function(){return Aa.apply(Aa,arguments)}});var ka=f((y$,$l)=>{"use strict";$l.exports={}});var it=f((T$,Ml)=>{"use strict";var nn=ka(),on=G(),DS=j(),Ll=function(r){return DS(r)?r:void 0};Ml.exports=function(r,e){return arguments.length<2?Ll(nn[r])||Ll(on[r]):nn[r]&&nn[r][e]||on[r]&&on[r][e]}});var ji=f((I$,Cl)=>{"use strict";var BS=oe();Cl.exports=BS({}.isPrototypeOf)});var di=f((E$,Vl)=>{"use strict";var VS=G(),Dl=VS.navigator,Bl=Dl&&Dl.userAgent;Vl.exports=Bl?String(Bl):""});var ln=f((x$,ql)=>{"use strict";var Ul=G(),un=di(),Ol=Ul.process,_l=Ul.Deno,Nl=Ol&&Ol.versions||_l&&_l.version,Fl=Nl&&Nl.v8,Oe,wa;Fl&&(Oe=Fl.split("."),wa=Oe[0]>0&&Oe[0]<4?1:+(Oe[0]+Oe[1]));!wa&&un&&(Oe=un.match(/Edge\/(\d+)/),(!Oe||Oe[1]>=74)&&(Oe=un.match(/Chrome\/(\d+)/),Oe&&(wa=+Oe[1])));ql.exports=wa});var cn=f((P$,jl)=>{"use strict";var Hl=ln(),OS=Se(),_S=G(),NS=_S.String;jl.exports=!!Object.getOwnPropertySymbols&&!OS(function(){var r=Symbol("symbol detection");return!NS(r)||!(Object(r)instanceof Symbol)||!Symbol.sham&&Hl&&Hl<41})});var dn=f((A$,Gl)=>{"use strict";var FS=cn();Gl.exports=FS&&!Symbol.sham&&typeof Symbol.iterator=="symbol"});var pn=f((k$,Wl)=>{"use strict";var US=it(),qS=j(),HS=ji(),jS=dn(),GS=Object;Wl.exports=jS?function(r){return typeof r=="symbol"}:function(r){var e=US("Symbol");return qS(e)&&HS(e.prototype,GS(r))}});var Gi=f((w$,Ql)=>{"use strict";var WS=String;Ql.exports=function(r){try{return WS(r)}catch{return"Object"}}});var rt=f((R$,Yl)=>{"use strict";var QS=j(),YS=Gi(),zS=TypeError;Yl.exports=function(r){if(QS(r))return r;throw new zS(YS(r)+" is not a function")}});var Wi=f(($$,zl)=>{"use strict";var KS=rt(),JS=li();zl.exports=function(r,e){var t=r[e];return JS(t)?void 0:KS(t)}});var Jl=f((L$,Kl)=>{"use strict";var hn=ve(),fn=j(),mn=Ae(),XS=TypeError;Kl.exports=function(r,e){var t,i;if(e==="string"&&fn(t=r.toString)&&!mn(i=hn(t,r))||fn(t=r.valueOf)&&!mn(i=hn(t,r))||e!=="string"&&fn(t=r.toString)&&!mn(i=hn(t,r)))return i;throw new XS("Can't convert object to primitive value")}});var _e=f((M$,Xl)=>{"use strict";Xl.exports=!0});var tc=f((C$,ec)=>{"use strict";var Zl=G(),ZS=Object.defineProperty;ec.exports=function(r,e){try{ZS(Zl,r,{value:e,configurable:!0,writable:!0})}catch{Zl[r]=e}return e}});var Qi=f((D$,ac)=>{"use strict";var ev=_e(),tv=G(),iv=tc(),ic="__core-js_shared__",rc=ac.exports=tv[ic]||iv(ic,{});(rc.versions||(rc.versions=[])).push({version:"3.38.0",mode:ev?"pure":"global",copyright:"\xA9 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.38.0/LICENSE",source:"https://github.com/zloirock/core-js"})});var bn=f((B$,nc)=>{"use strict";var sc=Qi();nc.exports=function(r,e){return sc[r]||(sc[r]=e||{})}});var Yi=f((V$,oc)=>{"use strict";var rv=qi(),av=Object;oc.exports=function(r){return av(rv(r))}});var Ne=f((O$,uc)=>{"use strict";var sv=oe(),nv=Yi(),ov=sv({}.hasOwnProperty);uc.exports=Object.hasOwn||function(e,t){return ov(nv(e),t)}});var gn=f((_$,lc)=>{"use strict";var uv=oe(),lv=0,cv=Math.random(),dv=uv(1 .toString);lc.exports=function(r){return"Symbol("+(r===void 0?"":r)+")_"+dv(++lv+cv,36)}});var ie=f((N$,dc)=>{"use strict";var pv=G(),hv=bn(),cc=Ne(),fv=gn(),mv=cn(),bv=dn(),pi=pv.Symbol,Sn=hv("wks"),gv=bv?pi.for||pi:pi&&pi.withoutSetter||fv;dc.exports=function(r){return cc(Sn,r)||(Sn[r]=mv&&cc(pi,r)?pi[r]:gv("Symbol."+r)),Sn[r]}});var mc=f((F$,fc)=>{"use strict";var Sv=ve(),pc=Ae(),hc=pn(),vv=Wi(),yv=Jl(),Tv=ie(),Iv=TypeError,Ev=Tv("toPrimitive");fc.exports=function(r,e){if(!pc(r)||hc(r))return r;var t=vv(r,Ev),i;if(t){if(e===void 0&&(e="default"),i=Sv(t,r,e),!pc(i)||hc(i))return i;throw new Iv("Can't convert object to primitive value")}return e===void 0&&(e="number"),yv(r,e)}});var vn=f((U$,bc)=>{"use strict";var xv=mc(),Pv=pn();bc.exports=function(r){var e=xv(r,"string");return Pv(e)?e:e+""}});var Bt=f(Sc=>{"use strict";var Av=ke(),kv=an(),wv=sn(),Ra=Qe(),gc=vn(),Rv=TypeError,yn=Object.defineProperty,$v=Object.getOwnPropertyDescriptor,Tn="enumerable",In="configurable",En="writable";Sc.f=Av?wv?function(e,t,i){if(Ra(e),t=gc(t),Ra(i),typeof e=="function"&&t==="prototype"&&"value"in i&&En in i&&!i[En]){var a=$v(e,t);a&&a[En]&&(e[t]=i.value,i={configurable:In in i?i[In]:a[In],enumerable:Tn in i?i[Tn]:a[Tn],writable:!1})}return yn(e,t,i)}:yn:function(e,t,i){if(Ra(e),t=gc(t),Ra(i),kv)try{return yn(e,t,i)}catch{}if("get"in i||"set"in i)throw new Rv("Accessors not supported");return"value"in i&&(e[t]=i.value),e}});var zi=f((H$,vc)=>{"use strict";vc.exports=function(r,e){return{enumerable:!(r&1),configurable:!(r&2),writable:!(r&4),value:e}}});var hi=f((j$,yc)=>{"use strict";var Lv=ke(),Mv=Bt(),Cv=zi();yc.exports=Lv?function(r,e,t){return Mv.f(r,e,Cv(1,t))}:function(r,e,t){return r[e]=t,r}});var $a=f((G$,Ic)=>{"use strict";var Dv=bn(),Bv=gn(),Tc=Dv("keys");Ic.exports=function(r){return Tc[r]||(Tc[r]=Bv(r))}});var La=f((W$,Ec)=>{"use strict";Ec.exports={}});var kn=f((Q$,Ac)=>{"use strict";var Vv=Tl(),Pc=G(),Ov=Ae(),_v=hi(),xn=Ne(),Pn=Qi(),Nv=$a(),Fv=La(),xc="Object already initialized",An=Pc.TypeError,Uv=Pc.WeakMap,Ma,Ki,Ca,qv=function(r){return Ca(r)?Ki(r):Ma(r,{})},Hv=function(r){return function(e){var t;if(!Ov(e)||(t=Ki(e)).type!==r)throw new An("Incompatible receiver, "+r+" required");return t}};Vv||Pn.state?(Fe=Pn.state||(Pn.state=new Uv),Fe.get=Fe.get,Fe.has=Fe.has,Fe.set=Fe.set,Ma=function(r,e){if(Fe.has(r))throw new An(xc);return e.facade=r,Fe.set(r,e),e},Ki=function(r){return Fe.get(r)||{}},Ca=function(r){return Fe.has(r)}):(Vt=Nv("state"),Fv[Vt]=!0,Ma=function(r,e){if(xn(r,Vt))throw new An(xc);return e.facade=r,_v(r,Vt,e),e},Ki=function(r){return xn(r,Vt)?r[Vt]:{}},Ca=function(r){return xn(r,Vt)});var Fe,Vt;Ac.exports={set:Ma,get:Ki,has:Ca,enforce:qv,getterFor:Hv}});var wn=f((Y$,$c)=>{"use strict";var jv=Ui(),Rc=Function.prototype,kc=Rc.apply,wc=Rc.call;$c.exports=typeof Reflect=="object"&&Reflect.apply||(jv?wc.bind(kc):function(){return wc.apply(kc,arguments)})});var Rn=f((z$,Lc)=>{"use strict";var Gv=ui(),Wv=oe();Lc.exports=function(r){if(Gv(r)==="Function")return Wv(r)}});var Bc=f(Dc=>{"use strict";var Mc={}.propertyIsEnumerable,Cc=Object.getOwnPropertyDescriptor,Qv=Cc&&!Mc.call({1:2},1);Dc.f=Qv?function(e){var t=Cc(this,e);return!!t&&t.enumerable}:Mc});var _c=f(Oc=>{"use strict";var Yv=ke(),zv=ve(),Kv=Bc(),Jv=zi(),Xv=ci(),Zv=vn(),ey=Ne(),ty=an(),Vc=Object.getOwnPropertyDescriptor;Oc.f=Yv?Vc:function(e,t){if(e=Xv(e),t=Zv(t),ty)try{return Vc(e,t)}catch{}if(ey(e,t))return Jv(!zv(Kv.f,e,t),e[t])}});var $n=f((X$,Nc)=>{"use strict";var iy=Se(),ry=j(),ay=/#|\.prototype\./,Ji=function(r,e){var t=ny[sy(r)];return t===uy?!0:t===oy?!1:ry(e)?iy(e):!!e},sy=Ji.normalize=function(r){return String(r).replace(ay,".").toLowerCase()},ny=Ji.data={},oy=Ji.NATIVE="N",uy=Ji.POLYFILL="P";Nc.exports=Ji});var Xi=f((Z$,Uc)=>{"use strict";var Fc=Rn(),ly=rt(),cy=Ui(),dy=Fc(Fc.bind);Uc.exports=function(r,e){return ly(r),e===void 0?r:cy?dy(r,e):function(){return r.apply(e,arguments)}}});var we=f((eL,Hc)=>{"use strict";var Zi=G(),py=wn(),hy=Rn(),fy=j(),my=_c().f,by=$n(),fi=ka(),gy=Xi(),mi=hi(),qc=Ne();Qi();var Sy=function(r){var e=function(t,i,a){if(this instanceof e){switch(arguments.length){case 0:return new r;case 1:return new r(t);case 2:return new r(t,i)}return new r(t,i,a)}return py(r,this,arguments)};return e.prototype=r.prototype,e};Hc.exports=function(r,e){var t=r.target,i=r.global,a=r.stat,s=r.proto,n=i?Zi:a?Zi[t]:Zi[t]&&Zi[t].prototype,o=i?fi:fi[t]||mi(fi,t,{})[t],u=o.prototype,l,c,d,p,h,m,b,g,y;for(p in e)l=by(i?p:t+(a?".":"#")+p,r.forced),c=!l&&n&&qc(n,p),m=o[p],c&&(r.dontCallGetSet?(y=my(n,p),b=y&&y.value):b=n[p]),h=c&&b?b:e[p],!(!l&&!s&&typeof m==typeof h)&&(r.bind&&c?g=gy(h,Zi):r.wrap&&c?g=Sy(h):s&&fy(h)?g=hy(h):g=h,(r.sham||h&&h.sham||m&&m.sham)&&mi(g,"sham",!0),mi(o,p,g),s&&(d=t+"Prototype",qc(fi,d)||mi(fi,d,{}),mi(fi[d],p,h),r.real&&u&&(l||!u[p])&&mi(u,p,h)))}});var Wc=f((tL,Gc)=>{"use strict";var Ln=ke(),vy=Ne(),jc=Function.prototype,yy=Ln&&Object.getOwnPropertyDescriptor,Mn=vy(jc,"name"),Ty=Mn&&function(){}.name==="something",Iy=Mn&&(!Ln||Ln&&yy(jc,"name").configurable);Gc.exports={EXISTS:Mn,PROPER:Ty,CONFIGURABLE:Iy}});var Yc=f((iL,Qc)=>{"use strict";var Ey=Math.ceil,xy=Math.floor;Qc.exports=Math.trunc||function(e){var t=+e;return(t>0?xy:Ey)(t)}});var Da=f((rL,zc)=>{"use strict";var Py=Yc();zc.exports=function(r){var e=+r;return e!==e||e===0?0:Py(e)}});var Jc=f((aL,Kc)=>{"use strict";var Ay=Da(),ky=Math.max,wy=Math.min;Kc.exports=function(r,e){var t=Ay(r);return t<0?ky(t+e,0):wy(t,e)}});var Zc=f((sL,Xc)=>{"use strict";var Ry=Da(),$y=Math.min;Xc.exports=function(r){var e=Ry(r);return e>0?$y(e,9007199254740991):0}});var Ba=f((nL,ed)=>{"use strict";var Ly=Zc();ed.exports=function(r){return Ly(r.length)}});var rd=f((oL,id)=>{"use strict";var My=ci(),Cy=Jc(),Dy=Ba(),td=function(r){return function(e,t,i){var a=My(e),s=Dy(a);if(s===0)return!r&&-1;var n=Cy(i,s),o;if(r&&t!==t){for(;s>n;)if(o=a[n++],o!==o)return!0}else for(;s>n;n++)if((r||n in a)&&a[n]===t)return r||n||0;return!r&&-1}};id.exports={includes:td(!0),indexOf:td(!1)}});var nd=f((uL,sd)=>{"use strict";var By=oe(),Cn=Ne(),Vy=ci(),Oy=rd().indexOf,_y=La(),ad=By([].push);sd.exports=function(r,e){var t=Vy(r),i=0,a=[],s;for(s in t)!Cn(_y,s)&&Cn(t,s)&&ad(a,s);for(;e.length>i;)Cn(t,s=e[i++])&&(~Oy(a,s)||ad(a,s));return a}});var Dn=f((lL,od)=>{"use strict";od.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]});var ld=f((cL,ud)=>{"use strict";var Ny=nd(),Fy=Dn();ud.exports=Object.keys||function(e){return Ny(e,Fy)}});var dd=f(cd=>{"use strict";var Uy=ke(),qy=sn(),Hy=Bt(),jy=Qe(),Gy=ci(),Wy=ld();cd.f=Uy&&!qy?Object.defineProperties:function(e,t){jy(e);for(var i=Gy(t),a=Wy(t),s=a.length,n=0,o;s>n;)Hy.f(e,o=a[n++],i[o]);return e}});var Bn=f((pL,pd)=>{"use strict";var Qy=it();pd.exports=Qy("document","documentElement")});var Nn=f((hL,vd)=>{"use strict";var Yy=Qe(),zy=dd(),hd=Dn(),Ky=La(),Jy=Bn(),Xy=Pa(),Zy=$a(),fd=">",md="<",On="prototype",_n="script",gd=Zy("IE_PROTO"),Vn=function(){},Sd=function(r){return md+_n+fd+r+md+"/"+_n+fd},bd=function(r){r.write(Sd("")),r.close();var e=r.parentWindow.Object;return r=null,e},eT=function(){var r=Xy("iframe"),e="java"+_n+":",t;return r.style.display="none",Jy.appendChild(r),r.src=String(e),t=r.contentWindow.document,t.open(),t.write(Sd("document.F=Object")),t.close(),t.F},Va,Oa=function(){try{Va=new ActiveXObject("htmlfile")}catch{}Oa=typeof document<"u"?document.domain&&Va?bd(Va):eT():bd(Va);for(var r=hd.length;r--;)delete Oa[On][hd[r]];return Oa()};Ky[gd]=!0;vd.exports=Object.create||function(e,t){var i;return e!==null?(Vn[On]=Yy(e),i=new Vn,Vn[On]=null,i[gd]=e):i=Oa(),t===void 0?i:zy.f(i,t)}});var Td=f((fL,yd)=>{"use strict";var tT=Se();yd.exports=!tT(function(){function r(){}return r.prototype.constructor=null,Object.getPrototypeOf(new r)!==r.prototype})});var Un=f((mL,Ed)=>{"use strict";var iT=Ne(),rT=j(),aT=Yi(),sT=$a(),nT=Td(),Id=sT("IE_PROTO"),Fn=Object,oT=Fn.prototype;Ed.exports=nT?Fn.getPrototypeOf:function(r){var e=aT(r);if(iT(e,Id))return e[Id];var t=e.constructor;return rT(t)&&e instanceof t?t.prototype:e instanceof Fn?oT:null}});var bi=f((bL,xd)=>{"use strict";var uT=hi();xd.exports=function(r,e,t,i){return i&&i.enumerable?r[e]=t:uT(r,e,t),r}});var Gn=f((gL,kd)=>{"use strict";var lT=Se(),cT=j(),dT=Ae(),pT=Nn(),Pd=Un(),hT=bi(),fT=ie(),mT=_e(),jn=fT("iterator"),Ad=!1,at,qn,Hn;[].keys&&(Hn=[].keys(),"next"in Hn?(qn=Pd(Pd(Hn)),qn!==Object.prototype&&(at=qn)):Ad=!0);var bT=!dT(at)||lT(function(){var r={};return at[jn].call(r)!==r});bT?at={}:mT&&(at=pT(at));cT(at[jn])||hT(at,jn,function(){return this});kd.exports={IteratorPrototype:at,BUGGY_SAFARI_ITERATORS:Ad}});var _a=f((SL,Rd)=>{"use strict";var gT=ie(),ST=gT("toStringTag"),wd={};wd[ST]="z";Rd.exports=String(wd)==="[object z]"});var er=f((vL,$d)=>{"use strict";var vT=_a(),yT=j(),Na=ui(),TT=ie(),IT=TT("toStringTag"),ET=Object,xT=Na(function(){return arguments}())==="Arguments",PT=function(r,e){try{return r[e]}catch{}};$d.exports=vT?Na:function(r){var e,t,i;return r===void 0?"Undefined":r===null?"Null":typeof(t=PT(e=ET(r),IT))=="string"?t:xT?Na(e):(i=Na(e))==="Object"&&yT(e.callee)?"Arguments":i}});var Md=f((yL,Ld)=>{"use strict";var AT=_a(),kT=er();Ld.exports=AT?{}.toString:function(){return"[object "+kT(this)+"]"}});var tr=f((TL,Dd)=>{"use strict";var wT=_a(),RT=Bt().f,$T=hi(),LT=Ne(),MT=Md(),CT=ie(),Cd=CT("toStringTag");Dd.exports=function(r,e,t,i){var a=t?r:r&&r.prototype;a&&(LT(a,Cd)||RT(a,Cd,{configurable:!0,value:e}),i&&!wT&&$T(a,"toString",MT))}});var Vd=f((IL,Bd)=>{"use strict";var DT=Gn().IteratorPrototype,BT=Nn(),VT=zi(),OT=tr(),_T=Dt(),NT=function(){return this};Bd.exports=function(r,e,t,i){var a=e+" Iterator";return r.prototype=BT(DT,{next:VT(+!i,t)}),OT(r,a,!1,!0),_T[a]=NT,r}});var _d=f((EL,Od)=>{"use strict";var FT=oe(),UT=rt();Od.exports=function(r,e,t){try{return FT(UT(Object.getOwnPropertyDescriptor(r,e)[t]))}catch{}}});var Fd=f((xL,Nd)=>{"use strict";var qT=Ae();Nd.exports=function(r){return qT(r)||r===null}});var qd=f((PL,Ud)=>{"use strict";var HT=Fd(),jT=String,GT=TypeError;Ud.exports=function(r){if(HT(r))return r;throw new GT("Can't set "+jT(r)+" as a prototype")}});var Wn=f((AL,Hd)=>{"use strict";var WT=_d(),QT=Ae(),YT=qi(),zT=qd();Hd.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var r=!1,e={},t;try{t=WT(Object.prototype,"__proto__","set"),t(e,[]),r=e instanceof Array}catch{}return function(a,s){return YT(a),zT(s),QT(a)&&(r?t(a,s):a.__proto__=s),a}}():void 0)});var ep=f((kL,Zd)=>{"use strict";var KT=we(),JT=ve(),Fa=_e(),Jd=Wc(),XT=j(),ZT=Vd(),jd=Un(),Gd=Wn(),eI=tr(),tI=hi(),Qn=bi(),iI=ie(),Wd=Dt(),Xd=Gn(),rI=Jd.PROPER,aI=Jd.CONFIGURABLE,Qd=Xd.IteratorPrototype,Ua=Xd.BUGGY_SAFARI_ITERATORS,ir=iI("iterator"),Yd="keys",rr="values",zd="entries",Kd=function(){return this};Zd.exports=function(r,e,t,i,a,s,n){ZT(t,e,i);var o=function(y){if(y===a&&p)return p;if(!Ua&&y&&y in c)return c[y];switch(y){case Yd:return function(){return new t(this,y)};case rr:return function(){return new t(this,y)};case zd:return function(){return new t(this,y)}}return function(){return new t(this)}},u=e+" Iterator",l=!1,c=r.prototype,d=c[ir]||c["@@iterator"]||a&&c[a],p=!Ua&&d||o(a),h=e==="Array"&&c.entries||d,m,b,g;if(h&&(m=jd(h.call(new r)),m!==Object.prototype&&m.next&&(!Fa&&jd(m)!==Qd&&(Gd?Gd(m,Qd):XT(m[ir])||Qn(m,ir,Kd)),eI(m,u,!0,!0),Fa&&(Wd[u]=Kd))),rI&&a===rr&&d&&d.name!==rr&&(!Fa&&aI?tI(c,"name",rr):(l=!0,p=function(){return JT(d,this)})),a)if(b={values:o(rr),keys:s?p:o(Yd),entries:o(zd)},n)for(g in b)(Ua||l||!(g in c))&&Qn(c,g,b[g]);else KT({target:e,proto:!0,forced:Ua||l},b);return(!Fa||n)&&c[ir]!==p&&Qn(c,ir,p,{name:a}),Wd[e]=p,b}});var ip=f((wL,tp)=>{"use strict";tp.exports=function(r,e){return{value:r,done:e}}});var zn=f((RL,op)=>{"use strict";var sI=ci(),Yn=Zs(),rp=Dt(),sp=kn(),nI=Bt().f,oI=ep(),qa=ip(),uI=_e(),lI=ke(),np="Array Iterator",cI=sp.set,dI=sp.getterFor(np);op.exports=oI(Array,"Array",function(r,e){cI(this,{type:np,target:sI(r),index:0,kind:e})},function(){var r=dI(this),e=r.target,t=r.index++;if(!e||t>=e.length)return r.target=void 0,qa(void 0,!0);switch(r.kind){case"keys":return qa(t,!1);case"values":return qa(e[t],!1)}return qa([t,e[t]],!1)},"values");var ap=rp.Arguments=rp.Array;Yn("keys");Yn("values");Yn("entries");if(!uI&&lI&&ap.name!=="values")try{nI(ap,"name",{value:"values"})}catch{}});var lp=f(($L,up)=>{"use strict";var pI=ie(),hI=Dt(),fI=pI("iterator"),mI=Array.prototype;up.exports=function(r){return r!==void 0&&(hI.Array===r||mI[fI]===r)}});var Kn=f((LL,dp)=>{"use strict";var bI=er(),cp=Wi(),gI=li(),SI=Dt(),vI=ie(),yI=vI("iterator");dp.exports=function(r){if(!gI(r))return cp(r,yI)||cp(r,"@@iterator")||SI[bI(r)]}});var hp=f((ML,pp)=>{"use strict";var TI=ve(),II=rt(),EI=Qe(),xI=Gi(),PI=Kn(),AI=TypeError;pp.exports=function(r,e){var t=arguments.length<2?PI(r):e;if(II(t))return EI(TI(t,r));throw new AI(xI(r)+" is not iterable")}});var bp=f((CL,mp)=>{"use strict";var kI=ve(),fp=Qe(),wI=Wi();mp.exports=function(r,e,t){var i,a;fp(r);try{if(i=wI(r,"return"),!i){if(e==="throw")throw t;return t}i=kI(i,r)}catch(s){a=!0,i=s}if(e==="throw")throw t;if(a)throw i;return fp(i),t}});var ja=f((DL,yp)=>{"use strict";var RI=Xi(),$I=ve(),LI=Qe(),MI=Gi(),CI=lp(),DI=Ba(),gp=ji(),BI=hp(),VI=Kn(),Sp=bp(),OI=TypeError,Ha=function(r,e){this.stopped=r,this.result=e},vp=Ha.prototype;yp.exports=function(r,e,t){var i=t&&t.that,a=!!(t&&t.AS_ENTRIES),s=!!(t&&t.IS_RECORD),n=!!(t&&t.IS_ITERATOR),o=!!(t&&t.INTERRUPTED),u=RI(e,i),l,c,d,p,h,m,b,g=function(I){return l&&Sp(l,"normal",I),new Ha(!0,I)},y=function(I){return a?(LI(I),o?u(I[0],I[1],g):u(I[0],I[1])):o?u(I,g):u(I)};if(s)l=r.iterator;else if(n)l=r;else{if(c=VI(r),!c)throw new OI(MI(r)+" is not iterable");if(CI(c)){for(d=0,p=DI(r);p>d;d++)if(h=y(r[d]),h&&gp(vp,h))return h;return new Ha(!1)}l=BI(r,c)}for(m=s?r.next:l.next;!(b=$I(m,l)).done;){try{h=y(b.value)}catch(I){Sp(l,"throw",I)}if(typeof h=="object"&&h&&gp(vp,h))return h}return new Ha(!1)}});var Ip=f((BL,Tp)=>{"use strict";var _I=ke(),NI=Bt(),FI=zi();Tp.exports=function(r,e,t){_I?NI.f(r,e,FI(0,t)):r[e]=t}});var Ep=f(()=>{"use strict";var UI=we(),qI=ja(),HI=Ip();UI({target:"Object",stat:!0},{fromEntries:function(e){var t={};return qI(e,function(i,a){HI(t,i,a)},{AS_ENTRIES:!0}),t}})});var Pp=f((_L,xp)=>{"use strict";zn();Ep();var jI=ka();xp.exports=jI.Object.fromEntries});var kp=f((NL,Ap)=>{"use strict";Ap.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}});var Rp=f(()=>{"use strict";zn();var GI=kp(),WI=G(),QI=tr(),wp=Dt();for(Ga in GI)QI(WI[Ga],Ga),wp[Ga]=wp.Array;var Ga});var Lp=f((qL,$p)=>{"use strict";var YI=Pp();Rp();$p.exports=YI});var Jn=f((HL,Mp)=>{"use strict";var zI=Lp();Mp.exports=zI});var Cp=f(()=>{"use strict"});var Xn=f((WL,Dp)=>{"use strict";var ar=G(),KI=di(),JI=ui(),Wa=function(r){return KI.slice(0,r.length)===r};Dp.exports=function(){return Wa("Bun/")?"BUN":Wa("Cloudflare-Workers")?"CLOUDFLARE":Wa("Deno/")?"DENO":Wa("Node.js/")?"NODE":ar.Bun&&typeof Bun.version=="string"?"BUN":ar.Deno&&typeof Deno.version=="object"?"DENO":JI(ar.process)==="process"?"NODE":ar.window&&ar.document?"BROWSER":"REST"}()});var Qa=f((QL,Bp)=>{"use strict";var XI=Xn();Bp.exports=XI==="NODE"});var Op=f((YL,Vp)=>{"use strict";var ZI=Bt();Vp.exports=function(r,e,t){return ZI.f(r,e,t)}});var Fp=f((zL,Np)=>{"use strict";var eE=it(),tE=Op(),iE=ie(),rE=ke(),_p=iE("species");Np.exports=function(r){var e=eE(r);rE&&e&&!e[_p]&&tE(e,_p,{configurable:!0,get:function(){return this}})}});var qp=f((KL,Up)=>{"use strict";var aE=ji(),sE=TypeError;Up.exports=function(r,e){if(aE(e,r))return r;throw new sE("Incorrect invocation")}});var eo=f((JL,Hp)=>{"use strict";var nE=oe(),oE=j(),Zn=Qi(),uE=nE(Function.toString);oE(Zn.inspectSource)||(Zn.inspectSource=function(r){return uE(r)});Hp.exports=Zn.inspectSource});var zp=f((XL,Yp)=>{"use strict";var lE=oe(),cE=Se(),jp=j(),dE=er(),pE=it(),hE=eo(),Gp=function(){},Wp=pE("Reflect","construct"),to=/^\s*(?:class|function)\b/,fE=lE(to.exec),mE=!to.test(Gp),sr=function(e){if(!jp(e))return!1;try{return Wp(Gp,[],e),!0}catch{return!1}},Qp=function(e){if(!jp(e))return!1;switch(dE(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return mE||!!fE(to,hE(e))}catch{return!0}};Qp.sham=!0;Yp.exports=!Wp||cE(function(){var r;return sr(sr.call)||!sr(Object)||!sr(function(){r=!0})||r})?Qp:sr});var Jp=f((ZL,Kp)=>{"use strict";var bE=zp(),gE=Gi(),SE=TypeError;Kp.exports=function(r){if(bE(r))return r;throw new SE(gE(r)+" is not a constructor")}});var io=f((eM,Zp)=>{"use strict";var Xp=Qe(),vE=Jp(),yE=li(),TE=ie(),IE=TE("species");Zp.exports=function(r,e){var t=Xp(r).constructor,i;return t===void 0||yE(i=Xp(t)[IE])?e:vE(i)}});var th=f((tM,eh)=>{"use strict";var EE=oe();eh.exports=EE([].slice)});var rh=f((iM,ih)=>{"use strict";var xE=TypeError;ih.exports=function(r,e){if(r<e)throw new xE("Not enough arguments");return r}});var ro=f((rM,ah)=>{"use strict";var PE=di();ah.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(PE)});var ho=f((aM,hh)=>{"use strict";var ye=G(),AE=wn(),kE=Xi(),sh=j(),wE=Ne(),ph=Se(),nh=Bn(),RE=th(),oh=Pa(),$E=rh(),LE=ro(),ME=Qa(),lo=ye.setImmediate,co=ye.clearImmediate,CE=ye.process,ao=ye.Dispatch,DE=ye.Function,uh=ye.MessageChannel,BE=ye.String,so=0,nr={},lh="onreadystatechange",or,Ot,no,oo;ph(function(){or=ye.location});var po=function(r){if(wE(nr,r)){var e=nr[r];delete nr[r],e()}},uo=function(r){return function(){po(r)}},ch=function(r){po(r.data)},dh=function(r){ye.postMessage(BE(r),or.protocol+"//"+or.host)};(!lo||!co)&&(lo=function(e){$E(arguments.length,1);var t=sh(e)?e:DE(e),i=RE(arguments,1);return nr[++so]=function(){AE(t,void 0,i)},Ot(so),so},co=function(e){delete nr[e]},ME?Ot=function(r){CE.nextTick(uo(r))}:ao&&ao.now?Ot=function(r){ao.now(uo(r))}:uh&&!LE?(no=new uh,oo=no.port2,no.port1.onmessage=ch,Ot=kE(oo.postMessage,oo)):ye.addEventListener&&sh(ye.postMessage)&&!ye.importScripts&&or&&or.protocol!=="file:"&&!ph(dh)?(Ot=dh,ye.addEventListener("message",ch,!1)):lh in oh("script")?Ot=function(r){nh.appendChild(oh("script"))[lh]=function(){nh.removeChild(this),po(r)}}:Ot=function(r){setTimeout(uo(r),0)});hh.exports={set:lo,clear:co}});var bh=f((sM,mh)=>{"use strict";var fh=G(),VE=ke(),OE=Object.getOwnPropertyDescriptor;mh.exports=function(r){if(!VE)return fh[r];var e=OE(fh,r);return e&&e.value}});var fo=f((nM,Sh)=>{"use strict";var gh=function(){this.head=null,this.tail=null};gh.prototype={add:function(r){var e={item:r,next:null},t=this.tail;t?t.next=e:this.head=e,this.tail=e},get:function(){var r=this.head;if(r){var e=this.head=r.next;return e===null&&(this.tail=null),r.item}}};Sh.exports=gh});var yh=f((oM,vh)=>{"use strict";var _E=di();vh.exports=/ipad|iphone|ipod/i.test(_E)&&typeof Pebble<"u"});var Ih=f((uM,Th)=>{"use strict";var NE=di();Th.exports=/web0s(?!.*chrome)/i.test(NE)});var Rh=f((lM,wh)=>{"use strict";var Si=G(),FE=bh(),Eh=Xi(),mo=ho().set,UE=fo(),qE=ro(),HE=yh(),jE=Ih(),bo=Qa(),xh=Si.MutationObserver||Si.WebKitMutationObserver,Ph=Si.document,Ah=Si.process,Ya=Si.Promise,vo=FE("queueMicrotask"),gi,go,So,za,kh;vo||(ur=new UE,lr=function(){var r,e;for(bo&&(r=Ah.domain)&&r.exit();e=ur.get();)try{e()}catch(t){throw ur.head&&gi(),t}r&&r.enter()},!qE&&!bo&&!jE&&xh&&Ph?(go=!0,So=Ph.createTextNode(""),new xh(lr).observe(So,{characterData:!0}),gi=function(){So.data=go=!go}):!HE&&Ya&&Ya.resolve?(za=Ya.resolve(void 0),za.constructor=Ya,kh=Eh(za.then,za),gi=function(){kh(lr)}):bo?gi=function(){Ah.nextTick(lr)}:(mo=Eh(mo,Si),gi=function(){mo(lr)}),vo=function(r){ur.head||gi(),ur.add(r)});var ur,lr;wh.exports=vo});var Lh=f((cM,$h)=>{"use strict";$h.exports=function(r,e){try{arguments.length===1?console.error(r):console.error(r,e)}catch{}}});var Ka=f((dM,Mh)=>{"use strict";Mh.exports=function(r){try{return{error:!1,value:r()}}catch(e){return{error:!0,value:e}}}});var _t=f((pM,Ch)=>{"use strict";var GE=G();Ch.exports=GE.Promise});var vi=f((hM,Oh)=>{"use strict";var WE=G(),cr=_t(),QE=j(),YE=$n(),zE=eo(),KE=ie(),Dh=Xn(),JE=_e(),yo=ln(),Bh=cr&&cr.prototype,XE=KE("species"),To=!1,Vh=QE(WE.PromiseRejectionEvent),ZE=YE("Promise",function(){var r=zE(cr),e=r!==String(cr);if(!e&&yo===66||JE&&!(Bh.catch&&Bh.finally))return!0;if(!yo||yo<51||!/native code/.test(r)){var t=new cr(function(s){s(1)}),i=function(s){s(function(){},function(){})},a=t.constructor={};if(a[XE]=i,To=t.then(function(){})instanceof i,!To)return!0}return!e&&(Dh==="BROWSER"||Dh==="DENO")&&!Vh});Oh.exports={CONSTRUCTOR:ZE,REJECTION_EVENT:Vh,SUBCLASSING:To}});var yi=f((fM,Nh)=>{"use strict";var _h=rt(),ex=TypeError,tx=function(r){var e,t;this.promise=new r(function(i,a){if(e!==void 0||t!==void 0)throw new ex("Bad Promise constructor");e=i,t=a}),this.resolve=_h(e),this.reject=_h(t)};Nh.exports.f=function(r){return new tx(r)}});var sf=f(()=>{"use strict";var ix=we(),rx=_e(),es=Qa(),mt=G(),xi=ve(),Fh=bi(),Uh=Wn(),ax=tr(),sx=Fp(),nx=rt(),Za=j(),ox=Ae(),ux=qp(),lx=io(),Wh=ho().set,Ao=Rh(),cx=Lh(),dx=Ka(),px=fo(),Qh=kn(),ts=_t(),ko=vi(),Yh=yi(),is="Promise",zh=ko.CONSTRUCTOR,hx=ko.REJECTION_EVENT,fx=ko.SUBCLASSING,Io=Qh.getterFor(is),mx=Qh.set,Ti=ts&&ts.prototype,Nt=ts,Ja=Ti,Kh=mt.TypeError,Eo=mt.document,wo=mt.process,xo=Yh.f,bx=xo,gx=!!(Eo&&Eo.createEvent&&mt.dispatchEvent),Jh="unhandledrejection",Sx="rejectionhandled",qh=0,Xh=1,vx=2,Ro=1,Zh=2,Xa,Hh,yx,jh,ef=function(r){var e;return ox(r)&&Za(e=r.then)?e:!1},tf=function(r,e){var t=e.value,i=e.state===Xh,a=i?r.ok:r.fail,s=r.resolve,n=r.reject,o=r.domain,u,l,c;try{a?(i||(e.rejection===Zh&&Ix(e),e.rejection=Ro),a===!0?u=t:(o&&o.enter(),u=a(t),o&&(o.exit(),c=!0)),u===r.promise?n(new Kh("Promise-chain cycle")):(l=ef(u))?xi(l,u,s,n):s(u)):n(t)}catch(d){o&&!c&&o.exit(),n(d)}},rf=function(r,e){r.notified||(r.notified=!0,Ao(function(){for(var t=r.reactions,i;i=t.get();)tf(i,r);r.notified=!1,e&&!r.rejection&&Tx(r)}))},af=function(r,e,t){var i,a;gx?(i=Eo.createEvent("Event"),i.promise=e,i.reason=t,i.initEvent(r,!1,!0),mt.dispatchEvent(i)):i={promise:e,reason:t},!hx&&(a=mt["on"+r])?a(i):r===Jh&&cx("Unhandled promise rejection",t)},Tx=function(r){xi(Wh,mt,function(){var e=r.facade,t=r.value,i=Gh(r),a;if(i&&(a=dx(function(){es?wo.emit("unhandledRejection",t,e):af(Jh,e,t)}),r.rejection=es||Gh(r)?Zh:Ro,a.error))throw a.value})},Gh=function(r){return r.rejection!==Ro&&!r.parent},Ix=function(r){xi(Wh,mt,function(){var e=r.facade;es?wo.emit("rejectionHandled",e):af(Sx,e,r.value)})},Ii=function(r,e,t){return function(i){r(e,i,t)}},Ei=function(r,e,t){r.done||(r.done=!0,t&&(r=t),r.value=e,r.state=vx,rf(r,!0))},Po=function(r,e,t){if(!r.done){r.done=!0,t&&(r=t);try{if(r.facade===e)throw new Kh("Promise can't be resolved itself");var i=ef(e);i?Ao(function(){var a={done:!1};try{xi(i,e,Ii(Po,a,r),Ii(Ei,a,r))}catch(s){Ei(a,s,r)}}):(r.value=e,r.state=Xh,rf(r,!1))}catch(a){Ei({done:!1},a,r)}}};if(zh&&(Nt=function(e){ux(this,Ja),nx(e),xi(Xa,this);var t=Io(this);try{e(Ii(Po,t),Ii(Ei,t))}catch(i){Ei(t,i)}},Ja=Nt.prototype,Xa=function(e){mx(this,{type:is,done:!1,notified:!1,parent:!1,reactions:new px,rejection:!1,state:qh,value:void 0})},Xa.prototype=Fh(Ja,"then",function(e,t){var i=Io(this),a=xo(lx(this,Nt));return i.parent=!0,a.ok=Za(e)?e:!0,a.fail=Za(t)&&t,a.domain=es?wo.domain:void 0,i.state===qh?i.reactions.add(a):Ao(function(){tf(a,i)}),a.promise}),Hh=function(){var r=new Xa,e=Io(r);this.promise=r,this.resolve=Ii(Po,e),this.reject=Ii(Ei,e)},Yh.f=xo=function(r){return r===Nt||r===yx?new Hh(r):bx(r)},!rx&&Za(ts)&&Ti!==Object.prototype)){jh=Ti.then,fx||Fh(Ti,"then",function(e,t){var i=this;return new Nt(function(a,s){xi(jh,i,a,s)}).then(e,t)},{unsafe:!0});try{delete Ti.constructor}catch{}Uh&&Uh(Ti,Ja)}ix({global:!0,constructor:!0,wrap:!0,forced:zh},{Promise:Nt});ax(Nt,is,!1,!0);sx(is)});var cf=f((gM,lf)=>{"use strict";var Ex=ie(),of=Ex("iterator"),uf=!1;try{nf=0,$o={next:function(){return{done:!!nf++}},return:function(){uf=!0}},$o[of]=function(){return this},Array.from($o,function(){throw 2})}catch{}var nf,$o;lf.exports=function(r,e){try{if(!e&&!uf)return!1}catch{return!1}var t=!1;try{var i={};i[of]=function(){return{next:function(){return{done:t=!0}}}},r(i)}catch{}return t}});var Lo=f((SM,df)=>{"use strict";var xx=_t(),Px=cf(),Ax=vi().CONSTRUCTOR;df.exports=Ax||!Px(function(r){xx.all(r).then(void 0,function(){})})});var pf=f(()=>{"use strict";var kx=we(),wx=ve(),Rx=rt(),$x=yi(),Lx=Ka(),Mx=ja(),Cx=Lo();kx({target:"Promise",stat:!0,forced:Cx},{all:function(e){var t=this,i=$x.f(t),a=i.resolve,s=i.reject,n=Lx(function(){var o=Rx(t.resolve),u=[],l=0,c=1;Mx(e,function(d){var p=l++,h=!1;c++,wx(o,t,d).then(function(m){h||(h=!0,u[p]=m,--c||a(u))},s)}),--c||a(u)});return n.error&&s(n.value),i.promise}})});var ff=f(()=>{"use strict";var Dx=we(),Bx=_e(),Vx=vi().CONSTRUCTOR,Co=_t(),Ox=it(),_x=j(),Nx=bi(),hf=Co&&Co.prototype;Dx({target:"Promise",proto:!0,forced:Vx,real:!0},{catch:function(r){return this.then(void 0,r)}});!Bx&&_x(Co)&&(Mo=Ox("Promise").prototype.catch,hf.catch!==Mo&&Nx(hf,"catch",Mo,{unsafe:!0}));var Mo});var mf=f(()=>{"use strict";var Fx=we(),Ux=ve(),qx=rt(),Hx=yi(),jx=Ka(),Gx=ja(),Wx=Lo();Fx({target:"Promise",stat:!0,forced:Wx},{race:function(e){var t=this,i=Hx.f(t),a=i.reject,s=jx(function(){var n=qx(t.resolve);Gx(e,function(o){Ux(n,t,o).then(i.resolve,a)})});return s.error&&a(s.value),i.promise}})});var bf=f(()=>{"use strict";var Qx=we(),Yx=yi(),zx=vi().CONSTRUCTOR;Qx({target:"Promise",stat:!0,forced:zx},{reject:function(e){var t=Yx.f(this),i=t.reject;return i(e),t.promise}})});var Do=f((kM,gf)=>{"use strict";var Kx=Qe(),Jx=Ae(),Xx=yi();gf.exports=function(r,e){if(Kx(r),Jx(e)&&e.constructor===r)return e;var t=Xx.f(r),i=t.resolve;return i(e),t.promise}});var yf=f(()=>{"use strict";var Zx=we(),eP=it(),Sf=_e(),tP=_t(),vf=vi().CONSTRUCTOR,iP=Do(),rP=eP("Promise"),aP=Sf&&!vf;Zx({target:"Promise",stat:!0,forced:Sf||vf},{resolve:function(e){return iP(aP&&this===rP?tP:this,e)}})});var Tf=f(()=>{"use strict";sf();pf();ff();mf();bf();yf()});var Pf=f(()=>{"use strict";var sP=we(),nP=_e(),rs=_t(),oP=Se(),Ef=it(),xf=j(),uP=io(),If=Do(),lP=bi(),Vo=rs&&rs.prototype,cP=!!rs&&oP(function(){Vo.finally.call({then:function(){}},function(){})});sP({target:"Promise",proto:!0,real:!0,forced:cP},{finally:function(r){var e=uP(this,Ef("Promise")),t=xf(r);return this.then(t?function(i){return If(e,r()).then(function(){return i})}:r,t?function(i){return If(e,r()).then(function(){throw i})}:r)}});!nP&&xf(rs)&&(Bo=Ef("Promise").prototype.finally,Vo.finally!==Bo&&lP(Vo,"finally",Bo,{unsafe:!0}));var Bo});var as=f((DM,Af)=>{"use strict";var dP=it();Af.exports=dP});var wf=f((BM,kf)=>{"use strict";Cp();Tf();Pf();var pP=as();kf.exports=pP("Promise","finally")});var $f=f((VM,Rf)=>{"use strict";var hP=wf();Rf.exports=hP});var ss=f((OM,Lf)=>{"use strict";var fP=$f();Lf.exports=fP});var im=f(()=>{"use strict";var HP=we(),jP=Yi(),GP=Ba(),WP=Da(),QP=Zs();HP({target:"Array",proto:!0},{at:function(e){var t=jP(this),i=GP(t),a=WP(e),s=a>=0?a:i+a;return s<0||s>=i?void 0:t[s]}});QP("at")});var am=f((WC,rm)=>{"use strict";im();var YP=as();rm.exports=YP("Array","at")});var nm=f((QC,sm)=>{"use strict";var zP=am();sm.exports=zP});var ki=f((YC,om)=>{"use strict";var KP=nm();om.exports=KP});var rb=f(()=>{"use strict"});var ab=f(()=>{"use strict"});var nb=f((XV,sb)=>{"use strict";var ak=Ae(),sk=ui(),nk=ie(),ok=nk("match");sb.exports=function(r){var e;return ak(r)&&((e=r[ok])!==void 0?!!e:sk(r)==="RegExp")}});var ub=f((ZV,ob)=>{"use strict";var uk=er(),lk=String;ob.exports=function(r){if(uk(r)==="Symbol")throw new TypeError("Cannot convert a Symbol value to a string");return lk(r)}});var cb=f((eO,lb)=>{"use strict";var ck=Qe();lb.exports=function(){var r=ck(this),e="";return r.hasIndices&&(e+="d"),r.global&&(e+="g"),r.ignoreCase&&(e+="i"),r.multiline&&(e+="m"),r.dotAll&&(e+="s"),r.unicode&&(e+="u"),r.unicodeSets&&(e+="v"),r.sticky&&(e+="y"),e}});var hb=f((tO,pb)=>{"use strict";var dk=ve(),pk=Ne(),hk=ji(),fk=cb(),db=RegExp.prototype;pb.exports=function(r){var e=r.flags;return e===void 0&&!("flags"in db)&&!pk(r,"flags")&&hk(db,r)?dk(fk,r):e}});var mb=f((iO,fb)=>{"use strict";var pu=oe(),mk=Yi(),bk=Math.floor,cu=pu("".charAt),gk=pu("".replace),du=pu("".slice),Sk=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,vk=/\$([$&'`]|\d{1,2})/g;fb.exports=function(r,e,t,i,a,s){var n=t+r.length,o=i.length,u=vk;return a!==void 0&&(a=mk(a),u=Sk),gk(s,u,function(l,c){var d;switch(cu(c,0)){case"$":return"$";case"&":return r;case"`":return du(e,0,t);case"'":return du(e,n);case"<":d=a[du(c,1,-1)];break;default:var p=+c;if(p===0)return l;if(p>o){var h=bk(p/10);return h===0?l:h<=o?i[h-1]===void 0?cu(c,1):i[h-1]+cu(c,1):l}d=i[p-1]}return d===void 0?"":d})}});var Sb=f(()=>{"use strict";var yk=we(),Tk=ve(),fu=oe(),bb=qi(),Ik=j(),Ek=li(),xk=nb(),Ci=ub(),Pk=Wi(),Ak=hb(),kk=mb(),wk=ie(),Rk=_e(),$k=wk("replace"),Lk=TypeError,hu=fu("".indexOf),Mk=fu("".replace),gb=fu("".slice),Ck=Math.max;yk({target:"String",proto:!0},{replaceAll:function(e,t){var i=bb(this),a,s,n,o,u,l,c,d,p,h,m=0,b="";if(!Ek(e)){if(a=xk(e),a&&(s=Ci(bb(Ak(e))),!~hu(s,"g")))throw new Lk("`.replaceAll` does not allow non-global regexes");if(n=Pk(e,$k),n)return Tk(n,e,i,t);if(Rk&&a)return Mk(Ci(i),e,t)}for(o=Ci(i),u=Ci(e),l=Ik(t),l||(t=Ci(t)),c=u.length,d=Ck(1,c),p=hu(o,u);p!==-1;)h=l?Ci(t(u,p,o)):kk(u,o,p,[],void 0,t),b+=gb(o,m,p)+h,m=p+c,p=p+d>o.length?-1:hu(o,u,p+d);return m<o.length&&(b+=gb(o,m)),b}})});var yb=f((sO,vb)=>{"use strict";rb();ab();Sb();var Dk=as();vb.exports=Dk("String","replaceAll")});var Ib=f((nO,Tb)=>{"use strict";var Bk=yb();Tb.exports=Bk});var xb=f((oO,Eb)=>{"use strict";var Vk=Ib();Eb.exports=Vk});var Ku="2.0.116-dev.66fa3538.0";var ne=(a=>(a.STOPPED="stopped",a.READY="ready",a.PLAYING="playing",a.PAUSED="paused",a))(ne||{}),ft=(T=>(T.MPEG="MPEG",T.DASH="DASH",T.DASH_SEP="DASH_SEP",T.DASH_SEP_VK="DASH_SEP",T.DASH_WEBM="DASH_WEBM",T.DASH_WEBM_AV1="DASH_WEBM_AV1",T.DASH_STREAMS="DASH_STREAMS",T.DASH_WEBM_VK="DASH_WEBM",T.DASH_ONDEMAND="DASH_ONDEMAND",T.DASH_ONDEMAND_VK="DASH_ONDEMAND",T.DASH_LIVE="DASH_LIVE",T.DASH_LIVE_CMAF="DASH_LIVE_CMAF",T.DASH_LIVE_WEBM="DASH_LIVE_WEBM",T.HLS="HLS",T.HLS_ONDEMAND="HLS_ONDEMAND",T.HLS_JS="HLS",T.HLS_LIVE="HLS_LIVE",T.HLS_LIVE_CMAF="HLS_LIVE_CMAF",T.WEB_RTC_LIVE="WEB_RTC_LIVE",T))(ft||{});var Ia=(a=>(a.NOT_AVAILABLE="NOT_AVAILABLE",a.AVAILABLE="AVAILABLE",a.CONNECTING="CONNECTING",a.CONNECTED="CONNECTED",a))(Ia||{}),Qs=(i=>(i.HTTP1="http1",i.HTTP2="http2",i.QUIC="quic",i))(Qs||{});var Ys=(n=>(n.NONE="none",n.INLINE="inline",n.FULLSCREEN="fullscreen",n.SECOND_SCREEN="second_screen",n.PIP="pip",n.INVISIBLE="invisible",n))(Ys||{});import{assertNever as il,assertNonNullable as eS,isNonNullable as Ea,ValueSubject as zs,Subject as tS,Subscription as iS,merge as rS,observableFrom as aS,fromEvent as Xu,map as Zu,tap as el,filterChanged as sS,isNullable as Ks,ErrorCategory as tl}from"@vkontakte/videoplayer-shared";var Ju=r=>new Promise((e,t)=>{let i=document.createElement("script");i.setAttribute("src",r),i.onload=()=>e,i.onerror=()=>t,document.body.appendChild(i)});var xa=class{constructor(e){this.connection$=new zs(void 0);this.castState$=new zs("NOT_AVAILABLE");this.errorEvent$=new tS;this.realCastState$=new zs("NOT_AVAILABLE");this.subscription=new iS;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 i=Ea(window.chrome?.cast),a=!!window.__onGCastApiAvailable;i?this.initializeCastApi():(window.__onGCastApiAvailable=s=>{delete window.__onGCastApiAvailable,s&&this.initializeCastApi()},a||Ju("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:tl.NETWORK,message:"Script loading failed!"})))}connect(){cast.framework.CastContext.getInstance()?.requestSession()}disconnect(){cast.framework.CastContext.getInstance()?.getCurrentSession()?.endSession(!0)}stopMedia(){return new Promise((e,t)=>{cast.framework.CastContext.getInstance()?.getCurrentSession()?.getMediaSession()?.stop(new chrome.cast.media.StopRequest,e,t)})}toggleConnection(){Ea(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();Ks(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();Ks(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.subscription.unsubscribe()}initListeners(){let e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),i=cast.framework.CastContext.getInstance();this.subscription.add(Xu(i,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(a=>{switch(a.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:this.contentId=i.getCurrentSession()?.getMediaSession()?.media?.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 il(a.sessionState)}})).add(rS(Xu(i,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(el(a=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(a)}`})}),Zu(a=>a.castState)),aS([i.getCastState()])).pipe(sS(),Zu(nS),el(a=>{this.log({message:`realCastState$: ${a}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(a=>{let s=a==="CONNECTED",n=Ea(this.connection$.getValue());if(s&&!n){let o=i.getCurrentSession();eS(o);let u=o.getCastDevice(),l=o.getMediaSession()?.media?.contentId;(Ks(l)||l===this.contentId)&&(this.log({message:"connection created"}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:o,castDevice:u}))}else!s&&n&&(this.log({message:"connection destroyed"}),this.connection$.next(void 0));this.castState$.next(a==="CONNECTED"?Ea(this.connection$.getValue())?"CONNECTED":"AVAILABLE":a)}))}initializeCastApi(){let e,t,i;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,i=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:i}),this.initListeners()}catch(a){this.errorEvent$.next({id:"ChromecastInitializer",category:tl.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:a})}}},nS=r=>{switch(r){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 il(r)}};var Pg=Ve(Jn(),1);var Uf=Ve(ss(),1);import{assertNever as Mf}from"@vkontakte/videoplayer-shared";var Z=(r,e=0,t=0)=>{switch(t){case 0:return r.replace("_offset_p",e===0?"":"_"+e.toFixed(0));case 1:{if(e===0)return r;let i=new URL(r);return i.searchParams.append("playback_shift",e.toFixed(0)),i.toString()}case 2:{let i=new URL(r);return!i.searchParams.get("offset_p")&&e===0?r:(i.searchParams.set("offset_p",e.toFixed(0)),i.toString())}default:Mf(t)}return r},Oo=(r,e)=>{switch(e){case 0:return NaN;case 1:{let t=new URL(r);return Number(t.searchParams.get("playback_shift"))}case 2:{let t=new URL(r);return Number(t.searchParams.get("offset_p")??0)}default:Mf(e)}};var E=(r,e,t=!1)=>{let i=r.getTransition();(t||!i||i.to===e)&&r.setState(e)};import{isNonNullable as mP,Subject as ns,merge as Cf}from"@vkontakte/videoplayer-shared";var $=class{constructor(e){this.transitionStarted$=new ns;this.transitionEnded$=new ns;this.transitionUpdated$=new ns;this.forceChanged$=new ns;this.stateChangeStarted$=Cf(this.transitionStarted$,this.transitionUpdated$);this.stateChangeEnded$=Cf(this.transitionEnded$,this.forceChanged$);this.state=e,this.prevState=void 0}setState(e){let t=this.transition,i=this.state;this.transition=void 0,this.prevState=i,this.state=e,t?t.to===e?this.transitionEnded$.next(t):this.forceChanged$.next({from:t.from,to:e,canceledTransition:t}):this.forceChanged$.next({from:i,to:e,canceledTransition:t})}startTransitionTo(e){let t=this.transition,i=this.state;i===e||mP(t)&&t.to===e||(this.prevState=i,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:i,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}};import{assertNever as bP}from"@vkontakte/videoplayer-shared";var Df=r=>{switch(r){case"MPEG":case"DASH":case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":case"HLS":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 bP(r)}};import{assertNever as Pi,assertNonNullable as Ft,debounce as Bf,ErrorCategory as Vf,fromEvent as Ut,isNonNullable as Of,map as _f,merge as Nf,observableFrom as gP,Subject as SP,Subscription as _o,timeout as vP,getHighestQuality as yP}from"@vkontakte/videoplayer-shared";var TP=5,IP=5,EP=500,Ff=7e3,dr=class{constructor(e){this.subscription=new _o;this.loadMediaTimeoutSubscription=new _o;this.videoState=new $("stopped");this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),i=this.params.desiredState.playbackState.getState(),a=this.params.desiredState.playbackState.getTransition(),s=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${e}; videoTransition: ${JSON.stringify(t)}; desiredPlaybackState: ${i}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(s)};`}),i==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.stop());return}if(!t){if(a?.to!=="paused"&&s.state==="requested"&&e!=="stopped"){this.seek(s.position/1e3);return}switch(i){case"ready":{switch(e){case"playing":case"paused":case"ready":break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:Pi(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:Pi(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:Pi(e)}break}default:Pi(i)}}};this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Df(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 _o;this.subscription.add(e),this.subscription.add(Nf(this.videoState.stateChangeStarted$.pipe(_f(a=>`stateChangeStarted$ ${JSON.stringify(a)}`)),this.videoState.stateChangeEnded$.pipe(_f(a=>`stateChangeEnded$ ${JSON.stringify(a)}`))).subscribe(a=>this.log({message:`[videoState] ${a}`})));let t=(a,s)=>this.subscription.add(a.subscribe(s));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{let a=new SP;e.add(a.pipe(Bf(EP)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let s=NaN;e.add(Ut(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(n=>{this.logRemoteEvent(n);let o=n.value;this.params.output.position$.next(o),(this.params.desiredState.seekState.getState().state==="applying"||Math.abs(o-s)>TP)&&a.next(o),s=o})),e.add(Ut(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(n=>{this.logRemoteEvent(n),this.params.output.duration$.next(n.value)}))}t(Ut(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(Ut(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemotePause():this.handleRemotePlay()}),t(Ut(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),a=>{this.logRemoteEvent(a);let{remotePlayer:s}=this.params.connection,n=a.value,o=this.params.output.isBuffering$.getValue(),u=n===chrome.cast.media.PlayerState.BUFFERING;switch(o!==u&&this.params.output.isBuffering$.next(u),n){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&s.duration-s.currentTime<IP&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),E(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:Pi(n)}}),t(Ut(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({volume:a.value})}),t(Ut(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({muted:a.value})});let i=Nf(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,gP(["init"])).pipe(Bf(0));t(i,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"),E(this.params.desiredState.playbackState,"paused")):(this.videoState.setState("playing"),E(this.params.desiredState.playbackState,"playing"));let i=this.params.output.isLive$.getValue();this.params.output.duration$.next(i?0:t.duration),this.params.output.position$.next(i?0:t.currentTime),this.params.desiredState.seekState.setState({state:"none"})}}prepare(){let e=this.params.format;this.log({message:`[prepare] format: ${e}`});let t=this.createMediaInfo(e),i=this.createLoadRequest(t);this.loadMedia(i)}handleRemotePause(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="paused"||e==="playing")&&(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused"))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="playing"||e==="paused")&&(this.videoState.setState("playing"),E(this.params.desiredState.playbackState,"playing"))}handleRemoteReady(){this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.params.desiredState.playbackState.getTransition()?.to==="ready"&&E(this.params.desiredState.playbackState,"ready")}handleRemoteStop(){this.videoState.getState()!=="stopped"&&this.videoState.setState("stopped")}handleRemoteVolumeChange(e){let t=this.params.output.volume$.getValue(),i={volume:e.volume??t.volume,muted:e.muted??t.muted};(i.volume!==t.volume||i.muted!==i.muted)&&this.params.output.volume$.next(i)}seek(e){this.params.output.willSeekEvent$.next();let{remotePlayer:t,remotePlayerController:i}=this.params.connection;t.currentTime=e,i.seek()}stop(){let{remotePlayerController:e}=this.params.connection;e.stop()}createMediaInfo(e){let t=this.params.source,i,a,s;switch(e){case"MPEG":{let l=t[e];Ft(l);let c=yP(Object.keys(l));Ft(c);let d=l[c];Ft(d),i=d,a="video/mp4",s=chrome.cast.media.StreamType.BUFFERED;break}case"HLS":case"HLS_ONDEMAND":{let l=t[e];Ft(l),i=l.url,a="application/x-mpegurl",s=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":{let l=t[e];Ft(l),i=l.url,a="application/dash+xml",s=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_LIVE_CMAF":{let l=t[e];Ft(l),i=l.url,a="application/dash+xml",s=chrome.cast.media.StreamType.LIVE;break}case"HLS_LIVE":case"HLS_LIVE_CMAF":{let l=t[e];Ft(l),i=Z(l.url),a="application/x-mpegurl",s=chrome.cast.media.StreamType.LIVE;break}case"DASH_LIVE":case"WEB_RTC_LIVE":{let l="Unsupported format for Chromecast",c=new Error(l);throw this.params.output.error$.next({id:"ChromecastProvider.createMediaInfo()",category:Vf.VIDEO_PIPELINE,message:l,thrown:c}),c}case"DASH":case"DASH_LIVE_WEBM":throw new Error(`${e} is no longer supported`);default:return Pi(e)}let n=new chrome.cast.media.MediaInfo(this.params.meta.videoId??i,a);n.contentUrl=i,n.streamType=s,n.metadata=new chrome.cast.media.GenericMediaMetadata;let{title:o,subtitle:u}=this.params.meta;return Of(o)&&(n.metadata.title=o),Of(u)&&(n.metadata.subtitle=u),n}createLoadRequest(e){let t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;let i=this.params.desiredState.seekState.getState();return i.state==="applying"||i.state==="requested"?t.currentTime=this.params.output.isLive$.getValue()?0:i.position/1e3:t.currentTime=0,t}loadMedia(e){let t=this.params.connection.session.loadMedia(e),i=new Promise((a,s)=>{this.loadMediaTimeoutSubscription.add(vP(Ff).subscribe(()=>s(`timeout(${Ff})`)))});(0,Uf.default)(Promise.race([t,i]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state==="applying"&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},a=>{let s=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${a}`;this.log({message:s}),this.params.output.error$.next({id:"ChromecastProvider.loadMedia",category:Vf.VIDEO_PIPELINE,message:s,thrown:a})}),()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}};import{clearVideoElement as Hf}from"@vkontakte/videoplayer-shared";import{clearVideoElement as xP}from"@vkontakte/videoplayer-shared";var qf=r=>{try{r.pause(),r.playbackRate=0,xP(r),r.remove()}catch(e){console.error(e)}};import{fromEvent as PP,Subscription as AP}from"@vkontakte/videoplayer-shared";var No=class{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)}},Fo=window.WeakMap?new WeakMap:new No,Uo=window.WeakMap?new WeakMap:new Map,kP=(r,e=20)=>{let t=0;return PP(r,"ratechange").subscribe(i=>{t++,t>=e&&(r.currentTime=r.currentTime,t=0)})},ue=(r,{audioVideoSyncRate:e})=>{let t=r.querySelector("video"),i=!!t;t?Hf(t):(t=document.createElement("video"),r.appendChild(t)),Fo.set(t,i);let a=new AP;return a.add(kP(t,e)),Uo.set(t,a),t.setAttribute("crossorigin","anonymous"),t.setAttribute("playsinline","playsinline"),t.controls=!1,t.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),t},le=r=>{Uo.get(r)?.unsubscribe(),Uo.delete(r);let t=Fo.get(r);Fo.delete(r),t?Hf(r):qf(r)};import{assertNonNullable as pr,isNonNullable as ze,isNullable as $P,fromEvent as Ai,merge as jf,observableFrom as Gf,filterChanged as Wf,map as hr,Subject as Qf,Subscription as LP,ValueSubject as MP,ErrorCategory as CP}from"@vkontakte/videoplayer-shared";import{isNonNullable as qo,isNullable as wP,Subscription as RP}from"@vkontakte/videoplayer-shared";var os=(r,e,t,{equal:i=(n,o)=>n===o,changed$:a,onError:s}={})=>{let n=r.getState(),o=e(),u=wP(a),l=new RP;return a&&l.add(a.subscribe(c=>{let d=r.getState();i(c,d)&&r.setState(c)},s)),i(o,n)||(t(n),u&&r.setState(n)),l.add(r.stateChangeStarted$.subscribe(c=>{t(c.to),u&&r.setState(c.to)},s)),l},Ye=(r,e,t)=>os(e,()=>r.loop,i=>{qo(i)&&(r.loop=i)},{onError:t}),ce=(r,e,t,i)=>os(e,()=>({muted:r.muted,volume:r.volume}),a=>{qo(a)&&(r.muted=a.muted,r.volume=a.volume)},{equal:(a,s)=>a===s||a?.muted===s?.muted&&a?.volume===s?.volume,changed$:t,onError:i}),Re=(r,e,t,i)=>os(e,()=>r.playbackRate,a=>{qo(a)&&(r.playbackRate=a)},{changed$:t,onError:i}),bt=os;var DP=r=>["__",r.language,r.label].join("|"),BP=(r,e)=>{if(r.id===e)return!0;let[t,i,a]=e.split("|");return r.language===i&&r.label===a},Ho=class r{constructor(){this.available$=new Qf;this.current$=new MP(void 0);this.error$=new Qf;this.subscription=new LP;this.externalTracks=new Map;this.internalTracks=new Map}connect(e,t,i){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();let a=s=>{this.error$.next({id:"TextTracksManager",category:CP.WTF,message:"Generic HtmlVideoTextTrackManager error",thrown:s})};this.subscription.add(this.available$.subscribe(i.availableTextTracks$)),this.subscription.add(this.current$.subscribe(i.currentTextTrack$)),this.subscription.add(this.error$.subscribe(i.error$)),this.subscription.add(bt(t.internalTextTracks,()=>Object.values(this.internalTracks),s=>{ze(s)&&this.setInternal(s)},{equal:(s,n)=>ze(s)&&ze(n)&&s.length===n.length&&s.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe(hr(s=>s.filter(({type:n})=>n==="internal"))),onError:a})),this.subscription.add(bt(t.externalTextTracks,()=>Object.values(this.externalTracks),s=>{ze(s)&&this.setExternal(s)},{equal:(s,n)=>ze(s)&&ze(n)&&s.length===n.length&&s.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe(hr(s=>s.filter(({type:n})=>n==="external"))),onError:a})),this.subscription.add(bt(t.currentTextTrack,()=>{if(this.video)return;let s=this.htmlTextTracksAsArray().find(({mode:n})=>n==="showing");return s&&this.htmlTextTrackToITextTrack(s).id},s=>this.select(s),{changed$:this.current$,onError:a})),this.subscription.add(bt(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let s of this.htmlTextTracksAsArray())this.applyCueSettings(s.cues),this.applyCueSettings(s.activeCues)}))}subscribe(){pr(this.video);let{textTracks:e}=this.video;this.subscription.add(Ai(e,"addtrack").subscribe(()=>{let i=this.current$.getValue();i&&this.select(i)})),this.subscription.add(jf(Ai(e,"addtrack"),Ai(e,"removetrack"),Gf(["init"])).pipe(hr(()=>this.htmlTextTracksAsArray().map(i=>this.htmlTextTrackToITextTrack(i))),Wf((i,a)=>i.length===a.length&&i.every(({id:s},n)=>s===a[n].id))).subscribe(this.available$)),this.subscription.add(jf(Ai(e,"change"),Gf(["init"])).pipe(hr(()=>this.htmlTextTracksAsArray().find(({mode:i})=>i==="showing")),hr(i=>i&&this.htmlTextTrackToITextTrack(i).id),Wf()).subscribe(this.current$));let t=i=>this.applyCueSettings(i.target?.activeCues??null);this.subscription.add(Ai(e,"addtrack").subscribe(i=>{i.track?.addEventListener("cuechange",t);let a=s=>{let n=s.target?.cues??null;n&&n.length&&(this.applyCueSettings(s.target?.cues??null),s.target?.removeEventListener("cuechange",a))};i.track?.addEventListener("cuechange",a)})),this.subscription.add(Ai(e,"removetrack").subscribe(i=>{i.track?.removeEventListener("cuechange",t)}))}applyCueSettings(e){if(!e||!e.length)return;let t=this.cueSettings.getState();for(let i of Array.from(e)){let a=i;ze(t.align)&&(a.align=t.align),ze(t.position)&&(a.position=t.position),ze(t.size)&&(a.size=t.size),ze(t.line)&&(a.line=t.line)}}htmlTextTracksAsArray(e=!1){pr(this.video);let t=[...this.video.textTracks];return e?t:t.filter(r.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:i}=e,a=e.id?e.id:DP(e),s=this.externalTracks.has(a),n=(s?this.externalTracks.get(a)?.isAuto:this.internalTracks.get(a)?.isAuto)||a.includes("auto");return s?{id:a,type:"external",isAuto:n,language:t,label:i,url:this.externalTracks.get(a)?.url}:{id:a,type:"internal",isAuto:n,language:t,label:i,url:this.internalTracks.get(a)?.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(([,t])=>this.detach(t)),e.filter(({id:t})=>!this.externalTracks.has(t)).forEach(t=>this.attach(t)),Array.from(this.externalTracks).filter(([t])=>!e.find(i=>i.id===t)).forEach(([,t])=>this.detach(t))}setInternal(e){let t=[...this.externalTracks];e.filter(({id:i,language:a,isAuto:s})=>!this.internalTracks.has(i)&&!t.some(([,n])=>n.language===a&&n.isAuto===s)).forEach(i=>this.attach(i)),Array.from(this.internalTracks).filter(([i])=>!e.find(a=>a.id===i)).forEach(([,i])=>this.detach(i))}select(e){pr(this.video);for(let t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(let t of this.htmlTextTracksAsArray(!0))($P(e)||!BP(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){pr(this.video);let t=document.createElement("track");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){pr(this.video);let t=Array.prototype.find.call(this.video.getElementsByTagName("track"),i=>i.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)}},$e=Ho;var nt=class{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 Yf=r=>{let e=r;for(;!(e instanceof Document)&&!(e instanceof ShadowRoot)&&e!==null;)e=e?.parentNode;return e??void 0},jo=r=>{let e=Yf(r);return!!(e&&e.fullscreenElement&&e.fullscreenElement===r)},zf=r=>{let e=Yf(r);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===r)};import{fromEvent as Le,map as gt,merge as Jf,filterChanged as OP,isNonNullable as Xf,Subject as _P,filter as Zf,mapTo as em,combine as NP,once as FP,ErrorCategory as UP,ValueSubject as tm,clientChecker as qP}from"@vkontakte/videoplayer-shared";var VP=3,Kf=(r,e,t=VP)=>{let i=0,a=0;for(let s=0;s<r.length;s++){let n=r.start(s),o=r.end(s);if(n<=e&&e<=o){if(i=n,a=o,!t)return{from:i,to:a};for(let u=s-1;u>=0;u--)r.end(u)+t>=i&&(i=r.start(u));for(let u=s+1;u<r.length;u++)r.start(u)-t<=a&&(a=r.end(u))}}return{from:i,to:a}};var de=r=>{let e=T=>Le(r,T).pipe(em(void 0)),i=Jf(...["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"].map(T=>Le(r,T))).pipe(gt(T=>T.type==="ended"?r.readyState<2:r.readyState<3),OP()),a=Jf(Le(r,"progress"),Le(r,"timeupdate")).pipe(gt(()=>Kf(r.buffered,r.currentTime))),s=qP.isSafari?NP({play:e("play").pipe(FP()),playing:e("playing")}).pipe(em(void 0)):e("playing"),n=Le(r,"volumechange").pipe(gt(()=>({muted:r.muted,volume:r.volume}))),o=Le(r,"ratechange").pipe(gt(()=>r.playbackRate)),u=Le(r,"error").pipe(Zf(()=>!!(r.error||r.played.length)),gt(()=>{let T=r.error;return{id:T?`MediaError#${T.code}`:"HtmlVideoError",category:UP.VIDEO_PIPELINE,message:T?T.message:"Error event from HTML video element",thrown:r.error??void 0}})),l=Le(r,"timeupdate").pipe(gt(()=>r.currentTime)),c=new _P,d=.3,p;l.subscribe(T=>{r.loop&&Xf(p)&&Xf(T)&&p>=r.duration-d&&T<=d&&c.next(p),p=T});let h=e("pause").pipe(Zf(()=>!r.error&&p!==r.duration)),m=Le(r,"enterpictureinpicture"),b=Le(r,"leavepictureinpicture"),g=new tm(zf(r));m.subscribe(()=>g.next(!0)),b.subscribe(()=>g.next(!1));let y=new tm(jo(r));return Le(r,"fullscreenchange").pipe(gt(()=>jo(r))).subscribe(y),{playing$:s,pause$:h,canplay$:e("canplay"),ended$:e("ended"),looped$:c,error$:u,seeked$:e("seeked"),seeking$:e("seeking"),progress$:e("progress"),loadStart$:e("loadstart"),loadedMetadata$:e("loadedmetadata"),loadedData$:e("loadeddata"),timeUpdate$:l,durationChange$:Le(r,"durationchange").pipe(gt(()=>r.duration)),isBuffering$:i,currentBuffer$:a,volumeState$:n,playbackRateState$:o,inPiP$:g,inFullscreen$:y}};import{VideoQuality as St}from"@vkontakte/videoplayer-shared";var vt=r=>{switch(r){case"mobile":return St.Q_144P;case"lowest":return St.Q_240P;case"low":return St.Q_360P;case"sd":case"medium":return St.Q_480P;case"hd":case"high":return St.Q_720P;case"fullhd":case"full":return St.Q_1080P;case"quadhd":case"quad":return St.Q_1440P;case"ultrahd":case"ultra":return St.Q_2160P}};var qt=Ve(ki(),1);import{isNonNullable as Q,isNullable as Wo,now as mm,isHigher as Qo,isHigherOrEqual as dm,isInvariantQuality as pm,isLower as hm,isLowerOrEqual as Yo,videoSizeToQuality as JP,assertNotEmptyArray as bm,assertNonNullable as XP}from"@vkontakte/videoplayer-shared";var Go=!1,ot={},um=r=>{Go=r},lm=()=>{ot={}},cm=r=>{r(ot)},fr=(r,e)=>{Go&&(ot.meta=ot.meta??{},ot.meta[r]=e)},re=class{constructor(e){this.name=e}next(e){if(!Go)return;ot.series=ot.series??{};let t=ot.series[this.name]??[];t.push([Date.now(),e]),ot.series[this.name]=t}};var ZP=new re("best_bitrate"),gm=(r,e,t)=>(e-t)*Math.pow(2,-10*r)+t;var zo=r=>(e,t)=>r*(Number(e.bitrate)-Number(t.bitrate)),mr=class{constructor(){this.history={}}recordSelection(e){this.history[e.id]=mm()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}},Sm='Assertion "ABR Tracks is empty array" failed',us=(r,e,t,i)=>{let a=[...e].sort(zo(1)),s=[...t].sort(zo(1)),n=s.filter(u=>Q(u.bitrate)&&Q(r.bitrate)?r.bitrate/u.bitrate>i:!0),o=(0,qt.default)(s,Math.round(s.length*a.indexOf(r)/(a.length+1)))??(0,qt.default)(s,-1);return o&&n.includes(o)?o:n.length?(0,qt.default)(n,-1):(0,qt.default)(s,0)},fm=r=>"quality"in r,vm=(r,e,t,i)=>{let a=Q(i?.last?.bitrate)&&Q(t?.bitrate)&&i.last.bitrate<t.bitrate?r.trackCooldownIncreaseQuality:r.trackCooldownDecreaseQuality,s=t&&i&&i.history[t.id]&&mm()-i.history[t.id]<=a&&(!i.last||t.id!==i.last.id);if(t?.id&&i&&!s&&i.recordSelection(t),s&&i?.last){let n=i.last;i?.recordSwitch(n);let o=fm(n)?"video":"audio",u=fm(n)?n.quality:n.bitrate;return e({message:`
|
|
6
|
+
var Yg=Object.create;var zu=Object.defineProperty;var zg=Object.getOwnPropertyDescriptor;var Kg=Object.getOwnPropertyNames;var Jg=Object.getPrototypeOf,Xg=Object.prototype.hasOwnProperty;var f=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var Zg=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Kg(e))!Xg.call(r,a)&&a!==t&&zu(r,a,{get:()=>e[a],enumerable:!(i=zg(e,a))||i.enumerable});return r};var Ve=(r,e,t)=>(t=r!=null?Yg(Jg(r)):{},Zg(e||!r||!r.__esModule?zu(t,"default",{value:r,enumerable:!0}):t,r));var Se=f((t$,rl)=>{"use strict";rl.exports=function(r){try{return!!r()}catch{return!0}}});var Ui=f((i$,al)=>{"use strict";var oS=Se();al.exports=!oS(function(){var r=function(){}.bind();return typeof r!="function"||r.hasOwnProperty("prototype")})});var oe=f((r$,ol)=>{"use strict";var sl=Ui(),nl=Function.prototype,Js=nl.call,uS=sl&&nl.bind.bind(Js,Js);ol.exports=sl?uS:function(r){return function(){return Js.apply(r,arguments)}}});var ui=f((a$,ll)=>{"use strict";var ul=oe(),lS=ul({}.toString),cS=ul("".slice);ll.exports=function(r){return cS(lS(r),8,-1)}});var dl=f((s$,cl)=>{"use strict";var dS=oe(),pS=Se(),hS=ui(),Xs=Object,fS=dS("".split);cl.exports=pS(function(){return!Xs("z").propertyIsEnumerable(0)})?function(r){return hS(r)==="String"?fS(r,""):Xs(r)}:Xs});var li=f((n$,pl)=>{"use strict";pl.exports=function(r){return r==null}});var qi=f((o$,hl)=>{"use strict";var mS=li(),bS=TypeError;hl.exports=function(r){if(mS(r))throw new bS("Can't call method on "+r);return r}});var ci=f((u$,fl)=>{"use strict";var gS=dl(),SS=qi();fl.exports=function(r){return gS(SS(r))}});var Zs=f((l$,ml)=>{"use strict";ml.exports=function(){}});var Dt=f((c$,bl)=>{"use strict";bl.exports={}});var G=f((en,gl)=>{"use strict";var Hi=function(r){return r&&r.Math===Math&&r};gl.exports=Hi(typeof globalThis=="object"&&globalThis)||Hi(typeof window=="object"&&window)||Hi(typeof self=="object"&&self)||Hi(typeof global=="object"&&global)||Hi(typeof en=="object"&&en)||function(){return this}()||Function("return this")()});var j=f((d$,Sl)=>{"use strict";var tn=typeof document=="object"&&document.all;Sl.exports=typeof tn>"u"&&tn!==void 0?function(r){return typeof r=="function"||r===tn}:function(r){return typeof r=="function"}});var Tl=f((p$,yl)=>{"use strict";var vS=G(),yS=j(),vl=vS.WeakMap;yl.exports=yS(vl)&&/native code/.test(String(vl))});var Ae=f((h$,Il)=>{"use strict";var TS=j();Il.exports=function(r){return typeof r=="object"?r!==null:TS(r)}});var ke=f((f$,El)=>{"use strict";var IS=Se();El.exports=!IS(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7})});var Pa=f((m$,Pl)=>{"use strict";var ES=G(),xl=Ae(),rn=ES.document,xS=xl(rn)&&xl(rn.createElement);Pl.exports=function(r){return xS?rn.createElement(r):{}}});var an=f((b$,Al)=>{"use strict";var PS=ke(),AS=Se(),kS=Pa();Al.exports=!PS&&!AS(function(){return Object.defineProperty(kS("div"),"a",{get:function(){return 7}}).a!==7})});var sn=f((g$,kl)=>{"use strict";var wS=ke(),RS=Se();kl.exports=wS&&RS(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42})});var Qe=f((S$,wl)=>{"use strict";var $S=Ae(),LS=String,MS=TypeError;wl.exports=function(r){if($S(r))return r;throw new MS(LS(r)+" is not an object")}});var ve=f((v$,Rl)=>{"use strict";var CS=Ui(),Aa=Function.prototype.call;Rl.exports=CS?Aa.bind(Aa):function(){return Aa.apply(Aa,arguments)}});var ka=f((y$,$l)=>{"use strict";$l.exports={}});var it=f((T$,Ml)=>{"use strict";var nn=ka(),on=G(),DS=j(),Ll=function(r){return DS(r)?r:void 0};Ml.exports=function(r,e){return arguments.length<2?Ll(nn[r])||Ll(on[r]):nn[r]&&nn[r][e]||on[r]&&on[r][e]}});var ji=f((I$,Cl)=>{"use strict";var BS=oe();Cl.exports=BS({}.isPrototypeOf)});var di=f((E$,Vl)=>{"use strict";var VS=G(),Dl=VS.navigator,Bl=Dl&&Dl.userAgent;Vl.exports=Bl?String(Bl):""});var ln=f((x$,ql)=>{"use strict";var Ul=G(),un=di(),Ol=Ul.process,_l=Ul.Deno,Nl=Ol&&Ol.versions||_l&&_l.version,Fl=Nl&&Nl.v8,Oe,wa;Fl&&(Oe=Fl.split("."),wa=Oe[0]>0&&Oe[0]<4?1:+(Oe[0]+Oe[1]));!wa&&un&&(Oe=un.match(/Edge\/(\d+)/),(!Oe||Oe[1]>=74)&&(Oe=un.match(/Chrome\/(\d+)/),Oe&&(wa=+Oe[1])));ql.exports=wa});var cn=f((P$,jl)=>{"use strict";var Hl=ln(),OS=Se(),_S=G(),NS=_S.String;jl.exports=!!Object.getOwnPropertySymbols&&!OS(function(){var r=Symbol("symbol detection");return!NS(r)||!(Object(r)instanceof Symbol)||!Symbol.sham&&Hl&&Hl<41})});var dn=f((A$,Gl)=>{"use strict";var FS=cn();Gl.exports=FS&&!Symbol.sham&&typeof Symbol.iterator=="symbol"});var pn=f((k$,Wl)=>{"use strict";var US=it(),qS=j(),HS=ji(),jS=dn(),GS=Object;Wl.exports=jS?function(r){return typeof r=="symbol"}:function(r){var e=US("Symbol");return qS(e)&&HS(e.prototype,GS(r))}});var Gi=f((w$,Ql)=>{"use strict";var WS=String;Ql.exports=function(r){try{return WS(r)}catch{return"Object"}}});var rt=f((R$,Yl)=>{"use strict";var QS=j(),YS=Gi(),zS=TypeError;Yl.exports=function(r){if(QS(r))return r;throw new zS(YS(r)+" is not a function")}});var Wi=f(($$,zl)=>{"use strict";var KS=rt(),JS=li();zl.exports=function(r,e){var t=r[e];return JS(t)?void 0:KS(t)}});var Jl=f((L$,Kl)=>{"use strict";var hn=ve(),fn=j(),mn=Ae(),XS=TypeError;Kl.exports=function(r,e){var t,i;if(e==="string"&&fn(t=r.toString)&&!mn(i=hn(t,r))||fn(t=r.valueOf)&&!mn(i=hn(t,r))||e!=="string"&&fn(t=r.toString)&&!mn(i=hn(t,r)))return i;throw new XS("Can't convert object to primitive value")}});var _e=f((M$,Xl)=>{"use strict";Xl.exports=!0});var tc=f((C$,ec)=>{"use strict";var Zl=G(),ZS=Object.defineProperty;ec.exports=function(r,e){try{ZS(Zl,r,{value:e,configurable:!0,writable:!0})}catch{Zl[r]=e}return e}});var Qi=f((D$,ac)=>{"use strict";var ev=_e(),tv=G(),iv=tc(),ic="__core-js_shared__",rc=ac.exports=tv[ic]||iv(ic,{});(rc.versions||(rc.versions=[])).push({version:"3.38.0",mode:ev?"pure":"global",copyright:"\xA9 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.38.0/LICENSE",source:"https://github.com/zloirock/core-js"})});var bn=f((B$,nc)=>{"use strict";var sc=Qi();nc.exports=function(r,e){return sc[r]||(sc[r]=e||{})}});var Yi=f((V$,oc)=>{"use strict";var rv=qi(),av=Object;oc.exports=function(r){return av(rv(r))}});var Ne=f((O$,uc)=>{"use strict";var sv=oe(),nv=Yi(),ov=sv({}.hasOwnProperty);uc.exports=Object.hasOwn||function(e,t){return ov(nv(e),t)}});var gn=f((_$,lc)=>{"use strict";var uv=oe(),lv=0,cv=Math.random(),dv=uv(1 .toString);lc.exports=function(r){return"Symbol("+(r===void 0?"":r)+")_"+dv(++lv+cv,36)}});var ie=f((N$,dc)=>{"use strict";var pv=G(),hv=bn(),cc=Ne(),fv=gn(),mv=cn(),bv=dn(),pi=pv.Symbol,Sn=hv("wks"),gv=bv?pi.for||pi:pi&&pi.withoutSetter||fv;dc.exports=function(r){return cc(Sn,r)||(Sn[r]=mv&&cc(pi,r)?pi[r]:gv("Symbol."+r)),Sn[r]}});var mc=f((F$,fc)=>{"use strict";var Sv=ve(),pc=Ae(),hc=pn(),vv=Wi(),yv=Jl(),Tv=ie(),Iv=TypeError,Ev=Tv("toPrimitive");fc.exports=function(r,e){if(!pc(r)||hc(r))return r;var t=vv(r,Ev),i;if(t){if(e===void 0&&(e="default"),i=Sv(t,r,e),!pc(i)||hc(i))return i;throw new Iv("Can't convert object to primitive value")}return e===void 0&&(e="number"),yv(r,e)}});var vn=f((U$,bc)=>{"use strict";var xv=mc(),Pv=pn();bc.exports=function(r){var e=xv(r,"string");return Pv(e)?e:e+""}});var Bt=f(Sc=>{"use strict";var Av=ke(),kv=an(),wv=sn(),Ra=Qe(),gc=vn(),Rv=TypeError,yn=Object.defineProperty,$v=Object.getOwnPropertyDescriptor,Tn="enumerable",In="configurable",En="writable";Sc.f=Av?wv?function(e,t,i){if(Ra(e),t=gc(t),Ra(i),typeof e=="function"&&t==="prototype"&&"value"in i&&En in i&&!i[En]){var a=$v(e,t);a&&a[En]&&(e[t]=i.value,i={configurable:In in i?i[In]:a[In],enumerable:Tn in i?i[Tn]:a[Tn],writable:!1})}return yn(e,t,i)}:yn:function(e,t,i){if(Ra(e),t=gc(t),Ra(i),kv)try{return yn(e,t,i)}catch{}if("get"in i||"set"in i)throw new Rv("Accessors not supported");return"value"in i&&(e[t]=i.value),e}});var zi=f((H$,vc)=>{"use strict";vc.exports=function(r,e){return{enumerable:!(r&1),configurable:!(r&2),writable:!(r&4),value:e}}});var hi=f((j$,yc)=>{"use strict";var Lv=ke(),Mv=Bt(),Cv=zi();yc.exports=Lv?function(r,e,t){return Mv.f(r,e,Cv(1,t))}:function(r,e,t){return r[e]=t,r}});var $a=f((G$,Ic)=>{"use strict";var Dv=bn(),Bv=gn(),Tc=Dv("keys");Ic.exports=function(r){return Tc[r]||(Tc[r]=Bv(r))}});var La=f((W$,Ec)=>{"use strict";Ec.exports={}});var kn=f((Q$,Ac)=>{"use strict";var Vv=Tl(),Pc=G(),Ov=Ae(),_v=hi(),xn=Ne(),Pn=Qi(),Nv=$a(),Fv=La(),xc="Object already initialized",An=Pc.TypeError,Uv=Pc.WeakMap,Ma,Ki,Ca,qv=function(r){return Ca(r)?Ki(r):Ma(r,{})},Hv=function(r){return function(e){var t;if(!Ov(e)||(t=Ki(e)).type!==r)throw new An("Incompatible receiver, "+r+" required");return t}};Vv||Pn.state?(Fe=Pn.state||(Pn.state=new Uv),Fe.get=Fe.get,Fe.has=Fe.has,Fe.set=Fe.set,Ma=function(r,e){if(Fe.has(r))throw new An(xc);return e.facade=r,Fe.set(r,e),e},Ki=function(r){return Fe.get(r)||{}},Ca=function(r){return Fe.has(r)}):(Vt=Nv("state"),Fv[Vt]=!0,Ma=function(r,e){if(xn(r,Vt))throw new An(xc);return e.facade=r,_v(r,Vt,e),e},Ki=function(r){return xn(r,Vt)?r[Vt]:{}},Ca=function(r){return xn(r,Vt)});var Fe,Vt;Ac.exports={set:Ma,get:Ki,has:Ca,enforce:qv,getterFor:Hv}});var wn=f((Y$,$c)=>{"use strict";var jv=Ui(),Rc=Function.prototype,kc=Rc.apply,wc=Rc.call;$c.exports=typeof Reflect=="object"&&Reflect.apply||(jv?wc.bind(kc):function(){return wc.apply(kc,arguments)})});var Rn=f((z$,Lc)=>{"use strict";var Gv=ui(),Wv=oe();Lc.exports=function(r){if(Gv(r)==="Function")return Wv(r)}});var Bc=f(Dc=>{"use strict";var Mc={}.propertyIsEnumerable,Cc=Object.getOwnPropertyDescriptor,Qv=Cc&&!Mc.call({1:2},1);Dc.f=Qv?function(e){var t=Cc(this,e);return!!t&&t.enumerable}:Mc});var _c=f(Oc=>{"use strict";var Yv=ke(),zv=ve(),Kv=Bc(),Jv=zi(),Xv=ci(),Zv=vn(),ey=Ne(),ty=an(),Vc=Object.getOwnPropertyDescriptor;Oc.f=Yv?Vc:function(e,t){if(e=Xv(e),t=Zv(t),ty)try{return Vc(e,t)}catch{}if(ey(e,t))return Jv(!zv(Kv.f,e,t),e[t])}});var $n=f((X$,Nc)=>{"use strict";var iy=Se(),ry=j(),ay=/#|\.prototype\./,Ji=function(r,e){var t=ny[sy(r)];return t===uy?!0:t===oy?!1:ry(e)?iy(e):!!e},sy=Ji.normalize=function(r){return String(r).replace(ay,".").toLowerCase()},ny=Ji.data={},oy=Ji.NATIVE="N",uy=Ji.POLYFILL="P";Nc.exports=Ji});var Xi=f((Z$,Uc)=>{"use strict";var Fc=Rn(),ly=rt(),cy=Ui(),dy=Fc(Fc.bind);Uc.exports=function(r,e){return ly(r),e===void 0?r:cy?dy(r,e):function(){return r.apply(e,arguments)}}});var we=f((eL,Hc)=>{"use strict";var Zi=G(),py=wn(),hy=Rn(),fy=j(),my=_c().f,by=$n(),fi=ka(),gy=Xi(),mi=hi(),qc=Ne();Qi();var Sy=function(r){var e=function(t,i,a){if(this instanceof e){switch(arguments.length){case 0:return new r;case 1:return new r(t);case 2:return new r(t,i)}return new r(t,i,a)}return py(r,this,arguments)};return e.prototype=r.prototype,e};Hc.exports=function(r,e){var t=r.target,i=r.global,a=r.stat,s=r.proto,n=i?Zi:a?Zi[t]:Zi[t]&&Zi[t].prototype,o=i?fi:fi[t]||mi(fi,t,{})[t],u=o.prototype,l,c,d,p,h,m,b,g,y;for(p in e)l=by(i?p:t+(a?".":"#")+p,r.forced),c=!l&&n&&qc(n,p),m=o[p],c&&(r.dontCallGetSet?(y=my(n,p),b=y&&y.value):b=n[p]),h=c&&b?b:e[p],!(!l&&!s&&typeof m==typeof h)&&(r.bind&&c?g=gy(h,Zi):r.wrap&&c?g=Sy(h):s&&fy(h)?g=hy(h):g=h,(r.sham||h&&h.sham||m&&m.sham)&&mi(g,"sham",!0),mi(o,p,g),s&&(d=t+"Prototype",qc(fi,d)||mi(fi,d,{}),mi(fi[d],p,h),r.real&&u&&(l||!u[p])&&mi(u,p,h)))}});var Wc=f((tL,Gc)=>{"use strict";var Ln=ke(),vy=Ne(),jc=Function.prototype,yy=Ln&&Object.getOwnPropertyDescriptor,Mn=vy(jc,"name"),Ty=Mn&&function(){}.name==="something",Iy=Mn&&(!Ln||Ln&&yy(jc,"name").configurable);Gc.exports={EXISTS:Mn,PROPER:Ty,CONFIGURABLE:Iy}});var Yc=f((iL,Qc)=>{"use strict";var Ey=Math.ceil,xy=Math.floor;Qc.exports=Math.trunc||function(e){var t=+e;return(t>0?xy:Ey)(t)}});var Da=f((rL,zc)=>{"use strict";var Py=Yc();zc.exports=function(r){var e=+r;return e!==e||e===0?0:Py(e)}});var Jc=f((aL,Kc)=>{"use strict";var Ay=Da(),ky=Math.max,wy=Math.min;Kc.exports=function(r,e){var t=Ay(r);return t<0?ky(t+e,0):wy(t,e)}});var Zc=f((sL,Xc)=>{"use strict";var Ry=Da(),$y=Math.min;Xc.exports=function(r){var e=Ry(r);return e>0?$y(e,9007199254740991):0}});var Ba=f((nL,ed)=>{"use strict";var Ly=Zc();ed.exports=function(r){return Ly(r.length)}});var rd=f((oL,id)=>{"use strict";var My=ci(),Cy=Jc(),Dy=Ba(),td=function(r){return function(e,t,i){var a=My(e),s=Dy(a);if(s===0)return!r&&-1;var n=Cy(i,s),o;if(r&&t!==t){for(;s>n;)if(o=a[n++],o!==o)return!0}else for(;s>n;n++)if((r||n in a)&&a[n]===t)return r||n||0;return!r&&-1}};id.exports={includes:td(!0),indexOf:td(!1)}});var nd=f((uL,sd)=>{"use strict";var By=oe(),Cn=Ne(),Vy=ci(),Oy=rd().indexOf,_y=La(),ad=By([].push);sd.exports=function(r,e){var t=Vy(r),i=0,a=[],s;for(s in t)!Cn(_y,s)&&Cn(t,s)&&ad(a,s);for(;e.length>i;)Cn(t,s=e[i++])&&(~Oy(a,s)||ad(a,s));return a}});var Dn=f((lL,od)=>{"use strict";od.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]});var ld=f((cL,ud)=>{"use strict";var Ny=nd(),Fy=Dn();ud.exports=Object.keys||function(e){return Ny(e,Fy)}});var dd=f(cd=>{"use strict";var Uy=ke(),qy=sn(),Hy=Bt(),jy=Qe(),Gy=ci(),Wy=ld();cd.f=Uy&&!qy?Object.defineProperties:function(e,t){jy(e);for(var i=Gy(t),a=Wy(t),s=a.length,n=0,o;s>n;)Hy.f(e,o=a[n++],i[o]);return e}});var Bn=f((pL,pd)=>{"use strict";var Qy=it();pd.exports=Qy("document","documentElement")});var Nn=f((hL,vd)=>{"use strict";var Yy=Qe(),zy=dd(),hd=Dn(),Ky=La(),Jy=Bn(),Xy=Pa(),Zy=$a(),fd=">",md="<",On="prototype",_n="script",gd=Zy("IE_PROTO"),Vn=function(){},Sd=function(r){return md+_n+fd+r+md+"/"+_n+fd},bd=function(r){r.write(Sd("")),r.close();var e=r.parentWindow.Object;return r=null,e},eT=function(){var r=Xy("iframe"),e="java"+_n+":",t;return r.style.display="none",Jy.appendChild(r),r.src=String(e),t=r.contentWindow.document,t.open(),t.write(Sd("document.F=Object")),t.close(),t.F},Va,Oa=function(){try{Va=new ActiveXObject("htmlfile")}catch{}Oa=typeof document<"u"?document.domain&&Va?bd(Va):eT():bd(Va);for(var r=hd.length;r--;)delete Oa[On][hd[r]];return Oa()};Ky[gd]=!0;vd.exports=Object.create||function(e,t){var i;return e!==null?(Vn[On]=Yy(e),i=new Vn,Vn[On]=null,i[gd]=e):i=Oa(),t===void 0?i:zy.f(i,t)}});var Td=f((fL,yd)=>{"use strict";var tT=Se();yd.exports=!tT(function(){function r(){}return r.prototype.constructor=null,Object.getPrototypeOf(new r)!==r.prototype})});var Un=f((mL,Ed)=>{"use strict";var iT=Ne(),rT=j(),aT=Yi(),sT=$a(),nT=Td(),Id=sT("IE_PROTO"),Fn=Object,oT=Fn.prototype;Ed.exports=nT?Fn.getPrototypeOf:function(r){var e=aT(r);if(iT(e,Id))return e[Id];var t=e.constructor;return rT(t)&&e instanceof t?t.prototype:e instanceof Fn?oT:null}});var bi=f((bL,xd)=>{"use strict";var uT=hi();xd.exports=function(r,e,t,i){return i&&i.enumerable?r[e]=t:uT(r,e,t),r}});var Gn=f((gL,kd)=>{"use strict";var lT=Se(),cT=j(),dT=Ae(),pT=Nn(),Pd=Un(),hT=bi(),fT=ie(),mT=_e(),jn=fT("iterator"),Ad=!1,at,qn,Hn;[].keys&&(Hn=[].keys(),"next"in Hn?(qn=Pd(Pd(Hn)),qn!==Object.prototype&&(at=qn)):Ad=!0);var bT=!dT(at)||lT(function(){var r={};return at[jn].call(r)!==r});bT?at={}:mT&&(at=pT(at));cT(at[jn])||hT(at,jn,function(){return this});kd.exports={IteratorPrototype:at,BUGGY_SAFARI_ITERATORS:Ad}});var _a=f((SL,Rd)=>{"use strict";var gT=ie(),ST=gT("toStringTag"),wd={};wd[ST]="z";Rd.exports=String(wd)==="[object z]"});var er=f((vL,$d)=>{"use strict";var vT=_a(),yT=j(),Na=ui(),TT=ie(),IT=TT("toStringTag"),ET=Object,xT=Na(function(){return arguments}())==="Arguments",PT=function(r,e){try{return r[e]}catch{}};$d.exports=vT?Na:function(r){var e,t,i;return r===void 0?"Undefined":r===null?"Null":typeof(t=PT(e=ET(r),IT))=="string"?t:xT?Na(e):(i=Na(e))==="Object"&&yT(e.callee)?"Arguments":i}});var Md=f((yL,Ld)=>{"use strict";var AT=_a(),kT=er();Ld.exports=AT?{}.toString:function(){return"[object "+kT(this)+"]"}});var tr=f((TL,Dd)=>{"use strict";var wT=_a(),RT=Bt().f,$T=hi(),LT=Ne(),MT=Md(),CT=ie(),Cd=CT("toStringTag");Dd.exports=function(r,e,t,i){var a=t?r:r&&r.prototype;a&&(LT(a,Cd)||RT(a,Cd,{configurable:!0,value:e}),i&&!wT&&$T(a,"toString",MT))}});var Vd=f((IL,Bd)=>{"use strict";var DT=Gn().IteratorPrototype,BT=Nn(),VT=zi(),OT=tr(),_T=Dt(),NT=function(){return this};Bd.exports=function(r,e,t,i){var a=e+" Iterator";return r.prototype=BT(DT,{next:VT(+!i,t)}),OT(r,a,!1,!0),_T[a]=NT,r}});var _d=f((EL,Od)=>{"use strict";var FT=oe(),UT=rt();Od.exports=function(r,e,t){try{return FT(UT(Object.getOwnPropertyDescriptor(r,e)[t]))}catch{}}});var Fd=f((xL,Nd)=>{"use strict";var qT=Ae();Nd.exports=function(r){return qT(r)||r===null}});var qd=f((PL,Ud)=>{"use strict";var HT=Fd(),jT=String,GT=TypeError;Ud.exports=function(r){if(HT(r))return r;throw new GT("Can't set "+jT(r)+" as a prototype")}});var Wn=f((AL,Hd)=>{"use strict";var WT=_d(),QT=Ae(),YT=qi(),zT=qd();Hd.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var r=!1,e={},t;try{t=WT(Object.prototype,"__proto__","set"),t(e,[]),r=e instanceof Array}catch{}return function(a,s){return YT(a),zT(s),QT(a)&&(r?t(a,s):a.__proto__=s),a}}():void 0)});var ep=f((kL,Zd)=>{"use strict";var KT=we(),JT=ve(),Fa=_e(),Jd=Wc(),XT=j(),ZT=Vd(),jd=Un(),Gd=Wn(),eI=tr(),tI=hi(),Qn=bi(),iI=ie(),Wd=Dt(),Xd=Gn(),rI=Jd.PROPER,aI=Jd.CONFIGURABLE,Qd=Xd.IteratorPrototype,Ua=Xd.BUGGY_SAFARI_ITERATORS,ir=iI("iterator"),Yd="keys",rr="values",zd="entries",Kd=function(){return this};Zd.exports=function(r,e,t,i,a,s,n){ZT(t,e,i);var o=function(y){if(y===a&&p)return p;if(!Ua&&y&&y in c)return c[y];switch(y){case Yd:return function(){return new t(this,y)};case rr:return function(){return new t(this,y)};case zd:return function(){return new t(this,y)}}return function(){return new t(this)}},u=e+" Iterator",l=!1,c=r.prototype,d=c[ir]||c["@@iterator"]||a&&c[a],p=!Ua&&d||o(a),h=e==="Array"&&c.entries||d,m,b,g;if(h&&(m=jd(h.call(new r)),m!==Object.prototype&&m.next&&(!Fa&&jd(m)!==Qd&&(Gd?Gd(m,Qd):XT(m[ir])||Qn(m,ir,Kd)),eI(m,u,!0,!0),Fa&&(Wd[u]=Kd))),rI&&a===rr&&d&&d.name!==rr&&(!Fa&&aI?tI(c,"name",rr):(l=!0,p=function(){return JT(d,this)})),a)if(b={values:o(rr),keys:s?p:o(Yd),entries:o(zd)},n)for(g in b)(Ua||l||!(g in c))&&Qn(c,g,b[g]);else KT({target:e,proto:!0,forced:Ua||l},b);return(!Fa||n)&&c[ir]!==p&&Qn(c,ir,p,{name:a}),Wd[e]=p,b}});var ip=f((wL,tp)=>{"use strict";tp.exports=function(r,e){return{value:r,done:e}}});var zn=f((RL,op)=>{"use strict";var sI=ci(),Yn=Zs(),rp=Dt(),sp=kn(),nI=Bt().f,oI=ep(),qa=ip(),uI=_e(),lI=ke(),np="Array Iterator",cI=sp.set,dI=sp.getterFor(np);op.exports=oI(Array,"Array",function(r,e){cI(this,{type:np,target:sI(r),index:0,kind:e})},function(){var r=dI(this),e=r.target,t=r.index++;if(!e||t>=e.length)return r.target=void 0,qa(void 0,!0);switch(r.kind){case"keys":return qa(t,!1);case"values":return qa(e[t],!1)}return qa([t,e[t]],!1)},"values");var ap=rp.Arguments=rp.Array;Yn("keys");Yn("values");Yn("entries");if(!uI&&lI&&ap.name!=="values")try{nI(ap,"name",{value:"values"})}catch{}});var lp=f(($L,up)=>{"use strict";var pI=ie(),hI=Dt(),fI=pI("iterator"),mI=Array.prototype;up.exports=function(r){return r!==void 0&&(hI.Array===r||mI[fI]===r)}});var Kn=f((LL,dp)=>{"use strict";var bI=er(),cp=Wi(),gI=li(),SI=Dt(),vI=ie(),yI=vI("iterator");dp.exports=function(r){if(!gI(r))return cp(r,yI)||cp(r,"@@iterator")||SI[bI(r)]}});var hp=f((ML,pp)=>{"use strict";var TI=ve(),II=rt(),EI=Qe(),xI=Gi(),PI=Kn(),AI=TypeError;pp.exports=function(r,e){var t=arguments.length<2?PI(r):e;if(II(t))return EI(TI(t,r));throw new AI(xI(r)+" is not iterable")}});var bp=f((CL,mp)=>{"use strict";var kI=ve(),fp=Qe(),wI=Wi();mp.exports=function(r,e,t){var i,a;fp(r);try{if(i=wI(r,"return"),!i){if(e==="throw")throw t;return t}i=kI(i,r)}catch(s){a=!0,i=s}if(e==="throw")throw t;if(a)throw i;return fp(i),t}});var ja=f((DL,yp)=>{"use strict";var RI=Xi(),$I=ve(),LI=Qe(),MI=Gi(),CI=lp(),DI=Ba(),gp=ji(),BI=hp(),VI=Kn(),Sp=bp(),OI=TypeError,Ha=function(r,e){this.stopped=r,this.result=e},vp=Ha.prototype;yp.exports=function(r,e,t){var i=t&&t.that,a=!!(t&&t.AS_ENTRIES),s=!!(t&&t.IS_RECORD),n=!!(t&&t.IS_ITERATOR),o=!!(t&&t.INTERRUPTED),u=RI(e,i),l,c,d,p,h,m,b,g=function(I){return l&&Sp(l,"normal",I),new Ha(!0,I)},y=function(I){return a?(LI(I),o?u(I[0],I[1],g):u(I[0],I[1])):o?u(I,g):u(I)};if(s)l=r.iterator;else if(n)l=r;else{if(c=VI(r),!c)throw new OI(MI(r)+" is not iterable");if(CI(c)){for(d=0,p=DI(r);p>d;d++)if(h=y(r[d]),h&&gp(vp,h))return h;return new Ha(!1)}l=BI(r,c)}for(m=s?r.next:l.next;!(b=$I(m,l)).done;){try{h=y(b.value)}catch(I){Sp(l,"throw",I)}if(typeof h=="object"&&h&&gp(vp,h))return h}return new Ha(!1)}});var Ip=f((BL,Tp)=>{"use strict";var _I=ke(),NI=Bt(),FI=zi();Tp.exports=function(r,e,t){_I?NI.f(r,e,FI(0,t)):r[e]=t}});var Ep=f(()=>{"use strict";var UI=we(),qI=ja(),HI=Ip();UI({target:"Object",stat:!0},{fromEntries:function(e){var t={};return qI(e,function(i,a){HI(t,i,a)},{AS_ENTRIES:!0}),t}})});var Pp=f((_L,xp)=>{"use strict";zn();Ep();var jI=ka();xp.exports=jI.Object.fromEntries});var kp=f((NL,Ap)=>{"use strict";Ap.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}});var Rp=f(()=>{"use strict";zn();var GI=kp(),WI=G(),QI=tr(),wp=Dt();for(Ga in GI)QI(WI[Ga],Ga),wp[Ga]=wp.Array;var Ga});var Lp=f((qL,$p)=>{"use strict";var YI=Pp();Rp();$p.exports=YI});var Jn=f((HL,Mp)=>{"use strict";var zI=Lp();Mp.exports=zI});var Cp=f(()=>{"use strict"});var Xn=f((WL,Dp)=>{"use strict";var ar=G(),KI=di(),JI=ui(),Wa=function(r){return KI.slice(0,r.length)===r};Dp.exports=function(){return Wa("Bun/")?"BUN":Wa("Cloudflare-Workers")?"CLOUDFLARE":Wa("Deno/")?"DENO":Wa("Node.js/")?"NODE":ar.Bun&&typeof Bun.version=="string"?"BUN":ar.Deno&&typeof Deno.version=="object"?"DENO":JI(ar.process)==="process"?"NODE":ar.window&&ar.document?"BROWSER":"REST"}()});var Qa=f((QL,Bp)=>{"use strict";var XI=Xn();Bp.exports=XI==="NODE"});var Op=f((YL,Vp)=>{"use strict";var ZI=Bt();Vp.exports=function(r,e,t){return ZI.f(r,e,t)}});var Fp=f((zL,Np)=>{"use strict";var eE=it(),tE=Op(),iE=ie(),rE=ke(),_p=iE("species");Np.exports=function(r){var e=eE(r);rE&&e&&!e[_p]&&tE(e,_p,{configurable:!0,get:function(){return this}})}});var qp=f((KL,Up)=>{"use strict";var aE=ji(),sE=TypeError;Up.exports=function(r,e){if(aE(e,r))return r;throw new sE("Incorrect invocation")}});var eo=f((JL,Hp)=>{"use strict";var nE=oe(),oE=j(),Zn=Qi(),uE=nE(Function.toString);oE(Zn.inspectSource)||(Zn.inspectSource=function(r){return uE(r)});Hp.exports=Zn.inspectSource});var zp=f((XL,Yp)=>{"use strict";var lE=oe(),cE=Se(),jp=j(),dE=er(),pE=it(),hE=eo(),Gp=function(){},Wp=pE("Reflect","construct"),to=/^\s*(?:class|function)\b/,fE=lE(to.exec),mE=!to.test(Gp),sr=function(e){if(!jp(e))return!1;try{return Wp(Gp,[],e),!0}catch{return!1}},Qp=function(e){if(!jp(e))return!1;switch(dE(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return mE||!!fE(to,hE(e))}catch{return!0}};Qp.sham=!0;Yp.exports=!Wp||cE(function(){var r;return sr(sr.call)||!sr(Object)||!sr(function(){r=!0})||r})?Qp:sr});var Jp=f((ZL,Kp)=>{"use strict";var bE=zp(),gE=Gi(),SE=TypeError;Kp.exports=function(r){if(bE(r))return r;throw new SE(gE(r)+" is not a constructor")}});var io=f((eM,Zp)=>{"use strict";var Xp=Qe(),vE=Jp(),yE=li(),TE=ie(),IE=TE("species");Zp.exports=function(r,e){var t=Xp(r).constructor,i;return t===void 0||yE(i=Xp(t)[IE])?e:vE(i)}});var th=f((tM,eh)=>{"use strict";var EE=oe();eh.exports=EE([].slice)});var rh=f((iM,ih)=>{"use strict";var xE=TypeError;ih.exports=function(r,e){if(r<e)throw new xE("Not enough arguments");return r}});var ro=f((rM,ah)=>{"use strict";var PE=di();ah.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(PE)});var ho=f((aM,hh)=>{"use strict";var ye=G(),AE=wn(),kE=Xi(),sh=j(),wE=Ne(),ph=Se(),nh=Bn(),RE=th(),oh=Pa(),$E=rh(),LE=ro(),ME=Qa(),lo=ye.setImmediate,co=ye.clearImmediate,CE=ye.process,ao=ye.Dispatch,DE=ye.Function,uh=ye.MessageChannel,BE=ye.String,so=0,nr={},lh="onreadystatechange",or,Ot,no,oo;ph(function(){or=ye.location});var po=function(r){if(wE(nr,r)){var e=nr[r];delete nr[r],e()}},uo=function(r){return function(){po(r)}},ch=function(r){po(r.data)},dh=function(r){ye.postMessage(BE(r),or.protocol+"//"+or.host)};(!lo||!co)&&(lo=function(e){$E(arguments.length,1);var t=sh(e)?e:DE(e),i=RE(arguments,1);return nr[++so]=function(){AE(t,void 0,i)},Ot(so),so},co=function(e){delete nr[e]},ME?Ot=function(r){CE.nextTick(uo(r))}:ao&&ao.now?Ot=function(r){ao.now(uo(r))}:uh&&!LE?(no=new uh,oo=no.port2,no.port1.onmessage=ch,Ot=kE(oo.postMessage,oo)):ye.addEventListener&&sh(ye.postMessage)&&!ye.importScripts&&or&&or.protocol!=="file:"&&!ph(dh)?(Ot=dh,ye.addEventListener("message",ch,!1)):lh in oh("script")?Ot=function(r){nh.appendChild(oh("script"))[lh]=function(){nh.removeChild(this),po(r)}}:Ot=function(r){setTimeout(uo(r),0)});hh.exports={set:lo,clear:co}});var bh=f((sM,mh)=>{"use strict";var fh=G(),VE=ke(),OE=Object.getOwnPropertyDescriptor;mh.exports=function(r){if(!VE)return fh[r];var e=OE(fh,r);return e&&e.value}});var fo=f((nM,Sh)=>{"use strict";var gh=function(){this.head=null,this.tail=null};gh.prototype={add:function(r){var e={item:r,next:null},t=this.tail;t?t.next=e:this.head=e,this.tail=e},get:function(){var r=this.head;if(r){var e=this.head=r.next;return e===null&&(this.tail=null),r.item}}};Sh.exports=gh});var yh=f((oM,vh)=>{"use strict";var _E=di();vh.exports=/ipad|iphone|ipod/i.test(_E)&&typeof Pebble<"u"});var Ih=f((uM,Th)=>{"use strict";var NE=di();Th.exports=/web0s(?!.*chrome)/i.test(NE)});var Rh=f((lM,wh)=>{"use strict";var Si=G(),FE=bh(),Eh=Xi(),mo=ho().set,UE=fo(),qE=ro(),HE=yh(),jE=Ih(),bo=Qa(),xh=Si.MutationObserver||Si.WebKitMutationObserver,Ph=Si.document,Ah=Si.process,Ya=Si.Promise,vo=FE("queueMicrotask"),gi,go,So,za,kh;vo||(ur=new UE,lr=function(){var r,e;for(bo&&(r=Ah.domain)&&r.exit();e=ur.get();)try{e()}catch(t){throw ur.head&&gi(),t}r&&r.enter()},!qE&&!bo&&!jE&&xh&&Ph?(go=!0,So=Ph.createTextNode(""),new xh(lr).observe(So,{characterData:!0}),gi=function(){So.data=go=!go}):!HE&&Ya&&Ya.resolve?(za=Ya.resolve(void 0),za.constructor=Ya,kh=Eh(za.then,za),gi=function(){kh(lr)}):bo?gi=function(){Ah.nextTick(lr)}:(mo=Eh(mo,Si),gi=function(){mo(lr)}),vo=function(r){ur.head||gi(),ur.add(r)});var ur,lr;wh.exports=vo});var Lh=f((cM,$h)=>{"use strict";$h.exports=function(r,e){try{arguments.length===1?console.error(r):console.error(r,e)}catch{}}});var Ka=f((dM,Mh)=>{"use strict";Mh.exports=function(r){try{return{error:!1,value:r()}}catch(e){return{error:!0,value:e}}}});var _t=f((pM,Ch)=>{"use strict";var GE=G();Ch.exports=GE.Promise});var vi=f((hM,Oh)=>{"use strict";var WE=G(),cr=_t(),QE=j(),YE=$n(),zE=eo(),KE=ie(),Dh=Xn(),JE=_e(),yo=ln(),Bh=cr&&cr.prototype,XE=KE("species"),To=!1,Vh=QE(WE.PromiseRejectionEvent),ZE=YE("Promise",function(){var r=zE(cr),e=r!==String(cr);if(!e&&yo===66||JE&&!(Bh.catch&&Bh.finally))return!0;if(!yo||yo<51||!/native code/.test(r)){var t=new cr(function(s){s(1)}),i=function(s){s(function(){},function(){})},a=t.constructor={};if(a[XE]=i,To=t.then(function(){})instanceof i,!To)return!0}return!e&&(Dh==="BROWSER"||Dh==="DENO")&&!Vh});Oh.exports={CONSTRUCTOR:ZE,REJECTION_EVENT:Vh,SUBCLASSING:To}});var yi=f((fM,Nh)=>{"use strict";var _h=rt(),ex=TypeError,tx=function(r){var e,t;this.promise=new r(function(i,a){if(e!==void 0||t!==void 0)throw new ex("Bad Promise constructor");e=i,t=a}),this.resolve=_h(e),this.reject=_h(t)};Nh.exports.f=function(r){return new tx(r)}});var sf=f(()=>{"use strict";var ix=we(),rx=_e(),es=Qa(),mt=G(),xi=ve(),Fh=bi(),Uh=Wn(),ax=tr(),sx=Fp(),nx=rt(),Za=j(),ox=Ae(),ux=qp(),lx=io(),Wh=ho().set,Ao=Rh(),cx=Lh(),dx=Ka(),px=fo(),Qh=kn(),ts=_t(),ko=vi(),Yh=yi(),is="Promise",zh=ko.CONSTRUCTOR,hx=ko.REJECTION_EVENT,fx=ko.SUBCLASSING,Io=Qh.getterFor(is),mx=Qh.set,Ti=ts&&ts.prototype,Nt=ts,Ja=Ti,Kh=mt.TypeError,Eo=mt.document,wo=mt.process,xo=Yh.f,bx=xo,gx=!!(Eo&&Eo.createEvent&&mt.dispatchEvent),Jh="unhandledrejection",Sx="rejectionhandled",qh=0,Xh=1,vx=2,Ro=1,Zh=2,Xa,Hh,yx,jh,ef=function(r){var e;return ox(r)&&Za(e=r.then)?e:!1},tf=function(r,e){var t=e.value,i=e.state===Xh,a=i?r.ok:r.fail,s=r.resolve,n=r.reject,o=r.domain,u,l,c;try{a?(i||(e.rejection===Zh&&Ix(e),e.rejection=Ro),a===!0?u=t:(o&&o.enter(),u=a(t),o&&(o.exit(),c=!0)),u===r.promise?n(new Kh("Promise-chain cycle")):(l=ef(u))?xi(l,u,s,n):s(u)):n(t)}catch(d){o&&!c&&o.exit(),n(d)}},rf=function(r,e){r.notified||(r.notified=!0,Ao(function(){for(var t=r.reactions,i;i=t.get();)tf(i,r);r.notified=!1,e&&!r.rejection&&Tx(r)}))},af=function(r,e,t){var i,a;gx?(i=Eo.createEvent("Event"),i.promise=e,i.reason=t,i.initEvent(r,!1,!0),mt.dispatchEvent(i)):i={promise:e,reason:t},!hx&&(a=mt["on"+r])?a(i):r===Jh&&cx("Unhandled promise rejection",t)},Tx=function(r){xi(Wh,mt,function(){var e=r.facade,t=r.value,i=Gh(r),a;if(i&&(a=dx(function(){es?wo.emit("unhandledRejection",t,e):af(Jh,e,t)}),r.rejection=es||Gh(r)?Zh:Ro,a.error))throw a.value})},Gh=function(r){return r.rejection!==Ro&&!r.parent},Ix=function(r){xi(Wh,mt,function(){var e=r.facade;es?wo.emit("rejectionHandled",e):af(Sx,e,r.value)})},Ii=function(r,e,t){return function(i){r(e,i,t)}},Ei=function(r,e,t){r.done||(r.done=!0,t&&(r=t),r.value=e,r.state=vx,rf(r,!0))},Po=function(r,e,t){if(!r.done){r.done=!0,t&&(r=t);try{if(r.facade===e)throw new Kh("Promise can't be resolved itself");var i=ef(e);i?Ao(function(){var a={done:!1};try{xi(i,e,Ii(Po,a,r),Ii(Ei,a,r))}catch(s){Ei(a,s,r)}}):(r.value=e,r.state=Xh,rf(r,!1))}catch(a){Ei({done:!1},a,r)}}};if(zh&&(Nt=function(e){ux(this,Ja),nx(e),xi(Xa,this);var t=Io(this);try{e(Ii(Po,t),Ii(Ei,t))}catch(i){Ei(t,i)}},Ja=Nt.prototype,Xa=function(e){mx(this,{type:is,done:!1,notified:!1,parent:!1,reactions:new px,rejection:!1,state:qh,value:void 0})},Xa.prototype=Fh(Ja,"then",function(e,t){var i=Io(this),a=xo(lx(this,Nt));return i.parent=!0,a.ok=Za(e)?e:!0,a.fail=Za(t)&&t,a.domain=es?wo.domain:void 0,i.state===qh?i.reactions.add(a):Ao(function(){tf(a,i)}),a.promise}),Hh=function(){var r=new Xa,e=Io(r);this.promise=r,this.resolve=Ii(Po,e),this.reject=Ii(Ei,e)},Yh.f=xo=function(r){return r===Nt||r===yx?new Hh(r):bx(r)},!rx&&Za(ts)&&Ti!==Object.prototype)){jh=Ti.then,fx||Fh(Ti,"then",function(e,t){var i=this;return new Nt(function(a,s){xi(jh,i,a,s)}).then(e,t)},{unsafe:!0});try{delete Ti.constructor}catch{}Uh&&Uh(Ti,Ja)}ix({global:!0,constructor:!0,wrap:!0,forced:zh},{Promise:Nt});ax(Nt,is,!1,!0);sx(is)});var cf=f((gM,lf)=>{"use strict";var Ex=ie(),of=Ex("iterator"),uf=!1;try{nf=0,$o={next:function(){return{done:!!nf++}},return:function(){uf=!0}},$o[of]=function(){return this},Array.from($o,function(){throw 2})}catch{}var nf,$o;lf.exports=function(r,e){try{if(!e&&!uf)return!1}catch{return!1}var t=!1;try{var i={};i[of]=function(){return{next:function(){return{done:t=!0}}}},r(i)}catch{}return t}});var Lo=f((SM,df)=>{"use strict";var xx=_t(),Px=cf(),Ax=vi().CONSTRUCTOR;df.exports=Ax||!Px(function(r){xx.all(r).then(void 0,function(){})})});var pf=f(()=>{"use strict";var kx=we(),wx=ve(),Rx=rt(),$x=yi(),Lx=Ka(),Mx=ja(),Cx=Lo();kx({target:"Promise",stat:!0,forced:Cx},{all:function(e){var t=this,i=$x.f(t),a=i.resolve,s=i.reject,n=Lx(function(){var o=Rx(t.resolve),u=[],l=0,c=1;Mx(e,function(d){var p=l++,h=!1;c++,wx(o,t,d).then(function(m){h||(h=!0,u[p]=m,--c||a(u))},s)}),--c||a(u)});return n.error&&s(n.value),i.promise}})});var ff=f(()=>{"use strict";var Dx=we(),Bx=_e(),Vx=vi().CONSTRUCTOR,Co=_t(),Ox=it(),_x=j(),Nx=bi(),hf=Co&&Co.prototype;Dx({target:"Promise",proto:!0,forced:Vx,real:!0},{catch:function(r){return this.then(void 0,r)}});!Bx&&_x(Co)&&(Mo=Ox("Promise").prototype.catch,hf.catch!==Mo&&Nx(hf,"catch",Mo,{unsafe:!0}));var Mo});var mf=f(()=>{"use strict";var Fx=we(),Ux=ve(),qx=rt(),Hx=yi(),jx=Ka(),Gx=ja(),Wx=Lo();Fx({target:"Promise",stat:!0,forced:Wx},{race:function(e){var t=this,i=Hx.f(t),a=i.reject,s=jx(function(){var n=qx(t.resolve);Gx(e,function(o){Ux(n,t,o).then(i.resolve,a)})});return s.error&&a(s.value),i.promise}})});var bf=f(()=>{"use strict";var Qx=we(),Yx=yi(),zx=vi().CONSTRUCTOR;Qx({target:"Promise",stat:!0,forced:zx},{reject:function(e){var t=Yx.f(this),i=t.reject;return i(e),t.promise}})});var Do=f((kM,gf)=>{"use strict";var Kx=Qe(),Jx=Ae(),Xx=yi();gf.exports=function(r,e){if(Kx(r),Jx(e)&&e.constructor===r)return e;var t=Xx.f(r),i=t.resolve;return i(e),t.promise}});var yf=f(()=>{"use strict";var Zx=we(),eP=it(),Sf=_e(),tP=_t(),vf=vi().CONSTRUCTOR,iP=Do(),rP=eP("Promise"),aP=Sf&&!vf;Zx({target:"Promise",stat:!0,forced:Sf||vf},{resolve:function(e){return iP(aP&&this===rP?tP:this,e)}})});var Tf=f(()=>{"use strict";sf();pf();ff();mf();bf();yf()});var Pf=f(()=>{"use strict";var sP=we(),nP=_e(),rs=_t(),oP=Se(),Ef=it(),xf=j(),uP=io(),If=Do(),lP=bi(),Vo=rs&&rs.prototype,cP=!!rs&&oP(function(){Vo.finally.call({then:function(){}},function(){})});sP({target:"Promise",proto:!0,real:!0,forced:cP},{finally:function(r){var e=uP(this,Ef("Promise")),t=xf(r);return this.then(t?function(i){return If(e,r()).then(function(){return i})}:r,t?function(i){return If(e,r()).then(function(){throw i})}:r)}});!nP&&xf(rs)&&(Bo=Ef("Promise").prototype.finally,Vo.finally!==Bo&&lP(Vo,"finally",Bo,{unsafe:!0}));var Bo});var as=f((DM,Af)=>{"use strict";var dP=it();Af.exports=dP});var wf=f((BM,kf)=>{"use strict";Cp();Tf();Pf();var pP=as();kf.exports=pP("Promise","finally")});var $f=f((VM,Rf)=>{"use strict";var hP=wf();Rf.exports=hP});var ss=f((OM,Lf)=>{"use strict";var fP=$f();Lf.exports=fP});var im=f(()=>{"use strict";var HP=we(),jP=Yi(),GP=Ba(),WP=Da(),QP=Zs();HP({target:"Array",proto:!0},{at:function(e){var t=jP(this),i=GP(t),a=WP(e),s=a>=0?a:i+a;return s<0||s>=i?void 0:t[s]}});QP("at")});var am=f((WC,rm)=>{"use strict";im();var YP=as();rm.exports=YP("Array","at")});var nm=f((QC,sm)=>{"use strict";var zP=am();sm.exports=zP});var ki=f((YC,om)=>{"use strict";var KP=nm();om.exports=KP});var rb=f(()=>{"use strict"});var ab=f(()=>{"use strict"});var nb=f((XV,sb)=>{"use strict";var ak=Ae(),sk=ui(),nk=ie(),ok=nk("match");sb.exports=function(r){var e;return ak(r)&&((e=r[ok])!==void 0?!!e:sk(r)==="RegExp")}});var ub=f((ZV,ob)=>{"use strict";var uk=er(),lk=String;ob.exports=function(r){if(uk(r)==="Symbol")throw new TypeError("Cannot convert a Symbol value to a string");return lk(r)}});var cb=f((eO,lb)=>{"use strict";var ck=Qe();lb.exports=function(){var r=ck(this),e="";return r.hasIndices&&(e+="d"),r.global&&(e+="g"),r.ignoreCase&&(e+="i"),r.multiline&&(e+="m"),r.dotAll&&(e+="s"),r.unicode&&(e+="u"),r.unicodeSets&&(e+="v"),r.sticky&&(e+="y"),e}});var hb=f((tO,pb)=>{"use strict";var dk=ve(),pk=Ne(),hk=ji(),fk=cb(),db=RegExp.prototype;pb.exports=function(r){var e=r.flags;return e===void 0&&!("flags"in db)&&!pk(r,"flags")&&hk(db,r)?dk(fk,r):e}});var mb=f((iO,fb)=>{"use strict";var pu=oe(),mk=Yi(),bk=Math.floor,cu=pu("".charAt),gk=pu("".replace),du=pu("".slice),Sk=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,vk=/\$([$&'`]|\d{1,2})/g;fb.exports=function(r,e,t,i,a,s){var n=t+r.length,o=i.length,u=vk;return a!==void 0&&(a=mk(a),u=Sk),gk(s,u,function(l,c){var d;switch(cu(c,0)){case"$":return"$";case"&":return r;case"`":return du(e,0,t);case"'":return du(e,n);case"<":d=a[du(c,1,-1)];break;default:var p=+c;if(p===0)return l;if(p>o){var h=bk(p/10);return h===0?l:h<=o?i[h-1]===void 0?cu(c,1):i[h-1]+cu(c,1):l}d=i[p-1]}return d===void 0?"":d})}});var Sb=f(()=>{"use strict";var yk=we(),Tk=ve(),fu=oe(),bb=qi(),Ik=j(),Ek=li(),xk=nb(),Ci=ub(),Pk=Wi(),Ak=hb(),kk=mb(),wk=ie(),Rk=_e(),$k=wk("replace"),Lk=TypeError,hu=fu("".indexOf),Mk=fu("".replace),gb=fu("".slice),Ck=Math.max;yk({target:"String",proto:!0},{replaceAll:function(e,t){var i=bb(this),a,s,n,o,u,l,c,d,p,h,m=0,b="";if(!Ek(e)){if(a=xk(e),a&&(s=Ci(bb(Ak(e))),!~hu(s,"g")))throw new Lk("`.replaceAll` does not allow non-global regexes");if(n=Pk(e,$k),n)return Tk(n,e,i,t);if(Rk&&a)return Mk(Ci(i),e,t)}for(o=Ci(i),u=Ci(e),l=Ik(t),l||(t=Ci(t)),c=u.length,d=Ck(1,c),p=hu(o,u);p!==-1;)h=l?Ci(t(u,p,o)):kk(u,o,p,[],void 0,t),b+=gb(o,m,p)+h,m=p+c,p=p+d>o.length?-1:hu(o,u,p+d);return m<o.length&&(b+=gb(o,m)),b}})});var yb=f((sO,vb)=>{"use strict";rb();ab();Sb();var Dk=as();vb.exports=Dk("String","replaceAll")});var Ib=f((nO,Tb)=>{"use strict";var Bk=yb();Tb.exports=Bk});var xb=f((oO,Eb)=>{"use strict";var Vk=Ib();Eb.exports=Vk});var Ku="2.0.116-dev.68a2c5fb.0";var ne=(a=>(a.STOPPED="stopped",a.READY="ready",a.PLAYING="playing",a.PAUSED="paused",a))(ne||{}),ft=(T=>(T.MPEG="MPEG",T.DASH="DASH",T.DASH_SEP="DASH_SEP",T.DASH_SEP_VK="DASH_SEP",T.DASH_WEBM="DASH_WEBM",T.DASH_WEBM_AV1="DASH_WEBM_AV1",T.DASH_STREAMS="DASH_STREAMS",T.DASH_WEBM_VK="DASH_WEBM",T.DASH_ONDEMAND="DASH_ONDEMAND",T.DASH_ONDEMAND_VK="DASH_ONDEMAND",T.DASH_LIVE="DASH_LIVE",T.DASH_LIVE_CMAF="DASH_LIVE_CMAF",T.DASH_LIVE_WEBM="DASH_LIVE_WEBM",T.HLS="HLS",T.HLS_ONDEMAND="HLS_ONDEMAND",T.HLS_JS="HLS",T.HLS_LIVE="HLS_LIVE",T.HLS_LIVE_CMAF="HLS_LIVE_CMAF",T.WEB_RTC_LIVE="WEB_RTC_LIVE",T))(ft||{});var Ia=(a=>(a.NOT_AVAILABLE="NOT_AVAILABLE",a.AVAILABLE="AVAILABLE",a.CONNECTING="CONNECTING",a.CONNECTED="CONNECTED",a))(Ia||{}),Qs=(i=>(i.HTTP1="http1",i.HTTP2="http2",i.QUIC="quic",i))(Qs||{});var Ys=(n=>(n.NONE="none",n.INLINE="inline",n.FULLSCREEN="fullscreen",n.SECOND_SCREEN="second_screen",n.PIP="pip",n.INVISIBLE="invisible",n))(Ys||{});import{assertNever as il,assertNonNullable as eS,isNonNullable as Ea,ValueSubject as zs,Subject as tS,Subscription as iS,merge as rS,observableFrom as aS,fromEvent as Xu,map as Zu,tap as el,filterChanged as sS,isNullable as Ks,ErrorCategory as tl}from"@vkontakte/videoplayer-shared";var Ju=r=>new Promise((e,t)=>{let i=document.createElement("script");i.setAttribute("src",r),i.onload=()=>e,i.onerror=()=>t,document.body.appendChild(i)});var xa=class{constructor(e){this.connection$=new zs(void 0);this.castState$=new zs("NOT_AVAILABLE");this.errorEvent$=new tS;this.realCastState$=new zs("NOT_AVAILABLE");this.subscription=new iS;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 i=Ea(window.chrome?.cast),a=!!window.__onGCastApiAvailable;i?this.initializeCastApi():(window.__onGCastApiAvailable=s=>{delete window.__onGCastApiAvailable,s&&this.initializeCastApi()},a||Ju("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:tl.NETWORK,message:"Script loading failed!"})))}connect(){cast.framework.CastContext.getInstance()?.requestSession()}disconnect(){cast.framework.CastContext.getInstance()?.getCurrentSession()?.endSession(!0)}stopMedia(){return new Promise((e,t)=>{cast.framework.CastContext.getInstance()?.getCurrentSession()?.getMediaSession()?.stop(new chrome.cast.media.StopRequest,e,t)})}toggleConnection(){Ea(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();Ks(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();Ks(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.subscription.unsubscribe()}initListeners(){let e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),i=cast.framework.CastContext.getInstance();this.subscription.add(Xu(i,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(a=>{switch(a.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:this.contentId=i.getCurrentSession()?.getMediaSession()?.media?.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 il(a.sessionState)}})).add(rS(Xu(i,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(el(a=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(a)}`})}),Zu(a=>a.castState)),aS([i.getCastState()])).pipe(sS(),Zu(nS),el(a=>{this.log({message:`realCastState$: ${a}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(a=>{let s=a==="CONNECTED",n=Ea(this.connection$.getValue());if(s&&!n){let o=i.getCurrentSession();eS(o);let u=o.getCastDevice(),l=o.getMediaSession()?.media?.contentId;(Ks(l)||l===this.contentId)&&(this.log({message:"connection created"}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:o,castDevice:u}))}else!s&&n&&(this.log({message:"connection destroyed"}),this.connection$.next(void 0));this.castState$.next(a==="CONNECTED"?Ea(this.connection$.getValue())?"CONNECTED":"AVAILABLE":a)}))}initializeCastApi(){let e,t,i;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,i=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:i}),this.initListeners()}catch(a){this.errorEvent$.next({id:"ChromecastInitializer",category:tl.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:a})}}},nS=r=>{switch(r){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 il(r)}};var Pg=Ve(Jn(),1);var Uf=Ve(ss(),1);import{assertNever as Mf}from"@vkontakte/videoplayer-shared";var Z=(r,e=0,t=0)=>{switch(t){case 0:return r.replace("_offset_p",e===0?"":"_"+e.toFixed(0));case 1:{if(e===0)return r;let i=new URL(r);return i.searchParams.append("playback_shift",e.toFixed(0)),i.toString()}case 2:{let i=new URL(r);return!i.searchParams.get("offset_p")&&e===0?r:(i.searchParams.set("offset_p",e.toFixed(0)),i.toString())}default:Mf(t)}return r},Oo=(r,e)=>{switch(e){case 0:return NaN;case 1:{let t=new URL(r);return Number(t.searchParams.get("playback_shift"))}case 2:{let t=new URL(r);return Number(t.searchParams.get("offset_p")??0)}default:Mf(e)}};var E=(r,e,t=!1)=>{let i=r.getTransition();(t||!i||i.to===e)&&r.setState(e)};import{isNonNullable as mP,Subject as ns,merge as Cf}from"@vkontakte/videoplayer-shared";var $=class{constructor(e){this.transitionStarted$=new ns;this.transitionEnded$=new ns;this.transitionUpdated$=new ns;this.forceChanged$=new ns;this.stateChangeStarted$=Cf(this.transitionStarted$,this.transitionUpdated$);this.stateChangeEnded$=Cf(this.transitionEnded$,this.forceChanged$);this.state=e,this.prevState=void 0}setState(e){let t=this.transition,i=this.state;this.transition=void 0,this.prevState=i,this.state=e,t?t.to===e?this.transitionEnded$.next(t):this.forceChanged$.next({from:t.from,to:e,canceledTransition:t}):this.forceChanged$.next({from:i,to:e,canceledTransition:t})}startTransitionTo(e){let t=this.transition,i=this.state;i===e||mP(t)&&t.to===e||(this.prevState=i,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:i,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}};import{assertNever as bP}from"@vkontakte/videoplayer-shared";var Df=r=>{switch(r){case"MPEG":case"DASH":case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":case"HLS":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 bP(r)}};import{assertNever as Pi,assertNonNullable as Ft,debounce as Bf,ErrorCategory as Vf,fromEvent as Ut,isNonNullable as Of,map as _f,merge as Nf,observableFrom as gP,Subject as SP,Subscription as _o,timeout as vP,getHighestQuality as yP}from"@vkontakte/videoplayer-shared";var TP=5,IP=5,EP=500,Ff=7e3,dr=class{constructor(e){this.subscription=new _o;this.loadMediaTimeoutSubscription=new _o;this.videoState=new $("stopped");this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),i=this.params.desiredState.playbackState.getState(),a=this.params.desiredState.playbackState.getTransition(),s=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${e}; videoTransition: ${JSON.stringify(t)}; desiredPlaybackState: ${i}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(s)};`}),i==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.stop());return}if(!t){if(a?.to!=="paused"&&s.state==="requested"&&e!=="stopped"){this.seek(s.position/1e3);return}switch(i){case"ready":{switch(e){case"playing":case"paused":case"ready":break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:Pi(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:Pi(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:Pi(e)}break}default:Pi(i)}}};this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Df(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 _o;this.subscription.add(e),this.subscription.add(Nf(this.videoState.stateChangeStarted$.pipe(_f(a=>`stateChangeStarted$ ${JSON.stringify(a)}`)),this.videoState.stateChangeEnded$.pipe(_f(a=>`stateChangeEnded$ ${JSON.stringify(a)}`))).subscribe(a=>this.log({message:`[videoState] ${a}`})));let t=(a,s)=>this.subscription.add(a.subscribe(s));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{let a=new SP;e.add(a.pipe(Bf(EP)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let s=NaN;e.add(Ut(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(n=>{this.logRemoteEvent(n);let o=n.value;this.params.output.position$.next(o),(this.params.desiredState.seekState.getState().state==="applying"||Math.abs(o-s)>TP)&&a.next(o),s=o})),e.add(Ut(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(n=>{this.logRemoteEvent(n),this.params.output.duration$.next(n.value)}))}t(Ut(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(Ut(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemotePause():this.handleRemotePlay()}),t(Ut(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),a=>{this.logRemoteEvent(a);let{remotePlayer:s}=this.params.connection,n=a.value,o=this.params.output.isBuffering$.getValue(),u=n===chrome.cast.media.PlayerState.BUFFERING;switch(o!==u&&this.params.output.isBuffering$.next(u),n){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&s.duration-s.currentTime<IP&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),E(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:Pi(n)}}),t(Ut(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({volume:a.value})}),t(Ut(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({muted:a.value})});let i=Nf(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,gP(["init"])).pipe(Bf(0));t(i,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"),E(this.params.desiredState.playbackState,"paused")):(this.videoState.setState("playing"),E(this.params.desiredState.playbackState,"playing"));let i=this.params.output.isLive$.getValue();this.params.output.duration$.next(i?0:t.duration),this.params.output.position$.next(i?0:t.currentTime),this.params.desiredState.seekState.setState({state:"none"})}}prepare(){let e=this.params.format;this.log({message:`[prepare] format: ${e}`});let t=this.createMediaInfo(e),i=this.createLoadRequest(t);this.loadMedia(i)}handleRemotePause(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="paused"||e==="playing")&&(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused"))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="playing"||e==="paused")&&(this.videoState.setState("playing"),E(this.params.desiredState.playbackState,"playing"))}handleRemoteReady(){this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.params.desiredState.playbackState.getTransition()?.to==="ready"&&E(this.params.desiredState.playbackState,"ready")}handleRemoteStop(){this.videoState.getState()!=="stopped"&&this.videoState.setState("stopped")}handleRemoteVolumeChange(e){let t=this.params.output.volume$.getValue(),i={volume:e.volume??t.volume,muted:e.muted??t.muted};(i.volume!==t.volume||i.muted!==i.muted)&&this.params.output.volume$.next(i)}seek(e){this.params.output.willSeekEvent$.next();let{remotePlayer:t,remotePlayerController:i}=this.params.connection;t.currentTime=e,i.seek()}stop(){let{remotePlayerController:e}=this.params.connection;e.stop()}createMediaInfo(e){let t=this.params.source,i,a,s;switch(e){case"MPEG":{let l=t[e];Ft(l);let c=yP(Object.keys(l));Ft(c);let d=l[c];Ft(d),i=d,a="video/mp4",s=chrome.cast.media.StreamType.BUFFERED;break}case"HLS":case"HLS_ONDEMAND":{let l=t[e];Ft(l),i=l.url,a="application/x-mpegurl",s=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":{let l=t[e];Ft(l),i=l.url,a="application/dash+xml",s=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_LIVE_CMAF":{let l=t[e];Ft(l),i=l.url,a="application/dash+xml",s=chrome.cast.media.StreamType.LIVE;break}case"HLS_LIVE":case"HLS_LIVE_CMAF":{let l=t[e];Ft(l),i=Z(l.url),a="application/x-mpegurl",s=chrome.cast.media.StreamType.LIVE;break}case"DASH_LIVE":case"WEB_RTC_LIVE":{let l="Unsupported format for Chromecast",c=new Error(l);throw this.params.output.error$.next({id:"ChromecastProvider.createMediaInfo()",category:Vf.VIDEO_PIPELINE,message:l,thrown:c}),c}case"DASH":case"DASH_LIVE_WEBM":throw new Error(`${e} is no longer supported`);default:return Pi(e)}let n=new chrome.cast.media.MediaInfo(this.params.meta.videoId??i,a);n.contentUrl=i,n.streamType=s,n.metadata=new chrome.cast.media.GenericMediaMetadata;let{title:o,subtitle:u}=this.params.meta;return Of(o)&&(n.metadata.title=o),Of(u)&&(n.metadata.subtitle=u),n}createLoadRequest(e){let t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;let i=this.params.desiredState.seekState.getState();return i.state==="applying"||i.state==="requested"?t.currentTime=this.params.output.isLive$.getValue()?0:i.position/1e3:t.currentTime=0,t}loadMedia(e){let t=this.params.connection.session.loadMedia(e),i=new Promise((a,s)=>{this.loadMediaTimeoutSubscription.add(vP(Ff).subscribe(()=>s(`timeout(${Ff})`)))});(0,Uf.default)(Promise.race([t,i]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state==="applying"&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},a=>{let s=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${a}`;this.log({message:s}),this.params.output.error$.next({id:"ChromecastProvider.loadMedia",category:Vf.VIDEO_PIPELINE,message:s,thrown:a})}),()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}};import{clearVideoElement as Hf}from"@vkontakte/videoplayer-shared";import{clearVideoElement as xP}from"@vkontakte/videoplayer-shared";var qf=r=>{try{r.pause(),r.playbackRate=0,xP(r),r.remove()}catch(e){console.error(e)}};import{fromEvent as PP,Subscription as AP}from"@vkontakte/videoplayer-shared";var No=class{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)}},Fo=window.WeakMap?new WeakMap:new No,Uo=window.WeakMap?new WeakMap:new Map,kP=(r,e=20)=>{let t=0;return PP(r,"ratechange").subscribe(i=>{t++,t>=e&&(r.currentTime=r.currentTime,t=0)})},ue=(r,{audioVideoSyncRate:e})=>{let t=r.querySelector("video"),i=!!t;t?Hf(t):(t=document.createElement("video"),r.appendChild(t)),Fo.set(t,i);let a=new AP;return a.add(kP(t,e)),Uo.set(t,a),t.setAttribute("crossorigin","anonymous"),t.setAttribute("playsinline","playsinline"),t.controls=!1,t.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),t},le=r=>{Uo.get(r)?.unsubscribe(),Uo.delete(r);let t=Fo.get(r);Fo.delete(r),t?Hf(r):qf(r)};import{assertNonNullable as pr,isNonNullable as ze,isNullable as $P,fromEvent as Ai,merge as jf,observableFrom as Gf,filterChanged as Wf,map as hr,Subject as Qf,Subscription as LP,ValueSubject as MP,ErrorCategory as CP}from"@vkontakte/videoplayer-shared";import{isNonNullable as qo,isNullable as wP,Subscription as RP}from"@vkontakte/videoplayer-shared";var os=(r,e,t,{equal:i=(n,o)=>n===o,changed$:a,onError:s}={})=>{let n=r.getState(),o=e(),u=wP(a),l=new RP;return a&&l.add(a.subscribe(c=>{let d=r.getState();i(c,d)&&r.setState(c)},s)),i(o,n)||(t(n),u&&r.setState(n)),l.add(r.stateChangeStarted$.subscribe(c=>{t(c.to),u&&r.setState(c.to)},s)),l},Ye=(r,e,t)=>os(e,()=>r.loop,i=>{qo(i)&&(r.loop=i)},{onError:t}),ce=(r,e,t,i)=>os(e,()=>({muted:r.muted,volume:r.volume}),a=>{qo(a)&&(r.muted=a.muted,r.volume=a.volume)},{equal:(a,s)=>a===s||a?.muted===s?.muted&&a?.volume===s?.volume,changed$:t,onError:i}),Re=(r,e,t,i)=>os(e,()=>r.playbackRate,a=>{qo(a)&&(r.playbackRate=a)},{changed$:t,onError:i}),bt=os;var DP=r=>["__",r.language,r.label].join("|"),BP=(r,e)=>{if(r.id===e)return!0;let[t,i,a]=e.split("|");return r.language===i&&r.label===a},Ho=class r{constructor(){this.available$=new Qf;this.current$=new MP(void 0);this.error$=new Qf;this.subscription=new LP;this.externalTracks=new Map;this.internalTracks=new Map}connect(e,t,i){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();let a=s=>{this.error$.next({id:"TextTracksManager",category:CP.WTF,message:"Generic HtmlVideoTextTrackManager error",thrown:s})};this.subscription.add(this.available$.subscribe(i.availableTextTracks$)),this.subscription.add(this.current$.subscribe(i.currentTextTrack$)),this.subscription.add(this.error$.subscribe(i.error$)),this.subscription.add(bt(t.internalTextTracks,()=>Object.values(this.internalTracks),s=>{ze(s)&&this.setInternal(s)},{equal:(s,n)=>ze(s)&&ze(n)&&s.length===n.length&&s.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe(hr(s=>s.filter(({type:n})=>n==="internal"))),onError:a})),this.subscription.add(bt(t.externalTextTracks,()=>Object.values(this.externalTracks),s=>{ze(s)&&this.setExternal(s)},{equal:(s,n)=>ze(s)&&ze(n)&&s.length===n.length&&s.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe(hr(s=>s.filter(({type:n})=>n==="external"))),onError:a})),this.subscription.add(bt(t.currentTextTrack,()=>{if(this.video)return;let s=this.htmlTextTracksAsArray().find(({mode:n})=>n==="showing");return s&&this.htmlTextTrackToITextTrack(s).id},s=>this.select(s),{changed$:this.current$,onError:a})),this.subscription.add(bt(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let s of this.htmlTextTracksAsArray())this.applyCueSettings(s.cues),this.applyCueSettings(s.activeCues)}))}subscribe(){pr(this.video);let{textTracks:e}=this.video;this.subscription.add(Ai(e,"addtrack").subscribe(()=>{let i=this.current$.getValue();i&&this.select(i)})),this.subscription.add(jf(Ai(e,"addtrack"),Ai(e,"removetrack"),Gf(["init"])).pipe(hr(()=>this.htmlTextTracksAsArray().map(i=>this.htmlTextTrackToITextTrack(i))),Wf((i,a)=>i.length===a.length&&i.every(({id:s},n)=>s===a[n].id))).subscribe(this.available$)),this.subscription.add(jf(Ai(e,"change"),Gf(["init"])).pipe(hr(()=>this.htmlTextTracksAsArray().find(({mode:i})=>i==="showing")),hr(i=>i&&this.htmlTextTrackToITextTrack(i).id),Wf()).subscribe(this.current$));let t=i=>this.applyCueSettings(i.target?.activeCues??null);this.subscription.add(Ai(e,"addtrack").subscribe(i=>{i.track?.addEventListener("cuechange",t);let a=s=>{let n=s.target?.cues??null;n&&n.length&&(this.applyCueSettings(s.target?.cues??null),s.target?.removeEventListener("cuechange",a))};i.track?.addEventListener("cuechange",a)})),this.subscription.add(Ai(e,"removetrack").subscribe(i=>{i.track?.removeEventListener("cuechange",t)}))}applyCueSettings(e){if(!e||!e.length)return;let t=this.cueSettings.getState();for(let i of Array.from(e)){let a=i;ze(t.align)&&(a.align=t.align),ze(t.position)&&(a.position=t.position),ze(t.size)&&(a.size=t.size),ze(t.line)&&(a.line=t.line)}}htmlTextTracksAsArray(e=!1){pr(this.video);let t=[...this.video.textTracks];return e?t:t.filter(r.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:i}=e,a=e.id?e.id:DP(e),s=this.externalTracks.has(a),n=(s?this.externalTracks.get(a)?.isAuto:this.internalTracks.get(a)?.isAuto)||a.includes("auto");return s?{id:a,type:"external",isAuto:n,language:t,label:i,url:this.externalTracks.get(a)?.url}:{id:a,type:"internal",isAuto:n,language:t,label:i,url:this.internalTracks.get(a)?.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(([,t])=>this.detach(t)),e.filter(({id:t})=>!this.externalTracks.has(t)).forEach(t=>this.attach(t)),Array.from(this.externalTracks).filter(([t])=>!e.find(i=>i.id===t)).forEach(([,t])=>this.detach(t))}setInternal(e){let t=[...this.externalTracks];e.filter(({id:i,language:a,isAuto:s})=>!this.internalTracks.has(i)&&!t.some(([,n])=>n.language===a&&n.isAuto===s)).forEach(i=>this.attach(i)),Array.from(this.internalTracks).filter(([i])=>!e.find(a=>a.id===i)).forEach(([,i])=>this.detach(i))}select(e){pr(this.video);for(let t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(let t of this.htmlTextTracksAsArray(!0))($P(e)||!BP(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){pr(this.video);let t=document.createElement("track");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){pr(this.video);let t=Array.prototype.find.call(this.video.getElementsByTagName("track"),i=>i.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)}},$e=Ho;var nt=class{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 Yf=r=>{let e=r;for(;!(e instanceof Document)&&!(e instanceof ShadowRoot)&&e!==null;)e=e?.parentNode;return e??void 0},jo=r=>{let e=Yf(r);return!!(e&&e.fullscreenElement&&e.fullscreenElement===r)},zf=r=>{let e=Yf(r);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===r)};import{fromEvent as Le,map as gt,merge as Jf,filterChanged as OP,isNonNullable as Xf,Subject as _P,filter as Zf,mapTo as em,combine as NP,once as FP,ErrorCategory as UP,ValueSubject as tm,clientChecker as qP}from"@vkontakte/videoplayer-shared";var VP=3,Kf=(r,e,t=VP)=>{let i=0,a=0;for(let s=0;s<r.length;s++){let n=r.start(s),o=r.end(s);if(n<=e&&e<=o){if(i=n,a=o,!t)return{from:i,to:a};for(let u=s-1;u>=0;u--)r.end(u)+t>=i&&(i=r.start(u));for(let u=s+1;u<r.length;u++)r.start(u)-t<=a&&(a=r.end(u))}}return{from:i,to:a}};var de=r=>{let e=T=>Le(r,T).pipe(em(void 0)),i=Jf(...["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"].map(T=>Le(r,T))).pipe(gt(T=>T.type==="ended"?r.readyState<2:r.readyState<3),OP()),a=Jf(Le(r,"progress"),Le(r,"timeupdate")).pipe(gt(()=>Kf(r.buffered,r.currentTime))),s=qP.isSafari?NP({play:e("play").pipe(FP()),playing:e("playing")}).pipe(em(void 0)):e("playing"),n=Le(r,"volumechange").pipe(gt(()=>({muted:r.muted,volume:r.volume}))),o=Le(r,"ratechange").pipe(gt(()=>r.playbackRate)),u=Le(r,"error").pipe(Zf(()=>!!(r.error||r.played.length)),gt(()=>{let T=r.error;return{id:T?`MediaError#${T.code}`:"HtmlVideoError",category:UP.VIDEO_PIPELINE,message:T?T.message:"Error event from HTML video element",thrown:r.error??void 0}})),l=Le(r,"timeupdate").pipe(gt(()=>r.currentTime)),c=new _P,d=.3,p;l.subscribe(T=>{r.loop&&Xf(p)&&Xf(T)&&p>=r.duration-d&&T<=d&&c.next(p),p=T});let h=e("pause").pipe(Zf(()=>!r.error&&p!==r.duration)),m=Le(r,"enterpictureinpicture"),b=Le(r,"leavepictureinpicture"),g=new tm(zf(r));m.subscribe(()=>g.next(!0)),b.subscribe(()=>g.next(!1));let y=new tm(jo(r));return Le(r,"fullscreenchange").pipe(gt(()=>jo(r))).subscribe(y),{playing$:s,pause$:h,canplay$:e("canplay"),ended$:e("ended"),looped$:c,error$:u,seeked$:e("seeked"),seeking$:e("seeking"),progress$:e("progress"),loadStart$:e("loadstart"),loadedMetadata$:e("loadedmetadata"),loadedData$:e("loadeddata"),timeUpdate$:l,durationChange$:Le(r,"durationchange").pipe(gt(()=>r.duration)),isBuffering$:i,currentBuffer$:a,volumeState$:n,playbackRateState$:o,inPiP$:g,inFullscreen$:y}};import{VideoQuality as St}from"@vkontakte/videoplayer-shared";var vt=r=>{switch(r){case"mobile":return St.Q_144P;case"lowest":return St.Q_240P;case"low":return St.Q_360P;case"sd":case"medium":return St.Q_480P;case"hd":case"high":return St.Q_720P;case"fullhd":case"full":return St.Q_1080P;case"quadhd":case"quad":return St.Q_1440P;case"ultrahd":case"ultra":return St.Q_2160P}};var qt=Ve(ki(),1);import{isNonNullable as Q,isNullable as Wo,now as mm,isHigher as Qo,isHigherOrEqual as dm,isInvariantQuality as pm,isLower as hm,isLowerOrEqual as Yo,videoSizeToQuality as JP,assertNotEmptyArray as bm,assertNonNullable as XP}from"@vkontakte/videoplayer-shared";var Go=!1,ot={},um=r=>{Go=r},lm=()=>{ot={}},cm=r=>{r(ot)},fr=(r,e)=>{Go&&(ot.meta=ot.meta??{},ot.meta[r]=e)},re=class{constructor(e){this.name=e}next(e){if(!Go)return;ot.series=ot.series??{};let t=ot.series[this.name]??[];t.push([Date.now(),e]),ot.series[this.name]=t}};var ZP=new re("best_bitrate"),gm=(r,e,t)=>(e-t)*Math.pow(2,-10*r)+t;var zo=r=>(e,t)=>r*(Number(e.bitrate)-Number(t.bitrate)),mr=class{constructor(){this.history={}}recordSelection(e){this.history[e.id]=mm()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}},Sm='Assertion "ABR Tracks is empty array" failed',us=(r,e,t,i)=>{let a=[...e].sort(zo(1)),s=[...t].sort(zo(1)),n=s.filter(u=>Q(u.bitrate)&&Q(r.bitrate)?r.bitrate/u.bitrate>i:!0),o=(0,qt.default)(s,Math.round(s.length*a.indexOf(r)/(a.length+1)))??(0,qt.default)(s,-1);return o&&n.includes(o)?o:n.length?(0,qt.default)(n,-1):(0,qt.default)(s,0)},fm=r=>"quality"in r,vm=(r,e,t,i)=>{let a=Q(i?.last?.bitrate)&&Q(t?.bitrate)&&i.last.bitrate<t.bitrate?r.trackCooldownIncreaseQuality:r.trackCooldownDecreaseQuality,s=t&&i&&i.history[t.id]&&mm()-i.history[t.id]<=a&&(!i.last||t.id!==i.last.id);if(t?.id&&i&&!s&&i.recordSelection(t),s&&i?.last){let n=i.last;i?.recordSwitch(n);let o=fm(n)?"video":"audio",u=fm(n)?n.quality:n.bitrate;return e({message:`
|
|
7
7
|
[last ${o} selected] ${u}
|
|
8
8
|
`}),n}return i?.recordSwitch(t),t},yt=(r,{container:e,throughput:t,tuning:i,limits:a,reserve:s=0,forwardBufferHealth:n,playbackRate:o,current:u,history:l,visible:c,droppedVideoMaxQualityLimit:d,abrLogger:p})=>{bm(r,Sm);let h=window.devicePixelRatio??1,m=i.usePixelRatio?i.pixelRatioMultiplier*(h-1)+1:1,b=i.limitByContainer&&e&&e.width>0&&e.height>0&&{width:e.width*m*i.containerSizeFactor,height:e.height*m*i.containerSizeFactor},g=b&&JP(b),y=i.considerPlaybackRate&&Q(o)?o:1,I=r.filter(v=>!pm(v.quality)).sort((v,x)=>Qo(v.quality,x.quality)?-1:1),T=(0,qt.default)(I,-1)?.quality,k=(0,qt.default)(I,0)?.quality,S=Wo(a)||Q(a.min)&&Q(a.max)&&hm(a.max,a.min)||Q(a.min)&&k&&Qo(a.min,k)||Q(a.max)&&T&&hm(a.max,T),w=y*gm(n??.5,i.bitrateFactorAtEmptyBuffer,i.bitrateFactorAtFullBuffer),V={},O=I.filter(v=>{if(!(g?Yo(v.quality,g):!0))return V[v.quality]="FitsContainer",!1;if(!(Q(t)&&isFinite(t)&&Q(v.bitrate)?t-s>=v.bitrate*w:!0))return V[v.quality]="FitsThroughput",!1;if(i.lazyQualitySwitch&&Q(i.minBufferToSwitchUp)&&u&&!pm(u.quality)&&(n??0)<i.minBufferToSwitchUp&&Qo(v.quality,u.quality))return V[v.quality]="Buffer",!1;if(!!d&&dm(v.quality,d))return V[v.quality]="DroppedFramesLimit",!1;let A=S||(Wo(a.max)||Yo(v.quality,a.max))&&(Wo(a.min)||dm(v.quality,a.min)),M=Q(c)&&!c?Yo(v.quality,i.backgroundVideoQualityLimit):!0;return!A||!M?(V[v.quality]="FitsQualityLimits",!1):!0})[0];O&&O.bitrate&&ZP.next(O.bitrate);let F=O??I[Math.ceil((I.length-1)/2)]??r[0];return F.quality!==l?.last?.quality&&p({message:`
|
|
9
9
|
[VIDEO TRACKS ABR]
|
|
@@ -117,4 +117,4 @@ void main(void) {
|
|
|
117
117
|
gl_FragColor = texture2D(u_texture, tc);
|
|
118
118
|
}
|
|
119
119
|
`;var Ls=class{constructor(e,t,i){this.videoInitialized=!1;this.active=!1;this.container=e,this.sourceVideoElement=t,this.params=i,this.canvas=this.createCanvas();let a=this.canvas.getContext("webgl");if(!a)throw new Error("Could not initialize WebGL context");this.gl=a,this.container.appendChild(this.canvas),this.camera=new Rs(this.params.fov,this.params.orientation),this.cameraRotationManager=new $s(this.camera,{rotationSpeed:this.params.rotationSpeed,maxYawAngle:this.params.maxYawAngle,rotationSpeedCorrection:this.params.rotationSpeedCorrection,degreeToPixelCorrection:this.params.degreeToPixelCorrection,speedFadeTime:this.params.speedFadeTime,speedFadeThreshold:this.params.speedFadeThreshold}),this.updateFrameSize(),this.vertexBuffer=this.createVertexBuffer(),this.textureMappingBuffer=this.createTextureMappingBuffer(),this.updateTextureMappingBuffer(),this.program=this.createProgram(),this.videoTexture=this.createTexture(),this.gl.useProgram(this.program),this.videoElementDataLoadedFn=this.onDataLoadedHandler.bind(this),this.renderFn=this.render.bind(this)}play(){this.active||(this.videoInitialized?this.doPlay():this.sourceVideoElement.readyState>=2?(this.videoInitialized=!0,this.doPlay()):this.sourceVideoElement.addEventListener("loadeddata",this.videoElementDataLoadedFn))}stop(){this.active=!1}startCameraManualRotation(e,t){this.cameraRotationManager.setRotationSpeed(e*this.params.rotationSpeed,t*this.params.rotationSpeed,0),this.cameraRotationManager.startRotation()}stopCameraManualRotation(e=!1){this.cameraRotationManager.stopRotation(e)}turnCamera(e,t){this.cameraRotationManager.turnCamera(e,t)}pointCameraTo(e,t){this.cameraRotationManager.pointCameraTo(e,t)}pixelToDegree(e){return{x:this.params.degreeToPixelCorrection*this.params.fov.x*-e.x/this.viewportWidth,y:this.params.degreeToPixelCorrection*this.params.fov.y*e.y/this.viewportHeight}}getCameraRotation(){return this.camera.orientation}holdCamera(){this.cameraRotationManager.stopRotation(!0)}releaseCamera(){this.cameraRotationManager.onCameraRelease()}destroy(){this.sourceVideoElement.removeEventListener("loadeddata",this.videoElementDataLoadedFn),this.stop(),this.canvas.remove()}setViewportSize(e,t){this.viewportWidth=e,this.viewportHeight=t,this.canvas.width=this.viewportWidth,this.canvas.height=this.viewportHeight,this.gl.viewport(0,0,this.canvas.width,this.canvas.height)}onDataLoadedHandler(){this.videoInitialized=!0,this.doPlay()}doPlay(){this.updateFrameSize(),this.vertexBuffer=this.createVertexBuffer(),this.active=!0,this.sourceVideoElement.removeEventListener("loadeddata",this.videoElementDataLoadedFn),requestAnimationFrame(this.renderFn)}render(e){this.cameraRotationManager.tick(e),this.updateTexture(),this.updateTextureMappingBuffer();let t=this.gl.getAttribLocation(this.program,"a_vertex"),i=this.gl.getAttribLocation(this.program,"a_texel"),a=this.gl.getUniformLocation(this.program,"u_texture"),s=this.gl.getUniformLocation(this.program,"u_focus");this.gl.enableVertexAttribArray(t),this.gl.enableVertexAttribArray(i),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.vertexBuffer),this.gl.vertexAttribPointer(t,2,this.gl.FLOAT,!1,0,0),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.textureMappingBuffer),this.gl.vertexAttribPointer(i,2,this.gl.FLOAT,!1,0,0),this.gl.activeTexture(this.gl.TEXTURE0),this.gl.bindTexture(this.gl.TEXTURE_2D,this.videoTexture),this.gl.uniform1i(a,0),this.gl.uniform2f(s,-this.camera.orientation.x,-this.camera.orientation.y),this.gl.drawArrays(this.gl.TRIANGLE_FAN,0,4),this.gl.bindTexture(this.gl.TEXTURE_2D,null),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,null),this.gl.disableVertexAttribArray(t),this.gl.disableVertexAttribArray(i),this.active&&requestAnimationFrame(this.renderFn)}createShader(e,t){let i=this.gl.createShader(t);if(!i)throw this.destroy(),new Error(`Could not create shader (${t})`);if(this.gl.shaderSource(i,e),this.gl.compileShader(i),!this.gl.getShaderParameter(i,this.gl.COMPILE_STATUS))throw this.destroy(),new Error("An error occurred while compiling the shader: "+this.gl.getShaderInfoLog(i));return i}createProgram(){let e=this.gl.createProgram();if(!e)throw this.destroy(),new Error("Could not create shader program");let t=this.createShader(Yb,this.gl.VERTEX_SHADER),i=this.createShader(zb,this.gl.FRAGMENT_SHADER);if(this.gl.attachShader(e,t),this.gl.attachShader(e,i),this.gl.linkProgram(e),!this.gl.getProgramParameter(e,this.gl.LINK_STATUS))throw this.destroy(),new Error("Could not link shader program.");return e}createTexture(){let e=this.gl.createTexture();if(!e)throw this.destroy(),new Error("Could not create texture");return this.gl.bindTexture(this.gl.TEXTURE_2D,e),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),this.gl.bindTexture(this.gl.TEXTURE_2D,null),e}updateTexture(){this.gl.bindTexture(this.gl.TEXTURE_2D,this.videoTexture),this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL,!0),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.gl.RGBA,this.gl.UNSIGNED_BYTE,this.sourceVideoElement),this.gl.bindTexture(this.gl.TEXTURE_2D,null)}createVertexBuffer(){let e=this.gl.createBuffer();if(!e)throw this.destroy(),new Error("Could not create vertex buffer");let t=1,i=1,a=this.frameHeight/(this.frameWidth/this.viewportWidth);return a>this.viewportHeight?t=this.viewportHeight/a:i=a/this.viewportHeight,this.gl.bindBuffer(this.gl.ARRAY_BUFFER,e),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([-t,-i,t,-i,t,i,-t,i]),this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,null),e}createTextureMappingBuffer(){let e=this.gl.createBuffer();if(!e)throw this.destroy(),new Error("Could not create texture mapping buffer");return e}calculateTexturePosition(){let e=.5-this.camera.orientation.x/360,t=.5-this.camera.orientation.y/180,i=this.camera.fov.x/360/2,a=this.camera.fov.y/180/2,s=e-i,n=t-a,o=e+i,u=t-a,l=e+i,c=t+a,d=e-i,p=t+a;return[s,n,o,u,l,c,d,p]}updateTextureMappingBuffer(){this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.textureMappingBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([...this.calculateTexturePosition()]),this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,null)}updateFrameSize(){this.frameWidth=this.sourceVideoElement.videoWidth,this.frameHeight=this.sourceVideoElement.videoHeight}createCanvas(){let e=document.createElement("canvas");return e.style.position="absolute",e.style.left="0",e.style.top="0",e.style.width="100%",e.style.height="100%",e}};var ei=class{constructor(e){this.subscription=new hw;this.videoState=new $("stopped");this.elementSize$=new fw(void 0);this.textTracksManager=new $e;this.droppedFramesManager=new ps;this.videoTracksMap=new Map;this.audioTracksMap=new Map;this.textTracksMap=new Map;this.videoStreamsMap=new Map;this.audioStreamsMap=new Map;this.videoTrackSwitchHistory=new mr;this.audioTrackSwitchHistory=new mr;this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.params.desiredState.playbackState.getState(),i=this.params.desiredState.playbackState.getTransition(),a=this.params.desiredState.seekState.getState();if(!this.videoState.getTransition()){if(a.state==="requested"&&i?.to!=="paused"&&e!=="stopped"&&t!=="stopped"){let n=this.liveOffset?.getTotalPausedTime()??0;this.seek(a.position-n,a.forcePrecise)}if(t==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.player.stop(),this.video.removeAttribute("src"),this.video.load(),this.params.output.position$.next(0),this.params.output.duration$.next(1/0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.videoState.setState("stopped"),E(this.params.desiredState.playbackState,"stopped",!0));return}switch(e){case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();return;case"ready":t==="paused"?(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused")):t==="playing"?(this.videoState.startTransitionTo("playing"),this.playIfAllowed()):i?.to==="ready"&&E(this.params.desiredState.playbackState,"ready");return;case"playing":t==="paused"?(this.videoState.startTransitionTo("paused"),this.liveOffset?.pause(),this.video.paused?this.videoState.setState("paused"):this.video.pause()):i?.to==="playing"&&E(this.params.desiredState.playbackState,"playing");return;case"paused":t==="playing"?(this.videoState.startTransitionTo("playing"),this.liveOffset?this.liveOffset.getTotalOffset()/1e3<Math.abs(this.params.output.duration$.getValue())?(this.liveOffset.resume(),this.playIfAllowed(),this.params.output.position$.next(-this.liveOffset.getTotalOffset()/1e3)):this.seek(0,!1):this.playIfAllowed()):i?.to==="paused"&&E(this.params.desiredState.playbackState,"paused");return;default:return nw(e)}}};this.init3DScene=e=>{if(this.scene3D)return;this.scene3D=new Ls(this.params.container,this.video,{fov:this.params.tuning.spherical.fov,orientation:this.params.tuning.spherical.orientation||{x:e.projectionData?.pose.yaw||0,y:e.projectionData?.pose.pitch||0,z:e.projectionData?.pose.roll||0},rotationSpeed:this.params.tuning.spherical.rotationSpeed,maxYawAngle:this.params.tuning.spherical.maxYawAngle,rotationSpeedCorrection:this.params.tuning.spherical.rotationSpeedCorrection,degreeToPixelCorrection:this.params.tuning.spherical.degreeToPixelCorrection,speedFadeTime:this.params.tuning.spherical.speedFadeTime,speedFadeThreshold:this.params.tuning.spherical.speedFadeThreshold});let t=this.elementSize$.getValue();t&&this.scene3D.setViewportSize(t.width,t.height)};this.destroy3DScene=()=>{this.scene3D&&(this.scene3D.destroy(),this.scene3D=void 0)};this.params=e,this.video=ue(e.container,e.tuning),this.tracer=e.dependencies.tracer.createComponentTracer(this.constructor.name),this.params.output.element$.next(this.video),this.params.output.availableVideoTracks$.next([]),this.params.output.availableAudioTracks$.next([]),this.params.output.isAudioAvailable$.next(!0),this.params.output.hostname$.next(Y(this.params.source.url)),this.params.output.isLive$.next(!1),this.params.output.autoVideoTrackLimitingAvailable$.next(!0),this.params.output.availableTextTracks$.next([]),this.params.desiredState.internalTextTracks.setState([]),this.player=new ws({throughputEstimator:this.params.dependencies.throughputEstimator,tuning:this.params.tuning,compatibilityMode:this.params.source.compatibilityMode,tracer:this.tracer}),this.subscribe()}getProviderSubscriptionInfo(){let{output:e,desiredState:t}=this.params,i=de(this.video),a=this.constructor.name,s=o=>{e.error$.next({id:a,category:Mu.WTF,message:`${a} internal logic error`,thrown:o})};return{output:e,desiredState:t,observableVideo:i,genericErrorListener:s,connect:(o,u)=>this.subscription.add(o.subscribe(u,s))}}subscribe(){let{output:e,desiredState:t,observableVideo:i,genericErrorListener:a,connect:s}=this.getProviderSubscriptionInfo();this.subscription.add(this.params.output.availableVideoTracks$.pipe(Kb(l=>!!l.length),Xb()).subscribe(l=>{this.droppedFramesManager.connect({logger:this.params.dependencies.logger,video:this.video,droppedFramesChecker:this.params.tuning.droppedFramesChecker,isAuto:this.params.desiredState.autoVideoTrackSwitching,playing$:i.playing$,pause$:i.pause$,tracks:l})})),s(i.ended$,e.endedEvent$),s(i.looped$,e.loopedEvent$),s(i.error$,e.error$),s(i.isBuffering$,e.isBuffering$),s(i.currentBuffer$,e.currentBuffer$),s(i.playing$,e.firstFrameEvent$),s(i.canplay$,e.canplay$),s(i.inPiP$,e.inPiP$),s(i.inFullscreen$,e.inFullscreen$),s(i.loadedMetadata$,e.loadedMetadataEvent$),s(this.player.error$,e.error$),s(this.player.lastConnectionType$,e.httpConnectionType$),s(this.player.lastConnectionReused$,e.httpConnectionReused$),s(this.player.isLive$,e.isLive$),s(this.player.lastRequestFirstBytes$.pipe(Kb(cw),Xb()),e.firstBytesEvent$),s(this.videoState.stateChangeEnded$.pipe(Jb(l=>l.to)),this.params.output.playbackState$),this.subscription.add(i.seeked$.subscribe(e.seekedEvent$,a)),this.subscription.add(Ye(this.video,t.isLooped,a)),this.subscription.add(ce(this.video,t.volume,i.volumeState$,a)),this.subscription.add(i.volumeState$.subscribe(this.params.output.volume$,a)),this.subscription.add(Re(this.video,t.playbackRate,i.playbackRateState$,a)),s(pw(this.video),this.elementSize$),s(Me(this.video,{threshold:this.params.tuning.autoTrackSelection.activeVideoAreaThreshold}),e.elementVisible$),this.subscription.add(i.playing$.subscribe(()=>{this.videoState.setState("playing"),E(t.playbackState,"playing"),this.scene3D&&this.scene3D.play()},a)).add(i.pause$.subscribe(()=>{this.videoState.setState("paused"),E(t.playbackState,"paused")},a)).add(i.canplay$.subscribe(()=>{this.videoState.getState()==="playing"&&this.playIfAllowed()},a)),this.subscription.add(this.player.state$.stateChangeEnded$.subscribe(({to:l})=>{if(l==="manifest_ready"){this.videoTracksMap=new Map,this.audioTracksMap=new Map,this.textTracksMap=new Map;let c=this.player.getStreams();if(ow(c,"Manifest not loaded or empty"),!this.params.tuning.isAudioDisabled){let p=[];for(let h of c.audio){p.push(yu(h));let m=[];for(let b of h.representations){let g=Cb(b);m.push(g),this.audioTracksMap.set(g,{stream:h,representation:b})}this.audioStreamsMap.set(h,m)}this.params.output.availableAudioStreams$.next(p)}let d=[];for(let p of c.video){d.push(Tu(p));let h=[];for(let m of p.representations){let b=Mb(m);b&&(h.push(b),this.videoTracksMap.set(b,{stream:p,representation:m}))}this.videoStreamsMap.set(p,h)}if(this.params.output.availableVideoStreams$.next(d),this.textTracksManager)for(let p of c.text)for(let h of p.representations){let m=Db(p,h);this.textTracksMap.set(m,{stream:p,representation:h})}this.params.output.availableVideoTracks$.next(Array.from(this.videoTracksMap.keys())),this.params.output.availableAudioTracks$.next(Array.from(this.audioTracksMap.keys())),this.params.output.isAudioAvailable$.next(!!this.audioTracksMap.size),this.audioTracksMap.size&&this.textTracksMap.size&&this.params.desiredState.internalTextTracks.startTransitionTo(Array.from(this.textTracksMap.keys()))}else l==="representations_ready"&&(this.videoState.setState("ready"),this.player.initBuffer())},a));let n=l=>e.error$.next({id:"RepresentationSwitch",category:Mu.WTF,message:"Switching representations threw",thrown:l});this.subscription.add(Ms(this.player.state$.stateChangeEnded$,t.videoTrack.stateChangeStarted$,t.autoVideoTrackSwitching.transitionStarted$,this.params.dependencies.throughputEstimator.rttAdjustedThroughput$,t.autoVideoTrackLimits.stateChangeStarted$,t.videoStream.stateChangeStarted$,t.audioStream.stateChangeStarted$,this.elementSize$,this.params.output.elementVisible$,this.droppedFramesManager.onDroopedVideoFramesLimit$,lw(this.video,"progress")).subscribe(()=>{let l=this.player.state$.getState(),c=this.player.state$.getTransition();if(!["manifest_ready","running"].includes(l)||c)return;t.autoVideoTrackSwitching.getTransition()&&t.autoVideoTrackSwitching.setState(t.autoVideoTrackSwitching.getState());let d=this.selectVideoAudioRepresentations();if(!d)return;let[p,h]=d,m=this.params.desiredState.autoVideoTrackLimits.getTransition();if(m&&this.params.output.autoVideoTrackLimits$.next(m.to),l==="manifest_ready")this.player.initRepresentations(p.id,h?.id,this.params.sourceHls);else if(this.player.switchRepresentation("video",p.id).catch(n),h){let b=!!t.audioStream.getTransition();this.player.switchRepresentation("audio",h.id,b).catch(n)}},a)),this.subscription.add(t.cameraOrientation.stateChangeEnded$.subscribe(({to:l})=>{this.scene3D&&l&&this.scene3D.pointCameraTo(l.x,l.y)})),this.subscription.add(this.elementSize$.subscribe(l=>{this.scene3D&&l&&this.scene3D.setViewportSize(l.width,l.height)})),this.subscription.add(this.player.currentVideoRepresentation$.pipe(Cu()).subscribe(l=>{let c=[...this.videoTracksMap.entries()].find(([,{representation:m}])=>m.id===l);if(!c){e.currentVideoTrack$.next(void 0),e.currentVideoStream$.next(void 0);return}let[d,{stream:p}]=c,h=this.params.desiredState.videoStream.getTransition();h&&h.to&&h.to.id===p.id&&this.params.desiredState.videoStream.setState(h.to),e.currentVideoTrack$.next(d),e.currentVideoStream$.next(Tu(p))},a)),this.subscription.add(this.player.currentAudioRepresentation$.pipe(Cu()).subscribe(l=>{let c=[...this.audioTracksMap.entries()].find(([,{representation:m}])=>m.id===l);if(!c){e.currentAudioStream$.next(void 0);return}let[d,{stream:p}]=c,h=this.params.desiredState.audioStream.getTransition();h&&h.to&&h.to.id===p.id&&this.params.desiredState.audioStream.setState(h.to),e.currentAudioStream$.next(yu(p))},a)),this.subscription.add(this.player.currentVideoRepresentationInit$.subscribe(l=>{if(l?.is3dVideo&&this.params.tuning.spherical?.enabled)try{this.init3DScene(l),e.is3DVideo$.next(!0)}catch(c){e.warning$.next({id:"DashProvider",message:`DashProvider could not initialize 3D-scene: ${c}`})}else this.destroy3DScene(),this.params.tuning.spherical?.enabled&&e.is3DVideo$.next(!1)},a)),this.subscription.add(this.player.currentVideoSegmentLength$.subscribe(e.currentVideoSegmentLength$,a)),this.subscription.add(this.player.currentAudioSegmentLength$.subscribe(e.currentAudioSegmentLength$,a)),this.textTracksManager?.connect(this.video,t,e);let o=t.playbackState.stateChangeStarted$.pipe(Jb(({to:l})=>l==="ready"),Cu());this.subscription.add(Ms(o,t.autoVideoTrackSwitching.stateChangeStarted$,this.player.state$.stateChangeEnded$).subscribe(()=>{let l=t.autoVideoTrackSwitching.getState(),d=t.playbackState.getState()==="ready"?this.params.tuning.dash.forwardBufferTargetPreload:l?this.params.tuning.dash.forwardBufferTargetAuto:this.params.tuning.dash.forwardBufferTargetManual;this.player.setBufferTarget(d)})),this.subscription.add(Ms(o,this.player.state$.stateChangeEnded$).subscribe(()=>this.player.setPreloadOnly(t.playbackState.getState()==="ready")));let u=Ms(t.playbackState.stateChangeStarted$,t.videoTrack.stateChangeStarted$,t.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,dw(["init"])).pipe(uw(0));this.subscription.add(u.subscribe(this.syncPlayback,a))}selectVideoAudioRepresentations(){let{desiredState:e,output:t}=this.params,i=e.autoVideoTrackSwitching.getState(),a=e.videoTrack.getState()?.id,n=[...this.videoTracksMap.keys()].find(({id:w})=>w===a),o=t.currentVideoTrack$.getValue(),u=e.videoStream.getState()??(n&&this.videoTracksMap.get(n)?.stream)??this.videoStreamsMap.size===1?this.videoStreamsMap.keys().next().value:void 0;if(!u)return;let l=[...this.videoStreamsMap.keys()].find(({id:w})=>w===u.id),c=l&&this.videoStreamsMap.get(l);if(!c)return;let d=Ke(this.video.buffered,this.video.currentTime*1e3),p=i?this.params.tuning.dash.forwardBufferTargetAuto:this.params.tuning.dash.forwardBufferTargetManual,h=Math.min(d/Math.min(p,(this.video.duration*1e3||1/0)-this.video.currentTime*1e3),1),m=e.audioStream.getState()??(this.audioStreamsMap.size===1?this.audioStreamsMap.keys().next().value:void 0),b=[...this.audioStreamsMap.keys()].find(({id:w})=>w===m?.id)??this.audioStreamsMap.keys().next().value,g=0;if(b){if(n&&!i){let w=us(n,c,this.audioStreamsMap.get(b)??[],this.params.tuning.autoTrackSelection.minVideoAudioRatio);g=Math.max(g,w?.bitrate??-1/0)}if(o){let w=us(o,c,this.audioStreamsMap.get(b)??[],this.params.tuning.autoTrackSelection.minVideoAudioRatio);g=Math.max(g,w?.bitrate??-1/0)}}let y=yt(c,{container:this.elementSize$.getValue(),throughput:this.params.dependencies.throughputEstimator.rttAdjustedThroughput$.getValue(),tuning:this.params.tuning.autoTrackSelection,limits:this.params.desiredState.autoVideoTrackLimits.getState(),reserve:g,forwardBufferHealth:h,current:o,visible:this.params.output.elementVisible$.getValue(),history:this.videoTrackSwitchHistory,playbackRate:this.video.playbackRate,droppedVideoMaxQualityLimit:this.droppedFramesManager.droppedVideoMaxQualityLimit,abrLogger:this.params.dependencies.abrLogger}),I=i?y??n:n??y,T=b&&ym(I,c,this.audioStreamsMap.get(b)??[],{throughput:this.params.dependencies.throughputEstimator.rttAdjustedThroughput$.getValue(),tuning:this.params.tuning.autoTrackSelection,forwardBufferHealth:h,history:this.audioTrackSwitchHistory,playbackRate:this.video.playbackRate,abrLogger:this.params.dependencies.abrLogger}),k=this.videoTracksMap.get(I)?.representation,S=T&&this.audioTracksMap.get(T)?.representation;if(k&&S)return[k,S];if(k&&!S&&this.audioTracksMap.size===0)return[k,void 0]}prepare(e=0){this.player.initManifest(this.video,this.params.source.url,e)}playIfAllowed(){pe(this.video,()=>{this.params.output.soundProhibitedEvent$.next()}).then(e=>{e||(this.liveOffset?.pause(),this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused",!0))},e=>this.params.output.error$.next({id:"ForcePlay",message:"play() failed even with workarounds",category:Mu.DOM,thrown:e}))}destroy(){this.subscription.unsubscribe(),this.droppedFramesManager.destroy(),this.destroy3DScene(),this.textTracksManager?.destroy(),this.player.destroy(),this.params.output.element$.next(void 0),le(this.video),this.tracer.end()}};var aa=class extends ei{subscribe(){super.subscribe();let{output:e,observableVideo:t,connect:i}=this.getProviderSubscriptionInfo();i(t.timeUpdate$,e.position$),i(t.durationChange$,e.duration$)}seek(e,t){this.params.output.willSeekEvent$.next(),this.player.seek(e,t)}};import{combine as Zb,interval as mw,map as bw}from"@vkontakte/videoplayer-shared";var sa=class extends ei{constructor(e){super(e),this.liveOffset=new nt,this.textTracksManager=null}subscribe(){super.subscribe();let{output:e,observableVideo:t,connect:i}=this.getProviderSubscriptionInfo();this.params.output.position$.next(0),this.params.output.isLive$.next(!0),i(t.timeUpdate$,e.liveBufferTime$),i(this.player.liveDuration$,e.duration$),this.subscription.add(this.params.output.position$.subscribe(this.player.livePositionFromPlayer$)).add(Zb({interval:mw(1e3),playbackRate:t.playbackRateState$}).subscribe(({playbackRate:a})=>{if(this.videoState.getState()==="playing"){let s=e.position$.getValue()+(a-1);s<=0&&e.position$.next(s),this.liveOffset?.resetTo(-s*1e3)}})).add(Zb({liveBufferTime:e.liveBufferTime$,liveAvailabilityStartTime:this.player.liveAvailabilityStartTime$}).pipe(bw(({liveBufferTime:a,liveAvailabilityStartTime:s})=>a&&s?a+s:void 0)).subscribe(e.liveTime$)).add(this.player.currentLiveTextRepresentation$.subscribe(a=>{if(a){let s=Bb(a);this.params.output.availableTextTracks$.next([s])}}))}seek(e){this.params.output.willSeekEvent$.next();let t=this.params.desiredState.playbackState.getState(),i=this.videoState.getState(),a=t==="paused"&&i==="paused",s=-e,n=Math.trunc(s/1e3<=Math.abs(this.params.output.duration$.getValue())?s:0);this.player.seekLive(n).then(()=>{this.params.output.position$.next(e/1e3),this.liveOffset?.resetTo(n,a)})}};var tg=Ve(ss(),1);import{assertNever as na,assertNonNullable as eg,debounce as gw,ErrorCategory as Cs,filter as Sw,isNonNullable as vw,isNullable as yw,map as Ds,merge as Tw,Observable as Iw,observableFrom as Ew,Subscription as xw,videoSizeToQuality as Pw}from"@vkontakte/videoplayer-shared";var qe={};var Vi=(r,e)=>new Iw(t=>{let i=(a,s)=>t.next(s);return r.on(e,i),()=>r.off(e,i)}),oa=class{constructor(e){this.subscription=new xw;this.videoState=new $("initializing");this.textTracksManager=new $e;this.trackLevels=new Map;this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.params.desiredState.playbackState.getState(),i=this.params.desiredState.playbackState.getTransition(),a=this.params.desiredState.seekState.getState();if(e!=="initializing")switch(i?.to!=="paused"&&a.state==="requested"&&this.seek(a.position),t){case"stopped":switch(e){case"stopped":break;case"ready":case"playing":case"paused":this.stop();break;default:na(e)}break;case"ready":switch(e){case"stopped":this.prepare();break;case"ready":case"playing":case"paused":break;default:na(e)}break;case"playing":switch(e){case"playing":break;case"stopped":this.prepare();break;case"ready":case"paused":this.playIfAllowed();break;default:na(e)}break;case"paused":switch(e){case"paused":break;case"stopped":this.prepare();break;case"ready":this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused");break;case"playing":this.pause();break;default:na(e)}break;default:na(t)}};this.video=ue(e.container,e.tuning),this.params=e,this.params.output.element$.next(this.video),this.params.output.isLive$.next(!1),this.params.output.availableVideoTracks$.next([]),this.params.output.availableAudioTracks$.next([]),this.params.output.isAudioAvailable$.next(!0),this.params.output.hostname$.next(Y(this.params.source.url)),this.loadHlsJs()}destroy(){this.subscription.unsubscribe(),this.trackLevels.clear(),this.textTracksManager.destroy(),this.hls?.detachMedia(),this.hls?.destroy(),this.params.output.element$.next(void 0),le(this.video)}loadHlsJs(){let e=!1,t=a=>{e||this.params.output.error$.next({id:a==="timeout"?"HlsJsTimeout":"HlsJsLoadError",category:Cs.NETWORK,message:"Failed to load Hls.js",thrown:a}),e=!0},i=window.setTimeout(()=>t("timeout"),this.params.tuning.dynamicImportTimeout);(0,tg.default)(import("hls.js").then(a=>{e||(qe.Hls=a.default,qe.Events=a.default.Events,this.init())},t),()=>{window.clearTimeout(i),e=!0})}init(){eg(qe.Hls,"hls.js not loaded"),this.hls=new qe.Hls({fragLoadingMaxRetry:5,levelLoadingMaxRetry:2,manifestLoadingMaxRetry:2,fragLoadingMaxRetryTimeout:16e3,manifestLoadingMaxRetryTimeout:2e3,levelLoadingMaxRetryTimeout:2e3}),this.subscribe(),this.videoState.setState("stopped")}subscribe(){eg(qe.Events,"hls.js not loaded");let{desiredState:e,output:t}=this.params,i=l=>{t.error$.next({id:"HlsJsProvider",category:Cs.WTF,message:"HlsJsProvider internal logic error",thrown:l})},a=de(this.video),s=(l,c)=>this.subscription.add(l.subscribe(c,i));s(a.timeUpdate$,t.position$),s(a.durationChange$,t.duration$),s(a.ended$,t.endedEvent$),s(a.looped$,t.loopedEvent$),s(a.error$,t.error$),s(a.isBuffering$,t.isBuffering$),s(a.currentBuffer$,t.currentBuffer$),s(a.loadStart$,t.firstBytesEvent$),s(a.loadedMetadata$,t.loadedMetadataEvent$),s(a.playing$,t.firstFrameEvent$),s(a.canplay$,t.canplay$),s(a.seeked$,t.seekedEvent$),s(a.inPiP$,t.inPiP$),s(a.inFullscreen$,t.inFullscreen$),this.subscription.add(Ye(this.video,e.isLooped,i)),this.subscription.add(ce(this.video,e.volume,a.volumeState$,i)),this.subscription.add(a.volumeState$.subscribe(this.params.output.volume$)),this.subscription.add(Re(this.video,e.playbackRate,a.playbackRateState$,i)),s(Me(this.video),t.elementVisible$),s(this.videoState.stateChangeEnded$.pipe(Ds(l=>l.to)),this.params.output.playbackState$),this.subscription.add(Vi(this.hls,qe.Events.ERROR).subscribe(l=>{l.fatal&&t.error$.next({id:["HlsJsFatal",l.type,l.details].join("_"),category:Cs.WTF,message:`HlsJs fatal ${l.type} ${l.details}, ${l.err?.message} ${l.reason}`,thrown:l.error})})),this.subscription.add(a.playing$.subscribe(()=>{this.videoState.setState("playing"),E(e.playbackState,"playing")},i)).add(a.pause$.subscribe(()=>{this.videoState.setState("paused"),E(e.playbackState,"paused")},i)).add(a.canplay$.subscribe(()=>{this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.videoState.getState()==="playing"&&this.playIfAllowed()},i)),s(Vi(this.hls,qe.Events.MANIFEST_PARSED).pipe(Ds(({levels:l})=>l.reduce((c,d)=>{let p=d.name||d.height.toString(10),{width:h,height:m}=d,b=vt(d.attrs.QUALITY??"")??Pw({width:h,height:m});if(!b)return c;let g=d.attrs["FRAME-RATE"]?parseFloat(d.attrs["FRAME-RATE"]):void 0,y={id:p.toString(),quality:b,bitrate:d.bitrate/1e3,size:{width:h,height:m},fps:g};return this.trackLevels.set(p,{track:y,level:d}),c.push(y),c},[]))),t.availableVideoTracks$),s(Vi(this.hls,qe.Events.MANIFEST_PARSED),l=>{if(l.subtitleTracks.length>0){let c=[];for(let d of l.subtitleTracks){let p=d.name,h=d.attrs.URI||"",m=d.lang;c.push({id:p,url:h,language:m,type:"internal"})}e.internalTextTracks.startTransitionTo(c)}}),s(Vi(this.hls,qe.Events.LEVEL_LOADING).pipe(Ds(({url:l})=>Y(l))),t.hostname$),s(Vi(this.hls,qe.Events.FRAG_CHANGED),l=>{let{video:c,audio:d}=l.frag.elementaryStreams;t.currentVideoSegmentLength$.next(((c?.endPTS??0)-(c?.startPTS??0))*1e3),t.currentAudioSegmentLength$.next(((d?.endPTS??0)-(d?.startPTS??0))*1e3)}),this.subscription.add(bt(e.autoVideoTrackSwitching,()=>this.hls.autoLevelEnabled,l=>{this.hls.nextLevel=l?-1:this.hls.currentLevel,this.hls.loadLevel=l?-1:this.hls.loadLevel},{onError:i}));let n=l=>Array.from(this.trackLevels.values()).find(({level:c})=>c===l)?.track,o=Vi(this.hls,qe.Events.LEVEL_SWITCHED).pipe(Ds(({level:l})=>n(this.hls.levels[l])));o.pipe(Sw(vw)).subscribe(t.currentVideoTrack$,i),this.subscription.add(bt(e.videoTrack,()=>n(this.hls.levels[this.hls.currentLevel]),l=>{if(yw(l))return;let c=this.trackLevels.get(l.id)?.level;if(!c)return;let d=this.hls.levels.indexOf(c),p=this.hls.currentLevel,h=this.hls.levels[p];!h||c.bitrate>h.bitrate?this.hls.nextLevel=d:(this.hls.loadLevel=d,this.hls.loadLevel=d)},{changed$:o,onError:i})),s(a.progress$,()=>{this.params.dependencies.throughputEstimator.addRawThroughput(this.hls.bandwidthEstimate/1e3)}),this.textTracksManager.connect(this.video,e,t);let u=Tw(e.playbackState.stateChangeStarted$,e.videoTrack.stateChangeStarted$,e.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,Ew(["init"])).pipe(gw(0));this.subscription.add(u.subscribe(this.syncPlayback,i))}prepare(){this.videoState.startTransitionTo("ready"),this.hls.attachMedia(this.video),this.hls.loadSource(this.params.source.url)}async playIfAllowed(){this.videoState.startTransitionTo("playing"),await pe(this.video,()=>{this.params.output.soundProhibitedEvent$.next()}).catch(t=>this.params.output.error$.next({id:"ForcePlay",message:"play() failed even with workarounds",category:Cs.DOM,thrown:t}))||(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused",!0))}pause(){this.videoState.startTransitionTo("paused"),this.video.paused?this.videoState.setState("paused"):this.video.pause()}seek(e){this.params.output.willSeekEvent$.next(),this.video.currentTime=e/1e3}stop(){this.params.output.position$.next(0),this.params.output.duration$.next(1/0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.hls.stopLoad(),this.hls.detachMedia(),this.video.removeAttribute("src"),this.video.load(),this.videoState.setState("stopped"),E(this.params.desiredState.playbackState,"stopped",!0)}};var ig="X-Playback-Duration",Du=async r=>{let e=await ut(r),t=await e.text(),i=/#EXT-X-VK-PLAYBACK-DURATION:(\d+)/m.exec(t)?.[1];return i?parseInt(i,10):e.headers.has(ig)?parseInt(e.headers.get(ig),10):void 0};import{assertNever as Lw,combine as Mw,debounce as Cw,ErrorCategory as Vs,filter as Dw,filterChanged as Bw,isNonNullable as ag,isNullable as Os,map as sg,merge as Vw,observableFrom as Ow,Subscription as _w,ValueSubject as Ou,VideoQuality as Nw}from"@vkontakte/videoplayer-shared";var Vu=Ve(Jn(),1);import{videoSizeToQuality as Aw,getExponentialDelay as kw}from"@vkontakte/videoplayer-shared";var ww=r=>{let e=null;if(r.QUALITY&&(e=vt(r.QUALITY)),!e&&r.RESOLUTION){let[t,i]=r.RESOLUTION.split("x").map(a=>parseInt(a,10));e=Aw({width:t,height:i})}return e??null},Rw=(r,e)=>{let t=r.split(`
|
|
120
|
-
`),i=[],a=[];for(let s=0;s<t.length;s++){let n=t[s],o=n.match(/^#EXT-X-STREAM-INF:(.+)/),u=n.match(/^#EXT-X-MEDIA:TYPE=SUBTITLES,(.+)/);if(!(!o&&!u)){if(o){let l=(0,Vu.default)(o[1].split(",").map(g=>g.split("="))),c=l.QUALITY??`stream-${l.BANDWIDTH}`,d=ww(l),p;l.BANDWIDTH&&(p=parseInt(l.BANDWIDTH,10)/1e3||void 0),!p&&l["AVERAGE-BANDWIDTH"]&&(p=parseInt(l["AVERAGE-BANDWIDTH"],10)/1e3||void 0);let h=l["FRAME-RATE"]?parseFloat(l["FRAME-RATE"]):void 0,m;if(l.RESOLUTION){let[g,y]=l.RESOLUTION.split("x").map(I=>parseInt(I,10));g&&y&&(m={width:g,height:y})}let b=new URL(t[++s],e).toString();d&&i.push({id:c,quality:d,url:b,bandwidth:p,size:m,fps:h})}if(u){let l=(0,Vu.default)(u[1].split(",").map(h=>h.split("=")).map(([h,m])=>[h,m.replace(/^"|"$/g,"")])),c=l.URI?.replace(/playlist$/,"subtitles.vtt"),d=l.LANGUAGE,p=l.NAME;c&&d&&a.push({type:"internal",id:d,label:p,language:d,url:c,isAuto:!1})}}}if(!i.length)throw new Error("Empty manifest");return{qualityManifests:i,textTracks:a}},$w=r=>new Promise(e=>{setTimeout(()=>{e()},r)}),Bu=0,rg=async(r,e=r,t)=>{let a=await(await ut(r)).text();Bu+=1;try{let{qualityManifests:s,textTracks:n}=Rw(a,e);return{qualityManifests:s,textTracks:n}}catch{if(Bu<=t.manifestRetryMaxCount)return await $w(kw(Bu-1,{start:t.manifestRetryInterval,max:t.manifestRetryMaxInterval})),rg(r,e,t)}return{qualityManifests:[],textTracks:[]}},Bs=rg;var ua=class{constructor(e){this.subscription=new _w;this.videoState=new $("stopped");this.textTracksManager=new $e;this.manifests$=new Ou([]);this.liveOffset=new nt;this.manifestStartTime$=new Ou(void 0);this.syncPlayback=()=>{if(!this.manifests$.getValue().length)return;let t=this.videoState.getState(),i=this.params.desiredState.playbackState.getState(),a=this.params.desiredState.playbackState.getTransition(),s=this.params.desiredState.videoTrack.getTransition(),n=this.params.desiredState.autoVideoTrackSwitching.getTransition(),o=this.params.desiredState.autoVideoTrackLimits.getTransition();if(i==="stopped"){t!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.video.removeAttribute("src"),this.video.load(),this.params.output.position$.next(0),this.params.output.duration$.next(1/0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.videoState.setState("stopped"),E(this.params.desiredState.playbackState,"stopped",!0));return}if(this.videoState.getTransition())return;let l=this.params.desiredState.seekState.getState();if(t==="stopped"){this.videoState.startTransitionTo("ready"),this.prepare();return}if(s||n||o){let c=this.videoState.getState();this.videoState.setState("changing_manifest"),this.videoState.startTransitionTo(c),this.prepare(),o&&this.params.output.autoVideoTrackLimits$.next(o.to),l.state==="none"&&this.params.desiredState.seekState.setState({state:"requested",position:-this.liveOffset.getTotalOffset(),forcePrecise:!0});return}if(a?.to!=="paused"&&l.state==="requested"){this.videoState.startTransitionTo("ready"),this.seek(l.position-this.liveOffset.getTotalPausedTime()),this.prepare();return}switch(t){case"ready":i==="ready"?E(this.params.desiredState.playbackState,"ready"):i==="paused"?(this.videoState.setState("paused"),this.liveOffset.pause(),E(this.params.desiredState.playbackState,"paused")):i==="playing"&&(this.videoState.startTransitionTo("playing"),this.playIfAllowed());return;case"playing":i==="paused"?(this.videoState.startTransitionTo("paused"),this.liveOffset.pause(),this.video.paused?this.videoState.setState("paused"):this.video.pause()):a?.to==="playing"&&E(this.params.desiredState.playbackState,"playing");return;case"paused":if(i==="playing")if(this.videoState.startTransitionTo("playing"),this.liveOffset.getTotalPausedTime()<this.params.config.maxPausedTime&&this.liveOffset.getTotalOffset()<this.maxSeekBackTime$.getValue())this.liveOffset.resume(),this.playIfAllowed(),this.params.output.position$.next(-this.liveOffset.getTotalOffset()/1e3);else{let c=this.liveOffset.getTotalOffset();c>=this.maxSeekBackTime$.getValue()&&(c=0,this.liveOffset.resetTo(c)),this.liveOffset.resume(),this.params.output.position$.next(-c/1e3),this.prepare()}else a?.to==="paused"&&(E(this.params.desiredState.playbackState,"paused"),this.liveOffset.pause());return;case"changing_manifest":break;default:return Lw(t)}};this.params=e,this.video=ue(e.container,e.tuning),this.params.output.element$.next(this.video),this.masterManifest={id:"master",quality:Nw.INVARIANT,url:this.params.source.url},Bs(Z(this.params.source.url),this.params.source.url,{manifestRetryInterval:this.params.tuning.manifestRetryInterval,manifestRetryMaxInterval:this.params.tuning.manifestRetryMaxInterval,manifestRetryMaxCount:this.params.tuning.manifestRetryMaxCount}).then(({qualityManifests:t})=>{t.length===0&&this.params.output.error$.next({id:"HlsLiveProviderInternal:empty_manifest",category:Vs.WTF,message:"HlsLiveProvider: there are no qualities in manifest"}),this.manifests$.next([this.masterManifest,...t])},t=>this.params.output.error$.next({id:"ExtractHlsQualities",category:Vs.NETWORK,message:"Error fetching manifest and extracting qualities",thrown:t})),this.params.output.isLive$.next(!0),this.params.output.canChangePlaybackSpeed$.next(!1),this.params.output.availableVideoTracks$.next([]),this.params.output.availableAudioTracks$.next([]),this.params.output.isAudioAvailable$.next(!0),this.params.output.hostname$.next(Y(this.params.source.url)),this.params.output.availableTextTracks$.next([]),this.params.desiredState.internalTextTracks.setState([]),this.maxSeekBackTime$=new Ou(e.source.maxSeekBackTime??1/0),this.subscribe()}selectManifest(){let{autoVideoTrackSwitching:e,videoTrack:t}=this.params.desiredState,i=e.getState(),a=t.getTransition(),s=a?.to?.id??t.getState()?.id??"master",n=this.manifests$.getValue();if(!n.length)return;let o=i?"master":s;return i&&!a&&t.startTransitionTo(this.masterManifest),n.find(u=>u.id===o)}subscribe(){let{output:e,desiredState:t}=this.params,i=o=>{e.error$.next({id:"HlsLiveProvider",category:Vs.WTF,message:"HlsLiveProvider internal logic error",thrown:o})},a=de(this.video),s=(o,u)=>this.subscription.add(o.subscribe(u,i));s(a.ended$,e.endedEvent$),s(a.error$,e.error$),s(a.isBuffering$,e.isBuffering$),s(a.currentBuffer$,e.currentBuffer$),s(a.loadedMetadata$,e.firstBytesEvent$),s(a.loadedMetadata$,e.loadedMetadataEvent$),s(a.playing$,e.firstFrameEvent$),s(a.canplay$,e.canplay$),s(a.inPiP$,e.inPiP$),s(a.inFullscreen$,e.inFullscreen$),this.subscription.add(t.isLooped.stateChangeStarted$.subscribe(()=>t.isLooped.setState(!1),i)),this.subscription.add(ce(this.video,t.volume,a.volumeState$,i)),this.subscription.add(a.volumeState$.subscribe(this.params.output.volume$,i)),this.subscription.add(Re(this.video,t.playbackRate,a.playbackRateState$,i)),s(Me(this.video),e.elementVisible$),this.textTracksManager.connect(this.video,t,e),this.subscription.add(a.playing$.subscribe(()=>{this.videoState.setState("playing"),E(t.playbackState,"playing")},i)).add(a.pause$.subscribe(()=>{this.videoState.setState("paused"),E(t.playbackState,"paused")},i)).add(a.canplay$.subscribe(()=>{this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.videoState.getState()==="playing"&&this.playIfAllowed()},i)),this.subscription.add(this.maxSeekBackTime$.pipe(Bw(),sg(o=>-o/1e3)).subscribe(this.params.output.duration$,i)),this.subscription.add(a.loadedMetadata$.subscribe(()=>{let o=this.params.desiredState.seekState.getState(),u=this.videoState.getTransition(),l=this.params.desiredState.videoTrack.getTransition(),c=this.params.desiredState.autoVideoTrackSwitching.getTransition();if(l&&ag(l.to)){let d=l.to.id;this.params.desiredState.videoTrack.setState(l.to);let p=this.manifests$.getValue().find(h=>h.id===d);p&&(this.params.output.currentVideoTrack$.next(p),this.params.output.hostname$.next(Y(p.url)))}c&&this.params.desiredState.autoVideoTrackSwitching.setState(c.to),u&&u.from==="changing_manifest"&&this.videoState.setState(u.to),o&&o.state==="requested"&&this.seek(o.position)},i)),this.subscription.add(a.loadedData$.subscribe(()=>{let o=this.video?.getStartDate?.()?.getTime();this.manifestStartTime$.next(o||void 0)},i)),this.subscription.add(Mw({startTime:this.manifestStartTime$.pipe(Dw(ag)),currentTime:a.timeUpdate$}).subscribe(({startTime:o,currentTime:u})=>this.params.output.liveTime$.next(o+u*1e3),i)),this.subscription.add(this.manifests$.pipe(sg(o=>o.map(({id:u,quality:l,size:c,bandwidth:d,fps:p})=>({id:u,quality:l,size:c,fps:p,bitrate:d})))).subscribe(this.params.output.availableVideoTracks$,i));let n=Vw(t.playbackState.stateChangeStarted$,t.seekState.stateChangeEnded$,t.videoTrack.stateChangeStarted$,t.autoVideoTrackSwitching.stateChangeStarted$,t.autoVideoTrackLimits.stateChangeStarted$,this.videoState.stateChangeEnded$,this.manifests$,Ow(["init"])).pipe(Cw(0));this.subscription.add(n.subscribe(this.syncPlayback,i))}destroy(){this.subscription.unsubscribe(),this.textTracksManager.destroy(),this.params.output.element$.next(void 0),le(this.video)}prepare(){let e=this.selectManifest();if(Os(e))return;let t=this.params.desiredState.autoVideoTrackLimits.getTransition(),i=this.params.desiredState.autoVideoTrackLimits.getState(),a=new URL(e.url);if((t||i)&&e.id===this.masterManifest.id){let{max:o,min:u}=t?.to??i??{};for(let[l,c]of[[o,"mq"],[u,"lq"]]){let d=String(parseFloat(l||""));c&&l&&a.searchParams.set(c,d)}}let s=this.params.format==="HLS_LIVE_CMAF"?2:0,n=Z(a.toString(),this.liveOffset.getTotalOffset(),s);this.video.setAttribute("src",n),this.video.load(),Du(n).then(o=>{if(!Os(o))this.maxSeekBackTime$.next(o);else{let u=this.params.source.maxSeekBackTime??this.maxSeekBackTime$.getValue();if(Os(u)||!isFinite(u))try{ut(n).then(l=>l.text()).then(l=>{let c=/#EXT-X-STREAM-INF[^\n]+\n(.+)/m.exec(l)?.[1];if(c){let d=new URL(c,n).toString();Du(d).then(p=>{Os(p)||this.maxSeekBackTime$.next(p)})}})}catch{}}})}playIfAllowed(){pe(this.video,()=>{this.params.output.soundProhibitedEvent$.next()}).then(e=>{e||(this.videoState.setState("paused"),this.liveOffset.pause(),E(this.params.desiredState.playbackState,"paused",!0))},e=>this.params.output.error$.next({id:"ForcePlay",message:"play() failed even with workarounds",category:Vs.DOM,thrown:e}))}seek(e){this.params.output.willSeekEvent$.next();let t=-e,i=t<this.maxSeekBackTime$.getValue()?t:0;this.liveOffset.resetTo(i),this.params.output.position$.next(-i/1e3),this.params.output.seekedEvent$.next()}};import{assertNever as Fw,debounce as Uw,ErrorCategory as _u,fromEvent as Nu,isNonNullable as qw,isNullable as Hw,map as ng,merge as og,observableFrom as ug,Subscription as jw,ValueSubject as Gw,VideoQuality as Ww,clientChecker as Qw}from"@vkontakte/videoplayer-shared";var la=class{constructor(e){this.subscription=new jw;this.videoState=new $("stopped");this.textTracksManager=new $e;this.manifests$=new Gw([]);this.syncPlayback=()=>{if(!this.manifests$.getValue().length)return;let t=this.videoState.getState(),i=this.params.desiredState.playbackState.getState(),a=this.params.desiredState.playbackState.getTransition(),s=this.params.desiredState.videoTrack.getTransition(),n=this.params.desiredState.autoVideoTrackSwitching.getTransition(),o=this.params.desiredState.autoVideoTrackLimits.getTransition();if(i==="stopped"){t!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.video.removeAttribute("src"),this.video.load(),this.params.output.position$.next(0),this.params.output.duration$.next(1/0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.videoState.setState("stopped"),E(this.params.desiredState.playbackState,"stopped",!0));return}if(this.videoState.getTransition())return;let l=this.params.desiredState.seekState.getState();if(t==="stopped"){this.videoState.startTransitionTo("ready"),this.prepare();return}if(s||n||o){let c=this.videoState.getState();this.videoState.setState("changing_manifest"),this.videoState.startTransitionTo(c);let{currentTime:d}=this.video;this.prepare(),o&&this.params.output.autoVideoTrackLimits$.next(o.to),l.state==="none"&&this.params.desiredState.seekState.setState({state:"requested",position:d*1e3,forcePrecise:!0});return}switch(a?.to!=="paused"&&l.state==="requested"&&this.seek(l.position),t){case"ready":i==="ready"?E(this.params.desiredState.playbackState,"ready"):i==="paused"?(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused")):i==="playing"&&(this.videoState.startTransitionTo("playing"),this.playIfAllowed());return;case"playing":i==="paused"?(this.videoState.startTransitionTo("paused"),this.video.paused?this.videoState.setState("paused"):this.video.pause()):a?.to==="playing"&&E(this.params.desiredState.playbackState,"playing");return;case"paused":i==="playing"?(this.videoState.startTransitionTo("playing"),this.playIfAllowed()):a?.to==="paused"&&E(this.params.desiredState.playbackState,"paused");return;case"changing_manifest":break;default:return Fw(t)}};this.params=e,this.video=ue(e.container,e.tuning),this.params.output.element$.next(this.video),this.masterManifest={id:"master",quality:Ww.INVARIANT,url:this.params.source.url},this.params.output.isLive$.next(!1),this.params.output.availableVideoTracks$.next([]),this.params.output.availableAudioTracks$.next([]),this.params.output.isAudioAvailable$.next(!0),this.params.output.hostname$.next(Y(this.params.source.url)),this.params.output.autoVideoTrackLimitingAvailable$.next(!0),Bs(Z(this.params.source.url),this.params.source.url,{manifestRetryInterval:this.params.tuning.manifestRetryInterval,manifestRetryMaxInterval:this.params.tuning.manifestRetryMaxInterval,manifestRetryMaxCount:this.params.tuning.manifestRetryMaxCount}).then(({qualityManifests:t,textTracks:i})=>{this.manifests$.next([this.masterManifest,...t]),this.params.tuning.useNativeHLSTextTracks||this.params.desiredState.internalTextTracks.startTransitionTo(i)},t=>this.params.output.error$.next({id:"ExtractHlsQualities",category:_u.NETWORK,message:"Error fetching manifest and extracting qualities",thrown:t})),this.subscribe()}selectManifest(){let{autoVideoTrackSwitching:e,videoTrack:t}=this.params.desiredState,i=e.getState(),a=t.getTransition(),s=a?.to?.id??t.getState()?.id??"master",n=this.manifests$.getValue();if(!n.length)return;let o=i?"master":s;return i&&!a&&t.startTransitionTo(this.masterManifest),n.find(u=>u.id===o)}subscribe(){let{output:e,desiredState:t}=this.params,i=o=>{e.error$.next({id:"HlsProvider",category:_u.WTF,message:"HlsProvider internal logic error",thrown:o})},a=de(this.video),s=(o,u)=>this.subscription.add(o.subscribe(u));if(s(a.timeUpdate$,e.position$),s(a.durationChange$,e.duration$),s(a.ended$,e.endedEvent$),s(a.looped$,e.loopedEvent$),s(a.error$,e.error$),s(a.isBuffering$,e.isBuffering$),s(a.currentBuffer$,e.currentBuffer$),s(a.loadedMetadata$,e.firstBytesEvent$),s(a.loadedMetadata$,e.loadedMetadataEvent$),s(a.playing$,e.firstFrameEvent$),s(a.canplay$,e.canplay$),s(a.seeked$,e.seekedEvent$),s(a.inPiP$,e.inPiP$),s(a.inFullscreen$,e.inFullscreen$),s(this.videoState.stateChangeEnded$.pipe(ng(o=>o.to)),this.params.output.playbackState$),this.subscription.add(Ye(this.video,t.isLooped,i)),this.subscription.add(ce(this.video,t.volume,a.volumeState$,i)),this.subscription.add(a.volumeState$.subscribe(this.params.output.volume$,i)),this.subscription.add(Re(this.video,t.playbackRate,a.playbackRateState$,i)),this.textTracksManager.connect(this.video,t,e),this.subscription.add(a.playing$.subscribe(()=>{this.videoState.setState("playing"),E(t.playbackState,"playing")},i)).add(a.pause$.subscribe(()=>{this.videoState.setState("paused"),E(t.playbackState,"paused")},i)).add(a.canplay$.subscribe(()=>{this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.videoState.getState()==="playing"&&this.playIfAllowed()},i).add(a.loadedMetadata$.subscribe(()=>{let o=this.params.desiredState.seekState.getState(),u=this.videoState.getTransition(),l=this.params.desiredState.videoTrack.getTransition(),c=this.params.desiredState.autoVideoTrackSwitching.getTransition();if(l&&qw(l.to)){let d=l.to.id;this.params.desiredState.videoTrack.setState(l.to);let p=this.manifests$.getValue().find(h=>h.id===d);if(p){this.params.output.currentVideoTrack$.next(p),this.params.output.hostname$.next(Y(p.url));let h=this.params.desiredState.playbackRate.getState(),m=this.params.output.element$.getValue()?.playbackRate;if(h!==m){let b=this.params.output.element$.getValue();b&&(this.params.desiredState.playbackRate.setState(h),b.playbackRate=h)}}}c&&this.params.desiredState.autoVideoTrackSwitching.setState(c.to),u&&u.from==="changing_manifest"&&this.videoState.setState(u.to),o.state==="requested"&&this.seek(o.position)},i))),this.subscription.add(this.manifests$.pipe(ng(o=>o.map(({id:u,quality:l,size:c,bandwidth:d,fps:p})=>({id:u,quality:l,size:c,fps:p,bitrate:d})))).subscribe(this.params.output.availableVideoTracks$,i)),!Qw.isIOS||!this.params.tuning.useNativeHLSTextTracks){let{textTracks:o}=this.video;this.subscription.add(og(Nu(o,"addtrack"),Nu(o,"removetrack"),Nu(o,"change"),ug(["init"])).subscribe(()=>{for(let u=0;u<o.length;u++)o[u].mode="hidden"},i))}let n=og(t.playbackState.stateChangeStarted$,t.seekState.stateChangeEnded$,t.videoTrack.stateChangeStarted$,t.autoVideoTrackSwitching.stateChangeStarted$,t.autoVideoTrackLimits.stateChangeStarted$,this.videoState.stateChangeEnded$,this.manifests$,ug(["init"])).pipe(Uw(0));this.subscription.add(n.subscribe(this.syncPlayback,i))}destroy(){this.subscription.unsubscribe(),this.textTracksManager.destroy(),this.params.output.element$.next(void 0),le(this.video)}prepare(){let e=this.selectManifest();if(Hw(e))return;let t=this.params.desiredState.autoVideoTrackLimits.getTransition(),i=this.params.desiredState.autoVideoTrackLimits.getState(),a=new URL(e.url);if((t||i)&&e.id===this.masterManifest.id){let{max:s,min:n}=t?.to??i??{};for(let[o,u]of[[s,"mq"],[n,"lq"]]){let l=String(parseFloat(o||""));u&&o&&a.searchParams.set(u,l)}}this.video.setAttribute("src",a.toString()),this.video.load()}playIfAllowed(){pe(this.video,()=>{this.params.output.soundProhibitedEvent$.next()}).then(e=>{e||(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused",!0))},e=>this.params.output.error$.next({id:"ForcePlay",message:"play() failed even with workarounds",category:_u.DOM,thrown:e}))}seek(e){this.params.output.willSeekEvent$.next(),this.video.currentTime=e/1e3}};import{assertNever as Yw,assertNonNullable as lg,debounce as zw,ErrorCategory as cg,isHigher as Kw,isHigherOrEqual as Jw,isInvariantQuality as dg,isLowerOrEqual as Xw,isNonNullable as Zw,merge as eR,observableFrom as tR,Subscription as iR,map as rR}from"@vkontakte/videoplayer-shared";var ca=class{constructor(e){this.subscription=new iR;this.videoState=new $("stopped");this.trackUrls={};this.textTracksManager=new $e;this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.params.desiredState.playbackState.getState(),i=this.params.desiredState.playbackState.getTransition();if(t==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.video.removeAttribute("src"),this.video.load(),this.params.output.position$.next(0),this.params.output.duration$.next(1/0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.videoState.setState("stopped"),E(this.params.desiredState.playbackState,"stopped",!0));return}if(this.videoState.getTransition())return;let s=this.params.desiredState.autoVideoTrackLimits.getTransition(),n=this.params.desiredState.videoTrack.getTransition(),o=this.params.desiredState.seekState.getState();if(s&&e!=="ready"&&!n){this.handleQualityLimitTransition(s.to.max);return}if(e==="stopped"){this.videoState.startTransitionTo("ready"),this.prepare();return}if(n){let{currentTime:u}=this.video;this.prepare(),o.state==="none"&&this.params.desiredState.seekState.setState({state:"requested",position:u*1e3,forcePrecise:!0}),n.to&&this.params.desiredState.autoVideoTrackLimits.getState()?.max!==this.trackUrls[n.to.id]?.track?.quality&&this.params.output.autoVideoTrackLimits$.next({max:void 0});return}switch(i?.to!=="paused"&&o.state==="requested"&&this.seek(o.position),e){case"ready":t==="ready"?E(this.params.desiredState.playbackState,"ready"):t==="paused"?(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused")):t==="playing"&&(this.videoState.startTransitionTo("playing"),this.playIfAllowed());return;case"playing":t==="paused"?(this.videoState.startTransitionTo("paused"),this.video.paused?this.videoState.setState("paused"):this.video.pause()):i?.to==="playing"&&E(this.params.desiredState.playbackState,"playing");return;case"paused":t==="playing"?(this.videoState.startTransitionTo("playing"),this.playIfAllowed()):i?.to==="paused"&&E(this.params.desiredState.playbackState,"paused");return;default:return Yw(e)}};this.params=e,this.video=ue(e.container,e.tuning),this.params.output.element$.next(this.video),Object.entries(this.params.source).reverse().forEach(([t,i],a)=>{let s=a.toString(10);this.trackUrls[s]={track:{quality:t,id:s},url:i}}),this.params.output.isLive$.next(!1),this.params.output.availableVideoTracks$.next(Object.values(this.trackUrls).map(({track:t})=>t)),this.params.output.availableAudioTracks$.next([]),this.params.output.isAudioAvailable$.next(!0),this.params.desiredState.autoVideoTrackSwitching.setState(!1),this.params.output.autoVideoTrackLimitingAvailable$.next(!0),this.subscribe()}subscribe(){let{output:e,desiredState:t}=this.params,i=o=>{e.error$.next({id:"MpegProvider",category:cg.WTF,message:"MpegProvider internal logic error",thrown:o})},a=de(this.video),s=(o,u)=>this.subscription.add(o.subscribe(u,i));s(a.timeUpdate$,e.position$),s(a.durationChange$,e.duration$),s(a.ended$,e.endedEvent$),s(a.looped$,e.loopedEvent$),s(a.error$,e.error$),s(a.isBuffering$,e.isBuffering$),s(a.currentBuffer$,e.currentBuffer$),s(a.loadedMetadata$,e.firstBytesEvent$),s(a.loadedMetadata$,e.loadedMetadataEvent$),s(a.playing$,e.firstFrameEvent$),s(a.canplay$,e.canplay$),s(a.seeked$,e.seekedEvent$),s(a.inPiP$,e.inPiP$),s(a.inFullscreen$,e.inFullscreen$),s(this.videoState.stateChangeEnded$.pipe(rR(o=>o.to)),this.params.output.playbackState$),this.subscription.add(Ye(this.video,t.isLooped,i)),this.subscription.add(ce(this.video,t.volume,a.volumeState$,i)),this.subscription.add(a.volumeState$.subscribe(this.params.output.volume$,i)),this.subscription.add(Re(this.video,t.playbackRate,a.playbackRateState$,i)),s(Me(this.video),e.elementVisible$),this.subscription.add(a.playing$.subscribe(()=>{this.videoState.setState("playing"),E(t.playbackState,"playing")},i)).add(a.pause$.subscribe(()=>{this.videoState.setState("paused"),E(t.playbackState,"paused")},i)).add(a.canplay$.subscribe(()=>{this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready");let o=this.params.desiredState.videoTrack.getTransition();if(o&&Zw(o.to)){this.params.desiredState.videoTrack.setState(o.to),this.params.output.currentVideoTrack$.next(this.trackUrls[o.to.id].track);let u=this.params.desiredState.playbackRate.getState(),l=this.params.output.element$.getValue()?.playbackRate;if(u!==l){let c=this.params.output.element$.getValue();c&&(this.params.desiredState.playbackRate.setState(u),c.playbackRate=u)}}this.videoState.getState()==="playing"&&this.playIfAllowed()},i)),this.textTracksManager.connect(this.video,t,e);let n=eR(t.playbackState.stateChangeStarted$,t.videoTrack.stateChangeStarted$,t.seekState.stateChangeEnded$,t.autoVideoTrackLimits.stateChangeStarted$,this.videoState.stateChangeEnded$,tR(["init"])).pipe(zw(0));this.subscription.add(n.subscribe(this.syncPlayback,i))}destroy(){this.subscription.unsubscribe(),this.textTracksManager.destroy(),this.trackUrls={},this.params.output.element$.next(void 0),le(this.video)}prepare(){let e=this.params.desiredState.videoTrack.getState()?.id;lg(e,"MpegProvider: track is not selected");let{url:t}=this.trackUrls[e];lg(t,`MpegProvider: No url for ${e}`),this.params.tuning.requestQuick&&(t=Jr(t)),this.video.setAttribute("src",t),this.video.load(),this.params.output.hostname$.next(Y(t))}playIfAllowed(){pe(this.video,()=>{this.params.output.soundProhibitedEvent$.next()}).then(e=>{e||(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused",!0))},e=>this.params.output.error$.next({id:"ForcePlay",message:"play() failed even with workarounds",category:cg.DOM,thrown:e}))}seek(e){this.params.output.willSeekEvent$.next(),this.video.currentTime=e/1e3}handleQualityLimitTransition(e){let t,i=e;if(e&&this.params.output.currentVideoTrack$.getValue()?.quality!==e){let a=Object.values(this.trackUrls).find(o=>!dg(o.track.quality)&&Xw(o.track.quality,e))?.track,s=this.params.desiredState.videoTrack.getState()?.id,n=this.trackUrls[s??"0"]?.track;if(a&&n&&Jw(n.quality,a.quality)&&(t=a),!t){let o=Object.values(this.trackUrls).filter(l=>!dg(l.track.quality)&&Kw(l.track.quality,e)),u=o.length;u&&(t=o[u-1].track)}t&&(i=t.quality)}else if(!e){let a=Object.values(this.trackUrls).map(s=>s.track);t=yt(a,{container:{width:this.video.offsetWidth,height:this.video.offsetHeight},throughput:this.params.dependencies.throughputEstimator.throughput$.getValue(),tuning:this.params.tuning.autoTrackSelection,forwardBufferHealth:0,abrLogger:this.params.dependencies.abrLogger})}t&&(this.params.output.currentVideoTrack$.next(t),this.params.desiredState.videoTrack.startTransitionTo(t)),this.params.output.autoVideoTrackLimits$.next({max:i})}};import{assertNever as hg,debounce as oR,merge as fg,observableFrom as uR,Subscription as lR,map as mg,ValueSubject as cR,ErrorCategory as Uu,VideoQuality as dR}from"@vkontakte/videoplayer-shared";import{ErrorCategory as aR}from"@vkontakte/videoplayer-shared";var pg=["stun:videostun.mycdn.me:80"],sR=1e3,nR=3,Fu=()=>null,_s=class{constructor(e,t){this.ws=null;this.peerConnection=null;this.serverUrl="";this.streamKey="";this.stream=null;this.signalingType="JOIN";this.retryCount=0;this.externalStartCallback=Fu;this.externalStopCallback=Fu;this.externalErrorCallback=Fu;this.options=this.normalizeOptions(t);let i=e.split("/");this.serverUrl=i.slice(0,i.length-1).join("/"),this.streamKey=i[i.length-1]}onStart(e){try{this.externalStartCallback=e}catch(t){this.handleSystemError(t)}}onStop(e){try{this.externalStopCallback=e}catch(t){this.handleSystemError(t)}}onError(e){try{this.externalErrorCallback=e}catch(t){this.handleSystemError(t)}}connect(){this.connectWS()}disconnect(){try{this.externalStopCallback(),this.closeConnections()}catch(e){this.handleSystemError(e)}}connectWS(){this.ws||(this.ws=new WebSocket(this.serverUrl),this.ws.onopen=this.onSocketOpen.bind(this),this.ws.onmessage=this.onSocketMessage.bind(this),this.ws.onclose=this.onSocketClose.bind(this),this.ws.onerror=this.onSocketError.bind(this))}onSocketOpen(){this.handleLogin()}onSocketClose(e){try{if(!this.ws)return;this.ws=null,e.code>1e3?(this.retryCount++,this.retryCount>this.options.maxRetryNumber?this.handleNetworkError():this.scheduleRetry()):this.externalStopCallback()}catch(t){this.handleRTCError(t)}}onSocketError(e){try{this.externalErrorCallback(new Error(e.toString()))}catch(t){this.handleRTCError(t)}}onSocketMessage(e){try{let t=this.parseMessage(e.data);switch(t.type){case"JOIN":case"CALL_JOIN":this.handleJoinMessage(t);break;case"UPDATE":this.handleUpdateMessage(t);break;case"STATUS":this.handleStatusMessage(t);break}}catch(t){this.handleRTCError(t)}}handleJoinMessage(e){switch(e.inviteType){case"ANSWER":this.handleAnswer(e.sdp);break;case"CANDIDATE":this.handleCandidate(e.candidate);break}}handleStatusMessage(e){switch(e.status){case"UNPUBLISHED":this.handleUnpublished();break}}async handleUpdateMessage(e){try{let t=await this.createOffer();this.peerConnection&&await this.peerConnection.setLocalDescription(t),this.handleAnswer(e.sdp)}catch(t){this.handleRTCError(t)}}async handleLogin(){try{let e={iceServers:[{urls:pg}]};this.peerConnection=new RTCPeerConnection(e),this.peerConnection.ontrack=this.onPeerConnectionStream.bind(this),this.peerConnection.onicecandidate=this.onPeerConnectionIceCandidate.bind(this),this.peerConnection.oniceconnectionstatechange=this.onPeerConnectionIceConnectionStateChange.bind(this);let t=await this.createOffer();await this.peerConnection.setLocalDescription(t),this.send({type:this.signalingType,inviteType:"OFFER",streamKey:this.streamKey,sdp:t.sdp,callSupport:!1})}catch(e){this.handleRTCError(e)}}async handleAnswer(e){try{this.peerConnection&&await this.peerConnection.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e}))}catch(t){this.handleRTCError(t)}}async handleCandidate(e){if(e)try{this.peerConnection&&await this.peerConnection.addIceCandidate(e)}catch(t){this.handleRTCError(t)}}handleUnpublished(){try{this.closeConnections(),this.externalStopCallback()}catch(e){this.handleRTCError(e)}}handleSystemError(e){this.options.errorChanel&&this.options.errorChanel.next({id:"webrtc-provider-error",category:aR.WTF,message:e.message})}async onPeerConnectionStream(e){let t=e.streams[0];this.stream&&this.stream.id===t.id||(this.stream=t,this.externalStartCallback(this.stream))}onPeerConnectionIceCandidate(e){e.candidate&&this.send({type:this.signalingType,inviteType:"CANDIDATE",candidate:e.candidate})}onPeerConnectionIceConnectionStateChange(){if(this.peerConnection){let e=this.peerConnection.iceConnectionState;["failed","closed"].indexOf(e)>-1&&(this.retryCount++,this.retryCount>this.options.maxRetryNumber?this.handleNetworkError():(this.closeConnections(),this.scheduleRetry()))}}async createOffer(){let e={offerToReceiveAudio:!0,offerToReceiveVideo:!0,voiceActivityDetection:!1};if(!this.peerConnection)throw new Error("Can not create offer - no peer connection instance ");let t=await this.peerConnection.createOffer(e),i=t.sdp||"";if(!/^a=rtpmap:\d+ H264\/\d+$/m.test(i))throw new Error("No h264 codec support error");return t}handleRTCError(e){try{this.externalErrorCallback(e||new Error("RTC connection error"))}catch(t){this.handleSystemError(t)}}handleNetworkError(){try{this.externalErrorCallback(new Error("Network error"))}catch(e){this.handleSystemError(e)}}send(e){this.ws&&this.ws.send(JSON.stringify(e))}parseMessage(e){try{return JSON.parse(e)}catch{throw new Error("Can not parse socket message")}}closeConnections(){let e=this.ws;e&&(this.ws=null,e.close(1e3)),this.removePeerConnection()}removePeerConnection(){let e=this.peerConnection;e&&(this.peerConnection=null,e.close(),e.ontrack=null,e.onicecandidate=null,e.oniceconnectionstatechange=null,e=null)}scheduleRetry(){this.retryTimeout=setTimeout(this.connectWS.bind(this),sR)}normalizeOptions(e={}){let t={stunServerList:pg,maxRetryNumber:nR,errorChanel:null};return e.stunServerList&&(t.stunServerList=e.stunServerList),e.maxRetryNumber&&e.maxRetryNumber>0&&(t.maxRetryNumber=e.maxRetryNumber),t}};var da=class{constructor(e){this.videoState=new $("stopped");this.maxSeekBackTime$=new cR(0);this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.params.desiredState.playbackState.getState(),i=this.params.desiredState.playbackState.getTransition();if(t==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.video.pause(),this.video.srcObject=null,this.params.output.position$.next(0),this.params.output.duration$.next(0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.videoState.setState("stopped"),E(this.params.desiredState.playbackState,"stopped",!0));return}if(this.videoState.getTransition())return;let s=this.params.desiredState.videoTrack.getTransition();if(e==="stopped"){this.videoState.startTransitionTo("ready"),this.prepare();return}if(s){this.prepare();return}switch(e){case"ready":t==="paused"?(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused")):t==="playing"&&(this.videoState.startTransitionTo("playing"),this.playIfAllowed());return;case"playing":t==="paused"?(this.videoState.startTransitionTo("paused"),this.video.paused?this.videoState.setState("paused"):this.video.pause()):i?.to==="playing"&&E(this.params.desiredState.playbackState,"playing");return;case"paused":t==="playing"?(this.videoState.startTransitionTo("playing"),this.playIfAllowed()):i?.to==="paused"&&E(this.params.desiredState.playbackState,"paused");return;default:return hg(e)}};this.subscription=new lR,this.params=e,this.log=this.params.dependencies.logger.createComponentLog("WebRTCLiveProvider"),this.video=ue(e.container,e.tuning),this.liveStreamClient=new _s(this.params.source.url,{maxRetryNumber:this.params.tuning.webrtc.connectionRetryMaxNumber,errorChanel:this.params.output.error$}),this.liveStreamClient.onStart(this.onLiveStreamStart.bind(this)),this.liveStreamClient.onStop(this.onLiveStreamStop.bind(this)),this.liveStreamClient.onError(this.onLiveStreamError.bind(this)),this.params.output.availableTextTracks$.next([]),this.params.desiredState.internalTextTracks.setState([]),this.subscribe()}destroy(){this.subscription.unsubscribe(),this.liveStreamClient.disconnect(),this.params.output.element$.next(void 0),le(this.video)}subscribe(){let{output:e,desiredState:t}=this.params,i=n=>{e.error$.next({id:"WebRTCLiveProvider",category:Uu.WTF,message:"WebRTCLiveProvider internal logic error",thrown:n})};fg(this.videoState.stateChangeStarted$.pipe(mg(n=>({transition:n,type:"start"}))),this.videoState.stateChangeEnded$.pipe(mg(n=>({transition:n,type:"end"})))).subscribe(({transition:n,type:o})=>{this.log({message:`[videoState change] ${o}: ${JSON.stringify(n)}`})});let a=de(this.video),s=(n,o)=>this.subscription.add(n.subscribe(o,i));s(a.timeUpdate$,e.liveTime$),s(a.ended$,e.endedEvent$),s(a.looped$,e.loopedEvent$),s(a.error$,e.error$),s(a.isBuffering$,e.isBuffering$),s(a.currentBuffer$,e.currentBuffer$),s(Me(this.video),this.params.output.elementVisible$),this.subscription.add(a.durationChange$.subscribe(n=>{e.duration$.next(n===1/0?0:n)})).add(a.canplay$.subscribe(()=>{this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready")},i)).add(a.pause$.subscribe(()=>{this.videoState.setState("paused")},i)).add(a.playing$.subscribe(()=>{this.videoState.setState("playing")},i)).add(a.error$.subscribe(e.error$)).add(this.maxSeekBackTime$.subscribe(this.params.output.duration$)).add(ce(this.video,t.volume,a.volumeState$,i)).add(a.volumeState$.subscribe(e.volume$,i)).add(this.videoState.stateChangeEnded$.subscribe(n=>{switch(n.to){case"stopped":e.position$.next(0),e.duration$.next(0),t.playbackState.setState("stopped");break;case"ready":break;case"paused":t.playbackState.setState("paused");break;case"playing":t.playbackState.setState("playing");break;default:return hg(n.to)}},i)).add(fg(t.playbackState.stateChangeStarted$,this.videoState.stateChangeEnded$,uR(["init"])).pipe(oR(0)).subscribe(this.syncPlayback.bind(this),i)),this.subscription.add(t.isLooped.stateChangeStarted$.subscribe(()=>t.isLooped.setState(!1),i)),this.subscription.add(t.autoVideoTrackSwitching.stateChangeStarted$.subscribe(()=>t.autoVideoTrackSwitching.setState(!1),i))}onLiveStreamStart(e){this.params.output.element$.next(this.video),this.params.output.duration$.next(0),this.params.output.position$.next(0),this.params.output.isLive$.next(!0),this.params.output.canChangePlaybackSpeed$.next(!1),this.params.output.hostname$.next(Y(this.params.source.url)),this.params.output.autoVideoTrackLimitingAvailable$.next(!1),this.params.output.availableVideoTracks$.next([]),this.params.output.availableAudioTracks$.next([]),this.params.output.isAudioAvailable$.next(!0),this.params.output.currentVideoTrack$.next({id:"webrtc",quality:dR.INVARIANT}),this.video.srcObject=e,E(this.params.desiredState.playbackState,"playing")}onLiveStreamStop(){this.videoState.startTransitionTo("stopped"),this.syncPlayback(),this.params.output.position$.next(0),this.params.output.duration$.next(0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.params.output.endedEvent$.next()}onLiveStreamError(e){this.onLiveStreamStop(),this.params.output.error$.next({id:"WebRTC stream runtime error",category:Uu.EXTERNAL_API,message:e.message,thrown:e})}playIfAllowed(){pe(this.video,()=>{this.params.output.soundProhibitedEvent$.next()}).then(e=>{e||(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused",!0))},e=>this.params.output.error$.next({id:"ForcePlay",message:"play() failed even with workarounds",category:Uu.DOM,thrown:e}))}prepare(){this.liveStreamClient.connect()}};var pa=class{constructor(e){this.iterator=e[Symbol.iterator](),this.next()}next(){this.current=this.iterator.next()}getValue(){if(this.current.done)throw new Error("Iterable is completed");return this.current.value}isCompleted(){return!!this.current.done}};import{assertNever as ha,assertNonNullable as At,ErrorCategory as Ns,filter as Tg,isNonNullable as Ig,isNullable as vR,map as yR,merge as TR,once as IR,Subject as me,Subscription as Eg,ValueSubject as L,flattenObject as xg}from"@vkontakte/videoplayer-shared";import{Observable as pR,map as bg,Subscription as hR,Subject as fR}from"@vkontakte/videoplayer-shared";var gg=r=>new pR(e=>{let t=new hR,i=r.desiredPlaybackState$.stateChangeStarted$.pipe(bg(({from:l,to:c})=>`${l}-${c}`)),a=r.desiredPlaybackState$.stateChangeEnded$,s=r.providerChanged$.pipe(bg(({type:l})=>l!==void 0)),n=new fR,o=0,u="unknown";return t.add(i.subscribe(l=>{o&&window.clearTimeout(o),u=l,o=window.setTimeout(()=>n.next(l),r.maxTransitionInterval)})),t.add(a.subscribe(()=>{window.clearTimeout(o),u="unknown",o=0})),t.add(s.subscribe(l=>{o&&(window.clearTimeout(o),o=0,l&&(o=window.setTimeout(()=>n.next(u),r.maxTransitionInterval)))})),t.add(n.subscribe(e)),()=>{window.clearTimeout(o),t.unsubscribe()}});import{ErrorCategory as mR,Subscription as bR,combine as gR,filter as vg,once as yg}from"@vkontakte/videoplayer-shared";function Sg(){return new(window.AudioContext||window.webkitAudioContext)}import{clientChecker as SR}from"@vkontakte/videoplayer-shared";var Oi=class r{constructor(e,t,i,a){this.providerOutput=e;this.provider$=t;this.volumeMultiplierError$=i;this.volumeMultiplier=a;this.destroyController=new Te;this.subscriptions=new bR;this.audioContext=null;this.gainNode=null;this.mediaElementSource=null;this.subscriptions.add(this.provider$.pipe(vg(s=>!!s.type),yg()).subscribe(({type:s})=>this.subscribe(s)))}static{this.errorId="VolumeMultiplierManager"}subscribe(e){SR.isSafari&&e!=="MPEG"||this.subscriptions.add(gR({video:this.providerOutput.element$,playbackState:this.providerOutput.playbackState$,volume:this.providerOutput.volume$}).pipe(vg(({playbackState:t,video:i,volume:{muted:a,volume:s}})=>t==="playing"&&!!i&&!a&&!!s),yg()).subscribe(({video:t})=>{this.initAudioContextOnce(t).then(i=>{i||this.destroy()}).catch(i=>{this.handleError(i),this.destroy()})}))}static isSupported(){return"AudioContext"in window&&"GainNode"in window&&"MediaElementAudioSourceNode"in window}async initAudioContextOnce(e){let{volumeMultiplier:t}=this,i=Sg();this.audioContext=i;let a=i.createGain();if(this.gainNode=a,a.gain.value=t,a.connect(i.destination),i.state==="suspended"&&(await i.resume(),this.destroyController.signal.aborted))return!1;let s=i.createMediaElementSource(e);return this.mediaElementSource=s,s.connect(a),!0}cleanup(){this.mediaElementSource&&(this.mediaElementSource.disconnect(),this.mediaElementSource=null),this.gainNode&&(this.gainNode.disconnect(),this.gainNode=null),this.audioContext&&(this.audioContext.state!=="closed"&&this.audioContext.close(),this.audioContext=null)}destroy(){this.destroyController.abort(),this.subscriptions.unsubscribe(),this.cleanup()}handleError(e){this.volumeMultiplierError$.next({id:r.errorId,category:mR.VIDEO_PIPELINE,message:e?.message??`${r.errorId} exception`,thrown:e})}};var ER={chunkDuration:5e3,maxParallelRequests:5},fa=class{constructor(e){this.current$=new L({type:void 0});this.providerError$=new me;this.noAvailableProvidersError$=new me;this.volumeMultiplierError$=new me;this.providerOutput={position$:new L(0),duration$:new L(1/0),volume$:new L({muted:!1,volume:1}),availableVideoStreams$:new L([]),currentVideoStream$:new L(void 0),availableVideoTracks$:new L([]),currentVideoTrack$:new L(void 0),availableAudioStreams$:new L([]),currentAudioStream$:new L(void 0),availableAudioTracks$:new L([]),currentVideoSegmentLength$:new L(0),currentAudioSegmentLength$:new L(0),isAudioAvailable$:new L(!0),autoVideoTrackLimitingAvailable$:new L(!1),autoVideoTrackLimits$:new L(void 0),currentBuffer$:new L(void 0),isBuffering$:new L(!0),error$:new me,warning$:new me,willSeekEvent$:new me,soundProhibitedEvent$:new me,seekedEvent$:new me,loopedEvent$:new me,endedEvent$:new me,firstBytesEvent$:new me,loadedMetadataEvent$:new me,firstFrameEvent$:new me,canplay$:new me,isLive$:new L(void 0),isLowLatency$:new L(!1),canChangePlaybackSpeed$:new L(!0),liveTime$:new L(void 0),liveBufferTime$:new L(void 0),availableTextTracks$:new L([]),currentTextTrack$:new L(void 0),hostname$:new L(void 0),httpConnectionType$:new L(void 0),httpConnectionReused$:new L(void 0),inPiP$:new L(!1),inFullscreen$:new L(!1),element$:new L(void 0),elementVisible$:new L(!0),availableSources$:new L(void 0),is3DVideo$:new L(!1),playbackState$:new L("")};this.subscription=new Eg;this.volumeMultiplierManager=null;this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ProviderContainer"),this.tracer=e.dependencies.tracer.createComponentTracer(this.constructor.name);let t=_m([...Fm(this.params.tuning),...Nm(this.params.tuning)],this.params.tuning.useHlsJs,this.params.tuning.useManagedMediaSource).filter(l=>Ig(e.sources[l])),{forceFormat:i,formatsToAvoid:a}=this.params.tuning,s=[];i?s=[i]:a.length?s=[...t.filter(l=>!a.includes(l)),...t.filter(l=>a.includes(l))]:s=t,this.log({message:`Selected formats: ${s.join(" > ")}`}),this.tracer.log("Selected formats",xg(s)),this.screenFormatsIterator=new pa(s);let n=[...ru(!0),...ru(!1)];this.chromecastFormatsIterator=new pa(n.filter(l=>Ig(e.sources[l]))),this.providerOutput.availableSources$.next(e.sources);let{volumeMultiplier:o=1,tuning:{useVolumeMultiplier:u}}=this.params;u&&o!==1&&Oi.isSupported()&&(this.volumeMultiplierManager=new Oi(this.providerOutput,this.current$,this.volumeMultiplierError$,o))}init(){this.subscription.add(this.initProviderErrorHandling()),this.subscription.add(this.params.dependencies.chromecastInitializer.connection$.subscribe(()=>{this.reinitProvider()}))}destroy(){this.destroyProvider(),this.current$.next({type:void 0}),this.subscription.unsubscribe(),this.volumeMultiplierManager?.destroy(),this.volumeMultiplierManager=null,this.tracer.end()}initProvider(){let e=this.chooseDestination(),t=this.chooseFormat(e);if(vR(t)){this.handleNoFormatsError(e);return}let i;try{i=this.createProvider(e,t)}catch(a){this.providerError$.next({id:"ProviderNotConstructed",category:Ns.WTF,message:"Failed to create provider",thrown:a})}i?this.current$.next({type:t,provider:i,destination:e}):this.current$.next({type:void 0})}reinitProvider(){this.tracer.log("reinitProvider"),this.destroyProvider(),this.initProvider()}switchToNextProvider(e){this.tracer.log("switchToNextProvider",{destination:e}),this.destroyProvider(),this.failoverIndex=void 0,this.skipFormat(e),this.initProvider()}destroyProvider(){let e=this.current$.getValue().provider;if(!e)return;this.log({message:"destroyProvider"}),this.tracer.log("destroyProvider");let t=this.providerOutput.position$.getValue()*1e3,i=this.params.desiredState.seekState.getState(),a=i.state!=="none";if(this.params.desiredState.seekState.setState({state:"requested",position:a?i.position:t,forcePrecise:a?i.forcePrecise:!1}),e.scene3D){let n=e.scene3D.getCameraRotation();this.params.desiredState.cameraOrientation.setState({x:n.x,y:n.y})}e.destroy();let s=this.providerOutput.isBuffering$;s.getValue()||s.next(!0)}createProvider(e,t){switch(this.log({message:`createProvider: ${e}:${t}`}),this.tracer.log("createProvider",{destination:e,format:t}),e){case"SCREEN":return this.createScreenProvider(t);case"CHROMECAST":return this.createChromecastProvider(t);default:return ha(e)}}createScreenProvider(e){let{sources:t,container:i,desiredState:a}=this.params,s=this.providerOutput,n={container:i,source:null,desiredState:a,output:s,dependencies:this.params.dependencies,tuning:this.params.tuning};switch(e){case"DASH_SEP":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_ONDEMAND":case"DASH_STREAMS":{let o=this.applyFailoverHost(t[e]),u=this.applyFailoverHost(t.HLS_ONDEMAND||t.HLS);return At(o),new aa({...n,source:o,sourceHls:u})}case"DASH_LIVE_CMAF":{let o=this.applyFailoverHost(t[e]);return At(o),new sa({...n,source:o})}case"HLS":case"HLS_ONDEMAND":{let o=this.applyFailoverHost(t[e]);return At(o),Li||!this.params.tuning.useHlsJs?new la({...n,source:o}):new oa({...n,source:o})}case"HLS_LIVE":case"HLS_LIVE_CMAF":{let o=this.applyFailoverHost(t[e]);return At(o),new ua({...n,source:o,config:{maxPausedTime:this.params.tuning.live.maxPausedTime},format:e})}case"MPEG":{let o=this.applyFailoverHost(t[e]);return At(o),new ca({...n,source:o})}case"DASH_LIVE":{let o=this.applyFailoverHost(t[e]);return At(o),new Lm({...n,source:o,config:{...ER,maxPausedTime:this.params.tuning.live.maxPausedTime}})}case"WEB_RTC_LIVE":{let o=this.applyFailoverHost(t[e]);return At(o),new da({container:i,source:o,desiredState:a,output:s,dependencies:this.params.dependencies,tuning:this.params.tuning})}case"DASH":case"DASH_LIVE_WEBM":throw new Error(`${e} is no longer supported`);default:return ha(e)}}createChromecastProvider(e){let{sources:t,container:i,desiredState:a,meta:s}=this.params,n=this.providerOutput,o=this.params.dependencies.chromecastInitializer.connection$.getValue();return At(o),new dr({connection:o,meta:s,container:i,source:t,format:e,desiredState:a,output:n,dependencies:this.params.dependencies,tuning:this.params.tuning})}chooseDestination(){return this.params.dependencies.chromecastInitializer.connection$.getValue()?"CHROMECAST":"SCREEN"}chooseFormat(e){switch(e){case"SCREEN":return this.screenFormatsIterator.isCompleted()?void 0:this.screenFormatsIterator.getValue();case"CHROMECAST":return this.chromecastFormatsIterator.isCompleted()?void 0:this.chromecastFormatsIterator.getValue();default:return ha(e)}}skipFormat(e){switch(e){case"SCREEN":return this.screenFormatsIterator.next();case"CHROMECAST":return this.chromecastFormatsIterator.next();default:return ha(e)}}handleNoFormatsError(e){switch(e){case"SCREEN":this.noAvailableProvidersError$.next(this.params.tuning.forceFormat),this.current$.next({type:void 0});return;case"CHROMECAST":this.params.dependencies.chromecastInitializer.disconnect();return;default:return ha(e)}}applyFailoverHost(e){if(this.failoverIndex===void 0)return e;let t=this.params.failoverHosts[this.failoverIndex];if(!t)return e;let i=a=>{let s=new URL(a);return s.host=t,s.toString()};if(e===void 0)return e;if("type"in e){if(e.type==="raw")return e;if(e.type==="url")return{...e,url:i(e.url)}}return(0,Pg.default)(Object.entries(e).map(([a,s])=>[a,i(s)]))}initProviderErrorHandling(){let e=new Eg,t=!1,i=0;return e.add(TR(this.providerOutput.error$.pipe(Tg(a=>!this.params.tuning.ignoreAudioRendererError||!a.message||!/AUDIO_RENDERER_ERROR/ig.test(a.message))),gg({desiredPlaybackState$:this.params.desiredState.playbackState,maxTransitionInterval:this.params.tuning.maxPlaybackTransitionInterval,position$:this.providerOutput.position$,providerChanged$:this.current$}).pipe(yR(a=>({id:`ProviderHangup:${a}`,category:Ns.WTF,message:`A ${a} transition failed to complete within reasonable time`})))).subscribe(this.providerError$)),e.add(this.current$.subscribe(()=>{t=!1;let a=this.params.desiredState.playbackState.transitionEnded$.pipe(Tg(({to:s})=>s==="playing"),IR()).subscribe(()=>t=!0);e.add(a)})),e.add(this.providerError$.subscribe(a=>{let s=this.current$.getValue().destination,n={error:a,currentDestination:s};if(s==="CHROMECAST")this.destroyProvider(),this.params.dependencies.chromecastInitializer.stopMedia().then(()=>this.switchToNextProvider("SCREEN"),()=>this.params.dependencies.chromecastInitializer.disconnect());else{let o=a.category===Ns.NETWORK,u=a.category===Ns.FATAL,l=this.params.failoverHosts.length>0&&(this.failoverIndex===void 0||this.failoverIndex<this.params.failoverHosts.length-1),c=i<this.params.tuning.providerErrorLimit&&!u,d=l&&!u&&(o&&t||!c);n={...n,isNetworkError:o,isFatalError:u,haveFailoverHost:l,tryFailover:d,canReinitProvider:c},c?(i++,this.reinitProvider()):d?(this.failoverIndex=this.failoverIndex===void 0?0:this.failoverIndex+1,this.reinitProvider()):this.switchToNextProvider(s??"SCREEN")}this.tracer.error("providerError",xg(n))})),e}};import{fromEvent as Fs,once as xR,combine as PR,Subscription as Ag,ValueSubject as qu,map as AR,filter as kR,isNonNullable as Us,now as xe,safeStorage as Hu}from"@vkontakte/videoplayer-shared";var wR=5e3,kg="one_video_throughput",wg="one_video_rtt",ma=window.navigator.connection,Rg=()=>{let r=ma?.downlink;if(Us(r)&&r!==10)return r*1e3},$g=()=>{let r=ma?.rtt;if(Us(r)&&r!==3e3)return r},Lg=(r,e,t)=>{let i=t*8,a=i/r;return i/(a+e)},ju=class r{constructor(e){this.subscription=new Ag;this.concurrentDownloads=new Set;this.tuningConfig=e;let t=r.load(kg)||(e.useBrowserEstimation?Rg():void 0)||wR,i=r.load(wg)??(e.useBrowserEstimation?$g():void 0)??0;if(this.throughput$=new qu(t),this.rtt$=new qu(i),this.rttAdjustedThroughput$=new qu(Lg(t,i,e.rttPenaltyRequestSize)),this.throughput=Kt.getSmoothedValue(t,-1,e),this.rtt=Kt.getSmoothedValue(i,1,e),e.useBrowserEstimation){let a=()=>{let n=Rg();n&&this.throughput.next(n);let o=$g();Us(o)&&this.rtt.next(o)};ma&&"onchange"in ma&&this.subscription.add(Fs(ma,"change").subscribe(a)),a()}this.subscription.add(this.throughput.smoothed$.subscribe(a=>{Hu.set(kg,a.toFixed(0))})),this.subscription.add(this.rtt.smoothed$.subscribe(a=>{Hu.set(wg,a.toFixed(0))})),this.subscription.add(this.throughput.debounced$.subscribe(this.throughput$)),this.subscription.add(this.rtt.debounced$.subscribe(this.rtt$)),this.subscription.add(PR({throughput:this.throughput.smoothed$,rtt:this.rtt.smoothed$}).pipe(AR(({throughput:a,rtt:s})=>Lg(a,s,e.rttPenaltyRequestSize)),kR(a=>{let s=this.rttAdjustedThroughput$.getValue()||0;return Math.abs(a-s)/s>=e.changeThreshold})).subscribe(this.rttAdjustedThroughput$))}destroy(){this.concurrentDownloads.clear(),this.subscription.unsubscribe()}trackXHR(e){let t=0,i=xe(),a=new Ag;switch(this.subscription.add(a),this.concurrentDownloads.add(e),e.readyState){case 4:break;case 3:case 2:a.add(Fs(e,"progress").pipe(xR()).subscribe(s=>{t=s.loaded,i=xe()}));break;case 1:case 0:a.add(Fs(e,"loadstart").subscribe(()=>{t=0,i=xe()}));break}a.add(Fs(e,"loadend").subscribe(s=>{if(e.status===200){let n=s.loaded,o=xe(),u=n-t,l=o-i;this.addRawSpeed(u,l,1)}this.concurrentDownloads.delete(e),a.unsubscribe()}))}trackStream(e,t=!1){let i=e.getReader();if(!i){e.cancel("Could not get reader");return}let a=0,s=xe(),n=0,o=xe(),u=c=>{this.concurrentDownloads.delete(e),i.releaseLock(),e.cancel(`Throughput Estimator error: ${c}`).catch(()=>{})},l=async({done:c,value:d})=>{if(c)!t&&this.addRawSpeed(a,xe()-s,1),this.concurrentDownloads.delete(e);else if(d){if(t){let p=xe();if(p-o>this.tuningConfig.lowLatency.continuesByteSequenceInterval||p-s>this.tuningConfig.lowLatency.maxLastEvaluationTimeout){let m=o-s;m&&this.addRawSpeed(n,m,1,t),n=d.byteLength,s=xe()}else n+=d.byteLength;o=xe()}else a+=d.byteLength,n+=d.byteLength,n>=this.tuningConfig.streamMinSampleSize&&xe()-o>=this.tuningConfig.streamMinSampleTime&&(this.addRawSpeed(n,xe()-o,this.concurrentDownloads.size),n=0,o=xe());await i?.read().then(l,u)}};this.concurrentDownloads.add(e),i?.read().then(l,u)}addRawSpeed(e,t,i=1,a=!1){if(r.sanityCheck(e,t,a)){let s=e*8/t;this.throughput.next(s*i)}}addRawThroughput(e){this.throughput.next(e)}addRawRtt(e){this.rtt.next(e)}static sanityCheck(e,t,i=!1){let a=e*8/t;return!(!a||!isFinite(a)||a>1e6||a<30||i&&e<1e4||!i&&e<10*1024||!i&&t<=20)}static load(e){let t=Hu.get(e);if(Us(t))return parseInt(t,10)??void 0}},Mg=ju;import{fillWithDefault as RR,VideoQuality as Cg}from"@vkontakte/videoplayer-shared";var Dg={configName:["core"],throughputEstimator:{type:"EmaAndMa",emaAlphaSlow:.2,emaAlphaFast:.7,emaAlpha:.45,basisTrendChangeCount:10,changeThreshold:.05,useBrowserEstimation:!0,rttPenaltyRequestSize:1*1024*1024,streamMinSampleSize:10*1024,streamMinSampleTime:300,deviationDepth:20,deviationFactor:.5,lowLatency:{continuesByteSequenceInterval:50,maxLastEvaluationTimeout:300}},autoTrackSelection:{bitrateFactorAtEmptyBuffer:1.8,bitrateAudioFactorAtEmptyBuffer:10,bitrateFactorAtFullBuffer:1.2,bitrateAudioFactorAtFullBuffer:7,minVideoAudioRatio:5,minAvailableThroughputAudioRatio:5,usePixelRatio:!0,pixelRatioMultiplier:1,limitByContainer:!0,containerSizeFactor:1.5,lazyQualitySwitch:!0,minBufferToSwitchUp:.4,considerPlaybackRate:!1,trackCooldownIncreaseQuality:3e3,trackCooldownDecreaseQuality:3e3,backgroundVideoQualityLimit:Cg.Q_4320P,activeVideoAreaThreshold:.1},droppedFramesChecker:{enabled:!1,percentLimit:.1,checkTime:1e3,countLimit:3,tickCountAfterQualityChange:5,qualityUpWaitingTime:5e3,minQualityBanLimit:Cg.Q_480P},dash:{forwardBufferTarget:6e4,forwardBufferTargetAuto:6e4,forwardBufferTargetManual:5*6e4,forwardBufferTargetPreload:5e3,maxSegmentDurationLeftToSelectNextSegment:3e3,minSafeBufferThreshold:.5,bufferPruningSafeZone:1e3,segmentRequestSize:1*1024*1024,representationSwitchForwardBufferGap:3e3,crashOnStallTimeout:25e3,crashOnStallTWithoutDataTimeout:5e3,enableSubSegmentBufferFeeding:!0,bufferEmptinessTolerance:100,useFetchPriorityHints:!0,accumulationBufferStallSize:{shortVideoDuration:2*6e4,shortVideoBufferStallSizeMs:0,longVideoBufferStallSizeMs:0},enableBaseUrlSupport:!0,maxSegmentRetryCount:5},dashCmafLive:{maxActiveLiveOffset:1e4,normalizedTargetMinBufferSize:6e4,normalizedLiveMinBufferSize:5e3,normalizedActualBufferOffset:1e4,offsetCalculationError:3e3,lowLatency:{maxTargetOffset:3e3,maxTargetOffsetDeviation:250,playbackCatchupSpeedup:.05,isActive:!1,delayEstimator:{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},downloadBackoff:{bufferThreshold:100,start:100,factor:2,max:3*1e3,random:.1},enableWakeLock:!0,enableTelemetryAtStart:!1,forceFormat:void 0,formatsToAvoid:[],disableChromecast:!1,chromecastReceiverId:void 0,useWebmBigRequest:!1,webmCodec:"vp9",androidPreferredFormat:"mpeg",preferCMAF:!1,preferWebRTC:!1,preferMultiStream:!1,preferHDR:!1,bigRequestMinInitSize:50*1024,bigRequestMinDataSize:1*1024*1024,stripRangeHeader:!0,flushShortLoopedBuffers:!0,insufficientBufferRuleMargin:1e4,dashSeekInSegmentDurationThreshold:3*60*1e3,dashSeekInSegmentAlwaysSeekDelta:1e4,endGapTolerance:300,stallIgnoreThreshold:33,gapWatchdogInterval:50,requestQuick:!1,useHlsJs:!0,useNativeHLSTextTracks:!1,useManagedMediaSource:!1,useNewPruneBufferStrategy:!1,useNewSwitchTo:!1,useSafariEndlessRequestBugfix:!0,isAudioDisabled:!1,autoplayOnlyInActiveTab:!0,dynamicImportTimeout:5e3,maxPlaybackTransitionInterval:2e4,providerErrorLimit:3,manifestRetryInterval:300,manifestRetryMaxInterval:1e4,manifestRetryMaxCount:10,audioVideoSyncRate:20,webrtc:{connectionRetryMaxNumber:3},spherical:{enabled:!1,fov:{x:135,y:76},rotationSpeed:45,maxYawAngle:175,rotationSpeedCorrection:10,degreeToPixelCorrection:5,speedFadeTime:2e3,speedFadeThreshold:50},useVolumeMultiplier:!1,ignoreAudioRendererError:!1,useEnableSubtitlesParam:!1},Bg=r=>({...RR(r,Dg),configName:[...r.configName??[],...Dg.configName]});import{assertNonNullable as qs,combine as kt,ErrorCategory as Hs,filter as ae,filterChanged as B,fromEvent as Wu,isNonNullable as VR,isNullable as OR,Logger as _R,map as C,mapTo as Ng,merge as wt,now as js,once as Je,Subject as U,Subscription as Fg,tap as Ug,ValueSubject as P,isHigher as NR,isInvariantQuality as qg,flattenObject as Rt,throttle as Qu,getTraceSubscriptionMethod as Hg,Tracer as FR}from"@vkontakte/videoplayer-shared";import{merge as $R,map as LR,filter as Vg,isNonNullable as MR}from"@vkontakte/videoplayer-shared";var Gu=({seekState:r,position$:e})=>$R(r.stateChangeEnded$.pipe(LR(({to:t})=>t.state==="none"?void 0:(t.position??NaN)/1e3),Vg(MR)),e.pipe(Vg(()=>r.getState().state==="none")));import{assertNonNullable as CR}from"@vkontakte/videoplayer-shared";var Og=r=>{let e=typeof r.container=="string"?document.getElementById(r.container):r.container;return CR(e,`Wrong container or containerId {${r.container}}`),e};import{filter as DR,once as BR}from"@vkontakte/videoplayer-shared";var _g=(r,e,t,i)=>{r!==void 0&&e.getState()===void 0&&e.getPrevState()===void 0&&t?.getValue().length===0?t.pipe(DR(a=>a.length>0),BR()).subscribe(a=>{a.find(i)&&e.startTransitionTo(r)}):(r===void 0||t?.getValue().find(i))&&e.startTransitionTo(r)};var Gs=class{constructor(e={configName:[]},t=FR.createRootTracer(!1)){this.subscription=new Fg;this.logger=new _R;this.abrLogger=this.logger.createComponentLog("ABR");this.isPlaybackStarted=!1;this.hasLiveOffsetByPaused=new P(!1);this.hasLiveOffsetByPausedTimer=0;this.desiredState={playbackState:new $("stopped"),seekState:new $({state:"none"}),volume:new $({volume:1,muted:!1}),videoTrack:new $(void 0),videoStream:new $(void 0),audioStream:new $(void 0),autoVideoTrackSwitching:new $(!0),autoVideoTrackLimits:new $({}),isLooped:new $(!1),playbackRate:new $(1),externalTextTracks:new $([]),internalTextTracks:new $([]),currentTextTrack:new $(void 0),textTrackCuesSettings:new $({}),cameraOrientation:new $({x:0,y:0})};this.info={playbackState$:new P("stopped"),position$:new P(0),duration$:new P(1/0),muted$:new P(!1),volume$:new P(1),availableVideoStreams$:new P([]),currentVideoStream$:new P(void 0),availableQualities$:new P([]),availableQualitiesFps$:new P({}),currentQuality$:new P(void 0),isAutoQualityEnabled$:new P(!0),autoQualityLimitingAvailable$:new P(!1),autoQualityLimits$:new P({}),availableAudioStreams$:new P([]),currentAudioStream$:new P(void 0),availableAudioTracks$:new P([]),isAudioAvailable$:new P(!0),currentPlaybackRate$:new P(1),currentBuffer$:new P({start:0,end:0}),isBuffering$:new P(!0),isStalled$:new P(!1),isEnded$:new P(!1),isLooped$:new P(!1),isLive$:new P(void 0),canChangePlaybackSpeed$:new P(void 0),atLiveEdge$:new P(void 0),atLiveDurationEdge$:new P(void 0),liveTime$:new P(void 0),liveBufferTime$:new P(void 0),currentFormat$:new P(void 0),availableTextTracks$:new P([]),currentTextTrack$:new P(void 0),throughputEstimation$:new P(void 0),rttEstimation$:new P(void 0),videoBitrate$:new P(void 0),hostname$:new P(void 0),httpConnectionType$:new P(void 0),httpConnectionReused$:new P(void 0),surface$:new P("none"),chromecastState$:new P("NOT_AVAILABLE"),chromecastDeviceName$:new P(void 0),intrinsicVideoSize$:new P(void 0),availableSources$:new P(void 0),is3DVideo$:new P(!1),currentVideoSegmentLength$:new P(0),currentAudioSegmentLength$:new P(0)};this.events={inited$:new U,ready$:new U,started$:new U,playing$:new U,paused$:new U,stopped$:new U,willStart$:new U,willResume$:new U,willPause$:new U,willStop$:new U,willDestruct$:new U,watchCoverageRecord$:new U,watchCoverageLive$:new U,managedError$:new U,fatalError$:new U,ended$:new U,looped$:new U,seeked$:new U,willSeek$:new U,autoplaySoundProhibited$:new U,firstBytes$:new U,loadedMetadata$:new U,firstFrame$:new U,canplay$:new U,log$:new U};this.experimental={element$:new P(void 0),tuningConfigName$:new P([]),enableDebugTelemetry$:new P(!1),dumpTelemetry:cm};if(this.initLogs(),this.tuning=Bg(e),this.tracer=t,this.experimental.tuningConfigName$.next(this.tuning.configName),this.chromecastInitializer=new xa({receiverApplicationId:e.chromecastReceiverId,isDisabled:e.disableChromecast,dependencies:{logger:this.logger}}),this.throughputEstimator=new Mg(this.tuning.throughputEstimator),this.initChromecastSubscription(),this.initDesiredStateSubscriptions(),Proxy&&Reflect)return new Proxy(this,{get:(i,a,s)=>{let n=Reflect.get(i,a,s);return typeof n!="function"?n:(...o)=>{try{return n.apply(i,o)}catch(u){let l=o.map(p=>JSON.stringify(p,(h,m)=>{let b=typeof m;return["number","string","boolean"].includes(b)?m:m===null?null:`<${b}>`})),c=`Player.${String(a)}`,d=`Exception calling ${c} (${l.join(", ")})`;throw this.events.fatalError$.next({id:c,category:Hs.WTF,message:d,thrown:u}),u}}}})}initVideo(e){this.config=e;let{container:t,...i}=e;return this.tracer.log("initVideo",Rt(i)),this.domContainer=Og(e),this.chromecastInitializer.contentId=e.meta?.videoId,this.providerContainer=new fa({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}),this.initProviderContainerSubscription(this.providerContainer),this.initStartingVideoTrack(this.providerContainer),this.initTracerSubscription(),this.providerContainer.init(),this.setMuted(this.tuning.isAudioDisabled),this.initDebugTelemetry(),this.initWakeLock(),this}destroy(){this.tracer.log("destroy"),window.clearTimeout(this.hasLiveOffsetByPausedTimer),this.events.willDestruct$.next(),this.stop(),this.providerContainer?.destroy(),this.throughputEstimator.destroy(),this.chromecastInitializer.destroy(),this.subscription.unsubscribe(),this.tracer.end()}prepare(){let e=this.desiredState.playbackState;return this.tracer.log("prepare",{currentPlayBackState:e.getState()}),e.getState()==="stopped"&&e.startTransitionTo("ready"),this}play(){let e=()=>{let t=this.desiredState.playbackState;this.tracer.log("play",{currentPlayBackState:t.getState()}),t.getState()!=="playing"&&t.startTransitionTo("playing")};return document.hidden&&this.tuning.autoplayOnlyInActiveTab&&!yr()?(this.tracer.log("request play from hidden tab"),Wu(document,"visibilitychange").pipe(Je()).subscribe(e)):e(),this}pause(){let e=this.desiredState.playbackState;return this.tracer.log("pause",{currentPlayBackState:e.getState()}),e.getState()!=="paused"&&e.startTransitionTo("paused"),this}stop(){let e=this.desiredState.playbackState;return this.tracer.log("stop",{currentPlayBackState:e.getState()}),e.getState()!=="stopped"&&e.startTransitionTo("stopped"),this}seekTime(e,t=!0){let i=this.info.duration$.getValue(),a=this.info.isLive$.getValue(),s=e;return e>=i&&!a&&(s=i-.1),this.tracer.log("seekTime",{duration:i,isLive:a,time:e,calculatedTime:s,forcePrecise:t}),this.events.willSeek$.next({from:this.getExactTime(),to:s}),this.desiredState.seekState.setState({state:"requested",position:s*1e3,forcePrecise:t}),this}seekPercent(e){let t=this.info.duration$.getValue();return this.tracer.log("seekPercent",{percent:e,duration:t}),isFinite(t)&&this.seekTime(Math.abs(t)*e,!1),this}setVolume(e){let t=this.tuning.isAudioDisabled||this.desiredState.volume.getState().muted;return this.tracer.log("setVolume",{volume:e,isAudioDisabled:this.tuning.isAudioDisabled,isDesiredStateMuted:this.desiredState.volume.getState().muted,chromecastState:this.chromecastInitializer.castState$.getValue(),muted:t}),this.chromecastInitializer.castState$.getValue()==="CONNECTED"?this.chromecastInitializer.setVolume(e):this.desiredState.volume.startTransitionTo({volume:e,muted:t}),this}setMuted(e){let t=this.tuning.isAudioDisabled||e;return this.tracer.log("setMuted",{isMuted:e,isAudioDisabled:this.tuning.isAudioDisabled,desiredStateVolume:this.desiredState.volume.getState().volume,chromecastState:this.chromecastInitializer.castState$.getValue(),muted:t}),this.chromecastInitializer.castState$.getValue()==="CONNECTED"?this.chromecastInitializer.setMuted(t):this.desiredState.volume.startTransitionTo({volume:this.desiredState.volume.getState().volume,muted:t}),this}setVideoStream(e){return this.desiredState.videoStream.startTransitionTo(e),this}setAudioStream(e){return this.desiredState.audioStream.startTransitionTo(e),this}setQuality(e){qs(this.providerContainer);let t=this.providerContainer.providerOutput.availableVideoTracks$.getValue();return 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.providerContainer.providerOutput.availableVideoTracks$.pipe(ae(i=>i.length>0),Je()).subscribe(i=>{this.setVideoTrackIdByQuality(i,e)}):t.length>0&&this.setVideoTrackIdByQuality(t,e),this}setAutoQuality(e){return this.tracer.log("setAutoQuality",{enable:e}),this.desiredState.autoVideoTrackSwitching.startTransitionTo(e),this}setAutoQualityLimits(e){return this.tracer.log("setAutoQualityLimits",Rt(e)),this.desiredState.autoVideoTrackLimits.startTransitionTo(e),this}setPlaybackRate(e){qs(this.providerContainer);let t=this.providerContainer?.providerOutput.element$.getValue();return this.tracer.log("setPlaybackRate",{playbackRate:e,isVideoElementAvailable:!!t}),t&&(this.desiredState.playbackRate.setState(e),t.playbackRate=e),this}setExternalTextTracks(e){return e.length&&this.tracer.log("setExternalTextTracks",Rt(e)),this.desiredState.externalTextTracks.startTransitionTo(e.map(t=>({type:"external",...t}))),this}selectTextTrack(e){return _g(e,this.desiredState.currentTextTrack,this.providerContainer?.providerOutput.availableTextTracks$,t=>t.id===e),this.tracer.log("selectTextTrack",{textTrackId:e}),this}setTextTrackCueSettings(e){return this.tracer.log("setTextTrackCueSettings",{...e}),this.desiredState.textTrackCuesSettings.startTransitionTo(e),this}setLooped(e){return this.tracer.log("setLooped",{isLooped:e}),this.desiredState.isLooped.startTransitionTo(e),this}toggleChromecast(){this.tracer.log("toggleChromecast"),this.chromecastInitializer.toggleConnection()}startCameraManualRotation(e,t){let i=this.getScene3D();return this.tracer.log("startCameraManualRotation",{isScene3DAvailable:!!i,mx:e,my:t}),i&&i.startCameraManualRotation(e,t),this}stopCameraManualRotation(e=!1){let t=this.getScene3D();return this.tracer.log("stopCameraManualRotation",{isScene3DAvailable:!!t,immediate:e}),t&&t.stopCameraManualRotation(e),this}moveCameraFocusPX(e,t){let i=this.getScene3D();if(this.tracer.log("moveCameraFocusPX",{isScene3DAvailable:!!i,dxpx:e,dypx:t}),i){let a=i.getCameraRotation(),s=i.pixelToDegree({x:e,y:t});this.desiredState.cameraOrientation.setState({x:a.x+s.x,y:a.y+s.y})}return this}holdCamera(){let e=this.getScene3D();return e&&e.holdCamera(),this}releaseCamera(){let e=this.getScene3D();return e&&e.releaseCamera(),this}getExactTime(){if(!this.providerContainer)return 0;let e=this.providerContainer.providerOutput.element$.getValue();if(OR(e))return this.info.position$.getValue();let t=this.desiredState.seekState.getState(),i=t.state==="none"?void 0:t.position;return VR(i)?i/1e3:e.currentTime}getAllLogs(){return this.logger.getAllLogs()}getScene3D(){let e=this.providerContainer?.current$.getValue();if(e?.provider?.scene3D)return e.provider.scene3D}setIntrinsicVideoSize(...e){let t={width:e.reduce((i,{width:a})=>i||a||0,0),height:e.reduce((i,{height:a})=>i||a||0,0)};t.width&&t.height&&this.info.intrinsicVideoSize$.next({width:t.width,height:t.height})}initDesiredStateSubscriptions(){this.subscription.add(wt(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(C(e=>e.to)).subscribe(this.info.playbackState$)).add(this.desiredState.isLooped.stateChangeEnded$.pipe(C(e=>e.to)).subscribe(this.info.isLooped$)).add(this.desiredState.playbackRate.stateChangeEnded$.pipe(C(e=>e.to)).subscribe(this.info.currentPlaybackRate$)).add(this.desiredState.autoVideoTrackSwitching.stateChangeEnded$.pipe(C(e=>e.to)).subscribe(this.info.isAutoQualityEnabled$)).add(this.desiredState.autoVideoTrackLimits.stateChangeEnded$.pipe(C(e=>e.to)).subscribe(this.info.autoQualityLimits$)),this.subscription.add(this.desiredState.playbackState.stateChangeStarted$.pipe(ae(({from:e})=>e==="stopped"),Je()).subscribe(()=>{this.initedAt=js(),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"paused":this.events.willPause$.next();break;case"playing":this.isPlaybackStarted?this.events.willResume$.next():this.events.willStart$.next();break;case"stopped":this.events.willStop$.next();break;default:}}))}initProviderContainerSubscription(e){this.subscription.add(e.providerOutput.willSeekEvent$.subscribe(()=>{let n=this.desiredState.seekState.getState();this.tracer.log("willSeekEvent",Rt(n)),n.state==="requested"?this.desiredState.seekState.setState({...n,state:"applying"}):this.events.managedError$.next({id:`WillSeekIn${n.state}`,category:Hs.WTF,message:"Received unexpeceted willSeek$"})})).add(e.providerOutput.soundProhibitedEvent$.pipe(Je()).subscribe(this.events.autoplaySoundProhibited$)).add(e.providerOutput.seekedEvent$.subscribe(()=>{let n=this.desiredState.seekState.getState();this.tracer.log("seekedEvent",Rt(n)),n.state==="applying"&&(this.desiredState.seekState.setState({state:"none"}),this.events.seeked$.next())})).add(e.current$.pipe(C(n=>n.type)).subscribe(this.info.currentFormat$)).add(e.current$.pipe(C(n=>n.destination),B()).subscribe(()=>this.isPlaybackStarted=!1)).add(e.providerOutput.availableVideoStreams$.subscribe(this.info.availableVideoStreams$)).add(e.providerOutput.availableVideoTracks$.pipe(C(n=>n.map(({quality:o})=>o).sort((o,u)=>qg(o)?1:qg(u)?-1:NR(u,o)?1:-1))).subscribe(this.info.availableQualities$)).add(e.providerOutput.availableVideoTracks$.subscribe(n=>{let o={};for(let u of n)u.fps&&(o[u.quality]=u.fps);this.info.availableQualitiesFps$.next(o)})).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(B()).subscribe(this.info.isAudioAvailable$)).add(e.providerOutput.currentVideoTrack$.subscribe(n=>{this.info.currentQuality$.next(n?.quality),this.info.videoBitrate$.next(n?.bitrate)})).add(e.providerOutput.currentVideoSegmentLength$.pipe(B((n,o)=>Math.round(n)===Math.round(o))).subscribe(this.info.currentVideoSegmentLength$)).add(e.providerOutput.currentAudioSegmentLength$.pipe(B((n,o)=>Math.round(n)===Math.round(o))).subscribe(this.info.currentAudioSegmentLength$)).add(e.providerOutput.hostname$.pipe(B()).subscribe(this.info.hostname$)).add(e.providerOutput.httpConnectionType$.pipe(B()).subscribe(this.info.httpConnectionType$)).add(e.providerOutput.httpConnectionReused$.pipe(B()).subscribe(this.info.httpConnectionReused$)).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(n=>{this.desiredState.autoVideoTrackLimits.setState(n??{})})).add(e.providerOutput.currentBuffer$.pipe(C(n=>n?{start:n.from,end:n.to}:{start:0,end:0})).subscribe(this.info.currentBuffer$)).add(e.providerOutput.duration$.subscribe(this.info.duration$)).add(e.providerOutput.isBuffering$.subscribe(this.info.isBuffering$)).add(e.providerOutput.isLive$.subscribe(this.info.isLive$)).add(e.providerOutput.canChangePlaybackSpeed$.subscribe(this.info.canChangePlaybackSpeed$)).add(e.providerOutput.liveTime$.subscribe(this.info.liveTime$)).add(e.providerOutput.liveBufferTime$.subscribe(this.info.liveBufferTime$)).add(kt({hasLiveOffsetByPaused:wt(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(C(n=>n.to),B(),C(n=>n==="paused")),isLowLatency:e.providerOutput.isLowLatency$}).subscribe(({hasLiveOffsetByPaused:n,isLowLatency:o})=>{if(window.clearTimeout(this.hasLiveOffsetByPausedTimer),n){this.hasLiveOffsetByPausedTimer=window.setTimeout(()=>{this.hasLiveOffsetByPaused.next(!0)},this.getActiveLiveDelay(o));return}this.hasLiveOffsetByPaused.next(!1)})).add(kt({atLiveEdge:kt({isLive:e.providerOutput.isLive$,isLowLatency:e.providerOutput.isLowLatency$,position:Gu({seekState:this.desiredState.seekState,position$:e.providerOutput.position$})}).pipe(C(({isLive:n,position:o,isLowLatency:u})=>{let l=this.getActiveLiveDelay(u);return n&&Math.abs(o)<l/1e3}),B(),Ug(n=>n&&this.setPlaybackRate(1))),hasPausedTimeoutCase:this.hasLiveOffsetByPaused}).pipe(C(({atLiveEdge:n,hasPausedTimeoutCase:o})=>n&&!o)).subscribe(this.info.atLiveEdge$)).add(kt({isLive:e.providerOutput.isLive$,position:e.providerOutput.position$,duration:e.providerOutput.duration$}).pipe(C(({isLive:n,position:o,duration:u})=>n&&(Math.abs(u)-Math.abs(o))*1e3<this.tuning.live.activeLiveDelay),B(),Ug(n=>n&&this.setPlaybackRate(1))).subscribe(this.info.atLiveDurationEdge$)).add(e.providerOutput.volume$.pipe(C(n=>n.muted),B()).subscribe(this.info.muted$)).add(e.providerOutput.volume$.pipe(C(n=>n.volume),B()).subscribe(this.info.volume$)).add(Gu({seekState:this.desiredState.seekState,position$:e.providerOutput.position$}).subscribe(this.info.position$)).add(wt(e.providerOutput.endedEvent$.pipe(Ng(!0)),e.providerOutput.seekedEvent$.pipe(Ng(!1))).pipe(B()).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.volumeMultiplierError$.subscribe(this.events.managedError$)).add(e.noAvailableProvidersError$.pipe(C(n=>({id:n?`No${n}`:"NoProviders",category:Hs.VIDEO_PIPELINE,message:n?`${n} was forced but failed or not available`:"No suitable providers or all providers failed"}))).subscribe(this.events.fatalError$)).add(e.providerOutput.element$.subscribe(this.experimental.element$)).add(e.providerOutput.firstBytesEvent$.pipe(Je(),C(n=>n??js()-this.initedAt)).subscribe(this.events.firstBytes$)).add(e.providerOutput.loadedMetadataEvent$.subscribe(this.events.loadedMetadata$)).add(e.providerOutput.firstFrameEvent$.pipe(Je(),C(()=>js()-this.initedAt)).subscribe(this.events.firstFrame$)).add(e.providerOutput.canplay$.pipe(Je(),C(()=>js()-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 P(!1);this.subscription.add(e.providerOutput.seekedEvent$.subscribe(()=>t.next(!1))).add(e.providerOutput.willSeekEvent$.subscribe(()=>t.next(!0)));let i=new P(!0);this.subscription.add(e.current$.subscribe(()=>i.next(!0))).add(this.desiredState.playbackState.stateChangeEnded$.pipe(ae(({to:n})=>n==="playing"),Je()).subscribe(()=>i.next(!1)));let a=0,s=wt(e.providerOutput.isBuffering$,t,i).pipe(C(()=>{let n=e.providerOutput.isBuffering$.getValue(),o=t.getValue()||i.getValue();return n&&!o}),B());this.subscription.add(s.subscribe(n=>{n?a=window.setTimeout(()=>this.info.isStalled$.next(!0),this.tuning.stallIgnoreThreshold):(window.clearTimeout(a),this.info.isStalled$.next(!1))})),this.subscription.add(wt(e.providerOutput.canplay$,e.providerOutput.firstFrameEvent$,e.providerOutput.firstBytesEvent$).subscribe(()=>{let n=e.providerOutput.element$.getValue();this.setIntrinsicVideoSize({width:n?.videoWidth,height:n?.videoHeight})})).add(e.providerOutput.currentVideoTrack$.subscribe(n=>{let o=e.providerOutput.element$.getValue();this.setIntrinsicVideoSize({width:n?.size?.width,height:n?.size?.height},{width:o?.videoWidth,height:o?.videoHeight})})).add(e.providerOutput.is3DVideo$.subscribe(this.info.is3DVideo$)),this.subscription.add(wt(e.providerOutput.inPiP$,e.providerOutput.inFullscreen$,e.providerOutput.element$,e.providerOutput.elementVisible$,this.chromecastInitializer.castState$).subscribe(()=>{let n=e.providerOutput.inPiP$.getValue(),o=e.providerOutput.inFullscreen$.getValue(),u=e.providerOutput.element$.getValue(),l=e.providerOutput.elementVisible$.getValue(),c=this.chromecastInitializer.castState$.getValue(),d;c==="CONNECTED"?d="second_screen":u?l?n?d="pip":o?d="fullscreen":d="inline":d="invisible":d="none",this.info.surface$.getValue()!==d&&this.info.surface$.next(d)}))}initChromecastSubscription(){this.subscription.add(this.chromecastInitializer.castState$.subscribe(this.info.chromecastState$)),this.subscription.add(this.chromecastInitializer.connection$.pipe(C(e=>e?.castDevice.friendlyName)).subscribe(this.info.chromecastDeviceName$)),this.subscription.add(this.chromecastInitializer.errorEvent$.subscribe(this.events.managedError$))}initStartingVideoTrack(e){let t=new Fg;this.subscription.add(t),this.subscription.add(e.current$.pipe(B((i,a)=>i.provider===a.provider)).subscribe(()=>{t.unsubscribe(),t.add(e.providerOutput.availableVideoTracks$.pipe(ae(i=>i.length>0),Je()).subscribe(i=>{this.setStartingVideoTrack(i)}))}))}setStartingVideoTrack(e){let t,i=this.desiredState.videoTrack.getState()?.quality;i&&(t=e.find(({quality:a})=>a===i),t||this.setAutoQuality(!0)),t||(t=yt(e,{container:this.domContainer.getBoundingClientRect(),throughput:this.throughputEstimator.throughput$.getValue(),tuning:this.tuning.autoTrackSelection,limits:this.desiredState.autoVideoTrackLimits.getState(),playbackRate:this.info.currentPlaybackRate$.getValue(),forwardBufferHealth:0,abrLogger:this.abrLogger})),this.desiredState.videoTrack.startTransitionTo(t),this.info.currentQuality$.next(t.quality),this.info.videoBitrate$.next(t.bitrate)}initLogs(){this.subscription.add(wt(this.desiredState.videoTrack.stateChangeStarted$.pipe(C(e=>({transition:e,entity:"quality",type:"start"}))),this.desiredState.videoTrack.stateChangeEnded$.pipe(C(e=>({transition:e,entity:"quality",type:"end"}))),this.desiredState.autoVideoTrackSwitching.stateChangeStarted$.pipe(C(e=>({transition:e,entity:"autoQualityEnabled",type:"start"}))),this.desiredState.autoVideoTrackSwitching.stateChangeEnded$.pipe(C(e=>({transition:e,entity:"autoQualityEnabled",type:"end"}))),this.desiredState.seekState.stateChangeStarted$.pipe(C(e=>({transition:e,entity:"seekState",type:"start"}))),this.desiredState.seekState.stateChangeEnded$.pipe(C(e=>({transition:e,entity:"seekState",type:"end"}))),this.desiredState.playbackState.stateChangeStarted$.pipe(C(e=>({transition:e,entity:"playbackState",type:"start"}))),this.desiredState.playbackState.stateChangeEnded$.pipe(C(e=>({transition:e,entity:"playbackState",type:"end"})))).pipe(C(e=>({component:"desiredState",message:`[${e.entity} change] ${e.type}: ${JSON.stringify(e.transition)}`}))).subscribe(this.logger.log)),this.subscription.add(this.logger.log$.subscribe(this.events.log$))}initDebugTelemetry(){let e=this.providerContainer?.providerOutput;qs(this.providerContainer),qs(e),lm(),this.experimental.enableDebugTelemetry$.next(this.tuning.enableTelemetryAtStart),[this.experimental.enableDebugTelemetry$.subscribe(t=>um(t)),this.providerContainer.current$.subscribe(({type:t})=>fr("provider",t)),e.duration$.subscribe(t=>fr("duration",t)),e.availableVideoTracks$.pipe(ae(t=>!!t.length),Je()).subscribe(t=>fr("tracks",t)),this.events.fatalError$.subscribe(new re("fatalError")),this.events.managedError$.subscribe(new re("managedError")),e.position$.subscribe(new re("position")),e.currentVideoTrack$.pipe(C(t=>t?.quality)).subscribe(new re("quality")),this.info.currentBuffer$.subscribe(new re("buffer")),e.isBuffering$.subscribe(new re("isBuffering"))].forEach(t=>this.subscription.add(t)),fr("codecs",Om())}initTracerSubscription(){let e=Hg(this.tracer.log.bind(this.tracer)),t=Hg(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(B()).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(kt({currentQuality:this.info.currentQuality$,videoBitrate:this.info.videoBitrate$}).pipe(ae(({currentQuality:i,videoBitrate:a})=>!!i&&!!a),B((i,a)=>i.currentQuality===a.currentQuality)).subscribe(e("currentVideoTrack"))).add(this.info.currentVideoSegmentLength$.pipe(ae(i=>i>0),B()).subscribe(e("currentVideoSegmentLength"))).add(this.info.currentAudioSegmentLength$.pipe(ae(i=>i>0),B()).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(kt({currentBuffer:this.info.currentBuffer$.pipe(ae(i=>i.end>0),B((i,a)=>i.end===a.end&&i.start===a.start)),position:this.info.position$.pipe(B())}).pipe(Qu(1e3)).subscribe(e("currentBufferAndPosition"))).add(this.info.duration$.pipe(B()).subscribe(e("duration"))).add(this.info.isBuffering$.subscribe(e("isBuffering"))).add(this.info.isLive$.pipe(B()).subscribe(e("isLive"))).add(this.info.canChangePlaybackSpeed$.pipe(B()).subscribe(e("canChangePlaybackSpeed"))).add(kt({liveTime:this.info.liveTime$,liveBufferTime:this.info.liveBufferTime$,position:this.info.position$}).pipe(ae(({liveTime:i,liveBufferTime:a})=>!!i&&!!a),Qu(1e3)).subscribe(e("liveBufferAndPosition"))).add(this.info.atLiveEdge$.pipe(B(),ae(i=>i===!0)).subscribe(e("atLiveEdge"))).add(this.info.atLiveDurationEdge$.pipe(B(),ae(i=>i===!0)).subscribe(e("atLiveDurationEdge"))).add(this.info.muted$.pipe(B()).subscribe(e("muted"))).add(this.info.volume$.pipe(B()).subscribe(e("volume"))).add(this.info.isEnded$.pipe(B(),ae(i=>i===!0)).subscribe(e("isEnded"))).add(this.info.availableSources$.subscribe(e("availableSources"))).add(kt({throughputEstimation:this.info.throughputEstimation$,rtt:this.info.rttEstimation$}).pipe(ae(({throughputEstimation:i,rtt:a})=>!!i&&!!a),Qu(3e3)).subscribe(e("throughputEstimation"))).add(this.info.isStalled$.subscribe(e("isStalled"))).add(this.info.is3DVideo$.pipe(B(),ae(i=>i===!0)).subscribe(e("is3DVideo"))).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(){if(!window.navigator.wakeLock||!this.tuning.enableWakeLock)return;let e,t=()=>{e?.release(),e=void 0},i=async()=>{t(),e=await window.navigator.wakeLock.request("screen").catch(a=>{a instanceof DOMException&&a.name==="NotAllowedError"||this.events.managedError$.next({id:"WakeLock",category:Hs.DOM,message:String(a)})})};this.subscription.add(wt(Wu(document,"visibilitychange"),Wu(document,"fullscreenchange"),this.desiredState.playbackState.stateChangeEnded$).subscribe(()=>{let a=document.visibilityState==="visible",s=this.desiredState.playbackState.getState()==="playing",n=!!e&&!e?.released;a&&s?n||i():t()})).add(this.events.willDestruct$.subscribe(t))}setVideoTrackIdByQuality(e,t){let i=e.find(a=>a.quality===t);this.tracer.log("setVideoTrackIdByQuality",Rt({quality:t,availableTracks:Rt(e),track:Rt(i),isAutoQuality:!i})),i?this.desiredState.videoTrack.startTransitionTo(i):this.setAutoQuality(!0)}getActiveLiveDelay(e=!1){return e?this.tuning.live.lowLatencyActiveLiveDelay:this.tuning.live.activeLiveDelay}};import{Subscription as Yj,Observable as zj,Subject as Kj,ValueSubject as Jj,VideoQuality as Xj}from"@vkontakte/videoplayer-shared";var Zj=`@vkontakte/videoplayer-core@${Ku}`;export{Ia as ChromecastState,Qs as HttpConnectionType,zj as Observable,ne as PlaybackState,Gs as Player,Zj as SDK_VERSION,Kj as Subject,Yj as Subscription,Ys as Surface,Ku as VERSION,Jj as ValueSubject,ft as VideoFormat,Xj as VideoQuality};
|
|
120
|
+
`),i=[],a=[];for(let s=0;s<t.length;s++){let n=t[s],o=n.match(/^#EXT-X-STREAM-INF:(.+)/),u=n.match(/^#EXT-X-MEDIA:TYPE=SUBTITLES,(.+)/);if(!(!o&&!u)){if(o){let l=(0,Vu.default)(o[1].split(",").map(g=>g.split("="))),c=l.QUALITY??`stream-${l.BANDWIDTH}`,d=ww(l),p;l.BANDWIDTH&&(p=parseInt(l.BANDWIDTH,10)/1e3||void 0),!p&&l["AVERAGE-BANDWIDTH"]&&(p=parseInt(l["AVERAGE-BANDWIDTH"],10)/1e3||void 0);let h=l["FRAME-RATE"]?parseFloat(l["FRAME-RATE"]):void 0,m;if(l.RESOLUTION){let[g,y]=l.RESOLUTION.split("x").map(I=>parseInt(I,10));g&&y&&(m={width:g,height:y})}let b=new URL(t[++s],e).toString();d&&i.push({id:c,quality:d,url:b,bandwidth:p,size:m,fps:h})}if(u){let l=(0,Vu.default)(u[1].split(",").map(h=>h.split("=")).map(([h,m])=>[h,m.replace(/^"|"$/g,"")])),c=l.URI?.replace(/playlist$/,"subtitles.vtt"),d=l.LANGUAGE,p=l.NAME;c&&d&&a.push({type:"internal",id:d,label:p,language:d,url:c,isAuto:!1})}}}if(!i.length)throw new Error("Empty manifest");return{qualityManifests:i,textTracks:a}},$w=r=>new Promise(e=>{setTimeout(()=>{e()},r)}),Bu=0,rg=async(r,e=r,t)=>{let a=await(await ut(r)).text();Bu+=1;try{let{qualityManifests:s,textTracks:n}=Rw(a,e);return{qualityManifests:s,textTracks:n}}catch{if(Bu<=t.manifestRetryMaxCount)return await $w(kw(Bu-1,{start:t.manifestRetryInterval,max:t.manifestRetryMaxInterval})),rg(r,e,t)}return{qualityManifests:[],textTracks:[]}},Bs=rg;var ua=class{constructor(e){this.subscription=new _w;this.videoState=new $("stopped");this.textTracksManager=new $e;this.manifests$=new Ou([]);this.liveOffset=new nt;this.manifestStartTime$=new Ou(void 0);this.syncPlayback=()=>{if(!this.manifests$.getValue().length)return;let t=this.videoState.getState(),i=this.params.desiredState.playbackState.getState(),a=this.params.desiredState.playbackState.getTransition(),s=this.params.desiredState.videoTrack.getTransition(),n=this.params.desiredState.autoVideoTrackSwitching.getTransition(),o=this.params.desiredState.autoVideoTrackLimits.getTransition();if(i==="stopped"){t!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.video.removeAttribute("src"),this.video.load(),this.params.output.position$.next(0),this.params.output.duration$.next(1/0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.videoState.setState("stopped"),E(this.params.desiredState.playbackState,"stopped",!0));return}if(this.videoState.getTransition())return;let l=this.params.desiredState.seekState.getState();if(t==="stopped"){this.videoState.startTransitionTo("ready"),this.prepare();return}if(s||n||o){let c=this.videoState.getState();this.videoState.setState("changing_manifest"),this.videoState.startTransitionTo(c),this.prepare(),o&&this.params.output.autoVideoTrackLimits$.next(o.to),l.state==="none"&&this.params.desiredState.seekState.setState({state:"requested",position:-this.liveOffset.getTotalOffset(),forcePrecise:!0});return}if(a?.to!=="paused"&&l.state==="requested"){this.videoState.startTransitionTo("ready"),this.seek(l.position-this.liveOffset.getTotalPausedTime()),this.prepare();return}switch(t){case"ready":i==="ready"?E(this.params.desiredState.playbackState,"ready"):i==="paused"?(this.videoState.setState("paused"),this.liveOffset.pause(),E(this.params.desiredState.playbackState,"paused")):i==="playing"&&(this.videoState.startTransitionTo("playing"),this.playIfAllowed());return;case"playing":i==="paused"?(this.videoState.startTransitionTo("paused"),this.liveOffset.pause(),this.video.paused?this.videoState.setState("paused"):this.video.pause()):a?.to==="playing"&&E(this.params.desiredState.playbackState,"playing");return;case"paused":if(i==="playing")if(this.videoState.startTransitionTo("playing"),this.liveOffset.getTotalPausedTime()<this.params.config.maxPausedTime&&this.liveOffset.getTotalOffset()<this.maxSeekBackTime$.getValue())this.liveOffset.resume(),this.playIfAllowed(),this.params.output.position$.next(-this.liveOffset.getTotalOffset()/1e3);else{let c=this.liveOffset.getTotalOffset();c>=this.maxSeekBackTime$.getValue()&&(c=0,this.liveOffset.resetTo(c)),this.liveOffset.resume(),this.params.output.position$.next(-c/1e3),this.prepare()}else a?.to==="paused"&&(E(this.params.desiredState.playbackState,"paused"),this.liveOffset.pause());return;case"changing_manifest":break;default:return Lw(t)}};this.params=e,this.video=ue(e.container,e.tuning),this.params.output.element$.next(this.video),this.masterManifest={id:"master",quality:Nw.INVARIANT,url:this.params.source.url},Bs(Z(this.params.source.url),this.params.source.url,{manifestRetryInterval:this.params.tuning.manifestRetryInterval,manifestRetryMaxInterval:this.params.tuning.manifestRetryMaxInterval,manifestRetryMaxCount:this.params.tuning.manifestRetryMaxCount}).then(({qualityManifests:t})=>{t.length===0&&this.params.output.error$.next({id:"HlsLiveProviderInternal:empty_manifest",category:Vs.WTF,message:"HlsLiveProvider: there are no qualities in manifest"}),this.manifests$.next([this.masterManifest,...t])},t=>this.params.output.error$.next({id:"ExtractHlsQualities",category:Vs.NETWORK,message:"Error fetching manifest and extracting qualities",thrown:t})),this.params.output.isLive$.next(!0),this.params.output.canChangePlaybackSpeed$.next(!1),this.params.output.availableVideoTracks$.next([]),this.params.output.availableAudioTracks$.next([]),this.params.output.isAudioAvailable$.next(!0),this.params.output.hostname$.next(Y(this.params.source.url)),this.params.output.availableTextTracks$.next([]),this.params.desiredState.internalTextTracks.setState([]),this.maxSeekBackTime$=new Ou(e.source.maxSeekBackTime??1/0),this.subscribe()}selectManifest(){let{autoVideoTrackSwitching:e,videoTrack:t}=this.params.desiredState,i=e.getState(),a=t.getTransition(),s=a?.to?.id??t.getState()?.id??"master",n=this.manifests$.getValue();if(!n.length)return;let o=i?"master":s;return i&&!a&&t.startTransitionTo(this.masterManifest),n.find(u=>u.id===o)}subscribe(){let{output:e,desiredState:t}=this.params,i=o=>{e.error$.next({id:"HlsLiveProvider",category:Vs.WTF,message:"HlsLiveProvider internal logic error",thrown:o})},a=de(this.video),s=(o,u)=>this.subscription.add(o.subscribe(u,i));s(a.ended$,e.endedEvent$),s(a.error$,e.error$),s(a.isBuffering$,e.isBuffering$),s(a.currentBuffer$,e.currentBuffer$),s(a.loadedMetadata$,e.firstBytesEvent$),s(a.loadedMetadata$,e.loadedMetadataEvent$),s(a.playing$,e.firstFrameEvent$),s(a.canplay$,e.canplay$),s(a.inPiP$,e.inPiP$),s(a.inFullscreen$,e.inFullscreen$),this.subscription.add(t.isLooped.stateChangeStarted$.subscribe(()=>t.isLooped.setState(!1),i)),this.subscription.add(ce(this.video,t.volume,a.volumeState$,i)),this.subscription.add(a.volumeState$.subscribe(this.params.output.volume$,i)),this.subscription.add(Re(this.video,t.playbackRate,a.playbackRateState$,i)),s(Me(this.video),e.elementVisible$),this.textTracksManager.connect(this.video,t,e),this.subscription.add(a.playing$.subscribe(()=>{this.videoState.setState("playing"),E(t.playbackState,"playing")},i)).add(a.pause$.subscribe(()=>{this.videoState.setState("paused"),E(t.playbackState,"paused")},i)).add(a.canplay$.subscribe(()=>{this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.videoState.getState()==="playing"&&this.playIfAllowed()},i)),this.subscription.add(this.maxSeekBackTime$.pipe(Bw(),sg(o=>-o/1e3)).subscribe(this.params.output.duration$,i)),this.subscription.add(a.loadedMetadata$.subscribe(()=>{let o=this.params.desiredState.seekState.getState(),u=this.videoState.getTransition(),l=this.params.desiredState.videoTrack.getTransition(),c=this.params.desiredState.autoVideoTrackSwitching.getTransition();if(l&&ag(l.to)){let d=l.to.id;this.params.desiredState.videoTrack.setState(l.to);let p=this.manifests$.getValue().find(h=>h.id===d);p&&(this.params.output.currentVideoTrack$.next(p),this.params.output.hostname$.next(Y(p.url)))}c&&this.params.desiredState.autoVideoTrackSwitching.setState(c.to),u&&u.from==="changing_manifest"&&this.videoState.setState(u.to),o&&o.state==="requested"&&this.seek(o.position)},i)),this.subscription.add(a.loadedData$.subscribe(()=>{let o=this.video?.getStartDate?.()?.getTime();this.manifestStartTime$.next(o||void 0)},i)),this.subscription.add(Mw({startTime:this.manifestStartTime$.pipe(Dw(ag)),currentTime:a.timeUpdate$}).subscribe(({startTime:o,currentTime:u})=>this.params.output.liveTime$.next(o+u*1e3),i)),this.subscription.add(this.manifests$.pipe(sg(o=>o.map(({id:u,quality:l,size:c,bandwidth:d,fps:p})=>({id:u,quality:l,size:c,fps:p,bitrate:d})))).subscribe(this.params.output.availableVideoTracks$,i));let n=Vw(t.playbackState.stateChangeStarted$,t.seekState.stateChangeEnded$,t.videoTrack.stateChangeStarted$,t.autoVideoTrackSwitching.stateChangeStarted$,t.autoVideoTrackLimits.stateChangeStarted$,this.videoState.stateChangeEnded$,this.manifests$,Ow(["init"])).pipe(Cw(0));this.subscription.add(n.subscribe(this.syncPlayback,i))}destroy(){this.subscription.unsubscribe(),this.textTracksManager.destroy(),this.params.output.element$.next(void 0),le(this.video)}prepare(){let e=this.selectManifest();if(Os(e))return;let t=this.params.desiredState.autoVideoTrackLimits.getTransition(),i=this.params.desiredState.autoVideoTrackLimits.getState(),a=new URL(e.url);if((t||i)&&e.id===this.masterManifest.id){let{max:o,min:u}=t?.to??i??{};for(let[l,c]of[[o,"mq"],[u,"lq"]]){let d=String(parseFloat(l||""));c&&l&&a.searchParams.set(c,d)}}let s=this.params.format==="HLS_LIVE_CMAF"?2:0,n=Z(a.toString(),this.liveOffset.getTotalOffset(),s);this.video.setAttribute("src",n),this.video.load(),Du(n).then(o=>{if(!Os(o))this.maxSeekBackTime$.next(o);else{let u=this.params.source.maxSeekBackTime??this.maxSeekBackTime$.getValue();if(Os(u)||!isFinite(u))try{ut(n).then(l=>l.text()).then(l=>{let c=/#EXT-X-STREAM-INF[^\n]+\n(.+)/m.exec(l)?.[1];if(c){let d=new URL(c,n).toString();Du(d).then(p=>{Os(p)||this.maxSeekBackTime$.next(p)})}})}catch{}}})}playIfAllowed(){pe(this.video,()=>{this.params.output.soundProhibitedEvent$.next()}).then(e=>{e||(this.videoState.setState("paused"),this.liveOffset.pause(),E(this.params.desiredState.playbackState,"paused",!0))},e=>this.params.output.error$.next({id:"ForcePlay",message:"play() failed even with workarounds",category:Vs.DOM,thrown:e}))}seek(e){this.params.output.willSeekEvent$.next();let t=-e,i=t<this.maxSeekBackTime$.getValue()?t:0;this.liveOffset.resetTo(i),this.params.output.position$.next(-i/1e3),this.params.output.seekedEvent$.next()}};import{assertNever as Fw,debounce as Uw,ErrorCategory as _u,fromEvent as Nu,isNonNullable as qw,isNullable as Hw,map as ng,merge as og,observableFrom as ug,Subscription as jw,ValueSubject as Gw,VideoQuality as Ww,clientChecker as Qw}from"@vkontakte/videoplayer-shared";var la=class{constructor(e){this.subscription=new jw;this.videoState=new $("stopped");this.textTracksManager=new $e;this.manifests$=new Gw([]);this.syncPlayback=()=>{if(!this.manifests$.getValue().length)return;let t=this.videoState.getState(),i=this.params.desiredState.playbackState.getState(),a=this.params.desiredState.playbackState.getTransition(),s=this.params.desiredState.videoTrack.getTransition(),n=this.params.desiredState.autoVideoTrackSwitching.getTransition(),o=this.params.desiredState.autoVideoTrackLimits.getTransition();if(i==="stopped"){t!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.video.removeAttribute("src"),this.video.load(),this.params.output.position$.next(0),this.params.output.duration$.next(1/0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.videoState.setState("stopped"),E(this.params.desiredState.playbackState,"stopped",!0));return}if(this.videoState.getTransition())return;let l=this.params.desiredState.seekState.getState();if(t==="stopped"){this.videoState.startTransitionTo("ready"),this.prepare();return}if(s||n||o){let c=this.videoState.getState();this.videoState.setState("changing_manifest"),this.videoState.startTransitionTo(c);let{currentTime:d}=this.video;this.prepare(),o&&this.params.output.autoVideoTrackLimits$.next(o.to),l.state==="none"&&this.params.desiredState.seekState.setState({state:"requested",position:d*1e3,forcePrecise:!0});return}switch(a?.to!=="paused"&&l.state==="requested"&&this.seek(l.position),t){case"ready":i==="ready"?E(this.params.desiredState.playbackState,"ready"):i==="paused"?(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused")):i==="playing"&&(this.videoState.startTransitionTo("playing"),this.playIfAllowed());return;case"playing":i==="paused"?(this.videoState.startTransitionTo("paused"),this.video.paused?this.videoState.setState("paused"):this.video.pause()):a?.to==="playing"&&E(this.params.desiredState.playbackState,"playing");return;case"paused":i==="playing"?(this.videoState.startTransitionTo("playing"),this.playIfAllowed()):a?.to==="paused"&&E(this.params.desiredState.playbackState,"paused");return;case"changing_manifest":break;default:return Fw(t)}};this.params=e,this.video=ue(e.container,e.tuning),this.params.output.element$.next(this.video),this.masterManifest={id:"master",quality:Ww.INVARIANT,url:this.params.source.url},this.params.output.isLive$.next(!1),this.params.output.availableVideoTracks$.next([]),this.params.output.availableAudioTracks$.next([]),this.params.output.isAudioAvailable$.next(!0),this.params.output.hostname$.next(Y(this.params.source.url)),this.params.output.autoVideoTrackLimitingAvailable$.next(!0),Bs(Z(this.params.source.url),this.params.source.url,{manifestRetryInterval:this.params.tuning.manifestRetryInterval,manifestRetryMaxInterval:this.params.tuning.manifestRetryMaxInterval,manifestRetryMaxCount:this.params.tuning.manifestRetryMaxCount}).then(({qualityManifests:t,textTracks:i})=>{this.manifests$.next([this.masterManifest,...t]),this.params.tuning.useNativeHLSTextTracks||this.params.desiredState.internalTextTracks.startTransitionTo(i)},t=>this.params.output.error$.next({id:"ExtractHlsQualities",category:_u.NETWORK,message:"Error fetching manifest and extracting qualities",thrown:t})),this.subscribe()}selectManifest(){let{autoVideoTrackSwitching:e,videoTrack:t}=this.params.desiredState,i=e.getState(),a=t.getTransition(),s=a?.to?.id??t.getState()?.id??"master",n=this.manifests$.getValue();if(!n.length)return;let o=i?"master":s;return i&&!a&&t.startTransitionTo(this.masterManifest),n.find(u=>u.id===o)}subscribe(){let{output:e,desiredState:t}=this.params,i=o=>{e.error$.next({id:"HlsProvider",category:_u.WTF,message:"HlsProvider internal logic error",thrown:o})},a=de(this.video),s=(o,u)=>this.subscription.add(o.subscribe(u));if(s(a.timeUpdate$,e.position$),s(a.durationChange$,e.duration$),s(a.ended$,e.endedEvent$),s(a.looped$,e.loopedEvent$),s(a.error$,e.error$),s(a.isBuffering$,e.isBuffering$),s(a.currentBuffer$,e.currentBuffer$),s(a.loadedMetadata$,e.firstBytesEvent$),s(a.loadedMetadata$,e.loadedMetadataEvent$),s(a.playing$,e.firstFrameEvent$),s(a.canplay$,e.canplay$),s(a.seeked$,e.seekedEvent$),s(a.inPiP$,e.inPiP$),s(a.inFullscreen$,e.inFullscreen$),s(this.videoState.stateChangeEnded$.pipe(ng(o=>o.to)),this.params.output.playbackState$),this.subscription.add(Ye(this.video,t.isLooped,i)),this.subscription.add(ce(this.video,t.volume,a.volumeState$,i)),this.subscription.add(a.volumeState$.subscribe(this.params.output.volume$,i)),this.subscription.add(Re(this.video,t.playbackRate,a.playbackRateState$,i)),this.textTracksManager.connect(this.video,t,e),this.subscription.add(a.playing$.subscribe(()=>{this.videoState.setState("playing"),E(t.playbackState,"playing")},i)).add(a.pause$.subscribe(()=>{this.videoState.setState("paused"),E(t.playbackState,"paused")},i)).add(a.canplay$.subscribe(()=>{this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.videoState.getState()==="playing"&&this.playIfAllowed()},i).add(a.loadedMetadata$.subscribe(()=>{let o=this.params.desiredState.seekState.getState(),u=this.videoState.getTransition(),l=this.params.desiredState.videoTrack.getTransition(),c=this.params.desiredState.autoVideoTrackSwitching.getTransition();if(l&&qw(l.to)){let d=l.to.id;this.params.desiredState.videoTrack.setState(l.to);let p=this.manifests$.getValue().find(h=>h.id===d);if(p){this.params.output.currentVideoTrack$.next(p),this.params.output.hostname$.next(Y(p.url));let h=this.params.desiredState.playbackRate.getState(),m=this.params.output.element$.getValue()?.playbackRate;if(h!==m){let b=this.params.output.element$.getValue();b&&(this.params.desiredState.playbackRate.setState(h),b.playbackRate=h)}}}c&&this.params.desiredState.autoVideoTrackSwitching.setState(c.to),u&&u.from==="changing_manifest"&&this.videoState.setState(u.to),o.state==="requested"&&this.seek(o.position)},i))),this.subscription.add(this.manifests$.pipe(ng(o=>o.map(({id:u,quality:l,size:c,bandwidth:d,fps:p})=>({id:u,quality:l,size:c,fps:p,bitrate:d})))).subscribe(this.params.output.availableVideoTracks$,i)),!Qw.isIOS||!this.params.tuning.useNativeHLSTextTracks){let{textTracks:o}=this.video;this.subscription.add(og(Nu(o,"addtrack"),Nu(o,"removetrack"),Nu(o,"change"),ug(["init"])).subscribe(()=>{for(let u=0;u<o.length;u++)o[u].mode="hidden"},i))}let n=og(t.playbackState.stateChangeStarted$,t.seekState.stateChangeEnded$,t.videoTrack.stateChangeStarted$,t.autoVideoTrackSwitching.stateChangeStarted$,t.autoVideoTrackLimits.stateChangeStarted$,this.videoState.stateChangeEnded$,this.manifests$,ug(["init"])).pipe(Uw(0));this.subscription.add(n.subscribe(this.syncPlayback,i))}destroy(){this.subscription.unsubscribe(),this.textTracksManager.destroy(),this.params.output.element$.next(void 0),le(this.video)}prepare(){let e=this.selectManifest();if(Hw(e))return;let t=this.params.desiredState.autoVideoTrackLimits.getTransition(),i=this.params.desiredState.autoVideoTrackLimits.getState(),a=new URL(e.url);if((t||i)&&e.id===this.masterManifest.id){let{max:s,min:n}=t?.to??i??{};for(let[o,u]of[[s,"mq"],[n,"lq"]]){let l=String(parseFloat(o||""));u&&o&&a.searchParams.set(u,l)}}this.video.setAttribute("src",a.toString()),this.video.load()}playIfAllowed(){pe(this.video,()=>{this.params.output.soundProhibitedEvent$.next()}).then(e=>{e||(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused",!0))},e=>this.params.output.error$.next({id:"ForcePlay",message:"play() failed even with workarounds",category:_u.DOM,thrown:e}))}seek(e){this.params.output.willSeekEvent$.next(),this.video.currentTime=e/1e3}};import{assertNever as Yw,assertNonNullable as lg,debounce as zw,ErrorCategory as cg,isHigher as Kw,isHigherOrEqual as Jw,isInvariantQuality as dg,isLowerOrEqual as Xw,isNonNullable as Zw,merge as eR,observableFrom as tR,Subscription as iR,map as rR}from"@vkontakte/videoplayer-shared";var ca=class{constructor(e){this.subscription=new iR;this.videoState=new $("stopped");this.trackUrls={};this.textTracksManager=new $e;this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.params.desiredState.playbackState.getState(),i=this.params.desiredState.playbackState.getTransition();if(t==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.video.removeAttribute("src"),this.video.load(),this.params.output.position$.next(0),this.params.output.duration$.next(1/0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.videoState.setState("stopped"),E(this.params.desiredState.playbackState,"stopped",!0));return}if(this.videoState.getTransition())return;let s=this.params.desiredState.autoVideoTrackLimits.getTransition(),n=this.params.desiredState.videoTrack.getTransition(),o=this.params.desiredState.seekState.getState();if(s&&e!=="ready"&&!n){this.handleQualityLimitTransition(s.to.max);return}if(e==="stopped"){this.videoState.startTransitionTo("ready"),this.prepare();return}if(n){let{currentTime:u}=this.video;this.prepare(),o.state==="none"&&this.params.desiredState.seekState.setState({state:"requested",position:u*1e3,forcePrecise:!0}),n.to&&this.params.desiredState.autoVideoTrackLimits.getState()?.max!==this.trackUrls[n.to.id]?.track?.quality&&this.params.output.autoVideoTrackLimits$.next({max:void 0});return}switch(i?.to!=="paused"&&o.state==="requested"&&this.seek(o.position),e){case"ready":t==="ready"?E(this.params.desiredState.playbackState,"ready"):t==="paused"?(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused")):t==="playing"&&(this.videoState.startTransitionTo("playing"),this.playIfAllowed());return;case"playing":t==="paused"?(this.videoState.startTransitionTo("paused"),this.video.paused?this.videoState.setState("paused"):this.video.pause()):i?.to==="playing"&&E(this.params.desiredState.playbackState,"playing");return;case"paused":t==="playing"?(this.videoState.startTransitionTo("playing"),this.playIfAllowed()):i?.to==="paused"&&E(this.params.desiredState.playbackState,"paused");return;default:return Yw(e)}};this.params=e,this.video=ue(e.container,e.tuning),this.params.output.element$.next(this.video),Object.entries(this.params.source).reverse().forEach(([t,i],a)=>{let s=a.toString(10);this.trackUrls[s]={track:{quality:t,id:s},url:i}}),this.params.output.isLive$.next(!1),this.params.output.availableVideoTracks$.next(Object.values(this.trackUrls).map(({track:t})=>t)),this.params.output.availableAudioTracks$.next([]),this.params.output.isAudioAvailable$.next(!0),this.params.desiredState.autoVideoTrackSwitching.setState(!1),this.params.output.autoVideoTrackLimitingAvailable$.next(!0),this.subscribe()}subscribe(){let{output:e,desiredState:t}=this.params,i=o=>{e.error$.next({id:"MpegProvider",category:cg.WTF,message:"MpegProvider internal logic error",thrown:o})},a=de(this.video),s=(o,u)=>this.subscription.add(o.subscribe(u,i));s(a.timeUpdate$,e.position$),s(a.durationChange$,e.duration$),s(a.ended$,e.endedEvent$),s(a.looped$,e.loopedEvent$),s(a.error$,e.error$),s(a.isBuffering$,e.isBuffering$),s(a.currentBuffer$,e.currentBuffer$),s(a.loadedMetadata$,e.firstBytesEvent$),s(a.loadedMetadata$,e.loadedMetadataEvent$),s(a.playing$,e.firstFrameEvent$),s(a.canplay$,e.canplay$),s(a.seeked$,e.seekedEvent$),s(a.inPiP$,e.inPiP$),s(a.inFullscreen$,e.inFullscreen$),s(this.videoState.stateChangeEnded$.pipe(rR(o=>o.to)),this.params.output.playbackState$),this.subscription.add(Ye(this.video,t.isLooped,i)),this.subscription.add(ce(this.video,t.volume,a.volumeState$,i)),this.subscription.add(a.volumeState$.subscribe(this.params.output.volume$,i)),this.subscription.add(Re(this.video,t.playbackRate,a.playbackRateState$,i)),s(Me(this.video),e.elementVisible$),this.subscription.add(a.playing$.subscribe(()=>{this.videoState.setState("playing"),E(t.playbackState,"playing")},i)).add(a.pause$.subscribe(()=>{this.videoState.setState("paused"),E(t.playbackState,"paused")},i)).add(a.canplay$.subscribe(()=>{this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready");let o=this.params.desiredState.videoTrack.getTransition();if(o&&Zw(o.to)){this.params.desiredState.videoTrack.setState(o.to),this.params.output.currentVideoTrack$.next(this.trackUrls[o.to.id].track);let u=this.params.desiredState.playbackRate.getState(),l=this.params.output.element$.getValue()?.playbackRate;if(u!==l){let c=this.params.output.element$.getValue();c&&(this.params.desiredState.playbackRate.setState(u),c.playbackRate=u)}}this.videoState.getState()==="playing"&&this.playIfAllowed()},i)),this.textTracksManager.connect(this.video,t,e);let n=eR(t.playbackState.stateChangeStarted$,t.videoTrack.stateChangeStarted$,t.seekState.stateChangeEnded$,t.autoVideoTrackLimits.stateChangeStarted$,this.videoState.stateChangeEnded$,tR(["init"])).pipe(zw(0));this.subscription.add(n.subscribe(this.syncPlayback,i))}destroy(){this.subscription.unsubscribe(),this.textTracksManager.destroy(),this.trackUrls={},this.params.output.element$.next(void 0),le(this.video)}prepare(){let e=this.params.desiredState.videoTrack.getState()?.id;lg(e,"MpegProvider: track is not selected");let{url:t}=this.trackUrls[e];lg(t,`MpegProvider: No url for ${e}`),this.params.tuning.requestQuick&&(t=Jr(t)),this.video.setAttribute("src",t),this.video.load(),this.params.output.hostname$.next(Y(t))}playIfAllowed(){pe(this.video,()=>{this.params.output.soundProhibitedEvent$.next()}).then(e=>{e||(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused",!0))},e=>this.params.output.error$.next({id:"ForcePlay",message:"play() failed even with workarounds",category:cg.DOM,thrown:e}))}seek(e){this.params.output.willSeekEvent$.next(),this.video.currentTime=e/1e3}handleQualityLimitTransition(e){let t,i=e;if(e&&this.params.output.currentVideoTrack$.getValue()?.quality!==e){let a=Object.values(this.trackUrls).find(o=>!dg(o.track.quality)&&Xw(o.track.quality,e))?.track,s=this.params.desiredState.videoTrack.getState()?.id,n=this.trackUrls[s??"0"]?.track;if(a&&n&&Jw(n.quality,a.quality)&&(t=a),!t){let o=Object.values(this.trackUrls).filter(l=>!dg(l.track.quality)&&Kw(l.track.quality,e)),u=o.length;u&&(t=o[u-1].track)}t&&(i=t.quality)}else if(!e){let a=Object.values(this.trackUrls).map(s=>s.track);t=yt(a,{container:{width:this.video.offsetWidth,height:this.video.offsetHeight},throughput:this.params.dependencies.throughputEstimator.throughput$.getValue(),tuning:this.params.tuning.autoTrackSelection,forwardBufferHealth:0,abrLogger:this.params.dependencies.abrLogger})}t&&(this.params.output.currentVideoTrack$.next(t),this.params.desiredState.videoTrack.startTransitionTo(t)),this.params.output.autoVideoTrackLimits$.next({max:i})}};import{assertNever as hg,debounce as oR,merge as fg,observableFrom as uR,Subscription as lR,map as mg,ValueSubject as cR,ErrorCategory as Uu,VideoQuality as dR}from"@vkontakte/videoplayer-shared";import{ErrorCategory as aR}from"@vkontakte/videoplayer-shared";var pg=["stun:videostun.mycdn.me:80"],sR=1e3,nR=3,Fu=()=>null,_s=class{constructor(e,t){this.ws=null;this.peerConnection=null;this.serverUrl="";this.streamKey="";this.stream=null;this.signalingType="JOIN";this.retryCount=0;this.externalStartCallback=Fu;this.externalStopCallback=Fu;this.externalErrorCallback=Fu;this.options=this.normalizeOptions(t);let i=e.split("/");this.serverUrl=i.slice(0,i.length-1).join("/"),this.streamKey=i[i.length-1]}onStart(e){try{this.externalStartCallback=e}catch(t){this.handleSystemError(t)}}onStop(e){try{this.externalStopCallback=e}catch(t){this.handleSystemError(t)}}onError(e){try{this.externalErrorCallback=e}catch(t){this.handleSystemError(t)}}connect(){this.connectWS()}disconnect(){try{this.externalStopCallback(),this.closeConnections()}catch(e){this.handleSystemError(e)}}connectWS(){this.ws||(this.ws=new WebSocket(this.serverUrl),this.ws.onopen=this.onSocketOpen.bind(this),this.ws.onmessage=this.onSocketMessage.bind(this),this.ws.onclose=this.onSocketClose.bind(this),this.ws.onerror=this.onSocketError.bind(this))}onSocketOpen(){this.handleLogin()}onSocketClose(e){try{if(!this.ws)return;this.ws=null,e.code>1e3?(this.retryCount++,this.retryCount>this.options.maxRetryNumber?this.handleNetworkError():this.scheduleRetry()):this.externalStopCallback()}catch(t){this.handleRTCError(t)}}onSocketError(e){try{this.externalErrorCallback(new Error(e.toString()))}catch(t){this.handleRTCError(t)}}onSocketMessage(e){try{let t=this.parseMessage(e.data);switch(t.type){case"JOIN":case"CALL_JOIN":this.handleJoinMessage(t);break;case"UPDATE":this.handleUpdateMessage(t);break;case"STATUS":this.handleStatusMessage(t);break}}catch(t){this.handleRTCError(t)}}handleJoinMessage(e){switch(e.inviteType){case"ANSWER":this.handleAnswer(e.sdp);break;case"CANDIDATE":this.handleCandidate(e.candidate);break}}handleStatusMessage(e){switch(e.status){case"UNPUBLISHED":this.handleUnpublished();break}}async handleUpdateMessage(e){try{let t=await this.createOffer();this.peerConnection&&await this.peerConnection.setLocalDescription(t),this.handleAnswer(e.sdp)}catch(t){this.handleRTCError(t)}}async handleLogin(){try{let e={iceServers:[{urls:pg}]};this.peerConnection=new RTCPeerConnection(e),this.peerConnection.ontrack=this.onPeerConnectionStream.bind(this),this.peerConnection.onicecandidate=this.onPeerConnectionIceCandidate.bind(this),this.peerConnection.oniceconnectionstatechange=this.onPeerConnectionIceConnectionStateChange.bind(this);let t=await this.createOffer();await this.peerConnection.setLocalDescription(t),this.send({type:this.signalingType,inviteType:"OFFER",streamKey:this.streamKey,sdp:t.sdp,callSupport:!1})}catch(e){this.handleRTCError(e)}}async handleAnswer(e){try{this.peerConnection&&await this.peerConnection.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e}))}catch(t){this.handleRTCError(t)}}async handleCandidate(e){if(e)try{this.peerConnection&&await this.peerConnection.addIceCandidate(e)}catch(t){this.handleRTCError(t)}}handleUnpublished(){try{this.closeConnections(),this.externalStopCallback()}catch(e){this.handleRTCError(e)}}handleSystemError(e){this.options.errorChanel&&this.options.errorChanel.next({id:"webrtc-provider-error",category:aR.WTF,message:e.message})}async onPeerConnectionStream(e){let t=e.streams[0];this.stream&&this.stream.id===t.id||(this.stream=t,this.externalStartCallback(this.stream))}onPeerConnectionIceCandidate(e){e.candidate&&this.send({type:this.signalingType,inviteType:"CANDIDATE",candidate:e.candidate})}onPeerConnectionIceConnectionStateChange(){if(this.peerConnection){let e=this.peerConnection.iceConnectionState;["failed","closed"].indexOf(e)>-1&&(this.retryCount++,this.retryCount>this.options.maxRetryNumber?this.handleNetworkError():(this.closeConnections(),this.scheduleRetry()))}}async createOffer(){let e={offerToReceiveAudio:!0,offerToReceiveVideo:!0,voiceActivityDetection:!1};if(!this.peerConnection)throw new Error("Can not create offer - no peer connection instance ");let t=await this.peerConnection.createOffer(e),i=t.sdp||"";if(!/^a=rtpmap:\d+ H264\/\d+$/m.test(i))throw new Error("No h264 codec support error");return t}handleRTCError(e){try{this.externalErrorCallback(e||new Error("RTC connection error"))}catch(t){this.handleSystemError(t)}}handleNetworkError(){try{this.externalErrorCallback(new Error("Network error"))}catch(e){this.handleSystemError(e)}}send(e){this.ws&&this.ws.send(JSON.stringify(e))}parseMessage(e){try{return JSON.parse(e)}catch{throw new Error("Can not parse socket message")}}closeConnections(){let e=this.ws;e&&(this.ws=null,e.close(1e3)),this.removePeerConnection()}removePeerConnection(){let e=this.peerConnection;e&&(this.peerConnection=null,e.close(),e.ontrack=null,e.onicecandidate=null,e.oniceconnectionstatechange=null,e=null)}scheduleRetry(){this.retryTimeout=setTimeout(this.connectWS.bind(this),sR)}normalizeOptions(e={}){let t={stunServerList:pg,maxRetryNumber:nR,errorChanel:null};return e.stunServerList&&(t.stunServerList=e.stunServerList),e.maxRetryNumber&&e.maxRetryNumber>0&&(t.maxRetryNumber=e.maxRetryNumber),t}};var da=class{constructor(e){this.videoState=new $("stopped");this.maxSeekBackTime$=new cR(0);this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.params.desiredState.playbackState.getState(),i=this.params.desiredState.playbackState.getTransition();if(t==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.video.pause(),this.video.srcObject=null,this.params.output.position$.next(0),this.params.output.duration$.next(0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.videoState.setState("stopped"),E(this.params.desiredState.playbackState,"stopped",!0));return}if(this.videoState.getTransition())return;let s=this.params.desiredState.videoTrack.getTransition();if(e==="stopped"){this.videoState.startTransitionTo("ready"),this.prepare();return}if(s){this.prepare();return}switch(e){case"ready":t==="paused"?(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused")):t==="playing"&&(this.videoState.startTransitionTo("playing"),this.playIfAllowed());return;case"playing":t==="paused"?(this.videoState.startTransitionTo("paused"),this.video.paused?this.videoState.setState("paused"):this.video.pause()):i?.to==="playing"&&E(this.params.desiredState.playbackState,"playing");return;case"paused":t==="playing"?(this.videoState.startTransitionTo("playing"),this.playIfAllowed()):i?.to==="paused"&&E(this.params.desiredState.playbackState,"paused");return;default:return hg(e)}};this.subscription=new lR,this.params=e,this.log=this.params.dependencies.logger.createComponentLog("WebRTCLiveProvider"),this.video=ue(e.container,e.tuning),this.liveStreamClient=new _s(this.params.source.url,{maxRetryNumber:this.params.tuning.webrtc.connectionRetryMaxNumber,errorChanel:this.params.output.error$}),this.liveStreamClient.onStart(this.onLiveStreamStart.bind(this)),this.liveStreamClient.onStop(this.onLiveStreamStop.bind(this)),this.liveStreamClient.onError(this.onLiveStreamError.bind(this)),this.params.output.availableTextTracks$.next([]),this.params.desiredState.internalTextTracks.setState([]),this.subscribe()}destroy(){this.subscription.unsubscribe(),this.liveStreamClient.disconnect(),this.params.output.element$.next(void 0),le(this.video)}subscribe(){let{output:e,desiredState:t}=this.params,i=n=>{e.error$.next({id:"WebRTCLiveProvider",category:Uu.WTF,message:"WebRTCLiveProvider internal logic error",thrown:n})};fg(this.videoState.stateChangeStarted$.pipe(mg(n=>({transition:n,type:"start"}))),this.videoState.stateChangeEnded$.pipe(mg(n=>({transition:n,type:"end"})))).subscribe(({transition:n,type:o})=>{this.log({message:`[videoState change] ${o}: ${JSON.stringify(n)}`})});let a=de(this.video),s=(n,o)=>this.subscription.add(n.subscribe(o,i));s(a.timeUpdate$,e.liveTime$),s(a.ended$,e.endedEvent$),s(a.looped$,e.loopedEvent$),s(a.error$,e.error$),s(a.isBuffering$,e.isBuffering$),s(a.currentBuffer$,e.currentBuffer$),s(Me(this.video),this.params.output.elementVisible$),this.subscription.add(a.durationChange$.subscribe(n=>{e.duration$.next(n===1/0?0:n)})).add(a.canplay$.subscribe(()=>{this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready")},i)).add(a.pause$.subscribe(()=>{this.videoState.setState("paused")},i)).add(a.playing$.subscribe(()=>{this.videoState.setState("playing")},i)).add(a.error$.subscribe(e.error$)).add(this.maxSeekBackTime$.subscribe(this.params.output.duration$)).add(ce(this.video,t.volume,a.volumeState$,i)).add(a.volumeState$.subscribe(e.volume$,i)).add(this.videoState.stateChangeEnded$.subscribe(n=>{switch(n.to){case"stopped":e.position$.next(0),e.duration$.next(0),t.playbackState.setState("stopped");break;case"ready":break;case"paused":t.playbackState.setState("paused");break;case"playing":t.playbackState.setState("playing");break;default:return hg(n.to)}},i)).add(fg(t.playbackState.stateChangeStarted$,this.videoState.stateChangeEnded$,uR(["init"])).pipe(oR(0)).subscribe(this.syncPlayback.bind(this),i)),this.subscription.add(t.isLooped.stateChangeStarted$.subscribe(()=>t.isLooped.setState(!1),i)),this.subscription.add(t.autoVideoTrackSwitching.stateChangeStarted$.subscribe(()=>t.autoVideoTrackSwitching.setState(!1),i))}onLiveStreamStart(e){this.params.output.element$.next(this.video),this.params.output.duration$.next(0),this.params.output.position$.next(0),this.params.output.isLive$.next(!0),this.params.output.canChangePlaybackSpeed$.next(!1),this.params.output.hostname$.next(Y(this.params.source.url)),this.params.output.autoVideoTrackLimitingAvailable$.next(!1),this.params.output.availableVideoTracks$.next([]),this.params.output.availableAudioTracks$.next([]),this.params.output.isAudioAvailable$.next(!0),this.params.output.currentVideoTrack$.next({id:"webrtc",quality:dR.INVARIANT}),this.video.srcObject=e,E(this.params.desiredState.playbackState,"playing")}onLiveStreamStop(){this.videoState.startTransitionTo("stopped"),this.syncPlayback(),this.params.output.position$.next(0),this.params.output.duration$.next(0),this.params.output.currentBuffer$.next(void 0),this.params.output.hostname$.next(void 0),this.params.output.endedEvent$.next()}onLiveStreamError(e){this.onLiveStreamStop(),this.params.output.error$.next({id:"WebRTC stream runtime error",category:Uu.EXTERNAL_API,message:e.message,thrown:e})}playIfAllowed(){pe(this.video,()=>{this.params.output.soundProhibitedEvent$.next()}).then(e=>{e||(this.videoState.setState("paused"),E(this.params.desiredState.playbackState,"paused",!0))},e=>this.params.output.error$.next({id:"ForcePlay",message:"play() failed even with workarounds",category:Uu.DOM,thrown:e}))}prepare(){this.liveStreamClient.connect()}};var pa=class{constructor(e){this.iterator=e[Symbol.iterator](),this.next()}next(){this.current=this.iterator.next()}getValue(){if(this.current.done)throw new Error("Iterable is completed");return this.current.value}isCompleted(){return!!this.current.done}};import{assertNever as ha,assertNonNullable as At,ErrorCategory as Ns,filter as Tg,isNonNullable as Ig,isNullable as vR,map as yR,merge as TR,once as IR,Subject as me,Subscription as Eg,ValueSubject as L,flattenObject as xg}from"@vkontakte/videoplayer-shared";import{Observable as pR,map as bg,Subscription as hR,Subject as fR}from"@vkontakte/videoplayer-shared";var gg=r=>new pR(e=>{let t=new hR,i=r.desiredPlaybackState$.stateChangeStarted$.pipe(bg(({from:l,to:c})=>`${l}-${c}`)),a=r.desiredPlaybackState$.stateChangeEnded$,s=r.providerChanged$.pipe(bg(({type:l})=>l!==void 0)),n=new fR,o=0,u="unknown";return t.add(i.subscribe(l=>{o&&window.clearTimeout(o),u=l,o=window.setTimeout(()=>n.next(l),r.maxTransitionInterval)})),t.add(a.subscribe(()=>{window.clearTimeout(o),u="unknown",o=0})),t.add(s.subscribe(l=>{o&&(window.clearTimeout(o),o=0,l&&(o=window.setTimeout(()=>n.next(u),r.maxTransitionInterval)))})),t.add(n.subscribe(e)),()=>{window.clearTimeout(o),t.unsubscribe()}});import{ErrorCategory as mR,Subscription as bR,combine as gR,filter as vg,once as yg}from"@vkontakte/videoplayer-shared";function Sg(){return new(window.AudioContext||window.webkitAudioContext)}import{clientChecker as SR}from"@vkontakte/videoplayer-shared";var Oi=class r{constructor(e,t,i,a){this.providerOutput=e;this.provider$=t;this.volumeMultiplierError$=i;this.volumeMultiplier=a;this.destroyController=new Te;this.subscriptions=new bR;this.audioContext=null;this.gainNode=null;this.mediaElementSource=null;this.subscriptions.add(this.provider$.pipe(vg(s=>!!s.type),yg()).subscribe(({type:s})=>this.subscribe(s)))}static{this.errorId="VolumeMultiplierManager"}subscribe(e){SR.isSafari&&e!=="MPEG"||this.subscriptions.add(gR({video:this.providerOutput.element$,playbackState:this.providerOutput.playbackState$,volume:this.providerOutput.volume$}).pipe(vg(({playbackState:t,video:i,volume:{muted:a,volume:s}})=>t==="playing"&&!!i&&!a&&!!s),yg()).subscribe(({video:t})=>{this.initAudioContextOnce(t).then(i=>{i||this.destroy()}).catch(i=>{this.handleError(i),this.destroy()})}))}static isSupported(){return"AudioContext"in window&&"GainNode"in window&&"MediaElementAudioSourceNode"in window}async initAudioContextOnce(e){let{volumeMultiplier:t}=this,i=Sg();this.audioContext=i;let a=i.createGain();if(this.gainNode=a,a.gain.value=t,a.connect(i.destination),i.state==="suspended"&&(await i.resume(),this.destroyController.signal.aborted))return!1;let s=i.createMediaElementSource(e);return this.mediaElementSource=s,s.connect(a),!0}cleanup(){this.mediaElementSource&&(this.mediaElementSource.disconnect(),this.mediaElementSource=null),this.gainNode&&(this.gainNode.disconnect(),this.gainNode=null),this.audioContext&&(this.audioContext.state!=="closed"&&this.audioContext.close(),this.audioContext=null)}destroy(){this.destroyController.abort(),this.subscriptions.unsubscribe(),this.cleanup()}handleError(e){this.volumeMultiplierError$.next({id:r.errorId,category:mR.VIDEO_PIPELINE,message:e?.message??`${r.errorId} exception`,thrown:e})}};var ER={chunkDuration:5e3,maxParallelRequests:5},fa=class{constructor(e){this.current$=new L({type:void 0});this.providerError$=new me;this.noAvailableProvidersError$=new me;this.volumeMultiplierError$=new me;this.providerOutput={position$:new L(0),duration$:new L(1/0),volume$:new L({muted:!1,volume:1}),availableVideoStreams$:new L([]),currentVideoStream$:new L(void 0),availableVideoTracks$:new L([]),currentVideoTrack$:new L(void 0),availableAudioStreams$:new L([]),currentAudioStream$:new L(void 0),availableAudioTracks$:new L([]),currentVideoSegmentLength$:new L(0),currentAudioSegmentLength$:new L(0),isAudioAvailable$:new L(!0),autoVideoTrackLimitingAvailable$:new L(!1),autoVideoTrackLimits$:new L(void 0),currentBuffer$:new L(void 0),isBuffering$:new L(!0),error$:new me,warning$:new me,willSeekEvent$:new me,soundProhibitedEvent$:new me,seekedEvent$:new me,loopedEvent$:new me,endedEvent$:new me,firstBytesEvent$:new me,loadedMetadataEvent$:new me,firstFrameEvent$:new me,canplay$:new me,isLive$:new L(void 0),isLowLatency$:new L(!1),canChangePlaybackSpeed$:new L(!0),liveTime$:new L(void 0),liveBufferTime$:new L(void 0),availableTextTracks$:new L([]),currentTextTrack$:new L(void 0),hostname$:new L(void 0),httpConnectionType$:new L(void 0),httpConnectionReused$:new L(void 0),inPiP$:new L(!1),inFullscreen$:new L(!1),element$:new L(void 0),elementVisible$:new L(!0),availableSources$:new L(void 0),is3DVideo$:new L(!1),playbackState$:new L("")};this.subscription=new Eg;this.volumeMultiplierManager=null;this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ProviderContainer"),this.tracer=e.dependencies.tracer.createComponentTracer(this.constructor.name);let t=_m([...Fm(this.params.tuning),...Nm(this.params.tuning)],this.params.tuning.useHlsJs,this.params.tuning.useManagedMediaSource).filter(l=>Ig(e.sources[l])),{forceFormat:i,formatsToAvoid:a}=this.params.tuning,s=[];i?s=[i]:a.length?s=[...t.filter(l=>!a.includes(l)),...t.filter(l=>a.includes(l))]:s=t,this.log({message:`Selected formats: ${s.join(" > ")}`}),this.tracer.log("Selected formats",xg(s)),this.screenFormatsIterator=new pa(s);let n=[...ru(!0),...ru(!1)];this.chromecastFormatsIterator=new pa(n.filter(l=>Ig(e.sources[l]))),this.providerOutput.availableSources$.next(e.sources);let{volumeMultiplier:o=1,tuning:{useVolumeMultiplier:u}}=this.params;u&&o!==1&&Oi.isSupported()&&(this.volumeMultiplierManager=new Oi(this.providerOutput,this.current$,this.volumeMultiplierError$,o))}init(){this.subscription.add(this.initProviderErrorHandling()),this.subscription.add(this.params.dependencies.chromecastInitializer.connection$.subscribe(()=>{this.reinitProvider()}))}destroy(){this.destroyProvider(),this.current$.next({type:void 0}),this.subscription.unsubscribe(),this.volumeMultiplierManager?.destroy(),this.volumeMultiplierManager=null,this.tracer.end()}initProvider(){let e=this.chooseDestination(),t=this.chooseFormat(e);if(vR(t)){this.handleNoFormatsError(e);return}let i;try{i=this.createProvider(e,t)}catch(a){this.providerError$.next({id:"ProviderNotConstructed",category:Ns.WTF,message:"Failed to create provider",thrown:a})}i?this.current$.next({type:t,provider:i,destination:e}):this.current$.next({type:void 0})}reinitProvider(){this.tracer.log("reinitProvider"),this.destroyProvider(),this.initProvider()}switchToNextProvider(e){this.tracer.log("switchToNextProvider",{destination:e}),this.destroyProvider(),this.failoverIndex=void 0,this.skipFormat(e),this.initProvider()}destroyProvider(){let e=this.current$.getValue().provider;if(!e)return;this.log({message:"destroyProvider"}),this.tracer.log("destroyProvider");let t=this.providerOutput.position$.getValue()*1e3,i=this.params.desiredState.seekState.getState(),a=i.state!=="none";if(this.params.desiredState.seekState.setState({state:"requested",position:a?i.position:t,forcePrecise:a?i.forcePrecise:!1}),e.scene3D){let n=e.scene3D.getCameraRotation();this.params.desiredState.cameraOrientation.setState({x:n.x,y:n.y})}e.destroy();let s=this.providerOutput.isBuffering$;s.getValue()||s.next(!0)}createProvider(e,t){switch(this.log({message:`createProvider: ${e}:${t}`}),this.tracer.log("createProvider",{destination:e,format:t}),e){case"SCREEN":return this.createScreenProvider(t);case"CHROMECAST":return this.createChromecastProvider(t);default:return ha(e)}}createScreenProvider(e){let{sources:t,container:i,desiredState:a}=this.params,s=this.providerOutput,n={container:i,source:null,desiredState:a,output:s,dependencies:this.params.dependencies,tuning:this.params.tuning};switch(e){case"DASH_SEP":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_ONDEMAND":case"DASH_STREAMS":{let o=this.applyFailoverHost(t[e]),u=this.applyFailoverHost(t.HLS_ONDEMAND||t.HLS);return At(o),new aa({...n,source:o,sourceHls:u})}case"DASH_LIVE_CMAF":{let o=this.applyFailoverHost(t[e]);return At(o),new sa({...n,source:o})}case"HLS":case"HLS_ONDEMAND":{let o=this.applyFailoverHost(t[e]);return At(o),Li||!this.params.tuning.useHlsJs?new la({...n,source:o}):new oa({...n,source:o})}case"HLS_LIVE":case"HLS_LIVE_CMAF":{let o=this.applyFailoverHost(t[e]);return At(o),new ua({...n,source:o,config:{maxPausedTime:this.params.tuning.live.maxPausedTime},format:e})}case"MPEG":{let o=this.applyFailoverHost(t[e]);return At(o),new ca({...n,source:o})}case"DASH_LIVE":{let o=this.applyFailoverHost(t[e]);return At(o),new Lm({...n,source:o,config:{...ER,maxPausedTime:this.params.tuning.live.maxPausedTime}})}case"WEB_RTC_LIVE":{let o=this.applyFailoverHost(t[e]);return At(o),new da({container:i,source:o,desiredState:a,output:s,dependencies:this.params.dependencies,tuning:this.params.tuning})}case"DASH":case"DASH_LIVE_WEBM":throw new Error(`${e} is no longer supported`);default:return ha(e)}}createChromecastProvider(e){let{sources:t,container:i,desiredState:a,meta:s}=this.params,n=this.providerOutput,o=this.params.dependencies.chromecastInitializer.connection$.getValue();return At(o),new dr({connection:o,meta:s,container:i,source:t,format:e,desiredState:a,output:n,dependencies:this.params.dependencies,tuning:this.params.tuning})}chooseDestination(){return this.params.dependencies.chromecastInitializer.connection$.getValue()?"CHROMECAST":"SCREEN"}chooseFormat(e){switch(e){case"SCREEN":return this.screenFormatsIterator.isCompleted()?void 0:this.screenFormatsIterator.getValue();case"CHROMECAST":return this.chromecastFormatsIterator.isCompleted()?void 0:this.chromecastFormatsIterator.getValue();default:return ha(e)}}skipFormat(e){switch(e){case"SCREEN":return this.screenFormatsIterator.next();case"CHROMECAST":return this.chromecastFormatsIterator.next();default:return ha(e)}}handleNoFormatsError(e){switch(e){case"SCREEN":this.noAvailableProvidersError$.next(this.params.tuning.forceFormat),this.current$.next({type:void 0});return;case"CHROMECAST":this.params.dependencies.chromecastInitializer.disconnect();return;default:return ha(e)}}applyFailoverHost(e){if(this.failoverIndex===void 0)return e;let t=this.params.failoverHosts[this.failoverIndex];if(!t)return e;let i=a=>{let s=new URL(a);return s.host=t,s.toString()};if(e===void 0)return e;if("type"in e){if(e.type==="raw")return e;if(e.type==="url")return{...e,url:i(e.url)}}return(0,Pg.default)(Object.entries(e).map(([a,s])=>[a,i(s)]))}initProviderErrorHandling(){let e=new Eg,t=!1,i=0;return e.add(TR(this.providerOutput.error$.pipe(Tg(a=>!this.params.tuning.ignoreAudioRendererError||!a.message||!/AUDIO_RENDERER_ERROR/ig.test(a.message))),gg({desiredPlaybackState$:this.params.desiredState.playbackState,maxTransitionInterval:this.params.tuning.maxPlaybackTransitionInterval,position$:this.providerOutput.position$,providerChanged$:this.current$}).pipe(yR(a=>({id:`ProviderHangup:${a}`,category:Ns.WTF,message:`A ${a} transition failed to complete within reasonable time`})))).subscribe(this.providerError$)),e.add(this.current$.subscribe(()=>{t=!1;let a=this.params.desiredState.playbackState.transitionEnded$.pipe(Tg(({to:s})=>s==="playing"),IR()).subscribe(()=>t=!0);e.add(a)})),e.add(this.providerError$.subscribe(a=>{let s=this.current$.getValue().destination,n={error:a,currentDestination:s};if(s==="CHROMECAST")this.destroyProvider(),this.params.dependencies.chromecastInitializer.stopMedia().then(()=>this.switchToNextProvider("SCREEN"),()=>this.params.dependencies.chromecastInitializer.disconnect());else{let o=a.category===Ns.NETWORK,u=a.category===Ns.FATAL,l=this.params.failoverHosts.length>0&&(this.failoverIndex===void 0||this.failoverIndex<this.params.failoverHosts.length-1),c=i<this.params.tuning.providerErrorLimit&&!u,d=l&&!u&&(o&&t||!c);n={...n,isNetworkError:o,isFatalError:u,haveFailoverHost:l,tryFailover:d,canReinitProvider:c},c?(i++,this.reinitProvider()):d?(this.failoverIndex=this.failoverIndex===void 0?0:this.failoverIndex+1,this.reinitProvider()):this.switchToNextProvider(s??"SCREEN")}this.tracer.error("providerError",xg(n))})),e}};import{fromEvent as Fs,once as xR,combine as PR,Subscription as Ag,ValueSubject as qu,map as AR,filter as kR,isNonNullable as Us,now as xe,safeStorage as Hu}from"@vkontakte/videoplayer-shared";var wR=5e3,kg="one_video_throughput",wg="one_video_rtt",ma=window.navigator.connection,Rg=()=>{let r=ma?.downlink;if(Us(r)&&r!==10)return r*1e3},$g=()=>{let r=ma?.rtt;if(Us(r)&&r!==3e3)return r},Lg=(r,e,t)=>{let i=t*8,a=i/r;return i/(a+e)},ju=class r{constructor(e){this.subscription=new Ag;this.concurrentDownloads=new Set;this.tuningConfig=e;let t=r.load(kg)||(e.useBrowserEstimation?Rg():void 0)||wR,i=r.load(wg)??(e.useBrowserEstimation?$g():void 0)??0;if(this.throughput$=new qu(t),this.rtt$=new qu(i),this.rttAdjustedThroughput$=new qu(Lg(t,i,e.rttPenaltyRequestSize)),this.throughput=Kt.getSmoothedValue(t,-1,e),this.rtt=Kt.getSmoothedValue(i,1,e),e.useBrowserEstimation){let a=()=>{let n=Rg();n&&this.throughput.next(n);let o=$g();Us(o)&&this.rtt.next(o)};ma&&"onchange"in ma&&this.subscription.add(Fs(ma,"change").subscribe(a)),a()}this.subscription.add(this.throughput.smoothed$.subscribe(a=>{Hu.set(kg,a.toFixed(0))})),this.subscription.add(this.rtt.smoothed$.subscribe(a=>{Hu.set(wg,a.toFixed(0))})),this.subscription.add(this.throughput.debounced$.subscribe(this.throughput$)),this.subscription.add(this.rtt.debounced$.subscribe(this.rtt$)),this.subscription.add(PR({throughput:this.throughput.smoothed$,rtt:this.rtt.smoothed$}).pipe(AR(({throughput:a,rtt:s})=>Lg(a,s,e.rttPenaltyRequestSize)),kR(a=>{let s=this.rttAdjustedThroughput$.getValue()||0;return Math.abs(a-s)/s>=e.changeThreshold})).subscribe(this.rttAdjustedThroughput$))}destroy(){this.concurrentDownloads.clear(),this.subscription.unsubscribe()}trackXHR(e){let t=0,i=xe(),a=new Ag;switch(this.subscription.add(a),this.concurrentDownloads.add(e),e.readyState){case 4:break;case 3:case 2:a.add(Fs(e,"progress").pipe(xR()).subscribe(s=>{t=s.loaded,i=xe()}));break;case 1:case 0:a.add(Fs(e,"loadstart").subscribe(()=>{t=0,i=xe()}));break}a.add(Fs(e,"loadend").subscribe(s=>{if(e.status===200){let n=s.loaded,o=xe(),u=n-t,l=o-i;this.addRawSpeed(u,l,1)}this.concurrentDownloads.delete(e),a.unsubscribe()}))}trackStream(e,t=!1){let i=e.getReader();if(!i){e.cancel("Could not get reader");return}let a=0,s=xe(),n=0,o=xe(),u=c=>{this.concurrentDownloads.delete(e),i.releaseLock(),e.cancel(`Throughput Estimator error: ${c}`).catch(()=>{})},l=async({done:c,value:d})=>{if(c)!t&&this.addRawSpeed(a,xe()-s,1),this.concurrentDownloads.delete(e);else if(d){if(t){let p=xe();if(p-o>this.tuningConfig.lowLatency.continuesByteSequenceInterval||p-s>this.tuningConfig.lowLatency.maxLastEvaluationTimeout){let m=o-s;m&&this.addRawSpeed(n,m,1,t),n=d.byteLength,s=xe()}else n+=d.byteLength;o=xe()}else a+=d.byteLength,n+=d.byteLength,n>=this.tuningConfig.streamMinSampleSize&&xe()-o>=this.tuningConfig.streamMinSampleTime&&(this.addRawSpeed(n,xe()-o,this.concurrentDownloads.size),n=0,o=xe());await i?.read().then(l,u)}};this.concurrentDownloads.add(e),i?.read().then(l,u)}addRawSpeed(e,t,i=1,a=!1){if(r.sanityCheck(e,t,a)){let s=e*8/t;this.throughput.next(s*i)}}addRawThroughput(e){this.throughput.next(e)}addRawRtt(e){this.rtt.next(e)}static sanityCheck(e,t,i=!1){let a=e*8/t;return!(!a||!isFinite(a)||a>1e6||a<30||i&&e<1e4||!i&&e<10*1024||!i&&t<=20)}static load(e){let t=Hu.get(e);if(Us(t))return parseInt(t,10)??void 0}},Mg=ju;import{fillWithDefault as RR,VideoQuality as Cg}from"@vkontakte/videoplayer-shared";var Dg={configName:["core"],throughputEstimator:{type:"EmaAndMa",emaAlphaSlow:.2,emaAlphaFast:.7,emaAlpha:.45,basisTrendChangeCount:10,changeThreshold:.05,useBrowserEstimation:!0,rttPenaltyRequestSize:1*1024*1024,streamMinSampleSize:10*1024,streamMinSampleTime:300,deviationDepth:20,deviationFactor:.5,lowLatency:{continuesByteSequenceInterval:50,maxLastEvaluationTimeout:300}},autoTrackSelection:{bitrateFactorAtEmptyBuffer:1.8,bitrateAudioFactorAtEmptyBuffer:10,bitrateFactorAtFullBuffer:1.2,bitrateAudioFactorAtFullBuffer:7,minVideoAudioRatio:5,minAvailableThroughputAudioRatio:5,usePixelRatio:!0,pixelRatioMultiplier:1,limitByContainer:!0,containerSizeFactor:1.5,lazyQualitySwitch:!0,minBufferToSwitchUp:.4,considerPlaybackRate:!1,trackCooldownIncreaseQuality:3e3,trackCooldownDecreaseQuality:3e3,backgroundVideoQualityLimit:Cg.Q_4320P,activeVideoAreaThreshold:.1},droppedFramesChecker:{enabled:!1,percentLimit:.1,checkTime:1e3,countLimit:3,tickCountAfterQualityChange:5,qualityUpWaitingTime:5e3,minQualityBanLimit:Cg.Q_480P},dash:{forwardBufferTarget:6e4,forwardBufferTargetAuto:6e4,forwardBufferTargetManual:5*6e4,forwardBufferTargetPreload:5e3,maxSegmentDurationLeftToSelectNextSegment:3e3,minSafeBufferThreshold:.5,bufferPruningSafeZone:1e3,segmentRequestSize:1*1024*1024,representationSwitchForwardBufferGap:3e3,crashOnStallTimeout:25e3,crashOnStallTWithoutDataTimeout:5e3,enableSubSegmentBufferFeeding:!0,bufferEmptinessTolerance:100,useFetchPriorityHints:!0,accumulationBufferStallSize:{shortVideoDuration:2*6e4,shortVideoBufferStallSizeMs:0,longVideoBufferStallSizeMs:0},enableBaseUrlSupport:!0,maxSegmentRetryCount:5},dashCmafLive:{maxActiveLiveOffset:1e4,normalizedTargetMinBufferSize:6e4,normalizedLiveMinBufferSize:5e3,normalizedActualBufferOffset:1e4,offsetCalculationError:3e3,lowLatency:{maxTargetOffset:3e3,maxTargetOffsetDeviation:250,playbackCatchupSpeedup:.05,isActive:!1,delayEstimator:{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},downloadBackoff:{bufferThreshold:100,start:100,factor:2,max:3*1e3,random:.1},enableWakeLock:!0,enableTelemetryAtStart:!1,forceFormat:void 0,formatsToAvoid:[],disableChromecast:!1,chromecastReceiverId:void 0,useWebmBigRequest:!1,webmCodec:"vp9",androidPreferredFormat:"mpeg",preferCMAF:!1,preferWebRTC:!1,preferMultiStream:!1,preferHDR:!1,bigRequestMinInitSize:50*1024,bigRequestMinDataSize:1*1024*1024,stripRangeHeader:!0,flushShortLoopedBuffers:!0,insufficientBufferRuleMargin:1e4,dashSeekInSegmentDurationThreshold:3*60*1e3,dashSeekInSegmentAlwaysSeekDelta:1e4,endGapTolerance:300,stallIgnoreThreshold:33,gapWatchdogInterval:50,requestQuick:!1,useHlsJs:!0,useNativeHLSTextTracks:!1,useManagedMediaSource:!1,useNewPruneBufferStrategy:!1,useNewSwitchTo:!1,useSafariEndlessRequestBugfix:!0,isAudioDisabled:!1,autoplayOnlyInActiveTab:!0,dynamicImportTimeout:5e3,maxPlaybackTransitionInterval:2e4,providerErrorLimit:3,manifestRetryInterval:300,manifestRetryMaxInterval:1e4,manifestRetryMaxCount:10,audioVideoSyncRate:20,webrtc:{connectionRetryMaxNumber:3},spherical:{enabled:!1,fov:{x:135,y:76},rotationSpeed:45,maxYawAngle:175,rotationSpeedCorrection:10,degreeToPixelCorrection:5,speedFadeTime:2e3,speedFadeThreshold:50},useVolumeMultiplier:!1,ignoreAudioRendererError:!1,useEnableSubtitlesParam:!1},Bg=r=>({...RR(r,Dg),configName:[...r.configName??[],...Dg.configName]});import{assertNonNullable as qs,combine as kt,ErrorCategory as Hs,filter as ae,filterChanged as B,fromEvent as Wu,isNonNullable as VR,isNullable as OR,Logger as _R,map as C,mapTo as Ng,merge as wt,now as js,once as Je,Subject as U,Subscription as Fg,tap as Ug,ValueSubject as P,isHigher as NR,isInvariantQuality as qg,flattenObject as Rt,throttle as Qu,getTraceSubscriptionMethod as Hg,Tracer as FR}from"@vkontakte/videoplayer-shared";import{merge as $R,map as LR,filter as Vg,isNonNullable as MR}from"@vkontakte/videoplayer-shared";var Gu=({seekState:r,position$:e})=>$R(r.stateChangeEnded$.pipe(LR(({to:t})=>t.state==="none"?void 0:(t.position??NaN)/1e3),Vg(MR)),e.pipe(Vg(()=>r.getState().state==="none")));import{assertNonNullable as CR}from"@vkontakte/videoplayer-shared";var Og=r=>{let e=typeof r.container=="string"?document.getElementById(r.container):r.container;return CR(e,`Wrong container or containerId {${r.container}}`),e};import{filter as DR,once as BR}from"@vkontakte/videoplayer-shared";var _g=(r,e,t,i)=>{r!==void 0&&e.getState()===void 0&&e.getPrevState()===void 0&&t?.getValue().length===0?t.pipe(DR(a=>a.length>0),BR()).subscribe(a=>{a.find(i)&&e.startTransitionTo(r)}):(r===void 0||t?.getValue().find(i))&&e.startTransitionTo(r)};var Gs=class{constructor(e={configName:[]},t=FR.createRootTracer(!1)){this.subscription=new Fg;this.logger=new _R;this.abrLogger=this.logger.createComponentLog("ABR");this.isPlaybackStarted=!1;this.hasLiveOffsetByPaused=new P(!1);this.hasLiveOffsetByPausedTimer=0;this.wasSetStartedQuality=!1;this.desiredState={playbackState:new $("stopped"),seekState:new $({state:"none"}),volume:new $({volume:1,muted:!1}),videoTrack:new $(void 0),videoStream:new $(void 0),audioStream:new $(void 0),autoVideoTrackSwitching:new $(!0),autoVideoTrackLimits:new $({}),isLooped:new $(!1),playbackRate:new $(1),externalTextTracks:new $([]),internalTextTracks:new $([]),currentTextTrack:new $(void 0),textTrackCuesSettings:new $({}),cameraOrientation:new $({x:0,y:0})};this.info={playbackState$:new P("stopped"),position$:new P(0),duration$:new P(1/0),muted$:new P(!1),volume$:new P(1),availableVideoStreams$:new P([]),currentVideoStream$:new P(void 0),availableQualities$:new P([]),availableQualitiesFps$:new P({}),currentQuality$:new P(void 0),isAutoQualityEnabled$:new P(!0),autoQualityLimitingAvailable$:new P(!1),autoQualityLimits$:new P({}),availableAudioStreams$:new P([]),currentAudioStream$:new P(void 0),availableAudioTracks$:new P([]),isAudioAvailable$:new P(!0),currentPlaybackRate$:new P(1),currentBuffer$:new P({start:0,end:0}),isBuffering$:new P(!0),isStalled$:new P(!1),isEnded$:new P(!1),isLooped$:new P(!1),isLive$:new P(void 0),canChangePlaybackSpeed$:new P(void 0),atLiveEdge$:new P(void 0),atLiveDurationEdge$:new P(void 0),liveTime$:new P(void 0),liveBufferTime$:new P(void 0),currentFormat$:new P(void 0),availableTextTracks$:new P([]),currentTextTrack$:new P(void 0),throughputEstimation$:new P(void 0),rttEstimation$:new P(void 0),videoBitrate$:new P(void 0),hostname$:new P(void 0),httpConnectionType$:new P(void 0),httpConnectionReused$:new P(void 0),surface$:new P("none"),chromecastState$:new P("NOT_AVAILABLE"),chromecastDeviceName$:new P(void 0),intrinsicVideoSize$:new P(void 0),availableSources$:new P(void 0),is3DVideo$:new P(!1),currentVideoSegmentLength$:new P(0),currentAudioSegmentLength$:new P(0)};this.events={inited$:new U,ready$:new U,started$:new U,playing$:new U,paused$:new U,stopped$:new U,willStart$:new U,willResume$:new U,willPause$:new U,willStop$:new U,willDestruct$:new U,watchCoverageRecord$:new U,watchCoverageLive$:new U,managedError$:new U,fatalError$:new U,ended$:new U,looped$:new U,seeked$:new U,willSeek$:new U,autoplaySoundProhibited$:new U,firstBytes$:new U,loadedMetadata$:new U,firstFrame$:new U,canplay$:new U,log$:new U};this.experimental={element$:new P(void 0),tuningConfigName$:new P([]),enableDebugTelemetry$:new P(!1),dumpTelemetry:cm};if(this.initLogs(),this.tuning=Bg(e),this.tracer=t,e.initialPlaybackRate&&this.info.currentPlaybackRate$.next(e.initialPlaybackRate),this.experimental.tuningConfigName$.next(this.tuning.configName),this.chromecastInitializer=new xa({receiverApplicationId:e.chromecastReceiverId,isDisabled:e.disableChromecast,dependencies:{logger:this.logger}}),this.throughputEstimator=new Mg(this.tuning.throughputEstimator),this.initChromecastSubscription(),this.initDesiredStateSubscriptions(),Proxy&&Reflect)return new Proxy(this,{get:(i,a,s)=>{let n=Reflect.get(i,a,s);return typeof n!="function"?n:(...o)=>{try{return n.apply(i,o)}catch(u){let l=o.map(p=>JSON.stringify(p,(h,m)=>{let b=typeof m;return["number","string","boolean"].includes(b)?m:m===null?null:`<${b}>`})),c=`Player.${String(a)}`,d=`Exception calling ${c} (${l.join(", ")})`;throw this.events.fatalError$.next({id:c,category:Hs.WTF,message:d,thrown:u}),u}}}})}initVideo(e){this.config=e;let{container:t,...i}=e;return this.tracer.log("initVideo",Rt(i)),this.domContainer=Og(e),this.chromecastInitializer.contentId=e.meta?.videoId,this.providerContainer=new fa({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}),this.initProviderContainerSubscription(this.providerContainer),this.initStartingVideoTrack(this.providerContainer),this.initTracerSubscription(),this.providerContainer.init(),this.setMuted(this.tuning.isAudioDisabled),this.initDebugTelemetry(),this.initWakeLock(),this}destroy(){this.tracer.log("destroy"),window.clearTimeout(this.hasLiveOffsetByPausedTimer),this.events.willDestruct$.next(),this.stop(),this.providerContainer?.destroy(),this.throughputEstimator.destroy(),this.chromecastInitializer.destroy(),this.subscription.unsubscribe(),this.tracer.end()}prepare(){let e=this.desiredState.playbackState;return this.tracer.log("prepare",{currentPlayBackState:e.getState()}),e.getState()==="stopped"&&e.startTransitionTo("ready"),this}play(){let e=()=>{let t=this.desiredState.playbackState;this.tracer.log("play",{currentPlayBackState:t.getState()}),t.getState()!=="playing"&&t.startTransitionTo("playing")};return document.hidden&&this.tuning.autoplayOnlyInActiveTab&&!yr()?(this.tracer.log("request play from hidden tab"),Wu(document,"visibilitychange").pipe(Je()).subscribe(e)):e(),this}pause(){let e=this.desiredState.playbackState;return this.tracer.log("pause",{currentPlayBackState:e.getState()}),e.getState()!=="paused"&&e.startTransitionTo("paused"),this}stop(){let e=this.desiredState.playbackState;return this.tracer.log("stop",{currentPlayBackState:e.getState()}),e.getState()!=="stopped"&&e.startTransitionTo("stopped"),this}seekTime(e,t=!0){let i=this.info.duration$.getValue(),a=this.info.isLive$.getValue(),s=e;return e>=i&&!a&&(s=i-.1),this.tracer.log("seekTime",{duration:i,isLive:a,time:e,calculatedTime:s,forcePrecise:t}),this.events.willSeek$.next({from:this.getExactTime(),to:s}),this.desiredState.seekState.setState({state:"requested",position:s*1e3,forcePrecise:t}),this}seekPercent(e){let t=this.info.duration$.getValue();return this.tracer.log("seekPercent",{percent:e,duration:t}),isFinite(t)&&this.seekTime(Math.abs(t)*e,!1),this}setVolume(e){let t=this.tuning.isAudioDisabled||this.desiredState.volume.getState().muted;return this.tracer.log("setVolume",{volume:e,isAudioDisabled:this.tuning.isAudioDisabled,isDesiredStateMuted:this.desiredState.volume.getState().muted,chromecastState:this.chromecastInitializer.castState$.getValue(),muted:t}),this.chromecastInitializer.castState$.getValue()==="CONNECTED"?this.chromecastInitializer.setVolume(e):this.desiredState.volume.startTransitionTo({volume:e,muted:t}),this}setMuted(e){let t=this.tuning.isAudioDisabled||e;return this.tracer.log("setMuted",{isMuted:e,isAudioDisabled:this.tuning.isAudioDisabled,desiredStateVolume:this.desiredState.volume.getState().volume,chromecastState:this.chromecastInitializer.castState$.getValue(),muted:t}),this.chromecastInitializer.castState$.getValue()==="CONNECTED"?this.chromecastInitializer.setMuted(t):this.desiredState.volume.startTransitionTo({volume:this.desiredState.volume.getState().volume,muted:t}),this}setVideoStream(e){return this.desiredState.videoStream.startTransitionTo(e),this}setAudioStream(e){return this.desiredState.audioStream.startTransitionTo(e),this}setQuality(e){qs(this.providerContainer);let t=this.providerContainer.providerOutput.availableVideoTracks$.getValue();return 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(ae(i=>i.length>0),Je()).subscribe(i=>{this.setVideoTrackIdByQuality(i,e)}):this.explicitInitialQuality=e:t.length>0&&this.setVideoTrackIdByQuality(t,e),this}setAutoQuality(e){return this.tracer.log("setAutoQuality",{enable:e}),this.desiredState.autoVideoTrackSwitching.startTransitionTo(e),this}setAutoQualityLimits(e){return this.tracer.log("setAutoQualityLimits",Rt(e)),this.desiredState.autoVideoTrackLimits.startTransitionTo(e),this}setPlaybackRate(e){qs(this.providerContainer);let t=this.providerContainer?.providerOutput.element$.getValue();return this.tracer.log("setPlaybackRate",{playbackRate:e,isVideoElementAvailable:!!t}),t&&(this.desiredState.playbackRate.setState(e),t.playbackRate=e),this}setExternalTextTracks(e){return e.length&&this.tracer.log("setExternalTextTracks",Rt(e)),this.desiredState.externalTextTracks.startTransitionTo(e.map(t=>({type:"external",...t}))),this}selectTextTrack(e){return _g(e,this.desiredState.currentTextTrack,this.providerContainer?.providerOutput.availableTextTracks$,t=>t.id===e),this.tracer.log("selectTextTrack",{textTrackId:e}),this}setTextTrackCueSettings(e){return this.tracer.log("setTextTrackCueSettings",{...e}),this.desiredState.textTrackCuesSettings.startTransitionTo(e),this}setLooped(e){return this.tracer.log("setLooped",{isLooped:e}),this.desiredState.isLooped.startTransitionTo(e),this}toggleChromecast(){this.tracer.log("toggleChromecast"),this.chromecastInitializer.toggleConnection()}startCameraManualRotation(e,t){let i=this.getScene3D();return this.tracer.log("startCameraManualRotation",{isScene3DAvailable:!!i,mx:e,my:t}),i&&i.startCameraManualRotation(e,t),this}stopCameraManualRotation(e=!1){let t=this.getScene3D();return this.tracer.log("stopCameraManualRotation",{isScene3DAvailable:!!t,immediate:e}),t&&t.stopCameraManualRotation(e),this}moveCameraFocusPX(e,t){let i=this.getScene3D();if(this.tracer.log("moveCameraFocusPX",{isScene3DAvailable:!!i,dxpx:e,dypx:t}),i){let a=i.getCameraRotation(),s=i.pixelToDegree({x:e,y:t});this.desiredState.cameraOrientation.setState({x:a.x+s.x,y:a.y+s.y})}return this}holdCamera(){let e=this.getScene3D();return e&&e.holdCamera(),this}releaseCamera(){let e=this.getScene3D();return e&&e.releaseCamera(),this}getExactTime(){if(!this.providerContainer)return 0;let e=this.providerContainer.providerOutput.element$.getValue();if(OR(e))return this.info.position$.getValue();let t=this.desiredState.seekState.getState(),i=t.state==="none"?void 0:t.position;return VR(i)?i/1e3:e.currentTime}getAllLogs(){return this.logger.getAllLogs()}getScene3D(){let e=this.providerContainer?.current$.getValue();if(e?.provider?.scene3D)return e.provider.scene3D}setIntrinsicVideoSize(...e){let t={width:e.reduce((i,{width:a})=>i||a||0,0),height:e.reduce((i,{height:a})=>i||a||0,0)};t.width&&t.height&&this.info.intrinsicVideoSize$.next({width:t.width,height:t.height})}initDesiredStateSubscriptions(){this.subscription.add(wt(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(C(e=>e.to)).subscribe(this.info.playbackState$)).add(this.desiredState.isLooped.stateChangeEnded$.pipe(C(e=>e.to)).subscribe(this.info.isLooped$)).add(this.desiredState.playbackRate.stateChangeEnded$.pipe(C(e=>e.to)).subscribe(this.info.currentPlaybackRate$)).add(this.desiredState.autoVideoTrackSwitching.stateChangeEnded$.pipe(C(e=>e.to)).subscribe(this.info.isAutoQualityEnabled$)).add(this.desiredState.autoVideoTrackLimits.stateChangeEnded$.pipe(C(e=>e.to)).subscribe(this.info.autoQualityLimits$)),this.subscription.add(this.desiredState.playbackState.stateChangeStarted$.pipe(ae(({from:e})=>e==="stopped"),Je()).subscribe(()=>{this.initedAt=js(),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"paused":this.events.willPause$.next();break;case"playing":this.isPlaybackStarted?this.events.willResume$.next():this.events.willStart$.next();break;case"stopped":this.events.willStop$.next();break;default:}}))}initProviderContainerSubscription(e){this.subscription.add(e.providerOutput.willSeekEvent$.subscribe(()=>{let n=this.desiredState.seekState.getState();this.tracer.log("willSeekEvent",Rt(n)),n.state==="requested"?this.desiredState.seekState.setState({...n,state:"applying"}):this.events.managedError$.next({id:`WillSeekIn${n.state}`,category:Hs.WTF,message:"Received unexpeceted willSeek$"})})).add(e.providerOutput.soundProhibitedEvent$.pipe(Je()).subscribe(this.events.autoplaySoundProhibited$)).add(e.providerOutput.seekedEvent$.subscribe(()=>{let n=this.desiredState.seekState.getState();this.tracer.log("seekedEvent",Rt(n)),n.state==="applying"&&(this.desiredState.seekState.setState({state:"none"}),this.events.seeked$.next())})).add(e.current$.pipe(C(n=>n.type)).subscribe(this.info.currentFormat$)).add(e.current$.pipe(C(n=>n.destination),B()).subscribe(()=>this.isPlaybackStarted=!1)).add(e.providerOutput.availableVideoStreams$.subscribe(this.info.availableVideoStreams$)).add(e.providerOutput.availableVideoTracks$.pipe(C(n=>n.map(({quality:o})=>o).sort((o,u)=>qg(o)?1:qg(u)?-1:NR(u,o)?1:-1))).subscribe(this.info.availableQualities$)).add(e.providerOutput.availableVideoTracks$.subscribe(n=>{let o={};for(let u of n)u.fps&&(o[u.quality]=u.fps);this.info.availableQualitiesFps$.next(o)})).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(B()).subscribe(this.info.isAudioAvailable$)).add(e.providerOutput.currentVideoTrack$.subscribe(n=>{this.info.currentQuality$.next(n?.quality),this.info.videoBitrate$.next(n?.bitrate)})).add(e.providerOutput.currentVideoSegmentLength$.pipe(B((n,o)=>Math.round(n)===Math.round(o))).subscribe(this.info.currentVideoSegmentLength$)).add(e.providerOutput.currentAudioSegmentLength$.pipe(B((n,o)=>Math.round(n)===Math.round(o))).subscribe(this.info.currentAudioSegmentLength$)).add(e.providerOutput.hostname$.pipe(B()).subscribe(this.info.hostname$)).add(e.providerOutput.httpConnectionType$.pipe(B()).subscribe(this.info.httpConnectionType$)).add(e.providerOutput.httpConnectionReused$.pipe(B()).subscribe(this.info.httpConnectionReused$)).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(n=>{this.desiredState.autoVideoTrackLimits.setState(n??{})})).add(e.providerOutput.currentBuffer$.pipe(C(n=>n?{start:n.from,end:n.to}:{start:0,end:0})).subscribe(this.info.currentBuffer$)).add(e.providerOutput.duration$.subscribe(this.info.duration$)).add(e.providerOutput.isBuffering$.subscribe(this.info.isBuffering$)).add(e.providerOutput.isLive$.subscribe(this.info.isLive$)).add(e.providerOutput.canChangePlaybackSpeed$.subscribe(this.info.canChangePlaybackSpeed$)).add(e.providerOutput.liveTime$.subscribe(this.info.liveTime$)).add(e.providerOutput.liveBufferTime$.subscribe(this.info.liveBufferTime$)).add(kt({hasLiveOffsetByPaused:wt(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(C(n=>n.to),B(),C(n=>n==="paused")),isLowLatency:e.providerOutput.isLowLatency$}).subscribe(({hasLiveOffsetByPaused:n,isLowLatency:o})=>{if(window.clearTimeout(this.hasLiveOffsetByPausedTimer),n){this.hasLiveOffsetByPausedTimer=window.setTimeout(()=>{this.hasLiveOffsetByPaused.next(!0)},this.getActiveLiveDelay(o));return}this.hasLiveOffsetByPaused.next(!1)})).add(kt({atLiveEdge:kt({isLive:e.providerOutput.isLive$,isLowLatency:e.providerOutput.isLowLatency$,position:Gu({seekState:this.desiredState.seekState,position$:e.providerOutput.position$})}).pipe(C(({isLive:n,position:o,isLowLatency:u})=>{let l=this.getActiveLiveDelay(u);return n&&Math.abs(o)<l/1e3}),B(),Ug(n=>n&&this.setPlaybackRate(1))),hasPausedTimeoutCase:this.hasLiveOffsetByPaused}).pipe(C(({atLiveEdge:n,hasPausedTimeoutCase:o})=>n&&!o)).subscribe(this.info.atLiveEdge$)).add(kt({isLive:e.providerOutput.isLive$,position:e.providerOutput.position$,duration:e.providerOutput.duration$}).pipe(C(({isLive:n,position:o,duration:u})=>n&&(Math.abs(u)-Math.abs(o))*1e3<this.tuning.live.activeLiveDelay),B(),Ug(n=>n&&this.setPlaybackRate(1))).subscribe(this.info.atLiveDurationEdge$)).add(e.providerOutput.volume$.pipe(C(n=>n.muted),B()).subscribe(this.info.muted$)).add(e.providerOutput.volume$.pipe(C(n=>n.volume),B()).subscribe(this.info.volume$)).add(Gu({seekState:this.desiredState.seekState,position$:e.providerOutput.position$}).subscribe(this.info.position$)).add(wt(e.providerOutput.endedEvent$.pipe(Ng(!0)),e.providerOutput.seekedEvent$.pipe(Ng(!1))).pipe(B()).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.volumeMultiplierError$.subscribe(this.events.managedError$)).add(e.noAvailableProvidersError$.pipe(C(n=>({id:n?`No${n}`:"NoProviders",category:Hs.VIDEO_PIPELINE,message:n?`${n} was forced but failed or not available`:"No suitable providers or all providers failed"}))).subscribe(this.events.fatalError$)).add(e.providerOutput.element$.subscribe(this.experimental.element$)).add(e.providerOutput.firstBytesEvent$.pipe(Je(),C(n=>n??js()-this.initedAt)).subscribe(this.events.firstBytes$)).add(e.providerOutput.loadedMetadataEvent$.subscribe(this.events.loadedMetadata$)).add(e.providerOutput.firstFrameEvent$.pipe(Je(),C(()=>js()-this.initedAt)).subscribe(this.events.firstFrame$)).add(e.providerOutput.canplay$.pipe(Je(),C(()=>js()-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 P(!1);this.subscription.add(e.providerOutput.seekedEvent$.subscribe(()=>t.next(!1))).add(e.providerOutput.willSeekEvent$.subscribe(()=>t.next(!0)));let i=new P(!0);this.subscription.add(e.current$.subscribe(()=>i.next(!0))).add(this.desiredState.playbackState.stateChangeEnded$.pipe(ae(({to:n})=>n==="playing"),Je()).subscribe(()=>i.next(!1)));let a=0,s=wt(e.providerOutput.isBuffering$,t,i).pipe(C(()=>{let n=e.providerOutput.isBuffering$.getValue(),o=t.getValue()||i.getValue();return n&&!o}),B());this.subscription.add(s.subscribe(n=>{n?a=window.setTimeout(()=>this.info.isStalled$.next(!0),this.tuning.stallIgnoreThreshold):(window.clearTimeout(a),this.info.isStalled$.next(!1))})),this.subscription.add(wt(e.providerOutput.canplay$,e.providerOutput.firstFrameEvent$,e.providerOutput.firstBytesEvent$).subscribe(()=>{let n=e.providerOutput.element$.getValue();this.setIntrinsicVideoSize({width:n?.videoWidth,height:n?.videoHeight})})).add(e.providerOutput.currentVideoTrack$.subscribe(n=>{let o=e.providerOutput.element$.getValue();this.setIntrinsicVideoSize({width:n?.size?.width,height:n?.size?.height},{width:o?.videoWidth,height:o?.videoHeight})})).add(e.providerOutput.is3DVideo$.subscribe(this.info.is3DVideo$)),this.subscription.add(wt(e.providerOutput.inPiP$,e.providerOutput.inFullscreen$,e.providerOutput.element$,e.providerOutput.elementVisible$,this.chromecastInitializer.castState$).subscribe(()=>{let n=e.providerOutput.inPiP$.getValue(),o=e.providerOutput.inFullscreen$.getValue(),u=e.providerOutput.element$.getValue(),l=e.providerOutput.elementVisible$.getValue(),c=this.chromecastInitializer.castState$.getValue(),d;c==="CONNECTED"?d="second_screen":u?l?n?d="pip":o?d="fullscreen":d="inline":d="invisible":d="none",this.info.surface$.getValue()!==d&&this.info.surface$.next(d)}))}initChromecastSubscription(){this.subscription.add(this.chromecastInitializer.castState$.subscribe(this.info.chromecastState$)),this.subscription.add(this.chromecastInitializer.connection$.pipe(C(e=>e?.castDevice.friendlyName)).subscribe(this.info.chromecastDeviceName$)),this.subscription.add(this.chromecastInitializer.errorEvent$.subscribe(this.events.managedError$))}initStartingVideoTrack(e){let t=new Fg;this.subscription.add(t),this.subscription.add(e.current$.pipe(B((i,a)=>i.provider===a.provider)).subscribe(()=>{t.unsubscribe(),t.add(e.providerOutput.availableVideoTracks$.pipe(ae(i=>i.length>0),Je()).subscribe(i=>{this.setStartingVideoTrack(i)}))}))}setStartingVideoTrack(e){let t;this.wasSetStartedQuality=!0;let i=this.explicitInitialQuality??this.desiredState.videoTrack.getState()?.quality;i&&(t=e.find(({quality:a})=>a===i),t||this.setAutoQuality(!0)),t||(t=yt(e,{container:this.domContainer.getBoundingClientRect(),throughput:this.throughputEstimator.throughput$.getValue(),tuning:this.tuning.autoTrackSelection,limits:this.desiredState.autoVideoTrackLimits.getState(),playbackRate:this.info.currentPlaybackRate$.getValue(),forwardBufferHealth:0,abrLogger:this.abrLogger})),this.desiredState.videoTrack.startTransitionTo(t),this.info.currentQuality$.next(t.quality),this.info.videoBitrate$.next(t.bitrate)}initLogs(){this.subscription.add(wt(this.desiredState.videoTrack.stateChangeStarted$.pipe(C(e=>({transition:e,entity:"quality",type:"start"}))),this.desiredState.videoTrack.stateChangeEnded$.pipe(C(e=>({transition:e,entity:"quality",type:"end"}))),this.desiredState.autoVideoTrackSwitching.stateChangeStarted$.pipe(C(e=>({transition:e,entity:"autoQualityEnabled",type:"start"}))),this.desiredState.autoVideoTrackSwitching.stateChangeEnded$.pipe(C(e=>({transition:e,entity:"autoQualityEnabled",type:"end"}))),this.desiredState.seekState.stateChangeStarted$.pipe(C(e=>({transition:e,entity:"seekState",type:"start"}))),this.desiredState.seekState.stateChangeEnded$.pipe(C(e=>({transition:e,entity:"seekState",type:"end"}))),this.desiredState.playbackState.stateChangeStarted$.pipe(C(e=>({transition:e,entity:"playbackState",type:"start"}))),this.desiredState.playbackState.stateChangeEnded$.pipe(C(e=>({transition:e,entity:"playbackState",type:"end"})))).pipe(C(e=>({component:"desiredState",message:`[${e.entity} change] ${e.type}: ${JSON.stringify(e.transition)}`}))).subscribe(this.logger.log)),this.subscription.add(this.logger.log$.subscribe(this.events.log$))}initDebugTelemetry(){let e=this.providerContainer?.providerOutput;qs(this.providerContainer),qs(e),lm(),this.experimental.enableDebugTelemetry$.next(this.tuning.enableTelemetryAtStart),[this.experimental.enableDebugTelemetry$.subscribe(t=>um(t)),this.providerContainer.current$.subscribe(({type:t})=>fr("provider",t)),e.duration$.subscribe(t=>fr("duration",t)),e.availableVideoTracks$.pipe(ae(t=>!!t.length),Je()).subscribe(t=>fr("tracks",t)),this.events.fatalError$.subscribe(new re("fatalError")),this.events.managedError$.subscribe(new re("managedError")),e.position$.subscribe(new re("position")),e.currentVideoTrack$.pipe(C(t=>t?.quality)).subscribe(new re("quality")),this.info.currentBuffer$.subscribe(new re("buffer")),e.isBuffering$.subscribe(new re("isBuffering"))].forEach(t=>this.subscription.add(t)),fr("codecs",Om())}initTracerSubscription(){let e=Hg(this.tracer.log.bind(this.tracer)),t=Hg(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(B()).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(kt({currentQuality:this.info.currentQuality$,videoBitrate:this.info.videoBitrate$}).pipe(ae(({currentQuality:i,videoBitrate:a})=>!!i&&!!a),B((i,a)=>i.currentQuality===a.currentQuality)).subscribe(e("currentVideoTrack"))).add(this.info.currentVideoSegmentLength$.pipe(ae(i=>i>0),B()).subscribe(e("currentVideoSegmentLength"))).add(this.info.currentAudioSegmentLength$.pipe(ae(i=>i>0),B()).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(kt({currentBuffer:this.info.currentBuffer$.pipe(ae(i=>i.end>0),B((i,a)=>i.end===a.end&&i.start===a.start)),position:this.info.position$.pipe(B())}).pipe(Qu(1e3)).subscribe(e("currentBufferAndPosition"))).add(this.info.duration$.pipe(B()).subscribe(e("duration"))).add(this.info.isBuffering$.subscribe(e("isBuffering"))).add(this.info.isLive$.pipe(B()).subscribe(e("isLive"))).add(this.info.canChangePlaybackSpeed$.pipe(B()).subscribe(e("canChangePlaybackSpeed"))).add(kt({liveTime:this.info.liveTime$,liveBufferTime:this.info.liveBufferTime$,position:this.info.position$}).pipe(ae(({liveTime:i,liveBufferTime:a})=>!!i&&!!a),Qu(1e3)).subscribe(e("liveBufferAndPosition"))).add(this.info.atLiveEdge$.pipe(B(),ae(i=>i===!0)).subscribe(e("atLiveEdge"))).add(this.info.atLiveDurationEdge$.pipe(B(),ae(i=>i===!0)).subscribe(e("atLiveDurationEdge"))).add(this.info.muted$.pipe(B()).subscribe(e("muted"))).add(this.info.volume$.pipe(B()).subscribe(e("volume"))).add(this.info.isEnded$.pipe(B(),ae(i=>i===!0)).subscribe(e("isEnded"))).add(this.info.availableSources$.subscribe(e("availableSources"))).add(kt({throughputEstimation:this.info.throughputEstimation$,rtt:this.info.rttEstimation$}).pipe(ae(({throughputEstimation:i,rtt:a})=>!!i&&!!a),Qu(3e3)).subscribe(e("throughputEstimation"))).add(this.info.isStalled$.subscribe(e("isStalled"))).add(this.info.is3DVideo$.pipe(B(),ae(i=>i===!0)).subscribe(e("is3DVideo"))).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(){if(!window.navigator.wakeLock||!this.tuning.enableWakeLock)return;let e,t=()=>{e?.release(),e=void 0},i=async()=>{t(),e=await window.navigator.wakeLock.request("screen").catch(a=>{a instanceof DOMException&&a.name==="NotAllowedError"||this.events.managedError$.next({id:"WakeLock",category:Hs.DOM,message:String(a)})})};this.subscription.add(wt(Wu(document,"visibilitychange"),Wu(document,"fullscreenchange"),this.desiredState.playbackState.stateChangeEnded$).subscribe(()=>{let a=document.visibilityState==="visible",s=this.desiredState.playbackState.getState()==="playing",n=!!e&&!e?.released;a&&s?n||i():t()})).add(this.events.willDestruct$.subscribe(t))}setVideoTrackIdByQuality(e,t){let i=e.find(a=>a.quality===t);this.tracer.log("setVideoTrackIdByQuality",Rt({quality:t,availableTracks:Rt(e),track:Rt(i),isAutoQuality:!i})),i?this.desiredState.videoTrack.startTransitionTo(i):this.setAutoQuality(!0)}getActiveLiveDelay(e=!1){return e?this.tuning.live.lowLatencyActiveLiveDelay:this.tuning.live.activeLiveDelay}};import{Subscription as Yj,Observable as zj,Subject as Kj,ValueSubject as Jj,VideoQuality as Xj}from"@vkontakte/videoplayer-shared";var Zj=`@vkontakte/videoplayer-core@${Ku}`;export{Ia as ChromecastState,Qs as HttpConnectionType,zj as Observable,ne as PlaybackState,Gs as Player,Zj as SDK_VERSION,Kj as Subject,Yj as Subscription,Ys as Surface,Ku as VERSION,Jj as ValueSubject,ft as VideoFormat,Xj as VideoQuality};
|