@vkontakte/videoplayer-core 2.0.123-dev.08d4fb1a.0 → 2.0.123-dev.111b6d7e.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 +12 -12
- package/es2015.esm.js +12 -12
- package/es2018.cjs.js +12 -12
- package/es2018.esm.js +12 -12
- package/esnext.cjs.js +3 -3
- package/esnext.esm.js +3 -3
- package/evergreen.esm.js +3 -3
- package/package.json +2 -2
package/esnext.esm.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @vkontakte/videoplayer-core v2.0.123-dev.
|
|
3
|
-
* Tue, 14 Jan 2025 10:
|
|
2
|
+
* @vkontakte/videoplayer-core v2.0.123-dev.111b6d7e.0
|
|
3
|
+
* Tue, 14 Jan 2025 10:01:01 GMT
|
|
4
4
|
* https://st.mycdn.me/static/vkontakte-videoplayer/2-0-123/doc/
|
|
5
5
|
*/
|
|
6
6
|
var dy=Object.create;var Cl=Object.defineProperty;var py=Object.getOwnPropertyDescriptor;var hy=Object.getOwnPropertyNames;var my=Object.getPrototypeOf,fy=Object.prototype.hasOwnProperty;var h=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports);var by=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of hy(e))!fy.call(i,a)&&a!==t&&Cl(i,a,{get:()=>e[a],enumerable:!(r=py(e,a))||r.enumerable});return i};var M=(i,e,t)=>(t=i!=null?dy(my(i)):{},by(e||!i||!i.__esModule?Cl(t,"default",{value:i,enumerable:!0}):t,i));var Y=h((gn,Ol)=>{"use strict";var Jr=function(i){return i&&i.Math===Math&&i};Ol.exports=Jr(typeof globalThis=="object"&&globalThis)||Jr(typeof window=="object"&&window)||Jr(typeof self=="object"&&self)||Jr(typeof global=="object"&&global)||Jr(typeof gn=="object"&&gn)||function(){return this}()||Function("return this")()});var ie=h((GD,Bl)=>{"use strict";Bl.exports=function(i){try{return!!i()}catch{return!0}}});var Zr=h((QD,_l)=>{"use strict";var gy=ie();_l.exports=!gy(function(){var i=function(){}.bind();return typeof i!="function"||i.hasOwnProperty("prototype")})});var Sn=h((WD,Ul)=>{"use strict";var Sy=Zr(),ql=Function.prototype,Nl=ql.apply,Fl=ql.call;Ul.exports=typeof Reflect=="object"&&Reflect.apply||(Sy?Fl.bind(Nl):function(){return Fl.apply(Nl,arguments)})});var J=h((YD,Gl)=>{"use strict";var Hl=Zr(),jl=Function.prototype,vn=jl.call,vy=Hl&&jl.bind.bind(vn,vn);Gl.exports=Hl?vy:function(i){return function(){return vn.apply(i,arguments)}}});var qt=h((zD,Wl)=>{"use strict";var Ql=J(),yy=Ql({}.toString),Ty=Ql("".slice);Wl.exports=function(i){return Ty(yy(i),8,-1)}});var yn=h((KD,Yl)=>{"use strict";var Iy=qt(),Ey=J();Yl.exports=function(i){if(Iy(i)==="Function")return Ey(i)}});var W=h((XD,zl)=>{"use strict";var Tn=typeof document=="object"&&document.all;zl.exports=typeof Tn>"u"&&Tn!==void 0?function(i){return typeof i=="function"||i===Tn}:function(i){return typeof i=="function"}});var xe=h((JD,Kl)=>{"use strict";var xy=ie();Kl.exports=!xy(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7})});var Pe=h((ZD,Xl)=>{"use strict";var Py=Zr(),Fa=Function.prototype.call;Xl.exports=Py?Fa.bind(Fa):function(){return Fa.apply(Fa,arguments)}});var In=h(ec=>{"use strict";var Jl={}.propertyIsEnumerable,Zl=Object.getOwnPropertyDescriptor,ky=Zl&&!Jl.call({1:2},1);ec.f=ky?function(e){var t=Zl(this,e);return!!t&&t.enumerable}:Jl});var ei=h((tC,tc)=>{"use strict";tc.exports=function(i,e){return{enumerable:!(i&1),configurable:!(i&2),writable:!(i&4),value:e}}});var ic=h((rC,rc)=>{"use strict";var wy=J(),Ay=ie(),Ry=qt(),En=Object,$y=wy("".split);rc.exports=Ay(function(){return!En("z").propertyIsEnumerable(0)})?function(i){return Ry(i)==="String"?$y(i,""):En(i)}:En});var fr=h((iC,ac)=>{"use strict";ac.exports=function(i){return i==null}});var Tt=h((aC,sc)=>{"use strict";var Ly=fr(),My=TypeError;sc.exports=function(i){if(Ly(i))throw new My("Can't call method on "+i);return i}});var Ut=h((sC,nc)=>{"use strict";var Dy=ic(),Cy=Tt();nc.exports=function(i){return Dy(Cy(i))}});var ke=h((nC,oc)=>{"use strict";var Vy=W();oc.exports=function(i){return typeof i=="object"?i!==null:Vy(i)}});var br=h((oC,uc)=>{"use strict";uc.exports={}});var ut=h((uC,cc)=>{"use strict";var xn=br(),Pn=Y(),Oy=W(),lc=function(i){return Oy(i)?i:void 0};cc.exports=function(i,e){return arguments.length<2?lc(xn[i])||lc(Pn[i]):xn[i]&&xn[i][e]||Pn[i]&&Pn[i][e]}});var ti=h((lC,dc)=>{"use strict";var By=J();dc.exports=By({}.isPrototypeOf)});var Ht=h((cC,mc)=>{"use strict";var _y=Y(),pc=_y.navigator,hc=pc&&pc.userAgent;mc.exports=hc?String(hc):""});var wn=h((dC,yc)=>{"use strict";var vc=Y(),kn=Ht(),fc=vc.process,bc=vc.Deno,gc=fc&&fc.versions||bc&&bc.version,Sc=gc&&gc.v8,Fe,qa;Sc&&(Fe=Sc.split("."),qa=Fe[0]>0&&Fe[0]<4?1:+(Fe[0]+Fe[1]));!qa&&kn&&(Fe=kn.match(/Edge\/(\d+)/),(!Fe||Fe[1]>=74)&&(Fe=kn.match(/Chrome\/(\d+)/),Fe&&(qa=+Fe[1])));yc.exports=qa});var An=h((pC,Ic)=>{"use strict";var Tc=wn(),Ny=ie(),Fy=Y(),qy=Fy.String;Ic.exports=!!Object.getOwnPropertySymbols&&!Ny(function(){var i=Symbol("symbol detection");return!qy(i)||!(Object(i)instanceof Symbol)||!Symbol.sham&&Tc&&Tc<41})});var Rn=h((hC,Ec)=>{"use strict";var Uy=An();Ec.exports=Uy&&!Symbol.sham&&typeof Symbol.iterator=="symbol"});var $n=h((mC,xc)=>{"use strict";var Hy=ut(),jy=W(),Gy=ti(),Qy=Rn(),Wy=Object;xc.exports=Qy?function(i){return typeof i=="symbol"}:function(i){var e=Hy("Symbol");return jy(e)&&Gy(e.prototype,Wy(i))}});var ri=h((fC,Pc)=>{"use strict";var Yy=String;Pc.exports=function(i){try{return Yy(i)}catch{return"Object"}}});var Je=h((bC,kc)=>{"use strict";var zy=W(),Ky=ri(),Xy=TypeError;kc.exports=function(i){if(zy(i))return i;throw new Xy(Ky(i)+" is not a function")}});var ii=h((gC,wc)=>{"use strict";var Jy=Je(),Zy=fr();wc.exports=function(i,e){var t=i[e];return Zy(t)?void 0:Jy(t)}});var Rc=h((SC,Ac)=>{"use strict";var Ln=Pe(),Mn=W(),Dn=ke(),eT=TypeError;Ac.exports=function(i,e){var t,r;if(e==="string"&&Mn(t=i.toString)&&!Dn(r=Ln(t,i))||Mn(t=i.valueOf)&&!Dn(r=Ln(t,i))||e!=="string"&&Mn(t=i.toString)&&!Dn(r=Ln(t,i)))return r;throw new eT("Can't convert object to primitive value")}});var qe=h((vC,$c)=>{"use strict";$c.exports=!0});var Dc=h((yC,Mc)=>{"use strict";var Lc=Y(),tT=Object.defineProperty;Mc.exports=function(i,e){try{tT(Lc,i,{value:e,configurable:!0,writable:!0})}catch{Lc[i]=e}return e}});var ai=h((TC,Oc)=>{"use strict";var rT=qe(),iT=Y(),aT=Dc(),Cc="__core-js_shared__",Vc=Oc.exports=iT[Cc]||aT(Cc,{});(Vc.versions||(Vc.versions=[])).push({version:"3.38.0",mode:rT?"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 Cn=h((IC,_c)=>{"use strict";var Bc=ai();_c.exports=function(i,e){return Bc[i]||(Bc[i]=e||{})}});var gr=h((EC,Nc)=>{"use strict";var sT=Tt(),nT=Object;Nc.exports=function(i){return nT(sT(i))}});var Ue=h((xC,Fc)=>{"use strict";var oT=J(),uT=gr(),lT=oT({}.hasOwnProperty);Fc.exports=Object.hasOwn||function(e,t){return lT(uT(e),t)}});var Vn=h((PC,qc)=>{"use strict";var cT=J(),dT=0,pT=Math.random(),hT=cT(1 .toString);qc.exports=function(i){return"Symbol("+(i===void 0?"":i)+")_"+hT(++dT+pT,36)}});var ae=h((kC,Hc)=>{"use strict";var mT=Y(),fT=Cn(),Uc=Ue(),bT=Vn(),gT=An(),ST=Rn(),Sr=mT.Symbol,On=fT("wks"),vT=ST?Sr.for||Sr:Sr&&Sr.withoutSetter||bT;Hc.exports=function(i){return Uc(On,i)||(On[i]=gT&&Uc(Sr,i)?Sr[i]:vT("Symbol."+i)),On[i]}});var Wc=h((wC,Qc)=>{"use strict";var yT=Pe(),jc=ke(),Gc=$n(),TT=ii(),IT=Rc(),ET=ae(),xT=TypeError,PT=ET("toPrimitive");Qc.exports=function(i,e){if(!jc(i)||Gc(i))return i;var t=TT(i,PT),r;if(t){if(e===void 0&&(e="default"),r=yT(t,i,e),!jc(r)||Gc(r))return r;throw new xT("Can't convert object to primitive value")}return e===void 0&&(e="number"),IT(i,e)}});var Bn=h((AC,Yc)=>{"use strict";var kT=Wc(),wT=$n();Yc.exports=function(i){var e=kT(i,"string");return wT(e)?e:e+""}});var Ua=h((RC,Kc)=>{"use strict";var AT=Y(),zc=ke(),_n=AT.document,RT=zc(_n)&&zc(_n.createElement);Kc.exports=function(i){return RT?_n.createElement(i):{}}});var Nn=h(($C,Xc)=>{"use strict";var $T=xe(),LT=ie(),MT=Ua();Xc.exports=!$T&&!LT(function(){return Object.defineProperty(MT("div"),"a",{get:function(){return 7}}).a!==7})});var ed=h(Zc=>{"use strict";var DT=xe(),CT=Pe(),VT=In(),OT=ei(),BT=Ut(),_T=Bn(),NT=Ue(),FT=Nn(),Jc=Object.getOwnPropertyDescriptor;Zc.f=DT?Jc:function(e,t){if(e=BT(e),t=_T(t),FT)try{return Jc(e,t)}catch{}if(NT(e,t))return OT(!CT(VT.f,e,t),e[t])}});var Fn=h((MC,td)=>{"use strict";var qT=ie(),UT=W(),HT=/#|\.prototype\./,si=function(i,e){var t=GT[jT(i)];return t===WT?!0:t===QT?!1:UT(e)?qT(e):!!e},jT=si.normalize=function(i){return String(i).replace(HT,".").toLowerCase()},GT=si.data={},QT=si.NATIVE="N",WT=si.POLYFILL="P";td.exports=si});var vr=h((DC,id)=>{"use strict";var rd=yn(),YT=Je(),zT=Zr(),KT=rd(rd.bind);id.exports=function(i,e){return YT(i),e===void 0?i:zT?KT(i,e):function(){return i.apply(e,arguments)}}});var qn=h((CC,ad)=>{"use strict";var XT=xe(),JT=ie();ad.exports=XT&&JT(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42})});var Ze=h((VC,sd)=>{"use strict";var ZT=ke(),eI=String,tI=TypeError;sd.exports=function(i){if(ZT(i))return i;throw new tI(eI(i)+" is not an object")}});var jt=h(od=>{"use strict";var rI=xe(),iI=Nn(),aI=qn(),Ha=Ze(),nd=Bn(),sI=TypeError,Un=Object.defineProperty,nI=Object.getOwnPropertyDescriptor,Hn="enumerable",jn="configurable",Gn="writable";od.f=rI?aI?function(e,t,r){if(Ha(e),t=nd(t),Ha(r),typeof e=="function"&&t==="prototype"&&"value"in r&&Gn in r&&!r[Gn]){var a=nI(e,t);a&&a[Gn]&&(e[t]=r.value,r={configurable:jn in r?r[jn]:a[jn],enumerable:Hn in r?r[Hn]:a[Hn],writable:!1})}return Un(e,t,r)}:Un:function(e,t,r){if(Ha(e),t=nd(t),Ha(r),iI)try{return Un(e,t,r)}catch{}if("get"in r||"set"in r)throw new sI("Accessors not supported");return"value"in r&&(e[t]=r.value),e}});var yr=h((BC,ud)=>{"use strict";var oI=xe(),uI=jt(),lI=ei();ud.exports=oI?function(i,e,t){return uI.f(i,e,lI(1,t))}:function(i,e,t){return i[e]=t,i}});var K=h((_C,cd)=>{"use strict";var ni=Y(),cI=Sn(),dI=yn(),pI=W(),hI=ed().f,mI=Fn(),Tr=br(),fI=vr(),Ir=yr(),ld=Ue();ai();var bI=function(i){var e=function(t,r,a){if(this instanceof e){switch(arguments.length){case 0:return new i;case 1:return new i(t);case 2:return new i(t,r)}return new i(t,r,a)}return cI(i,this,arguments)};return e.prototype=i.prototype,e};cd.exports=function(i,e){var t=i.target,r=i.global,a=i.stat,s=i.proto,n=r?ni:a?ni[t]:ni[t]&&ni[t].prototype,o=r?Tr:Tr[t]||Ir(Tr,t,{})[t],u=o.prototype,l,d,c,p,m,f,b,g,S;for(p in e)l=mI(r?p:t+(a?".":"#")+p,i.forced),d=!l&&n&&ld(n,p),f=o[p],d&&(i.dontCallGetSet?(S=hI(n,p),b=S&&S.value):b=n[p]),m=d&&b?b:e[p],!(!l&&!s&&typeof f==typeof m)&&(i.bind&&d?g=fI(m,ni):i.wrap&&d?g=bI(m):s&&pI(m)?g=dI(m):g=m,(i.sham||m&&m.sham||f&&f.sham)&&Ir(g,"sham",!0),Ir(o,p,g),s&&(c=t+"Prototype",ld(Tr,c)||Ir(Tr,c,{}),Ir(Tr[c],p,m),i.real&&u&&(l||!u[p])&&Ir(u,p,m)))}});var pd=h((NC,dd)=>{"use strict";var gI=Math.ceil,SI=Math.floor;dd.exports=Math.trunc||function(e){var t=+e;return(t>0?SI:gI)(t)}});var oi=h((FC,hd)=>{"use strict";var vI=pd();hd.exports=function(i){var e=+i;return e!==e||e===0?0:vI(e)}});var fd=h((qC,md)=>{"use strict";var yI=oi(),TI=Math.max,II=Math.min;md.exports=function(i,e){var t=yI(i);return t<0?TI(t+e,0):II(t,e)}});var Qn=h((UC,bd)=>{"use strict";var EI=oi(),xI=Math.min;bd.exports=function(i){var e=EI(i);return e>0?xI(e,9007199254740991):0}});var Er=h((HC,gd)=>{"use strict";var PI=Qn();gd.exports=function(i){return PI(i.length)}});var Wn=h((jC,vd)=>{"use strict";var kI=Ut(),wI=fd(),AI=Er(),Sd=function(i){return function(e,t,r){var a=kI(e),s=AI(a);if(s===0)return!i&&-1;var n=wI(r,s),o;if(i&&t!==t){for(;s>n;)if(o=a[n++],o!==o)return!0}else for(;s>n;n++)if((i||n in a)&&a[n]===t)return i||n||0;return!i&&-1}};vd.exports={includes:Sd(!0),indexOf:Sd(!1)}});var ui=h((GC,yd)=>{"use strict";yd.exports=function(){}});var Td=h(()=>{"use strict";var RI=K(),$I=Wn().includes,LI=ie(),MI=ui(),DI=LI(function(){return!Array(1).includes()});RI({target:"Array",proto:!0,forced:DI},{includes:function(e){return $I(this,e,arguments.length>1?arguments[1]:void 0)}});MI("includes")});var It=h((YC,Id)=>{"use strict";var CI=ut();Id.exports=CI});var xd=h((zC,Ed)=>{"use strict";Td();var VI=It();Ed.exports=VI("Array","includes")});var kd=h((KC,Pd)=>{"use strict";var OI=xd();Pd.exports=OI});var He=h((XC,wd)=>{"use strict";var BI=kd();wd.exports=BI});var Qa=h((l0,Vd)=>{"use strict";var GI=Cn(),QI=Vn(),Cd=GI("keys");Vd.exports=function(i){return Cd[i]||(Cd[i]=QI(i))}});var Bd=h((c0,Od)=>{"use strict";var WI=ie();Od.exports=!WI(function(){function i(){}return i.prototype.constructor=null,Object.getPrototypeOf(new i)!==i.prototype})});var Wa=h((d0,Nd)=>{"use strict";var YI=Ue(),zI=W(),KI=gr(),XI=Qa(),JI=Bd(),_d=XI("IE_PROTO"),Kn=Object,ZI=Kn.prototype;Nd.exports=JI?Kn.getPrototypeOf:function(i){var e=KI(i);if(YI(e,_d))return e[_d];var t=e.constructor;return zI(t)&&e instanceof t?t.prototype:e instanceof Kn?ZI:null}});var Ya=h((p0,Fd)=>{"use strict";Fd.exports={}});var Hd=h((h0,Ud)=>{"use strict";var eE=J(),Xn=Ue(),tE=Ut(),rE=Wn().indexOf,iE=Ya(),qd=eE([].push);Ud.exports=function(i,e){var t=tE(i),r=0,a=[],s;for(s in t)!Xn(iE,s)&&Xn(t,s)&&qd(a,s);for(;e.length>r;)Xn(t,s=e[r++])&&(~rE(a,s)||qd(a,s));return a}});var Jn=h((m0,jd)=>{"use strict";jd.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]});var Zn=h((f0,Gd)=>{"use strict";var aE=Hd(),sE=Jn();Gd.exports=Object.keys||function(e){return aE(e,sE)}});var eo=h((b0,Kd)=>{"use strict";var Wd=xe(),nE=ie(),Yd=J(),oE=Wa(),uE=Zn(),lE=Ut(),cE=In().f,zd=Yd(cE),dE=Yd([].push),pE=Wd&&nE(function(){var i=Object.create(null);return i[2]=2,!zd(i,2)}),Qd=function(i){return function(e){for(var t=lE(e),r=uE(t),a=pE&&oE(t)===null,s=r.length,n=0,o=[],u;s>n;)u=r[n++],(!Wd||(a?u in t:zd(t,u)))&&dE(o,i?[u,t[u]]:t[u]);return o}};Kd.exports={entries:Qd(!0),values:Qd(!1)}});var Xd=h(()=>{"use strict";var hE=K(),mE=eo().entries;hE({target:"Object",stat:!0},{entries:function(e){return mE(e)}})});var Zd=h((v0,Jd)=>{"use strict";Xd();var fE=br();Jd.exports=fE.Object.entries});var tp=h((y0,ep)=>{"use strict";var bE=Zd();ep.exports=bE});var xr=h((T0,rp)=>{"use strict";var gE=tp();rp.exports=gE});var Gt=h((I0,ip)=>{"use strict";ip.exports={}});var np=h((E0,sp)=>{"use strict";var SE=Y(),vE=W(),ap=SE.WeakMap;sp.exports=vE(ap)&&/native code/.test(String(ap))});var ao=h((x0,lp)=>{"use strict";var yE=np(),up=Y(),TE=ke(),IE=yr(),to=Ue(),ro=ai(),EE=Qa(),xE=Ya(),op="Object already initialized",io=up.TypeError,PE=up.WeakMap,za,li,Ka,kE=function(i){return Ka(i)?li(i):za(i,{})},wE=function(i){return function(e){var t;if(!TE(e)||(t=li(e)).type!==i)throw new io("Incompatible receiver, "+i+" required");return t}};yE||ro.state?(je=ro.state||(ro.state=new PE),je.get=je.get,je.has=je.has,je.set=je.set,za=function(i,e){if(je.has(i))throw new io(op);return e.facade=i,je.set(i,e),e},li=function(i){return je.get(i)||{}},Ka=function(i){return je.has(i)}):(Qt=EE("state"),xE[Qt]=!0,za=function(i,e){if(to(i,Qt))throw new io(op);return e.facade=i,IE(i,Qt,e),e},li=function(i){return to(i,Qt)?i[Qt]:{}},Ka=function(i){return to(i,Qt)});var je,Qt;lp.exports={set:za,get:li,has:Ka,enforce:kE,getterFor:wE}});var oo=h((P0,dp)=>{"use strict";var so=xe(),AE=Ue(),cp=Function.prototype,RE=so&&Object.getOwnPropertyDescriptor,no=AE(cp,"name"),$E=no&&function(){}.name==="something",LE=no&&(!so||so&&RE(cp,"name").configurable);dp.exports={EXISTS:no,PROPER:$E,CONFIGURABLE:LE}});var hp=h(pp=>{"use strict";var ME=xe(),DE=qn(),CE=jt(),VE=Ze(),OE=Ut(),BE=Zn();pp.f=ME&&!DE?Object.defineProperties:function(e,t){VE(e);for(var r=OE(t),a=BE(t),s=a.length,n=0,o;s>n;)CE.f(e,o=a[n++],r[o]);return e}});var uo=h((w0,mp)=>{"use strict";var _E=ut();mp.exports=_E("document","documentElement")});var ho=h((A0,Tp)=>{"use strict";var NE=Ze(),FE=hp(),fp=Jn(),qE=Ya(),UE=uo(),HE=Ua(),jE=Qa(),bp=">",gp="<",co="prototype",po="script",vp=jE("IE_PROTO"),lo=function(){},yp=function(i){return gp+po+bp+i+gp+"/"+po+bp},Sp=function(i){i.write(yp("")),i.close();var e=i.parentWindow.Object;return i=null,e},GE=function(){var i=HE("iframe"),e="java"+po+":",t;return i.style.display="none",UE.appendChild(i),i.src=String(e),t=i.contentWindow.document,t.open(),t.write(yp("document.F=Object")),t.close(),t.F},Xa,Ja=function(){try{Xa=new ActiveXObject("htmlfile")}catch{}Ja=typeof document<"u"?document.domain&&Xa?Sp(Xa):GE():Sp(Xa);for(var i=fp.length;i--;)delete Ja[co][fp[i]];return Ja()};qE[vp]=!0;Tp.exports=Object.create||function(e,t){var r;return e!==null?(lo[co]=NE(e),r=new lo,lo[co]=null,r[vp]=e):r=Ja(),t===void 0?r:FE.f(r,t)}});var Pr=h((R0,Ip)=>{"use strict";var QE=yr();Ip.exports=function(i,e,t,r){return r&&r.enumerable?i[e]=t:QE(i,e,t),i}});var go=h(($0,Pp)=>{"use strict";var WE=ie(),YE=W(),zE=ke(),KE=ho(),Ep=Wa(),XE=Pr(),JE=ae(),ZE=qe(),bo=JE("iterator"),xp=!1,lt,mo,fo;[].keys&&(fo=[].keys(),"next"in fo?(mo=Ep(Ep(fo)),mo!==Object.prototype&&(lt=mo)):xp=!0);var ex=!zE(lt)||WE(function(){var i={};return lt[bo].call(i)!==i});ex?lt={}:ZE&&(lt=KE(lt));YE(lt[bo])||XE(lt,bo,function(){return this});Pp.exports={IteratorPrototype:lt,BUGGY_SAFARI_ITERATORS:xp}});var Za=h((L0,wp)=>{"use strict";var tx=ae(),rx=tx("toStringTag"),kp={};kp[rx]="z";wp.exports=String(kp)==="[object z]"});var ci=h((M0,Ap)=>{"use strict";var ix=Za(),ax=W(),es=qt(),sx=ae(),nx=sx("toStringTag"),ox=Object,ux=es(function(){return arguments}())==="Arguments",lx=function(i,e){try{return i[e]}catch{}};Ap.exports=ix?es:function(i){var e,t,r;return i===void 0?"Undefined":i===null?"Null":typeof(t=lx(e=ox(i),nx))=="string"?t:ux?es(e):(r=es(e))==="Object"&&ax(e.callee)?"Arguments":r}});var $p=h((D0,Rp)=>{"use strict";var cx=Za(),dx=ci();Rp.exports=cx?{}.toString:function(){return"[object "+dx(this)+"]"}});var di=h((C0,Mp)=>{"use strict";var px=Za(),hx=jt().f,mx=yr(),fx=Ue(),bx=$p(),gx=ae(),Lp=gx("toStringTag");Mp.exports=function(i,e,t,r){var a=t?i:i&&i.prototype;a&&(fx(a,Lp)||hx(a,Lp,{configurable:!0,value:e}),r&&!px&&mx(a,"toString",bx))}});var Cp=h((V0,Dp)=>{"use strict";var Sx=go().IteratorPrototype,vx=ho(),yx=ei(),Tx=di(),Ix=Gt(),Ex=function(){return this};Dp.exports=function(i,e,t,r){var a=e+" Iterator";return i.prototype=vx(Sx,{next:yx(+!r,t)}),Tx(i,a,!1,!0),Ix[a]=Ex,i}});var Op=h((O0,Vp)=>{"use strict";var xx=J(),Px=Je();Vp.exports=function(i,e,t){try{return xx(Px(Object.getOwnPropertyDescriptor(i,e)[t]))}catch{}}});var _p=h((B0,Bp)=>{"use strict";var kx=ke();Bp.exports=function(i){return kx(i)||i===null}});var Fp=h((_0,Np)=>{"use strict";var wx=_p(),Ax=String,Rx=TypeError;Np.exports=function(i){if(wx(i))return i;throw new Rx("Can't set "+Ax(i)+" as a prototype")}});var So=h((N0,qp)=>{"use strict";var $x=Op(),Lx=ke(),Mx=Tt(),Dx=Fp();qp.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var i=!1,e={},t;try{t=$x(Object.prototype,"__proto__","set"),t(e,[]),i=e instanceof Array}catch{}return function(a,s){return Mx(a),Dx(s),Lx(a)&&(i?t(a,s):a.__proto__=s),a}}():void 0)});var Jp=h((F0,Xp)=>{"use strict";var Cx=K(),Vx=Pe(),ts=qe(),zp=oo(),Ox=W(),Bx=Cp(),Up=Wa(),Hp=So(),_x=di(),Nx=yr(),vo=Pr(),Fx=ae(),jp=Gt(),Kp=go(),qx=zp.PROPER,Ux=zp.CONFIGURABLE,Gp=Kp.IteratorPrototype,rs=Kp.BUGGY_SAFARI_ITERATORS,pi=Fx("iterator"),Qp="keys",hi="values",Wp="entries",Yp=function(){return this};Xp.exports=function(i,e,t,r,a,s,n){Bx(t,e,r);var o=function(S){if(S===a&&p)return p;if(!rs&&S&&S in d)return d[S];switch(S){case Qp:return function(){return new t(this,S)};case hi:return function(){return new t(this,S)};case Wp:return function(){return new t(this,S)}}return function(){return new t(this)}},u=e+" Iterator",l=!1,d=i.prototype,c=d[pi]||d["@@iterator"]||a&&d[a],p=!rs&&c||o(a),m=e==="Array"&&d.entries||c,f,b,g;if(m&&(f=Up(m.call(new i)),f!==Object.prototype&&f.next&&(!ts&&Up(f)!==Gp&&(Hp?Hp(f,Gp):Ox(f[pi])||vo(f,pi,Yp)),_x(f,u,!0,!0),ts&&(jp[u]=Yp))),qx&&a===hi&&c&&c.name!==hi&&(!ts&&Ux?Nx(d,"name",hi):(l=!0,p=function(){return Vx(c,this)})),a)if(b={values:o(hi),keys:s?p:o(Qp),entries:o(Wp)},n)for(g in b)(rs||l||!(g in d))&&vo(d,g,b[g]);else Cx({target:e,proto:!0,forced:rs||l},b);return(!ts||n)&&d[pi]!==p&&vo(d,pi,p,{name:a}),jp[e]=p,b}});var eh=h((q0,Zp)=>{"use strict";Zp.exports=function(i,e){return{value:i,done:e}}});var To=h((U0,sh)=>{"use strict";var Hx=Ut(),yo=ui(),th=Gt(),ih=ao(),jx=jt().f,Gx=Jp(),is=eh(),Qx=qe(),Wx=xe(),ah="Array Iterator",Yx=ih.set,zx=ih.getterFor(ah);sh.exports=Gx(Array,"Array",function(i,e){Yx(this,{type:ah,target:Hx(i),index:0,kind:e})},function(){var i=zx(this),e=i.target,t=i.index++;if(!e||t>=e.length)return i.target=void 0,is(void 0,!0);switch(i.kind){case"keys":return is(t,!1);case"values":return is(e[t],!1)}return is([t,e[t]],!1)},"values");var rh=th.Arguments=th.Array;yo("keys");yo("values");yo("entries");if(!Qx&&Wx&&rh.name!=="values")try{jx(rh,"name",{value:"values"})}catch{}});var oh=h((H0,nh)=>{"use strict";var Kx=ae(),Xx=Gt(),Jx=Kx("iterator"),Zx=Array.prototype;nh.exports=function(i){return i!==void 0&&(Xx.Array===i||Zx[Jx]===i)}});var Io=h((j0,lh)=>{"use strict";var eP=ci(),uh=ii(),tP=fr(),rP=Gt(),iP=ae(),aP=iP("iterator");lh.exports=function(i){if(!tP(i))return uh(i,aP)||uh(i,"@@iterator")||rP[eP(i)]}});var dh=h((G0,ch)=>{"use strict";var sP=Pe(),nP=Je(),oP=Ze(),uP=ri(),lP=Io(),cP=TypeError;ch.exports=function(i,e){var t=arguments.length<2?lP(i):e;if(nP(t))return oP(sP(t,i));throw new cP(uP(i)+" is not iterable")}});var mh=h((Q0,hh)=>{"use strict";var dP=Pe(),ph=Ze(),pP=ii();hh.exports=function(i,e,t){var r,a;ph(i);try{if(r=pP(i,"return"),!r){if(e==="throw")throw t;return t}r=dP(r,i)}catch(s){a=!0,r=s}if(e==="throw")throw t;if(a)throw r;return ph(r),t}});var ss=h((W0,Sh)=>{"use strict";var hP=vr(),mP=Pe(),fP=Ze(),bP=ri(),gP=oh(),SP=Er(),fh=ti(),vP=dh(),yP=Io(),bh=mh(),TP=TypeError,as=function(i,e){this.stopped=i,this.result=e},gh=as.prototype;Sh.exports=function(i,e,t){var r=t&&t.that,a=!!(t&&t.AS_ENTRIES),s=!!(t&&t.IS_RECORD),n=!!(t&&t.IS_ITERATOR),o=!!(t&&t.INTERRUPTED),u=hP(e,r),l,d,c,p,m,f,b,g=function(k){return l&&bh(l,"normal",k),new as(!0,k)},S=function(k){return a?(fP(k),o?u(k[0],k[1],g):u(k[0],k[1])):o?u(k,g):u(k)};if(s)l=i.iterator;else if(n)l=i;else{if(d=yP(i),!d)throw new TP(bP(i)+" is not iterable");if(gP(d)){for(c=0,p=SP(i);p>c;c++)if(m=S(i[c]),m&&fh(gh,m))return m;return new as(!1)}l=vP(i,d)}for(f=s?i.next:l.next;!(b=mP(f,l)).done;){try{m=S(b.value)}catch(k){bh(l,"throw",k)}if(typeof m=="object"&&m&&fh(gh,m))return m}return new as(!1)}});var yh=h((Y0,vh)=>{"use strict";var IP=xe(),EP=jt(),xP=ei();vh.exports=function(i,e,t){IP?EP.f(i,e,xP(0,t)):i[e]=t}});var Th=h(()=>{"use strict";var PP=K(),kP=ss(),wP=yh();PP({target:"Object",stat:!0},{fromEntries:function(e){var t={};return kP(e,function(r,a){wP(t,r,a)},{AS_ENTRIES:!0}),t}})});var Eh=h((X0,Ih)=>{"use strict";To();Th();var AP=br();Ih.exports=AP.Object.fromEntries});var Ph=h((J0,xh)=>{"use strict";xh.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 wh=h(()=>{"use strict";To();var RP=Ph(),$P=Y(),LP=di(),kh=Gt();for(ns in RP)LP($P[ns],ns),kh[ns]=kh.Array;var ns});var Rh=h((tV,Ah)=>{"use strict";var MP=Eh();wh();Ah.exports=MP});var Eo=h((rV,$h)=>{"use strict";var DP=Rh();$h.exports=DP});var Lh=h(()=>{"use strict"});var xo=h((sV,Mh)=>{"use strict";var mi=Y(),CP=Ht(),VP=qt(),os=function(i){return CP.slice(0,i.length)===i};Mh.exports=function(){return os("Bun/")?"BUN":os("Cloudflare-Workers")?"CLOUDFLARE":os("Deno/")?"DENO":os("Node.js/")?"NODE":mi.Bun&&typeof Bun.version=="string"?"BUN":mi.Deno&&typeof Deno.version=="object"?"DENO":VP(mi.process)==="process"?"NODE":mi.window&&mi.document?"BROWSER":"REST"}()});var us=h((nV,Dh)=>{"use strict";var OP=xo();Dh.exports=OP==="NODE"});var Vh=h((oV,Ch)=>{"use strict";var BP=jt();Ch.exports=function(i,e,t){return BP.f(i,e,t)}});var _h=h((uV,Bh)=>{"use strict";var _P=ut(),NP=Vh(),FP=ae(),qP=xe(),Oh=FP("species");Bh.exports=function(i){var e=_P(i);qP&&e&&!e[Oh]&&NP(e,Oh,{configurable:!0,get:function(){return this}})}});var Fh=h((lV,Nh)=>{"use strict";var UP=ti(),HP=TypeError;Nh.exports=function(i,e){if(UP(e,i))return i;throw new HP("Incorrect invocation")}});var ko=h((cV,qh)=>{"use strict";var jP=J(),GP=W(),Po=ai(),QP=jP(Function.toString);GP(Po.inspectSource)||(Po.inspectSource=function(i){return QP(i)});qh.exports=Po.inspectSource});var Ao=h((dV,Qh)=>{"use strict";var WP=J(),YP=ie(),Uh=W(),zP=ci(),KP=ut(),XP=ko(),Hh=function(){},jh=KP("Reflect","construct"),wo=/^\s*(?:class|function)\b/,JP=WP(wo.exec),ZP=!wo.test(Hh),fi=function(e){if(!Uh(e))return!1;try{return jh(Hh,[],e),!0}catch{return!1}},Gh=function(e){if(!Uh(e))return!1;switch(zP(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return ZP||!!JP(wo,XP(e))}catch{return!0}};Gh.sham=!0;Qh.exports=!jh||YP(function(){var i;return fi(fi.call)||!fi(Object)||!fi(function(){i=!0})||i})?Gh:fi});var Yh=h((pV,Wh)=>{"use strict";var ek=Ao(),tk=ri(),rk=TypeError;Wh.exports=function(i){if(ek(i))return i;throw new rk(tk(i)+" is not a constructor")}});var Ro=h((hV,Kh)=>{"use strict";var zh=Ze(),ik=Yh(),ak=fr(),sk=ae(),nk=sk("species");Kh.exports=function(i,e){var t=zh(i).constructor,r;return t===void 0||ak(r=zh(t)[nk])?e:ik(r)}});var Jh=h((mV,Xh)=>{"use strict";var ok=J();Xh.exports=ok([].slice)});var em=h((fV,Zh)=>{"use strict";var uk=TypeError;Zh.exports=function(i,e){if(i<e)throw new uk("Not enough arguments");return i}});var $o=h((bV,tm)=>{"use strict";var lk=Ht();tm.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(lk)});var No=h((gV,cm)=>{"use strict";var we=Y(),ck=Sn(),dk=vr(),rm=W(),pk=Ue(),lm=ie(),im=uo(),hk=Jh(),am=Ua(),mk=em(),fk=$o(),bk=us(),Oo=we.setImmediate,Bo=we.clearImmediate,gk=we.process,Lo=we.Dispatch,Sk=we.Function,sm=we.MessageChannel,vk=we.String,Mo=0,bi={},nm="onreadystatechange",gi,Wt,Do,Co;lm(function(){gi=we.location});var _o=function(i){if(pk(bi,i)){var e=bi[i];delete bi[i],e()}},Vo=function(i){return function(){_o(i)}},om=function(i){_o(i.data)},um=function(i){we.postMessage(vk(i),gi.protocol+"//"+gi.host)};(!Oo||!Bo)&&(Oo=function(e){mk(arguments.length,1);var t=rm(e)?e:Sk(e),r=hk(arguments,1);return bi[++Mo]=function(){ck(t,void 0,r)},Wt(Mo),Mo},Bo=function(e){delete bi[e]},bk?Wt=function(i){gk.nextTick(Vo(i))}:Lo&&Lo.now?Wt=function(i){Lo.now(Vo(i))}:sm&&!fk?(Do=new sm,Co=Do.port2,Do.port1.onmessage=om,Wt=dk(Co.postMessage,Co)):we.addEventListener&&rm(we.postMessage)&&!we.importScripts&&gi&&gi.protocol!=="file:"&&!lm(um)?(Wt=um,we.addEventListener("message",om,!1)):nm in am("script")?Wt=function(i){im.appendChild(am("script"))[nm]=function(){im.removeChild(this),_o(i)}}:Wt=function(i){setTimeout(Vo(i),0)});cm.exports={set:Oo,clear:Bo}});var hm=h((SV,pm)=>{"use strict";var dm=Y(),yk=xe(),Tk=Object.getOwnPropertyDescriptor;pm.exports=function(i){if(!yk)return dm[i];var e=Tk(dm,i);return e&&e.value}});var Fo=h((vV,fm)=>{"use strict";var mm=function(){this.head=null,this.tail=null};mm.prototype={add:function(i){var e={item:i,next:null},t=this.tail;t?t.next=e:this.head=e,this.tail=e},get:function(){var i=this.head;if(i){var e=this.head=i.next;return e===null&&(this.tail=null),i.item}}};fm.exports=mm});var gm=h((yV,bm)=>{"use strict";var Ik=Ht();bm.exports=/ipad|iphone|ipod/i.test(Ik)&&typeof Pebble<"u"});var vm=h((TV,Sm)=>{"use strict";var Ek=Ht();Sm.exports=/web0s(?!.*chrome)/i.test(Ek)});var km=h((IV,Pm)=>{"use strict";var wr=Y(),xk=hm(),ym=vr(),qo=No().set,Pk=Fo(),kk=$o(),wk=gm(),Ak=vm(),Uo=us(),Tm=wr.MutationObserver||wr.WebKitMutationObserver,Im=wr.document,Em=wr.process,ls=wr.Promise,Go=xk("queueMicrotask"),kr,Ho,jo,cs,xm;Go||(Si=new Pk,vi=function(){var i,e;for(Uo&&(i=Em.domain)&&i.exit();e=Si.get();)try{e()}catch(t){throw Si.head&&kr(),t}i&&i.enter()},!kk&&!Uo&&!Ak&&Tm&&Im?(Ho=!0,jo=Im.createTextNode(""),new Tm(vi).observe(jo,{characterData:!0}),kr=function(){jo.data=Ho=!Ho}):!wk&&ls&&ls.resolve?(cs=ls.resolve(void 0),cs.constructor=ls,xm=ym(cs.then,cs),kr=function(){xm(vi)}):Uo?kr=function(){Em.nextTick(vi)}:(qo=ym(qo,wr),kr=function(){qo(vi)}),Go=function(i){Si.head||kr(),Si.add(i)});var Si,vi;Pm.exports=Go});var Am=h((EV,wm)=>{"use strict";wm.exports=function(i,e){try{arguments.length===1?console.error(i):console.error(i,e)}catch{}}});var ds=h((xV,Rm)=>{"use strict";Rm.exports=function(i){try{return{error:!1,value:i()}}catch(e){return{error:!0,value:e}}}});var Yt=h((PV,$m)=>{"use strict";var Rk=Y();$m.exports=Rk.Promise});var Ar=h((kV,Cm)=>{"use strict";var $k=Y(),yi=Yt(),Lk=W(),Mk=Fn(),Dk=ko(),Ck=ae(),Lm=xo(),Vk=qe(),Qo=wn(),Mm=yi&&yi.prototype,Ok=Ck("species"),Wo=!1,Dm=Lk($k.PromiseRejectionEvent),Bk=Mk("Promise",function(){var i=Dk(yi),e=i!==String(yi);if(!e&&Qo===66||Vk&&!(Mm.catch&&Mm.finally))return!0;if(!Qo||Qo<51||!/native code/.test(i)){var t=new yi(function(s){s(1)}),r=function(s){s(function(){},function(){})},a=t.constructor={};if(a[Ok]=r,Wo=t.then(function(){})instanceof r,!Wo)return!0}return!e&&(Lm==="BROWSER"||Lm==="DENO")&&!Dm});Cm.exports={CONSTRUCTOR:Bk,REJECTION_EVENT:Dm,SUBCLASSING:Wo}});var Rr=h((wV,Om)=>{"use strict";var Vm=Je(),_k=TypeError,Nk=function(i){var e,t;this.promise=new i(function(r,a){if(e!==void 0||t!==void 0)throw new _k("Bad Promise constructor");e=r,t=a}),this.resolve=Vm(e),this.reject=Vm(t)};Om.exports.f=function(i){return new Nk(i)}});var tf=h(()=>{"use strict";var Fk=K(),qk=qe(),fs=us(),Et=Y(),Dr=Pe(),Bm=Pr(),_m=So(),Uk=di(),Hk=_h(),jk=Je(),ms=W(),Gk=ke(),Qk=Fh(),Wk=Ro(),Hm=No().set,Jo=km(),Yk=Am(),zk=ds(),Kk=Fo(),jm=ao(),bs=Yt(),Zo=Ar(),Gm=Rr(),gs="Promise",Qm=Zo.CONSTRUCTOR,Xk=Zo.REJECTION_EVENT,Jk=Zo.SUBCLASSING,Yo=jm.getterFor(gs),Zk=jm.set,$r=bs&&bs.prototype,zt=bs,ps=$r,Wm=Et.TypeError,zo=Et.document,eu=Et.process,Ko=Gm.f,ew=Ko,tw=!!(zo&&zo.createEvent&&Et.dispatchEvent),Ym="unhandledrejection",rw="rejectionhandled",Nm=0,zm=1,iw=2,tu=1,Km=2,hs,Fm,aw,qm,Xm=function(i){var e;return Gk(i)&&ms(e=i.then)?e:!1},Jm=function(i,e){var t=e.value,r=e.state===zm,a=r?i.ok:i.fail,s=i.resolve,n=i.reject,o=i.domain,u,l,d;try{a?(r||(e.rejection===Km&&nw(e),e.rejection=tu),a===!0?u=t:(o&&o.enter(),u=a(t),o&&(o.exit(),d=!0)),u===i.promise?n(new Wm("Promise-chain cycle")):(l=Xm(u))?Dr(l,u,s,n):s(u)):n(t)}catch(c){o&&!d&&o.exit(),n(c)}},Zm=function(i,e){i.notified||(i.notified=!0,Jo(function(){for(var t=i.reactions,r;r=t.get();)Jm(r,i);i.notified=!1,e&&!i.rejection&&sw(i)}))},ef=function(i,e,t){var r,a;tw?(r=zo.createEvent("Event"),r.promise=e,r.reason=t,r.initEvent(i,!1,!0),Et.dispatchEvent(r)):r={promise:e,reason:t},!Xk&&(a=Et["on"+i])?a(r):i===Ym&&Yk("Unhandled promise rejection",t)},sw=function(i){Dr(Hm,Et,function(){var e=i.facade,t=i.value,r=Um(i),a;if(r&&(a=zk(function(){fs?eu.emit("unhandledRejection",t,e):ef(Ym,e,t)}),i.rejection=fs||Um(i)?Km:tu,a.error))throw a.value})},Um=function(i){return i.rejection!==tu&&!i.parent},nw=function(i){Dr(Hm,Et,function(){var e=i.facade;fs?eu.emit("rejectionHandled",e):ef(rw,e,i.value)})},Lr=function(i,e,t){return function(r){i(e,r,t)}},Mr=function(i,e,t){i.done||(i.done=!0,t&&(i=t),i.value=e,i.state=iw,Zm(i,!0))},Xo=function(i,e,t){if(!i.done){i.done=!0,t&&(i=t);try{if(i.facade===e)throw new Wm("Promise can't be resolved itself");var r=Xm(e);r?Jo(function(){var a={done:!1};try{Dr(r,e,Lr(Xo,a,i),Lr(Mr,a,i))}catch(s){Mr(a,s,i)}}):(i.value=e,i.state=zm,Zm(i,!1))}catch(a){Mr({done:!1},a,i)}}};if(Qm&&(zt=function(e){Qk(this,ps),jk(e),Dr(hs,this);var t=Yo(this);try{e(Lr(Xo,t),Lr(Mr,t))}catch(r){Mr(t,r)}},ps=zt.prototype,hs=function(e){Zk(this,{type:gs,done:!1,notified:!1,parent:!1,reactions:new Kk,rejection:!1,state:Nm,value:void 0})},hs.prototype=Bm(ps,"then",function(e,t){var r=Yo(this),a=Ko(Wk(this,zt));return r.parent=!0,a.ok=ms(e)?e:!0,a.fail=ms(t)&&t,a.domain=fs?eu.domain:void 0,r.state===Nm?r.reactions.add(a):Jo(function(){Jm(a,r)}),a.promise}),Fm=function(){var i=new hs,e=Yo(i);this.promise=i,this.resolve=Lr(Xo,e),this.reject=Lr(Mr,e)},Gm.f=Ko=function(i){return i===zt||i===aw?new Fm(i):ew(i)},!qk&&ms(bs)&&$r!==Object.prototype)){qm=$r.then,Jk||Bm($r,"then",function(e,t){var r=this;return new zt(function(a,s){Dr(qm,r,a,s)}).then(e,t)},{unsafe:!0});try{delete $r.constructor}catch{}_m&&_m($r,ps)}Fk({global:!0,constructor:!0,wrap:!0,forced:Qm},{Promise:zt});Uk(zt,gs,!1,!0);Hk(gs)});var of=h(($V,nf)=>{"use strict";var ow=ae(),af=ow("iterator"),sf=!1;try{rf=0,ru={next:function(){return{done:!!rf++}},return:function(){sf=!0}},ru[af]=function(){return this},Array.from(ru,function(){throw 2})}catch{}var rf,ru;nf.exports=function(i,e){try{if(!e&&!sf)return!1}catch{return!1}var t=!1;try{var r={};r[af]=function(){return{next:function(){return{done:t=!0}}}},i(r)}catch{}return t}});var iu=h((LV,uf)=>{"use strict";var uw=Yt(),lw=of(),cw=Ar().CONSTRUCTOR;uf.exports=cw||!lw(function(i){uw.all(i).then(void 0,function(){})})});var lf=h(()=>{"use strict";var dw=K(),pw=Pe(),hw=Je(),mw=Rr(),fw=ds(),bw=ss(),gw=iu();dw({target:"Promise",stat:!0,forced:gw},{all:function(e){var t=this,r=mw.f(t),a=r.resolve,s=r.reject,n=fw(function(){var o=hw(t.resolve),u=[],l=0,d=1;bw(e,function(c){var p=l++,m=!1;d++,pw(o,t,c).then(function(f){m||(m=!0,u[p]=f,--d||a(u))},s)}),--d||a(u)});return n.error&&s(n.value),r.promise}})});var df=h(()=>{"use strict";var Sw=K(),vw=qe(),yw=Ar().CONSTRUCTOR,su=Yt(),Tw=ut(),Iw=W(),Ew=Pr(),cf=su&&su.prototype;Sw({target:"Promise",proto:!0,forced:yw,real:!0},{catch:function(i){return this.then(void 0,i)}});!vw&&Iw(su)&&(au=Tw("Promise").prototype.catch,cf.catch!==au&&Ew(cf,"catch",au,{unsafe:!0}));var au});var pf=h(()=>{"use strict";var xw=K(),Pw=Pe(),kw=Je(),ww=Rr(),Aw=ds(),Rw=ss(),$w=iu();xw({target:"Promise",stat:!0,forced:$w},{race:function(e){var t=this,r=ww.f(t),a=r.reject,s=Aw(function(){var n=kw(t.resolve);Rw(e,function(o){Pw(n,t,o).then(r.resolve,a)})});return s.error&&a(s.value),r.promise}})});var hf=h(()=>{"use strict";var Lw=K(),Mw=Rr(),Dw=Ar().CONSTRUCTOR;Lw({target:"Promise",stat:!0,forced:Dw},{reject:function(e){var t=Mw.f(this),r=t.reject;return r(e),t.promise}})});var nu=h((FV,mf)=>{"use strict";var Cw=Ze(),Vw=ke(),Ow=Rr();mf.exports=function(i,e){if(Cw(i),Vw(e)&&e.constructor===i)return e;var t=Ow.f(i),r=t.resolve;return r(e),t.promise}});var gf=h(()=>{"use strict";var Bw=K(),_w=ut(),ff=qe(),Nw=Yt(),bf=Ar().CONSTRUCTOR,Fw=nu(),qw=_w("Promise"),Uw=ff&&!bf;Bw({target:"Promise",stat:!0,forced:ff||bf},{resolve:function(e){return Fw(Uw&&this===qw?Nw:this,e)}})});var Sf=h(()=>{"use strict";tf();lf();df();pf();hf();gf()});var If=h(()=>{"use strict";var Hw=K(),jw=qe(),Ss=Yt(),Gw=ie(),yf=ut(),Tf=W(),Qw=Ro(),vf=nu(),Ww=Pr(),uu=Ss&&Ss.prototype,Yw=!!Ss&&Gw(function(){uu.finally.call({then:function(){}},function(){})});Hw({target:"Promise",proto:!0,real:!0,forced:Yw},{finally:function(i){var e=Qw(this,yf("Promise")),t=Tf(i);return this.then(t?function(r){return vf(e,i()).then(function(){return r})}:i,t?function(r){return vf(e,i()).then(function(){throw r})}:i)}});!jw&&Tf(Ss)&&(ou=yf("Promise").prototype.finally,uu.finally!==ou&&Ww(uu,"finally",ou,{unsafe:!0}));var ou});var xf=h((WV,Ef)=>{"use strict";Lh();Sf();If();var zw=It();Ef.exports=zw("Promise","finally")});var kf=h((YV,Pf)=>{"use strict";var Kw=xf();Pf.exports=Kw});var vs=h((zV,wf)=>{"use strict";var Xw=kf();wf.exports=Xw});var Ff=h(()=>{"use strict";var dA=K(),pA=eo().values;dA({target:"Object",stat:!0},{values:function(e){return pA(e)}})});var Uf=h((DO,qf)=>{"use strict";Ff();var hA=br();qf.exports=hA.Object.values});var jf=h((CO,Hf)=>{"use strict";var mA=Uf();Hf.exports=mA});var Vr=h((VO,Gf)=>{"use strict";var fA=jf();Gf.exports=fA});var ab=h(()=>{"use strict";var LA=K(),MA=gr(),DA=Er(),CA=oi(),VA=ui();LA({target:"Array",proto:!0},{at:function(e){var t=MA(this),r=DA(t),a=CA(e),s=a>=0?a:r+a;return s<0||s>=r?void 0:t[s]}});VA("at")});var nb=h((lB,sb)=>{"use strict";ab();var OA=It();sb.exports=OA("Array","at")});var ub=h((cB,ob)=>{"use strict";var BA=nb();ob.exports=BA});var Br=h((dB,lb)=>{"use strict";var _A=ub();lb.exports=_A});var Lu=h((B_,Nb)=>{"use strict";var vR=qt();Nb.exports=Array.isArray||function(e){return vR(e)==="Array"}});var qb=h((__,Fb)=>{"use strict";var yR=TypeError,TR=9007199254740991;Fb.exports=function(i){if(i>TR)throw yR("Maximum allowed index exceeded");return i}});var jb=h((N_,Hb)=>{"use strict";var IR=Lu(),ER=Er(),xR=qb(),PR=vr(),Ub=function(i,e,t,r,a,s,n,o){for(var u=a,l=0,d=n?PR(n,o):!1,c,p;l<r;)l in t&&(c=d?d(t[l],l,e):t[l],s>0&&IR(c)?(p=ER(c),u=Ub(i,e,c,p,u,s-1)-1):(xR(u+1),i[u]=c),u++),l++;return u};Hb.exports=Ub});var Yb=h((F_,Wb)=>{"use strict";var Gb=Lu(),kR=Ao(),wR=ke(),AR=ae(),RR=AR("species"),Qb=Array;Wb.exports=function(i){var e;return Gb(i)&&(e=i.constructor,kR(e)&&(e===Qb||Gb(e.prototype))?e=void 0:wR(e)&&(e=e[RR],e===null&&(e=void 0))),e===void 0?Qb:e}});var Kb=h((q_,zb)=>{"use strict";var $R=Yb();zb.exports=function(i,e){return new($R(i))(e===0?0:e)}});var Xb=h(()=>{"use strict";var LR=K(),MR=jb(),DR=Je(),CR=gr(),VR=Er(),OR=Kb();LR({target:"Array",proto:!0},{flatMap:function(e){var t=CR(this),r=VR(t),a;return DR(e),a=OR(t,0),a.length=MR(a,t,t,r,0,1,e,arguments.length>1?arguments[1]:void 0),a}})});var Jb=h(()=>{"use strict";var BR=ui();BR("flatMap")});var eg=h((Q_,Zb)=>{"use strict";Xb();Jb();var _R=It();Zb.exports=_R("Array","flatMap")});var rg=h((W_,tg)=>{"use strict";var NR=eg();tg.exports=NR});var Mu=h((Y_,ig)=>{"use strict";var FR=rg();ig.exports=FR});var Vi=h((aN,hg)=>{"use strict";var YR=ci(),zR=String;hg.exports=function(i){if(YR(i)==="Symbol")throw new TypeError("Cannot convert a Symbol value to a string");return zR(i)}});var Cu=h((sN,mg)=>{"use strict";mg.exports=`
|
|
7
|
-
\v\f\r \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF`});var gg=h((nN,bg)=>{"use strict";var KR=J(),XR=Tt(),JR=Vi(),Ou=Cu(),fg=KR("".replace),ZR=RegExp("^["+Ou+"]+"),e$=RegExp("(^|[^"+Ou+"])["+Ou+"]+$"),Vu=function(i){return function(e){var t=JR(XR(e));return i&1&&(t=fg(t,ZR,"")),i&2&&(t=fg(t,e$,"$1")),t}};bg.exports={start:Vu(1),end:Vu(2),trim:Vu(3)}});var Tg=h((oN,yg)=>{"use strict";var t$=oo().PROPER,r$=ie(),Sg=Cu(),vg="\u200B\x85\u180E";yg.exports=function(i){return r$(function(){return!!Sg[i]()||vg[i]()!==vg||t$&&Sg[i].name!==i})}});var Bu=h((uN,Ig)=>{"use strict";var i$=gg().start,a$=Tg();Ig.exports=a$("trimStart")?function(){return i$(this)}:"".trimStart});var xg=h(()=>{"use strict";var s$=K(),Eg=Bu();s$({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==Eg},{trimLeft:Eg})});var kg=h(()=>{"use strict";xg();var n$=K(),Pg=Bu();n$({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==Pg},{trimStart:Pg})});var Ag=h((hN,wg)=>{"use strict";kg();var o$=It();wg.exports=o$("String","trimLeft")});var $g=h((mN,Rg)=>{"use strict";var u$=Ag();Rg.exports=u$});var Mg=h((fN,Lg)=>{"use strict";var l$=$g();Lg.exports=l$});var Yg=h(()=>{"use strict"});var zg=h(()=>{"use strict"});var Xg=h((Nq,Kg)=>{"use strict";var M$=ke(),D$=qt(),C$=ae(),V$=C$("match");Kg.exports=function(i){var e;return M$(i)&&((e=i[V$])!==void 0?!!e:D$(i)==="RegExp")}});var Zg=h((Fq,Jg)=>{"use strict";var O$=Ze();Jg.exports=function(){var i=O$(this),e="";return i.hasIndices&&(e+="d"),i.global&&(e+="g"),i.ignoreCase&&(e+="i"),i.multiline&&(e+="m"),i.dotAll&&(e+="s"),i.unicode&&(e+="u"),i.unicodeSets&&(e+="v"),i.sticky&&(e+="y"),e}});var rS=h((qq,tS)=>{"use strict";var B$=Pe(),_$=Ue(),N$=ti(),F$=Zg(),eS=RegExp.prototype;tS.exports=function(i){var e=i.flags;return e===void 0&&!("flags"in eS)&&!_$(i,"flags")&&N$(eS,i)?B$(F$,i):e}});var aS=h((Uq,iS)=>{"use strict";var Qu=J(),q$=gr(),U$=Math.floor,ju=Qu("".charAt),H$=Qu("".replace),Gu=Qu("".slice),j$=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,G$=/\$([$&'`]|\d{1,2})/g;iS.exports=function(i,e,t,r,a,s){var n=t+i.length,o=r.length,u=G$;return a!==void 0&&(a=q$(a),u=j$),H$(s,u,function(l,d){var c;switch(ju(d,0)){case"$":return"$";case"&":return i;case"`":return Gu(e,0,t);case"'":return Gu(e,n);case"<":c=a[Gu(d,1,-1)];break;default:var p=+d;if(p===0)return l;if(p>o){var m=U$(p/10);return m===0?l:m<=o?r[m-1]===void 0?ju(d,1):r[m-1]+ju(d,1):l}c=r[p-1]}return c===void 0?"":c})}});var oS=h(()=>{"use strict";var Q$=K(),W$=Pe(),Yu=J(),sS=Tt(),Y$=W(),z$=fr(),K$=Xg(),Hr=Vi(),X$=ii(),J$=rS(),Z$=aS(),eL=ae(),tL=qe(),rL=eL("replace"),iL=TypeError,Wu=Yu("".indexOf),aL=Yu("".replace),nS=Yu("".slice),sL=Math.max;Q$({target:"String",proto:!0},{replaceAll:function(e,t){var r=sS(this),a,s,n,o,u,l,d,c,p,m,f=0,b="";if(!z$(e)){if(a=K$(e),a&&(s=Hr(sS(J$(e))),!~Wu(s,"g")))throw new iL("`.replaceAll` does not allow non-global regexes");if(n=X$(e,rL),n)return W$(n,e,r,t);if(tL&&a)return aL(Hr(r),e,t)}for(o=Hr(r),u=Hr(e),l=Y$(t),l||(t=Hr(t)),d=u.length,c=sL(1,d),p=Wu(o,u);p!==-1;)m=l?Hr(t(u,p,o)):Z$(u,o,p,[],void 0,t),b+=nS(o,f,p)+m,f=p+d,p=p+c>o.length?-1:Wu(o,u,p+c);return f<o.length&&(b+=nS(o,f)),b}})});var lS=h((Gq,uS)=>{"use strict";Yg();zg();oS();var nL=It();uS.exports=nL("String","replaceAll")});var dS=h((Qq,cS)=>{"use strict";var oL=lS();cS.exports=oL});var hS=h((Wq,pS)=>{"use strict";var uL=dS();pS.exports=uL});var fS=h((Yq,mS)=>{"use strict";var lL=oi(),cL=Vi(),dL=Tt(),pL=RangeError;mS.exports=function(e){var t=cL(dL(this)),r="",a=lL(e);if(a<0||a===1/0)throw new pL("Wrong number of repetitions");for(;a>0;(a>>>=1)&&(t+=t))a&1&&(r+=t);return r}});var yS=h((zq,vS)=>{"use strict";var SS=J(),hL=Qn(),bS=Vi(),mL=fS(),fL=Tt(),bL=SS(mL),gL=SS("".slice),SL=Math.ceil,gS=function(i){return function(e,t,r){var a=bS(fL(e)),s=hL(t),n=a.length,o=r===void 0?" ":bS(r),u,l;return s<=n||o===""?a:(u=s-n,l=bL(o,SL(u/o.length)),l.length>u&&(l=gL(l,0,u)),i?a+l:l+a)}};vS.exports={start:gS(!1),end:gS(!0)}});var IS=h((Kq,TS)=>{"use strict";var vL=Ht();TS.exports=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(vL)});var ES=h(()=>{"use strict";var yL=K(),TL=yS().start,IL=IS();yL({target:"String",proto:!0,forced:IL},{padStart:function(e){return TL(this,e,arguments.length>1?arguments[1]:void 0)}})});var PS=h((Zq,xS)=>{"use strict";ES();var EL=It();xS.exports=EL("String","padStart")});var wS=h((eU,kS)=>{"use strict";var xL=PS();kS.exports=xL});var RS=h((tU,AS)=>{"use strict";var PL=wS();AS.exports=PL});var Vl="2.0.123-dev.08d4fb1a.0";var pe=(a=>(a.STOPPED="stopped",a.READY="ready",a.PLAYING="playing",a.PAUSED="paused",a))(pe||{}),yt=(P=>(P.MPEG="MPEG",P.DASH="DASH",P.DASH_SEP="DASH_SEP",P.DASH_SEP_VK="DASH_SEP",P.DASH_WEBM="DASH_WEBM",P.DASH_WEBM_AV1="DASH_WEBM_AV1",P.DASH_STREAMS="DASH_STREAMS",P.DASH_WEBM_VK="DASH_WEBM",P.DASH_ONDEMAND="DASH_ONDEMAND",P.DASH_ONDEMAND_VK="DASH_ONDEMAND",P.DASH_LIVE="DASH_LIVE",P.DASH_LIVE_CMAF="DASH_LIVE_CMAF",P.DASH_LIVE_WEBM="DASH_LIVE_WEBM",P.HLS="HLS",P.HLS_ONDEMAND="HLS_ONDEMAND",P.HLS_JS="HLS",P.HLS_LIVE="HLS_LIVE",P.HLS_LIVE_CMAF="HLS_LIVE_CMAF",P.WEB_RTC_LIVE="WEB_RTC_LIVE",P))(yt||{});var Na=(a=>(a.NOT_AVAILABLE="NOT_AVAILABLE",a.AVAILABLE="AVAILABLE",a.CONNECTING="CONNECTING",a.CONNECTED="CONNECTED",a))(Na||{}),fn=(r=>(r.HTTP1="http1",r.HTTP2="http2",r.QUIC="quic",r))(fn||{});var bn=(n=>(n.NONE="none",n.INLINE="inline",n.FULLSCREEN="fullscreen",n.SECOND_SCREEN="second_screen",n.PIP="pip",n.INVISIBLE="invisible",n))(bn||{});var ny=M(He(),1);import{assertNever as Dd,assertNonNullable as _I,isNonNullable as ja,ValueSubject as Yn,Subject as NI,Subscription as FI,merge as qI,observableFrom as UI,fromEvent as Rd,map as $d,tap as Ld,filterChanged as HI,isNullable as zn,ErrorCategory as Md}from"@vkontakte/videoplayer-shared";var Ad=i=>new Promise((e,t)=>{let r=document.createElement("script");r.setAttribute("src",i),r.onload=()=>e(),r.onerror=a=>t(a),document.body.appendChild(r)});var Ga=class{constructor(e){this.connection$=new Yn(void 0);this.castState$=new Yn("NOT_AVAILABLE");this.errorEvent$=new NI;this.realCastState$=new Yn("NOT_AVAILABLE");this.subscription=new FI;this.isDestroyed=!1;this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastInitializer");let t="chrome"in window;if(this.log({message:`[constructor] receiverApplicationId: ${this.params.receiverApplicationId}, isDisabled: ${this.params.isDisabled}, isSupported: ${t}`}),e.isDisabled||!t)return;let r=ja(window.chrome?.cast),a=!!window.__onGCastApiAvailable;r?this.initializeCastApi():(window.__onGCastApiAvailable=s=>{delete window.__onGCastApiAvailable,s&&!this.isDestroyed&&this.initializeCastApi()},a||Ad("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:Md.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(){ja(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();zn(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();zn(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.isDestroyed=!0,this.subscription.unsubscribe()}initListeners(){let e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),r=cast.framework.CastContext.getInstance();this.subscription.add(Rd(r,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=r.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 Dd(a.sessionState)}})).add(qI(Rd(r,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(Ld(a=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(a)}`})}),$d(a=>a.castState)),UI([r.getCastState()])).pipe(HI(),$d(jI),Ld(a=>{this.log({message:`realCastState$: ${a}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(a=>{let s=a==="CONNECTED",n=ja(this.connection$.getValue());if(s&&!n){let o=r.getCurrentSession();_I(o);let u=o.getCastDevice(),l=o.getMediaSession()?.media?.contentId;(zn(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"?ja(this.connection$.getValue())?"CONNECTED":"AVAILABLE":a)}))}initializeCastApi(){let e,t,r;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,r=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:r}),this.initListeners()}catch(a){this.errorEvent$.next({id:"ChromecastInitializer",category:Md.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:a})}}},jI=i=>{switch(i){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 Dd(i)}};var kl=M(He(),1),Fv=M(xr(),1),qv=M(Eo(),1);var Bf=M(vs(),1);import{assertNever as Af}from"@vkontakte/videoplayer-shared";var se=(i,e=0,t=0)=>{switch(t){case 0:return i.replace("_offset_p",e===0?"":"_"+e.toFixed(0));case 1:{if(e===0)return i;let r=new URL(i);return r.searchParams.append("playback_shift",e.toFixed(0)),r.toString()}case 2:{let r=new URL(i);return!r.searchParams.get("offset_p")&&e===0?i:(r.searchParams.set("offset_p",e.toFixed(0)),r.toString())}default:Af(t)}return i},ys=(i,e)=>{switch(e){case 0:return NaN;case 1:{let t=new URL(i);return Number(t.searchParams.get("playback_shift"))}case 2:{let t=new URL(i);return Number(t.searchParams.get("offset_p")??0)}default:Af(e)}};var I=(i,e,t=!1)=>{let r=i.getTransition();(t||!r||r.to===e)&&i.setState(e)};import{isNonNullable as Jw,Subject as Ts,merge as Rf}from"@vkontakte/videoplayer-shared";var $=class{constructor(e){this.transitionStarted$=new Ts;this.transitionEnded$=new Ts;this.transitionUpdated$=new Ts;this.forceChanged$=new Ts;this.stateChangeStarted$=Rf(this.transitionStarted$,this.transitionUpdated$);this.stateChangeEnded$=Rf(this.transitionEnded$,this.forceChanged$);this.state=e,this.prevState=void 0}setState(e){let t=this.transition,r=this.state;this.transition=void 0,this.prevState=r,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:r,to:e,canceledTransition:t})}startTransitionTo(e){let t=this.transition,r=this.state;r===e||Jw(t)&&t.to===e||(this.prevState=r,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:r,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}};import{assertNever as Zw}from"@vkontakte/videoplayer-shared";var $f=i=>{switch(i){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 Zw(i)}};import{assertNever as Cr,assertNonNullable as Kt,debounce as Lf,ErrorCategory as Mf,fromEvent as Xt,isNonNullable as Df,map as Cf,merge as Vf,observableFrom as eA,Subject as tA,Subscription as lu,timeout as rA,getHighestQuality as iA}from"@vkontakte/videoplayer-shared";var aA=5,sA=5,nA=500,Of=7e3,Ti=class{constructor(e){this.subscription=new lu;this.loadMediaTimeoutSubscription=new lu;this.videoState=new $("stopped");this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),r=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: ${r}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(s)};`}),r==="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(r){case"ready":{switch(e){case"playing":case"paused":case"ready":break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:Cr(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:Cr(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:Cr(e)}break}default:Cr(r)}}};this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next($f(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 lu;this.subscription.add(e),this.subscription.add(Vf(this.videoState.stateChangeStarted$.pipe(Cf(a=>`stateChangeStarted$ ${JSON.stringify(a)}`)),this.videoState.stateChangeEnded$.pipe(Cf(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 tA;e.add(a.pipe(Lf(nA)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let s=NaN;e.add(Xt(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)>aA)&&a.next(o),s=o})),e.add(Xt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(n=>{this.logRemoteEvent(n),this.params.output.duration$.next(n.value)}))}t(Xt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(Xt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemotePause():this.handleRemotePlay()}),t(Xt(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<sA&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),I(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:Cr(n)}}),t(Xt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({volume:a.value})}),t(Xt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({muted:a.value})});let r=Vf(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,eA(["init"])).pipe(Lf(0));t(r,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"),I(this.params.desiredState.playbackState,"paused")):(this.videoState.setState("playing"),I(this.params.desiredState.playbackState,"playing"));let r=this.params.output.isLive$.getValue();this.params.output.duration$.next(r?0:t.duration),this.params.output.position$.next(r?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),r=this.createLoadRequest(t);this.loadMedia(r)}handleRemotePause(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="paused"||e==="playing")&&(this.videoState.setState("paused"),I(this.params.desiredState.playbackState,"paused"))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="playing"||e==="paused")&&(this.videoState.setState("playing"),I(this.params.desiredState.playbackState,"playing"))}handleRemoteReady(){this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.params.desiredState.playbackState.getTransition()?.to==="ready"&&I(this.params.desiredState.playbackState,"ready")}handleRemoteStop(){this.videoState.getState()!=="stopped"&&this.videoState.setState("stopped")}handleRemoteVolumeChange(e){let t=this.params.output.volume$.getValue(),r={volume:e.volume??t.volume,muted:e.muted??t.muted};(r.volume!==t.volume||r.muted!==r.muted)&&this.params.output.volume$.next(r)}seek(e){this.params.output.willSeekEvent$.next();let{remotePlayer:t,remotePlayerController:r}=this.params.connection;t.currentTime=e,r.seek()}stop(){let{remotePlayerController:e}=this.params.connection;e.stop()}createMediaInfo(e){let t=this.params.source,r,a,s;switch(e){case"MPEG":{let l=t[e];Kt(l);let d=iA(Object.keys(l));Kt(d);let c=l[d];Kt(c),r=c,a="video/mp4",s=chrome.cast.media.StreamType.BUFFERED;break}case"HLS":case"HLS_ONDEMAND":{let l=t[e];Kt(l),r=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];Kt(l),r=l.url,a="application/dash+xml",s=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_LIVE_CMAF":{let l=t[e];Kt(l),r=l.url,a="application/dash+xml",s=chrome.cast.media.StreamType.LIVE;break}case"HLS_LIVE":case"HLS_LIVE_CMAF":{let l=t[e];Kt(l),r=se(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",d=new Error(l);throw this.params.output.error$.next({id:"ChromecastProvider.createMediaInfo()",category:Mf.VIDEO_PIPELINE,message:l,thrown:d}),d}case"DASH":case"DASH_LIVE_WEBM":throw new Error(`${e} is no longer supported`);default:return Cr(e)}let n=new chrome.cast.media.MediaInfo(this.params.meta.videoId??r,a);n.contentUrl=r,n.streamType=s,n.metadata=new chrome.cast.media.GenericMediaMetadata;let{title:o,subtitle:u}=this.params.meta;return Df(o)&&(n.metadata.title=o),Df(u)&&(n.metadata.subtitle=u),n}createLoadRequest(e){let t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;let r=this.params.desiredState.seekState.getState();return r.state==="applying"||r.state==="requested"?t.currentTime=this.params.output.isLive$.getValue()?0:r.position/1e3:t.currentTime=0,t}loadMedia(e){let t=this.params.connection.session.loadMedia(e),r=new Promise((a,s)=>{this.loadMediaTimeoutSubscription.add(rA(Of).subscribe(()=>s(`timeout(${Of})`)))});(0,Bf.default)(Promise.race([t,r]).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:Mf.VIDEO_PIPELINE,message:s,thrown:a})}),()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}};var Ru=M(He(),1);import{clearVideoElement as Nf}from"@vkontakte/videoplayer-shared";import{clearVideoElement as oA}from"@vkontakte/videoplayer-shared";var _f=i=>{try{i.pause(),i.playbackRate=0,oA(i),i.remove()}catch(e){console.error(e)}};import{fromEvent as uA,Subscription as lA}from"@vkontakte/videoplayer-shared";var cu=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)}},du=window.WeakMap?new WeakMap:new cu,pu=window.WeakMap?new WeakMap:new Map,cA=(i,e=20)=>{let t=0;return uA(i,"ratechange").subscribe(r=>{t++,t>=e&&(i.currentTime=i.currentTime,t=0)})},he=(i,{audioVideoSyncRate:e})=>{let t=i.querySelector("video"),r=!!t;t?Nf(t):(t=document.createElement("video"),i.appendChild(t)),du.set(t,r);let a=new lA;return a.add(cA(t,e)),pu.set(t,a),t.setAttribute("crossorigin","anonymous"),t.setAttribute("playsinline","playsinline"),t.controls=!1,t.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),t},me=i=>{pu.get(i)?.unsubscribe(),pu.delete(i);let t=du.get(i);du.delete(i),t?Nf(i):_f(i)};var mu=M(Vr(),1);import{assertNonNullable as Ii,isNonNullable as tt,isNullable as SA,fromEvent as Or,merge as Qf,observableFrom as Wf,filterChanged as Yf,map as Ei,Subject as zf,Subscription as vA,ValueSubject as yA,ErrorCategory as TA}from"@vkontakte/videoplayer-shared";import{isNonNullable as hu,isNullable as bA,Subscription as gA}from"@vkontakte/videoplayer-shared";var Is=(i,e,t,{equal:r=(n,o)=>n===o,changed$:a,onError:s}={})=>{let n=i.getState(),o=e(),u=bA(a),l=new gA;return a&&l.add(a.subscribe(d=>{let c=i.getState();r(d,c)&&i.setState(d)},s)),r(o,n)||(t(n),u&&i.setState(n)),l.add(i.stateChangeStarted$.subscribe(d=>{t(d.to),u&&i.setState(d.to)},s)),l},et=(i,e,t)=>Is(e,()=>i.loop,r=>{hu(r)&&(i.loop=r)},{onError:t}),fe=(i,e,t,r)=>Is(e,()=>({muted:i.muted,volume:i.volume}),a=>{hu(a)&&(i.muted=a.muted,i.volume=a.volume)},{equal:(a,s)=>a===s||a?.muted===s?.muted&&a?.volume===s?.volume,changed$:t,onError:r}),$e=(i,e,t,r)=>Is(e,()=>i.playbackRate,a=>{hu(a)&&(i.playbackRate=a)},{changed$:t,onError:r}),xt=Is;var IA=i=>["__",i.language,i.label].join("|"),EA=(i,e)=>{if(i.id===e)return!0;let[t,r,a]=e.split("|");return i.language===r&&i.label===a},fu=class i{constructor(e){this.available$=new zf;this.current$=new yA(void 0);this.error$=new zf;this.subscription=new vA;this.externalTracks=new Map;this.internalTracks=new Map;this.baseURL=e}connect(e,t,r){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();let a=s=>{this.error$.next({id:"TextTracksManager",category:TA.WTF,message:"Generic HtmlVideoTextTrackManager error",thrown:s})};this.subscription.add(this.available$.subscribe(r.availableTextTracks$)),this.subscription.add(this.current$.subscribe(r.currentTextTrack$)),this.subscription.add(this.error$.subscribe(r.error$)),this.subscription.add(xt(t.internalTextTracks,()=>(0,mu.default)(this.internalTracks),s=>{tt(s)&&this.setInternal(s)},{equal:(s,n)=>tt(s)&&tt(n)&&s.length===n.length&&s.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe(Ei(s=>s.filter(({type:n})=>n==="internal"))),onError:a})),this.subscription.add(xt(t.externalTextTracks,()=>(0,mu.default)(this.externalTracks),s=>{tt(s)&&this.setExternal(s)},{equal:(s,n)=>tt(s)&&tt(n)&&s.length===n.length&&s.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe(Ei(s=>s.filter(({type:n})=>n==="external"))),onError:a})),this.subscription.add(xt(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(xt(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let s of this.htmlTextTracksAsArray())this.applyCueSettings(s.cues),this.applyCueSettings(s.activeCues)}))}subscribe(){Ii(this.video);let{textTracks:e}=this.video;this.subscription.add(Or(e,"addtrack").subscribe(()=>{let r=this.current$.getValue();r&&this.select(r)})),this.subscription.add(Qf(Or(e,"addtrack"),Or(e,"removetrack"),Wf(["init"])).pipe(Ei(()=>this.htmlTextTracksAsArray().map(r=>this.htmlTextTrackToITextTrack(r))),Yf((r,a)=>r.length===a.length&&r.every(({id:s},n)=>s===a[n].id))).subscribe(this.available$)),this.subscription.add(Qf(Or(e,"change"),Wf(["init"])).pipe(Ei(()=>this.htmlTextTracksAsArray().find(({mode:r})=>r==="showing")),Ei(r=>r&&this.htmlTextTrackToITextTrack(r).id),Yf()).subscribe(this.current$));let t=r=>this.applyCueSettings(r.target?.activeCues??null);this.subscription.add(Or(e,"addtrack").subscribe(r=>{r.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))};r.track?.addEventListener("cuechange",a)})),this.subscription.add(Or(e,"removetrack").subscribe(r=>{r.track?.removeEventListener("cuechange",t)}))}applyCueSettings(e){if(!e||!e.length)return;let t=this.cueSettings.getState();for(let r of Array.from(e)){let a=r;tt(t.align)&&(a.align=t.align),tt(t.position)&&(a.position=t.position),tt(t.size)&&(a.size=t.size),tt(t.line)&&(a.line=t.line)}}htmlTextTracksAsArray(e=!1){Ii(this.video);let t=[...this.video.textTracks];return e?t:t.filter(i.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:r}=e,a=e.id?e.id:IA(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:r,url:this.externalTracks.get(a)?.url}:{id:a,type:"internal",isAuto:n,language:t,label:r,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(r=>r.id===t)).forEach(([,t])=>this.detach(t))}setInternal(e){let t=[...this.externalTracks];e.filter(({id:r,language:a,isAuto:s})=>!this.internalTracks.has(r)&&!t.some(([,n])=>n.language===a&&n.isAuto===s)).forEach(r=>this.attach(r)),Array.from(this.internalTracks).filter(([r])=>!e.find(a=>a.id===r)).forEach(([,r])=>this.detach(r))}select(e){Ii(this.video);for(let t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(let t of this.htmlTextTracksAsArray(!0))(SA(e)||!EA(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){Ii(this.video);let t=document.createElement("track");this.baseURL?t.setAttribute("src",new URL(e.url,this.baseURL).toString()):t.setAttribute("src",e.url),t.setAttribute("id",e.id),e.label&&t.setAttribute("label",e.label),e.language&&t.setAttribute("srclang",e.language),e.type==="external"?this.externalTracks.set(e.id,e):e.type==="internal"&&this.internalTracks.set(e.id,e),this.video.appendChild(t)}detach(e){Ii(this.video);let t=Array.prototype.find.call(this.video.getElementsByTagName("track"),r=>r.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)}},Le=fu;var dt=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 Kf=i=>{let e=i;for(;!(e instanceof Document)&&!(e instanceof ShadowRoot)&&e!==null;)e=e?.parentNode;return e??void 0},bu=i=>{let e=Kf(i);return!!(e&&e.fullscreenElement&&e.fullscreenElement===i)},Xf=i=>{let e=Kf(i);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===i)};import{fromEvent as Me,map as Pt,merge as Zf,filterChanged as PA,isNonNullable as eb,Subject as kA,filter as tb,mapTo as rb,combine as wA,once as AA,ErrorCategory as RA,ValueSubject as ib,clientChecker as $A}from"@vkontakte/videoplayer-shared";var xA=3,Jf=(i,e,t=xA)=>{let r=0,a=0;for(let s=0;s<i.length;s++){let n=i.start(s),o=i.end(s);if(n<=e&&e<=o){if(r=n,a=o,!t)return{from:r,to:a};for(let u=s-1;u>=0;u--)i.end(u)+t>=r&&(r=i.start(u));for(let u=s+1;u<i.length;u++)i.start(u)-t<=a&&(a=i.end(u))}}return{from:r,to:a}};var be=i=>{let e=P=>Me(i,P).pipe(rb(void 0)),r=Zf(...["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"].map(P=>Me(i,P))).pipe(Pt(P=>P.type==="ended"?i.readyState<2:i.readyState<3),PA()),a=Zf(Me(i,"progress"),Me(i,"timeupdate")).pipe(Pt(()=>Jf(i.buffered,i.currentTime))),s=$A.isSafari?wA({play:e("play").pipe(AA()),playing:e("playing")}).pipe(rb(void 0)):e("playing"),n=Me(i,"volumechange").pipe(Pt(()=>({muted:i.muted,volume:i.volume}))),o=Me(i,"ratechange").pipe(Pt(()=>i.playbackRate)),u=Me(i,"error").pipe(tb(()=>!!(i.error||i.played.length)),Pt(()=>{let P=i.error;return{id:P?`MediaError#${P.code}`:"HtmlVideoError",category:RA.VIDEO_PIPELINE,message:P?P.message:"Error event from HTML video element",thrown:i.error??void 0}})),l=Me(i,"timeupdate").pipe(Pt(()=>i.currentTime)),d=new kA,c=.3,p;l.subscribe(P=>{i.loop&&eb(p)&&eb(P)&&p>=i.duration-c&&P<=c&&d.next(p),p=P});let m=e("pause").pipe(tb(()=>!i.error&&p!==i.duration)),f=Me(i,"enterpictureinpicture"),b=Me(i,"leavepictureinpicture"),g=new ib(Xf(i));f.subscribe(()=>g.next(!0)),b.subscribe(()=>g.next(!1));let S=new ib(bu(i));return Me(i,"fullscreenchange").pipe(Pt(()=>bu(i))).subscribe(S),{playing$:s,pause$:m,canplay$:e("canplay"),ended$:e("ended"),looped$:d,error$:u,seeked$:e("seeked"),seeking$:e("seeking"),progress$:e("progress"),loadStart$:e("loadstart"),loadedMetadata$:e("loadedmetadata"),loadedData$:e("loadeddata"),timeUpdate$:l,durationChange$:Me(i,"durationchange").pipe(Pt(()=>i.duration)),isBuffering$:r,currentBuffer$:a,volumeState$:n,playbackRateState$:o,inPiP$:g,inFullscreen$:S,enterPip$:f,leavePip$:b}};import{VideoQuality as kt}from"@vkontakte/videoplayer-shared";var wt=i=>{switch(i){case"mobile":return kt.Q_144P;case"lowest":return kt.Q_240P;case"low":return kt.Q_360P;case"sd":case"medium":return kt.Q_480P;case"hd":case"high":return kt.Q_720P;case"fullhd":case"full":return kt.Q_1080P;case"quadhd":case"quad":return kt.Q_1440P;case"ultrahd":case"ultra":return kt.Q_2160P}};var At=M(Br(),1),bb=M(He(),1),Es=M(xr(),1);import{isNonNullable as Z,isNullable as Su,now as gb,isHigher as vu,isHigherOrEqual as yu,isInvariantQuality as hb,isLower as mb,isLowerOrEqual as Tu,videoSizeToQuality as NA,assertNotEmptyArray as Sb,assertNonNullable as FA}from"@vkontakte/videoplayer-shared";var gu=!1,pt={},cb=i=>{gu=i},db=()=>{pt={}},pb=i=>{i(pt)},xi=(i,e)=>{gu&&(pt.meta=pt.meta??{},pt.meta[i]=e)},le=class{constructor(e){this.name=e}next(e){if(!gu)return;pt.series=pt.series??{};let t=pt.series[this.name]??[];t.push([Date.now(),e]),pt.series[this.name]=t}};var qA=new le("best_bitrate"),vb=(i,e,t)=>(e-t)*Math.pow(2,-10*i)+t;var Iu=i=>(e,t)=>i*(Number(e.bitrate)-Number(t.bitrate)),Pi=class{constructor(){this.history={}}recordSelection(e){this.history[e.id]=gb()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}},yb='Assertion "ABR Tracks is empty array" failed',xs=(i,e,t,r)=>{let a=[...e].sort(Iu(1)),s=[...t].sort(Iu(1)),n=s.filter(u=>Z(u.bitrate)&&Z(i.bitrate)?i.bitrate/u.bitrate>r:!0),o=(0,At.default)(s,Math.round(s.length*a.indexOf(i)/(a.length+1)))??(0,At.default)(s,-1);return o&&(0,bb.default)(n,o)?o:n.length?(0,At.default)(n,-1):(0,At.default)(s,0)},fb=i=>"quality"in i,Tb=(i,e,t,r)=>{let a=Z(r?.last?.bitrate)&&Z(t?.bitrate)&&r.last.bitrate<t.bitrate?i.trackCooldownIncreaseQuality:i.trackCooldownDecreaseQuality,s=t&&r&&r.history[t.id]&&gb()-r.history[t.id]<=a&&(!r.last||t.id!==r.last.id);if(t?.id&&r&&!s&&r.recordSelection(t),s&&r?.last){let n=r.last;r?.recordSwitch(n);let o=fb(n)?"video":"audio",u=fb(n)?n.quality:n.bitrate;return e({message:`
|
|
7
|
+
\v\f\r \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF`});var gg=h((nN,bg)=>{"use strict";var KR=J(),XR=Tt(),JR=Vi(),Ou=Cu(),fg=KR("".replace),ZR=RegExp("^["+Ou+"]+"),e$=RegExp("(^|[^"+Ou+"])["+Ou+"]+$"),Vu=function(i){return function(e){var t=JR(XR(e));return i&1&&(t=fg(t,ZR,"")),i&2&&(t=fg(t,e$,"$1")),t}};bg.exports={start:Vu(1),end:Vu(2),trim:Vu(3)}});var Tg=h((oN,yg)=>{"use strict";var t$=oo().PROPER,r$=ie(),Sg=Cu(),vg="\u200B\x85\u180E";yg.exports=function(i){return r$(function(){return!!Sg[i]()||vg[i]()!==vg||t$&&Sg[i].name!==i})}});var Bu=h((uN,Ig)=>{"use strict";var i$=gg().start,a$=Tg();Ig.exports=a$("trimStart")?function(){return i$(this)}:"".trimStart});var xg=h(()=>{"use strict";var s$=K(),Eg=Bu();s$({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==Eg},{trimLeft:Eg})});var kg=h(()=>{"use strict";xg();var n$=K(),Pg=Bu();n$({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==Pg},{trimStart:Pg})});var Ag=h((hN,wg)=>{"use strict";kg();var o$=It();wg.exports=o$("String","trimLeft")});var $g=h((mN,Rg)=>{"use strict";var u$=Ag();Rg.exports=u$});var Mg=h((fN,Lg)=>{"use strict";var l$=$g();Lg.exports=l$});var Yg=h(()=>{"use strict"});var zg=h(()=>{"use strict"});var Xg=h((Nq,Kg)=>{"use strict";var M$=ke(),D$=qt(),C$=ae(),V$=C$("match");Kg.exports=function(i){var e;return M$(i)&&((e=i[V$])!==void 0?!!e:D$(i)==="RegExp")}});var Zg=h((Fq,Jg)=>{"use strict";var O$=Ze();Jg.exports=function(){var i=O$(this),e="";return i.hasIndices&&(e+="d"),i.global&&(e+="g"),i.ignoreCase&&(e+="i"),i.multiline&&(e+="m"),i.dotAll&&(e+="s"),i.unicode&&(e+="u"),i.unicodeSets&&(e+="v"),i.sticky&&(e+="y"),e}});var rS=h((qq,tS)=>{"use strict";var B$=Pe(),_$=Ue(),N$=ti(),F$=Zg(),eS=RegExp.prototype;tS.exports=function(i){var e=i.flags;return e===void 0&&!("flags"in eS)&&!_$(i,"flags")&&N$(eS,i)?B$(F$,i):e}});var aS=h((Uq,iS)=>{"use strict";var Qu=J(),q$=gr(),U$=Math.floor,ju=Qu("".charAt),H$=Qu("".replace),Gu=Qu("".slice),j$=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,G$=/\$([$&'`]|\d{1,2})/g;iS.exports=function(i,e,t,r,a,s){var n=t+i.length,o=r.length,u=G$;return a!==void 0&&(a=q$(a),u=j$),H$(s,u,function(l,d){var c;switch(ju(d,0)){case"$":return"$";case"&":return i;case"`":return Gu(e,0,t);case"'":return Gu(e,n);case"<":c=a[Gu(d,1,-1)];break;default:var p=+d;if(p===0)return l;if(p>o){var m=U$(p/10);return m===0?l:m<=o?r[m-1]===void 0?ju(d,1):r[m-1]+ju(d,1):l}c=r[p-1]}return c===void 0?"":c})}});var oS=h(()=>{"use strict";var Q$=K(),W$=Pe(),Yu=J(),sS=Tt(),Y$=W(),z$=fr(),K$=Xg(),Hr=Vi(),X$=ii(),J$=rS(),Z$=aS(),eL=ae(),tL=qe(),rL=eL("replace"),iL=TypeError,Wu=Yu("".indexOf),aL=Yu("".replace),nS=Yu("".slice),sL=Math.max;Q$({target:"String",proto:!0},{replaceAll:function(e,t){var r=sS(this),a,s,n,o,u,l,d,c,p,m,f=0,b="";if(!z$(e)){if(a=K$(e),a&&(s=Hr(sS(J$(e))),!~Wu(s,"g")))throw new iL("`.replaceAll` does not allow non-global regexes");if(n=X$(e,rL),n)return W$(n,e,r,t);if(tL&&a)return aL(Hr(r),e,t)}for(o=Hr(r),u=Hr(e),l=Y$(t),l||(t=Hr(t)),d=u.length,c=sL(1,d),p=Wu(o,u);p!==-1;)m=l?Hr(t(u,p,o)):Z$(u,o,p,[],void 0,t),b+=nS(o,f,p)+m,f=p+d,p=p+c>o.length?-1:Wu(o,u,p+c);return f<o.length&&(b+=nS(o,f)),b}})});var lS=h((Gq,uS)=>{"use strict";Yg();zg();oS();var nL=It();uS.exports=nL("String","replaceAll")});var dS=h((Qq,cS)=>{"use strict";var oL=lS();cS.exports=oL});var hS=h((Wq,pS)=>{"use strict";var uL=dS();pS.exports=uL});var fS=h((Yq,mS)=>{"use strict";var lL=oi(),cL=Vi(),dL=Tt(),pL=RangeError;mS.exports=function(e){var t=cL(dL(this)),r="",a=lL(e);if(a<0||a===1/0)throw new pL("Wrong number of repetitions");for(;a>0;(a>>>=1)&&(t+=t))a&1&&(r+=t);return r}});var yS=h((zq,vS)=>{"use strict";var SS=J(),hL=Qn(),bS=Vi(),mL=fS(),fL=Tt(),bL=SS(mL),gL=SS("".slice),SL=Math.ceil,gS=function(i){return function(e,t,r){var a=bS(fL(e)),s=hL(t),n=a.length,o=r===void 0?" ":bS(r),u,l;return s<=n||o===""?a:(u=s-n,l=bL(o,SL(u/o.length)),l.length>u&&(l=gL(l,0,u)),i?a+l:l+a)}};vS.exports={start:gS(!1),end:gS(!0)}});var IS=h((Kq,TS)=>{"use strict";var vL=Ht();TS.exports=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(vL)});var ES=h(()=>{"use strict";var yL=K(),TL=yS().start,IL=IS();yL({target:"String",proto:!0,forced:IL},{padStart:function(e){return TL(this,e,arguments.length>1?arguments[1]:void 0)}})});var PS=h((Zq,xS)=>{"use strict";ES();var EL=It();xS.exports=EL("String","padStart")});var wS=h((eU,kS)=>{"use strict";var xL=PS();kS.exports=xL});var RS=h((tU,AS)=>{"use strict";var PL=wS();AS.exports=PL});var Vl="2.0.123-dev.111b6d7e.0";var pe=(a=>(a.STOPPED="stopped",a.READY="ready",a.PLAYING="playing",a.PAUSED="paused",a))(pe||{}),yt=(P=>(P.MPEG="MPEG",P.DASH="DASH",P.DASH_SEP="DASH_SEP",P.DASH_SEP_VK="DASH_SEP",P.DASH_WEBM="DASH_WEBM",P.DASH_WEBM_AV1="DASH_WEBM_AV1",P.DASH_STREAMS="DASH_STREAMS",P.DASH_WEBM_VK="DASH_WEBM",P.DASH_ONDEMAND="DASH_ONDEMAND",P.DASH_ONDEMAND_VK="DASH_ONDEMAND",P.DASH_LIVE="DASH_LIVE",P.DASH_LIVE_CMAF="DASH_LIVE_CMAF",P.DASH_LIVE_WEBM="DASH_LIVE_WEBM",P.HLS="HLS",P.HLS_ONDEMAND="HLS_ONDEMAND",P.HLS_JS="HLS",P.HLS_LIVE="HLS_LIVE",P.HLS_LIVE_CMAF="HLS_LIVE_CMAF",P.WEB_RTC_LIVE="WEB_RTC_LIVE",P))(yt||{});var Na=(a=>(a.NOT_AVAILABLE="NOT_AVAILABLE",a.AVAILABLE="AVAILABLE",a.CONNECTING="CONNECTING",a.CONNECTED="CONNECTED",a))(Na||{}),fn=(r=>(r.HTTP1="http1",r.HTTP2="http2",r.QUIC="quic",r))(fn||{});var bn=(n=>(n.NONE="none",n.INLINE="inline",n.FULLSCREEN="fullscreen",n.SECOND_SCREEN="second_screen",n.PIP="pip",n.INVISIBLE="invisible",n))(bn||{});var ny=M(He(),1);import{assertNever as Dd,assertNonNullable as _I,isNonNullable as ja,ValueSubject as Yn,Subject as NI,Subscription as FI,merge as qI,observableFrom as UI,fromEvent as Rd,map as $d,tap as Ld,filterChanged as HI,isNullable as zn,ErrorCategory as Md}from"@vkontakte/videoplayer-shared";var Ad=i=>new Promise((e,t)=>{let r=document.createElement("script");r.setAttribute("src",i),r.onload=()=>e(),r.onerror=a=>t(a),document.body.appendChild(r)});var Ga=class{constructor(e){this.connection$=new Yn(void 0);this.castState$=new Yn("NOT_AVAILABLE");this.errorEvent$=new NI;this.realCastState$=new Yn("NOT_AVAILABLE");this.subscription=new FI;this.isDestroyed=!1;this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastInitializer");let t="chrome"in window;if(this.log({message:`[constructor] receiverApplicationId: ${this.params.receiverApplicationId}, isDisabled: ${this.params.isDisabled}, isSupported: ${t}`}),e.isDisabled||!t)return;let r=ja(window.chrome?.cast),a=!!window.__onGCastApiAvailable;r?this.initializeCastApi():(window.__onGCastApiAvailable=s=>{delete window.__onGCastApiAvailable,s&&!this.isDestroyed&&this.initializeCastApi()},a||Ad("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:Md.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(){ja(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();zn(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();zn(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.isDestroyed=!0,this.subscription.unsubscribe()}initListeners(){let e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),r=cast.framework.CastContext.getInstance();this.subscription.add(Rd(r,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=r.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 Dd(a.sessionState)}})).add(qI(Rd(r,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(Ld(a=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(a)}`})}),$d(a=>a.castState)),UI([r.getCastState()])).pipe(HI(),$d(jI),Ld(a=>{this.log({message:`realCastState$: ${a}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(a=>{let s=a==="CONNECTED",n=ja(this.connection$.getValue());if(s&&!n){let o=r.getCurrentSession();_I(o);let u=o.getCastDevice(),l=o.getMediaSession()?.media?.contentId;(zn(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"?ja(this.connection$.getValue())?"CONNECTED":"AVAILABLE":a)}))}initializeCastApi(){let e,t,r;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,r=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:r}),this.initListeners()}catch(a){this.errorEvent$.next({id:"ChromecastInitializer",category:Md.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:a})}}},jI=i=>{switch(i){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 Dd(i)}};var kl=M(He(),1),Fv=M(xr(),1),qv=M(Eo(),1);var Bf=M(vs(),1);import{assertNever as Af}from"@vkontakte/videoplayer-shared";var se=(i,e=0,t=0)=>{switch(t){case 0:return i.replace("_offset_p",e===0?"":"_"+e.toFixed(0));case 1:{if(e===0)return i;let r=new URL(i);return r.searchParams.append("playback_shift",e.toFixed(0)),r.toString()}case 2:{let r=new URL(i);return!r.searchParams.get("offset_p")&&e===0?i:(r.searchParams.set("offset_p",e.toFixed(0)),r.toString())}default:Af(t)}return i},ys=(i,e)=>{switch(e){case 0:return NaN;case 1:{let t=new URL(i);return Number(t.searchParams.get("playback_shift"))}case 2:{let t=new URL(i);return Number(t.searchParams.get("offset_p")??0)}default:Af(e)}};var I=(i,e,t=!1)=>{let r=i.getTransition();(t||!r||r.to===e)&&i.setState(e)};import{isNonNullable as Jw,Subject as Ts,merge as Rf}from"@vkontakte/videoplayer-shared";var $=class{constructor(e){this.transitionStarted$=new Ts;this.transitionEnded$=new Ts;this.transitionUpdated$=new Ts;this.forceChanged$=new Ts;this.stateChangeStarted$=Rf(this.transitionStarted$,this.transitionUpdated$);this.stateChangeEnded$=Rf(this.transitionEnded$,this.forceChanged$);this.state=e,this.prevState=void 0}setState(e){let t=this.transition,r=this.state;this.transition=void 0,this.prevState=r,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:r,to:e,canceledTransition:t})}startTransitionTo(e){let t=this.transition,r=this.state;r===e||Jw(t)&&t.to===e||(this.prevState=r,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:r,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}};import{assertNever as Zw}from"@vkontakte/videoplayer-shared";var $f=i=>{switch(i){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 Zw(i)}};import{assertNever as Cr,assertNonNullable as Kt,debounce as Lf,ErrorCategory as Mf,fromEvent as Xt,isNonNullable as Df,map as Cf,merge as Vf,observableFrom as eA,Subject as tA,Subscription as lu,timeout as rA,getHighestQuality as iA}from"@vkontakte/videoplayer-shared";var aA=5,sA=5,nA=500,Of=7e3,Ti=class{constructor(e){this.subscription=new lu;this.loadMediaTimeoutSubscription=new lu;this.videoState=new $("stopped");this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),r=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: ${r}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(s)};`}),r==="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(r){case"ready":{switch(e){case"playing":case"paused":case"ready":break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:Cr(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:Cr(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:Cr(e)}break}default:Cr(r)}}};this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next($f(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 lu;this.subscription.add(e),this.subscription.add(Vf(this.videoState.stateChangeStarted$.pipe(Cf(a=>`stateChangeStarted$ ${JSON.stringify(a)}`)),this.videoState.stateChangeEnded$.pipe(Cf(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 tA;e.add(a.pipe(Lf(nA)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let s=NaN;e.add(Xt(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)>aA)&&a.next(o),s=o})),e.add(Xt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(n=>{this.logRemoteEvent(n),this.params.output.duration$.next(n.value)}))}t(Xt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(Xt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemotePause():this.handleRemotePlay()}),t(Xt(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<sA&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),I(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:Cr(n)}}),t(Xt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({volume:a.value})}),t(Xt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({muted:a.value})});let r=Vf(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,eA(["init"])).pipe(Lf(0));t(r,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"),I(this.params.desiredState.playbackState,"paused")):(this.videoState.setState("playing"),I(this.params.desiredState.playbackState,"playing"));let r=this.params.output.isLive$.getValue();this.params.output.duration$.next(r?0:t.duration),this.params.output.position$.next(r?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),r=this.createLoadRequest(t);this.loadMedia(r)}handleRemotePause(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="paused"||e==="playing")&&(this.videoState.setState("paused"),I(this.params.desiredState.playbackState,"paused"))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="playing"||e==="paused")&&(this.videoState.setState("playing"),I(this.params.desiredState.playbackState,"playing"))}handleRemoteReady(){this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.params.desiredState.playbackState.getTransition()?.to==="ready"&&I(this.params.desiredState.playbackState,"ready")}handleRemoteStop(){this.videoState.getState()!=="stopped"&&this.videoState.setState("stopped")}handleRemoteVolumeChange(e){let t=this.params.output.volume$.getValue(),r={volume:e.volume??t.volume,muted:e.muted??t.muted};(r.volume!==t.volume||r.muted!==r.muted)&&this.params.output.volume$.next(r)}seek(e){this.params.output.willSeekEvent$.next();let{remotePlayer:t,remotePlayerController:r}=this.params.connection;t.currentTime=e,r.seek()}stop(){let{remotePlayerController:e}=this.params.connection;e.stop()}createMediaInfo(e){let t=this.params.source,r,a,s;switch(e){case"MPEG":{let l=t[e];Kt(l);let d=iA(Object.keys(l));Kt(d);let c=l[d];Kt(c),r=c,a="video/mp4",s=chrome.cast.media.StreamType.BUFFERED;break}case"HLS":case"HLS_ONDEMAND":{let l=t[e];Kt(l),r=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];Kt(l),r=l.url,a="application/dash+xml",s=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_LIVE_CMAF":{let l=t[e];Kt(l),r=l.url,a="application/dash+xml",s=chrome.cast.media.StreamType.LIVE;break}case"HLS_LIVE":case"HLS_LIVE_CMAF":{let l=t[e];Kt(l),r=se(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",d=new Error(l);throw this.params.output.error$.next({id:"ChromecastProvider.createMediaInfo()",category:Mf.VIDEO_PIPELINE,message:l,thrown:d}),d}case"DASH":case"DASH_LIVE_WEBM":throw new Error(`${e} is no longer supported`);default:return Cr(e)}let n=new chrome.cast.media.MediaInfo(this.params.meta.videoId??r,a);n.contentUrl=r,n.streamType=s,n.metadata=new chrome.cast.media.GenericMediaMetadata;let{title:o,subtitle:u}=this.params.meta;return Df(o)&&(n.metadata.title=o),Df(u)&&(n.metadata.subtitle=u),n}createLoadRequest(e){let t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;let r=this.params.desiredState.seekState.getState();return r.state==="applying"||r.state==="requested"?t.currentTime=this.params.output.isLive$.getValue()?0:r.position/1e3:t.currentTime=0,t}loadMedia(e){let t=this.params.connection.session.loadMedia(e),r=new Promise((a,s)=>{this.loadMediaTimeoutSubscription.add(rA(Of).subscribe(()=>s(`timeout(${Of})`)))});(0,Bf.default)(Promise.race([t,r]).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:Mf.VIDEO_PIPELINE,message:s,thrown:a})}),()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}};var Ru=M(He(),1);import{clearVideoElement as Nf}from"@vkontakte/videoplayer-shared";import{clearVideoElement as oA}from"@vkontakte/videoplayer-shared";var _f=i=>{try{i.pause(),i.playbackRate=0,oA(i),i.remove()}catch(e){console.error(e)}};import{fromEvent as uA,Subscription as lA}from"@vkontakte/videoplayer-shared";var cu=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)}},du=window.WeakMap?new WeakMap:new cu,pu=window.WeakMap?new WeakMap:new Map,cA=(i,e=20)=>{let t=0;return uA(i,"ratechange").subscribe(r=>{t++,t>=e&&(i.currentTime=i.currentTime,t=0)})},he=(i,{audioVideoSyncRate:e})=>{let t=i.querySelector("video"),r=!!t;t?Nf(t):(t=document.createElement("video"),i.appendChild(t)),du.set(t,r);let a=new lA;return a.add(cA(t,e)),pu.set(t,a),t.setAttribute("crossorigin","anonymous"),t.setAttribute("playsinline","playsinline"),t.controls=!1,t.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),t},me=i=>{pu.get(i)?.unsubscribe(),pu.delete(i);let t=du.get(i);du.delete(i),t?Nf(i):_f(i)};var mu=M(Vr(),1);import{assertNonNullable as Ii,isNonNullable as tt,isNullable as SA,fromEvent as Or,merge as Qf,observableFrom as Wf,filterChanged as Yf,map as Ei,Subject as zf,Subscription as vA,ValueSubject as yA,ErrorCategory as TA}from"@vkontakte/videoplayer-shared";import{isNonNullable as hu,isNullable as bA,Subscription as gA}from"@vkontakte/videoplayer-shared";var Is=(i,e,t,{equal:r=(n,o)=>n===o,changed$:a,onError:s}={})=>{let n=i.getState(),o=e(),u=bA(a),l=new gA;return a&&l.add(a.subscribe(d=>{let c=i.getState();r(d,c)&&i.setState(d)},s)),r(o,n)||(t(n),u&&i.setState(n)),l.add(i.stateChangeStarted$.subscribe(d=>{t(d.to),u&&i.setState(d.to)},s)),l},et=(i,e,t)=>Is(e,()=>i.loop,r=>{hu(r)&&(i.loop=r)},{onError:t}),fe=(i,e,t,r)=>Is(e,()=>({muted:i.muted,volume:i.volume}),a=>{hu(a)&&(i.muted=a.muted,i.volume=a.volume)},{equal:(a,s)=>a===s||a?.muted===s?.muted&&a?.volume===s?.volume,changed$:t,onError:r}),$e=(i,e,t,r)=>Is(e,()=>i.playbackRate,a=>{hu(a)&&(i.playbackRate=a)},{changed$:t,onError:r}),xt=Is;var IA=i=>["__",i.language,i.label].join("|"),EA=(i,e)=>{if(i.id===e)return!0;let[t,r,a]=e.split("|");return i.language===r&&i.label===a},fu=class i{constructor(e){this.available$=new zf;this.current$=new yA(void 0);this.error$=new zf;this.subscription=new vA;this.externalTracks=new Map;this.internalTracks=new Map;this.baseURL=e}connect(e,t,r){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();let a=s=>{this.error$.next({id:"TextTracksManager",category:TA.WTF,message:"Generic HtmlVideoTextTrackManager error",thrown:s})};this.subscription.add(this.available$.subscribe(r.availableTextTracks$)),this.subscription.add(this.current$.subscribe(r.currentTextTrack$)),this.subscription.add(this.error$.subscribe(r.error$)),this.subscription.add(xt(t.internalTextTracks,()=>(0,mu.default)(this.internalTracks),s=>{tt(s)&&this.setInternal(s)},{equal:(s,n)=>tt(s)&&tt(n)&&s.length===n.length&&s.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe(Ei(s=>s.filter(({type:n})=>n==="internal"))),onError:a})),this.subscription.add(xt(t.externalTextTracks,()=>(0,mu.default)(this.externalTracks),s=>{tt(s)&&this.setExternal(s)},{equal:(s,n)=>tt(s)&&tt(n)&&s.length===n.length&&s.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe(Ei(s=>s.filter(({type:n})=>n==="external"))),onError:a})),this.subscription.add(xt(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(xt(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let s of this.htmlTextTracksAsArray())this.applyCueSettings(s.cues),this.applyCueSettings(s.activeCues)}))}subscribe(){Ii(this.video);let{textTracks:e}=this.video;this.subscription.add(Or(e,"addtrack").subscribe(()=>{let r=this.current$.getValue();r&&this.select(r)})),this.subscription.add(Qf(Or(e,"addtrack"),Or(e,"removetrack"),Wf(["init"])).pipe(Ei(()=>this.htmlTextTracksAsArray().map(r=>this.htmlTextTrackToITextTrack(r))),Yf((r,a)=>r.length===a.length&&r.every(({id:s},n)=>s===a[n].id))).subscribe(this.available$)),this.subscription.add(Qf(Or(e,"change"),Wf(["init"])).pipe(Ei(()=>this.htmlTextTracksAsArray().find(({mode:r})=>r==="showing")),Ei(r=>r&&this.htmlTextTrackToITextTrack(r).id),Yf()).subscribe(this.current$));let t=r=>this.applyCueSettings(r.target?.activeCues??null);this.subscription.add(Or(e,"addtrack").subscribe(r=>{r.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))};r.track?.addEventListener("cuechange",a)})),this.subscription.add(Or(e,"removetrack").subscribe(r=>{r.track?.removeEventListener("cuechange",t)}))}applyCueSettings(e){if(!e||!e.length)return;let t=this.cueSettings.getState();for(let r of Array.from(e)){let a=r;tt(t.align)&&(a.align=t.align),tt(t.position)&&(a.position=t.position),tt(t.size)&&(a.size=t.size),tt(t.line)&&(a.line=t.line)}}htmlTextTracksAsArray(e=!1){Ii(this.video);let t=[...this.video.textTracks];return e?t:t.filter(i.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:r}=e,a=e.id?e.id:IA(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:r,url:this.externalTracks.get(a)?.url}:{id:a,type:"internal",isAuto:n,language:t,label:r,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(r=>r.id===t)).forEach(([,t])=>this.detach(t))}setInternal(e){let t=[...this.externalTracks];e.filter(({id:r,language:a,isAuto:s})=>!this.internalTracks.has(r)&&!t.some(([,n])=>n.language===a&&n.isAuto===s)).forEach(r=>this.attach(r)),Array.from(this.internalTracks).filter(([r])=>!e.find(a=>a.id===r)).forEach(([,r])=>this.detach(r))}select(e){Ii(this.video);for(let t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(let t of this.htmlTextTracksAsArray(!0))(SA(e)||!EA(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){Ii(this.video);let t=document.createElement("track");this.baseURL?t.setAttribute("src",new URL(e.url,this.baseURL).toString()):t.setAttribute("src",e.url),t.setAttribute("id",e.id),e.label&&t.setAttribute("label",e.label),e.language&&t.setAttribute("srclang",e.language),e.type==="external"?this.externalTracks.set(e.id,e):e.type==="internal"&&this.internalTracks.set(e.id,e),this.video.appendChild(t)}detach(e){Ii(this.video);let t=Array.prototype.find.call(this.video.getElementsByTagName("track"),r=>r.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)}},Le=fu;var dt=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 Kf=i=>{let e=i;for(;!(e instanceof Document)&&!(e instanceof ShadowRoot)&&e!==null;)e=e?.parentNode;return e??void 0},bu=i=>{let e=Kf(i);return!!(e&&e.fullscreenElement&&e.fullscreenElement===i)},Xf=i=>{let e=Kf(i);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===i)};import{fromEvent as Me,map as Pt,merge as Zf,filterChanged as PA,isNonNullable as eb,Subject as kA,filter as tb,mapTo as rb,combine as wA,once as AA,ErrorCategory as RA,ValueSubject as ib,clientChecker as $A}from"@vkontakte/videoplayer-shared";var xA=3,Jf=(i,e,t=xA)=>{let r=0,a=0;for(let s=0;s<i.length;s++){let n=i.start(s),o=i.end(s);if(n<=e&&e<=o){if(r=n,a=o,!t)return{from:r,to:a};for(let u=s-1;u>=0;u--)i.end(u)+t>=r&&(r=i.start(u));for(let u=s+1;u<i.length;u++)i.start(u)-t<=a&&(a=i.end(u))}}return{from:r,to:a}};var be=i=>{let e=P=>Me(i,P).pipe(rb(void 0)),r=Zf(...["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"].map(P=>Me(i,P))).pipe(Pt(P=>P.type==="ended"?i.readyState<2:i.readyState<3),PA()),a=Zf(Me(i,"progress"),Me(i,"timeupdate")).pipe(Pt(()=>Jf(i.buffered,i.currentTime))),s=$A.isSafari?wA({play:e("play").pipe(AA()),playing:e("playing")}).pipe(rb(void 0)):e("playing"),n=Me(i,"volumechange").pipe(Pt(()=>({muted:i.muted,volume:i.volume}))),o=Me(i,"ratechange").pipe(Pt(()=>i.playbackRate)),u=Me(i,"error").pipe(tb(()=>!!(i.error||i.played.length)),Pt(()=>{let P=i.error;return{id:P?`MediaError#${P.code}`:"HtmlVideoError",category:RA.VIDEO_PIPELINE,message:P?P.message:"Error event from HTML video element",thrown:i.error??void 0}})),l=Me(i,"timeupdate").pipe(Pt(()=>i.currentTime)),d=new kA,c=.3,p;l.subscribe(P=>{i.loop&&eb(p)&&eb(P)&&p>=i.duration-c&&P<=c&&d.next(p),p=P});let m=e("pause").pipe(tb(()=>!i.error&&p!==i.duration)),f=Me(i,"enterpictureinpicture"),b=Me(i,"leavepictureinpicture"),g=new ib(Xf(i));f.subscribe(()=>g.next(!0)),b.subscribe(()=>g.next(!1));let S=new ib(bu(i));return Me(i,"fullscreenchange").pipe(Pt(()=>bu(i))).subscribe(S),{playing$:s,pause$:m,canplay$:e("canplay"),ended$:e("ended"),looped$:d,error$:u,seeked$:e("seeked"),seeking$:e("seeking"),progress$:e("progress"),loadStart$:e("loadstart"),loadedMetadata$:e("loadedmetadata"),loadedData$:e("loadeddata"),timeUpdate$:l,durationChange$:Me(i,"durationchange").pipe(Pt(()=>i.duration)),isBuffering$:r,currentBuffer$:a,volumeState$:n,playbackRateState$:o,inPiP$:g,inFullscreen$:S,enterPip$:f,leavePip$:b}};import{VideoQuality as kt}from"@vkontakte/videoplayer-shared";var wt=i=>{switch(i){case"mobile":return kt.Q_144P;case"lowest":return kt.Q_240P;case"low":return kt.Q_360P;case"sd":case"medium":return kt.Q_480P;case"hd":case"high":return kt.Q_720P;case"fullhd":case"full":return kt.Q_1080P;case"quadhd":case"quad":return kt.Q_1440P;case"ultrahd":case"ultra":return kt.Q_2160P}};var At=M(Br(),1),bb=M(He(),1),Es=M(xr(),1);import{isNonNullable as Z,isNullable as Su,now as gb,isHigher as vu,isHigherOrEqual as yu,isInvariantQuality as hb,isLower as mb,isLowerOrEqual as Tu,videoSizeToQuality as NA,assertNotEmptyArray as Sb,assertNonNullable as FA}from"@vkontakte/videoplayer-shared";var gu=!1,pt={},cb=i=>{gu=i},db=()=>{pt={}},pb=i=>{i(pt)},xi=(i,e)=>{gu&&(pt.meta=pt.meta??{},pt.meta[i]=e)},le=class{constructor(e){this.name=e}next(e){if(!gu)return;pt.series=pt.series??{};let t=pt.series[this.name]??[];t.push([Date.now(),e]),pt.series[this.name]=t}};var qA=new le("best_bitrate"),vb=(i,e,t)=>(e-t)*Math.pow(2,-10*i)+t;var Iu=i=>(e,t)=>i*(Number(e.bitrate)-Number(t.bitrate)),Pi=class{constructor(){this.history={}}recordSelection(e){this.history[e.id]=gb()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}},yb='Assertion "ABR Tracks is empty array" failed',xs=(i,e,t,r)=>{let a=[...e].sort(Iu(1)),s=[...t].sort(Iu(1)),n=s.filter(u=>Z(u.bitrate)&&Z(i.bitrate)?i.bitrate/u.bitrate>r:!0),o=(0,At.default)(s,Math.round(s.length*a.indexOf(i)/(a.length+1)))??(0,At.default)(s,-1);return o&&(0,bb.default)(n,o)?o:n.length?(0,At.default)(n,-1):(0,At.default)(s,0)},fb=i=>"quality"in i,Tb=(i,e,t,r)=>{let a=Z(r?.last?.bitrate)&&Z(t?.bitrate)&&r.last.bitrate<t.bitrate?i.trackCooldownIncreaseQuality:i.trackCooldownDecreaseQuality,s=t&&r&&r.history[t.id]&&gb()-r.history[t.id]<=a&&(!r.last||t.id!==r.last.id);if(t?.id&&r&&!s&&r.recordSelection(t),s&&r?.last){let n=r.last;r?.recordSwitch(n);let o=fb(n)?"video":"audio",u=fb(n)?n.quality:n.bitrate;return e({message:`
|
|
8
8
|
[last ${o} selected] ${u}
|
|
9
9
|
`}),n}return r?.recordSwitch(t),t},UA=(i,e)=>Math.log(e)/Math.log(i),Rt=(i,{container:e,estimatedThroughput:t,tuning:r,limits:a,reserve:s=0,forwardBufferHealth:n,playbackRate:o,current:u,history:l,visible:d,droppedVideoMaxQualityLimit:c,stallsVideoMaxQualityLimit:p,stallsPredictedThroughput:m,abrLogger:f})=>{Sb(i,yb);let b=r.containerSizeFactor;if(r.usePixelRatio&&window.devicePixelRatio){let v=window.devicePixelRatio;if(r.pixelRatioMultiplier)b*=r.pixelRatioMultiplier*(v-1)+1;else{let x=r.pixelRatioLogBase,[U=0,Ee=0,Ve=0]=r.pixelRatioLogCoefficients,w=UA(x,U*v+Ee)+Ve;Number.isFinite(w)&&(b*=w)}}let g=r.limitByContainer&&e&&e.width>0&&e.height>0?{width:e.width*b,height:e.height*b}:void 0,S=r.considerPlaybackRate&&Z(o)?o:1,k=i.filter(v=>!hb(v.quality)).sort((v,x)=>vu(v.quality,x.quality)?-1:1),P=(0,At.default)(k,-1)?.quality,A=(0,At.default)(k,0)?.quality,y=Su(a)||Z(a.min)&&Z(a.max)&&mb(a.max,a.min)||Z(a.min)&&A&&vu(a.min,A)||Z(a.max)&&P&&mb(a.max,P),T=S*vb(n??.5,r.bitrateFactorAtEmptyBuffer,r.bitrateFactorAtFullBuffer),D={},N=k.filter(v=>{let x=!0;if(g)if(v.size)x=v.size.width<=g.width&&v.size.height<=g.height;else{let j=g&&NA(g);x=j?Tu(v.quality,j):!0}if(!x)return D[v.quality]="FitsContainer",!1;let U=m||t;if(!(Z(U)&&isFinite(U)&&Z(v.bitrate)?U-s>=v.bitrate*T:!0))return D[v.quality]="FitsThroughput",!1;if(r.lazyQualitySwitch&&Z(r.minBufferToSwitchUp)&&u&&!hb(u.quality)&&(n??0)<r.minBufferToSwitchUp&&vu(v.quality,u.quality))return D[v.quality]="Buffer",!1;if(!!c&&yu(v.quality,c))return D[v.quality]="DroppedFramesLimit",!1;if(!!p&&yu(v.quality,p))return D[v.quality]="StallsLimit",!1;let B=y||(Su(a.max)||Tu(v.quality,a.max))&&(Su(a.min)||yu(v.quality,a.min)),R=Z(d)&&!d?Tu(v.quality,r.backgroundVideoQualityLimit):!0;return!B||!R?(D[v.quality]="FitsQualityLimits",!1):!0})[0];N&&N.bitrate&&qA.next(N.bitrate);let q=N??(0,At.default)(k,-1)??i[0];return q.quality!==l?.last?.quality&&f({message:`
|
|
10
10
|
[VIDEO TRACKS ABR]
|
package/evergreen.esm.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @vkontakte/videoplayer-core v2.0.123-dev.
|
|
3
|
-
* Tue, 14 Jan 2025 10:
|
|
2
|
+
* @vkontakte/videoplayer-core v2.0.123-dev.111b6d7e.0
|
|
3
|
+
* Tue, 14 Jan 2025 10:01:01 GMT
|
|
4
4
|
* https://st.mycdn.me/static/vkontakte-videoplayer/2-0-123/doc/
|
|
5
5
|
*/
|
|
6
|
-
var rs="2.0.123-dev.08d4fb1a.0";var re=(r=>(r.STOPPED="stopped",r.READY="ready",r.PLAYING="playing",r.PAUSED="paused",r))(re||{}),Xe=(x=>(x.MPEG="MPEG",x.DASH="DASH",x.DASH_SEP="DASH_SEP",x.DASH_SEP_VK="DASH_SEP",x.DASH_WEBM="DASH_WEBM",x.DASH_WEBM_AV1="DASH_WEBM_AV1",x.DASH_STREAMS="DASH_STREAMS",x.DASH_WEBM_VK="DASH_WEBM",x.DASH_ONDEMAND="DASH_ONDEMAND",x.DASH_ONDEMAND_VK="DASH_ONDEMAND",x.DASH_LIVE="DASH_LIVE",x.DASH_LIVE_CMAF="DASH_LIVE_CMAF",x.DASH_LIVE_WEBM="DASH_LIVE_WEBM",x.HLS="HLS",x.HLS_ONDEMAND="HLS_ONDEMAND",x.HLS_JS="HLS",x.HLS_LIVE="HLS_LIVE",x.HLS_LIVE_CMAF="HLS_LIVE_CMAF",x.WEB_RTC_LIVE="WEB_RTC_LIVE",x))(Xe||{});var ar=(r=>(r.NOT_AVAILABLE="NOT_AVAILABLE",r.AVAILABLE="AVAILABLE",r.CONNECTING="CONNECTING",r.CONNECTED="CONNECTED",r))(ar||{}),zr=(i=>(i.HTTP1="http1",i.HTTP2="http2",i.QUIC="quic",i))(zr||{});var Kr=(s=>(s.NONE="none",s.INLINE="inline",s.FULLSCREEN="fullscreen",s.SECOND_SCREEN="second_screen",s.PIP="pip",s.INVISIBLE="invisible",s))(Kr||{});import{assertNever as ls,assertNonNullable as Yo,isNonNullable as sr,ValueSubject as Xr,Subject as zo,Subscription as Ko,merge as Xo,observableFrom as Jo,fromEvent as ss,map as ns,tap as os,filterChanged as Zo,isNullable as Jr,ErrorCategory as us}from"@vkontakte/videoplayer-shared/evergreen";var as=n=>new Promise((e,t)=>{let i=document.createElement("script");i.setAttribute("src",n),i.onload=()=>e(),i.onerror=r=>t(r),document.body.appendChild(i)});var nr=class{constructor(e){this.connection$=new Xr(void 0);this.castState$=new Xr("NOT_AVAILABLE");this.errorEvent$=new zo;this.realCastState$=new Xr("NOT_AVAILABLE");this.subscription=new Ko;this.isDestroyed=!1;this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastInitializer");let t="chrome"in window;if(this.log({message:`[constructor] receiverApplicationId: ${this.params.receiverApplicationId}, isDisabled: ${this.params.isDisabled}, isSupported: ${t}`}),e.isDisabled||!t)return;let i=sr(window.chrome?.cast),r=!!window.__onGCastApiAvailable;i?this.initializeCastApi():(window.__onGCastApiAvailable=a=>{delete window.__onGCastApiAvailable,a&&!this.isDestroyed&&this.initializeCastApi()},r||as("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:us.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(){sr(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();Jr(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();Jr(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.isDestroyed=!0,this.subscription.unsubscribe()}initListeners(){let e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),i=cast.framework.CastContext.getInstance();this.subscription.add(ss(i,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(r=>{switch(r.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 ls(r.sessionState)}})).add(Xo(ss(i,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(os(r=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(r)}`})}),ns(r=>r.castState)),Jo([i.getCastState()])).pipe(Zo(),ns(eu),os(r=>{this.log({message:`realCastState$: ${r}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(r=>{let a=r==="CONNECTED",s=sr(this.connection$.getValue());if(a&&!s){let o=i.getCurrentSession();Yo(o);let u=o.getCastDevice(),l=o.getMediaSession()?.media?.contentId;(Jr(l)||l===this.contentId)&&(this.log({message:"connection created"}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:o,castDevice:u}))}else!a&&s&&(this.log({message:"connection destroyed"}),this.connection$.next(void 0));this.castState$.next(r==="CONNECTED"?sr(this.connection$.getValue())?"CONNECTED":"AVAILABLE":r)}))}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(r){this.errorEvent$.next({id:"ChromecastInitializer",category:us.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:r})}}},eu=n=>{switch(n){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 ls(n)}};import{assertNever as ds}from"@vkontakte/videoplayer-shared/evergreen";var X=(n,e=0,t=0)=>{switch(t){case 0:return n.replace("_offset_p",e===0?"":"_"+e.toFixed(0));case 1:{if(e===0)return n;let i=new URL(n);return i.searchParams.append("playback_shift",e.toFixed(0)),i.toString()}case 2:{let i=new URL(n);return!i.searchParams.get("offset_p")&&e===0?n:(i.searchParams.set("offset_p",e.toFixed(0)),i.toString())}default:ds(t)}return n},or=(n,e)=>{switch(e){case 0:return NaN;case 1:{let t=new URL(n);return Number(t.searchParams.get("playback_shift"))}case 2:{let t=new URL(n);return Number(t.searchParams.get("offset_p")??0)}default:ds(e)}};var y=(n,e,t=!1)=>{let i=n.getTransition();(t||!i||i.to===e)&&n.setState(e)};import{isNonNullable as tu,Subject as ur,merge as cs}from"@vkontakte/videoplayer-shared/evergreen";var w=class{constructor(e){this.transitionStarted$=new ur;this.transitionEnded$=new ur;this.transitionUpdated$=new ur;this.forceChanged$=new ur;this.stateChangeStarted$=cs(this.transitionStarted$,this.transitionUpdated$);this.stateChangeEnded$=cs(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||tu(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 iu}from"@vkontakte/videoplayer-shared/evergreen";var ps=n=>{switch(n){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 iu(n)}};import{assertNever as Dt,assertNonNullable as mt,debounce as hs,ErrorCategory as ms,fromEvent as ft,isNonNullable as fs,map as bs,merge as gs,observableFrom as ru,Subject as au,Subscription as Zr,timeout as su,getHighestQuality as nu}from"@vkontakte/videoplayer-shared/evergreen";var ou=5,uu=5,lu=500,Ss=7e3,Wt=class{constructor(e){this.subscription=new Zr;this.loadMediaTimeoutSubscription=new Zr;this.videoState=new w("stopped");this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),i=this.params.desiredState.playbackState.getState(),r=this.params.desiredState.playbackState.getTransition(),a=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(a)};`}),i==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.stop());return}if(!t){if(r?.to!=="paused"&&a.state==="requested"&&e!=="stopped"){this.seek(a.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:Dt(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:Dt(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:Dt(e)}break}default:Dt(i)}}};this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(ps(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 Zr;this.subscription.add(e),this.subscription.add(gs(this.videoState.stateChangeStarted$.pipe(bs(r=>`stateChangeStarted$ ${JSON.stringify(r)}`)),this.videoState.stateChangeEnded$.pipe(bs(r=>`stateChangeEnded$ ${JSON.stringify(r)}`))).subscribe(r=>this.log({message:`[videoState] ${r}`})));let t=(r,a)=>this.subscription.add(r.subscribe(a));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{let r=new au;e.add(r.pipe(hs(lu)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let a=NaN;e.add(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(s=>{this.logRemoteEvent(s);let o=s.value;this.params.output.position$.next(o),(this.params.desiredState.seekState.getState().state==="applying"||Math.abs(o-a)>ou)&&r.next(o),a=o})),e.add(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(s=>{this.logRemoteEvent(s),this.params.output.duration$.next(s.value)}))}t(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemotePause():this.handleRemotePlay()}),t(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),r=>{this.logRemoteEvent(r);let{remotePlayer:a}=this.params.connection,s=r.value,o=this.params.output.isBuffering$.getValue(),u=s===chrome.cast.media.PlayerState.BUFFERING;switch(o!==u&&this.params.output.isBuffering$.next(u),s){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&a.duration-a.currentTime<uu&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),y(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:Dt(s)}}),t(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({volume:r.value})}),t(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({muted:r.value})});let i=gs(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,ru(["init"])).pipe(hs(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"),y(this.params.desiredState.playbackState,"paused")):(this.videoState.setState("playing"),y(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"),y(this.params.desiredState.playbackState,"paused"))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="playing"||e==="paused")&&(this.videoState.setState("playing"),y(this.params.desiredState.playbackState,"playing"))}handleRemoteReady(){this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.params.desiredState.playbackState.getTransition()?.to==="ready"&&y(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,r,a;switch(e){case"MPEG":{let l=t[e];mt(l);let c=nu(Object.keys(l));mt(c);let d=l[c];mt(d),i=d,r="video/mp4",a=chrome.cast.media.StreamType.BUFFERED;break}case"HLS":case"HLS_ONDEMAND":{let l=t[e];mt(l),i=l.url,r="application/x-mpegurl",a=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];mt(l),i=l.url,r="application/dash+xml",a=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_LIVE_CMAF":{let l=t[e];mt(l),i=l.url,r="application/dash+xml",a=chrome.cast.media.StreamType.LIVE;break}case"HLS_LIVE":case"HLS_LIVE_CMAF":{let l=t[e];mt(l),i=X(l.url),r="application/x-mpegurl",a=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:ms.VIDEO_PIPELINE,message:l,thrown:c}),c}case"DASH":case"DASH_LIVE_WEBM":throw new Error(`${e} is no longer supported`);default:return Dt(e)}let s=new chrome.cast.media.MediaInfo(this.params.meta.videoId??i,r);s.contentUrl=i,s.streamType=a,s.metadata=new chrome.cast.media.GenericMediaMetadata;let{title:o,subtitle:u}=this.params.meta;return fs(o)&&(s.metadata.title=o),fs(u)&&(s.metadata.subtitle=u),s}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((r,a)=>{this.loadMediaTimeoutSubscription.add(su(Ss).subscribe(()=>a(`timeout(${Ss})`)))});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()},r=>{let a=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${r}`;this.log({message:a}),this.params.output.error$.next({id:"ChromecastProvider.loadMedia",category:ms.VIDEO_PIPELINE,message:a,thrown:r})}).finally(()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}};import{clearVideoElement as Ts}from"@vkontakte/videoplayer-shared/evergreen";import{clearVideoElement as du}from"@vkontakte/videoplayer-shared/evergreen";var vs=n=>{try{n.pause(),n.playbackRate=0,du(n),n.remove()}catch(e){console.error(e)}};import{fromEvent as cu,Subscription as pu}from"@vkontakte/videoplayer-shared/evergreen";var ea=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)}},ta=window.WeakMap?new WeakMap:new ea,ia=window.WeakMap?new WeakMap:new Map,hu=(n,e=20)=>{let t=0;return cu(n,"ratechange").subscribe(i=>{t++,t>=e&&(n.currentTime=n.currentTime,t=0)})},ae=(n,{audioVideoSyncRate:e})=>{let t=n.querySelector("video"),i=!!t;t?Ts(t):(t=document.createElement("video"),n.appendChild(t)),ta.set(t,i);let r=new pu;return r.add(hu(t,e)),ia.set(t,r),t.setAttribute("crossorigin","anonymous"),t.setAttribute("playsinline","playsinline"),t.controls=!1,t.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),t},se=n=>{ia.get(n)?.unsubscribe(),ia.delete(n);let t=ta.get(n);ta.delete(n),t?Ts(n):vs(n)};import{assertNonNullable as Gt,isNonNullable as Ce,isNullable as bu,fromEvent as Ct,merge as ys,observableFrom as Is,filterChanged as Es,map as Yt,Subject as xs,Subscription as gu,ValueSubject as Su,ErrorCategory as vu}from"@vkontakte/videoplayer-shared/evergreen";import{isNonNullable as ra,isNullable as mu,Subscription as fu}from"@vkontakte/videoplayer-shared/evergreen";var lr=(n,e,t,{equal:i=(s,o)=>s===o,changed$:r,onError:a}={})=>{let s=n.getState(),o=e(),u=mu(r),l=new fu;return r&&l.add(r.subscribe(c=>{let d=n.getState();i(c,d)&&n.setState(c)},a)),i(o,s)||(t(s),u&&n.setState(s)),l.add(n.stateChangeStarted$.subscribe(c=>{t(c.to),u&&n.setState(c.to)},a)),l},De=(n,e,t)=>lr(e,()=>n.loop,i=>{ra(i)&&(n.loop=i)},{onError:t}),ne=(n,e,t,i)=>lr(e,()=>({muted:n.muted,volume:n.volume}),r=>{ra(r)&&(n.muted=r.muted,n.volume=r.volume)},{equal:(r,a)=>r===a||r?.muted===a?.muted&&r?.volume===a?.volume,changed$:t,onError:i}),ge=(n,e,t,i)=>lr(e,()=>n.playbackRate,r=>{ra(r)&&(n.playbackRate=r)},{changed$:t,onError:i}),Je=lr;var Tu=n=>["__",n.language,n.label].join("|"),yu=(n,e)=>{if(n.id===e)return!0;let[t,i,r]=e.split("|");return n.language===i&&n.label===r},aa=class n{constructor(e){this.available$=new xs;this.current$=new Su(void 0);this.error$=new xs;this.subscription=new gu;this.externalTracks=new Map;this.internalTracks=new Map;this.baseURL=e}connect(e,t,i){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();let r=a=>{this.error$.next({id:"TextTracksManager",category:vu.WTF,message:"Generic HtmlVideoTextTrackManager error",thrown:a})};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(Je(t.internalTextTracks,()=>Object.values(this.internalTracks),a=>{Ce(a)&&this.setInternal(a)},{equal:(a,s)=>Ce(a)&&Ce(s)&&a.length===s.length&&a.every(({id:o},u)=>o===s[u].id),changed$:this.available$.pipe(Yt(a=>a.filter(({type:s})=>s==="internal"))),onError:r})),this.subscription.add(Je(t.externalTextTracks,()=>Object.values(this.externalTracks),a=>{Ce(a)&&this.setExternal(a)},{equal:(a,s)=>Ce(a)&&Ce(s)&&a.length===s.length&&a.every(({id:o},u)=>o===s[u].id),changed$:this.available$.pipe(Yt(a=>a.filter(({type:s})=>s==="external"))),onError:r})),this.subscription.add(Je(t.currentTextTrack,()=>{if(this.video)return;let a=this.htmlTextTracksAsArray().find(({mode:s})=>s==="showing");return a&&this.htmlTextTrackToITextTrack(a).id},a=>this.select(a),{changed$:this.current$,onError:r})),this.subscription.add(Je(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let a of this.htmlTextTracksAsArray())this.applyCueSettings(a.cues),this.applyCueSettings(a.activeCues)}))}subscribe(){Gt(this.video);let{textTracks:e}=this.video;this.subscription.add(Ct(e,"addtrack").subscribe(()=>{let i=this.current$.getValue();i&&this.select(i)})),this.subscription.add(ys(Ct(e,"addtrack"),Ct(e,"removetrack"),Is(["init"])).pipe(Yt(()=>this.htmlTextTracksAsArray().map(i=>this.htmlTextTrackToITextTrack(i))),Es((i,r)=>i.length===r.length&&i.every(({id:a},s)=>a===r[s].id))).subscribe(this.available$)),this.subscription.add(ys(Ct(e,"change"),Is(["init"])).pipe(Yt(()=>this.htmlTextTracksAsArray().find(({mode:i})=>i==="showing")),Yt(i=>i&&this.htmlTextTrackToITextTrack(i).id),Es()).subscribe(this.current$));let t=i=>this.applyCueSettings(i.target?.activeCues??null);this.subscription.add(Ct(e,"addtrack").subscribe(i=>{i.track?.addEventListener("cuechange",t);let r=a=>{let s=a.target?.cues??null;s&&s.length&&(this.applyCueSettings(a.target?.cues??null),a.target?.removeEventListener("cuechange",r))};i.track?.addEventListener("cuechange",r)})),this.subscription.add(Ct(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 r=i;Ce(t.align)&&(r.align=t.align),Ce(t.position)&&(r.position=t.position),Ce(t.size)&&(r.size=t.size),Ce(t.line)&&(r.line=t.line)}}htmlTextTracksAsArray(e=!1){Gt(this.video);let t=[...this.video.textTracks];return e?t:t.filter(n.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:i}=e,r=e.id?e.id:Tu(e),a=this.externalTracks.has(r),s=(a?this.externalTracks.get(r)?.isAuto:this.internalTracks.get(r)?.isAuto)??r.includes("auto");return a?{id:r,type:"external",isAuto:s,language:t,label:i,url:this.externalTracks.get(r)?.url}:{id:r,type:"internal",isAuto:s,language:t,label:i,url:this.internalTracks.get(r)?.url}}static isHealthyTrack(e){return!(e.kind==="metadata"||e.groupId||e.id===""&&e.label===""&&e.language==="")}setExternal(e){this.internalTracks.size>0&&Array.from(this.internalTracks).forEach(([,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:r,isAuto:a})=>!this.internalTracks.has(i)&&!t.some(([,s])=>s.language===r&&s.isAuto===a)).forEach(i=>this.attach(i)),Array.from(this.internalTracks).filter(([i])=>!e.find(r=>r.id===i)).forEach(([,i])=>this.detach(i))}select(e){Gt(this.video);for(let t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(let t of this.htmlTextTracksAsArray(!0))(bu(e)||!yu(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){Gt(this.video);let t=document.createElement("track");this.baseURL?t.setAttribute("src",new URL(e.url,this.baseURL).toString()):t.setAttribute("src",e.url),t.setAttribute("id",e.id),e.label&&t.setAttribute("label",e.label),e.language&&t.setAttribute("srclang",e.language),e.type==="external"?this.externalTracks.set(e.id,e):e.type==="internal"&&this.internalTracks.set(e.id,e),this.video.appendChild(t)}detach(e){Gt(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)}},Se=aa;var He=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 ks=n=>{let e=n;for(;!(e instanceof Document)&&!(e instanceof ShadowRoot)&&e!==null;)e=e?.parentNode;return e??void 0},sa=n=>{let e=ks(n);return!!(e&&e.fullscreenElement&&e.fullscreenElement===n)},Ps=n=>{let e=ks(n);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===n)};import{fromEvent as ve,map as Ze,merge as ws,filterChanged as Eu,isNonNullable as $s,Subject as xu,filter as Ls,mapTo as Ms,combine as ku,once as Pu,ErrorCategory as Au,ValueSubject as Rs,clientChecker as wu}from"@vkontakte/videoplayer-shared/evergreen";var Iu=3,As=(n,e,t=Iu)=>{let i=0,r=0;for(let a=0;a<n.length;a++){let s=n.start(a),o=n.end(a);if(s<=e&&e<=o){if(i=s,r=o,!t)return{from:i,to:r};for(let u=a-1;u>=0;u--)n.end(u)+t>=i&&(i=n.start(u));for(let u=a+1;u<n.length;u++)n.start(u)-t<=r&&(r=n.end(u))}}return{from:i,to:r}};var oe=n=>{let e=x=>ve(n,x).pipe(Ms(void 0)),i=ws(...["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"].map(x=>ve(n,x))).pipe(Ze(x=>x.type==="ended"?n.readyState<2:n.readyState<3),Eu()),r=ws(ve(n,"progress"),ve(n,"timeupdate")).pipe(Ze(()=>As(n.buffered,n.currentTime))),a=wu.isSafari?ku({play:e("play").pipe(Pu()),playing:e("playing")}).pipe(Ms(void 0)):e("playing"),s=ve(n,"volumechange").pipe(Ze(()=>({muted:n.muted,volume:n.volume}))),o=ve(n,"ratechange").pipe(Ze(()=>n.playbackRate)),u=ve(n,"error").pipe(Ls(()=>!!(n.error||n.played.length)),Ze(()=>{let x=n.error;return{id:x?`MediaError#${x.code}`:"HtmlVideoError",category:Au.VIDEO_PIPELINE,message:x?x.message:"Error event from HTML video element",thrown:n.error??void 0}})),l=ve(n,"timeupdate").pipe(Ze(()=>n.currentTime)),c=new xu,d=.3,p;l.subscribe(x=>{n.loop&&$s(p)&&$s(x)&&p>=n.duration-d&&x<=d&&c.next(p),p=x});let h=e("pause").pipe(Ls(()=>!n.error&&p!==n.duration)),m=ve(n,"enterpictureinpicture"),f=ve(n,"leavepictureinpicture"),g=new Rs(Ps(n));m.subscribe(()=>g.next(!0)),f.subscribe(()=>g.next(!1));let v=new Rs(sa(n));return ve(n,"fullscreenchange").pipe(Ze(()=>sa(n))).subscribe(v),{playing$:a,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$:ve(n,"durationchange").pipe(Ze(()=>n.duration)),isBuffering$:i,currentBuffer$:r,volumeState$:s,playbackRateState$:o,inPiP$:g,inFullscreen$:v,enterPip$:m,leavePip$:f}};import{VideoQuality as et}from"@vkontakte/videoplayer-shared/evergreen";var tt=n=>{switch(n){case"mobile":return et.Q_144P;case"lowest":return et.Q_240P;case"low":return et.Q_360P;case"sd":case"medium":return et.Q_480P;case"hd":case"high":return et.Q_720P;case"fullhd":case"full":return et.Q_1080P;case"quadhd":case"quad":return et.Q_1440P;case"ultrahd":case"ultra":return et.Q_2160P}};import{isNonNullable as G,isNullable as oa,now as _s,isHigher as ua,isHigherOrEqual as la,isInvariantQuality as Bs,isLower as Os,isLowerOrEqual as da,videoSizeToQuality as $u,assertNotEmptyArray as Fs,assertNonNullable as Lu}from"@vkontakte/videoplayer-shared/evergreen";var na=!1,Qe={},Ds=n=>{na=n},Cs=()=>{Qe={}},Vs=n=>{n(Qe)},zt=(n,e)=>{na&&(Qe.meta=Qe.meta??{},Qe.meta[n]=e)},ee=class{constructor(e){this.name=e}next(e){if(!na)return;Qe.series=Qe.series??{};let t=Qe.series[this.name]??[];t.push([Date.now(),e]),Qe.series[this.name]=t}};var Mu=new ee("best_bitrate"),Us=(n,e,t)=>(e-t)*Math.pow(2,-10*n)+t;var ca=n=>(e,t)=>n*(Number(e.bitrate)-Number(t.bitrate)),Kt=class{constructor(){this.history={}}recordSelection(e){this.history[e.id]=_s()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}},Hs='Assertion "ABR Tracks is empty array" failed',dr=(n,e,t,i)=>{let r=[...e].sort(ca(1)),a=[...t].sort(ca(1)),s=a.filter(u=>G(u.bitrate)&&G(n.bitrate)?n.bitrate/u.bitrate>i:!0),o=a.at(Math.round(a.length*r.indexOf(n)/(r.length+1)))??a.at(-1);return o&&s.includes(o)?o:s.length?s.at(-1):a.at(0)},Ns=n=>"quality"in n,Qs=(n,e,t,i)=>{let r=G(i?.last?.bitrate)&&G(t?.bitrate)&&i.last.bitrate<t.bitrate?n.trackCooldownIncreaseQuality:n.trackCooldownDecreaseQuality,a=t&&i&&i.history[t.id]&&_s()-i.history[t.id]<=r&&(!i.last||t.id!==i.last.id);if(t?.id&&i&&!a&&i.recordSelection(t),a&&i?.last){let s=i.last;i?.recordSwitch(s);let o=Ns(s)?"video":"audio",u=Ns(s)?s.quality:s.bitrate;return e({message:`
|
|
6
|
+
var rs="2.0.123-dev.111b6d7e.0";var re=(r=>(r.STOPPED="stopped",r.READY="ready",r.PLAYING="playing",r.PAUSED="paused",r))(re||{}),Xe=(x=>(x.MPEG="MPEG",x.DASH="DASH",x.DASH_SEP="DASH_SEP",x.DASH_SEP_VK="DASH_SEP",x.DASH_WEBM="DASH_WEBM",x.DASH_WEBM_AV1="DASH_WEBM_AV1",x.DASH_STREAMS="DASH_STREAMS",x.DASH_WEBM_VK="DASH_WEBM",x.DASH_ONDEMAND="DASH_ONDEMAND",x.DASH_ONDEMAND_VK="DASH_ONDEMAND",x.DASH_LIVE="DASH_LIVE",x.DASH_LIVE_CMAF="DASH_LIVE_CMAF",x.DASH_LIVE_WEBM="DASH_LIVE_WEBM",x.HLS="HLS",x.HLS_ONDEMAND="HLS_ONDEMAND",x.HLS_JS="HLS",x.HLS_LIVE="HLS_LIVE",x.HLS_LIVE_CMAF="HLS_LIVE_CMAF",x.WEB_RTC_LIVE="WEB_RTC_LIVE",x))(Xe||{});var ar=(r=>(r.NOT_AVAILABLE="NOT_AVAILABLE",r.AVAILABLE="AVAILABLE",r.CONNECTING="CONNECTING",r.CONNECTED="CONNECTED",r))(ar||{}),zr=(i=>(i.HTTP1="http1",i.HTTP2="http2",i.QUIC="quic",i))(zr||{});var Kr=(s=>(s.NONE="none",s.INLINE="inline",s.FULLSCREEN="fullscreen",s.SECOND_SCREEN="second_screen",s.PIP="pip",s.INVISIBLE="invisible",s))(Kr||{});import{assertNever as ls,assertNonNullable as Yo,isNonNullable as sr,ValueSubject as Xr,Subject as zo,Subscription as Ko,merge as Xo,observableFrom as Jo,fromEvent as ss,map as ns,tap as os,filterChanged as Zo,isNullable as Jr,ErrorCategory as us}from"@vkontakte/videoplayer-shared/evergreen";var as=n=>new Promise((e,t)=>{let i=document.createElement("script");i.setAttribute("src",n),i.onload=()=>e(),i.onerror=r=>t(r),document.body.appendChild(i)});var nr=class{constructor(e){this.connection$=new Xr(void 0);this.castState$=new Xr("NOT_AVAILABLE");this.errorEvent$=new zo;this.realCastState$=new Xr("NOT_AVAILABLE");this.subscription=new Ko;this.isDestroyed=!1;this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastInitializer");let t="chrome"in window;if(this.log({message:`[constructor] receiverApplicationId: ${this.params.receiverApplicationId}, isDisabled: ${this.params.isDisabled}, isSupported: ${t}`}),e.isDisabled||!t)return;let i=sr(window.chrome?.cast),r=!!window.__onGCastApiAvailable;i?this.initializeCastApi():(window.__onGCastApiAvailable=a=>{delete window.__onGCastApiAvailable,a&&!this.isDestroyed&&this.initializeCastApi()},r||as("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:us.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(){sr(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();Jr(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();Jr(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.isDestroyed=!0,this.subscription.unsubscribe()}initListeners(){let e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),i=cast.framework.CastContext.getInstance();this.subscription.add(ss(i,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(r=>{switch(r.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 ls(r.sessionState)}})).add(Xo(ss(i,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(os(r=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(r)}`})}),ns(r=>r.castState)),Jo([i.getCastState()])).pipe(Zo(),ns(eu),os(r=>{this.log({message:`realCastState$: ${r}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(r=>{let a=r==="CONNECTED",s=sr(this.connection$.getValue());if(a&&!s){let o=i.getCurrentSession();Yo(o);let u=o.getCastDevice(),l=o.getMediaSession()?.media?.contentId;(Jr(l)||l===this.contentId)&&(this.log({message:"connection created"}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:o,castDevice:u}))}else!a&&s&&(this.log({message:"connection destroyed"}),this.connection$.next(void 0));this.castState$.next(r==="CONNECTED"?sr(this.connection$.getValue())?"CONNECTED":"AVAILABLE":r)}))}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(r){this.errorEvent$.next({id:"ChromecastInitializer",category:us.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:r})}}},eu=n=>{switch(n){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 ls(n)}};import{assertNever as ds}from"@vkontakte/videoplayer-shared/evergreen";var X=(n,e=0,t=0)=>{switch(t){case 0:return n.replace("_offset_p",e===0?"":"_"+e.toFixed(0));case 1:{if(e===0)return n;let i=new URL(n);return i.searchParams.append("playback_shift",e.toFixed(0)),i.toString()}case 2:{let i=new URL(n);return!i.searchParams.get("offset_p")&&e===0?n:(i.searchParams.set("offset_p",e.toFixed(0)),i.toString())}default:ds(t)}return n},or=(n,e)=>{switch(e){case 0:return NaN;case 1:{let t=new URL(n);return Number(t.searchParams.get("playback_shift"))}case 2:{let t=new URL(n);return Number(t.searchParams.get("offset_p")??0)}default:ds(e)}};var y=(n,e,t=!1)=>{let i=n.getTransition();(t||!i||i.to===e)&&n.setState(e)};import{isNonNullable as tu,Subject as ur,merge as cs}from"@vkontakte/videoplayer-shared/evergreen";var w=class{constructor(e){this.transitionStarted$=new ur;this.transitionEnded$=new ur;this.transitionUpdated$=new ur;this.forceChanged$=new ur;this.stateChangeStarted$=cs(this.transitionStarted$,this.transitionUpdated$);this.stateChangeEnded$=cs(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||tu(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 iu}from"@vkontakte/videoplayer-shared/evergreen";var ps=n=>{switch(n){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 iu(n)}};import{assertNever as Dt,assertNonNullable as mt,debounce as hs,ErrorCategory as ms,fromEvent as ft,isNonNullable as fs,map as bs,merge as gs,observableFrom as ru,Subject as au,Subscription as Zr,timeout as su,getHighestQuality as nu}from"@vkontakte/videoplayer-shared/evergreen";var ou=5,uu=5,lu=500,Ss=7e3,Wt=class{constructor(e){this.subscription=new Zr;this.loadMediaTimeoutSubscription=new Zr;this.videoState=new w("stopped");this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),i=this.params.desiredState.playbackState.getState(),r=this.params.desiredState.playbackState.getTransition(),a=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(a)};`}),i==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.stop());return}if(!t){if(r?.to!=="paused"&&a.state==="requested"&&e!=="stopped"){this.seek(a.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:Dt(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:Dt(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:Dt(e)}break}default:Dt(i)}}};this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(ps(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 Zr;this.subscription.add(e),this.subscription.add(gs(this.videoState.stateChangeStarted$.pipe(bs(r=>`stateChangeStarted$ ${JSON.stringify(r)}`)),this.videoState.stateChangeEnded$.pipe(bs(r=>`stateChangeEnded$ ${JSON.stringify(r)}`))).subscribe(r=>this.log({message:`[videoState] ${r}`})));let t=(r,a)=>this.subscription.add(r.subscribe(a));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{let r=new au;e.add(r.pipe(hs(lu)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let a=NaN;e.add(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(s=>{this.logRemoteEvent(s);let o=s.value;this.params.output.position$.next(o),(this.params.desiredState.seekState.getState().state==="applying"||Math.abs(o-a)>ou)&&r.next(o),a=o})),e.add(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(s=>{this.logRemoteEvent(s),this.params.output.duration$.next(s.value)}))}t(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemotePause():this.handleRemotePlay()}),t(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),r=>{this.logRemoteEvent(r);let{remotePlayer:a}=this.params.connection,s=r.value,o=this.params.output.isBuffering$.getValue(),u=s===chrome.cast.media.PlayerState.BUFFERING;switch(o!==u&&this.params.output.isBuffering$.next(u),s){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&a.duration-a.currentTime<uu&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),y(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:Dt(s)}}),t(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({volume:r.value})}),t(ft(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({muted:r.value})});let i=gs(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,ru(["init"])).pipe(hs(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"),y(this.params.desiredState.playbackState,"paused")):(this.videoState.setState("playing"),y(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"),y(this.params.desiredState.playbackState,"paused"))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="playing"||e==="paused")&&(this.videoState.setState("playing"),y(this.params.desiredState.playbackState,"playing"))}handleRemoteReady(){this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.params.desiredState.playbackState.getTransition()?.to==="ready"&&y(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,r,a;switch(e){case"MPEG":{let l=t[e];mt(l);let c=nu(Object.keys(l));mt(c);let d=l[c];mt(d),i=d,r="video/mp4",a=chrome.cast.media.StreamType.BUFFERED;break}case"HLS":case"HLS_ONDEMAND":{let l=t[e];mt(l),i=l.url,r="application/x-mpegurl",a=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];mt(l),i=l.url,r="application/dash+xml",a=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_LIVE_CMAF":{let l=t[e];mt(l),i=l.url,r="application/dash+xml",a=chrome.cast.media.StreamType.LIVE;break}case"HLS_LIVE":case"HLS_LIVE_CMAF":{let l=t[e];mt(l),i=X(l.url),r="application/x-mpegurl",a=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:ms.VIDEO_PIPELINE,message:l,thrown:c}),c}case"DASH":case"DASH_LIVE_WEBM":throw new Error(`${e} is no longer supported`);default:return Dt(e)}let s=new chrome.cast.media.MediaInfo(this.params.meta.videoId??i,r);s.contentUrl=i,s.streamType=a,s.metadata=new chrome.cast.media.GenericMediaMetadata;let{title:o,subtitle:u}=this.params.meta;return fs(o)&&(s.metadata.title=o),fs(u)&&(s.metadata.subtitle=u),s}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((r,a)=>{this.loadMediaTimeoutSubscription.add(su(Ss).subscribe(()=>a(`timeout(${Ss})`)))});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()},r=>{let a=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${r}`;this.log({message:a}),this.params.output.error$.next({id:"ChromecastProvider.loadMedia",category:ms.VIDEO_PIPELINE,message:a,thrown:r})}).finally(()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}};import{clearVideoElement as Ts}from"@vkontakte/videoplayer-shared/evergreen";import{clearVideoElement as du}from"@vkontakte/videoplayer-shared/evergreen";var vs=n=>{try{n.pause(),n.playbackRate=0,du(n),n.remove()}catch(e){console.error(e)}};import{fromEvent as cu,Subscription as pu}from"@vkontakte/videoplayer-shared/evergreen";var ea=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)}},ta=window.WeakMap?new WeakMap:new ea,ia=window.WeakMap?new WeakMap:new Map,hu=(n,e=20)=>{let t=0;return cu(n,"ratechange").subscribe(i=>{t++,t>=e&&(n.currentTime=n.currentTime,t=0)})},ae=(n,{audioVideoSyncRate:e})=>{let t=n.querySelector("video"),i=!!t;t?Ts(t):(t=document.createElement("video"),n.appendChild(t)),ta.set(t,i);let r=new pu;return r.add(hu(t,e)),ia.set(t,r),t.setAttribute("crossorigin","anonymous"),t.setAttribute("playsinline","playsinline"),t.controls=!1,t.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),t},se=n=>{ia.get(n)?.unsubscribe(),ia.delete(n);let t=ta.get(n);ta.delete(n),t?Ts(n):vs(n)};import{assertNonNullable as Gt,isNonNullable as Ce,isNullable as bu,fromEvent as Ct,merge as ys,observableFrom as Is,filterChanged as Es,map as Yt,Subject as xs,Subscription as gu,ValueSubject as Su,ErrorCategory as vu}from"@vkontakte/videoplayer-shared/evergreen";import{isNonNullable as ra,isNullable as mu,Subscription as fu}from"@vkontakte/videoplayer-shared/evergreen";var lr=(n,e,t,{equal:i=(s,o)=>s===o,changed$:r,onError:a}={})=>{let s=n.getState(),o=e(),u=mu(r),l=new fu;return r&&l.add(r.subscribe(c=>{let d=n.getState();i(c,d)&&n.setState(c)},a)),i(o,s)||(t(s),u&&n.setState(s)),l.add(n.stateChangeStarted$.subscribe(c=>{t(c.to),u&&n.setState(c.to)},a)),l},De=(n,e,t)=>lr(e,()=>n.loop,i=>{ra(i)&&(n.loop=i)},{onError:t}),ne=(n,e,t,i)=>lr(e,()=>({muted:n.muted,volume:n.volume}),r=>{ra(r)&&(n.muted=r.muted,n.volume=r.volume)},{equal:(r,a)=>r===a||r?.muted===a?.muted&&r?.volume===a?.volume,changed$:t,onError:i}),ge=(n,e,t,i)=>lr(e,()=>n.playbackRate,r=>{ra(r)&&(n.playbackRate=r)},{changed$:t,onError:i}),Je=lr;var Tu=n=>["__",n.language,n.label].join("|"),yu=(n,e)=>{if(n.id===e)return!0;let[t,i,r]=e.split("|");return n.language===i&&n.label===r},aa=class n{constructor(e){this.available$=new xs;this.current$=new Su(void 0);this.error$=new xs;this.subscription=new gu;this.externalTracks=new Map;this.internalTracks=new Map;this.baseURL=e}connect(e,t,i){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();let r=a=>{this.error$.next({id:"TextTracksManager",category:vu.WTF,message:"Generic HtmlVideoTextTrackManager error",thrown:a})};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(Je(t.internalTextTracks,()=>Object.values(this.internalTracks),a=>{Ce(a)&&this.setInternal(a)},{equal:(a,s)=>Ce(a)&&Ce(s)&&a.length===s.length&&a.every(({id:o},u)=>o===s[u].id),changed$:this.available$.pipe(Yt(a=>a.filter(({type:s})=>s==="internal"))),onError:r})),this.subscription.add(Je(t.externalTextTracks,()=>Object.values(this.externalTracks),a=>{Ce(a)&&this.setExternal(a)},{equal:(a,s)=>Ce(a)&&Ce(s)&&a.length===s.length&&a.every(({id:o},u)=>o===s[u].id),changed$:this.available$.pipe(Yt(a=>a.filter(({type:s})=>s==="external"))),onError:r})),this.subscription.add(Je(t.currentTextTrack,()=>{if(this.video)return;let a=this.htmlTextTracksAsArray().find(({mode:s})=>s==="showing");return a&&this.htmlTextTrackToITextTrack(a).id},a=>this.select(a),{changed$:this.current$,onError:r})),this.subscription.add(Je(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let a of this.htmlTextTracksAsArray())this.applyCueSettings(a.cues),this.applyCueSettings(a.activeCues)}))}subscribe(){Gt(this.video);let{textTracks:e}=this.video;this.subscription.add(Ct(e,"addtrack").subscribe(()=>{let i=this.current$.getValue();i&&this.select(i)})),this.subscription.add(ys(Ct(e,"addtrack"),Ct(e,"removetrack"),Is(["init"])).pipe(Yt(()=>this.htmlTextTracksAsArray().map(i=>this.htmlTextTrackToITextTrack(i))),Es((i,r)=>i.length===r.length&&i.every(({id:a},s)=>a===r[s].id))).subscribe(this.available$)),this.subscription.add(ys(Ct(e,"change"),Is(["init"])).pipe(Yt(()=>this.htmlTextTracksAsArray().find(({mode:i})=>i==="showing")),Yt(i=>i&&this.htmlTextTrackToITextTrack(i).id),Es()).subscribe(this.current$));let t=i=>this.applyCueSettings(i.target?.activeCues??null);this.subscription.add(Ct(e,"addtrack").subscribe(i=>{i.track?.addEventListener("cuechange",t);let r=a=>{let s=a.target?.cues??null;s&&s.length&&(this.applyCueSettings(a.target?.cues??null),a.target?.removeEventListener("cuechange",r))};i.track?.addEventListener("cuechange",r)})),this.subscription.add(Ct(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 r=i;Ce(t.align)&&(r.align=t.align),Ce(t.position)&&(r.position=t.position),Ce(t.size)&&(r.size=t.size),Ce(t.line)&&(r.line=t.line)}}htmlTextTracksAsArray(e=!1){Gt(this.video);let t=[...this.video.textTracks];return e?t:t.filter(n.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:i}=e,r=e.id?e.id:Tu(e),a=this.externalTracks.has(r),s=(a?this.externalTracks.get(r)?.isAuto:this.internalTracks.get(r)?.isAuto)??r.includes("auto");return a?{id:r,type:"external",isAuto:s,language:t,label:i,url:this.externalTracks.get(r)?.url}:{id:r,type:"internal",isAuto:s,language:t,label:i,url:this.internalTracks.get(r)?.url}}static isHealthyTrack(e){return!(e.kind==="metadata"||e.groupId||e.id===""&&e.label===""&&e.language==="")}setExternal(e){this.internalTracks.size>0&&Array.from(this.internalTracks).forEach(([,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:r,isAuto:a})=>!this.internalTracks.has(i)&&!t.some(([,s])=>s.language===r&&s.isAuto===a)).forEach(i=>this.attach(i)),Array.from(this.internalTracks).filter(([i])=>!e.find(r=>r.id===i)).forEach(([,i])=>this.detach(i))}select(e){Gt(this.video);for(let t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(let t of this.htmlTextTracksAsArray(!0))(bu(e)||!yu(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){Gt(this.video);let t=document.createElement("track");this.baseURL?t.setAttribute("src",new URL(e.url,this.baseURL).toString()):t.setAttribute("src",e.url),t.setAttribute("id",e.id),e.label&&t.setAttribute("label",e.label),e.language&&t.setAttribute("srclang",e.language),e.type==="external"?this.externalTracks.set(e.id,e):e.type==="internal"&&this.internalTracks.set(e.id,e),this.video.appendChild(t)}detach(e){Gt(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)}},Se=aa;var He=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 ks=n=>{let e=n;for(;!(e instanceof Document)&&!(e instanceof ShadowRoot)&&e!==null;)e=e?.parentNode;return e??void 0},sa=n=>{let e=ks(n);return!!(e&&e.fullscreenElement&&e.fullscreenElement===n)},Ps=n=>{let e=ks(n);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===n)};import{fromEvent as ve,map as Ze,merge as ws,filterChanged as Eu,isNonNullable as $s,Subject as xu,filter as Ls,mapTo as Ms,combine as ku,once as Pu,ErrorCategory as Au,ValueSubject as Rs,clientChecker as wu}from"@vkontakte/videoplayer-shared/evergreen";var Iu=3,As=(n,e,t=Iu)=>{let i=0,r=0;for(let a=0;a<n.length;a++){let s=n.start(a),o=n.end(a);if(s<=e&&e<=o){if(i=s,r=o,!t)return{from:i,to:r};for(let u=a-1;u>=0;u--)n.end(u)+t>=i&&(i=n.start(u));for(let u=a+1;u<n.length;u++)n.start(u)-t<=r&&(r=n.end(u))}}return{from:i,to:r}};var oe=n=>{let e=x=>ve(n,x).pipe(Ms(void 0)),i=ws(...["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"].map(x=>ve(n,x))).pipe(Ze(x=>x.type==="ended"?n.readyState<2:n.readyState<3),Eu()),r=ws(ve(n,"progress"),ve(n,"timeupdate")).pipe(Ze(()=>As(n.buffered,n.currentTime))),a=wu.isSafari?ku({play:e("play").pipe(Pu()),playing:e("playing")}).pipe(Ms(void 0)):e("playing"),s=ve(n,"volumechange").pipe(Ze(()=>({muted:n.muted,volume:n.volume}))),o=ve(n,"ratechange").pipe(Ze(()=>n.playbackRate)),u=ve(n,"error").pipe(Ls(()=>!!(n.error||n.played.length)),Ze(()=>{let x=n.error;return{id:x?`MediaError#${x.code}`:"HtmlVideoError",category:Au.VIDEO_PIPELINE,message:x?x.message:"Error event from HTML video element",thrown:n.error??void 0}})),l=ve(n,"timeupdate").pipe(Ze(()=>n.currentTime)),c=new xu,d=.3,p;l.subscribe(x=>{n.loop&&$s(p)&&$s(x)&&p>=n.duration-d&&x<=d&&c.next(p),p=x});let h=e("pause").pipe(Ls(()=>!n.error&&p!==n.duration)),m=ve(n,"enterpictureinpicture"),f=ve(n,"leavepictureinpicture"),g=new Rs(Ps(n));m.subscribe(()=>g.next(!0)),f.subscribe(()=>g.next(!1));let v=new Rs(sa(n));return ve(n,"fullscreenchange").pipe(Ze(()=>sa(n))).subscribe(v),{playing$:a,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$:ve(n,"durationchange").pipe(Ze(()=>n.duration)),isBuffering$:i,currentBuffer$:r,volumeState$:s,playbackRateState$:o,inPiP$:g,inFullscreen$:v,enterPip$:m,leavePip$:f}};import{VideoQuality as et}from"@vkontakte/videoplayer-shared/evergreen";var tt=n=>{switch(n){case"mobile":return et.Q_144P;case"lowest":return et.Q_240P;case"low":return et.Q_360P;case"sd":case"medium":return et.Q_480P;case"hd":case"high":return et.Q_720P;case"fullhd":case"full":return et.Q_1080P;case"quadhd":case"quad":return et.Q_1440P;case"ultrahd":case"ultra":return et.Q_2160P}};import{isNonNullable as G,isNullable as oa,now as _s,isHigher as ua,isHigherOrEqual as la,isInvariantQuality as Bs,isLower as Os,isLowerOrEqual as da,videoSizeToQuality as $u,assertNotEmptyArray as Fs,assertNonNullable as Lu}from"@vkontakte/videoplayer-shared/evergreen";var na=!1,Qe={},Ds=n=>{na=n},Cs=()=>{Qe={}},Vs=n=>{n(Qe)},zt=(n,e)=>{na&&(Qe.meta=Qe.meta??{},Qe.meta[n]=e)},ee=class{constructor(e){this.name=e}next(e){if(!na)return;Qe.series=Qe.series??{};let t=Qe.series[this.name]??[];t.push([Date.now(),e]),Qe.series[this.name]=t}};var Mu=new ee("best_bitrate"),Us=(n,e,t)=>(e-t)*Math.pow(2,-10*n)+t;var ca=n=>(e,t)=>n*(Number(e.bitrate)-Number(t.bitrate)),Kt=class{constructor(){this.history={}}recordSelection(e){this.history[e.id]=_s()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}},Hs='Assertion "ABR Tracks is empty array" failed',dr=(n,e,t,i)=>{let r=[...e].sort(ca(1)),a=[...t].sort(ca(1)),s=a.filter(u=>G(u.bitrate)&&G(n.bitrate)?n.bitrate/u.bitrate>i:!0),o=a.at(Math.round(a.length*r.indexOf(n)/(r.length+1)))??a.at(-1);return o&&s.includes(o)?o:s.length?s.at(-1):a.at(0)},Ns=n=>"quality"in n,Qs=(n,e,t,i)=>{let r=G(i?.last?.bitrate)&&G(t?.bitrate)&&i.last.bitrate<t.bitrate?n.trackCooldownIncreaseQuality:n.trackCooldownDecreaseQuality,a=t&&i&&i.history[t.id]&&_s()-i.history[t.id]<=r&&(!i.last||t.id!==i.last.id);if(t?.id&&i&&!a&&i.recordSelection(t),a&&i?.last){let s=i.last;i?.recordSwitch(s);let o=Ns(s)?"video":"audio",u=Ns(s)?s.quality:s.bitrate;return e({message:`
|
|
7
7
|
[last ${o} selected] ${u}
|
|
8
8
|
`}),s}return i?.recordSwitch(t),t},Ru=(n,e)=>Math.log(e)/Math.log(n),it=(n,{container:e,estimatedThroughput:t,tuning:i,limits:r,reserve:a=0,forwardBufferHealth:s,playbackRate:o,current:u,history:l,visible:c,droppedVideoMaxQualityLimit:d,stallsVideoMaxQualityLimit:p,stallsPredictedThroughput:h,abrLogger:m})=>{Fs(n,Hs);let f=i.containerSizeFactor;if(i.usePixelRatio&&window.devicePixelRatio){let b=window.devicePixelRatio;if(i.pixelRatioMultiplier)f*=i.pixelRatioMultiplier*(b-1)+1;else{let E=i.pixelRatioLogBase,[F=0,me=0,Ie=0]=i.pixelRatioLogCoefficients,k=Ru(E,F*b+me)+Ie;Number.isFinite(k)&&(f*=k)}}let g=i.limitByContainer&&e&&e.width>0&&e.height>0?{width:e.width*f,height:e.height*f}:void 0,v=i.considerPlaybackRate&&G(o)?o:1,M=n.filter(b=>!Bs(b.quality)).sort((b,E)=>ua(b.quality,E.quality)?-1:1),x=M.at(-1)?.quality,P=M.at(0)?.quality,S=oa(r)||G(r.min)&&G(r.max)&&Os(r.max,r.min)||G(r.min)&&P&&ua(r.min,P)||G(r.max)&&x&&Os(r.max,x),T=v*Us(s??.5,i.bitrateFactorAtEmptyBuffer,i.bitrateFactorAtFullBuffer),L={},O=M.filter(b=>{let E=!0;if(g)if(b.size)E=b.size.width<=g.width&&b.size.height<=g.height;else{let H=g&&$u(g);E=H?da(b.quality,H):!0}if(!E)return L[b.quality]="FitsContainer",!1;let F=h||t;if(!(G(F)&&isFinite(F)&&G(b.bitrate)?F-a>=b.bitrate*T:!0))return L[b.quality]="FitsThroughput",!1;if(i.lazyQualitySwitch&&G(i.minBufferToSwitchUp)&&u&&!Bs(u.quality)&&(s??0)<i.minBufferToSwitchUp&&ua(b.quality,u.quality))return L[b.quality]="Buffer",!1;if(!!d&&la(b.quality,d))return L[b.quality]="DroppedFramesLimit",!1;if(!!p&&la(b.quality,p))return L[b.quality]="StallsLimit",!1;let V=S||(oa(r.max)||da(b.quality,r.max))&&(oa(r.min)||la(b.quality,r.min)),A=G(c)&&!c?da(b.quality,i.backgroundVideoQualityLimit):!0;return!V||!A?(L[b.quality]="FitsQualityLimits",!1):!0})[0];O&&O.bitrate&&Mu.next(O.bitrate);let _=O??M.at(-1)??n[0];return _.quality!==l?.last?.quality&&m({message:`
|
|
9
9
|
[VIDEO TRACKS ABR]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vkontakte/videoplayer-core",
|
|
3
|
-
"version": "2.0.123-dev.
|
|
3
|
+
"version": "2.0.123-dev.111b6d7e.0",
|
|
4
4
|
"author": "vk.com",
|
|
5
5
|
"description": "Videoplayer core library based on the vk.com platform",
|
|
6
6
|
"homepage": "https://vk.com",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"**/*.d.ts"
|
|
50
50
|
],
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@vkontakte/videoplayer-shared": "1.0.52-dev.
|
|
52
|
+
"@vkontakte/videoplayer-shared": "1.0.52-dev.f5c93736.0",
|
|
53
53
|
"hls.js": "~1.4.7"
|
|
54
54
|
}
|
|
55
55
|
}
|