@vkontakte/videoplayer-core 2.0.129-dev.8b747eca.0 → 2.0.129-dev.93c0f27a.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/esnext.esm.js CHANGED
@@ -1,10 +1,10 @@
1
1
  /**
2
- * @vkontakte/videoplayer-core v2.0.129-dev.8b747eca.0
3
- * Fri, 21 Mar 2025 15:48:17 GMT
2
+ * @vkontakte/videoplayer-core v2.0.129-dev.93c0f27a.0
3
+ * Tue, 18 Mar 2025 09:09:52 GMT
4
4
  * https://st.mycdn.me/static/vkontakte-videoplayer/2-0-129/doc/
5
5
  */
6
6
  var Vy=Object.create;var Xl=Object.defineProperty;var _y=Object.getOwnPropertyDescriptor;var By=Object.getOwnPropertyNames;var Oy=Object.getPrototypeOf,Ny=Object.prototype.hasOwnProperty;var h=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var Fy=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of By(e))!Ny.call(r,a)&&a!==t&&Xl(r,a,{get:()=>e[a],enumerable:!(i=_y(e,a))||i.enumerable});return r};var $=(r,e,t)=>(t=r!=null?Vy(Oy(r)):{},Fy(e||!r||!r.__esModule?Xl(t,"default",{value:r,enumerable:!0}):t,r));var X=h((Ln,Zl)=>{"use strict";var Xi=function(r){return r&&r.Math===Math&&r};Zl.exports=Xi(typeof globalThis=="object"&&globalThis)||Xi(typeof window=="object"&&window)||Xi(typeof self=="object"&&self)||Xi(typeof global=="object"&&global)||Xi(typeof Ln=="object"&&Ln)||function(){return this}()||Function("return this")()});var oe=h((hD,ec)=>{"use strict";ec.exports=function(r){try{return!!r()}catch{return!0}}});var Ji=h((mD,tc)=>{"use strict";var qy=oe();tc.exports=!qy(function(){var r=function(){}.bind();return typeof r!="function"||r.hasOwnProperty("prototype")})});var Rn=h((fD,sc)=>{"use strict";var Uy=Ji(),ac=Function.prototype,ic=ac.apply,rc=ac.call;sc.exports=typeof Reflect=="object"&&Reflect.apply||(Uy?rc.bind(ic):function(){return rc.apply(ic,arguments)})});var ie=h((bD,uc)=>{"use strict";var nc=Ji(),oc=Function.prototype,$n=oc.call,Hy=nc&&oc.bind.bind($n,$n);uc.exports=nc?Hy:function(r){return function(){return $n.apply(r,arguments)}}});var Ht=h((gD,cc)=>{"use strict";var lc=ie(),jy=lc({}.toString),Qy=lc("".slice);cc.exports=function(r){return Qy(jy(r),8,-1)}});var Mn=h((vD,dc)=>{"use strict";var Gy=Ht(),Wy=ie();dc.exports=function(r){if(Gy(r)==="Function")return Wy(r)}});var K=h((SD,pc)=>{"use strict";var Cn=typeof document=="object"&&document.all;pc.exports=typeof Cn>"u"&&Cn!==void 0?function(r){return typeof r=="function"||r===Cn}:function(r){return typeof r=="function"}});var we=h((yD,hc)=>{"use strict";var Yy=oe();hc.exports=!Yy(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7})});var Ae=h((TD,mc)=>{"use strict";var zy=Ji(),Ua=Function.prototype.call;mc.exports=zy?Ua.bind(Ua):function(){return Ua.apply(Ua,arguments)}});var Dn=h(gc=>{"use strict";var fc={}.propertyIsEnumerable,bc=Object.getOwnPropertyDescriptor,Ky=bc&&!fc.call({1:2},1);gc.f=Ky?function(e){var t=bc(this,e);return!!t&&t.enumerable}:fc});var Zi=h((ED,vc)=>{"use strict";vc.exports=function(r,e){return{enumerable:!(r&1),configurable:!(r&2),writable:!(r&4),value:e}}});var yc=h((xD,Sc)=>{"use strict";var Xy=ie(),Jy=oe(),Zy=Ht(),Vn=Object,eT=Xy("".split);Sc.exports=Jy(function(){return!Vn("z").propertyIsEnumerable(0)})?function(r){return Zy(r)==="String"?eT(r,""):Vn(r)}:Vn});var mi=h((PD,Tc)=>{"use strict";Tc.exports=function(r){return r==null}});var Et=h((kD,Ic)=>{"use strict";var tT=mi(),iT=TypeError;Ic.exports=function(r){if(tT(r))throw new iT("Can't call method on "+r);return r}});var jt=h((wD,Ec)=>{"use strict";var rT=yc(),aT=Et();Ec.exports=function(r){return rT(aT(r))}});var Le=h((AD,xc)=>{"use strict";var sT=K();xc.exports=function(r){return typeof r=="object"?r!==null:sT(r)}});var fi=h((LD,Pc)=>{"use strict";Pc.exports={}});var ct=h((RD,wc)=>{"use strict";var _n=fi(),Bn=X(),nT=K(),kc=function(r){return nT(r)?r:void 0};wc.exports=function(r,e){return arguments.length<2?kc(_n[r])||kc(Bn[r]):_n[r]&&_n[r][e]||Bn[r]&&Bn[r][e]}});var er=h(($D,Ac)=>{"use strict";var oT=ie();Ac.exports=oT({}.isPrototypeOf)});var Qt=h((MD,$c)=>{"use strict";var uT=X(),Lc=uT.navigator,Rc=Lc&&Lc.userAgent;$c.exports=Rc?String(Rc):""});var Nn=h((CD,Bc)=>{"use strict";var _c=X(),On=Qt(),Mc=_c.process,Cc=_c.Deno,Dc=Mc&&Mc.versions||Cc&&Cc.version,Vc=Dc&&Dc.v8,je,Ha;Vc&&(je=Vc.split("."),Ha=je[0]>0&&je[0]<4?1:+(je[0]+je[1]));!Ha&&On&&(je=On.match(/Edge\/(\d+)/),(!je||je[1]>=74)&&(je=On.match(/Chrome\/(\d+)/),je&&(Ha=+je[1])));Bc.exports=Ha});var Fn=h((DD,Nc)=>{"use strict";var Oc=Nn(),lT=oe(),cT=X(),dT=cT.String;Nc.exports=!!Object.getOwnPropertySymbols&&!lT(function(){var r=Symbol("symbol detection");return!dT(r)||!(Object(r)instanceof Symbol)||!Symbol.sham&&Oc&&Oc<41})});var qn=h((VD,Fc)=>{"use strict";var pT=Fn();Fc.exports=pT&&!Symbol.sham&&typeof Symbol.iterator=="symbol"});var Un=h((_D,qc)=>{"use strict";var hT=ct(),mT=K(),fT=er(),bT=qn(),gT=Object;qc.exports=bT?function(r){return typeof r=="symbol"}:function(r){var e=hT("Symbol");return mT(e)&&fT(e.prototype,gT(r))}});var tr=h((BD,Uc)=>{"use strict";var vT=String;Uc.exports=function(r){try{return vT(r)}catch{return"Object"}}});var tt=h((OD,Hc)=>{"use strict";var ST=K(),yT=tr(),TT=TypeError;Hc.exports=function(r){if(ST(r))return r;throw new TT(yT(r)+" is not a function")}});var ir=h((ND,jc)=>{"use strict";var IT=tt(),ET=mi();jc.exports=function(r,e){var t=r[e];return ET(t)?void 0:IT(t)}});var Gc=h((FD,Qc)=>{"use strict";var Hn=Ae(),jn=K(),Qn=Le(),xT=TypeError;Qc.exports=function(r,e){var t,i;if(e==="string"&&jn(t=r.toString)&&!Qn(i=Hn(t,r))||jn(t=r.valueOf)&&!Qn(i=Hn(t,r))||e!=="string"&&jn(t=r.toString)&&!Qn(i=Hn(t,r)))return i;throw new xT("Can't convert object to primitive value")}});var Qe=h((qD,Wc)=>{"use strict";Wc.exports=!0});var Kc=h((UD,zc)=>{"use strict";var Yc=X(),PT=Object.defineProperty;zc.exports=function(r,e){try{PT(Yc,r,{value:e,configurable:!0,writable:!0})}catch{Yc[r]=e}return e}});var rr=h((HD,Zc)=>{"use strict";var kT=Qe(),wT=X(),AT=Kc(),Xc="__core-js_shared__",Jc=Zc.exports=wT[Xc]||AT(Xc,{});(Jc.versions||(Jc.versions=[])).push({version:"3.38.0",mode:kT?"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 Gn=h((jD,td)=>{"use strict";var ed=rr();td.exports=function(r,e){return ed[r]||(ed[r]=e||{})}});var bi=h((QD,id)=>{"use strict";var LT=Et(),RT=Object;id.exports=function(r){return RT(LT(r))}});var Ge=h((GD,rd)=>{"use strict";var $T=ie(),MT=bi(),CT=$T({}.hasOwnProperty);rd.exports=Object.hasOwn||function(e,t){return CT(MT(e),t)}});var Wn=h((WD,ad)=>{"use strict";var DT=ie(),VT=0,_T=Math.random(),BT=DT(1 .toString);ad.exports=function(r){return"Symbol("+(r===void 0?"":r)+")_"+BT(++VT+_T,36)}});var ue=h((YD,nd)=>{"use strict";var OT=X(),NT=Gn(),sd=Ge(),FT=Wn(),qT=Fn(),UT=qn(),gi=OT.Symbol,Yn=NT("wks"),HT=UT?gi.for||gi:gi&&gi.withoutSetter||FT;nd.exports=function(r){return sd(Yn,r)||(Yn[r]=qT&&sd(gi,r)?gi[r]:HT("Symbol."+r)),Yn[r]}});var cd=h((zD,ld)=>{"use strict";var jT=Ae(),od=Le(),ud=Un(),QT=ir(),GT=Gc(),WT=ue(),YT=TypeError,zT=WT("toPrimitive");ld.exports=function(r,e){if(!od(r)||ud(r))return r;var t=QT(r,zT),i;if(t){if(e===void 0&&(e="default"),i=jT(t,r,e),!od(i)||ud(i))return i;throw new YT("Can't convert object to primitive value")}return e===void 0&&(e="number"),GT(r,e)}});var zn=h((KD,dd)=>{"use strict";var KT=cd(),XT=Un();dd.exports=function(r){var e=KT(r,"string");return XT(e)?e:e+""}});var ja=h((XD,hd)=>{"use strict";var JT=X(),pd=Le(),Kn=JT.document,ZT=pd(Kn)&&pd(Kn.createElement);hd.exports=function(r){return ZT?Kn.createElement(r):{}}});var Xn=h((JD,md)=>{"use strict";var eI=we(),tI=oe(),iI=ja();md.exports=!eI&&!tI(function(){return Object.defineProperty(iI("div"),"a",{get:function(){return 7}}).a!==7})});var gd=h(bd=>{"use strict";var rI=we(),aI=Ae(),sI=Dn(),nI=Zi(),oI=jt(),uI=zn(),lI=Ge(),cI=Xn(),fd=Object.getOwnPropertyDescriptor;bd.f=rI?fd:function(e,t){if(e=oI(e),t=uI(t),cI)try{return fd(e,t)}catch{}if(lI(e,t))return nI(!aI(sI.f,e,t),e[t])}});var Jn=h((e0,vd)=>{"use strict";var dI=oe(),pI=K(),hI=/#|\.prototype\./,ar=function(r,e){var t=fI[mI(r)];return t===gI?!0:t===bI?!1:pI(e)?dI(e):!!e},mI=ar.normalize=function(r){return String(r).replace(hI,".").toLowerCase()},fI=ar.data={},bI=ar.NATIVE="N",gI=ar.POLYFILL="P";vd.exports=ar});var vi=h((t0,yd)=>{"use strict";var Sd=Mn(),vI=tt(),SI=Ji(),yI=Sd(Sd.bind);yd.exports=function(r,e){return vI(r),e===void 0?r:SI?yI(r,e):function(){return r.apply(e,arguments)}}});var Zn=h((i0,Td)=>{"use strict";var TI=we(),II=oe();Td.exports=TI&&II(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42})});var it=h((r0,Id)=>{"use strict";var EI=Le(),xI=String,PI=TypeError;Id.exports=function(r){if(EI(r))return r;throw new PI(xI(r)+" is not an object")}});var Gt=h(xd=>{"use strict";var kI=we(),wI=Xn(),AI=Zn(),Qa=it(),Ed=zn(),LI=TypeError,eo=Object.defineProperty,RI=Object.getOwnPropertyDescriptor,to="enumerable",io="configurable",ro="writable";xd.f=kI?AI?function(e,t,i){if(Qa(e),t=Ed(t),Qa(i),typeof e=="function"&&t==="prototype"&&"value"in i&&ro in i&&!i[ro]){var a=RI(e,t);a&&a[ro]&&(e[t]=i.value,i={configurable:io in i?i[io]:a[io],enumerable:to in i?i[to]:a[to],writable:!1})}return eo(e,t,i)}:eo:function(e,t,i){if(Qa(e),t=Ed(t),Qa(i),wI)try{return eo(e,t,i)}catch{}if("get"in i||"set"in i)throw new LI("Accessors not supported");return"value"in i&&(e[t]=i.value),e}});var Si=h((s0,Pd)=>{"use strict";var $I=we(),MI=Gt(),CI=Zi();Pd.exports=$I?function(r,e,t){return MI.f(r,e,CI(1,t))}:function(r,e,t){return r[e]=t,r}});var Z=h((n0,wd)=>{"use strict";var sr=X(),DI=Rn(),VI=Mn(),_I=K(),BI=gd().f,OI=Jn(),yi=fi(),NI=vi(),Ti=Si(),kd=Ge();rr();var FI=function(r){var e=function(t,i,a){if(this instanceof e){switch(arguments.length){case 0:return new r;case 1:return new r(t);case 2:return new r(t,i)}return new r(t,i,a)}return DI(r,this,arguments)};return e.prototype=r.prototype,e};wd.exports=function(r,e){var t=r.target,i=r.global,a=r.stat,s=r.proto,n=i?sr:a?sr[t]:sr[t]&&sr[t].prototype,o=i?yi:yi[t]||Ti(yi,t,{})[t],u=o.prototype,l,d,c,p,m,f,b,g,v;for(p in e)l=OI(i?p:t+(a?".":"#")+p,r.forced),d=!l&&n&&kd(n,p),f=o[p],d&&(r.dontCallGetSet?(v=BI(n,p),b=v&&v.value):b=n[p]),m=d&&b?b:e[p],!(!l&&!s&&typeof f==typeof m)&&(r.bind&&d?g=NI(m,sr):r.wrap&&d?g=FI(m):s&&_I(m)?g=VI(m):g=m,(r.sham||m&&m.sham||f&&f.sham)&&Ti(g,"sham",!0),Ti(o,p,g),s&&(c=t+"Prototype",kd(yi,c)||Ti(yi,c,{}),Ti(yi[c],p,m),r.real&&u&&(l||!u[p])&&Ti(u,p,m)))}});var Ld=h((o0,Ad)=>{"use strict";var qI=Math.ceil,UI=Math.floor;Ad.exports=Math.trunc||function(e){var t=+e;return(t>0?UI:qI)(t)}});var nr=h((u0,Rd)=>{"use strict";var HI=Ld();Rd.exports=function(r){var e=+r;return e!==e||e===0?0:HI(e)}});var Md=h((l0,$d)=>{"use strict";var jI=nr(),QI=Math.max,GI=Math.min;$d.exports=function(r,e){var t=jI(r);return t<0?QI(t+e,0):GI(t,e)}});var ao=h((c0,Cd)=>{"use strict";var WI=nr(),YI=Math.min;Cd.exports=function(r){var e=WI(r);return e>0?YI(e,9007199254740991):0}});var Ii=h((d0,Dd)=>{"use strict";var zI=ao();Dd.exports=function(r){return zI(r.length)}});var so=h((p0,_d)=>{"use strict";var KI=jt(),XI=Md(),JI=Ii(),Vd=function(r){return function(e,t,i){var a=KI(e),s=JI(a);if(s===0)return!r&&-1;var n=XI(i,s),o;if(r&&t!==t){for(;s>n;)if(o=a[n++],o!==o)return!0}else for(;s>n;n++)if((r||n in a)&&a[n]===t)return r||n||0;return!r&&-1}};_d.exports={includes:Vd(!0),indexOf:Vd(!1)}});var or=h((h0,Bd)=>{"use strict";Bd.exports=function(){}});var Od=h(()=>{"use strict";var ZI=Z(),eE=so().includes,tE=oe(),iE=or(),rE=tE(function(){return!Array(1).includes()});ZI({target:"Array",proto:!0,forced:rE},{includes:function(e){return eE(this,e,arguments.length>1?arguments[1]:void 0)}});iE("includes")});var xt=h((b0,Nd)=>{"use strict";var aE=ct();Nd.exports=aE});var qd=h((g0,Fd)=>{"use strict";Od();var sE=xt();Fd.exports=sE("Array","includes")});var Hd=h((v0,Ud)=>{"use strict";var nE=qd();Ud.exports=nE});var Be=h((S0,jd)=>{"use strict";var oE=Hd();jd.exports=oE});var Ya=h(($0,Jd)=>{"use strict";var fE=Gn(),bE=Wn(),Xd=fE("keys");Jd.exports=function(r){return Xd[r]||(Xd[r]=bE(r))}});var ep=h((M0,Zd)=>{"use strict";var gE=oe();Zd.exports=!gE(function(){function r(){}return r.prototype.constructor=null,Object.getPrototypeOf(new r)!==r.prototype})});var za=h((C0,ip)=>{"use strict";var vE=Ge(),SE=K(),yE=bi(),TE=Ya(),IE=ep(),tp=TE("IE_PROTO"),uo=Object,EE=uo.prototype;ip.exports=IE?uo.getPrototypeOf:function(r){var e=yE(r);if(vE(e,tp))return e[tp];var t=e.constructor;return SE(t)&&e instanceof t?t.prototype:e instanceof uo?EE:null}});var Ka=h((D0,rp)=>{"use strict";rp.exports={}});var np=h((V0,sp)=>{"use strict";var xE=ie(),lo=Ge(),PE=jt(),kE=so().indexOf,wE=Ka(),ap=xE([].push);sp.exports=function(r,e){var t=PE(r),i=0,a=[],s;for(s in t)!lo(wE,s)&&lo(t,s)&&ap(a,s);for(;e.length>i;)lo(t,s=e[i++])&&(~kE(a,s)||ap(a,s));return a}});var co=h((_0,op)=>{"use strict";op.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]});var po=h((B0,up)=>{"use strict";var AE=np(),LE=co();up.exports=Object.keys||function(e){return AE(e,LE)}});var ho=h((O0,hp)=>{"use strict";var cp=we(),RE=oe(),dp=ie(),$E=za(),ME=po(),CE=jt(),DE=Dn().f,pp=dp(DE),VE=dp([].push),_E=cp&&RE(function(){var r=Object.create(null);return r[2]=2,!pp(r,2)}),lp=function(r){return function(e){for(var t=CE(e),i=ME(t),a=_E&&$E(t)===null,s=i.length,n=0,o=[],u;s>n;)u=i[n++],(!cp||(a?u in t:pp(t,u)))&&VE(o,r?[u,t[u]]:t[u]);return o}};hp.exports={entries:lp(!0),values:lp(!1)}});var mp=h(()=>{"use strict";var BE=Z(),OE=ho().entries;BE({target:"Object",stat:!0},{entries:function(e){return OE(e)}})});var bp=h((q0,fp)=>{"use strict";mp();var NE=fi();fp.exports=NE.Object.entries});var vp=h((U0,gp)=>{"use strict";var FE=bp();gp.exports=FE});var Ei=h((H0,Sp)=>{"use strict";var qE=vp();Sp.exports=qE});var Wt=h((j0,yp)=>{"use strict";yp.exports={}});var Ep=h((Q0,Ip)=>{"use strict";var UE=X(),HE=K(),Tp=UE.WeakMap;Ip.exports=HE(Tp)&&/native code/.test(String(Tp))});var go=h((G0,kp)=>{"use strict";var jE=Ep(),Pp=X(),QE=Le(),GE=Si(),mo=Ge(),fo=rr(),WE=Ya(),YE=Ka(),xp="Object already initialized",bo=Pp.TypeError,zE=Pp.WeakMap,Xa,ur,Ja,KE=function(r){return Ja(r)?ur(r):Xa(r,{})},XE=function(r){return function(e){var t;if(!QE(e)||(t=ur(e)).type!==r)throw new bo("Incompatible receiver, "+r+" required");return t}};jE||fo.state?(We=fo.state||(fo.state=new zE),We.get=We.get,We.has=We.has,We.set=We.set,Xa=function(r,e){if(We.has(r))throw new bo(xp);return e.facade=r,We.set(r,e),e},ur=function(r){return We.get(r)||{}},Ja=function(r){return We.has(r)}):(Yt=WE("state"),YE[Yt]=!0,Xa=function(r,e){if(mo(r,Yt))throw new bo(xp);return e.facade=r,GE(r,Yt,e),e},ur=function(r){return mo(r,Yt)?r[Yt]:{}},Ja=function(r){return mo(r,Yt)});var We,Yt;kp.exports={set:Xa,get:ur,has:Ja,enforce:KE,getterFor:XE}});var yo=h((W0,Ap)=>{"use strict";var vo=we(),JE=Ge(),wp=Function.prototype,ZE=vo&&Object.getOwnPropertyDescriptor,So=JE(wp,"name"),ex=So&&function(){}.name==="something",tx=So&&(!vo||vo&&ZE(wp,"name").configurable);Ap.exports={EXISTS:So,PROPER:ex,CONFIGURABLE:tx}});var Rp=h(Lp=>{"use strict";var ix=we(),rx=Zn(),ax=Gt(),sx=it(),nx=jt(),ox=po();Lp.f=ix&&!rx?Object.defineProperties:function(e,t){sx(e);for(var i=nx(t),a=ox(t),s=a.length,n=0,o;s>n;)ax.f(e,o=a[n++],i[o]);return e}});var To=h((z0,$p)=>{"use strict";var ux=ct();$p.exports=ux("document","documentElement")});var Po=h((K0,Op)=>{"use strict";var lx=it(),cx=Rp(),Mp=co(),dx=Ka(),px=To(),hx=ja(),mx=Ya(),Cp=">",Dp="<",Eo="prototype",xo="script",_p=mx("IE_PROTO"),Io=function(){},Bp=function(r){return Dp+xo+Cp+r+Dp+"/"+xo+Cp},Vp=function(r){r.write(Bp("")),r.close();var e=r.parentWindow.Object;return r=null,e},fx=function(){var r=hx("iframe"),e="java"+xo+":",t;return r.style.display="none",px.appendChild(r),r.src=String(e),t=r.contentWindow.document,t.open(),t.write(Bp("document.F=Object")),t.close(),t.F},Za,es=function(){try{Za=new ActiveXObject("htmlfile")}catch{}es=typeof document<"u"?document.domain&&Za?Vp(Za):fx():Vp(Za);for(var r=Mp.length;r--;)delete es[Eo][Mp[r]];return es()};dx[_p]=!0;Op.exports=Object.create||function(e,t){var i;return e!==null?(Io[Eo]=lx(e),i=new Io,Io[Eo]=null,i[_p]=e):i=es(),t===void 0?i:cx.f(i,t)}});var xi=h((X0,Np)=>{"use strict";var bx=Si();Np.exports=function(r,e,t,i){return i&&i.enumerable?r[e]=t:bx(r,e,t),r}});var Lo=h((J0,Up)=>{"use strict";var gx=oe(),vx=K(),Sx=Le(),yx=Po(),Fp=za(),Tx=xi(),Ix=ue(),Ex=Qe(),Ao=Ix("iterator"),qp=!1,dt,ko,wo;[].keys&&(wo=[].keys(),"next"in wo?(ko=Fp(Fp(wo)),ko!==Object.prototype&&(dt=ko)):qp=!0);var xx=!Sx(dt)||gx(function(){var r={};return dt[Ao].call(r)!==r});xx?dt={}:Ex&&(dt=yx(dt));vx(dt[Ao])||Tx(dt,Ao,function(){return this});Up.exports={IteratorPrototype:dt,BUGGY_SAFARI_ITERATORS:qp}});var ts=h((Z0,jp)=>{"use strict";var Px=ue(),kx=Px("toStringTag"),Hp={};Hp[kx]="z";jp.exports=String(Hp)==="[object z]"});var lr=h((eV,Qp)=>{"use strict";var wx=ts(),Ax=K(),is=Ht(),Lx=ue(),Rx=Lx("toStringTag"),$x=Object,Mx=is(function(){return arguments}())==="Arguments",Cx=function(r,e){try{return r[e]}catch{}};Qp.exports=wx?is:function(r){var e,t,i;return r===void 0?"Undefined":r===null?"Null":typeof(t=Cx(e=$x(r),Rx))=="string"?t:Mx?is(e):(i=is(e))==="Object"&&Ax(e.callee)?"Arguments":i}});var Wp=h((tV,Gp)=>{"use strict";var Dx=ts(),Vx=lr();Gp.exports=Dx?{}.toString:function(){return"[object "+Vx(this)+"]"}});var cr=h((iV,zp)=>{"use strict";var _x=ts(),Bx=Gt().f,Ox=Si(),Nx=Ge(),Fx=Wp(),qx=ue(),Yp=qx("toStringTag");zp.exports=function(r,e,t,i){var a=t?r:r&&r.prototype;a&&(Nx(a,Yp)||Bx(a,Yp,{configurable:!0,value:e}),i&&!_x&&Ox(a,"toString",Fx))}});var Xp=h((rV,Kp)=>{"use strict";var Ux=Lo().IteratorPrototype,Hx=Po(),jx=Zi(),Qx=cr(),Gx=Wt(),Wx=function(){return this};Kp.exports=function(r,e,t,i){var a=e+" Iterator";return r.prototype=Hx(Ux,{next:jx(+!i,t)}),Qx(r,a,!1,!0),Gx[a]=Wx,r}});var Zp=h((aV,Jp)=>{"use strict";var Yx=ie(),zx=tt();Jp.exports=function(r,e,t){try{return Yx(zx(Object.getOwnPropertyDescriptor(r,e)[t]))}catch{}}});var th=h((sV,eh)=>{"use strict";var Kx=Le();eh.exports=function(r){return Kx(r)||r===null}});var rh=h((nV,ih)=>{"use strict";var Xx=th(),Jx=String,Zx=TypeError;ih.exports=function(r){if(Xx(r))return r;throw new Zx("Can't set "+Jx(r)+" as a prototype")}});var Ro=h((oV,ah)=>{"use strict";var eP=Zp(),tP=Le(),iP=Et(),rP=rh();ah.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var r=!1,e={},t;try{t=eP(Object.prototype,"__proto__","set"),t(e,[]),r=e instanceof Array}catch{}return function(a,s){return iP(a),rP(s),tP(a)&&(r?t(a,s):a.__proto__=s),a}}():void 0)});var fh=h((uV,mh)=>{"use strict";var aP=Z(),sP=Ae(),rs=Qe(),ph=yo(),nP=K(),oP=Xp(),sh=za(),nh=Ro(),uP=cr(),lP=Si(),$o=xi(),cP=ue(),oh=Wt(),hh=Lo(),dP=ph.PROPER,pP=ph.CONFIGURABLE,uh=hh.IteratorPrototype,as=hh.BUGGY_SAFARI_ITERATORS,dr=cP("iterator"),lh="keys",pr="values",ch="entries",dh=function(){return this};mh.exports=function(r,e,t,i,a,s,n){oP(t,e,i);var o=function(v){if(v===a&&p)return p;if(!as&&v&&v in d)return d[v];switch(v){case lh:return function(){return new t(this,v)};case pr:return function(){return new t(this,v)};case ch:return function(){return new t(this,v)}}return function(){return new t(this)}},u=e+" Iterator",l=!1,d=r.prototype,c=d[dr]||d["@@iterator"]||a&&d[a],p=!as&&c||o(a),m=e==="Array"&&d.entries||c,f,b,g;if(m&&(f=sh(m.call(new r)),f!==Object.prototype&&f.next&&(!rs&&sh(f)!==uh&&(nh?nh(f,uh):nP(f[dr])||$o(f,dr,dh)),uP(f,u,!0,!0),rs&&(oh[u]=dh))),dP&&a===pr&&c&&c.name!==pr&&(!rs&&pP?lP(d,"name",pr):(l=!0,p=function(){return sP(c,this)})),a)if(b={values:o(pr),keys:s?p:o(lh),entries:o(ch)},n)for(g in b)(as||l||!(g in d))&&$o(d,g,b[g]);else aP({target:e,proto:!0,forced:as||l},b);return(!rs||n)&&d[dr]!==p&&$o(d,dr,p,{name:a}),oh[e]=p,b}});var gh=h((lV,bh)=>{"use strict";bh.exports=function(r,e){return{value:r,done:e}}});var Co=h((cV,Ih)=>{"use strict";var hP=jt(),Mo=or(),vh=Wt(),yh=go(),mP=Gt().f,fP=fh(),ss=gh(),bP=Qe(),gP=we(),Th="Array Iterator",vP=yh.set,SP=yh.getterFor(Th);Ih.exports=fP(Array,"Array",function(r,e){vP(this,{type:Th,target:hP(r),index:0,kind:e})},function(){var r=SP(this),e=r.target,t=r.index++;if(!e||t>=e.length)return r.target=void 0,ss(void 0,!0);switch(r.kind){case"keys":return ss(t,!1);case"values":return ss(e[t],!1)}return ss([t,e[t]],!1)},"values");var Sh=vh.Arguments=vh.Array;Mo("keys");Mo("values");Mo("entries");if(!bP&&gP&&Sh.name!=="values")try{mP(Sh,"name",{value:"values"})}catch{}});var xh=h((dV,Eh)=>{"use strict";var yP=ue(),TP=Wt(),IP=yP("iterator"),EP=Array.prototype;Eh.exports=function(r){return r!==void 0&&(TP.Array===r||EP[IP]===r)}});var Do=h((pV,kh)=>{"use strict";var xP=lr(),Ph=ir(),PP=mi(),kP=Wt(),wP=ue(),AP=wP("iterator");kh.exports=function(r){if(!PP(r))return Ph(r,AP)||Ph(r,"@@iterator")||kP[xP(r)]}});var Ah=h((hV,wh)=>{"use strict";var LP=Ae(),RP=tt(),$P=it(),MP=tr(),CP=Do(),DP=TypeError;wh.exports=function(r,e){var t=arguments.length<2?CP(r):e;if(RP(t))return $P(LP(t,r));throw new DP(MP(r)+" is not iterable")}});var $h=h((mV,Rh)=>{"use strict";var VP=Ae(),Lh=it(),_P=ir();Rh.exports=function(r,e,t){var i,a;Lh(r);try{if(i=_P(r,"return"),!i){if(e==="throw")throw t;return t}i=VP(i,r)}catch(s){a=!0,i=s}if(e==="throw")throw t;if(a)throw i;return Lh(i),t}});var os=h((fV,Vh)=>{"use strict";var BP=vi(),OP=Ae(),NP=it(),FP=tr(),qP=xh(),UP=Ii(),Mh=er(),HP=Ah(),jP=Do(),Ch=$h(),QP=TypeError,ns=function(r,e){this.stopped=r,this.result=e},Dh=ns.prototype;Vh.exports=function(r,e,t){var i=t&&t.that,a=!!(t&&t.AS_ENTRIES),s=!!(t&&t.IS_RECORD),n=!!(t&&t.IS_ITERATOR),o=!!(t&&t.INTERRUPTED),u=BP(e,i),l,d,c,p,m,f,b,g=function(P){return l&&Ch(l,"normal",P),new ns(!0,P)},v=function(P){return a?(NP(P),o?u(P[0],P[1],g):u(P[0],P[1])):o?u(P,g):u(P)};if(s)l=r.iterator;else if(n)l=r;else{if(d=jP(r),!d)throw new QP(FP(r)+" is not iterable");if(qP(d)){for(c=0,p=UP(r);p>c;c++)if(m=v(r[c]),m&&Mh(Dh,m))return m;return new ns(!1)}l=HP(r,d)}for(f=s?r.next:l.next;!(b=OP(f,l)).done;){try{m=v(b.value)}catch(P){Ch(l,"throw",P)}if(typeof m=="object"&&m&&Mh(Dh,m))return m}return new ns(!1)}});var Bh=h((bV,_h)=>{"use strict";var GP=we(),WP=Gt(),YP=Zi();_h.exports=function(r,e,t){GP?WP.f(r,e,YP(0,t)):r[e]=t}});var Oh=h(()=>{"use strict";var zP=Z(),KP=os(),XP=Bh();zP({target:"Object",stat:!0},{fromEntries:function(e){var t={};return KP(e,function(i,a){XP(t,i,a)},{AS_ENTRIES:!0}),t}})});var Fh=h((SV,Nh)=>{"use strict";Co();Oh();var JP=fi();Nh.exports=JP.Object.fromEntries});var Uh=h((yV,qh)=>{"use strict";qh.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 jh=h(()=>{"use strict";Co();var ZP=Uh(),ek=X(),tk=cr(),Hh=Wt();for(us in ZP)tk(ek[us],us),Hh[us]=Hh.Array;var us});var Gh=h((EV,Qh)=>{"use strict";var ik=Fh();jh();Qh.exports=ik});var Vo=h((xV,Wh)=>{"use strict";var rk=Gh();Wh.exports=rk});var Yh=h(()=>{"use strict"});var _o=h((wV,zh)=>{"use strict";var hr=X(),ak=Qt(),sk=Ht(),ls=function(r){return ak.slice(0,r.length)===r};zh.exports=function(){return ls("Bun/")?"BUN":ls("Cloudflare-Workers")?"CLOUDFLARE":ls("Deno/")?"DENO":ls("Node.js/")?"NODE":hr.Bun&&typeof Bun.version=="string"?"BUN":hr.Deno&&typeof Deno.version=="object"?"DENO":sk(hr.process)==="process"?"NODE":hr.window&&hr.document?"BROWSER":"REST"}()});var cs=h((AV,Kh)=>{"use strict";var nk=_o();Kh.exports=nk==="NODE"});var Jh=h((LV,Xh)=>{"use strict";var ok=Gt();Xh.exports=function(r,e,t){return ok.f(r,e,t)}});var tm=h((RV,em)=>{"use strict";var uk=ct(),lk=Jh(),ck=ue(),dk=we(),Zh=ck("species");em.exports=function(r){var e=uk(r);dk&&e&&!e[Zh]&&lk(e,Zh,{configurable:!0,get:function(){return this}})}});var rm=h(($V,im)=>{"use strict";var pk=er(),hk=TypeError;im.exports=function(r,e){if(pk(e,r))return r;throw new hk("Incorrect invocation")}});var Oo=h((MV,am)=>{"use strict";var mk=ie(),fk=K(),Bo=rr(),bk=mk(Function.toString);fk(Bo.inspectSource)||(Bo.inspectSource=function(r){return bk(r)});am.exports=Bo.inspectSource});var Fo=h((CV,lm)=>{"use strict";var gk=ie(),vk=oe(),sm=K(),Sk=lr(),yk=ct(),Tk=Oo(),nm=function(){},om=yk("Reflect","construct"),No=/^\s*(?:class|function)\b/,Ik=gk(No.exec),Ek=!No.test(nm),mr=function(e){if(!sm(e))return!1;try{return om(nm,[],e),!0}catch{return!1}},um=function(e){if(!sm(e))return!1;switch(Sk(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return Ek||!!Ik(No,Tk(e))}catch{return!0}};um.sham=!0;lm.exports=!om||vk(function(){var r;return mr(mr.call)||!mr(Object)||!mr(function(){r=!0})||r})?um:mr});var dm=h((DV,cm)=>{"use strict";var xk=Fo(),Pk=tr(),kk=TypeError;cm.exports=function(r){if(xk(r))return r;throw new kk(Pk(r)+" is not a constructor")}});var qo=h((VV,hm)=>{"use strict";var pm=it(),wk=dm(),Ak=mi(),Lk=ue(),Rk=Lk("species");hm.exports=function(r,e){var t=pm(r).constructor,i;return t===void 0||Ak(i=pm(t)[Rk])?e:wk(i)}});var fm=h((_V,mm)=>{"use strict";var $k=ie();mm.exports=$k([].slice)});var gm=h((BV,bm)=>{"use strict";var Mk=TypeError;bm.exports=function(r,e){if(r<e)throw new Mk("Not enough arguments");return r}});var Uo=h((OV,vm)=>{"use strict";var Ck=Qt();vm.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(Ck)});var Xo=h((NV,wm)=>{"use strict";var Re=X(),Dk=Rn(),Vk=vi(),Sm=K(),_k=Ge(),km=oe(),ym=To(),Bk=fm(),Tm=ja(),Ok=gm(),Nk=Uo(),Fk=cs(),Yo=Re.setImmediate,zo=Re.clearImmediate,qk=Re.process,Ho=Re.Dispatch,Uk=Re.Function,Im=Re.MessageChannel,Hk=Re.String,jo=0,fr={},Em="onreadystatechange",br,zt,Qo,Go;km(function(){br=Re.location});var Ko=function(r){if(_k(fr,r)){var e=fr[r];delete fr[r],e()}},Wo=function(r){return function(){Ko(r)}},xm=function(r){Ko(r.data)},Pm=function(r){Re.postMessage(Hk(r),br.protocol+"//"+br.host)};(!Yo||!zo)&&(Yo=function(e){Ok(arguments.length,1);var t=Sm(e)?e:Uk(e),i=Bk(arguments,1);return fr[++jo]=function(){Dk(t,void 0,i)},zt(jo),jo},zo=function(e){delete fr[e]},Fk?zt=function(r){qk.nextTick(Wo(r))}:Ho&&Ho.now?zt=function(r){Ho.now(Wo(r))}:Im&&!Nk?(Qo=new Im,Go=Qo.port2,Qo.port1.onmessage=xm,zt=Vk(Go.postMessage,Go)):Re.addEventListener&&Sm(Re.postMessage)&&!Re.importScripts&&br&&br.protocol!=="file:"&&!km(Pm)?(zt=Pm,Re.addEventListener("message",xm,!1)):Em in Tm("script")?zt=function(r){ym.appendChild(Tm("script"))[Em]=function(){ym.removeChild(this),Ko(r)}}:zt=function(r){setTimeout(Wo(r),0)});wm.exports={set:Yo,clear:zo}});var Rm=h((FV,Lm)=>{"use strict";var Am=X(),jk=we(),Qk=Object.getOwnPropertyDescriptor;Lm.exports=function(r){if(!jk)return Am[r];var e=Qk(Am,r);return e&&e.value}});var Jo=h((qV,Mm)=>{"use strict";var $m=function(){this.head=null,this.tail=null};$m.prototype={add:function(r){var e={item:r,next:null},t=this.tail;t?t.next=e:this.head=e,this.tail=e},get:function(){var r=this.head;if(r){var e=this.head=r.next;return e===null&&(this.tail=null),r.item}}};Mm.exports=$m});var Dm=h((UV,Cm)=>{"use strict";var Gk=Qt();Cm.exports=/ipad|iphone|ipod/i.test(Gk)&&typeof Pebble<"u"});var _m=h((HV,Vm)=>{"use strict";var Wk=Qt();Vm.exports=/web0s(?!.*chrome)/i.test(Wk)});var Hm=h((jV,Um)=>{"use strict";var ki=X(),Yk=Rm(),Bm=vi(),Zo=Xo().set,zk=Jo(),Kk=Uo(),Xk=Dm(),Jk=_m(),eu=cs(),Om=ki.MutationObserver||ki.WebKitMutationObserver,Nm=ki.document,Fm=ki.process,ds=ki.Promise,ru=Yk("queueMicrotask"),Pi,tu,iu,ps,qm;ru||(gr=new zk,vr=function(){var r,e;for(eu&&(r=Fm.domain)&&r.exit();e=gr.get();)try{e()}catch(t){throw gr.head&&Pi(),t}r&&r.enter()},!Kk&&!eu&&!Jk&&Om&&Nm?(tu=!0,iu=Nm.createTextNode(""),new Om(vr).observe(iu,{characterData:!0}),Pi=function(){iu.data=tu=!tu}):!Xk&&ds&&ds.resolve?(ps=ds.resolve(void 0),ps.constructor=ds,qm=Bm(ps.then,ps),Pi=function(){qm(vr)}):eu?Pi=function(){Fm.nextTick(vr)}:(Zo=Bm(Zo,ki),Pi=function(){Zo(vr)}),ru=function(r){gr.head||Pi(),gr.add(r)});var gr,vr;Um.exports=ru});var Qm=h((QV,jm)=>{"use strict";jm.exports=function(r,e){try{arguments.length===1?console.error(r):console.error(r,e)}catch{}}});var hs=h((GV,Gm)=>{"use strict";Gm.exports=function(r){try{return{error:!1,value:r()}}catch(e){return{error:!0,value:e}}}});var Kt=h((WV,Wm)=>{"use strict";var Zk=X();Wm.exports=Zk.Promise});var wi=h((YV,Xm)=>{"use strict";var ew=X(),Sr=Kt(),tw=K(),iw=Jn(),rw=Oo(),aw=ue(),Ym=_o(),sw=Qe(),au=Nn(),zm=Sr&&Sr.prototype,nw=aw("species"),su=!1,Km=tw(ew.PromiseRejectionEvent),ow=iw("Promise",function(){var r=rw(Sr),e=r!==String(Sr);if(!e&&au===66||sw&&!(zm.catch&&zm.finally))return!0;if(!au||au<51||!/native code/.test(r)){var t=new Sr(function(s){s(1)}),i=function(s){s(function(){},function(){})},a=t.constructor={};if(a[nw]=i,su=t.then(function(){})instanceof i,!su)return!0}return!e&&(Ym==="BROWSER"||Ym==="DENO")&&!Km});Xm.exports={CONSTRUCTOR:ow,REJECTION_EVENT:Km,SUBCLASSING:su}});var Ai=h((zV,Zm)=>{"use strict";var Jm=tt(),uw=TypeError,lw=function(r){var e,t;this.promise=new r(function(i,a){if(e!==void 0||t!==void 0)throw new uw("Bad Promise constructor");e=i,t=a}),this.resolve=Jm(e),this.reject=Jm(t)};Zm.exports.f=function(r){return new lw(r)}});var Sf=h(()=>{"use strict";var cw=Z(),dw=Qe(),gs=cs(),Pt=X(),Mi=Ae(),ef=xi(),tf=Ro(),pw=cr(),hw=tm(),mw=tt(),bs=K(),fw=Le(),bw=rm(),gw=qo(),of=Xo().set,cu=Hm(),vw=Qm(),Sw=hs(),yw=Jo(),uf=go(),vs=Kt(),du=wi(),lf=Ai(),Ss="Promise",cf=du.CONSTRUCTOR,Tw=du.REJECTION_EVENT,Iw=du.SUBCLASSING,nu=uf.getterFor(Ss),Ew=uf.set,Li=vs&&vs.prototype,Xt=vs,ms=Li,df=Pt.TypeError,ou=Pt.document,pu=Pt.process,uu=lf.f,xw=uu,Pw=!!(ou&&ou.createEvent&&Pt.dispatchEvent),pf="unhandledrejection",kw="rejectionhandled",rf=0,hf=1,ww=2,hu=1,mf=2,fs,af,Aw,sf,ff=function(r){var e;return fw(r)&&bs(e=r.then)?e:!1},bf=function(r,e){var t=e.value,i=e.state===hf,a=i?r.ok:r.fail,s=r.resolve,n=r.reject,o=r.domain,u,l,d;try{a?(i||(e.rejection===mf&&Rw(e),e.rejection=hu),a===!0?u=t:(o&&o.enter(),u=a(t),o&&(o.exit(),d=!0)),u===r.promise?n(new df("Promise-chain cycle")):(l=ff(u))?Mi(l,u,s,n):s(u)):n(t)}catch(c){o&&!d&&o.exit(),n(c)}},gf=function(r,e){r.notified||(r.notified=!0,cu(function(){for(var t=r.reactions,i;i=t.get();)bf(i,r);r.notified=!1,e&&!r.rejection&&Lw(r)}))},vf=function(r,e,t){var i,a;Pw?(i=ou.createEvent("Event"),i.promise=e,i.reason=t,i.initEvent(r,!1,!0),Pt.dispatchEvent(i)):i={promise:e,reason:t},!Tw&&(a=Pt["on"+r])?a(i):r===pf&&vw("Unhandled promise rejection",t)},Lw=function(r){Mi(of,Pt,function(){var e=r.facade,t=r.value,i=nf(r),a;if(i&&(a=Sw(function(){gs?pu.emit("unhandledRejection",t,e):vf(pf,e,t)}),r.rejection=gs||nf(r)?mf:hu,a.error))throw a.value})},nf=function(r){return r.rejection!==hu&&!r.parent},Rw=function(r){Mi(of,Pt,function(){var e=r.facade;gs?pu.emit("rejectionHandled",e):vf(kw,e,r.value)})},Ri=function(r,e,t){return function(i){r(e,i,t)}},$i=function(r,e,t){r.done||(r.done=!0,t&&(r=t),r.value=e,r.state=ww,gf(r,!0))},lu=function(r,e,t){if(!r.done){r.done=!0,t&&(r=t);try{if(r.facade===e)throw new df("Promise can't be resolved itself");var i=ff(e);i?cu(function(){var a={done:!1};try{Mi(i,e,Ri(lu,a,r),Ri($i,a,r))}catch(s){$i(a,s,r)}}):(r.value=e,r.state=hf,gf(r,!1))}catch(a){$i({done:!1},a,r)}}};if(cf&&(Xt=function(e){bw(this,ms),mw(e),Mi(fs,this);var t=nu(this);try{e(Ri(lu,t),Ri($i,t))}catch(i){$i(t,i)}},ms=Xt.prototype,fs=function(e){Ew(this,{type:Ss,done:!1,notified:!1,parent:!1,reactions:new yw,rejection:!1,state:rf,value:void 0})},fs.prototype=ef(ms,"then",function(e,t){var i=nu(this),a=uu(gw(this,Xt));return i.parent=!0,a.ok=bs(e)?e:!0,a.fail=bs(t)&&t,a.domain=gs?pu.domain:void 0,i.state===rf?i.reactions.add(a):cu(function(){bf(a,i)}),a.promise}),af=function(){var r=new fs,e=nu(r);this.promise=r,this.resolve=Ri(lu,e),this.reject=Ri($i,e)},lf.f=uu=function(r){return r===Xt||r===Aw?new af(r):xw(r)},!dw&&bs(vs)&&Li!==Object.prototype)){sf=Li.then,Iw||ef(Li,"then",function(e,t){var i=this;return new Xt(function(a,s){Mi(sf,i,a,s)}).then(e,t)},{unsafe:!0});try{delete Li.constructor}catch{}tf&&tf(Li,ms)}cw({global:!0,constructor:!0,wrap:!0,forced:cf},{Promise:Xt});pw(Xt,Ss,!1,!0);hw(Ss)});var xf=h((JV,Ef)=>{"use strict";var $w=ue(),Tf=$w("iterator"),If=!1;try{yf=0,mu={next:function(){return{done:!!yf++}},return:function(){If=!0}},mu[Tf]=function(){return this},Array.from(mu,function(){throw 2})}catch{}var yf,mu;Ef.exports=function(r,e){try{if(!e&&!If)return!1}catch{return!1}var t=!1;try{var i={};i[Tf]=function(){return{next:function(){return{done:t=!0}}}},r(i)}catch{}return t}});var fu=h((ZV,Pf)=>{"use strict";var Mw=Kt(),Cw=xf(),Dw=wi().CONSTRUCTOR;Pf.exports=Dw||!Cw(function(r){Mw.all(r).then(void 0,function(){})})});var kf=h(()=>{"use strict";var Vw=Z(),_w=Ae(),Bw=tt(),Ow=Ai(),Nw=hs(),Fw=os(),qw=fu();Vw({target:"Promise",stat:!0,forced:qw},{all:function(e){var t=this,i=Ow.f(t),a=i.resolve,s=i.reject,n=Nw(function(){var o=Bw(t.resolve),u=[],l=0,d=1;Fw(e,function(c){var p=l++,m=!1;d++,_w(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),i.promise}})});var Af=h(()=>{"use strict";var Uw=Z(),Hw=Qe(),jw=wi().CONSTRUCTOR,gu=Kt(),Qw=ct(),Gw=K(),Ww=xi(),wf=gu&&gu.prototype;Uw({target:"Promise",proto:!0,forced:jw,real:!0},{catch:function(r){return this.then(void 0,r)}});!Hw&&Gw(gu)&&(bu=Qw("Promise").prototype.catch,wf.catch!==bu&&Ww(wf,"catch",bu,{unsafe:!0}));var bu});var Lf=h(()=>{"use strict";var Yw=Z(),zw=Ae(),Kw=tt(),Xw=Ai(),Jw=hs(),Zw=os(),eA=fu();Yw({target:"Promise",stat:!0,forced:eA},{race:function(e){var t=this,i=Xw.f(t),a=i.reject,s=Jw(function(){var n=Kw(t.resolve);Zw(e,function(o){zw(n,t,o).then(i.resolve,a)})});return s.error&&a(s.value),i.promise}})});var Rf=h(()=>{"use strict";var tA=Z(),iA=Ai(),rA=wi().CONSTRUCTOR;tA({target:"Promise",stat:!0,forced:rA},{reject:function(e){var t=iA.f(this),i=t.reject;return i(e),t.promise}})});var vu=h((u_,$f)=>{"use strict";var aA=it(),sA=Le(),nA=Ai();$f.exports=function(r,e){if(aA(r),sA(e)&&e.constructor===r)return e;var t=nA.f(r),i=t.resolve;return i(e),t.promise}});var Df=h(()=>{"use strict";var oA=Z(),uA=ct(),Mf=Qe(),lA=Kt(),Cf=wi().CONSTRUCTOR,cA=vu(),dA=uA("Promise"),pA=Mf&&!Cf;oA({target:"Promise",stat:!0,forced:Mf||Cf},{resolve:function(e){return cA(pA&&this===dA?lA:this,e)}})});var Vf=h(()=>{"use strict";Sf();kf();Af();Lf();Rf();Df()});var Nf=h(()=>{"use strict";var hA=Z(),mA=Qe(),ys=Kt(),fA=oe(),Bf=ct(),Of=K(),bA=qo(),_f=vu(),gA=xi(),yu=ys&&ys.prototype,vA=!!ys&&fA(function(){yu.finally.call({then:function(){}},function(){})});hA({target:"Promise",proto:!0,real:!0,forced:vA},{finally:function(r){var e=bA(this,Bf("Promise")),t=Of(r);return this.then(t?function(i){return _f(e,r()).then(function(){return i})}:r,t?function(i){return _f(e,r()).then(function(){throw i})}:r)}});!mA&&Of(ys)&&(Su=Bf("Promise").prototype.finally,yu.finally!==Su&&gA(yu,"finally",Su,{unsafe:!0}));var Su});var qf=h((f_,Ff)=>{"use strict";Yh();Vf();Nf();var SA=xt();Ff.exports=SA("Promise","finally")});var Hf=h((b_,Uf)=>{"use strict";var yA=qf();Uf.exports=yA});var Ts=h((g_,jf)=>{"use strict";var TA=Hf();jf.exports=TA});var rb=h(()=>{"use strict";var VA=Z(),_A=ho().values;VA({target:"Object",stat:!0},{values:function(e){return _A(e)}})});var sb=h((tB,ab)=>{"use strict";rb();var BA=fi();ab.exports=BA.Object.values});var ob=h((iB,nb)=>{"use strict";var OA=sb();nb.exports=OA});var Di=h((rB,ub)=>{"use strict";var NA=ob();ub.exports=NA});var Ab=h(()=>{"use strict";var oL=Z(),uL=bi(),lL=Ii(),cL=nr(),dL=or();oL({target:"Array",proto:!0},{at:function(e){var t=uL(this),i=lL(t),a=cL(e),s=a>=0?a:i+a;return s<0||s>=i?void 0:t[s]}});dL("at")});var Rb=h((dO,Lb)=>{"use strict";Ab();var pL=xt();Lb.exports=pL("Array","at")});var Mb=h((pO,$b)=>{"use strict";var hL=Rb();$b.exports=hL});var Rt=h((hO,Cb)=>{"use strict";var mL=Mb();Cb.exports=mL});var ju=h((JN,mg)=>{"use strict";var XL=Ht();mg.exports=Array.isArray||function(e){return XL(e)==="Array"}});var bg=h((ZN,fg)=>{"use strict";var JL=TypeError,ZL=9007199254740991;fg.exports=function(r){if(r>ZL)throw JL("Maximum allowed index exceeded");return r}});var Sg=h((eF,vg)=>{"use strict";var eR=ju(),tR=Ii(),iR=bg(),rR=vi(),gg=function(r,e,t,i,a,s,n,o){for(var u=a,l=0,d=n?rR(n,o):!1,c,p;l<i;)l in t&&(c=d?d(t[l],l,e):t[l],s>0&&eR(c)?(p=tR(c),u=gg(r,e,c,p,u,s-1)-1):(iR(u+1),r[u]=c),u++),l++;return u};vg.exports=gg});var Eg=h((tF,Ig)=>{"use strict";var yg=ju(),aR=Fo(),sR=Le(),nR=ue(),oR=nR("species"),Tg=Array;Ig.exports=function(r){var e;return yg(r)&&(e=r.constructor,aR(e)&&(e===Tg||yg(e.prototype))?e=void 0:sR(e)&&(e=e[oR],e===null&&(e=void 0))),e===void 0?Tg:e}});var Pg=h((iF,xg)=>{"use strict";var uR=Eg();xg.exports=function(r,e){return new(uR(r))(e===0?0:e)}});var kg=h(()=>{"use strict";var lR=Z(),cR=Sg(),dR=tt(),pR=bi(),hR=Ii(),mR=Pg();lR({target:"Array",proto:!0},{flatMap:function(e){var t=pR(this),i=hR(t),a;return dR(e),a=mR(t,0),a.length=cR(a,t,t,i,0,1,e,arguments.length>1?arguments[1]:void 0),a}})});var wg=h(()=>{"use strict";var fR=or();fR("flatMap")});var Lg=h((oF,Ag)=>{"use strict";kg();wg();var bR=xt();Ag.exports=bR("Array","flatMap")});var $g=h((uF,Rg)=>{"use strict";var gR=Lg();Rg.exports=gR});var Qu=h((lF,Mg)=>{"use strict";var vR=$g();Mg.exports=vR});var Vr=h((cF,Cg)=>{"use strict";var SR=lr(),yR=String;Cg.exports=function(r){if(SR(r)==="Symbol")throw new TypeError("Cannot convert a Symbol value to a string");return yR(r)}});var Gu=h((dF,Dg)=>{"use strict";Dg.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 Bg=h((pF,_g)=>{"use strict";var TR=ie(),IR=Et(),ER=Vr(),Yu=Gu(),Vg=TR("".replace),xR=RegExp("^["+Yu+"]+"),PR=RegExp("(^|[^"+Yu+"])["+Yu+"]+$"),Wu=function(r){return function(e){var t=ER(IR(e));return r&1&&(t=Vg(t,xR,"")),r&2&&(t=Vg(t,PR,"$1")),t}};_g.exports={start:Wu(1),end:Wu(2),trim:Wu(3)}});var qg=h((hF,Fg)=>{"use strict";var kR=yo().PROPER,wR=oe(),Og=Gu(),Ng="\u200B\x85\u180E";Fg.exports=function(r){return wR(function(){return!!Og[r]()||Ng[r]()!==Ng||kR&&Og[r].name!==r})}});var zu=h((mF,Ug)=>{"use strict";var AR=Bg().start,LR=qg();Ug.exports=LR("trimStart")?function(){return AR(this)}:"".trimStart});var jg=h(()=>{"use strict";var RR=Z(),Hg=zu();RR({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==Hg},{trimLeft:Hg})});var Gg=h(()=>{"use strict";jg();var $R=Z(),Qg=zu();$R({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==Qg},{trimStart:Qg})});var Yg=h((SF,Wg)=>{"use strict";Gg();var MR=xt();Wg.exports=MR("String","trimLeft")});var Kg=h((yF,zg)=>{"use strict";var CR=Yg();zg.exports=CR});var Jg=h((TF,Xg)=>{"use strict";var DR=Kg();Xg.exports=DR});var mv=h(()=>{"use strict"});var fv=h(()=>{"use strict"});var gv=h((t1,bv)=>{"use strict";var r$=Le(),a$=Ht(),s$=ue(),n$=s$("match");bv.exports=function(r){var e;return r$(r)&&((e=r[n$])!==void 0?!!e:a$(r)==="RegExp")}});var Sv=h((i1,vv)=>{"use strict";var o$=it();vv.exports=function(){var r=o$(this),e="";return r.hasIndices&&(e+="d"),r.global&&(e+="g"),r.ignoreCase&&(e+="i"),r.multiline&&(e+="m"),r.dotAll&&(e+="s"),r.unicode&&(e+="u"),r.unicodeSets&&(e+="v"),r.sticky&&(e+="y"),e}});var Iv=h((r1,Tv)=>{"use strict";var u$=Ae(),l$=Ge(),c$=er(),d$=Sv(),yv=RegExp.prototype;Tv.exports=function(r){var e=r.flags;return e===void 0&&!("flags"in yv)&&!l$(r,"flags")&&c$(yv,r)?u$(d$,r):e}});var xv=h((a1,Ev)=>{"use strict";var rl=ie(),p$=bi(),h$=Math.floor,tl=rl("".charAt),m$=rl("".replace),il=rl("".slice),f$=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,b$=/\$([$&'`]|\d{1,2})/g;Ev.exports=function(r,e,t,i,a,s){var n=t+r.length,o=i.length,u=b$;return a!==void 0&&(a=p$(a),u=f$),m$(s,u,function(l,d){var c;switch(tl(d,0)){case"$":return"$";case"&":return r;case"`":return il(e,0,t);case"'":return il(e,n);case"<":c=a[il(d,1,-1)];break;default:var p=+d;if(p===0)return l;if(p>o){var m=h$(p/10);return m===0?l:m<=o?i[m-1]===void 0?tl(d,1):i[m-1]+tl(d,1):l}c=i[p-1]}return c===void 0?"":c})}});var wv=h(()=>{"use strict";var g$=Z(),v$=Ae(),sl=ie(),Pv=Et(),S$=K(),y$=mi(),T$=gv(),Ni=Vr(),I$=ir(),E$=Iv(),x$=xv(),P$=ue(),k$=Qe(),w$=P$("replace"),A$=TypeError,al=sl("".indexOf),L$=sl("".replace),kv=sl("".slice),R$=Math.max;g$({target:"String",proto:!0},{replaceAll:function(e,t){var i=Pv(this),a,s,n,o,u,l,d,c,p,m,f=0,b="";if(!y$(e)){if(a=T$(e),a&&(s=Ni(Pv(E$(e))),!~al(s,"g")))throw new A$("`.replaceAll` does not allow non-global regexes");if(n=I$(e,w$),n)return v$(n,e,i,t);if(k$&&a)return L$(Ni(i),e,t)}for(o=Ni(i),u=Ni(e),l=S$(t),l||(t=Ni(t)),d=u.length,c=R$(1,d),p=al(o,u);p!==-1;)m=l?Ni(t(u,p,o)):x$(u,o,p,[],void 0,t),b+=kv(o,f,p)+m,f=p+d,p=p+c>o.length?-1:al(o,u,p+c);return f<o.length&&(b+=kv(o,f)),b}})});var Lv=h((o1,Av)=>{"use strict";mv();fv();wv();var $$=xt();Av.exports=$$("String","replaceAll")});var $v=h((u1,Rv)=>{"use strict";var M$=Lv();Rv.exports=M$});var Cv=h((l1,Mv)=>{"use strict";var C$=$v();Mv.exports=C$});var Vv=h((c1,Dv)=>{"use strict";var D$=nr(),V$=Vr(),_$=Et(),B$=RangeError;Dv.exports=function(e){var t=V$(_$(this)),i="",a=D$(e);if(a<0||a===1/0)throw new B$("Wrong number of repetitions");for(;a>0;(a>>>=1)&&(t+=t))a&1&&(i+=t);return i}});var Fv=h((d1,Nv)=>{"use strict";var Ov=ie(),O$=ao(),_v=Vr(),N$=Vv(),F$=Et(),q$=Ov(N$),U$=Ov("".slice),H$=Math.ceil,Bv=function(r){return function(e,t,i){var a=_v(F$(e)),s=O$(t),n=a.length,o=i===void 0?" ":_v(i),u,l;return s<=n||o===""?a:(u=s-n,l=q$(o,H$(u/o.length)),l.length>u&&(l=U$(l,0,u)),r?a+l:l+a)}};Nv.exports={start:Bv(!1),end:Bv(!0)}});var Uv=h((p1,qv)=>{"use strict";var j$=Qt();qv.exports=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(j$)});var Hv=h(()=>{"use strict";var Q$=Z(),G$=Fv().start,W$=Uv();Q$({target:"String",proto:!0,forced:W$},{padStart:function(e){return G$(this,e,arguments.length>1?arguments[1]:void 0)}})});var Qv=h((f1,jv)=>{"use strict";Hv();var Y$=xt();jv.exports=Y$("String","padStart")});var Wv=h((b1,Gv)=>{"use strict";var z$=Qv();Gv.exports=z$});var zv=h((g1,Yv)=>{"use strict";var K$=Wv();Yv.exports=K$});var Jl="2.0.129-dev.8b747eca.0";var ke=(a=>(a.STOPPED="stopped",a.READY="ready",a.PLAYING="playing",a.PAUSED="paused",a))(ke||{}),lt=(T=>(T.MPEG="MPEG",T.DASH="DASH",T.DASH_SEP="DASH_SEP",T.DASH_SEP_VK="DASH_SEP",T.DASH_WEBM="DASH_WEBM",T.DASH_WEBM_AV1="DASH_WEBM_AV1",T.DASH_STREAMS="DASH_STREAMS",T.DASH_WEBM_VK="DASH_WEBM",T.DASH_ONDEMAND="DASH_ONDEMAND",T.DASH_ONDEMAND_VK="DASH_ONDEMAND",T.DASH_LIVE="DASH_LIVE",T.DASH_LIVE_CMAF="DASH_LIVE_CMAF",T.DASH_LIVE_WEBM="DASH_LIVE_WEBM",T.HLS="HLS",T.HLS_ONDEMAND="HLS_ONDEMAND",T.HLS_JS="HLS",T.HLS_LIVE="HLS_LIVE",T.HLS_LIVE_CMAF="HLS_LIVE_CMAF",T.WEB_RTC_LIVE="WEB_RTC_LIVE",T))(lt||{});var Fa=(a=>(a.NOT_AVAILABLE="NOT_AVAILABLE",a.AVAILABLE="AVAILABLE",a.CONNECTING="CONNECTING",a.CONNECTED="CONNECTED",a))(Fa||{}),wn=(i=>(i.HTTP1="http1",i.HTTP2="http2",i.QUIC="quic",i))(wn||{});var An=(n=>(n.NONE="none",n.INLINE="inline",n.FULLSCREEN="fullscreen",n.SECOND_SCREEN="second_screen",n.PIP="pip",n.INVISIBLE="invisible",n))(An||{}),qa=(i=>(i.TRAFFIC_SAVING="traffic_saving",i.HIGH_QUALITY="high_quality",i.UNKNOWN="unknown",i))(qa||{});var Ry=$(Be(),1);import{assertNever as Kd,assertNonNullable as uE,isNonNullable as Ga,ValueSubject as no,Subject as lE,Subscription as cE,merge as dE,observableFrom as pE,fromEvent as Gd,map as Wd,tap as Yd,filterChanged as hE,isNullable as oo,ErrorCategory as zd}from"@vkontakte/videoplayer-shared";var Qd=r=>new Promise((e,t)=>{let i=document.createElement("script");i.setAttribute("src",r),i.onload=()=>e(),i.onerror=a=>t(a),document.body.appendChild(i)});var Wa=class{constructor(e){this.connection$=new no(void 0);this.castState$=new no("NOT_AVAILABLE");this.errorEvent$=new lE;this.realCastState$=new no("NOT_AVAILABLE");this.subscription=new cE;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=Ga(window.chrome?.cast),a=!!window.__onGCastApiAvailable;i?this.initializeCastApi():(window.__onGCastApiAvailable=s=>{delete window.__onGCastApiAvailable,s&&!this.isDestroyed&&this.initializeCastApi()},a||Qd("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:zd.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(){Ga(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();oo(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();oo(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(Gd(i,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(a=>{switch(a.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:this.contentId=i.getCurrentSession()?.getMediaSession()?.media?.contentId;break;case cast.framework.SessionState.NO_SESSION:case cast.framework.SessionState.SESSION_ENDING:case cast.framework.SessionState.SESSION_ENDED:case cast.framework.SessionState.SESSION_START_FAILED:this.contentId=void 0;break;default:return Kd(a.sessionState)}})).add(dE(Gd(i,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(Yd(a=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(a)}`})}),Wd(a=>a.castState)),pE([i.getCastState()])).pipe(hE(),Wd(mE),Yd(a=>{this.log({message:`realCastState$: ${a}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(a=>{let s=a==="CONNECTED",n=Ga(this.connection$.getValue());if(s&&!n){let o=i.getCurrentSession();uE(o);let u=o.getCastDevice(),l=o.getMediaSession()?.media?.contentId;(oo(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"?Ga(this.connection$.getValue())?"CONNECTED":"AVAILABLE":a)}))}initializeCastApi(){let e,t,i;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,i=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:i}),this.initListeners()}catch(a){this.errorEvent$.next({id:"ChromecastInitializer",category:zd.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:a})}}},mE=r=>{switch(r){case cast.framework.CastState.NO_DEVICES_AVAILABLE:return"NOT_AVAILABLE";case cast.framework.CastState.NOT_CONNECTED:return"AVAILABLE";case cast.framework.CastState.CONNECTING:return"CONNECTING";case cast.framework.CastState.CONNECTED:return"CONNECTED";default:return Kd(r)}};var Ul=$(Be(),1),py=$(Ei(),1),hy=$(Vo(),1);var eb=$(Ts(),1);import{assertNever as Qf}from"@vkontakte/videoplayer-shared";var le=(r,e=0,t=0)=>{switch(t){case 0:return r.replace("_offset_p",e===0?"":"_"+e.toFixed(0));case 1:{if(e===0)return r;let i=new URL(r);return i.searchParams.append("playback_shift",e.toFixed(0)),i.toString()}case 2:{let i=new URL(r);return!i.searchParams.get("offset_p")&&e===0?r:(i.searchParams.set("offset_p",e.toFixed(0)),i.toString())}default:Qf(t)}return r},Is=(r,e)=>{switch(e){case 0:return NaN;case 1:{let t=new URL(r);return Number(t.searchParams.get("playback_shift"))}case 2:{let t=new URL(r);return Number(t.searchParams.get("offset_p")??0)}default:Qf(e)}};var I=(r,e,t=!1)=>{let i=r.getTransition();(t||!i||i.to===e)&&r.setState(e)};import{isNonNullable as IA,Subject as Es,merge as Gf}from"@vkontakte/videoplayer-shared";var M=class{constructor(e){this.transitionStarted$=new Es;this.transitionEnded$=new Es;this.transitionUpdated$=new Es;this.forceChanged$=new Es;this.stateChangeStarted$=Gf(this.transitionStarted$,this.transitionUpdated$);this.stateChangeEnded$=Gf(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||IA(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 EA}from"@vkontakte/videoplayer-shared";var Wf=r=>{switch(r){case"MPEG":case"DASH":case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":case"HLS":case"HLS_ONDEMAND":return!1;case"DASH_LIVE":case"DASH_LIVE_CMAF":case"HLS_LIVE":case"HLS_LIVE_CMAF":case"DASH_LIVE_WEBM":case"WEB_RTC_LIVE":return!0;default:return EA(r)}};import{assertNever as Ci,assertNonNullable as Jt,debounce as Yf,ErrorCategory as zf,fromEvent as Zt,isNonNullable as Kf,map as Xf,merge as Jf,observableFrom as xA,Subject as PA,Subscription as Tu,timeout as kA,getHighestQuality as wA}from"@vkontakte/videoplayer-shared";var AA=5,LA=5,RA=500,Zf=7e3,yr=class{constructor(e){this.subscription=new Tu;this.loadMediaTimeoutSubscription=new Tu;this.videoState=new M("stopped");this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),i=this.params.desiredState.playbackState.getState(),a=this.params.desiredState.playbackState.getTransition(),s=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${e}; videoTransition: ${JSON.stringify(t)}; desiredPlaybackState: ${i}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(s)};`}),i==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.stop());return}if(!t){if(a?.to!=="paused"&&s.state==="requested"&&e!=="stopped"){this.seek(s.position/1e3);return}switch(i){case"ready":{switch(e){case"playing":case"paused":case"ready":break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:Ci(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:Ci(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:Ci(e)}break}default:Ci(i)}}};this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Wf(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 Tu;this.subscription.add(e),this.subscription.add(Jf(this.videoState.stateChangeStarted$.pipe(Xf(a=>`stateChangeStarted$ ${JSON.stringify(a)}`)),this.videoState.stateChangeEnded$.pipe(Xf(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 PA;e.add(a.pipe(Yf(RA)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let s=NaN;e.add(Zt(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(Zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(n=>{this.logRemoteEvent(n),this.params.output.duration$.next(n.value)}))}t(Zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(Zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemotePause():this.handleRemotePlay()}),t(Zt(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<LA&&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:Ci(n)}}),t(Zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({volume:a.value})}),t(Zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({muted:a.value})});let i=Jf(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,xA(["init"])).pipe(Yf(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"),I(this.params.desiredState.playbackState,"paused")):(this.videoState.setState("playing"),I(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"),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(),i={volume:e.volume??t.volume,muted:e.muted??t.muted};(i.volume!==t.volume||i.muted!==i.muted)&&this.params.output.volume$.next(i)}seek(e){this.params.output.willSeekEvent$.next();let{remotePlayer:t,remotePlayerController:i}=this.params.connection;t.currentTime=e,i.seek()}stop(){let{remotePlayerController:e}=this.params.connection;e.stop()}createMediaInfo(e){let t=this.params.source,i,a,s;switch(e){case"MPEG":{let l=t[e];Jt(l);let d=wA(Object.keys(l));Jt(d);let c=l[d];Jt(c),i=c,a="video/mp4",s=chrome.cast.media.StreamType.BUFFERED;break}case"HLS":case"HLS_ONDEMAND":{let l=t[e];Jt(l),i=l.url,a="application/x-mpegurl",s=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":{let l=t[e];Jt(l),i=l.url,a="application/dash+xml",s=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_LIVE_CMAF":{let l=t[e];Jt(l),i=l.url,a="application/dash+xml",s=chrome.cast.media.StreamType.LIVE;break}case"HLS_LIVE":case"HLS_LIVE_CMAF":{let l=t[e];Jt(l),i=le(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:zf.VIDEO_PIPELINE,message:l,thrown:d}),d}case"DASH":case"DASH_LIVE_WEBM":throw new Error(`${e} is no longer supported`);default:return Ci(e)}let n=new chrome.cast.media.MediaInfo(this.params.meta.videoId??i,a);n.contentUrl=i,n.streamType=s,n.metadata=new chrome.cast.media.GenericMediaMetadata;let{title:o,subtitle:u}=this.params.meta;return Kf(o)&&(n.metadata.title=o),Kf(u)&&(n.metadata.subtitle=u),n}createLoadRequest(e){let t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;let i=this.params.desiredState.seekState.getState();return i.state==="applying"||i.state==="requested"?t.currentTime=this.params.output.isLive$.getValue()?0:i.position/1e3:t.currentTime=0,t}loadMedia(e){let t=this.params.connection.session.loadMedia(e),i=new Promise((a,s)=>{this.loadMediaTimeoutSubscription.add(kA(Zf).subscribe(()=>s(`timeout(${Zf})`)))});(0,eb.default)(Promise.race([t,i]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state==="applying"&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},a=>{let s=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${a}`;this.log({message:s}),this.params.output.error$.next({id:"ChromecastProvider.loadMedia",category:zf.VIDEO_PIPELINE,message:s,thrown:a})}),()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}};var Uu=$(Be(),1);import{clearVideoElement as ib}from"@vkontakte/videoplayer-shared";import{clearVideoElement as $A}from"@vkontakte/videoplayer-shared";var tb=r=>{try{r.pause(),r.playbackRate=0,$A(r),r.remove()}catch(e){console.error(e)}};import{fromEvent as MA,Subscription as CA}from"@vkontakte/videoplayer-shared";var Iu=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)}},Eu=window.WeakMap?new WeakMap:new Iu,xu=window.WeakMap?new WeakMap:new Map,DA=(r,e=20)=>{let t=0;return MA(r,"ratechange").subscribe(i=>{t++,t>=e&&(r.currentTime=r.currentTime,t=0)})},Se=(r,{audioVideoSyncRate:e,disableYandexPiP:t})=>{let i=r.querySelector("video"),a=!!i;i?ib(i):(i=document.createElement("video"),r.appendChild(i)),Eu.set(i,a);let s=new CA;return s.add(DA(i,e)),xu.set(i,s),i.setAttribute("crossorigin","anonymous"),i.setAttribute("playsinline","playsinline"),t&&i.setAttribute("x-yandex-pip","false"),i.controls=!1,i.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),i},ye=r=>{xu.get(r)?.unsubscribe(),xu.delete(r);let t=Eu.get(r);Eu.delete(r),t?ib(r):tb(r)};var ku=$(Di(),1);import{assertNonNullable as Tr,isNonNullable as at,isNullable as UA,fromEvent as Vi,merge as lb,observableFrom as cb,filterChanged as db,map as Ir,Subject as pb,Subscription as HA,ValueSubject as jA,ErrorCategory as QA}from"@vkontakte/videoplayer-shared";import{isNonNullable as Pu,isNullable as FA,Subscription as qA}from"@vkontakte/videoplayer-shared";var xs=(r,e,t,{equal:i=(n,o)=>n===o,changed$:a,onError:s}={})=>{let n=r.getState(),o=e(),u=FA(a),l=new qA;return a&&l.add(a.subscribe(d=>{let c=r.getState();i(d,c)&&r.setState(d)},s)),i(o,n)||(t(n),u&&r.setState(n)),l.add(r.stateChangeStarted$.subscribe(d=>{t(d.to),u&&r.setState(d.to)},s)),l},rt=(r,e,t)=>xs(e,()=>r.loop,i=>{Pu(i)&&(r.loop=i)},{onError:t}),Te=(r,e,t,i)=>xs(e,()=>({muted:r.muted,volume:r.volume}),a=>{Pu(a)&&(r.muted=a.muted,r.volume=a.volume)},{equal:(a,s)=>a===s||a?.muted===s?.muted&&a?.volume===s?.volume,changed$:t,onError:i}),Oe=(r,e,t,i)=>xs(e,()=>r.playbackRate,a=>{Pu(a)&&(r.playbackRate=a)},{changed$:t,onError:i}),kt=xs;var GA=r=>["__",r.language,r.label].join("|"),WA=(r,e)=>{if(r.id===e)return!0;let[t,i,a]=e.split("|");return r.language===i&&r.label===a},wu=class r{constructor(e){this.available$=new pb;this.current$=new jA(void 0);this.error$=new pb;this.subscription=new HA;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 a=s=>{this.error$.next({id:"TextTracksManager",category:QA.WTF,message:"Generic HtmlVideoTextTrackManager error",thrown:s})};this.subscription.add(this.available$.subscribe(i.availableTextTracks$)),this.subscription.add(this.current$.subscribe(i.currentTextTrack$)),this.subscription.add(this.error$.subscribe(i.error$)),this.subscription.add(kt(t.internalTextTracks,()=>(0,ku.default)(this.internalTracks),s=>{at(s)&&this.setInternal(s)},{equal:(s,n)=>at(s)&&at(n)&&s.length===n.length&&s.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe(Ir(s=>s.filter(({type:n})=>n==="internal"))),onError:a})),this.subscription.add(kt(t.externalTextTracks,()=>(0,ku.default)(this.externalTracks),s=>{at(s)&&this.setExternal(s)},{equal:(s,n)=>at(s)&&at(n)&&s.length===n.length&&s.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe(Ir(s=>s.filter(({type:n})=>n==="external"))),onError:a})),this.subscription.add(kt(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(kt(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let s of this.htmlTextTracksAsArray())this.applyCueSettings(s.cues),this.applyCueSettings(s.activeCues)}))}subscribe(){Tr(this.video);let{textTracks:e}=this.video;this.subscription.add(Vi(e,"addtrack").subscribe(()=>{let i=this.current$.getValue();i&&this.select(i)})),this.subscription.add(lb(Vi(e,"addtrack"),Vi(e,"removetrack"),cb(["init"])).pipe(Ir(()=>this.htmlTextTracksAsArray().map(i=>this.htmlTextTrackToITextTrack(i))),db((i,a)=>i.length===a.length&&i.every(({id:s},n)=>s===a[n].id))).subscribe(this.available$)),this.subscription.add(lb(Vi(e,"change"),cb(["init"])).pipe(Ir(()=>this.htmlTextTracksAsArray().find(({mode:i})=>i==="showing")),Ir(i=>i&&this.htmlTextTrackToITextTrack(i).id),db()).subscribe(this.current$));let t=i=>this.applyCueSettings(i.target?.activeCues??null);this.subscription.add(Vi(e,"addtrack").subscribe(i=>{i.track?.addEventListener("cuechange",t);let a=s=>{let n=s.target?.cues??null;n&&n.length&&(this.applyCueSettings(s.target?.cues??null),s.target?.removeEventListener("cuechange",a))};i.track?.addEventListener("cuechange",a)})),this.subscription.add(Vi(e,"removetrack").subscribe(i=>{i.track?.removeEventListener("cuechange",t)}))}applyCueSettings(e){if(!e||!e.length)return;let t=this.cueSettings.getState();for(let i of Array.from(e)){let a=i;at(t.align)&&(a.align=t.align),at(t.position)&&(a.position=t.position),at(t.size)&&(a.size=t.size),at(t.line)&&(a.line=t.line)}}htmlTextTracksAsArray(e=!1){Tr(this.video);let t=[...this.video.textTracks];return e?t:t.filter(r.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:i}=e,a=e.id?e.id:GA(e),s=this.externalTracks.has(a),n=(s?this.externalTracks.get(a)?.isAuto:this.internalTracks.get(a)?.isAuto)??a.includes("auto");return s?{id:a,type:"external",isAuto:n,language:t,label:i,url:this.externalTracks.get(a)?.url}:{id:a,type:"internal",isAuto:n,language:t,label:i,url:this.internalTracks.get(a)?.url}}static isHealthyTrack(e){return!(e.kind==="metadata"||e.groupId||e.id===""&&e.label===""&&e.language==="")}setExternal(e){this.internalTracks.size>0&&Array.from(this.internalTracks).forEach(([,t])=>this.detach(t)),e.filter(({id:t})=>!this.externalTracks.has(t)).forEach(t=>this.attach(t)),Array.from(this.externalTracks).filter(([t])=>!e.find(i=>i.id===t)).forEach(([,t])=>this.detach(t))}setInternal(e){let t=[...this.externalTracks];e.filter(({id:i,language:a,isAuto:s})=>!this.internalTracks.has(i)&&!t.some(([,n])=>n.language===a&&n.isAuto===s)).forEach(i=>this.attach(i)),Array.from(this.internalTracks).filter(([i])=>!e.find(a=>a.id===i)).forEach(([,i])=>this.detach(i))}select(e){Tr(this.video);for(let t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(let t of this.htmlTextTracksAsArray(!0))(UA(e)||!WA(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){Tr(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){Tr(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)}},Ne=wu;var ei=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 hb=r=>{let e=r;for(;!(e instanceof Document)&&!(e instanceof ShadowRoot)&&e!==null;)e=e?.parentNode;return e??void 0},Au=r=>{let e=hb(r);return!!(e&&e.fullscreenElement&&e.fullscreenElement===r)},mb=r=>{let e=hb(r);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===r)};import{fromEvent as Fe,map as wt,merge as Eb,filterChanged as iL,isNonNullable as xb,Subject as rL,filter as Pb,mapTo as kb,combine as aL,once as sL,ErrorCategory as nL,ValueSubject as wb}from"@vkontakte/videoplayer-shared";var YA=3,fb=(r,e,t=YA)=>{let i=0,a=0;for(let s=0;s<r.length;s++){let n=r.start(s),o=r.end(s);if(n<=e&&e<=o){if(i=n,a=o,!t)return{from:i,to:a};for(let u=s-1;u>=0;u--)r.end(u)+t>=i&&(i=r.start(u));for(let u=s+1;u<r.length;u++)r.start(u)-t<=a&&(a=r.end(u))}}return{from:i,to:a}};var Ps=class{get current(){return this._current}get isYandex(){return this.current==="Yandex"}get isSafari(){return this.current==="Safari"}get isSamsungBrowser(){return this.current==="SamsungBrowser"}get safariVersion(){return this._safariVersion}detect(){let{userAgent:e}=navigator;try{let t=/yabrowser/i.test(e)?"Yandex":void 0,i=/samsungbrowser/i.test(e)?"SamsungBrowser":void 0,a=/chrome|crios/i.test(e)?"Chrome":void 0,s=/chromium/i.test(e)?"Chromium":void 0,n=/firefox|fxios/i.test(e)?"Firefox":void 0,o=/webkit|safari|khtml/i.test(e)?"Safari":void 0,u=/opr\//i.test(e)?"Opera":void 0,l=/edg/i.test(e)?"Edge":void 0;this._current=t||i||n||u||l||a||s||o||"Rest"}catch(t){console.error(t)}this.isSafari&&this.detectSafariVersion()}detectSafariVersion(){try{let{userAgent:e}=window.navigator,t=e.match(/Version\/(\d+)/);if(!t)return;let i=t[1],a=parseInt(i,10);if(isNaN(a))return;this._safariVersion=a}catch(e){console.error(e)}}};var bb=$(Be(),1);var Er=()=>/Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(navigator.appVersion??navigator.userAgent)||navigator?.userAgentData?.mobile;var ks=class{constructor(e){this._highEntropyValues={};this._displayChecker=e}get current(){return this._current}get isIOS(){let e=["iPhone","iPad","iPod"];return this._highEntropyValues.platform==="iOS"||(0,bb.default)(e,this.current)}get isMac(){return this._highEntropyValues.platform==="macOS"||this.current==="Mac"}get isApple(){return this.isIOS||this.isMac}get isIphoneOrOldIpad(){if(!this.isApple||!this._displayChecker.isTouch)return!1;let e=this.current==="iPad"||this._displayChecker.width>700,t=this._iosVersion;return!e||e&&!!t&&t<16}get isAndroid(){return this._highEntropyValues.platform==="Android"||this.current==="Android"}get isMobile(){return this._highEntropyValues.mobile||this._isMobile}get iOSVersion(){return this._iosVersion}detect(){let{userAgent:e}=navigator;try{this._isMobile=Er()}catch(t){console.error(t)}this.detectDevice(e),this.detectHighEntropyValues(),this.isIOS&&this.detectIOSVersion()}async detectHighEntropyValues(){let{userAgentData:e}=navigator;if(e){let t=await e.getHighEntropyValues(["architecture","bitness","brands","mobile","platform","formFactor","model","platformVersion","wow64"]);this._highEntropyValues=t}}detectDevice(e){try{let t=/android/i.test(e)?"Android":void 0,i=/iphone/i.test(e)?"iPhone":void 0,a=/ipad/i.test(e)?"iPad":void 0,s=/ipod/i.test(e)?"iPod":void 0,n=/mac/i.test(e)?"Mac":void 0,o=/webOS|BlackBerry|IEMobile|Opera Mini/i.test(e)?"RestMobile":void 0;this._current=t||i||a||s||o||n||"Desktop"}catch(t){console.error(t)}}detectIOSVersion(){try{if(this._highEntropyValues.platformVersion){let s=this._highEntropyValues.platformVersion.split(".").slice(0,2).join("."),n=parseFloat(s);this._iosVersion=n;return}let{userAgent:e}=window.navigator,t=e.match(/OS (\d+(_\d+)?)/i);if(!t)return;let i=t[1].replace(/_/g,".");if(!i)return;let a=parseFloat(i);if(isNaN(a))return;this._iosVersion=a}catch(e){console.error(e)}}};var ws=class{get isTouch(){return typeof this._maxTouchPoints=="number"?this._maxTouchPoints>1:"ontouchstart"in window}get maxTouchPoints(){return this._maxTouchPoints}get height(){return this._height}get width(){return this._width}get screenHeight(){return this._screenHeight}get screenWidth(){return this._screenWidth}get pixelRatio(){return this._pixelRatio}get isHDR(){return this._isHdr}get colorDepth(){return this._colorDepth}detect(){let{maxTouchPoints:e}=navigator;try{this._maxTouchPoints=e??0,this._isHdr=!!matchMedia("(dynamic-range: high)")?.matches,this._colorDepth=screen.colorDepth}catch(t){console.error(t)}try{this._pixelRatio=window.devicePixelRatio||1,this._height=screen.height,this._width=screen.width,this._height=screen.height,this._screenHeight=this._height*this._pixelRatio,this._screenWidth=this._width*this._pixelRatio}catch(t){console.error(t)}}};var Ye=()=>window.ManagedMediaSource||window.MediaSource,As=()=>!!(window.ManagedMediaSource&&window.ManagedSourceBuffer?.prototype?.appendBuffer),gb=()=>!!(window.MediaSource&&window.SourceBuffer?.prototype?.appendBuffer),vb=()=>window.ManagedMediaSource?new ManagedMediaSource:new MediaSource;var zA=document.createElement("video"),KA='video/mp4; codecs="avc1.42000a,mp4a.40.2"',XA='video/mp4; codecs="hev1.1.6.L93.B0"',Sb='video/webm; codecs="vp09.00.10.08"',yb='video/webm; codecs="av01.0.00M.08"',JA='audio/mp4; codecs="mp4a.40.2"',ZA='audio/webm; codecs="opus"',Tb,eL=async()=>{if(!window.navigator.mediaCapabilities)return;let r={type:"media-source",video:{contentType:"video/webm",width:1280,height:720,bitrate:1e6,framerate:30}},[e,t]=await Promise.all([window.navigator.mediaCapabilities.decodingInfo({...r,video:{...r.video,contentType:yb}}),window.navigator.mediaCapabilities.decodingInfo({...r,video:{...r.video,contentType:Sb}})]);Tb={DASH_WEBM_AV1:e,DASH_WEBM:t}};eL().catch(r=>{console.log(zA),console.error(r)});var Ls=class{constructor(e,t){this._deviceChecker=e,this._browserChecker=t}get protocols(){return this._protocols}get containers(){return this._containers}get codecs(){return this._codecs}get webmDecodingInfo(){return Tb}get supportedCodecs(){return Object.keys(this._codecs).filter(e=>this._codecs[e])}get nativeHlsSupported(){return this._nativeHlsSupported}detect(){this._video=document.createElement("video");try{this._protocols={mms:As(),mse:gb(),hls:!!(this._video.canPlayType?.("application/x-mpegurl")||this._video.canPlayType?.("vnd.apple.mpegURL")),webrtc:!!window.RTCPeerConnection,ws:!!window.WebSocket},this._containers={mp4:!!this._video.canPlayType?.("video/mp4"),webm:!!this._video.canPlayType?.("video/webm"),cmaf:!0};let e=!!Ye()?.isTypeSupported?.(KA),t=!!Ye()?.isTypeSupported?.(XA),i=!!Ye()?.isTypeSupported?.(JA);this._codecs={h264:e,h265:t,vp9:!!Ye()?.isTypeSupported?.(Sb),av1:!!Ye()?.isTypeSupported?.(yb),aac:i,opus:!!Ye()?.isTypeSupported?.(ZA),mpeg:(e||t)&&i},this._nativeHlsSupported=this._protocols.hls&&this._containers.mp4}catch(e){console.error(e)}this.destroyVideoElement()}destroyVideoElement(){if(!this._video)return;if(this._video.pause(),this._video.currentTime=0,this._video.removeAttribute("src"),this._video.src="",this._video.load(),this._video.remove){this._video.remove(),this._video=null;return}this._video.parentNode&&this._video.parentNode.removeChild(this._video);let e=this._video.cloneNode(!1);this._video.parentNode?.replaceChild(e,this._video),this._video=null}};var Ib="audio/mpeg",Rs=class{supportMp3(){return this._codecs.mp3&&this._containers.mpeg}detect(){this._audio=document.createElement("audio");try{this._containers={mpeg:!!this._audio.canPlayType?.(Ib)},this._codecs={mp3:!!Ye()?.isTypeSupported?.(Ib)}}catch(e){console.error(e)}this.destroyAudioElement()}destroyAudioElement(){if(!this._audio)return;if(this._audio.pause(),this._audio.currentTime=0,this._audio.removeAttribute("src"),this._audio.src="",this._audio.load(),this._audio.remove){this._audio.remove(),this._audio=null;return}this._audio.parentNode&&this._audio.parentNode.removeChild(this._audio);let e=this._audio.cloneNode(!1);this._audio.parentNode?.replaceChild(e,this._audio),this._audio=null}};import{ValueSubject as tL}from"@vkontakte/videoplayer-shared";var Lu=class{constructor(){this.isInited$=new tL(!1);this._displayChecker=new ws,this._deviceChecker=new ks(this._displayChecker),this._browserChecker=new Ps,this._videoChecker=new Ls(this._deviceChecker,this._browserChecker),this._audioChecker=new Rs,this.detect()}get display(){return this._displayChecker}get device(){return this._deviceChecker}get browser(){return this._browserChecker}get video(){return this._videoChecker}get audio(){return this._audioChecker}async detect(){this._displayChecker.detect(),this._deviceChecker.detect(),this._browserChecker.detect(),this._videoChecker.detect(),this._audioChecker.detect(),this.isInited$.next(!0)}},B=new Lu;var Ie=r=>{let e=T=>Fe(r,T).pipe(kb(void 0)),i=Eb(...["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"].map(T=>Fe(r,T))).pipe(wt(T=>T.type==="ended"?r.readyState<2:r.readyState<3),iL()),a=Eb(Fe(r,"progress"),Fe(r,"timeupdate")).pipe(wt(()=>fb(r.buffered,r.currentTime))),s=B.browser.isSafari?aL({play:e("play").pipe(sL()),playing:e("playing")}).pipe(kb(void 0)):e("playing"),n=Fe(r,"volumechange").pipe(wt(()=>({muted:r.muted,volume:r.volume}))),o=Fe(r,"ratechange").pipe(wt(()=>r.playbackRate)),u=Fe(r,"error").pipe(Pb(()=>!!(r.error||r.played.length)),wt(()=>{let T=r.error;return{id:T?`MediaError#${T.code}`:"HtmlVideoError",category:nL.VIDEO_PIPELINE,message:T?T.message:"Error event from HTML video element",thrown:r.error??void 0}})),l=Fe(r,"timeupdate").pipe(wt(()=>r.currentTime)),d=new rL,c=.3,p;l.subscribe(T=>{r.loop&&xb(p)&&xb(T)&&p>=r.duration-c&&T<=c&&d.next(p),p=T});let m=e("pause").pipe(Pb(()=>!r.error&&p!==r.duration)),f=Fe(r,"enterpictureinpicture"),b=Fe(r,"leavepictureinpicture"),g=new wb(mb(r));f.subscribe(()=>g.next(!0)),b.subscribe(()=>g.next(!1));let v=new wb(Au(r));return Fe(r,"fullscreenchange").pipe(wt(()=>Au(r))).subscribe(v),{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$:Fe(r,"durationchange").pipe(wt(()=>r.duration)),isBuffering$:i,currentBuffer$:a,volumeState$:n,playbackRateState$:o,inPiP$:g,inFullscreen$:v,enterPip$:f,leavePip$:b}};import{VideoQuality as At}from"@vkontakte/videoplayer-shared";var Lt=r=>{switch(r){case"mobile":return At.Q_144P;case"lowest":return At.Q_240P;case"low":return At.Q_360P;case"sd":case"medium":return At.Q_480P;case"hd":case"high":return At.Q_720P;case"fullhd":case"full":return At.Q_1080P;case"quadhd":case"quad":return At.Q_1440P;case"ultrahd":case"ultra":return At.Q_2160P}};var $t=$(Rt(),1),Hb=$(Be(),1),Cs=$(Ei(),1);import{isNonNullable as $e,isNullable as Nb,now as jb,isHigher as Fb,isHigherOrEqual as Cu,isInvariantQuality as qb,isLowerOrEqual as Du,videoSizeToQuality as gL,assertNotEmptyArray as Qb,assertNonNullable as vL}from"@vkontakte/videoplayer-shared";var Ru=!1,ht={},Db=r=>{Ru=r},Vb=()=>{ht={}},_b=r=>{r(ht)},xr=(r,e)=>{Ru&&(ht.meta=ht.meta??{},ht.meta[r]=e)},me=class{constructor(e){this.name=e}next(e){if(!Ru)return;ht.series=ht.series??{};let t=ht.series[this.name]??[];t.push([Date.now(),e]),ht.series[this.name]=t}};import{isHigher as fL,isHigherOrEqual as SO,isLower as Bb,isLowerOrEqual as yO,isNonNullable as $s,isNullable as bL,videoHeightToQuality as Ms}from"@vkontakte/videoplayer-shared";function $u({limits:r,highQualityLimit:e,trafficSavingLimit:t}){return!r.max&&r.min===e?"high_quality":!r.min&&r.max===t?"traffic_saving":"unknown"}function Mu({limits:r,highQualityLimit:e,trafficSavingLimit:t}){return!!r&&$u({limits:r,highQualityLimit:e,trafficSavingLimit:t})==="high_quality"}function Pr({limits:r,highestAvailableQuality:e,lowestAvailableQuality:t}){return bL(r)||$s(r.min)&&$s(r.max)&&Bb(r.max,r.min)||$s(r.min)&&e&&fL(r.min,e)||$s(r.max)&&t&&Bb(r.max,t)}function Ob({limits:r,highestAvailableHeight:e,lowestAvailableHeight:t}){return Pr({limits:{max:r?.max?Ms(r.max):void 0,min:r?.min?Ms(r.min):void 0},highestAvailableQuality:e?Ms(e):void 0,lowestAvailableQuality:t?Ms(t):void 0})}var SL=new me("best_bitrate"),Gb=(r,e,t)=>(e-t)*Math.pow(2,-10*r)+t;var Vu=r=>(e,t)=>r*(Number(e.bitrate)-Number(t.bitrate)),kr=class{constructor(){this.history={}}recordSelection(e){this.history[e.id]=jb()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}},Wb='Assertion "ABR Tracks is empty array" failed',Ds=(r,e,t,i)=>{let a=[...e].sort(Vu(1)),s=[...t].sort(Vu(1)),n=s.filter(u=>$e(u.bitrate)&&$e(r.bitrate)?r.bitrate/u.bitrate>i:!0),o=(0,$t.default)(s,Math.round(s.length*a.indexOf(r)/(a.length+1)))??(0,$t.default)(s,-1);return o&&(0,Hb.default)(n,o)?o:n.length?(0,$t.default)(n,-1):(0,$t.default)(s,0)},Ub=r=>"quality"in r,Yb=(r,e,t,i)=>{let a=$e(i?.last?.bitrate)&&$e(t?.bitrate)&&i.last.bitrate<t.bitrate?r.trackCooldownIncreaseQuality:r.trackCooldownDecreaseQuality,s=t&&i&&i.history[t.id]&&jb()-i.history[t.id]<=a&&(!i.last||t.id!==i.last.id);if(t?.id&&i&&!s&&i.recordSelection(t),s&&i?.last){let n=i.last;i?.recordSwitch(n);let o=Ub(n)?"video":"audio",u=Ub(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 Bg=h((pF,_g)=>{"use strict";var TR=ie(),IR=Et(),ER=Vr(),Yu=Gu(),Vg=TR("".replace),xR=RegExp("^["+Yu+"]+"),PR=RegExp("(^|[^"+Yu+"])["+Yu+"]+$"),Wu=function(r){return function(e){var t=ER(IR(e));return r&1&&(t=Vg(t,xR,"")),r&2&&(t=Vg(t,PR,"$1")),t}};_g.exports={start:Wu(1),end:Wu(2),trim:Wu(3)}});var qg=h((hF,Fg)=>{"use strict";var kR=yo().PROPER,wR=oe(),Og=Gu(),Ng="\u200B\x85\u180E";Fg.exports=function(r){return wR(function(){return!!Og[r]()||Ng[r]()!==Ng||kR&&Og[r].name!==r})}});var zu=h((mF,Ug)=>{"use strict";var AR=Bg().start,LR=qg();Ug.exports=LR("trimStart")?function(){return AR(this)}:"".trimStart});var jg=h(()=>{"use strict";var RR=Z(),Hg=zu();RR({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==Hg},{trimLeft:Hg})});var Gg=h(()=>{"use strict";jg();var $R=Z(),Qg=zu();$R({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==Qg},{trimStart:Qg})});var Yg=h((SF,Wg)=>{"use strict";Gg();var MR=xt();Wg.exports=MR("String","trimLeft")});var Kg=h((yF,zg)=>{"use strict";var CR=Yg();zg.exports=CR});var Jg=h((TF,Xg)=>{"use strict";var DR=Kg();Xg.exports=DR});var mv=h(()=>{"use strict"});var fv=h(()=>{"use strict"});var gv=h((t1,bv)=>{"use strict";var r$=Le(),a$=Ht(),s$=ue(),n$=s$("match");bv.exports=function(r){var e;return r$(r)&&((e=r[n$])!==void 0?!!e:a$(r)==="RegExp")}});var Sv=h((i1,vv)=>{"use strict";var o$=it();vv.exports=function(){var r=o$(this),e="";return r.hasIndices&&(e+="d"),r.global&&(e+="g"),r.ignoreCase&&(e+="i"),r.multiline&&(e+="m"),r.dotAll&&(e+="s"),r.unicode&&(e+="u"),r.unicodeSets&&(e+="v"),r.sticky&&(e+="y"),e}});var Iv=h((r1,Tv)=>{"use strict";var u$=Ae(),l$=Ge(),c$=er(),d$=Sv(),yv=RegExp.prototype;Tv.exports=function(r){var e=r.flags;return e===void 0&&!("flags"in yv)&&!l$(r,"flags")&&c$(yv,r)?u$(d$,r):e}});var xv=h((a1,Ev)=>{"use strict";var rl=ie(),p$=bi(),h$=Math.floor,tl=rl("".charAt),m$=rl("".replace),il=rl("".slice),f$=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,b$=/\$([$&'`]|\d{1,2})/g;Ev.exports=function(r,e,t,i,a,s){var n=t+r.length,o=i.length,u=b$;return a!==void 0&&(a=p$(a),u=f$),m$(s,u,function(l,d){var c;switch(tl(d,0)){case"$":return"$";case"&":return r;case"`":return il(e,0,t);case"'":return il(e,n);case"<":c=a[il(d,1,-1)];break;default:var p=+d;if(p===0)return l;if(p>o){var m=h$(p/10);return m===0?l:m<=o?i[m-1]===void 0?tl(d,1):i[m-1]+tl(d,1):l}c=i[p-1]}return c===void 0?"":c})}});var wv=h(()=>{"use strict";var g$=Z(),v$=Ae(),sl=ie(),Pv=Et(),S$=K(),y$=mi(),T$=gv(),Ni=Vr(),I$=ir(),E$=Iv(),x$=xv(),P$=ue(),k$=Qe(),w$=P$("replace"),A$=TypeError,al=sl("".indexOf),L$=sl("".replace),kv=sl("".slice),R$=Math.max;g$({target:"String",proto:!0},{replaceAll:function(e,t){var i=Pv(this),a,s,n,o,u,l,d,c,p,m,f=0,b="";if(!y$(e)){if(a=T$(e),a&&(s=Ni(Pv(E$(e))),!~al(s,"g")))throw new A$("`.replaceAll` does not allow non-global regexes");if(n=I$(e,w$),n)return v$(n,e,i,t);if(k$&&a)return L$(Ni(i),e,t)}for(o=Ni(i),u=Ni(e),l=S$(t),l||(t=Ni(t)),d=u.length,c=R$(1,d),p=al(o,u);p!==-1;)m=l?Ni(t(u,p,o)):x$(u,o,p,[],void 0,t),b+=kv(o,f,p)+m,f=p+d,p=p+c>o.length?-1:al(o,u,p+c);return f<o.length&&(b+=kv(o,f)),b}})});var Lv=h((o1,Av)=>{"use strict";mv();fv();wv();var $$=xt();Av.exports=$$("String","replaceAll")});var $v=h((u1,Rv)=>{"use strict";var M$=Lv();Rv.exports=M$});var Cv=h((l1,Mv)=>{"use strict";var C$=$v();Mv.exports=C$});var Vv=h((c1,Dv)=>{"use strict";var D$=nr(),V$=Vr(),_$=Et(),B$=RangeError;Dv.exports=function(e){var t=V$(_$(this)),i="",a=D$(e);if(a<0||a===1/0)throw new B$("Wrong number of repetitions");for(;a>0;(a>>>=1)&&(t+=t))a&1&&(i+=t);return i}});var Fv=h((d1,Nv)=>{"use strict";var Ov=ie(),O$=ao(),_v=Vr(),N$=Vv(),F$=Et(),q$=Ov(N$),U$=Ov("".slice),H$=Math.ceil,Bv=function(r){return function(e,t,i){var a=_v(F$(e)),s=O$(t),n=a.length,o=i===void 0?" ":_v(i),u,l;return s<=n||o===""?a:(u=s-n,l=q$(o,H$(u/o.length)),l.length>u&&(l=U$(l,0,u)),r?a+l:l+a)}};Nv.exports={start:Bv(!1),end:Bv(!0)}});var Uv=h((p1,qv)=>{"use strict";var j$=Qt();qv.exports=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(j$)});var Hv=h(()=>{"use strict";var Q$=Z(),G$=Fv().start,W$=Uv();Q$({target:"String",proto:!0,forced:W$},{padStart:function(e){return G$(this,e,arguments.length>1?arguments[1]:void 0)}})});var Qv=h((f1,jv)=>{"use strict";Hv();var Y$=xt();jv.exports=Y$("String","padStart")});var Wv=h((b1,Gv)=>{"use strict";var z$=Qv();Gv.exports=z$});var zv=h((g1,Yv)=>{"use strict";var K$=Wv();Yv.exports=K$});var Jl="2.0.129-dev.93c0f27a.0";var ke=(a=>(a.STOPPED="stopped",a.READY="ready",a.PLAYING="playing",a.PAUSED="paused",a))(ke||{}),lt=(T=>(T.MPEG="MPEG",T.DASH="DASH",T.DASH_SEP="DASH_SEP",T.DASH_SEP_VK="DASH_SEP",T.DASH_WEBM="DASH_WEBM",T.DASH_WEBM_AV1="DASH_WEBM_AV1",T.DASH_STREAMS="DASH_STREAMS",T.DASH_WEBM_VK="DASH_WEBM",T.DASH_ONDEMAND="DASH_ONDEMAND",T.DASH_ONDEMAND_VK="DASH_ONDEMAND",T.DASH_LIVE="DASH_LIVE",T.DASH_LIVE_CMAF="DASH_LIVE_CMAF",T.DASH_LIVE_WEBM="DASH_LIVE_WEBM",T.HLS="HLS",T.HLS_ONDEMAND="HLS_ONDEMAND",T.HLS_JS="HLS",T.HLS_LIVE="HLS_LIVE",T.HLS_LIVE_CMAF="HLS_LIVE_CMAF",T.WEB_RTC_LIVE="WEB_RTC_LIVE",T))(lt||{});var Fa=(a=>(a.NOT_AVAILABLE="NOT_AVAILABLE",a.AVAILABLE="AVAILABLE",a.CONNECTING="CONNECTING",a.CONNECTED="CONNECTED",a))(Fa||{}),wn=(i=>(i.HTTP1="http1",i.HTTP2="http2",i.QUIC="quic",i))(wn||{});var An=(n=>(n.NONE="none",n.INLINE="inline",n.FULLSCREEN="fullscreen",n.SECOND_SCREEN="second_screen",n.PIP="pip",n.INVISIBLE="invisible",n))(An||{}),qa=(i=>(i.TRAFFIC_SAVING="traffic_saving",i.HIGH_QUALITY="high_quality",i.UNKNOWN="unknown",i))(qa||{});var Ry=$(Be(),1);import{assertNever as Kd,assertNonNullable as uE,isNonNullable as Ga,ValueSubject as no,Subject as lE,Subscription as cE,merge as dE,observableFrom as pE,fromEvent as Gd,map as Wd,tap as Yd,filterChanged as hE,isNullable as oo,ErrorCategory as zd}from"@vkontakte/videoplayer-shared";var Qd=r=>new Promise((e,t)=>{let i=document.createElement("script");i.setAttribute("src",r),i.onload=()=>e(),i.onerror=a=>t(a),document.body.appendChild(i)});var Wa=class{constructor(e){this.connection$=new no(void 0);this.castState$=new no("NOT_AVAILABLE");this.errorEvent$=new lE;this.realCastState$=new no("NOT_AVAILABLE");this.subscription=new cE;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=Ga(window.chrome?.cast),a=!!window.__onGCastApiAvailable;i?this.initializeCastApi():(window.__onGCastApiAvailable=s=>{delete window.__onGCastApiAvailable,s&&!this.isDestroyed&&this.initializeCastApi()},a||Qd("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:zd.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(){Ga(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();oo(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();oo(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(Gd(i,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(a=>{switch(a.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:this.contentId=i.getCurrentSession()?.getMediaSession()?.media?.contentId;break;case cast.framework.SessionState.NO_SESSION:case cast.framework.SessionState.SESSION_ENDING:case cast.framework.SessionState.SESSION_ENDED:case cast.framework.SessionState.SESSION_START_FAILED:this.contentId=void 0;break;default:return Kd(a.sessionState)}})).add(dE(Gd(i,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(Yd(a=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(a)}`})}),Wd(a=>a.castState)),pE([i.getCastState()])).pipe(hE(),Wd(mE),Yd(a=>{this.log({message:`realCastState$: ${a}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(a=>{let s=a==="CONNECTED",n=Ga(this.connection$.getValue());if(s&&!n){let o=i.getCurrentSession();uE(o);let u=o.getCastDevice(),l=o.getMediaSession()?.media?.contentId;(oo(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"?Ga(this.connection$.getValue())?"CONNECTED":"AVAILABLE":a)}))}initializeCastApi(){let e,t,i;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,i=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:i}),this.initListeners()}catch(a){this.errorEvent$.next({id:"ChromecastInitializer",category:zd.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:a})}}},mE=r=>{switch(r){case cast.framework.CastState.NO_DEVICES_AVAILABLE:return"NOT_AVAILABLE";case cast.framework.CastState.NOT_CONNECTED:return"AVAILABLE";case cast.framework.CastState.CONNECTING:return"CONNECTING";case cast.framework.CastState.CONNECTED:return"CONNECTED";default:return Kd(r)}};var Ul=$(Be(),1),py=$(Ei(),1),hy=$(Vo(),1);var eb=$(Ts(),1);import{assertNever as Qf}from"@vkontakte/videoplayer-shared";var le=(r,e=0,t=0)=>{switch(t){case 0:return r.replace("_offset_p",e===0?"":"_"+e.toFixed(0));case 1:{if(e===0)return r;let i=new URL(r);return i.searchParams.append("playback_shift",e.toFixed(0)),i.toString()}case 2:{let i=new URL(r);return!i.searchParams.get("offset_p")&&e===0?r:(i.searchParams.set("offset_p",e.toFixed(0)),i.toString())}default:Qf(t)}return r},Is=(r,e)=>{switch(e){case 0:return NaN;case 1:{let t=new URL(r);return Number(t.searchParams.get("playback_shift"))}case 2:{let t=new URL(r);return Number(t.searchParams.get("offset_p")??0)}default:Qf(e)}};var I=(r,e,t=!1)=>{let i=r.getTransition();(t||!i||i.to===e)&&r.setState(e)};import{isNonNullable as IA,Subject as Es,merge as Gf}from"@vkontakte/videoplayer-shared";var M=class{constructor(e){this.transitionStarted$=new Es;this.transitionEnded$=new Es;this.transitionUpdated$=new Es;this.forceChanged$=new Es;this.stateChangeStarted$=Gf(this.transitionStarted$,this.transitionUpdated$);this.stateChangeEnded$=Gf(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||IA(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 EA}from"@vkontakte/videoplayer-shared";var Wf=r=>{switch(r){case"MPEG":case"DASH":case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":case"HLS":case"HLS_ONDEMAND":return!1;case"DASH_LIVE":case"DASH_LIVE_CMAF":case"HLS_LIVE":case"HLS_LIVE_CMAF":case"DASH_LIVE_WEBM":case"WEB_RTC_LIVE":return!0;default:return EA(r)}};import{assertNever as Ci,assertNonNullable as Jt,debounce as Yf,ErrorCategory as zf,fromEvent as Zt,isNonNullable as Kf,map as Xf,merge as Jf,observableFrom as xA,Subject as PA,Subscription as Tu,timeout as kA,getHighestQuality as wA}from"@vkontakte/videoplayer-shared";var AA=5,LA=5,RA=500,Zf=7e3,yr=class{constructor(e){this.subscription=new Tu;this.loadMediaTimeoutSubscription=new Tu;this.videoState=new M("stopped");this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),i=this.params.desiredState.playbackState.getState(),a=this.params.desiredState.playbackState.getTransition(),s=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${e}; videoTransition: ${JSON.stringify(t)}; desiredPlaybackState: ${i}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(s)};`}),i==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.stop());return}if(!t){if(a?.to!=="paused"&&s.state==="requested"&&e!=="stopped"){this.seek(s.position/1e3);return}switch(i){case"ready":{switch(e){case"playing":case"paused":case"ready":break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:Ci(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:Ci(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:Ci(e)}break}default:Ci(i)}}};this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Wf(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 Tu;this.subscription.add(e),this.subscription.add(Jf(this.videoState.stateChangeStarted$.pipe(Xf(a=>`stateChangeStarted$ ${JSON.stringify(a)}`)),this.videoState.stateChangeEnded$.pipe(Xf(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 PA;e.add(a.pipe(Yf(RA)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let s=NaN;e.add(Zt(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(Zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(n=>{this.logRemoteEvent(n),this.params.output.duration$.next(n.value)}))}t(Zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(Zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemotePause():this.handleRemotePlay()}),t(Zt(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<LA&&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:Ci(n)}}),t(Zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({volume:a.value})}),t(Zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({muted:a.value})});let i=Jf(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,xA(["init"])).pipe(Yf(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"),I(this.params.desiredState.playbackState,"paused")):(this.videoState.setState("playing"),I(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"),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(),i={volume:e.volume??t.volume,muted:e.muted??t.muted};(i.volume!==t.volume||i.muted!==i.muted)&&this.params.output.volume$.next(i)}seek(e){this.params.output.willSeekEvent$.next();let{remotePlayer:t,remotePlayerController:i}=this.params.connection;t.currentTime=e,i.seek()}stop(){let{remotePlayerController:e}=this.params.connection;e.stop()}createMediaInfo(e){let t=this.params.source,i,a,s;switch(e){case"MPEG":{let l=t[e];Jt(l);let d=wA(Object.keys(l));Jt(d);let c=l[d];Jt(c),i=c,a="video/mp4",s=chrome.cast.media.StreamType.BUFFERED;break}case"HLS":case"HLS_ONDEMAND":{let l=t[e];Jt(l),i=l.url,a="application/x-mpegurl",s=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":{let l=t[e];Jt(l),i=l.url,a="application/dash+xml",s=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_LIVE_CMAF":{let l=t[e];Jt(l),i=l.url,a="application/dash+xml",s=chrome.cast.media.StreamType.LIVE;break}case"HLS_LIVE":case"HLS_LIVE_CMAF":{let l=t[e];Jt(l),i=le(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:zf.VIDEO_PIPELINE,message:l,thrown:d}),d}case"DASH":case"DASH_LIVE_WEBM":throw new Error(`${e} is no longer supported`);default:return Ci(e)}let n=new chrome.cast.media.MediaInfo(this.params.meta.videoId??i,a);n.contentUrl=i,n.streamType=s,n.metadata=new chrome.cast.media.GenericMediaMetadata;let{title:o,subtitle:u}=this.params.meta;return Kf(o)&&(n.metadata.title=o),Kf(u)&&(n.metadata.subtitle=u),n}createLoadRequest(e){let t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;let i=this.params.desiredState.seekState.getState();return i.state==="applying"||i.state==="requested"?t.currentTime=this.params.output.isLive$.getValue()?0:i.position/1e3:t.currentTime=0,t}loadMedia(e){let t=this.params.connection.session.loadMedia(e),i=new Promise((a,s)=>{this.loadMediaTimeoutSubscription.add(kA(Zf).subscribe(()=>s(`timeout(${Zf})`)))});(0,eb.default)(Promise.race([t,i]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state==="applying"&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},a=>{let s=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${a}`;this.log({message:s}),this.params.output.error$.next({id:"ChromecastProvider.loadMedia",category:zf.VIDEO_PIPELINE,message:s,thrown:a})}),()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}};var Uu=$(Be(),1);import{clearVideoElement as ib}from"@vkontakte/videoplayer-shared";import{clearVideoElement as $A}from"@vkontakte/videoplayer-shared";var tb=r=>{try{r.pause(),r.playbackRate=0,$A(r),r.remove()}catch(e){console.error(e)}};import{fromEvent as MA,Subscription as CA}from"@vkontakte/videoplayer-shared";var Iu=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)}},Eu=window.WeakMap?new WeakMap:new Iu,xu=window.WeakMap?new WeakMap:new Map,DA=(r,e=20)=>{let t=0;return MA(r,"ratechange").subscribe(i=>{t++,t>=e&&(r.currentTime=r.currentTime,t=0)})},Se=(r,{audioVideoSyncRate:e,disableYandexPiP:t})=>{let i=r.querySelector("video"),a=!!i;i?ib(i):(i=document.createElement("video"),r.appendChild(i)),Eu.set(i,a);let s=new CA;return s.add(DA(i,e)),xu.set(i,s),i.setAttribute("crossorigin","anonymous"),i.setAttribute("playsinline","playsinline"),t&&i.setAttribute("x-yandex-pip","false"),i.controls=!1,i.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),i},ye=r=>{xu.get(r)?.unsubscribe(),xu.delete(r);let t=Eu.get(r);Eu.delete(r),t?ib(r):tb(r)};var ku=$(Di(),1);import{assertNonNullable as Tr,isNonNullable as at,isNullable as UA,fromEvent as Vi,merge as lb,observableFrom as cb,filterChanged as db,map as Ir,Subject as pb,Subscription as HA,ValueSubject as jA,ErrorCategory as QA}from"@vkontakte/videoplayer-shared";import{isNonNullable as Pu,isNullable as FA,Subscription as qA}from"@vkontakte/videoplayer-shared";var xs=(r,e,t,{equal:i=(n,o)=>n===o,changed$:a,onError:s}={})=>{let n=r.getState(),o=e(),u=FA(a),l=new qA;return a&&l.add(a.subscribe(d=>{let c=r.getState();i(d,c)&&r.setState(d)},s)),i(o,n)||(t(n),u&&r.setState(n)),l.add(r.stateChangeStarted$.subscribe(d=>{t(d.to),u&&r.setState(d.to)},s)),l},rt=(r,e,t)=>xs(e,()=>r.loop,i=>{Pu(i)&&(r.loop=i)},{onError:t}),Te=(r,e,t,i)=>xs(e,()=>({muted:r.muted,volume:r.volume}),a=>{Pu(a)&&(r.muted=a.muted,r.volume=a.volume)},{equal:(a,s)=>a===s||a?.muted===s?.muted&&a?.volume===s?.volume,changed$:t,onError:i}),Oe=(r,e,t,i)=>xs(e,()=>r.playbackRate,a=>{Pu(a)&&(r.playbackRate=a)},{changed$:t,onError:i}),kt=xs;var GA=r=>["__",r.language,r.label].join("|"),WA=(r,e)=>{if(r.id===e)return!0;let[t,i,a]=e.split("|");return r.language===i&&r.label===a},wu=class r{constructor(e){this.available$=new pb;this.current$=new jA(void 0);this.error$=new pb;this.subscription=new HA;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 a=s=>{this.error$.next({id:"TextTracksManager",category:QA.WTF,message:"Generic HtmlVideoTextTrackManager error",thrown:s})};this.subscription.add(this.available$.subscribe(i.availableTextTracks$)),this.subscription.add(this.current$.subscribe(i.currentTextTrack$)),this.subscription.add(this.error$.subscribe(i.error$)),this.subscription.add(kt(t.internalTextTracks,()=>(0,ku.default)(this.internalTracks),s=>{at(s)&&this.setInternal(s)},{equal:(s,n)=>at(s)&&at(n)&&s.length===n.length&&s.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe(Ir(s=>s.filter(({type:n})=>n==="internal"))),onError:a})),this.subscription.add(kt(t.externalTextTracks,()=>(0,ku.default)(this.externalTracks),s=>{at(s)&&this.setExternal(s)},{equal:(s,n)=>at(s)&&at(n)&&s.length===n.length&&s.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe(Ir(s=>s.filter(({type:n})=>n==="external"))),onError:a})),this.subscription.add(kt(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(kt(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let s of this.htmlTextTracksAsArray())this.applyCueSettings(s.cues),this.applyCueSettings(s.activeCues)}))}subscribe(){Tr(this.video);let{textTracks:e}=this.video;this.subscription.add(Vi(e,"addtrack").subscribe(()=>{let i=this.current$.getValue();i&&this.select(i)})),this.subscription.add(lb(Vi(e,"addtrack"),Vi(e,"removetrack"),cb(["init"])).pipe(Ir(()=>this.htmlTextTracksAsArray().map(i=>this.htmlTextTrackToITextTrack(i))),db((i,a)=>i.length===a.length&&i.every(({id:s},n)=>s===a[n].id))).subscribe(this.available$)),this.subscription.add(lb(Vi(e,"change"),cb(["init"])).pipe(Ir(()=>this.htmlTextTracksAsArray().find(({mode:i})=>i==="showing")),Ir(i=>i&&this.htmlTextTrackToITextTrack(i).id),db()).subscribe(this.current$));let t=i=>this.applyCueSettings(i.target?.activeCues??null);this.subscription.add(Vi(e,"addtrack").subscribe(i=>{i.track?.addEventListener("cuechange",t);let a=s=>{let n=s.target?.cues??null;n&&n.length&&(this.applyCueSettings(s.target?.cues??null),s.target?.removeEventListener("cuechange",a))};i.track?.addEventListener("cuechange",a)})),this.subscription.add(Vi(e,"removetrack").subscribe(i=>{i.track?.removeEventListener("cuechange",t)}))}applyCueSettings(e){if(!e||!e.length)return;let t=this.cueSettings.getState();for(let i of Array.from(e)){let a=i;at(t.align)&&(a.align=t.align),at(t.position)&&(a.position=t.position),at(t.size)&&(a.size=t.size),at(t.line)&&(a.line=t.line)}}htmlTextTracksAsArray(e=!1){Tr(this.video);let t=[...this.video.textTracks];return e?t:t.filter(r.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:i}=e,a=e.id?e.id:GA(e),s=this.externalTracks.has(a),n=(s?this.externalTracks.get(a)?.isAuto:this.internalTracks.get(a)?.isAuto)??a.includes("auto");return s?{id:a,type:"external",isAuto:n,language:t,label:i,url:this.externalTracks.get(a)?.url}:{id:a,type:"internal",isAuto:n,language:t,label:i,url:this.internalTracks.get(a)?.url}}static isHealthyTrack(e){return!(e.kind==="metadata"||e.groupId||e.id===""&&e.label===""&&e.language==="")}setExternal(e){this.internalTracks.size>0&&Array.from(this.internalTracks).forEach(([,t])=>this.detach(t)),e.filter(({id:t})=>!this.externalTracks.has(t)).forEach(t=>this.attach(t)),Array.from(this.externalTracks).filter(([t])=>!e.find(i=>i.id===t)).forEach(([,t])=>this.detach(t))}setInternal(e){let t=[...this.externalTracks];e.filter(({id:i,language:a,isAuto:s})=>!this.internalTracks.has(i)&&!t.some(([,n])=>n.language===a&&n.isAuto===s)).forEach(i=>this.attach(i)),Array.from(this.internalTracks).filter(([i])=>!e.find(a=>a.id===i)).forEach(([,i])=>this.detach(i))}select(e){Tr(this.video);for(let t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(let t of this.htmlTextTracksAsArray(!0))(UA(e)||!WA(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){Tr(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){Tr(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)}},Ne=wu;var ei=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 hb=r=>{let e=r;for(;!(e instanceof Document)&&!(e instanceof ShadowRoot)&&e!==null;)e=e?.parentNode;return e??void 0},Au=r=>{let e=hb(r);return!!(e&&e.fullscreenElement&&e.fullscreenElement===r)},mb=r=>{let e=hb(r);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===r)};import{fromEvent as Fe,map as wt,merge as Eb,filterChanged as iL,isNonNullable as xb,Subject as rL,filter as Pb,mapTo as kb,combine as aL,once as sL,ErrorCategory as nL,ValueSubject as wb}from"@vkontakte/videoplayer-shared";var YA=3,fb=(r,e,t=YA)=>{let i=0,a=0;for(let s=0;s<r.length;s++){let n=r.start(s),o=r.end(s);if(n<=e&&e<=o){if(i=n,a=o,!t)return{from:i,to:a};for(let u=s-1;u>=0;u--)r.end(u)+t>=i&&(i=r.start(u));for(let u=s+1;u<r.length;u++)r.start(u)-t<=a&&(a=r.end(u))}}return{from:i,to:a}};var Ps=class{get current(){return this._current}get isYandex(){return this.current==="Yandex"}get isSafari(){return this.current==="Safari"}get isSamsungBrowser(){return this.current==="SamsungBrowser"}get safariVersion(){return this._safariVersion}detect(){let{userAgent:e}=navigator;try{let t=/yabrowser/i.test(e)?"Yandex":void 0,i=/samsungbrowser/i.test(e)?"SamsungBrowser":void 0,a=/chrome|crios/i.test(e)?"Chrome":void 0,s=/chromium/i.test(e)?"Chromium":void 0,n=/firefox|fxios/i.test(e)?"Firefox":void 0,o=/webkit|safari|khtml/i.test(e)?"Safari":void 0,u=/opr\//i.test(e)?"Opera":void 0,l=/edg/i.test(e)?"Edge":void 0;this._current=t||i||n||u||l||a||s||o||"Rest"}catch(t){console.error(t)}this.isSafari&&this.detectSafariVersion()}detectSafariVersion(){try{let{userAgent:e}=window.navigator,t=e.match(/Version\/(\d+)/);if(!t)return;let i=t[1],a=parseInt(i,10);if(isNaN(a))return;this._safariVersion=a}catch(e){console.error(e)}}};var bb=$(Be(),1);var Er=()=>/Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(navigator.appVersion??navigator.userAgent)||navigator?.userAgentData?.mobile;var ks=class{constructor(e){this._highEntropyValues={};this._displayChecker=e}get current(){return this._current}get isIOS(){let e=["iPhone","iPad","iPod"];return this._highEntropyValues.platform==="iOS"||(0,bb.default)(e,this.current)}get isMac(){return this._highEntropyValues.platform==="macOS"||this.current==="Mac"}get isApple(){return this.isIOS||this.isMac}get isIphoneOrOldIpad(){if(!this.isApple||!this._displayChecker.isTouch)return!1;let e=this.current==="iPad"||this._displayChecker.width>700,t=this._iosVersion;return!e||e&&!!t&&t<16}get isAndroid(){return this._highEntropyValues.platform==="Android"||this.current==="Android"}get isMobile(){return this._highEntropyValues.mobile||this._isMobile}get iOSVersion(){return this._iosVersion}detect(){let{userAgent:e}=navigator;try{this._isMobile=Er()}catch(t){console.error(t)}this.detectDevice(e),this.detectHighEntropyValues(),this.isIOS&&this.detectIOSVersion()}async detectHighEntropyValues(){let{userAgentData:e}=navigator;if(e){let t=await e.getHighEntropyValues(["architecture","bitness","brands","mobile","platform","formFactor","model","platformVersion","wow64"]);this._highEntropyValues=t}}detectDevice(e){try{let t=/android/i.test(e)?"Android":void 0,i=/iphone/i.test(e)?"iPhone":void 0,a=/ipad/i.test(e)?"iPad":void 0,s=/ipod/i.test(e)?"iPod":void 0,n=/mac/i.test(e)?"Mac":void 0,o=/webOS|BlackBerry|IEMobile|Opera Mini/i.test(e)?"RestMobile":void 0;this._current=t||i||a||s||o||n||"Desktop"}catch(t){console.error(t)}}detectIOSVersion(){try{if(this._highEntropyValues.platformVersion){let s=this._highEntropyValues.platformVersion.split(".").slice(0,2).join("."),n=parseFloat(s);this._iosVersion=n;return}let{userAgent:e}=window.navigator,t=e.match(/OS (\d+(_\d+)?)/i);if(!t)return;let i=t[1].replace(/_/g,".");if(!i)return;let a=parseFloat(i);if(isNaN(a))return;this._iosVersion=a}catch(e){console.error(e)}}};var ws=class{get isTouch(){return typeof this._maxTouchPoints=="number"?this._maxTouchPoints>1:"ontouchstart"in window}get maxTouchPoints(){return this._maxTouchPoints}get height(){return this._height}get width(){return this._width}get screenHeight(){return this._screenHeight}get screenWidth(){return this._screenWidth}get pixelRatio(){return this._pixelRatio}get isHDR(){return this._isHdr}get colorDepth(){return this._colorDepth}detect(){let{maxTouchPoints:e}=navigator;try{this._maxTouchPoints=e??0,this._isHdr=!!matchMedia("(dynamic-range: high)")?.matches,this._colorDepth=screen.colorDepth}catch(t){console.error(t)}try{this._pixelRatio=window.devicePixelRatio||1,this._height=screen.height,this._width=screen.width,this._height=screen.height,this._screenHeight=this._height*this._pixelRatio,this._screenWidth=this._width*this._pixelRatio}catch(t){console.error(t)}}};var Ye=()=>window.ManagedMediaSource||window.MediaSource,As=()=>!!(window.ManagedMediaSource&&window.ManagedSourceBuffer?.prototype?.appendBuffer),gb=()=>!!(window.MediaSource&&window.SourceBuffer?.prototype?.appendBuffer),vb=()=>window.ManagedMediaSource?new ManagedMediaSource:new MediaSource;var zA=document.createElement("video"),KA='video/mp4; codecs="avc1.42000a,mp4a.40.2"',XA='video/mp4; codecs="hev1.1.6.L93.B0"',Sb='video/webm; codecs="vp09.00.10.08"',yb='video/webm; codecs="av01.0.00M.08"',JA='audio/mp4; codecs="mp4a.40.2"',ZA='audio/webm; codecs="opus"',Tb,eL=async()=>{if(!window.navigator.mediaCapabilities)return;let r={type:"media-source",video:{contentType:"video/webm",width:1280,height:720,bitrate:1e6,framerate:30}},[e,t]=await Promise.all([window.navigator.mediaCapabilities.decodingInfo({...r,video:{...r.video,contentType:yb}}),window.navigator.mediaCapabilities.decodingInfo({...r,video:{...r.video,contentType:Sb}})]);Tb={DASH_WEBM_AV1:e,DASH_WEBM:t}};eL().catch(r=>{console.log(zA),console.error(r)});var Ls=class{constructor(e,t){this._deviceChecker=e,this._browserChecker=t}get protocols(){return this._protocols}get containers(){return this._containers}get codecs(){return this._codecs}get webmDecodingInfo(){return Tb}get supportedCodecs(){return Object.keys(this._codecs).filter(e=>this._codecs[e])}get nativeHlsSupported(){return this._nativeHlsSupported}detect(){this._video=document.createElement("video");try{this._protocols={mms:As(),mse:gb(),hls:!!(this._video.canPlayType?.("application/x-mpegurl")||this._video.canPlayType?.("vnd.apple.mpegURL")),webrtc:!!window.RTCPeerConnection,ws:!!window.WebSocket},this._containers={mp4:!!this._video.canPlayType?.("video/mp4"),webm:!!this._video.canPlayType?.("video/webm"),cmaf:!0};let e=!!Ye()?.isTypeSupported?.(KA),t=!!Ye()?.isTypeSupported?.(XA),i=!!Ye()?.isTypeSupported?.(JA);this._codecs={h264:e,h265:t,vp9:!!Ye()?.isTypeSupported?.(Sb),av1:!!Ye()?.isTypeSupported?.(yb),aac:i,opus:!!Ye()?.isTypeSupported?.(ZA),mpeg:(e||t)&&i},this._nativeHlsSupported=this._protocols.hls&&this._containers.mp4}catch(e){console.error(e)}this.destroyVideoElement()}destroyVideoElement(){if(!this._video)return;if(this._video.pause(),this._video.currentTime=0,this._video.removeAttribute("src"),this._video.src="",this._video.load(),this._video.remove){this._video.remove(),this._video=null;return}this._video.parentNode&&this._video.parentNode.removeChild(this._video);let e=this._video.cloneNode(!1);this._video.parentNode?.replaceChild(e,this._video),this._video=null}};var Ib="audio/mpeg",Rs=class{supportMp3(){return this._codecs.mp3&&this._containers.mpeg}detect(){this._audio=document.createElement("audio");try{this._containers={mpeg:!!this._audio.canPlayType?.(Ib)},this._codecs={mp3:!!Ye()?.isTypeSupported?.(Ib)}}catch(e){console.error(e)}this.destroyAudioElement()}destroyAudioElement(){if(!this._audio)return;if(this._audio.pause(),this._audio.currentTime=0,this._audio.removeAttribute("src"),this._audio.src="",this._audio.load(),this._audio.remove){this._audio.remove(),this._audio=null;return}this._audio.parentNode&&this._audio.parentNode.removeChild(this._audio);let e=this._audio.cloneNode(!1);this._audio.parentNode?.replaceChild(e,this._audio),this._audio=null}};import{ValueSubject as tL}from"@vkontakte/videoplayer-shared";var Lu=class{constructor(){this.isInited$=new tL(!1);this._displayChecker=new ws,this._deviceChecker=new ks(this._displayChecker),this._browserChecker=new Ps,this._videoChecker=new Ls(this._deviceChecker,this._browserChecker),this._audioChecker=new Rs,this.detect()}get display(){return this._displayChecker}get device(){return this._deviceChecker}get browser(){return this._browserChecker}get video(){return this._videoChecker}get audio(){return this._audioChecker}async detect(){this._displayChecker.detect(),this._deviceChecker.detect(),this._browserChecker.detect(),this._videoChecker.detect(),this._audioChecker.detect(),this.isInited$.next(!0)}},B=new Lu;var Ie=r=>{let e=T=>Fe(r,T).pipe(kb(void 0)),i=Eb(...["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"].map(T=>Fe(r,T))).pipe(wt(T=>T.type==="ended"?r.readyState<2:r.readyState<3),iL()),a=Eb(Fe(r,"progress"),Fe(r,"timeupdate")).pipe(wt(()=>fb(r.buffered,r.currentTime))),s=B.browser.isSafari?aL({play:e("play").pipe(sL()),playing:e("playing")}).pipe(kb(void 0)):e("playing"),n=Fe(r,"volumechange").pipe(wt(()=>({muted:r.muted,volume:r.volume}))),o=Fe(r,"ratechange").pipe(wt(()=>r.playbackRate)),u=Fe(r,"error").pipe(Pb(()=>!!(r.error||r.played.length)),wt(()=>{let T=r.error;return{id:T?`MediaError#${T.code}`:"HtmlVideoError",category:nL.VIDEO_PIPELINE,message:T?T.message:"Error event from HTML video element",thrown:r.error??void 0}})),l=Fe(r,"timeupdate").pipe(wt(()=>r.currentTime)),d=new rL,c=.3,p;l.subscribe(T=>{r.loop&&xb(p)&&xb(T)&&p>=r.duration-c&&T<=c&&d.next(p),p=T});let m=e("pause").pipe(Pb(()=>!r.error&&p!==r.duration)),f=Fe(r,"enterpictureinpicture"),b=Fe(r,"leavepictureinpicture"),g=new wb(mb(r));f.subscribe(()=>g.next(!0)),b.subscribe(()=>g.next(!1));let v=new wb(Au(r));return Fe(r,"fullscreenchange").pipe(wt(()=>Au(r))).subscribe(v),{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$:Fe(r,"durationchange").pipe(wt(()=>r.duration)),isBuffering$:i,currentBuffer$:a,volumeState$:n,playbackRateState$:o,inPiP$:g,inFullscreen$:v,enterPip$:f,leavePip$:b}};import{VideoQuality as At}from"@vkontakte/videoplayer-shared";var Lt=r=>{switch(r){case"mobile":return At.Q_144P;case"lowest":return At.Q_240P;case"low":return At.Q_360P;case"sd":case"medium":return At.Q_480P;case"hd":case"high":return At.Q_720P;case"fullhd":case"full":return At.Q_1080P;case"quadhd":case"quad":return At.Q_1440P;case"ultrahd":case"ultra":return At.Q_2160P}};var $t=$(Rt(),1),Hb=$(Be(),1),Cs=$(Ei(),1);import{isNonNullable as $e,isNullable as Nb,now as jb,isHigher as Fb,isHigherOrEqual as Cu,isInvariantQuality as qb,isLowerOrEqual as Du,videoSizeToQuality as gL,assertNotEmptyArray as Qb,assertNonNullable as vL}from"@vkontakte/videoplayer-shared";var Ru=!1,ht={},Db=r=>{Ru=r},Vb=()=>{ht={}},_b=r=>{r(ht)},xr=(r,e)=>{Ru&&(ht.meta=ht.meta??{},ht.meta[r]=e)},me=class{constructor(e){this.name=e}next(e){if(!Ru)return;ht.series=ht.series??{};let t=ht.series[this.name]??[];t.push([Date.now(),e]),ht.series[this.name]=t}};import{isHigher as fL,isHigherOrEqual as SO,isLower as Bb,isLowerOrEqual as yO,isNonNullable as $s,isNullable as bL,videoHeightToQuality as Ms}from"@vkontakte/videoplayer-shared";function $u({limits:r,highQualityLimit:e,trafficSavingLimit:t}){return!r.max&&r.min===e?"high_quality":!r.min&&r.max===t?"traffic_saving":"unknown"}function Mu({limits:r,highQualityLimit:e,trafficSavingLimit:t}){return!!r&&$u({limits:r,highQualityLimit:e,trafficSavingLimit:t})==="high_quality"}function Pr({limits:r,highestAvailableQuality:e,lowestAvailableQuality:t}){return bL(r)||$s(r.min)&&$s(r.max)&&Bb(r.max,r.min)||$s(r.min)&&e&&fL(r.min,e)||$s(r.max)&&t&&Bb(r.max,t)}function Ob({limits:r,highestAvailableHeight:e,lowestAvailableHeight:t}){return Pr({limits:{max:r?.max?Ms(r.max):void 0,min:r?.min?Ms(r.min):void 0},highestAvailableQuality:e?Ms(e):void 0,lowestAvailableQuality:t?Ms(t):void 0})}var SL=new me("best_bitrate"),Gb=(r,e,t)=>(e-t)*Math.pow(2,-10*r)+t;var Vu=r=>(e,t)=>r*(Number(e.bitrate)-Number(t.bitrate)),kr=class{constructor(){this.history={}}recordSelection(e){this.history[e.id]=jb()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}},Wb='Assertion "ABR Tracks is empty array" failed',Ds=(r,e,t,i)=>{let a=[...e].sort(Vu(1)),s=[...t].sort(Vu(1)),n=s.filter(u=>$e(u.bitrate)&&$e(r.bitrate)?r.bitrate/u.bitrate>i:!0),o=(0,$t.default)(s,Math.round(s.length*a.indexOf(r)/(a.length+1)))??(0,$t.default)(s,-1);return o&&(0,Hb.default)(n,o)?o:n.length?(0,$t.default)(n,-1):(0,$t.default)(s,0)},Ub=r=>"quality"in r,Yb=(r,e,t,i)=>{let a=$e(i?.last?.bitrate)&&$e(t?.bitrate)&&i.last.bitrate<t.bitrate?r.trackCooldownIncreaseQuality:r.trackCooldownDecreaseQuality,s=t&&i&&i.history[t.id]&&jb()-i.history[t.id]<=a&&(!i.last||t.id!==i.last.id);if(t?.id&&i&&!s&&i.recordSelection(t),s&&i?.last){let n=i.last;i?.recordSwitch(n);let o=Ub(n)?"video":"audio",u=Ub(n)?n.quality:n.bitrate;return e({message:`
8
8
  [last ${o} selected] ${u}
9
9
  `}),n}return i?.recordSwitch(t),t},yL=(r,e)=>Math.log(e)/Math.log(r),TL=({tuning:r,container:e,limits:t})=>{let i=r.containerSizeFactor;if(r.usePixelRatio&&B.display.pixelRatio){let a=B.display.pixelRatio;if(r.pixelRatioMultiplier)i*=r.pixelRatioMultiplier*(a-1)+1;else{let s=r.pixelRatioLogBase,[n=0,o=0,u=0]=r.pixelRatioLogCoefficients,l=yL(s,n*a+o)+u;Number.isFinite(l)&&(i*=l)}}return Mu({highQualityLimit:r.highQualityLimit,trafficSavingLimit:r.trafficSavingLimit,limits:t})&&(i*=2),{containerSizeLimit:r.limitByContainer&&e&&e.width>0&&e.height>0?{width:e.width*i,height:e.height*i}:void 0,containerSizeFactor:i}},Mt=(r,{container:e,estimatedThroughput:t,tuning:i,limits:a,reserve:s=0,forwardBufferHealth:n,playbackRate:o,current:u,history:l,visible:d,droppedVideoMaxQualityLimit:c,stallsVideoMaxQualityLimit:p,stallsPredictedThroughput:m,abrLogger:f})=>{Qb(r,Wb);let{containerSizeFactor:b,containerSizeLimit:g}=TL({container:e,tuning:i,limits:a}),v=i.considerPlaybackRate&&$e(o)?o:1,P=r.filter(S=>!qb(S.quality)).sort((S,x)=>Fb(S.quality,x.quality)?-1:1),T=(0,$t.default)(P,-1)?.quality,L=(0,$t.default)(P,0)?.quality,E=Pr({limits:a,lowestAvailableQuality:T,highestAvailableQuality:L}),V=v*Gb(n??.5,i.bitrateFactorAtEmptyBuffer,i.bitrateFactorAtFullBuffer),A={},D=P.filter(S=>{let x=!0;if(g)if(S.size)x=S.size.width<=g.width&&S.size.height<=g.height;else{let ne=g&&gL(g);x=ne?Du(S.quality,ne):!0}if(!x)return A[S.quality]="FitsContainer",!1;let Q=m||t,ge=$e(Q)&&isFinite(Q)&&$e(S.bitrate)?Q-s>=S.bitrate*V:!0,Ce=Mu({highQualityLimit:i.highQualityLimit,trafficSavingLimit:i.trafficSavingLimit,limits:a})&&a?.min===S.quality;if(!ge&&!Ce)return A[S.quality]="FitsThroughput",!1;if(i.lazyQualitySwitch&&$e(i.minBufferToSwitchUp)&&u&&!qb(u.quality)&&(n??0)<i.minBufferToSwitchUp&&Fb(S.quality,u.quality))return A[S.quality]="Buffer",!1;if(!!c&&Cu(S.quality,c)&&!Ce)return A[S.quality]="DroppedFramesLimit",!1;if(!!p&&Cu(S.quality,p)&&!Ce)return A[S.quality]="StallsLimit",!1;let z=E||(Nb(a?.max)||Du(S.quality,a.max))&&(Nb(a?.min)||Cu(S.quality,a.min)),ee=$e(d)&&!d?Du(S.quality,i.backgroundVideoQualityLimit):!0;return!z||!ee?(A[S.quality]="FitsQualityLimits",!1):!0})[0];D&&D.bitrate&&SL.next(D.bitrate);let k=D??(0,$t.default)(P,-1)??r[0];return k.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.129-dev.8b747eca.0
3
- * Fri, 21 Mar 2025 15:48:17 GMT
2
+ * @vkontakte/videoplayer-core v2.0.129-dev.93c0f27a.0
3
+ * Tue, 18 Mar 2025 09:09:52 GMT
4
4
  * https://st.mycdn.me/static/vkontakte-videoplayer/2-0-129/doc/
5
5
  */
6
- var ys="2.0.129-dev.8b747eca.0";var ge=(r=>(r.STOPPED="stopped",r.READY="ready",r.PLAYING="playing",r.PAUSED="paused",r))(ge||{}),He=(y=>(y.MPEG="MPEG",y.DASH="DASH",y.DASH_SEP="DASH_SEP",y.DASH_SEP_VK="DASH_SEP",y.DASH_WEBM="DASH_WEBM",y.DASH_WEBM_AV1="DASH_WEBM_AV1",y.DASH_STREAMS="DASH_STREAMS",y.DASH_WEBM_VK="DASH_WEBM",y.DASH_ONDEMAND="DASH_ONDEMAND",y.DASH_ONDEMAND_VK="DASH_ONDEMAND",y.DASH_LIVE="DASH_LIVE",y.DASH_LIVE_CMAF="DASH_LIVE_CMAF",y.DASH_LIVE_WEBM="DASH_LIVE_WEBM",y.HLS="HLS",y.HLS_ONDEMAND="HLS_ONDEMAND",y.HLS_JS="HLS",y.HLS_LIVE="HLS_LIVE",y.HLS_LIVE_CMAF="HLS_LIVE_CMAF",y.WEB_RTC_LIVE="WEB_RTC_LIVE",y))(He||{});var nr=(r=>(r.NOT_AVAILABLE="NOT_AVAILABLE",r.AVAILABLE="AVAILABLE",r.CONNECTING="CONNECTING",r.CONNECTED="CONNECTED",r))(nr||{}),ua=(i=>(i.HTTP1="http1",i.HTTP2="http2",i.QUIC="quic",i))(ua||{});var la=(s=>(s.NONE="none",s.INLINE="inline",s.FULLSCREEN="fullscreen",s.SECOND_SCREEN="second_screen",s.PIP="pip",s.INVISIBLE="invisible",s))(la||{}),or=(i=>(i.TRAFFIC_SAVING="traffic_saving",i.HIGH_QUALITY="high_quality",i.UNKNOWN="unknown",i))(or||{});import{assertNever as Ps,assertNonNullable as fu,isNonNullable as ur,ValueSubject as da,Subject as bu,Subscription as gu,merge as Su,observableFrom as vu,fromEvent as Is,map as Es,tap as xs,filterChanged as yu,isNullable as ca,ErrorCategory as ks}from"@vkontakte/videoplayer-shared/evergreen";var Ts=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 lr=class{constructor(e){this.connection$=new da(void 0);this.castState$=new da("NOT_AVAILABLE");this.errorEvent$=new bu;this.realCastState$=new da("NOT_AVAILABLE");this.subscription=new gu;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=ur(window.chrome?.cast),r=!!window.__onGCastApiAvailable;i?this.initializeCastApi():(window.__onGCastApiAvailable=a=>{delete window.__onGCastApiAvailable,a&&!this.isDestroyed&&this.initializeCastApi()},r||Ts("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:ks.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(){ur(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();ca(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();ca(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(Is(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 Ps(r.sessionState)}})).add(Su(Is(i,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(xs(r=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(r)}`})}),Es(r=>r.castState)),vu([i.getCastState()])).pipe(yu(),Es(Tu),xs(r=>{this.log({message:`realCastState$: ${r}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(r=>{let a=r==="CONNECTED",s=ur(this.connection$.getValue());if(a&&!s){let o=i.getCurrentSession();fu(o);let u=o.getCastDevice(),l=o.getMediaSession()?.media?.contentId;(ca(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"?ur(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:ks.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:r})}}},Tu=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 Ps(n)}};import{assertNever as As}from"@vkontakte/videoplayer-shared/evergreen";var te=(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:As(t)}return n},dr=(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:As(e)}};var T=(n,e,t=!1)=>{let i=n.getTransition();(t||!i||i.to===e)&&n.setState(e)};import{isNonNullable as Iu,Subject as cr,merge as ws}from"@vkontakte/videoplayer-shared/evergreen";var $=class{constructor(e){this.transitionStarted$=new cr;this.transitionEnded$=new cr;this.transitionUpdated$=new cr;this.forceChanged$=new cr;this.stateChangeStarted$=ws(this.transitionStarted$,this.transitionUpdated$);this.stateChangeEnded$=ws(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||Iu(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 Eu}from"@vkontakte/videoplayer-shared/evergreen";var $s=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 Eu(n)}};import{assertNever as Mt,assertNonNullable as ft,debounce as Ls,ErrorCategory as Ms,fromEvent as bt,isNonNullable as Rs,map as Ds,merge as Cs,observableFrom as xu,Subject as ku,Subscription as pa,timeout as Pu,getHighestQuality as Au}from"@vkontakte/videoplayer-shared/evergreen";var wu=5,$u=5,Lu=500,Vs=7e3,Wt=class{constructor(e){this.subscription=new pa;this.loadMediaTimeoutSubscription=new pa;this.videoState=new $("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:Mt(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:Mt(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:Mt(e)}break}default:Mt(i)}}};this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next($s(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 pa;this.subscription.add(e),this.subscription.add(Cs(this.videoState.stateChangeStarted$.pipe(Ds(r=>`stateChangeStarted$ ${JSON.stringify(r)}`)),this.videoState.stateChangeEnded$.pipe(Ds(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 ku;e.add(r.pipe(Ls(Lu)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let a=NaN;e.add(bt(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)>wu)&&r.next(o),a=o})),e.add(bt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(s=>{this.logRemoteEvent(s),this.params.output.duration$.next(s.value)}))}t(bt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(bt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemotePause():this.handleRemotePlay()}),t(bt(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<$u&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),T(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:Mt(s)}}),t(bt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({volume:r.value})}),t(bt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({muted:r.value})});let i=Cs(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,xu(["init"])).pipe(Ls(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"),T(this.params.desiredState.playbackState,"paused")):(this.videoState.setState("playing"),T(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"),T(this.params.desiredState.playbackState,"paused"))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="playing"||e==="paused")&&(this.videoState.setState("playing"),T(this.params.desiredState.playbackState,"playing"))}handleRemoteReady(){this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.params.desiredState.playbackState.getTransition()?.to==="ready"&&T(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];ft(l);let c=Au(Object.keys(l));ft(c);let d=l[c];ft(d),i=d,r="video/mp4",a=chrome.cast.media.StreamType.BUFFERED;break}case"HLS":case"HLS_ONDEMAND":{let l=t[e];ft(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];ft(l),i=l.url,r="application/dash+xml",a=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_LIVE_CMAF":{let l=t[e];ft(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];ft(l),i=te(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 Mt(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 Rs(o)&&(s.metadata.title=o),Rs(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(Pu(Vs).subscribe(()=>a(`timeout(${Vs})`)))});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 Os}from"@vkontakte/videoplayer-shared/evergreen";import{clearVideoElement as Mu}from"@vkontakte/videoplayer-shared/evergreen";var Bs=n=>{try{n.pause(),n.playbackRate=0,Mu(n),n.remove()}catch(e){console.error(e)}};import{fromEvent as Ru,Subscription as Du}from"@vkontakte/videoplayer-shared/evergreen";var ha=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)}},ma=window.WeakMap?new WeakMap:new ha,fa=window.WeakMap?new WeakMap:new Map,Cu=(n,e=20)=>{let t=0;return Ru(n,"ratechange").subscribe(i=>{t++,t>=e&&(n.currentTime=n.currentTime,t=0)})},de=(n,{audioVideoSyncRate:e,disableYandexPiP:t})=>{let i=n.querySelector("video"),r=!!i;i?Os(i):(i=document.createElement("video"),n.appendChild(i)),ma.set(i,r);let a=new Du;return a.add(Cu(i,e)),fa.set(i,a),i.setAttribute("crossorigin","anonymous"),i.setAttribute("playsinline","playsinline"),t&&i.setAttribute("x-yandex-pip","false"),i.controls=!1,i.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),i},ce=n=>{fa.get(n)?.unsubscribe(),fa.delete(n);let t=ma.get(n);ma.delete(n),t?Os(n):Bs(n)};import{assertNonNullable as qt,isNonNullable as _e,isNullable as Ou,fromEvent as Rt,merge as _s,observableFrom as Ns,filterChanged as Fs,map as Gt,Subject as Us,Subscription as _u,ValueSubject as Nu,ErrorCategory as Fu}from"@vkontakte/videoplayer-shared/evergreen";import{isNonNullable as ba,isNullable as Vu,Subscription as Bu}from"@vkontakte/videoplayer-shared/evergreen";var pr=(n,e,t,{equal:i=(s,o)=>s===o,changed$:r,onError:a}={})=>{let s=n.getState(),o=e(),u=Vu(r),l=new Bu;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},Oe=(n,e,t)=>pr(e,()=>n.loop,i=>{ba(i)&&(n.loop=i)},{onError:t}),pe=(n,e,t,i)=>pr(e,()=>({muted:n.muted,volume:n.volume}),r=>{ba(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}),xe=(n,e,t,i)=>pr(e,()=>n.playbackRate,r=>{ba(r)&&(n.playbackRate=r)},{changed$:t,onError:i}),et=pr;var Uu=n=>["__",n.language,n.label].join("|"),Hu=(n,e)=>{if(n.id===e)return!0;let[t,i,r]=e.split("|");return n.language===i&&n.label===r},ga=class n{constructor(e){this.available$=new Us;this.current$=new Nu(void 0);this.error$=new Us;this.subscription=new _u;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:Fu.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(et(t.internalTextTracks,()=>Object.values(this.internalTracks),a=>{_e(a)&&this.setInternal(a)},{equal:(a,s)=>_e(a)&&_e(s)&&a.length===s.length&&a.every(({id:o},u)=>o===s[u].id),changed$:this.available$.pipe(Gt(a=>a.filter(({type:s})=>s==="internal"))),onError:r})),this.subscription.add(et(t.externalTextTracks,()=>Object.values(this.externalTracks),a=>{_e(a)&&this.setExternal(a)},{equal:(a,s)=>_e(a)&&_e(s)&&a.length===s.length&&a.every(({id:o},u)=>o===s[u].id),changed$:this.available$.pipe(Gt(a=>a.filter(({type:s})=>s==="external"))),onError:r})),this.subscription.add(et(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(et(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let a of this.htmlTextTracksAsArray())this.applyCueSettings(a.cues),this.applyCueSettings(a.activeCues)}))}subscribe(){qt(this.video);let{textTracks:e}=this.video;this.subscription.add(Rt(e,"addtrack").subscribe(()=>{let i=this.current$.getValue();i&&this.select(i)})),this.subscription.add(_s(Rt(e,"addtrack"),Rt(e,"removetrack"),Ns(["init"])).pipe(Gt(()=>this.htmlTextTracksAsArray().map(i=>this.htmlTextTrackToITextTrack(i))),Fs((i,r)=>i.length===r.length&&i.every(({id:a},s)=>a===r[s].id))).subscribe(this.available$)),this.subscription.add(_s(Rt(e,"change"),Ns(["init"])).pipe(Gt(()=>this.htmlTextTracksAsArray().find(({mode:i})=>i==="showing")),Gt(i=>i&&this.htmlTextTrackToITextTrack(i).id),Fs()).subscribe(this.current$));let t=i=>this.applyCueSettings(i.target?.activeCues??null);this.subscription.add(Rt(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(Rt(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;_e(t.align)&&(r.align=t.align),_e(t.position)&&(r.position=t.position),_e(t.size)&&(r.size=t.size),_e(t.line)&&(r.line=t.line)}}htmlTextTracksAsArray(e=!1){qt(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:Uu(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){qt(this.video);for(let t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(let t of this.htmlTextTracksAsArray(!0))(Ou(e)||!Hu(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){qt(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){qt(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)}},ke=ga;var gt=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 Hs=n=>{let e=n;for(;!(e instanceof Document)&&!(e instanceof ShadowRoot)&&e!==null;)e=e?.parentNode;return e??void 0},Sa=n=>{let e=Hs(n);return!!(e&&e.fullscreenElement&&e.fullscreenElement===n)},Qs=n=>{let e=Hs(n);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===n)};import{fromEvent as Pe,map as tt,merge as Xs,filterChanged as Xu,isNonNullable as Js,Subject as Ju,filter as Zs,mapTo as en,combine as Zu,once as el,ErrorCategory as tl,ValueSubject as tn}from"@vkontakte/videoplayer-shared/evergreen";var Qu=3,js=(n,e,t=Qu)=>{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 hr=class{get current(){return this._current}get isYandex(){return this.current==="Yandex"}get isSafari(){return this.current==="Safari"}get isSamsungBrowser(){return this.current==="SamsungBrowser"}get safariVersion(){return this._safariVersion}detect(){let{userAgent:e}=navigator;try{let t=/yabrowser/i.test(e)?"Yandex":void 0,i=/samsungbrowser/i.test(e)?"SamsungBrowser":void 0,r=/chrome|crios/i.test(e)?"Chrome":void 0,a=/chromium/i.test(e)?"Chromium":void 0,s=/firefox|fxios/i.test(e)?"Firefox":void 0,o=/webkit|safari|khtml/i.test(e)?"Safari":void 0,u=/opr\//i.test(e)?"Opera":void 0,l=/edg/i.test(e)?"Edge":void 0;this._current=t||i||s||u||l||r||a||o||"Rest"}catch(t){console.error(t)}this.isSafari&&this.detectSafariVersion()}detectSafariVersion(){try{let{userAgent:e}=window.navigator,t=e.match(/Version\/(\d+)/);if(!t)return;let i=t[1],r=parseInt(i,10);if(isNaN(r))return;this._safariVersion=r}catch(e){console.error(e)}}};var Yt=()=>/Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(navigator.appVersion??navigator.userAgent)||navigator?.userAgentData?.mobile;var mr=class{constructor(e){this._highEntropyValues={};this._displayChecker=e}get current(){return this._current}get isIOS(){let e=["iPhone","iPad","iPod"];return this._highEntropyValues.platform==="iOS"||e.includes(this.current)}get isMac(){return this._highEntropyValues.platform==="macOS"||this.current==="Mac"}get isApple(){return this.isIOS||this.isMac}get isIphoneOrOldIpad(){if(!this.isApple||!this._displayChecker.isTouch)return!1;let e=this.current==="iPad"||this._displayChecker.width>700,t=this._iosVersion;return!e||e&&!!t&&t<16}get isAndroid(){return this._highEntropyValues.platform==="Android"||this.current==="Android"}get isMobile(){return this._highEntropyValues.mobile||this._isMobile}get iOSVersion(){return this._iosVersion}detect(){let{userAgent:e}=navigator;try{this._isMobile=Yt()}catch(t){console.error(t)}this.detectDevice(e),this.detectHighEntropyValues(),this.isIOS&&this.detectIOSVersion()}async detectHighEntropyValues(){let{userAgentData:e}=navigator;if(e){let t=await e.getHighEntropyValues(["architecture","bitness","brands","mobile","platform","formFactor","model","platformVersion","wow64"]);this._highEntropyValues=t}}detectDevice(e){try{let t=/android/i.test(e)?"Android":void 0,i=/iphone/i.test(e)?"iPhone":void 0,r=/ipad/i.test(e)?"iPad":void 0,a=/ipod/i.test(e)?"iPod":void 0,s=/mac/i.test(e)?"Mac":void 0,o=/webOS|BlackBerry|IEMobile|Opera Mini/i.test(e)?"RestMobile":void 0;this._current=t||i||r||a||o||s||"Desktop"}catch(t){console.error(t)}}detectIOSVersion(){try{if(this._highEntropyValues.platformVersion){let a=this._highEntropyValues.platformVersion.split(".").slice(0,2).join("."),s=parseFloat(a);this._iosVersion=s;return}let{userAgent:e}=window.navigator,t=e.match(/OS (\d+(_\d+)?)/i);if(!t)return;let i=t[1].replace(/_/g,".");if(!i)return;let r=parseFloat(i);if(isNaN(r))return;this._iosVersion=r}catch(e){console.error(e)}}};var fr=class{get isTouch(){return typeof this._maxTouchPoints=="number"?this._maxTouchPoints>1:"ontouchstart"in window}get maxTouchPoints(){return this._maxTouchPoints}get height(){return this._height}get width(){return this._width}get screenHeight(){return this._screenHeight}get screenWidth(){return this._screenWidth}get pixelRatio(){return this._pixelRatio}get isHDR(){return this._isHdr}get colorDepth(){return this._colorDepth}detect(){let{maxTouchPoints:e}=navigator;try{this._maxTouchPoints=e??0,this._isHdr=!!matchMedia("(dynamic-range: high)")?.matches,this._colorDepth=screen.colorDepth}catch(t){console.error(t)}try{this._pixelRatio=window.devicePixelRatio||1,this._height=screen.height,this._width=screen.width,this._height=screen.height,this._screenHeight=this._height*this._pixelRatio,this._screenWidth=this._width*this._pixelRatio}catch(t){console.error(t)}}};var Le=()=>window.ManagedMediaSource||window.MediaSource,br=()=>!!(window.ManagedMediaSource&&window.ManagedSourceBuffer?.prototype?.appendBuffer),Ws=()=>!!(window.MediaSource&&window.SourceBuffer?.prototype?.appendBuffer),qs=()=>window.ManagedMediaSource?new ManagedMediaSource:new MediaSource;var ju=document.createElement("video"),Wu='video/mp4; codecs="avc1.42000a,mp4a.40.2"',qu='video/mp4; codecs="hev1.1.6.L93.B0"',Gs='video/webm; codecs="vp09.00.10.08"',Ys='video/webm; codecs="av01.0.00M.08"',Gu='audio/mp4; codecs="mp4a.40.2"',Yu='audio/webm; codecs="opus"',zs,zu=async()=>{if(!window.navigator.mediaCapabilities)return;let n={type:"media-source",video:{contentType:"video/webm",width:1280,height:720,bitrate:1e6,framerate:30}},[e,t]=await Promise.all([window.navigator.mediaCapabilities.decodingInfo({...n,video:{...n.video,contentType:Ys}}),window.navigator.mediaCapabilities.decodingInfo({...n,video:{...n.video,contentType:Gs}})]);zs={DASH_WEBM_AV1:e,DASH_WEBM:t}};zu().catch(n=>{console.log(ju),console.error(n)});var gr=class{constructor(e,t){this._deviceChecker=e,this._browserChecker=t}get protocols(){return this._protocols}get containers(){return this._containers}get codecs(){return this._codecs}get webmDecodingInfo(){return zs}get supportedCodecs(){return Object.keys(this._codecs).filter(e=>this._codecs[e])}get nativeHlsSupported(){return this._nativeHlsSupported}detect(){this._video=document.createElement("video");try{this._protocols={mms:br(),mse:Ws(),hls:!!(this._video.canPlayType?.("application/x-mpegurl")||this._video.canPlayType?.("vnd.apple.mpegURL")),webrtc:!!window.RTCPeerConnection,ws:!!window.WebSocket},this._containers={mp4:!!this._video.canPlayType?.("video/mp4"),webm:!!this._video.canPlayType?.("video/webm"),cmaf:!0};let e=!!Le()?.isTypeSupported?.(Wu),t=!!Le()?.isTypeSupported?.(qu),i=!!Le()?.isTypeSupported?.(Gu);this._codecs={h264:e,h265:t,vp9:!!Le()?.isTypeSupported?.(Gs),av1:!!Le()?.isTypeSupported?.(Ys),aac:i,opus:!!Le()?.isTypeSupported?.(Yu),mpeg:(e||t)&&i},this._nativeHlsSupported=this._protocols.hls&&this._containers.mp4}catch(e){console.error(e)}this.destroyVideoElement()}destroyVideoElement(){if(!this._video)return;if(this._video.pause(),this._video.currentTime=0,this._video.removeAttribute("src"),this._video.src="",this._video.load(),this._video.remove){this._video.remove(),this._video=null;return}this._video.parentNode&&this._video.parentNode.removeChild(this._video);let e=this._video.cloneNode(!1);this._video.parentNode?.replaceChild(e,this._video),this._video=null}};var Ks="audio/mpeg",Sr=class{supportMp3(){return this._codecs.mp3&&this._containers.mpeg}detect(){this._audio=document.createElement("audio");try{this._containers={mpeg:!!this._audio.canPlayType?.(Ks)},this._codecs={mp3:!!Le()?.isTypeSupported?.(Ks)}}catch(e){console.error(e)}this.destroyAudioElement()}destroyAudioElement(){if(!this._audio)return;if(this._audio.pause(),this._audio.currentTime=0,this._audio.removeAttribute("src"),this._audio.src="",this._audio.load(),this._audio.remove){this._audio.remove(),this._audio=null;return}this._audio.parentNode&&this._audio.parentNode.removeChild(this._audio);let e=this._audio.cloneNode(!1);this._audio.parentNode?.replaceChild(e,this._audio),this._audio=null}};import{ValueSubject as Ku}from"@vkontakte/videoplayer-shared/evergreen";var va=class{constructor(){this.isInited$=new Ku(!1);this._displayChecker=new fr,this._deviceChecker=new mr(this._displayChecker),this._browserChecker=new hr,this._videoChecker=new gr(this._deviceChecker,this._browserChecker),this._audioChecker=new Sr,this.detect()}get display(){return this._displayChecker}get device(){return this._deviceChecker}get browser(){return this._browserChecker}get video(){return this._videoChecker}get audio(){return this._audioChecker}async detect(){this._displayChecker.detect(),this._deviceChecker.detect(),this._browserChecker.detect(),this._videoChecker.detect(),this._audioChecker.detect(),this.isInited$.next(!0)}},C=new va;var he=n=>{let e=y=>Pe(n,y).pipe(en(void 0)),i=Xs(...["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"].map(y=>Pe(n,y))).pipe(tt(y=>y.type==="ended"?n.readyState<2:n.readyState<3),Xu()),r=Xs(Pe(n,"progress"),Pe(n,"timeupdate")).pipe(tt(()=>js(n.buffered,n.currentTime))),a=C.browser.isSafari?Zu({play:e("play").pipe(el()),playing:e("playing")}).pipe(en(void 0)):e("playing"),s=Pe(n,"volumechange").pipe(tt(()=>({muted:n.muted,volume:n.volume}))),o=Pe(n,"ratechange").pipe(tt(()=>n.playbackRate)),u=Pe(n,"error").pipe(Zs(()=>!!(n.error||n.played.length)),tt(()=>{let y=n.error;return{id:y?`MediaError#${y.code}`:"HtmlVideoError",category:tl.VIDEO_PIPELINE,message:y?y.message:"Error event from HTML video element",thrown:n.error??void 0}})),l=Pe(n,"timeupdate").pipe(tt(()=>n.currentTime)),c=new Ju,d=.3,p;l.subscribe(y=>{n.loop&&Js(p)&&Js(y)&&p>=n.duration-d&&y<=d&&c.next(p),p=y});let h=e("pause").pipe(Zs(()=>!n.error&&p!==n.duration)),m=Pe(n,"enterpictureinpicture"),f=Pe(n,"leavepictureinpicture"),g=new tn(Qs(n));m.subscribe(()=>g.next(!0)),f.subscribe(()=>g.next(!1));let S=new tn(Sa(n));return Pe(n,"fullscreenchange").pipe(tt(()=>Sa(n))).subscribe(S),{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$:Pe(n,"durationchange").pipe(tt(()=>n.duration)),isBuffering$:i,currentBuffer$:r,volumeState$:s,playbackRateState$:o,inPiP$:g,inFullscreen$:S,enterPip$:m,leavePip$:f}};import{VideoQuality as it}from"@vkontakte/videoplayer-shared/evergreen";var rt=n=>{switch(n){case"mobile":return it.Q_144P;case"lowest":return it.Q_240P;case"low":return it.Q_360P;case"sd":case"medium":return it.Q_480P;case"hd":case"high":return it.Q_720P;case"fullhd":case"full":return it.Q_1080P;case"quadhd":case"quad":return it.Q_1440P;case"ultrahd":case"ultra":return it.Q_2160P}};import{isNonNullable as Se,isNullable as un,now as pn,isHigher as ln,isHigherOrEqual as Ea,isInvariantQuality as dn,isLowerOrEqual as xa,videoSizeToQuality as al,assertNotEmptyArray as hn,assertNonNullable as sl}from"@vkontakte/videoplayer-shared/evergreen";var ya=!1,je={},rn=n=>{ya=n},an=()=>{je={}},sn=n=>{n(je)},zt=(n,e)=>{ya&&(je.meta=je.meta??{},je.meta[n]=e)},se=class{constructor(e){this.name=e}next(e){if(!ya)return;je.series=je.series??{};let t=je.series[this.name]??[];t.push([Date.now(),e]),je.series[this.name]=t}};import{isHigher as il,isHigherOrEqual as Tm,isLower as nn,isLowerOrEqual as Im,isNonNullable as vr,isNullable as rl,videoHeightToQuality as yr}from"@vkontakte/videoplayer-shared/evergreen";function Ta({limits:n,highQualityLimit:e,trafficSavingLimit:t}){return!n.max&&n.min===e?"high_quality":!n.min&&n.max===t?"traffic_saving":"unknown"}function Ia({limits:n,highQualityLimit:e,trafficSavingLimit:t}){return!!n&&Ta({limits:n,highQualityLimit:e,trafficSavingLimit:t})==="high_quality"}function Kt({limits:n,highestAvailableQuality:e,lowestAvailableQuality:t}){return rl(n)||vr(n.min)&&vr(n.max)&&nn(n.max,n.min)||vr(n.min)&&e&&il(n.min,e)||vr(n.max)&&t&&nn(n.max,t)}function on({limits:n,highestAvailableHeight:e,lowestAvailableHeight:t}){return Kt({limits:{max:n?.max?yr(n.max):void 0,min:n?.min?yr(n.min):void 0},highestAvailableQuality:e?yr(e):void 0,lowestAvailableQuality:t?yr(t):void 0})}var nl=new se("best_bitrate"),mn=(n,e,t)=>(e-t)*Math.pow(2,-10*n)+t;var ka=n=>(e,t)=>n*(Number(e.bitrate)-Number(t.bitrate)),Xt=class{constructor(){this.history={}}recordSelection(e){this.history[e.id]=pn()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}},fn='Assertion "ABR Tracks is empty array" failed',Tr=(n,e,t,i)=>{let r=[...e].sort(ka(1)),a=[...t].sort(ka(1)),s=a.filter(u=>Se(u.bitrate)&&Se(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)},cn=n=>"quality"in n,bn=(n,e,t,i)=>{let r=Se(i?.last?.bitrate)&&Se(t?.bitrate)&&i.last.bitrate<t.bitrate?n.trackCooldownIncreaseQuality:n.trackCooldownDecreaseQuality,a=t&&i&&i.history[t.id]&&pn()-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=cn(s)?"video":"audio",u=cn(s)?s.quality:s.bitrate;return e({message:`
6
+ var ys="2.0.129-dev.93c0f27a.0";var ge=(r=>(r.STOPPED="stopped",r.READY="ready",r.PLAYING="playing",r.PAUSED="paused",r))(ge||{}),He=(y=>(y.MPEG="MPEG",y.DASH="DASH",y.DASH_SEP="DASH_SEP",y.DASH_SEP_VK="DASH_SEP",y.DASH_WEBM="DASH_WEBM",y.DASH_WEBM_AV1="DASH_WEBM_AV1",y.DASH_STREAMS="DASH_STREAMS",y.DASH_WEBM_VK="DASH_WEBM",y.DASH_ONDEMAND="DASH_ONDEMAND",y.DASH_ONDEMAND_VK="DASH_ONDEMAND",y.DASH_LIVE="DASH_LIVE",y.DASH_LIVE_CMAF="DASH_LIVE_CMAF",y.DASH_LIVE_WEBM="DASH_LIVE_WEBM",y.HLS="HLS",y.HLS_ONDEMAND="HLS_ONDEMAND",y.HLS_JS="HLS",y.HLS_LIVE="HLS_LIVE",y.HLS_LIVE_CMAF="HLS_LIVE_CMAF",y.WEB_RTC_LIVE="WEB_RTC_LIVE",y))(He||{});var nr=(r=>(r.NOT_AVAILABLE="NOT_AVAILABLE",r.AVAILABLE="AVAILABLE",r.CONNECTING="CONNECTING",r.CONNECTED="CONNECTED",r))(nr||{}),ua=(i=>(i.HTTP1="http1",i.HTTP2="http2",i.QUIC="quic",i))(ua||{});var la=(s=>(s.NONE="none",s.INLINE="inline",s.FULLSCREEN="fullscreen",s.SECOND_SCREEN="second_screen",s.PIP="pip",s.INVISIBLE="invisible",s))(la||{}),or=(i=>(i.TRAFFIC_SAVING="traffic_saving",i.HIGH_QUALITY="high_quality",i.UNKNOWN="unknown",i))(or||{});import{assertNever as Ps,assertNonNullable as fu,isNonNullable as ur,ValueSubject as da,Subject as bu,Subscription as gu,merge as Su,observableFrom as vu,fromEvent as Is,map as Es,tap as xs,filterChanged as yu,isNullable as ca,ErrorCategory as ks}from"@vkontakte/videoplayer-shared/evergreen";var Ts=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 lr=class{constructor(e){this.connection$=new da(void 0);this.castState$=new da("NOT_AVAILABLE");this.errorEvent$=new bu;this.realCastState$=new da("NOT_AVAILABLE");this.subscription=new gu;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=ur(window.chrome?.cast),r=!!window.__onGCastApiAvailable;i?this.initializeCastApi():(window.__onGCastApiAvailable=a=>{delete window.__onGCastApiAvailable,a&&!this.isDestroyed&&this.initializeCastApi()},r||Ts("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:ks.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(){ur(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();ca(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();ca(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(Is(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 Ps(r.sessionState)}})).add(Su(Is(i,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(xs(r=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(r)}`})}),Es(r=>r.castState)),vu([i.getCastState()])).pipe(yu(),Es(Tu),xs(r=>{this.log({message:`realCastState$: ${r}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(r=>{let a=r==="CONNECTED",s=ur(this.connection$.getValue());if(a&&!s){let o=i.getCurrentSession();fu(o);let u=o.getCastDevice(),l=o.getMediaSession()?.media?.contentId;(ca(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"?ur(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:ks.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:r})}}},Tu=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 Ps(n)}};import{assertNever as As}from"@vkontakte/videoplayer-shared/evergreen";var te=(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:As(t)}return n},dr=(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:As(e)}};var T=(n,e,t=!1)=>{let i=n.getTransition();(t||!i||i.to===e)&&n.setState(e)};import{isNonNullable as Iu,Subject as cr,merge as ws}from"@vkontakte/videoplayer-shared/evergreen";var $=class{constructor(e){this.transitionStarted$=new cr;this.transitionEnded$=new cr;this.transitionUpdated$=new cr;this.forceChanged$=new cr;this.stateChangeStarted$=ws(this.transitionStarted$,this.transitionUpdated$);this.stateChangeEnded$=ws(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||Iu(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 Eu}from"@vkontakte/videoplayer-shared/evergreen";var $s=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 Eu(n)}};import{assertNever as Mt,assertNonNullable as ft,debounce as Ls,ErrorCategory as Ms,fromEvent as bt,isNonNullable as Rs,map as Ds,merge as Cs,observableFrom as xu,Subject as ku,Subscription as pa,timeout as Pu,getHighestQuality as Au}from"@vkontakte/videoplayer-shared/evergreen";var wu=5,$u=5,Lu=500,Vs=7e3,Wt=class{constructor(e){this.subscription=new pa;this.loadMediaTimeoutSubscription=new pa;this.videoState=new $("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:Mt(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:Mt(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:Mt(e)}break}default:Mt(i)}}};this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next($s(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 pa;this.subscription.add(e),this.subscription.add(Cs(this.videoState.stateChangeStarted$.pipe(Ds(r=>`stateChangeStarted$ ${JSON.stringify(r)}`)),this.videoState.stateChangeEnded$.pipe(Ds(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 ku;e.add(r.pipe(Ls(Lu)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let a=NaN;e.add(bt(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)>wu)&&r.next(o),a=o})),e.add(bt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(s=>{this.logRemoteEvent(s),this.params.output.duration$.next(s.value)}))}t(bt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(bt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemotePause():this.handleRemotePlay()}),t(bt(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<$u&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),T(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:Mt(s)}}),t(bt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({volume:r.value})}),t(bt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({muted:r.value})});let i=Cs(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,xu(["init"])).pipe(Ls(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"),T(this.params.desiredState.playbackState,"paused")):(this.videoState.setState("playing"),T(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"),T(this.params.desiredState.playbackState,"paused"))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="playing"||e==="paused")&&(this.videoState.setState("playing"),T(this.params.desiredState.playbackState,"playing"))}handleRemoteReady(){this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.params.desiredState.playbackState.getTransition()?.to==="ready"&&T(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];ft(l);let c=Au(Object.keys(l));ft(c);let d=l[c];ft(d),i=d,r="video/mp4",a=chrome.cast.media.StreamType.BUFFERED;break}case"HLS":case"HLS_ONDEMAND":{let l=t[e];ft(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];ft(l),i=l.url,r="application/dash+xml",a=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_LIVE_CMAF":{let l=t[e];ft(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];ft(l),i=te(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 Mt(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 Rs(o)&&(s.metadata.title=o),Rs(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(Pu(Vs).subscribe(()=>a(`timeout(${Vs})`)))});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 Os}from"@vkontakte/videoplayer-shared/evergreen";import{clearVideoElement as Mu}from"@vkontakte/videoplayer-shared/evergreen";var Bs=n=>{try{n.pause(),n.playbackRate=0,Mu(n),n.remove()}catch(e){console.error(e)}};import{fromEvent as Ru,Subscription as Du}from"@vkontakte/videoplayer-shared/evergreen";var ha=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)}},ma=window.WeakMap?new WeakMap:new ha,fa=window.WeakMap?new WeakMap:new Map,Cu=(n,e=20)=>{let t=0;return Ru(n,"ratechange").subscribe(i=>{t++,t>=e&&(n.currentTime=n.currentTime,t=0)})},de=(n,{audioVideoSyncRate:e,disableYandexPiP:t})=>{let i=n.querySelector("video"),r=!!i;i?Os(i):(i=document.createElement("video"),n.appendChild(i)),ma.set(i,r);let a=new Du;return a.add(Cu(i,e)),fa.set(i,a),i.setAttribute("crossorigin","anonymous"),i.setAttribute("playsinline","playsinline"),t&&i.setAttribute("x-yandex-pip","false"),i.controls=!1,i.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),i},ce=n=>{fa.get(n)?.unsubscribe(),fa.delete(n);let t=ma.get(n);ma.delete(n),t?Os(n):Bs(n)};import{assertNonNullable as qt,isNonNullable as _e,isNullable as Ou,fromEvent as Rt,merge as _s,observableFrom as Ns,filterChanged as Fs,map as Gt,Subject as Us,Subscription as _u,ValueSubject as Nu,ErrorCategory as Fu}from"@vkontakte/videoplayer-shared/evergreen";import{isNonNullable as ba,isNullable as Vu,Subscription as Bu}from"@vkontakte/videoplayer-shared/evergreen";var pr=(n,e,t,{equal:i=(s,o)=>s===o,changed$:r,onError:a}={})=>{let s=n.getState(),o=e(),u=Vu(r),l=new Bu;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},Oe=(n,e,t)=>pr(e,()=>n.loop,i=>{ba(i)&&(n.loop=i)},{onError:t}),pe=(n,e,t,i)=>pr(e,()=>({muted:n.muted,volume:n.volume}),r=>{ba(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}),xe=(n,e,t,i)=>pr(e,()=>n.playbackRate,r=>{ba(r)&&(n.playbackRate=r)},{changed$:t,onError:i}),et=pr;var Uu=n=>["__",n.language,n.label].join("|"),Hu=(n,e)=>{if(n.id===e)return!0;let[t,i,r]=e.split("|");return n.language===i&&n.label===r},ga=class n{constructor(e){this.available$=new Us;this.current$=new Nu(void 0);this.error$=new Us;this.subscription=new _u;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:Fu.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(et(t.internalTextTracks,()=>Object.values(this.internalTracks),a=>{_e(a)&&this.setInternal(a)},{equal:(a,s)=>_e(a)&&_e(s)&&a.length===s.length&&a.every(({id:o},u)=>o===s[u].id),changed$:this.available$.pipe(Gt(a=>a.filter(({type:s})=>s==="internal"))),onError:r})),this.subscription.add(et(t.externalTextTracks,()=>Object.values(this.externalTracks),a=>{_e(a)&&this.setExternal(a)},{equal:(a,s)=>_e(a)&&_e(s)&&a.length===s.length&&a.every(({id:o},u)=>o===s[u].id),changed$:this.available$.pipe(Gt(a=>a.filter(({type:s})=>s==="external"))),onError:r})),this.subscription.add(et(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(et(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let a of this.htmlTextTracksAsArray())this.applyCueSettings(a.cues),this.applyCueSettings(a.activeCues)}))}subscribe(){qt(this.video);let{textTracks:e}=this.video;this.subscription.add(Rt(e,"addtrack").subscribe(()=>{let i=this.current$.getValue();i&&this.select(i)})),this.subscription.add(_s(Rt(e,"addtrack"),Rt(e,"removetrack"),Ns(["init"])).pipe(Gt(()=>this.htmlTextTracksAsArray().map(i=>this.htmlTextTrackToITextTrack(i))),Fs((i,r)=>i.length===r.length&&i.every(({id:a},s)=>a===r[s].id))).subscribe(this.available$)),this.subscription.add(_s(Rt(e,"change"),Ns(["init"])).pipe(Gt(()=>this.htmlTextTracksAsArray().find(({mode:i})=>i==="showing")),Gt(i=>i&&this.htmlTextTrackToITextTrack(i).id),Fs()).subscribe(this.current$));let t=i=>this.applyCueSettings(i.target?.activeCues??null);this.subscription.add(Rt(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(Rt(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;_e(t.align)&&(r.align=t.align),_e(t.position)&&(r.position=t.position),_e(t.size)&&(r.size=t.size),_e(t.line)&&(r.line=t.line)}}htmlTextTracksAsArray(e=!1){qt(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:Uu(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){qt(this.video);for(let t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(let t of this.htmlTextTracksAsArray(!0))(Ou(e)||!Hu(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){qt(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){qt(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)}},ke=ga;var gt=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 Hs=n=>{let e=n;for(;!(e instanceof Document)&&!(e instanceof ShadowRoot)&&e!==null;)e=e?.parentNode;return e??void 0},Sa=n=>{let e=Hs(n);return!!(e&&e.fullscreenElement&&e.fullscreenElement===n)},Qs=n=>{let e=Hs(n);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===n)};import{fromEvent as Pe,map as tt,merge as Xs,filterChanged as Xu,isNonNullable as Js,Subject as Ju,filter as Zs,mapTo as en,combine as Zu,once as el,ErrorCategory as tl,ValueSubject as tn}from"@vkontakte/videoplayer-shared/evergreen";var Qu=3,js=(n,e,t=Qu)=>{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 hr=class{get current(){return this._current}get isYandex(){return this.current==="Yandex"}get isSafari(){return this.current==="Safari"}get isSamsungBrowser(){return this.current==="SamsungBrowser"}get safariVersion(){return this._safariVersion}detect(){let{userAgent:e}=navigator;try{let t=/yabrowser/i.test(e)?"Yandex":void 0,i=/samsungbrowser/i.test(e)?"SamsungBrowser":void 0,r=/chrome|crios/i.test(e)?"Chrome":void 0,a=/chromium/i.test(e)?"Chromium":void 0,s=/firefox|fxios/i.test(e)?"Firefox":void 0,o=/webkit|safari|khtml/i.test(e)?"Safari":void 0,u=/opr\//i.test(e)?"Opera":void 0,l=/edg/i.test(e)?"Edge":void 0;this._current=t||i||s||u||l||r||a||o||"Rest"}catch(t){console.error(t)}this.isSafari&&this.detectSafariVersion()}detectSafariVersion(){try{let{userAgent:e}=window.navigator,t=e.match(/Version\/(\d+)/);if(!t)return;let i=t[1],r=parseInt(i,10);if(isNaN(r))return;this._safariVersion=r}catch(e){console.error(e)}}};var Yt=()=>/Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(navigator.appVersion??navigator.userAgent)||navigator?.userAgentData?.mobile;var mr=class{constructor(e){this._highEntropyValues={};this._displayChecker=e}get current(){return this._current}get isIOS(){let e=["iPhone","iPad","iPod"];return this._highEntropyValues.platform==="iOS"||e.includes(this.current)}get isMac(){return this._highEntropyValues.platform==="macOS"||this.current==="Mac"}get isApple(){return this.isIOS||this.isMac}get isIphoneOrOldIpad(){if(!this.isApple||!this._displayChecker.isTouch)return!1;let e=this.current==="iPad"||this._displayChecker.width>700,t=this._iosVersion;return!e||e&&!!t&&t<16}get isAndroid(){return this._highEntropyValues.platform==="Android"||this.current==="Android"}get isMobile(){return this._highEntropyValues.mobile||this._isMobile}get iOSVersion(){return this._iosVersion}detect(){let{userAgent:e}=navigator;try{this._isMobile=Yt()}catch(t){console.error(t)}this.detectDevice(e),this.detectHighEntropyValues(),this.isIOS&&this.detectIOSVersion()}async detectHighEntropyValues(){let{userAgentData:e}=navigator;if(e){let t=await e.getHighEntropyValues(["architecture","bitness","brands","mobile","platform","formFactor","model","platformVersion","wow64"]);this._highEntropyValues=t}}detectDevice(e){try{let t=/android/i.test(e)?"Android":void 0,i=/iphone/i.test(e)?"iPhone":void 0,r=/ipad/i.test(e)?"iPad":void 0,a=/ipod/i.test(e)?"iPod":void 0,s=/mac/i.test(e)?"Mac":void 0,o=/webOS|BlackBerry|IEMobile|Opera Mini/i.test(e)?"RestMobile":void 0;this._current=t||i||r||a||o||s||"Desktop"}catch(t){console.error(t)}}detectIOSVersion(){try{if(this._highEntropyValues.platformVersion){let a=this._highEntropyValues.platformVersion.split(".").slice(0,2).join("."),s=parseFloat(a);this._iosVersion=s;return}let{userAgent:e}=window.navigator,t=e.match(/OS (\d+(_\d+)?)/i);if(!t)return;let i=t[1].replace(/_/g,".");if(!i)return;let r=parseFloat(i);if(isNaN(r))return;this._iosVersion=r}catch(e){console.error(e)}}};var fr=class{get isTouch(){return typeof this._maxTouchPoints=="number"?this._maxTouchPoints>1:"ontouchstart"in window}get maxTouchPoints(){return this._maxTouchPoints}get height(){return this._height}get width(){return this._width}get screenHeight(){return this._screenHeight}get screenWidth(){return this._screenWidth}get pixelRatio(){return this._pixelRatio}get isHDR(){return this._isHdr}get colorDepth(){return this._colorDepth}detect(){let{maxTouchPoints:e}=navigator;try{this._maxTouchPoints=e??0,this._isHdr=!!matchMedia("(dynamic-range: high)")?.matches,this._colorDepth=screen.colorDepth}catch(t){console.error(t)}try{this._pixelRatio=window.devicePixelRatio||1,this._height=screen.height,this._width=screen.width,this._height=screen.height,this._screenHeight=this._height*this._pixelRatio,this._screenWidth=this._width*this._pixelRatio}catch(t){console.error(t)}}};var Le=()=>window.ManagedMediaSource||window.MediaSource,br=()=>!!(window.ManagedMediaSource&&window.ManagedSourceBuffer?.prototype?.appendBuffer),Ws=()=>!!(window.MediaSource&&window.SourceBuffer?.prototype?.appendBuffer),qs=()=>window.ManagedMediaSource?new ManagedMediaSource:new MediaSource;var ju=document.createElement("video"),Wu='video/mp4; codecs="avc1.42000a,mp4a.40.2"',qu='video/mp4; codecs="hev1.1.6.L93.B0"',Gs='video/webm; codecs="vp09.00.10.08"',Ys='video/webm; codecs="av01.0.00M.08"',Gu='audio/mp4; codecs="mp4a.40.2"',Yu='audio/webm; codecs="opus"',zs,zu=async()=>{if(!window.navigator.mediaCapabilities)return;let n={type:"media-source",video:{contentType:"video/webm",width:1280,height:720,bitrate:1e6,framerate:30}},[e,t]=await Promise.all([window.navigator.mediaCapabilities.decodingInfo({...n,video:{...n.video,contentType:Ys}}),window.navigator.mediaCapabilities.decodingInfo({...n,video:{...n.video,contentType:Gs}})]);zs={DASH_WEBM_AV1:e,DASH_WEBM:t}};zu().catch(n=>{console.log(ju),console.error(n)});var gr=class{constructor(e,t){this._deviceChecker=e,this._browserChecker=t}get protocols(){return this._protocols}get containers(){return this._containers}get codecs(){return this._codecs}get webmDecodingInfo(){return zs}get supportedCodecs(){return Object.keys(this._codecs).filter(e=>this._codecs[e])}get nativeHlsSupported(){return this._nativeHlsSupported}detect(){this._video=document.createElement("video");try{this._protocols={mms:br(),mse:Ws(),hls:!!(this._video.canPlayType?.("application/x-mpegurl")||this._video.canPlayType?.("vnd.apple.mpegURL")),webrtc:!!window.RTCPeerConnection,ws:!!window.WebSocket},this._containers={mp4:!!this._video.canPlayType?.("video/mp4"),webm:!!this._video.canPlayType?.("video/webm"),cmaf:!0};let e=!!Le()?.isTypeSupported?.(Wu),t=!!Le()?.isTypeSupported?.(qu),i=!!Le()?.isTypeSupported?.(Gu);this._codecs={h264:e,h265:t,vp9:!!Le()?.isTypeSupported?.(Gs),av1:!!Le()?.isTypeSupported?.(Ys),aac:i,opus:!!Le()?.isTypeSupported?.(Yu),mpeg:(e||t)&&i},this._nativeHlsSupported=this._protocols.hls&&this._containers.mp4}catch(e){console.error(e)}this.destroyVideoElement()}destroyVideoElement(){if(!this._video)return;if(this._video.pause(),this._video.currentTime=0,this._video.removeAttribute("src"),this._video.src="",this._video.load(),this._video.remove){this._video.remove(),this._video=null;return}this._video.parentNode&&this._video.parentNode.removeChild(this._video);let e=this._video.cloneNode(!1);this._video.parentNode?.replaceChild(e,this._video),this._video=null}};var Ks="audio/mpeg",Sr=class{supportMp3(){return this._codecs.mp3&&this._containers.mpeg}detect(){this._audio=document.createElement("audio");try{this._containers={mpeg:!!this._audio.canPlayType?.(Ks)},this._codecs={mp3:!!Le()?.isTypeSupported?.(Ks)}}catch(e){console.error(e)}this.destroyAudioElement()}destroyAudioElement(){if(!this._audio)return;if(this._audio.pause(),this._audio.currentTime=0,this._audio.removeAttribute("src"),this._audio.src="",this._audio.load(),this._audio.remove){this._audio.remove(),this._audio=null;return}this._audio.parentNode&&this._audio.parentNode.removeChild(this._audio);let e=this._audio.cloneNode(!1);this._audio.parentNode?.replaceChild(e,this._audio),this._audio=null}};import{ValueSubject as Ku}from"@vkontakte/videoplayer-shared/evergreen";var va=class{constructor(){this.isInited$=new Ku(!1);this._displayChecker=new fr,this._deviceChecker=new mr(this._displayChecker),this._browserChecker=new hr,this._videoChecker=new gr(this._deviceChecker,this._browserChecker),this._audioChecker=new Sr,this.detect()}get display(){return this._displayChecker}get device(){return this._deviceChecker}get browser(){return this._browserChecker}get video(){return this._videoChecker}get audio(){return this._audioChecker}async detect(){this._displayChecker.detect(),this._deviceChecker.detect(),this._browserChecker.detect(),this._videoChecker.detect(),this._audioChecker.detect(),this.isInited$.next(!0)}},C=new va;var he=n=>{let e=y=>Pe(n,y).pipe(en(void 0)),i=Xs(...["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"].map(y=>Pe(n,y))).pipe(tt(y=>y.type==="ended"?n.readyState<2:n.readyState<3),Xu()),r=Xs(Pe(n,"progress"),Pe(n,"timeupdate")).pipe(tt(()=>js(n.buffered,n.currentTime))),a=C.browser.isSafari?Zu({play:e("play").pipe(el()),playing:e("playing")}).pipe(en(void 0)):e("playing"),s=Pe(n,"volumechange").pipe(tt(()=>({muted:n.muted,volume:n.volume}))),o=Pe(n,"ratechange").pipe(tt(()=>n.playbackRate)),u=Pe(n,"error").pipe(Zs(()=>!!(n.error||n.played.length)),tt(()=>{let y=n.error;return{id:y?`MediaError#${y.code}`:"HtmlVideoError",category:tl.VIDEO_PIPELINE,message:y?y.message:"Error event from HTML video element",thrown:n.error??void 0}})),l=Pe(n,"timeupdate").pipe(tt(()=>n.currentTime)),c=new Ju,d=.3,p;l.subscribe(y=>{n.loop&&Js(p)&&Js(y)&&p>=n.duration-d&&y<=d&&c.next(p),p=y});let h=e("pause").pipe(Zs(()=>!n.error&&p!==n.duration)),m=Pe(n,"enterpictureinpicture"),f=Pe(n,"leavepictureinpicture"),g=new tn(Qs(n));m.subscribe(()=>g.next(!0)),f.subscribe(()=>g.next(!1));let S=new tn(Sa(n));return Pe(n,"fullscreenchange").pipe(tt(()=>Sa(n))).subscribe(S),{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$:Pe(n,"durationchange").pipe(tt(()=>n.duration)),isBuffering$:i,currentBuffer$:r,volumeState$:s,playbackRateState$:o,inPiP$:g,inFullscreen$:S,enterPip$:m,leavePip$:f}};import{VideoQuality as it}from"@vkontakte/videoplayer-shared/evergreen";var rt=n=>{switch(n){case"mobile":return it.Q_144P;case"lowest":return it.Q_240P;case"low":return it.Q_360P;case"sd":case"medium":return it.Q_480P;case"hd":case"high":return it.Q_720P;case"fullhd":case"full":return it.Q_1080P;case"quadhd":case"quad":return it.Q_1440P;case"ultrahd":case"ultra":return it.Q_2160P}};import{isNonNullable as Se,isNullable as un,now as pn,isHigher as ln,isHigherOrEqual as Ea,isInvariantQuality as dn,isLowerOrEqual as xa,videoSizeToQuality as al,assertNotEmptyArray as hn,assertNonNullable as sl}from"@vkontakte/videoplayer-shared/evergreen";var ya=!1,je={},rn=n=>{ya=n},an=()=>{je={}},sn=n=>{n(je)},zt=(n,e)=>{ya&&(je.meta=je.meta??{},je.meta[n]=e)},se=class{constructor(e){this.name=e}next(e){if(!ya)return;je.series=je.series??{};let t=je.series[this.name]??[];t.push([Date.now(),e]),je.series[this.name]=t}};import{isHigher as il,isHigherOrEqual as Tm,isLower as nn,isLowerOrEqual as Im,isNonNullable as vr,isNullable as rl,videoHeightToQuality as yr}from"@vkontakte/videoplayer-shared/evergreen";function Ta({limits:n,highQualityLimit:e,trafficSavingLimit:t}){return!n.max&&n.min===e?"high_quality":!n.min&&n.max===t?"traffic_saving":"unknown"}function Ia({limits:n,highQualityLimit:e,trafficSavingLimit:t}){return!!n&&Ta({limits:n,highQualityLimit:e,trafficSavingLimit:t})==="high_quality"}function Kt({limits:n,highestAvailableQuality:e,lowestAvailableQuality:t}){return rl(n)||vr(n.min)&&vr(n.max)&&nn(n.max,n.min)||vr(n.min)&&e&&il(n.min,e)||vr(n.max)&&t&&nn(n.max,t)}function on({limits:n,highestAvailableHeight:e,lowestAvailableHeight:t}){return Kt({limits:{max:n?.max?yr(n.max):void 0,min:n?.min?yr(n.min):void 0},highestAvailableQuality:e?yr(e):void 0,lowestAvailableQuality:t?yr(t):void 0})}var nl=new se("best_bitrate"),mn=(n,e,t)=>(e-t)*Math.pow(2,-10*n)+t;var ka=n=>(e,t)=>n*(Number(e.bitrate)-Number(t.bitrate)),Xt=class{constructor(){this.history={}}recordSelection(e){this.history[e.id]=pn()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}},fn='Assertion "ABR Tracks is empty array" failed',Tr=(n,e,t,i)=>{let r=[...e].sort(ka(1)),a=[...t].sort(ka(1)),s=a.filter(u=>Se(u.bitrate)&&Se(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)},cn=n=>"quality"in n,bn=(n,e,t,i)=>{let r=Se(i?.last?.bitrate)&&Se(t?.bitrate)&&i.last.bitrate<t.bitrate?n.trackCooldownIncreaseQuality:n.trackCooldownDecreaseQuality,a=t&&i&&i.history[t.id]&&pn()-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=cn(s)?"video":"audio",u=cn(s)?s.quality:s.bitrate;return e({message:`
7
7
  [last ${o} selected] ${u}
8
8
  `}),s}return i?.recordSwitch(t),t},ol=(n,e)=>Math.log(e)/Math.log(n),ul=({tuning:n,container:e,limits:t})=>{let i=n.containerSizeFactor;if(n.usePixelRatio&&C.display.pixelRatio){let r=C.display.pixelRatio;if(n.pixelRatioMultiplier)i*=n.pixelRatioMultiplier*(r-1)+1;else{let a=n.pixelRatioLogBase,[s=0,o=0,u=0]=n.pixelRatioLogCoefficients,l=ol(a,s*r+o)+u;Number.isFinite(l)&&(i*=l)}}return Ia({highQualityLimit:n.highQualityLimit,trafficSavingLimit:n.trafficSavingLimit,limits:t})&&(i*=2),{containerSizeLimit:n.limitByContainer&&e&&e.width>0&&e.height>0?{width:e.width*i,height:e.height*i}:void 0,containerSizeFactor:i}},at=(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})=>{hn(n,fn);let{containerSizeFactor:f,containerSizeLimit:g}=ul({container:e,tuning:i,limits:r}),S=i.considerPlaybackRate&&Se(o)?o:1,B=n.filter(b=>!dn(b.quality)).sort((b,E)=>ln(b.quality,E.quality)?-1:1),y=B.at(-1)?.quality,A=B.at(0)?.quality,I=Kt({limits:r,lowestAvailableQuality:y,highestAvailableQuality:A}),R=S*mn(s??.5,i.bitrateFactorAtEmptyBuffer,i.bitrateFactorAtFullBuffer),P={},M=B.filter(b=>{let E=!0;if(g)if(b.size)E=b.size.width<=g.width&&b.size.height<=g.height;else{let ee=g&&al(g);E=ee?xa(b.quality,ee):!0}if(!E)return P[b.quality]="FitsContainer",!1;let Q=h||t,ue=Se(Q)&&isFinite(Q)&&Se(b.bitrate)?Q-a>=b.bitrate*R:!0,ye=Ia({highQualityLimit:i.highQualityLimit,trafficSavingLimit:i.trafficSavingLimit,limits:r})&&r?.min===b.quality;if(!ue&&!ye)return P[b.quality]="FitsThroughput",!1;if(i.lazyQualitySwitch&&Se(i.minBufferToSwitchUp)&&u&&!dn(u.quality)&&(s??0)<i.minBufferToSwitchUp&&ln(b.quality,u.quality))return P[b.quality]="Buffer",!1;if(!!d&&Ea(b.quality,d)&&!ye)return P[b.quality]="DroppedFramesLimit",!1;if(!!p&&Ea(b.quality,p)&&!ye)return P[b.quality]="StallsLimit",!1;let G=I||(un(r?.max)||xa(b.quality,r.max))&&(un(r?.min)||Ea(b.quality,r.min)),z=Se(c)&&!c?xa(b.quality,i.backgroundVideoQualityLimit):!0;return!G||!z?(P[b.quality]="FitsQualityLimits",!1):!0})[0];M&&M.bitrate&&nl.next(M.bitrate);let x=M??B.at(-1)??n[0];return x.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.129-dev.8b747eca.0",
3
+ "version": "2.0.129-dev.93c0f27a.0",
4
4
  "author": "vk.com",
5
5
  "description": "Videoplayer core library based on the vk.com platform",
6
6
  "homepage": "https://vk.com",
@@ -25,11 +25,6 @@
25
25
  "require": "./esnext.cjs.js",
26
26
  "types": "./types/index.d.ts"
27
27
  },
28
- "./es2024": {
29
- "import": "./es2024.esm.js",
30
- "require": "./es2024.cjs.js",
31
- "types": "./types/index.d.ts"
32
- },
33
28
  "./es2018": {
34
29
  "import": "./es2018.esm.js",
35
30
  "require": "./es2018.cjs.js",
@@ -54,7 +49,7 @@
54
49
  "**/*.d.ts"
55
50
  ],
56
51
  "dependencies": {
57
- "@vkontakte/videoplayer-shared": "1.0.57-dev.3b7aa4eb.0",
52
+ "@vkontakte/videoplayer-shared": "1.0.56",
58
53
  "hls.js": "~1.4.7"
59
54
  }
60
55
  }