From 77428e49d5488e88d0637dd2ee782c561bea7f6f Mon Sep 17 00:00:00 2001 From: Igor Zhukov Date: Thu, 31 Aug 2017 00:39:39 +0200 Subject: [PATCH] Update 2017-08-30T22:39:35.030Z --- js/app.js | 35 ++++++++++++++++++----------------- webogram.appcache | 36 ++++++++++++++++++------------------ 2 files changed, 36 insertions(+), 35 deletions(-) diff --git a/js/app.js b/js/app.js index d2756a8f..1a228332 100644 --- a/js/app.js +++ b/js/app.js @@ -56,23 +56,24 @@ O=r[y+(P<<2)>>2]|0;N=r[b+(P<<2)>>2]|0;if(C){L=0;do{H=F+(L+T<<2)|0;B=+c[H>>2];j=B b=l<>>16&2;s=14-(p|u|l)+(b<>>15)|0;P=y>>>(s+7|0)&1|s<<1}else P=0;s=r[58292+(P<<2)>>2]|0;e:do if(!s){D=_;R=0;O=0;N=81}else{l=_;b=0;u=y<<((P|0)==31?0:25-(P>>>1)|0);p=s;v=0;while(1){c=(r[p+4>>2]&-8)-y|0;if(c>>>0>>0)if(!c){L=0;F=p;U=p;N=85;break e}else{B=c;H=p}else{B=l;H=v}c=r[p+20>>2]|0;p=r[p+16+(u>>>31<<2)>>2]|0;f=(c|0)==0|(c|0)==(p|0)?b:c;c=(p|0)==0;if(c){D=B;R=f;O=H;N=81;break}else{l=B;b=f;u=u<<((c^1)&1);v=H}}}while(0);if((N|0)==81){if((R|0)==0&(O|0)==0){s=2<>>12&16;i=s>>>_;s=i>>>5&8;a=i>>>s;i=a>>>2&4;o=a>>>i;a=o>>>1&2;d=o>>>a;o=d>>>1&1;j=r[58292+((s|_|i|a|o)+(d>>>o)<<2)>>2]|0;V=0}else{j=R;V=O}if(!j){q=D;z=V}else{L=D;F=j;U=V;N=85}}if((N|0)==85)while(1){N=0;o=(r[F+4>>2]&-8)-y|0;d=o>>>0>>0;a=d?o:L;o=d?F:U;F=r[F+16+(((r[F+16>>2]|0)==0&1)<<2)>>2]|0;if(!F){q=a;z=o;break}else{L=a;U=o;N=85}}if((z|0)!=0?q>>>0<((r[14499]|0)-y|0)>>>0:0){o=r[14501]|0;if(z>>>0>>0)pe();a=z+y|0;if(z>>>0>=a>>>0)pe();d=r[z+24>>2]|0;i=r[z+12>>2]|0;do if((i|0)==(z|0)){_=z+20|0;s=r[_>>2]|0;if(!s){v=z+16|0;u=r[v>>2]|0;if(!u){W=0;break}else{G=u;K=v}}else{G=s;K=_}while(1){_=G+20|0;s=r[_>>2]|0;if(s|0){G=s;K=_;continue}_=G+16|0;s=r[_>>2]|0;if(!s)break;else{G=s;K=_}}if(K>>>0>>0)pe();else{r[K>>2]=0;W=G;break}}else{_=r[z+8>>2]|0;if(_>>>0>>0)pe();s=_+12|0;if((r[s>>2]|0)!=(z|0))pe();v=i+8|0;if((r[v>>2]|0)==(z|0)){r[s>>2]=i;r[v>>2]=_;W=i;break}else pe()}while(0);e:do if(d){i=r[z+28>>2]|0;o=58292+(i<<2)|0;do if((z|0)==(r[o>>2]|0)){r[o>>2]=W;if(!W){_=h&~(1<>>0>=(r[14501]|0)>>>0){r[d+16+(((r[d+16>>2]|0)!=(z|0)&1)<<2)>>2]=W;if(!W){Y=h;break e}else break}else pe();while(0);i=r[14501]|0;if(W>>>0>>0)pe();r[W+24>>2]=d;o=r[z+16>>2]|0;do if(o|0)if(o>>>0>>0)pe();else{r[W+16>>2]=o;r[o+24>>2]=W;break}while(0);o=r[z+20>>2]|0;if(o)if(o>>>0<(r[14501]|0)>>>0)pe();else{r[W+20>>2]=o;r[o+24>>2]=W;Y=h;break}else Y=h}else Y=h;while(0);do if(q>>>0>=16){r[z+4>>2]=y|3;r[a+4>>2]=q|1;r[a+q>>2]=q;h=q>>>3;if(q>>>0<256){d=58028+(h<<1<<2)|0;o=r[14497]|0;i=1<>2]|0;if(_>>>0<(r[14501]|0)>>>0)pe();else{X=h;J=_}}else{r[14497]=o|i;X=d+8|0;J=d}r[X>>2]=a;r[J+12>>2]=a;r[a+8>>2]=J;r[a+12>>2]=d;break}d=q>>>8;if(d)if(q>>>0>16777215)Z=31;else{i=(d+1048320|0)>>>16&8;o=d<>>16&4;_=o<>>16&2;h=14-(d|i|o)+(_<>>15)|0;Z=q>>>(h+7|0)&1|h<<1}else Z=0;h=58292+(Z<<2)|0;r[a+28>>2]=Z;o=a+16|0;r[o+4>>2]=0;r[o>>2]=0;o=1<>2]=a;r[a+24>>2]=h;r[a+12>>2]=a;r[a+8>>2]=a;break}o=q<<((Z|0)==31?0:25-(Z>>>1)|0);_=r[h>>2]|0;while(1){if((r[_+4>>2]&-8|0)==(q|0)){N=139;break}Q=_+16+(o>>>31<<2)|0;h=r[Q>>2]|0;if(!h){N=136;break}else{o=o<<1;_=h}}if((N|0)==136)if(Q>>>0<(r[14501]|0)>>>0)pe();else{r[Q>>2]=a;r[a+24>>2]=_;r[a+12>>2]=a;r[a+8>>2]=a;break}else if((N|0)==139){o=_+8|0;h=r[o>>2]|0;i=r[14501]|0;if(h>>>0>=i>>>0&_>>>0>=i>>>0){r[h+12>>2]=a;r[o>>2]=a;r[a+8>>2]=h;r[a+12>>2]=_;r[a+24>>2]=0;break}else pe()}}else{h=q+y|0;r[z+4>>2]=h|3;o=z+h+4|0;r[o>>2]=r[o>>2]|1}while(0);g=z+8|0;m=t;return g|0}else x=y}else x=y}else x=-1;while(0);z=r[14499]|0;if(z>>>0>=x>>>0){q=z-x|0;Q=r[14502]|0;if(q>>>0>15){Z=Q+x|0;r[14502]=Z;r[14499]=q;r[Z+4>>2]=q|1;r[Z+q>>2]=q;r[Q+4>>2]=x|3}else{r[14499]=0;r[14502]=0;r[Q+4>>2]=z|3;q=Q+z+4|0;r[q>>2]=r[q>>2]|1}g=Q+8|0;m=t;return g|0}Q=r[14500]|0;if(Q>>>0>x>>>0){q=Q-x|0;r[14500]=q;z=r[14503]|0;Z=z+x|0;r[14503]=Z;r[Z+4>>2]=q|1;r[z+4>>2]=x|3;g=z+8|0;m=t;return g|0}if(!(r[14615]|0)){r[14617]=4096;r[14616]=4096;r[14618]=-1;r[14619]=-1;r[14620]=0;r[14608]=0;z=n&-16^1431655768;r[n>>2]=z;r[14615]=z;ee=4096}else ee=r[14617]|0;z=x+48|0;n=x+47|0;q=ee+n|0;Z=0-ee|0;ee=q&Z;if(ee>>>0<=x>>>0){g=0;m=t;return g|0}Y=r[14607]|0;if(Y|0?(J=r[14605]|0,X=J+ee|0,X>>>0<=J>>>0|X>>>0>Y>>>0):0){g=0;m=t;return g|0}e:do if(!(r[14608]&4)){Y=r[14503]|0;t:do if(Y){X=58436;while(1){J=r[X>>2]|0;if(J>>>0<=Y>>>0?(te=X+4|0,(J+(r[te>>2]|0)|0)>>>0>Y>>>0):0)break;J=r[X+8>>2]|0;if(!J){N=163;break t}else X=J}_=q-Q&Z;if(_>>>0<2147483647){J=si(_|0)|0;if((J|0)==((r[X>>2]|0)+(r[te>>2]|0)|0))if((J|0)==(-1|0))ne=_;else{ie=J;ae=_;N=180;break e}else{re=J;oe=_;N=171}}else ne=0}else N=163;while(0);do if((N|0)==163){Y=si(0)|0;if((Y|0)!=(-1|0)?(y=Y,_=r[14616]|0,J=_+-1|0,W=((J&y|0)==0?0:(J+y&0-_)-y|0)+ee|0,y=r[14605]|0,_=W+y|0,W>>>0>x>>>0&W>>>0<2147483647):0){J=r[14607]|0;if(J|0?_>>>0<=y>>>0|_>>>0>J>>>0:0){ne=0;break}J=si(W|0)|0;if((J|0)==(Y|0)){ie=Y;ae=W;N=180;break e}else{re=J;oe=W;N=171}}else ne=0}while(0);do if((N|0)==171){W=0-oe|0;if(!(z>>>0>oe>>>0&(oe>>>0<2147483647&(re|0)!=(-1|0))))if((re|0)==(-1|0)){ne=0;break}else{ie=re;ae=oe;N=180;break e}J=r[14617]|0;Y=n-oe+J&0-J;if(Y>>>0>=2147483647){ie=re;ae=oe;N=180;break e}if((si(Y|0)|0)==(-1|0)){si(W|0)|0;ne=0;break}else{ie=re;ae=Y+oe|0;N=180;break e}}while(0);r[14608]=r[14608]|4;se=ne;N=178}else{se=0;N=178}while(0);if(((N|0)==178?ee>>>0<2147483647:0)?(ne=si(ee|0)|0,ee=si(0)|0,oe=ee-ne|0,re=oe>>>0>(x+40|0)>>>0,!((ne|0)==(-1|0)|re^1|ne>>>0>>0&((ne|0)!=(-1|0)&(ee|0)!=(-1|0))^1)):0){ie=ne;ae=re?oe:se;N=180}if((N|0)==180){se=(r[14605]|0)+ae|0;r[14605]=se;if(se>>>0>(r[14606]|0)>>>0)r[14606]=se;se=r[14503]|0;do if(se){oe=58436;while(1){le=r[oe>>2]|0;ce=oe+4|0;de=r[ce>>2]|0;if((ie|0)==(le+de|0)){N=190;break}re=r[oe+8>>2]|0;if(!re)break;else oe=re}if(((N|0)==190?(r[oe+12>>2]&8|0)==0:0)?se>>>0>>0&se>>>0>=le>>>0:0){r[ce>>2]=de+ae;re=se+8|0;ne=(re&7|0)==0?0:0-re&7;re=se+ne|0;ee=(r[14500]|0)+(ae-ne)|0;r[14503]=re;r[14500]=ee;r[re+4>>2]=ee|1;r[re+ee+4>>2]=40;r[14504]=r[14619];break}ee=r[14501]|0;if(ie>>>0>>0){r[14501]=ie;ue=ie}else ue=ee;ee=ie+ae|0;re=58436;while(1){if((r[re>>2]|0)==(ee|0)){N=198;break}ne=r[re+8>>2]|0;if(!ne)break;else re=ne}if((N|0)==198?(r[re+12>>2]&8|0)==0:0){r[re>>2]=ie;oe=re+4|0;r[oe>>2]=(r[oe>>2]|0)+ae;oe=ie+8|0;ne=ie+((oe&7|0)==0?0:0-oe&7)|0;oe=ee+8|0;n=ee+((oe&7|0)==0?0:0-oe&7)|0;oe=ne+x|0;z=n-ne-x|0;r[ne+4>>2]=x|3;do if((n|0)!=(se|0)){if((n|0)==(r[14502]|0)){te=(r[14499]|0)+z|0;r[14499]=te;r[14502]=oe;r[oe+4>>2]=te|1;r[oe+te>>2]=te;break}te=r[n+4>>2]|0;if((te&3|0)==1){Z=te&-8;Q=te>>>3;e:do if(te>>>0>=256){q=r[n+24>>2]|0;Y=r[n+12>>2]|0;do if((Y|0)==(n|0)){W=n+16|0;J=W+4|0;_=r[J>>2]|0;if(!_){y=r[W>>2]|0;if(!y){fe=0;break}else{me=y;he=W}}else{me=_;he=J}while(1){J=me+20|0;_=r[J>>2]|0;if(_|0){me=_;he=J;continue}J=me+16|0;_=r[J>>2]|0;if(!_)break;else{me=_;he=J}}if(he>>>0>>0)pe();else{r[he>>2]=0;fe=me;break}}else{J=r[n+8>>2]|0;if(J>>>0>>0)pe();_=J+12|0;if((r[_>>2]|0)!=(n|0))pe();W=Y+8|0;if((r[W>>2]|0)==(n|0)){r[_>>2]=Y;r[W>>2]=J;fe=Y;break}else pe()}while(0);if(!q)break;Y=r[n+28>>2]|0;J=58292+(Y<<2)|0;do if((n|0)!=(r[J>>2]|0))if(q>>>0>=(r[14501]|0)>>>0){r[q+16+(((r[q+16>>2]|0)!=(n|0)&1)<<2)>>2]=fe;if(!fe)break e;else break}else pe();else{r[J>>2]=fe;if(fe|0)break;r[14498]=r[14498]&~(1<>>0>>0)pe();r[fe+24>>2]=q;J=n+16|0;W=r[J>>2]|0;do if(W|0)if(W>>>0>>0)pe();else{r[fe+16>>2]=W;r[W+24>>2]=fe;break}while(0);W=r[J+4>>2]|0;if(!W)break;if(W>>>0<(r[14501]|0)>>>0)pe();else{r[fe+20>>2]=W;r[W+24>>2]=fe;break}}else{W=r[n+8>>2]|0;Y=r[n+12>>2]|0;q=58028+(Q<<1<<2)|0;do if((W|0)!=(q|0)){if(W>>>0>>0)pe();if((r[W+12>>2]|0)==(n|0))break;pe()}while(0);if((Y|0)==(W|0)){r[14497]=r[14497]&~(1<>>0>>0)pe();J=Y+8|0;if((r[J>>2]|0)==(n|0)){ge=J;break}pe()}while(0);r[W+12>>2]=Y;r[ge>>2]=W}while(0);_e=n+Z|0;ve=Z+z|0}else{_e=n;ve=z}Q=_e+4|0;r[Q>>2]=r[Q>>2]&-2;r[oe+4>>2]=ve|1;r[oe+ve>>2]=ve;Q=ve>>>3;if(ve>>>0<256){te=58028+(Q<<1<<2)|0;X=r[14497]|0;q=1<>2]|0;if(J>>>0>=(r[14501]|0)>>>0){ye=Q;be=J;break}pe()}while(0);r[ye>>2]=oe;r[be+12>>2]=oe;r[oe+8>>2]=be;r[oe+12>>2]=te;break}q=ve>>>8;do if(!q)we=0;else{if(ve>>>0>16777215){we=31;break}X=(q+1048320|0)>>>16&8;Z=q<>>16&4;Q=Z<>>16&2;_=14-(J|X|Z)+(Q<>>15)|0;we=ve>>>(_+7|0)&1|_<<1}while(0);q=58292+(we<<2)|0;r[oe+28>>2]=we;te=oe+16|0;r[te+4>>2]=0;r[te>>2]=0;te=r[14498]|0;_=1<>2]=oe;r[oe+24>>2]=q;r[oe+12>>2]=oe;r[oe+8>>2]=oe;break}_=ve<<((we|0)==31?0:25-(we>>>1)|0);te=r[q>>2]|0;while(1){if((r[te+4>>2]&-8|0)==(ve|0)){N=265;break}ke=te+16+(_>>>31<<2)|0;q=r[ke>>2]|0;if(!q){N=262;break}else{_=_<<1;te=q}}if((N|0)==262)if(ke>>>0<(r[14501]|0)>>>0)pe();else{r[ke>>2]=oe;r[oe+24>>2]=te;r[oe+12>>2]=oe;r[oe+8>>2]=oe;break}else if((N|0)==265){_=te+8|0;q=r[_>>2]|0;Z=r[14501]|0;if(q>>>0>=Z>>>0&te>>>0>=Z>>>0){r[q+12>>2]=oe;r[_>>2]=oe;r[oe+8>>2]=q;r[oe+12>>2]=te;r[oe+24>>2]=0;break}else pe()}}else{q=(r[14500]|0)+z|0;r[14500]=q;r[14503]=oe;r[oe+4>>2]=q|1}while(0);g=ne+8|0;m=t;return g|0}oe=58436;while(1){z=r[oe>>2]|0;if(z>>>0<=se>>>0?(Me=z+(r[oe+4>>2]|0)|0,Me>>>0>se>>>0):0)break;oe=r[oe+8>>2]|0}oe=Me+-47|0;ne=oe+8|0;z=oe+((ne&7|0)==0?0:0-ne&7)|0;ne=se+16|0;oe=z>>>0>>0?se:z;z=oe+8|0;n=ie+8|0;ee=(n&7|0)==0?0:0-n&7;n=ie+ee|0;re=ae+-40-ee|0;r[14503]=n;r[14500]=re;r[n+4>>2]=re|1;r[n+re+4>>2]=40;r[14504]=r[14619];re=oe+4|0;r[re>>2]=27;r[z>>2]=r[14609];r[z+4>>2]=r[14610];r[z+8>>2]=r[14611];r[z+12>>2]=r[14612];r[14609]=ie;r[14610]=ae;r[14612]=0;r[14611]=z;z=oe+24|0;do{n=z;z=z+4|0;r[z>>2]=7}while((n+8|0)>>>0>>0);if((oe|0)!=(se|0)){z=oe-se|0;r[re>>2]=r[re>>2]&-2;r[se+4>>2]=z|1;r[oe>>2]=z;n=z>>>3;if(z>>>0<256){ee=58028+(n<<1<<2)|0;q=r[14497]|0;_=1<>2]|0;if(Z>>>0<(r[14501]|0)>>>0)pe();else{Se=n;Ae=Z}}else{r[14497]=q|_;Se=ee+8|0;Ae=ee}r[Se>>2]=se;r[Ae+12>>2]=se;r[se+8>>2]=Ae;r[se+12>>2]=ee;break}ee=z>>>8;if(ee)if(z>>>0>16777215)Te=31;else{_=(ee+1048320|0)>>>16&8;q=ee<<_;ee=(q+520192|0)>>>16&4;Z=q<>>16&2;n=14-(ee|_|q)+(Z<>>15)|0;Te=z>>>(n+7|0)&1|n<<1}else Te=0;n=58292+(Te<<2)|0;r[se+28>>2]=Te;r[se+20>>2]=0;r[ne>>2]=0;q=r[14498]|0;Z=1<>2]=se;r[se+24>>2]=n;r[se+12>>2]=se;r[se+8>>2]=se;break}Z=z<<((Te|0)==31?0:25-(Te>>>1)|0);q=r[n>>2]|0;while(1){if((r[q+4>>2]&-8|0)==(z|0)){N=292;break}Ce=q+16+(Z>>>31<<2)|0;n=r[Ce>>2]|0;if(!n){N=289;break}else{Z=Z<<1;q=n}}if((N|0)==289)if(Ce>>>0<(r[14501]|0)>>>0)pe();else{r[Ce>>2]=se;r[se+24>>2]=q;r[se+12>>2]=se;r[se+8>>2]=se;break}else if((N|0)==292){Z=q+8|0;z=r[Z>>2]|0;ne=r[14501]|0;if(z>>>0>=ne>>>0&q>>>0>=ne>>>0){r[z+12>>2]=se;r[Z>>2]=se;r[se+8>>2]=z;r[se+12>>2]=q;r[se+24>>2]=0;break}else pe()}}}else{z=r[14501]|0;if((z|0)==0|ie>>>0>>0)r[14501]=ie;r[14609]=ie;r[14610]=ae;r[14612]=0;r[14506]=r[14615];r[14505]=-1;z=0;do{Z=58028+(z<<1<<2)|0;r[Z+12>>2]=Z;r[Z+8>>2]=Z;z=z+1|0}while((z|0)!=32);z=ie+8|0;q=(z&7|0)==0?0:0-z&7;z=ie+q|0;Z=ae+-40-q|0;r[14503]=z;r[14500]=Z;r[z+4>>2]=Z|1;r[z+Z+4>>2]=40;r[14504]=r[14619]}while(0);ae=r[14500]|0;if(ae>>>0>x>>>0){ie=ae-x|0;r[14500]=ie;ae=r[14503]|0;se=ae+x|0;r[14503]=se;r[se+4>>2]=ie|1;r[ae+4>>2]=x|3;g=ae+8|0;m=t;return g|0}}r[(Dn()|0)>>2]=12;g=0;m=t;return g|0}function Xn(e){e=e|0;var t=0,n=0,i=0,a=0,o=0,s=0,l=0,c=0,d=0,u=0,p=0,f=0,m=0,h=0,g=0,_=0,v=0,y=0,b=0,w=0,k=0,M=0,S=0,A=0,T=0,C=0,E=0,$=0,I=0,x=0,P=0;if(!e)return;t=e+-8|0;n=r[14501]|0;if(t>>>0>>0)pe();i=r[e+-4>>2]|0;e=i&3;if((e|0)==1)pe();a=i&-8;o=t+a|0;e:do if(!(i&1)){s=r[t>>2]|0;if(!e)return;l=t+(0-s)|0;c=s+a|0;if(l>>>0>>0)pe();if((l|0)==(r[14502]|0)){d=o+4|0;u=r[d>>2]|0;if((u&3|0)!=3){p=l;f=l;m=c;break}r[14499]=c;r[d>>2]=u&-2;r[l+4>>2]=c|1;r[l+c>>2]=c;return}u=s>>>3;if(s>>>0<256){s=r[l+8>>2]|0;d=r[l+12>>2]|0;h=58028+(u<<1<<2)|0;if((s|0)!=(h|0)){if(s>>>0>>0)pe();if((r[s+12>>2]|0)!=(l|0))pe()}if((d|0)==(s|0)){r[14497]=r[14497]&~(1<>>0>>0)pe();h=d+8|0;if((r[h>>2]|0)==(l|0))g=h;else pe()}else g=d+8|0;r[s+12>>2]=d;r[g>>2]=s;p=l;f=l;m=c;break}s=r[l+24>>2]|0;d=r[l+12>>2]|0;do if((d|0)==(l|0)){h=l+16|0;u=h+4|0;_=r[u>>2]|0;if(!_){v=r[h>>2]|0;if(!v){y=0;break}else{b=v;w=h}}else{b=_;w=u}while(1){u=b+20|0;_=r[u>>2]|0;if(_|0){b=_;w=u;continue}u=b+16|0;_=r[u>>2]|0;if(!_)break;else{b=_;w=u}}if(w>>>0>>0)pe();else{r[w>>2]=0;y=b;break}}else{u=r[l+8>>2]|0;if(u>>>0>>0)pe();_=u+12|0;if((r[_>>2]|0)!=(l|0))pe();h=d+8|0;if((r[h>>2]|0)==(l|0)){r[_>>2]=d;r[h>>2]=u;y=d;break}else pe()}while(0);if(s){d=r[l+28>>2]|0;u=58292+(d<<2)|0;do if((l|0)==(r[u>>2]|0)){r[u>>2]=y;if(!y){r[14498]=r[14498]&~(1<>>0>=(r[14501]|0)>>>0){r[s+16+(((r[s+16>>2]|0)!=(l|0)&1)<<2)>>2]=y;if(!y){p=l;f=l;m=c;break e}else break}else pe();while(0);d=r[14501]|0;if(y>>>0>>0)pe();r[y+24>>2]=s;u=l+16|0;h=r[u>>2]|0;do if(h|0)if(h>>>0>>0)pe();else{r[y+16>>2]=h;r[h+24>>2]=y;break}while(0);h=r[u+4>>2]|0;if(h)if(h>>>0<(r[14501]|0)>>>0)pe();else{r[y+20>>2]=h;r[h+24>>2]=y;p=l;f=l;m=c;break}else{p=l;f=l;m=c}}else{p=l;f=l;m=c}}else{p=t;f=t;m=a}while(0);if(p>>>0>=o>>>0)pe();a=o+4|0;t=r[a>>2]|0;if(!(t&1))pe();if(!(t&2)){y=r[14502]|0;if((o|0)==(r[14503]|0)){n=(r[14500]|0)+m|0;r[14500]=n;r[14503]=f;r[f+4>>2]=n|1;if((f|0)!=(y|0))return;r[14502]=0;r[14499]=0;return}if((o|0)==(y|0)){y=(r[14499]|0)+m|0;r[14499]=y;r[14502]=p;r[f+4>>2]=y|1;r[p+y>>2]=y;return}y=(t&-8)+m|0;n=t>>>3;e:do if(t>>>0>=256){b=r[o+24>>2]|0;w=r[o+12>>2]|0;do if((w|0)==(o|0)){g=o+16|0;e=g+4|0;i=r[e>>2]|0;if(!i){h=r[g>>2]|0;if(!h){k=0;break}else{M=h;S=g}}else{M=i;S=e}while(1){e=M+20|0;i=r[e>>2]|0;if(i|0){M=i;S=e;continue}e=M+16|0;i=r[e>>2]|0;if(!i)break;else{M=i;S=e}}if(S>>>0<(r[14501]|0)>>>0)pe();else{r[S>>2]=0;k=M;break}}else{e=r[o+8>>2]|0;if(e>>>0<(r[14501]|0)>>>0)pe();i=e+12|0;if((r[i>>2]|0)!=(o|0))pe();g=w+8|0;if((r[g>>2]|0)==(o|0)){r[i>>2]=w;r[g>>2]=e;k=w;break}else pe()}while(0);if(b|0){w=r[o+28>>2]|0;c=58292+(w<<2)|0;do if((o|0)==(r[c>>2]|0)){r[c>>2]=k;if(!k){r[14498]=r[14498]&~(1<>>0>=(r[14501]|0)>>>0){r[b+16+(((r[b+16>>2]|0)!=(o|0)&1)<<2)>>2]=k;if(!k)break e;else break}else pe();while(0);w=r[14501]|0;if(k>>>0>>0)pe();r[k+24>>2]=b;c=o+16|0;l=r[c>>2]|0;do if(l|0)if(l>>>0>>0)pe();else{r[k+16>>2]=l;r[l+24>>2]=k;break}while(0);l=r[c+4>>2]|0;if(l|0)if(l>>>0<(r[14501]|0)>>>0)pe();else{r[k+20>>2]=l;r[l+24>>2]=k;break}}}else{l=r[o+8>>2]|0;w=r[o+12>>2]|0;b=58028+(n<<1<<2)|0;if((l|0)!=(b|0)){if(l>>>0<(r[14501]|0)>>>0)pe();if((r[l+12>>2]|0)!=(o|0))pe()}if((w|0)==(l|0)){r[14497]=r[14497]&~(1<>>0<(r[14501]|0)>>>0)pe();b=w+8|0;if((r[b>>2]|0)==(o|0))A=b;else pe()}else A=w+8|0;r[l+12>>2]=w;r[A>>2]=l}while(0);r[f+4>>2]=y|1;r[p+y>>2]=y;if((f|0)==(r[14502]|0)){r[14499]=y;return}else T=y}else{r[a>>2]=t&-2;r[f+4>>2]=m|1;r[p+m>>2]=m;T=m}m=T>>>3;if(T>>>0<256){p=58028+(m<<1<<2)|0;t=r[14497]|0;a=1<>2]|0;if(y>>>0<(r[14501]|0)>>>0)pe();else{C=m;E=y}}else{r[14497]=t|a;C=p+8|0;E=p}r[C>>2]=f;r[E+12>>2]=f;r[f+8>>2]=E;r[f+12>>2]=p;return}p=T>>>8;if(p)if(T>>>0>16777215)$=31;else{E=(p+1048320|0)>>>16&8;C=p<>>16&4;a=C<>>16&2;t=14-(p|E|C)+(a<>>15)|0;$=T>>>(t+7|0)&1|t<<1}else $=0;t=58292+($<<2)|0;r[f+28>>2]=$;r[f+20>>2]=0;r[f+16>>2]=0;C=r[14498]|0;a=1<<$;do if(C&a){E=T<<(($|0)==31?0:25-($>>>1)|0);p=r[t>>2]|0;while(1){if((r[p+4>>2]&-8|0)==(T|0)){I=124;break}x=p+16+(E>>>31<<2)|0;y=r[x>>2]|0;if(!y){I=121;break}else{E=E<<1;p=y}}if((I|0)==121)if(x>>>0<(r[14501]|0)>>>0)pe();else{r[x>>2]=f;r[f+24>>2]=p;r[f+12>>2]=f;r[f+8>>2]=f;break}else if((I|0)==124){E=p+8|0;c=r[E>>2]|0;y=r[14501]|0;if(c>>>0>=y>>>0&p>>>0>=y>>>0){r[c+12>>2]=f;r[E>>2]=f;r[f+8>>2]=c;r[f+12>>2]=p;r[f+24>>2]=0;break}else pe()}}else{r[14498]=C|a;r[t>>2]=f;r[f+24>>2]=t;r[f+12>>2]=f;r[f+8>>2]=f}while(0);f=(r[14505]|0)+-1|0;r[14505]=f;if(!f)P=58444;else return;while(1){f=r[P>>2]|0;if(!f)break;else P=f+8|0}r[14505]=-1;return}function Jn(e,t){e=e|0;t=t|0;var n=0,i=0;if(e){n=W(t,e)|0;if((t|e)>>>0>65535)i=((n>>>0)/(e>>>0)|0|0)==(t|0)?n:-1;else i=n}else i=0;n=Yn(i)|0;if(!n)return n|0;if(!(r[n+-4>>2]&3))return n|0;ai(n|0,0,i|0)|0;return n|0}function Zn(e,t){e=e|0;t=t|0;var n=0,i=0,a=0,o=0;if(!e){n=Yn(t)|0;return n|0}if(t>>>0>4294967231){r[(Dn()|0)>>2]=12;n=0;return n|0}i=Qn(e+-8|0,t>>>0<11?16:t+11&-8)|0;if(i|0){n=i+8|0;return n|0}i=Yn(t)|0;if(!i){n=0;return n|0}a=r[e+-4>>2]|0;o=(a&-8)-((a&3|0)==0?8:4)|0;li(i|0,e|0,(o>>>0>>0?o:t)|0)|0;Xn(e);n=i;return n|0}function Qn(e,t){e=e|0;t=t|0;var n=0,i=0,a=0,o=0,s=0,l=0,c=0,d=0,u=0,p=0,f=0,m=0,h=0,g=0,_=0,v=0,y=0,b=0,w=0;n=e+4|0;i=r[n>>2]|0;a=i&-8;o=e+a|0;s=r[14501]|0;l=i&3;if(!((l|0)!=1&e>>>0>=s>>>0&e>>>0>>0))pe();c=r[o+4>>2]|0;if(!(c&1))pe();if(!l){if(t>>>0<256){d=0;return d|0}if(a>>>0>=(t+4|0)>>>0?(a-t|0)>>>0<=r[14617]<<1>>>0:0){d=e;return d|0}d=0;return d|0}if(a>>>0>=t>>>0){l=a-t|0;if(l>>>0<=15){d=e;return d|0}u=e+t|0;r[n>>2]=i&1|t|2;r[u+4>>2]=l|3;p=u+l+4|0;r[p>>2]=r[p>>2]|1;ei(u,l);d=e;return d|0}if((o|0)==(r[14503]|0)){l=(r[14500]|0)+a|0;u=l-t|0;p=e+t|0;if(l>>>0<=t>>>0){d=0;return d|0}r[n>>2]=i&1|t|2;r[p+4>>2]=u|1;r[14503]=p;r[14500]=u;d=e;return d|0}if((o|0)==(r[14502]|0)){u=(r[14499]|0)+a|0;if(u>>>0>>0){d=0;return d|0}p=u-t|0;l=i&1;if(p>>>0>15){f=e+t|0;m=f+p|0;r[n>>2]=l|t|2;r[f+4>>2]=p|1;r[m>>2]=p;h=m+4|0;r[h>>2]=r[h>>2]&-2;g=f;_=p}else{r[n>>2]=l|u|2;l=e+u+4|0;r[l>>2]=r[l>>2]|1;g=0;_=0}r[14499]=_;r[14502]=g;d=e;return d|0}if(c&2|0){d=0;return d|0}g=(c&-8)+a|0;if(g>>>0>>0){d=0;return d|0}a=g-t|0;_=c>>>3;e:do if(c>>>0>=256){l=r[o+24>>2]|0;u=r[o+12>>2]|0;do if((u|0)==(o|0)){p=o+16|0;f=p+4|0;h=r[f>>2]|0;if(!h){m=r[p>>2]|0;if(!m){v=0;break}else{y=m;b=p}}else{y=h;b=f}while(1){f=y+20|0;h=r[f>>2]|0;if(h|0){y=h;b=f;continue}f=y+16|0;h=r[f>>2]|0;if(!h)break;else{y=h;b=f}}if(b>>>0>>0)pe();else{r[b>>2]=0;v=y;break}}else{f=r[o+8>>2]|0;if(f>>>0>>0)pe();h=f+12|0;if((r[h>>2]|0)!=(o|0))pe();p=u+8|0;if((r[p>>2]|0)==(o|0)){r[h>>2]=u;r[p>>2]=f;v=u;break}else pe()}while(0);if(l|0){u=r[o+28>>2]|0;f=58292+(u<<2)|0;do if((o|0)==(r[f>>2]|0)){r[f>>2]=v;if(!v){r[14498]=r[14498]&~(1<>>0>=(r[14501]|0)>>>0){r[l+16+(((r[l+16>>2]|0)!=(o|0)&1)<<2)>>2]=v;if(!v)break e;else break}else pe();while(0);u=r[14501]|0;if(v>>>0>>0)pe();r[v+24>>2]=l;f=o+16|0;p=r[f>>2]|0;do if(p|0)if(p>>>0>>0)pe();else{r[v+16>>2]=p;r[p+24>>2]=v;break}while(0);p=r[f+4>>2]|0;if(p|0)if(p>>>0<(r[14501]|0)>>>0)pe();else{r[v+20>>2]=p;r[p+24>>2]=v;break}}}else{p=r[o+8>>2]|0;u=r[o+12>>2]|0;l=58028+(_<<1<<2)|0;if((p|0)!=(l|0)){if(p>>>0>>0)pe();if((r[p+12>>2]|0)!=(o|0))pe()}if((u|0)==(p|0)){r[14497]=r[14497]&~(1<<_);break}if((u|0)!=(l|0)){if(u>>>0>>0)pe();l=u+8|0;if((r[l>>2]|0)==(o|0))w=l;else pe()}else w=u+8|0;r[p+12>>2]=u;r[w>>2]=p}while(0);w=i&1;if(a>>>0<16){r[n>>2]=g|w|2;i=e+g+4|0;r[i>>2]=r[i>>2]|1;d=e;return d|0}else{i=e+t|0;r[n>>2]=w|t|2;r[i+4>>2]=a|3;t=i+a+4|0;r[t>>2]=r[t>>2]|1;ei(i,a);d=e;return d|0}return 0}function ei(e,t){e=e|0;t=t|0;var n=0,i=0,a=0,o=0,s=0,l=0,c=0,d=0,u=0,p=0,f=0,m=0,h=0,g=0,_=0,v=0,y=0,b=0,w=0,k=0,M=0,S=0,A=0,T=0,C=0,E=0,$=0;n=e+t|0;i=r[e+4>>2]|0;e:do if(!(i&1)){a=r[e>>2]|0;if(!(i&3))return;o=e+(0-a)|0;s=a+t|0;l=r[14501]|0;if(o>>>0>>0)pe();if((o|0)==(r[14502]|0)){c=n+4|0;d=r[c>>2]|0;if((d&3|0)!=3){u=o;p=s;break}r[14499]=s;r[c>>2]=d&-2;r[o+4>>2]=s|1;r[o+s>>2]=s;return}d=a>>>3;if(a>>>0<256){a=r[o+8>>2]|0;c=r[o+12>>2]|0;f=58028+(d<<1<<2)|0;if((a|0)!=(f|0)){if(a>>>0>>0)pe();if((r[a+12>>2]|0)!=(o|0))pe()}if((c|0)==(a|0)){r[14497]=r[14497]&~(1<>>0>>0)pe();f=c+8|0;if((r[f>>2]|0)==(o|0))m=f;else pe()}else m=c+8|0;r[a+12>>2]=c;r[m>>2]=a;u=o;p=s;break}a=r[o+24>>2]|0;c=r[o+12>>2]|0;do if((c|0)==(o|0)){f=o+16|0;d=f+4|0;h=r[d>>2]|0;if(!h){g=r[f>>2]|0;if(!g){_=0;break}else{v=g;y=f}}else{v=h;y=d}while(1){d=v+20|0;h=r[d>>2]|0;if(h|0){v=h;y=d;continue}d=v+16|0;h=r[d>>2]|0;if(!h)break;else{v=h;y=d}}if(y>>>0>>0)pe();else{r[y>>2]=0;_=v;break}}else{d=r[o+8>>2]|0;if(d>>>0>>0)pe();h=d+12|0;if((r[h>>2]|0)!=(o|0))pe();f=c+8|0;if((r[f>>2]|0)==(o|0)){r[h>>2]=c;r[f>>2]=d;_=c;break}else pe()}while(0);if(a){c=r[o+28>>2]|0;l=58292+(c<<2)|0;do if((o|0)==(r[l>>2]|0)){r[l>>2]=_;if(!_){r[14498]=r[14498]&~(1<>>0>=(r[14501]|0)>>>0){r[a+16+(((r[a+16>>2]|0)!=(o|0)&1)<<2)>>2]=_;if(!_){u=o;p=s;break e}else break}else pe();while(0);c=r[14501]|0;if(_>>>0>>0)pe();r[_+24>>2]=a;l=o+16|0;d=r[l>>2]|0;do if(d|0)if(d>>>0>>0)pe();else{r[_+16>>2]=d;r[d+24>>2]=_;break}while(0);d=r[l+4>>2]|0;if(d)if(d>>>0<(r[14501]|0)>>>0)pe();else{r[_+20>>2]=d;r[d+24>>2]=_;u=o;p=s;break}else{u=o;p=s}}else{u=o;p=s}}else{u=e;p=t}while(0);t=r[14501]|0;if(n>>>0>>0)pe();e=n+4|0;_=r[e>>2]|0;if(!(_&2)){v=r[14502]|0;if((n|0)==(r[14503]|0)){y=(r[14500]|0)+p|0;r[14500]=y;r[14503]=u;r[u+4>>2]=y|1;if((u|0)!=(v|0))return;r[14502]=0;r[14499]=0;return}if((n|0)==(v|0)){v=(r[14499]|0)+p|0;r[14499]=v;r[14502]=u;r[u+4>>2]=v|1;r[u+v>>2]=v;return}v=(_&-8)+p|0;y=_>>>3;e:do if(_>>>0>=256){m=r[n+24>>2]|0;i=r[n+12>>2]|0;do if((i|0)==(n|0)){d=n+16|0;c=d+4|0;a=r[c>>2]|0;if(!a){f=r[d>>2]|0;if(!f){b=0;break}else{w=f;k=d}}else{w=a;k=c}while(1){c=w+20|0;a=r[c>>2]|0;if(a|0){w=a;k=c;continue}c=w+16|0;a=r[c>>2]|0;if(!a)break;else{w=a;k=c}}if(k>>>0>>0)pe();else{r[k>>2]=0;b=w;break}}else{c=r[n+8>>2]|0;if(c>>>0>>0)pe();a=c+12|0;if((r[a>>2]|0)!=(n|0))pe();d=i+8|0;if((r[d>>2]|0)==(n|0)){r[a>>2]=i;r[d>>2]=c;b=i;break}else pe()}while(0);if(m|0){i=r[n+28>>2]|0;s=58292+(i<<2)|0;do if((n|0)==(r[s>>2]|0)){r[s>>2]=b;if(!b){r[14498]=r[14498]&~(1<>>0>=(r[14501]|0)>>>0){r[m+16+(((r[m+16>>2]|0)!=(n|0)&1)<<2)>>2]=b;if(!b)break e;else break}else pe();while(0);i=r[14501]|0;if(b>>>0>>0)pe();r[b+24>>2]=m;s=n+16|0;o=r[s>>2]|0;do if(o|0)if(o>>>0>>0)pe();else{r[b+16>>2]=o;r[o+24>>2]=b;break}while(0);o=r[s+4>>2]|0;if(o|0)if(o>>>0<(r[14501]|0)>>>0)pe();else{r[b+20>>2]=o;r[o+24>>2]=b;break}}}else{o=r[n+8>>2]|0;i=r[n+12>>2]|0;m=58028+(y<<1<<2)|0;if((o|0)!=(m|0)){if(o>>>0>>0)pe();if((r[o+12>>2]|0)!=(n|0))pe()}if((i|0)==(o|0)){r[14497]=r[14497]&~(1<>>0>>0)pe();m=i+8|0;if((r[m>>2]|0)==(n|0))M=m;else pe()}else M=i+8|0;r[o+12>>2]=i;r[M>>2]=o}while(0);r[u+4>>2]=v|1;r[u+v>>2]=v;if((u|0)==(r[14502]|0)){r[14499]=v;return}else S=v}else{r[e>>2]=_&-2;r[u+4>>2]=p|1;r[u+p>>2]=p;S=p}p=S>>>3;if(S>>>0<256){_=58028+(p<<1<<2)|0;e=r[14497]|0;v=1<>2]|0;if(M>>>0<(r[14501]|0)>>>0)pe();else{A=p;T=M}}else{r[14497]=e|v;A=_+8|0;T=_}r[A>>2]=u;r[T+12>>2]=u;r[u+8>>2]=T;r[u+12>>2]=_;return}_=S>>>8;if(_)if(S>>>0>16777215)C=31;else{T=(_+1048320|0)>>>16&8;A=_<>>16&4;v=A<<_;A=(v+245760|0)>>>16&2;e=14-(_|T|A)+(v<>>15)|0;C=S>>>(e+7|0)&1|e<<1}else C=0;e=58292+(C<<2)|0;r[u+28>>2]=C;r[u+20>>2]=0;r[u+16>>2]=0;A=r[14498]|0;v=1<>2]=u;r[u+24>>2]=e;r[u+12>>2]=u;r[u+8>>2]=u;return}v=S<<((C|0)==31?0:25-(C>>>1)|0);C=r[e>>2]|0;while(1){if((r[C+4>>2]&-8|0)==(S|0)){E=121;break}$=C+16+(v>>>31<<2)|0;e=r[$>>2]|0;if(!e){E=118;break}else{v=v<<1;C=e}}if((E|0)==118){if($>>>0<(r[14501]|0)>>>0)pe();r[$>>2]=u;r[u+24>>2]=C;r[u+12>>2]=u;r[u+8>>2]=u;return}else if((E|0)==121){E=C+8|0;$=r[E>>2]|0;v=r[14501]|0;if(!($>>>0>=v>>>0&C>>>0>=v>>>0))pe();r[$+12>>2]=u;r[E>>2]=u;r[u+8>>2]=$;r[u+12>>2]=C;r[u+24>>2]=0;return}}function ti(){}function ni(e,t,n,i){e=e|0;t=t|0;n=n|0;i=i|0;var a=0;a=t-i>>>0;a=t-i-(n>>>0>e>>>0|0)>>>0;return(x=a,e-n>>>0|0)|0}function ii(e,t,n,i){e=e|0;t=t|0;n=n|0;i=i|0;var a=0;a=e+n>>>0;return(x=t+i+(a>>>0>>0|0)>>>0,a|0)|0}function ai(e,t,n){e=e|0;t=t|0;n=n|0;var a=0,o=0,s=0,l=0;a=e+n|0;t=t&255;if((n|0)>=67){while(e&3){i[e>>0]=t;e=e+1|0}o=a&-4|0;s=o-64|0;l=t|t<<8|t<<16|t<<24;while((e|0)<=(s|0)){r[e>>2]=l;r[e+4>>2]=l;r[e+8>>2]=l;r[e+12>>2]=l;r[e+16>>2]=l;r[e+20>>2]=l;r[e+24>>2]=l;r[e+28>>2]=l;r[e+32>>2]=l;r[e+36>>2]=l;r[e+40>>2]=l;r[e+44>>2]=l;r[e+48>>2]=l;r[e+52>>2]=l;r[e+56>>2]=l;r[e+60>>2]=l;e=e+64|0}while((e|0)<(o|0)){r[e>>2]=l;e=e+4|0}}while((e|0)<(a|0)){i[e>>0]=t;e=e+1|0}return a-n|0}function ri(e,t,n){e=e|0;t=t|0;n=n|0;if((n|0)<32){x=t<>>32-n;return e<>8&255)<<16|(e>>16&255)<<8|e>>>24|0}function si(e){e=e|0;var t=0,n=0;e=e+15&-16|0;t=r[u>>2]|0;n=t+e|0;if((e|0)>0&(n|0)<(t|0)|(n|0)<0){ee()|0;fe(12);return-1}r[u>>2]=n;if((n|0)>(Q()|0)?(Z()|0)==0:0){fe(12);r[u>>2]=t;return-1}return t|0}function li(e,t,n){e=e|0;t=t|0;n=n|0;var a=0,o=0,s=0;if((n|0)>=8192)return he(e|0,t|0,n|0)|0;a=e|0;o=e+n|0;if((e&3)==(t&3)){while(e&3){if(!n)return a|0;i[e>>0]=i[t>>0]|0;e=e+1|0;t=t+1|0;n=n-1|0}s=o&-4|0;n=s-64|0;while((e|0)<=(n|0)){r[e>>2]=r[t>>2];r[e+4>>2]=r[t+4>>2];r[e+8>>2]=r[t+8>>2];r[e+12>>2]=r[t+12>>2];r[e+16>>2]=r[t+16>>2];r[e+20>>2]=r[t+20>>2];r[e+24>>2]=r[t+24>>2];r[e+28>>2]=r[t+28>>2];r[e+32>>2]=r[t+32>>2];r[e+36>>2]=r[t+36>>2];r[e+40>>2]=r[t+40>>2];r[e+44>>2]=r[t+44>>2];r[e+48>>2]=r[t+48>>2];r[e+52>>2]=r[t+52>>2];r[e+56>>2]=r[t+56>>2];r[e+60>>2]=r[t+60>>2];e=e+64|0;t=t+64|0}while((e|0)<(s|0)){r[e>>2]=r[t>>2];e=e+4|0;t=t+4|0}}else{s=o-4|0;while((e|0)<(s|0)){i[e>>0]=i[t>>0]|0;i[e+1>>0]=i[t+1>>0]|0;i[e+2>>0]=i[t+2>>0]|0;i[e+3>>0]=i[t+3>>0]|0;e=e+4|0;t=t+4|0}}while((e|0)<(o|0)){i[e>>0]=i[t>>0]|0;e=e+1|0;t=t+1|0}return a|0}function ci(e,t,n,i,a){e=e|0;t=t|0;n=n|0;i=i|0;a=a|0;return Ai[e&7](t|0,n|0,i|0,a|0)|0}function di(e,t){e=e|0;t=t|0;Ti[e&7](t|0)}function ui(e,t,n){e=e|0;t=t|0;n=n|0;Ci[e&3](t|0,n|0)}function pi(e,t){e=e|0;t=t|0;return Ei[e&1](t|0)|0}function fi(e,t,n,i){e=e|0;t=t|0;n=n|0;i=i|0;$i[e&1](t|0,n|0,i|0)}function mi(e,t,n,i,a,r,o,s,l){e=e|0;t=t|0;n=n|0;i=i|0;a=a|0;r=r|0;o=o|0;s=s|0;l=l|0;return Ii[e&3](t|0,n|0,i|0,a|0,r|0,o|0,s|0,l|0)|0}function hi(e,t,n){e=e|0;t=t|0;n=n|0;return xi[e&15](t|0,n|0)|0}function gi(e,t,n,i,a,r){e=e|0;t=t|0;n=n|0;i=i|0;a=a|0;r=r|0;return Pi[e&7](t|0,n|0,i|0,a|0,r|0)|0}function _i(e,t,n,i){e=e|0;t=t|0;n=n|0;i=i|0;X(0);return 0}function vi(e){e=e|0;X(1)}function yi(e,t){e=e|0;t=t|0;X(2)}function bi(e){e=e|0;X(3);return 0}function wi(e,t,n){e=e|0;t=t|0;n=n|0;X(4)}function ki(e,t,n,i,a,r,o,s){e=e|0;t=t|0;n=n|0;i=i|0;a=a|0;r=r|0;o=o|0;s=s|0;X(5);return 0}function Mi(e,t){e=e|0;t=t|0;X(6);return 0}function Si(e,t,n,i,a){e=e|0;t=t|0;n=n|0;i=i|0;a=a|0;X(7);return 0}var Ai=[_i,Be,Xe,rt,ut,_i,_i,_i];var Ti=[vi,Le,Fe,Ge,Ke,nt,it,bt];var Ci=[yi,Re,st,yi];var Ei=[bi,wt];var $i=[wi,vt];var Ii=[ki,ct,ht,ki];var xi=[Mi,Oe,Ne,Ue,ze,We,Ye,et,tt,yt,kt,qe,Lt,cn,Mi,Mi];var Pi=[Si,at,lt,dt,mt,gt,Si,Si];return{_llvm_bswap_i32:oi,getTempRet0:Ae,setThrew:Me,_bitshift64Shl:ri,_memset:ai,_ogv_audio_decoder_process_header:En,_sbrk:si,_memcpy:li,stackAlloc:ye,_i64Subtract:ni,setTempRet0:Se,_i64Add:ii,_emscripten_get_global_libc:Pn,stackSave:be,_free:Xn,runPostSets:ti,_ogv_audio_decoder_destroy:In,_ogv_audio_decoder_init:Cn,establishStackSpace:ke,stackRestore:we,_malloc:Yn,_ogv_audio_decoder_process_audio:$n,stackAlloc:ye,stackSave:be,stackRestore:we,establishStackSpace:ke,setThrew:Me,setTempRet0:Se,getTempRet0:Ae,dynCall_iiiii:ci,dynCall_vi:di,dynCall_vii:ui,dynCall_ii:pi,dynCall_viii:fi,dynCall_iiiiiiiii:mi,dynCall_iii:hi,dynCall_iiiiii:gi}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer),_llvm_bswap_i32=Module._llvm_bswap_i32=asm._llvm_bswap_i32,getTempRet0=Module.getTempRet0=asm.getTempRet0,setThrew=Module.setThrew=asm.setThrew,_bitshift64Shl=Module._bitshift64Shl=asm._bitshift64Shl,_memset=Module._memset=asm._memset,_ogv_audio_decoder_process_header=Module._ogv_audio_decoder_process_header=asm._ogv_audio_decoder_process_header,_sbrk=Module._sbrk=asm._sbrk,_memcpy=Module._memcpy=asm._memcpy,stackAlloc=Module.stackAlloc=asm.stackAlloc,_i64Subtract=Module._i64Subtract=asm._i64Subtract,setTempRet0=Module.setTempRet0=asm.setTempRet0,_i64Add=Module._i64Add=asm._i64Add,_emscripten_get_global_libc=Module._emscripten_get_global_libc=asm._emscripten_get_global_libc,stackSave=Module.stackSave=asm.stackSave,_free=Module._free=asm._free,runPostSets=Module.runPostSets=asm.runPostSets,_ogv_audio_decoder_destroy=Module._ogv_audio_decoder_destroy=asm._ogv_audio_decoder_destroy,_ogv_audio_decoder_init=Module._ogv_audio_decoder_init=asm._ogv_audio_decoder_init,establishStackSpace=Module.establishStackSpace=asm.establishStackSpace,stackRestore=Module.stackRestore=asm.stackRestore,_malloc=Module._malloc=asm._malloc,_ogv_audio_decoder_process_audio=Module._ogv_audio_decoder_process_audio=asm._ogv_audio_decoder_process_audio,dynCall_iiiii=Module.dynCall_iiiii=asm.dynCall_iiiii,dynCall_vi=Module.dynCall_vi=asm.dynCall_vi,dynCall_vii=Module.dynCall_vii=asm.dynCall_vii,dynCall_ii=Module.dynCall_ii=asm.dynCall_ii,dynCall_viii=Module.dynCall_viii=asm.dynCall_viii,dynCall_iiiiiiiii=Module.dynCall_iiiiiiiii=asm.dynCall_iiiiiiiii,dynCall_iii=Module.dynCall_iii=asm.dynCall_iii,dynCall_iiiiii=Module.dynCall_iiiiii=asm.dynCall_iiiiii;Runtime.stackAlloc=Module.stackAlloc,Runtime.stackSave=Module.stackSave,Runtime.stackRestore=Module.stackRestore,Runtime.establishStackSpace=Module.establishStackSpace,Runtime.setTempRet0=Module.setTempRet0,Runtime.getTempRet0=Module.getTempRet0,Module.asm=asm,Module.then=function(e){if(Module.calledRun)e(Module);else{var t=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){t&&t(),e(Module)}}return Module},ExitStatus.prototype=new Error,ExitStatus.prototype.constructor=ExitStatus;var initialStackTop,preloadStartTime=null,calledMain=!1;dependenciesFulfilled=function e(){Module.calledRun||run(),Module.calledRun||(dependenciesFulfilled=e)},Module.callMain=Module.callMain=function(e){function t(){for(var e=0;e<3;e++)i.push(0)}e=e||[],ensureInitRuntime();var n=e.length+1,i=[allocate(intArrayFromString(Module.thisProgram),"i8",ALLOC_NORMAL)];t();for(var a=0;a0;)Module.preInit.pop()();var shouldRunNow=!1;Module.noInitialRun&&(shouldRunNow=!1),Module.noExitRuntime=!0,run();var inputBuffer,inputBufferSize,getTimestamp;return getTimestamp="undefined"==typeof performance||"undefined"==typeof performance.now?Date.now:performance.now.bind(performance),Module.loadedMetadata=!!options.audioFormat,Module.audioFormat=options.audioFormat||null,Module.audioBuffer=null,Module.cpuTime=0,Object.defineProperty(Module,"processing",{get:function(){return!1}}),Module.init=function(e){function t(){time(function(){Module._ogv_audio_decoder_init()}),e()}Module.wasmBinary?Module.onRuntimeInitialized=function(){t()}:t()},Module.processHeader=function(e,t){var n=time(function(){var t=e.byteLength,n=reallocInputBuffer(t);return Module.HEAPU8.set(new Uint8Array(e),n),Module._ogv_audio_decoder_process_header(n,t)});t(n)},Module.processAudio=function(e,t){var n=time(function(){var t=e.byteLength,n=reallocInputBuffer(t);return Module.HEAPU8.set(new Uint8Array(e),n),Module._ogv_audio_decoder_process_audio(n,t)});t(n)},Module.close=function(){},Math.imul=Math_imul_orig,OGVDecoderAudioVorbis}}(),function(e){function t(i){if(n[i])return n[i].exports;var a=n[i]={exports:{},id:i,loaded:!1};return e[i].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){!function(){var t=n(1),i="1.4.2-20170425024925-504d7197";window&&(window.OGVCompat=t,window.OGVVersion=i),e.exports={OGVCompat:t,OGVVersion:i}}()},function(e,t,n){var i=n(2),a={benchmark:new i,hasTypedArrays:function(){return!!window.Uint32Array},hasWebAudio:function(){return!(!window.AudioContext&&!window.webkitAudioContext)},hasFlash:function(){if(navigator.userAgent.indexOf("Trident")!==-1)try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash");return!0}catch(e){return!1}return!1},hasAudio:function(){return this.hasWebAudio()||this.hasFlash()},isBlacklisted:function(e){var t=[/\(i.* OS [67]_.* like Mac OS X\).* Mobile\/.* Safari\//,/\(Macintosh.* Version\/6\..* Safari\/\d/],n=!1;return t.forEach(function(t){e.match(t)&&(n=!0)}),n},isSlow:function(){return this.benchmark.slow},isTooSlow:function(){return this.benchmark.tooSlow},supported:function(e){return"OGVDecoder"===e?this.hasTypedArrays()&&!this.isBlacklisted(navigator.userAgent):"OGVPlayer"===e&&(this.supported("OGVDecoder")&&this.hasAudio()&&!this.isTooSlow()); }};e.exports=a},function(e,t){function n(){function e(){var e=0,n=function(t){return e++,t<2?t:n(t-2)+n(t-1)},a=t();n(30);var r=t()-a;i=e/r}var t,n=this;t=window.performance&&window.performance.now?function(){return window.performance.now()}:function(){return Date.now()};var i=null;Object.defineProperty(n,"speed",{get:function(){return null===i&&e(),i}}),Object.defineProperty(n,"slowCutoff",{get:function(){return 5e4}}),Object.defineProperty(n,"tooSlowCutoff",{get:function(){return 0}}),Object.defineProperty(n,"slow",{get:function(){return n.speedr.length)&&(u=r)}for(r={},s=0;s,<\s]+/g,s=/^\s+|\s$/g;e.SearchIndexManager={createIndex:t,indexObject:a,cleanSearchText:n,cleanUsername:i,search:r}}(window),TLSerialization.prototype.createBuffer=function(){this.buffer=new ArrayBuffer(this.maxLength),this.intView=new Int32Array(this.buffer),this.byteView=new Uint8Array(this.buffer)},TLSerialization.prototype.getArray=function(){var e=new ArrayBuffer(this.offset),t=new Int32Array(e);return t.set(this.intView.subarray(0,this.offset/4)),t},TLSerialization.prototype.getBuffer=function(){return this.getArray().buffer},TLSerialization.prototype.getBytes=function(e){if(e){var t=new ArrayBuffer(this.offset),n=new Uint8Array(t);return n.set(this.byteView.subarray(0,this.offset)),n}for(var i=[],a=0;a>>",e.toString(16),e,t),this.checkLength(4),this.intView[this.offset/4]=e,this.offset+=4},TLSerialization.prototype.storeInt=function(e,t){this.writeInt(e,(t||"")+":int")},TLSerialization.prototype.storeBool=function(e,t){e?this.writeInt(2574415285,(t||"")+":bool"):this.writeInt(3162085175,(t||"")+":bool")},TLSerialization.prototype.storeLongP=function(e,t,n){this.writeInt(t,(n||"")+":long[low]"),this.writeInt(e,(n||"")+":long[high]")},TLSerialization.prototype.storeLong=function(e,t){if(angular.isArray(e))return 2==e.length?this.storeLongP(e[0],e[1],t):this.storeIntBytes(e,64,t);"string"!=typeof e&&(e=e?e.toString():"0");var n=bigStringInt(e).divideAndRemainder(bigint(4294967296));this.writeInt(intToUint(n[1].intValue()),(t||"")+":long[low]"),this.writeInt(intToUint(n[0].intValue()),(t||"")+":long[high]")},TLSerialization.prototype.storeDouble=function(e,t){var n=new ArrayBuffer(8),i=new Int32Array(n),a=new Float64Array(n);a[0]=e,this.writeInt(i[0],(t||"")+":double[low]"),this.writeInt(i[1],(t||"")+":double[high]")},TLSerialization.prototype.storeString=function(e,t){this.debug&&console.log(">>>",e,(t||"")+":string"),void 0===e&&(e="");var n=unescape(encodeURIComponent(e));this.checkLength(n.length+8);var i=n.length;i<=253?this.byteView[this.offset++]=i:(this.byteView[this.offset++]=254,this.byteView[this.offset++]=255&i,this.byteView[this.offset++]=(65280&i)>>8,this.byteView[this.offset++]=(16711680&i)>>16);for(var a=0;a>>",bytesToHex(e),(t||"")+":bytes");var n=e.byteLength||e.length;for(this.checkLength(n+8),n<=253?this.byteView[this.offset++]=n:(this.byteView[this.offset++]=254,this.byteView[this.offset++]=255&n,this.byteView[this.offset++]=(65280&n)>>8,this.byteView[this.offset++]=(16711680&n)>>16),this.byteView.set(e,this.offset),this.offset+=n;this.offset%4;)this.byteView[this.offset++]=0},TLSerialization.prototype.storeIntBytes=function(e,t,n){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var i=e.length;if(t%32||8*i!=t)throw new Error("Invalid bits: "+t+", "+e.length);this.debug&&console.log(">>>",bytesToHex(e),(n||"")+":int"+t),this.checkLength(i),this.byteView.set(e,this.offset),this.offset+=i},TLSerialization.prototype.storeRawBytes=function(e,t){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var n=e.length;this.debug&&console.log(">>>",bytesToHex(e),t||""),this.checkLength(n),this.byteView.set(e,this.offset),this.offset+=n},TLSerialization.prototype.storeMethod=function(e,t){var n,i=this.mtproto?Config.Schema.MTProto:Config.Schema.API,a=!1;for(n=0;n=4*this.intView.length)throw new Error("Nothing to fetch: "+e);var t=this.intView[this.offset/4];return this.debug&&console.log("<<<",t.toString(16),t,e),this.offset+=4,t},TLDeserialization.prototype.fetchInt=function(e){return this.readInt((e||"")+":int")},TLDeserialization.prototype.fetchDouble=function(e){var t=new ArrayBuffer(8),n=new Int32Array(t),i=new Float64Array(t);return n[0]=this.readInt((e||"")+":double[low]"),n[1]=this.readInt((e||"")+":double[high]"),i[0]},TLDeserialization.prototype.fetchLong=function(e){var t=this.readInt((e||"")+":long[low]"),n=this.readInt((e||"")+":long[high]"),i=bigint(n).shiftLeft(32).add(bigint(t)).toString();return i},TLDeserialization.prototype.fetchBool=function(e){var t=this.readInt((e||"")+":bool");return 2574415285==t||3162085175!=t&&(this.offset-=4,this.fetchObject("Object",e))},TLDeserialization.prototype.fetchString=function(e){var t=this.byteView[this.offset++];if(254==t)var t=this.byteView[this.offset++]|this.byteView[this.offset++]<<8|this.byteView[this.offset++]<<16;for(var n="",i=0;ithis.byteView.byteLength))throw new Error("Invalid raw bytes length: "+e+", buffer len: "+this.byteView.byteLength);if(t){var i=new Uint8Array(e);return i.set(this.byteView.subarray(this.offset,this.offset+e)),this.offset+=e,i}for(var i=[],a=0;a0)for(var d=e.substr(7,e.length-8),u=0;u=97&&e.charAt(0)<=122){for(var u=0;u10485760)return e.reject();if(!(i instanceof Blob)){var a=blobSafeMimeType(i.type||"image/jpeg"),r="data:"+a+";base64,"+bytesToBase64(i);return s(t,n,r).then(function(){return i})}try{var o=new FileReader}catch(c){return h=!1,e.reject()}var d=e.defer();o.onloadend=function(){s(t,n,o.result).then(function(){d.resolve(i)},function(e){d.reject(e)})},o.onerror=function(e){d.reject(e)};try{o.readAsDataURL(i)}catch(c){return h=!1,e.reject()}return d.promise}function s(t,n,i){try{var a=t.transaction([f],IDBTransaction.READ_WRITE||"readwrite").objectStore(f),r=a.put(i,n)}catch(o){return h=!1,e.reject(o)}var s=e.defer();return r.onsuccess=function(e){s.resolve()},r.onerror=function(e){s.reject(e)},s.promise}function l(e){return e.size||e.byteLength||e.length}function c(t){return a().then(function(n){var i=e.defer(),a=n.transaction([f],IDBTransaction.READ||"readonly").objectStore(f),r=a.get(t);return r.onsuccess=function(e){var t=e.target.result;void 0===t?i.reject():"string"==typeof t&&"data:"===t.substr(0,5)?i.resolve(dataUrlToBlob(t)):i.resolve(t)},r.onerror=function(e){i.reject(e)},i.promise})}function d(t,i){var a=n.getFakeFileWriter(i,function(e){r(t,e)});return e.when(a)}t.indexedDB=t.indexedDB||t.webkitIndexedDB||t.mozIndexedDB||t.OIndexedDB||t.msIndexedDB,t.IDBTransaction=t.IDBTransaction||t.webkitIDBTransaction||t.OIDBTransaction||t.msIDBTransaction;var u,p="cachedFiles",f="files",m=2,h=void 0!==t.indexedDB&&void 0!==t.IDBTransaction;h&&navigator.userAgent.indexOf("Safari")!=-1&&navigator.userAgent.indexOf("Chrome")==-1&&navigator.userAgent.match(/Version\/[678]/)&&(h=!1);var g=h||!1;return a(),{name:"IndexedDB",isAvailable:i,saveFile:r,getFile:c,getFileWriter:d}}]).service("TmpfsFileStorage",["$q","$window","FileManager",function(e,t,n){function i(){if(l)return l;if(!t.requestFileSystem)return l=e.reject({type:"FS_BROWSER_UNSUPPORTED",description:"requestFileSystem not present"});var n=e.defer();return t.requestFileSystem(t.TEMPORARY,524288e3,function(e){cachedFs=e,n.resolve()},function(e){c=!1,n.reject(e)}),l=n.promise}function a(){return Config.allow_tmpfs&&c}function r(t,n){return n=n||1,i().then(function(){var i=e.defer();return cachedFs.root.getFile(t,{create:!1},function(e){e.file(function(t){t.size>=n?i.resolve(e):i.reject(new Error("FILE_NOT_FOUND"))},function(e){console.log(dT(),"error",e),i.reject(e)})},function(){i.reject(new Error("FILE_NOT_FOUND"))}),i.promise})}function o(e,t){return s(e).then(function(e){return n.write(e,t).then(function(){return e.finalize()})})}function s(t){return i().then(function(){var i=e.defer();return cachedFs.root.getFile(t,{create:!0},function(e){n.getFileWriter(e).then(function(t){t.finalize=function(){return e},i.resolve(t)},function(e){c=!1,i.reject(e)})},function(e){c=!1,i.reject(e)}),i.promise})}t.requestFileSystem=t.requestFileSystem||t.webkitRequestFileSystem;var l,c=void 0!==t.requestFileSystem;return i(),{name:"TmpFS",isAvailable:a,saveFile:o,getFile:r,getFileWriter:s}}]).service("MemoryFileStorage",["$q","FileManager",function(e,t){function n(){return!0}function i(t,n){return o[t]?e.when(o[t]):e.reject(new Error("FILE_NOT_FOUND"))}function a(t,n){return e.when(o[t]=n)}function r(n,i){var r=t.getFakeFileWriter(i,function(e){a(n,e)});return e.when(r)}var o={};return{name:"Memory",isAvailable:n,saveFile:a,getFile:i,getFileWriter:r}}]).service("WebpManager",["qSync","$q",function(e,t){function n(e){var t=(tsNow(),new WebPDecoder),n=t.WebPDecoderConfig,i=n.j||n.output,a=n.input;if(!t.WebPInitDecoderConfig(n))return console.error("[webpjs] Library version mismatch!"),!1;var r=t.VP8StatusCode;status=t.WebPGetFeatures(e,e.length,a),status!=(r.VP8_STATUS_OK||0)&&console.error("[webpjs] status error",status,r);var l=t.WEBP_CSP_MODE;i.colorspace=l.MODE_RGBA,i.J=4;try{status=t.WebPDecode(e,e.length,n)}catch(c){status=c}if(ok=0==status,!ok)return console.error("[webpjs] decoding failed",status,r),!1;var d=i.c.RGBA.ma;if(!d)return!1;var u=i.height,p=i.width;o&&s?s.clearRect(0,0,o.width,o.height):(o=document.createElement("canvas"),s=o.getContext("2d")),o.height=u,o.width=p;for(var f=s.createImageData(o.width,o.height),m=f.data,h=0;h').appendTo($("body"))[0];u.addEventListener("load",function(e){a=u.firstChild,console.log(dT(),"NaCl ready")},!0),u.addEventListener("message",function(e){d(e.data.taskID,e.data.result)},!0),u.addEventListener("error",function(e){console.error("NaCl error",e)},!0)}if(window.Worker){var p=new Worker("js/lib/crypto_worker.js");p.onmessage=function(e){i?d(e.data.taskID,e.data.result):i=p},p.onerror=function(e){console.error("CW error",e,e.stack),i=!1}}return{sha1Hash:function(n){if(l){var i=t.defer(),a=Array.isArray(n)?convertToUint8Array(n):n;return s.digest({name:"SHA-1"},a).then(function(e){i.resolve(e)},function(e){console.error("Crypto digest error",e),l=!1,i.resolve(sha1HashSync(n))}),i.promise}return e(function(){return sha1HashSync(n)})},sha256Hash:function(n){if(c){var i=t.defer(),a=Array.isArray(n)?convertToUint8Array(n):n;return s.digest({name:"SHA-256"},a).then(function(e){i.resolve(e)},function(e){console.error("Crypto digest error",e),c=!1,i.resolve(sha256HashSync(n))}),i.promise}return e(function(){return sha256HashSync(n)})},aesEncrypt:function(t,i,r){return a?n("aes-encrypt",{bytes:addPadding(convertToArrayBuffer(t)),keyBytes:convertToArrayBuffer(i),ivBytes:convertToArrayBuffer(r)},a):e(function(){return convertToArrayBuffer(aesEncryptSync(t,i,r))})},aesDecrypt:function(t,i,r){return a?n("aes-decrypt",{encryptedBytes:addPadding(convertToArrayBuffer(t)),keyBytes:convertToArrayBuffer(i),ivBytes:convertToArrayBuffer(r)},a):e(function(){return convertToArrayBuffer(aesDecryptSync(t,i,r))})},factorize:function(t){return t=convertToByteArray(t),a&&t.length<=8?n("factorize",{bytes:t},a):i?n("factorize",{bytes:t}):e(function(){return pqPrimeFactorization(t)})},modPow:function(t,a,r){return i?n("mod-pow",{x:t,y:a,m:r}):e(function(){return bytesModPow(t,a,r)})}}}]).service("ExternalResourcesManager",["$q","$http","$sce",function(e,t,n){function i(i){return void 0!==a[i]?a[i]:a[i]=t.get(i,{responseType:"blob",transformRequest:null}).then(function(e){window.URL=window.URL||window.webkitURL;var t=window.URL.createObjectURL(e.data);return n.trustAsResourceUrl(t)},function(t){return Config.Modes.chrome_packed?e.reject(t):e.when(n.trustAsResourceUrl(i))})}var a={};return{downloadByURL:i}}]).service("IdleManager",["$rootScope","$window","$timeout",function(e,t,n){function i(){s||(s=!0,$(t).on(c+" blur focus keydown mousedown touchstart",a),setTimeout(function(){a({type:"blur",fake_initial:!0})},0))}function a(i){if("mousemove"==i.type){var i=i.originalEvent||i;if(i&&0===i.movementX&&0===i.movementY)return;$(t).off("mousemove",a)}var s="blur"==i.type||"timeout"==i.type;l&&document[l]&&(s=!0),n.cancel(r),s||(r=n(function(){a({type:"timeout"})},3e4)),"focus"!=i.type||e.idle.afterFocus||(e.idle.afterFocus=!0,setTimeout(function(){delete e.idle.afterFocus},10));var c=e.idle.initial?0:1e3;i&&!i.fake_initial&&delete e.idle.initial,n.cancel(o),e.idle.isIDLE!=s&&(o=n(function(){e.idle.isIDLE=s,s&&"timeout"==i.type&&$(t).on("mousemove",a)},c))}e.idle={isIDLE:!1,initial:!0};var r,o,s=!1,l="hidden",c="visibilitychange";return"undefined"!=typeof document.hidden||("undefined"!=typeof document.mozHidden?(l="mozHidden",c="mozvisibilitychange"):"undefined"!=typeof document.msHidden?(l="msHidden",c="msvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(l="webkitHidden", c="webkitvisibilitychange")),{start:i}}]).service("GeoLocationManager",["$q",function(e){function t(){return void 0!==navigator.geolocation}function n(n){if(!n&&i)return e.when(i);if(!t())return e.reject();var a=e.defer();return navigator.geolocation.getCurrentPosition(function(e){i={lat:e.coords.latitude,"long":e.coords.longitude},a.resolve(i)},function(e){a.reject(e)}),a.promise}var i=!1;return{getPosition:n,isAvailable:t}}]).service("AppRuntimeManager",["$window",function(e){return{reload:function(){try{location.reload()}catch(t){}e.chrome&&chrome.runtime&&chrome.runtime.reload&&chrome.runtime.reload()},close:function(){try{e.close()}catch(t){}},focus:function(){window.navigator.mozApps&&document.hidden?window.navigator.mozApps.getSelf().onsuccess=function(){this.result.launch()}:(window.chrome&&chrome.app&&chrome.app.window&&chrome.app.window.current().focus(),window.focus())}}}]).service("RichTextProcessor",["$sce","$sanitize",function(e,t){function n(e){for(var t,n,i,a,r=0;r-1)return n=Math.floor(t/a),i=t%a,{category:r,row:n,column:i};return console.error("emoji not found in spritesheet",e),null}function i(e,t){t=t||{};for(var i,a,r,o,s,l=e,c=[],u=0;i=l.match(A);){if(s=u+i.index,i[3])c.push({_:"messageEntityMention",offset:s+i[1].length,length:i[2].length+i[3].length});else if(i[4])if(T.test(i[4]))c.push({_:"messageEntityEmail",offset:s,length:i[4].length});else{var a=!1,p=i[5],f=i[6],m="";if(f){if(p||"xn--"!==f.substr(0,4)&&Config.TLD.indexOf(f.toLowerCase())===-1||(p="http://"),p){var g=d(i[4]);g.length!==i[4].length&&(m=i[4].substring(g.length),i[4]=g),a=(i[5]?"":p)+i[4]}}else a=(i[5]?"":"http://")+i[4];a&&c.push({_:"messageEntityUrl",offset:s,length:i[4].length})}else i[7]?c.push({_:"messageEntityLinebreak",offset:s,length:1}):i[8]?(r=EmojiHelper.emojiMap[i[8]])&&(o=n(r))&&c.push({_:"messageEntityEmoji",offset:s,length:i[0].length,coords:o,title:h[r][1][0]}):i[10]?c.push({_:"messageEntityHashtag",offset:s+i[9].length,length:i[10].length}):i[12]&&c.push({_:"messageEntityBotCommand",offset:s+i[11].length,length:1+i[12].length+(i[13]?1+i[13].length:0)});l=l.substr(i.index+i[0].length),u+=i.index+i[0].length}return c}function a(e){return e.replace(/:([a-z0-9\-\+\*_]+?):/gi,function(e,t){var n=EmojiHelper.shortcuts[t];return void 0!==n?EmojiHelper.emojis[n][0]:e})}function r(e,t,n){if(!C.test(e))return n?e:e.trim();for(var i,a,r=e,o=[],s=0;i=r.match(E);){a=s+i.index,o.push(r.substr(0,i.index));var e=i[3]||i[8]||i[11];s-=e.length,e=e.replace(/^\s+|\s+$/g,""),s+=e.length,e.match(/^`*$/)?o.push(i[0]):i[3]?("\n"==i[5]&&(i[5]="",s-=1),o.push(i[1]+e+i[5]),t.push({_:"messageEntityPre",language:"",offset:a+i[1].length,length:e.length}),s-=i[2].length+i[4].length):i[7]?(o.push(i[6]+e+i[9]),t.push({_:x[i[7]],offset:a+i[6].length,length:e.length}),s-=2*i[7].length):i[11]&&(o.push(e),t.push({_:"messageEntityMentionName",user_id:i[10],offset:a,length:e.length}),s-=i[0].length-e.length),r=r.substr(i.index+i[0].length),s+=i.index+i[0].length}return o.push(r),o=o.join(""),o.replace(/\s+/g,"").length||(o=e,t.splice(0,t.length)),t.length||n||(o=o.trim()),o}function o(e,t,n){var i,a,r,o,s,l,c,d,u,p=t.slice(),f=e.length,m=t.length,h=0;for(i=0;i=c&&sc&&l<=d){n&&s>=c&&l<=d&&(void 0===o.nested&&(o.nested=[]),r.offset-=c,o.nested.push(angular.copy(r))),u=!0;break}if(c>=l)break}u||p.push(r)}return p.sort(function(e,t){return e.offset-t.offset}),p}function s(e,t,n){return void 0===t?encodeEntities(e):(n.hasNested=!0,l(e,{entities:t,nested:!0}))}function l(n,a){if(!n||!n.length)return"";a=a||{};var r=a.entities,o=a.contextSite||"Telegram",l="Telegram"!=o,c=!1;void 0===r&&(r=i(n,a));var d,p,m,h,_=0,v=r.length,y=[],b=0,w=a.emojiIconSize||g;for(_=0;_b)y.push(encodeEntities(n.substr(b,d.offset-b)));else if(d.offset',encodeEntities(p),"");break;case"messageEntityMentionName":if(a.noLinks){m=!0;break}y.push('',encodeEntities(p),"");break;case"messageEntityHashtag":var k=!a.noLinks&&$[o];if(!k){m=!0;break}var A=p.substr(1);y.push("',encodeEntities(p),"");break;case"messageEntityEmail":if(a.noLinks){m=!0;break}y.push('',encodeEntities(p),"");break;case"messageEntityUrl":case"messageEntityTextUrl":var T;"messageEntityTextUrl"==d._?(h=d.url,h=f(h,!0),T=s(p,d.nested,a)):(h=f(p,!1),T=encodeEntities(u(p))),a.noLinks?y.push(T):y.push('',T,"");break;case"messageEntityLinebreak":y.push(a.noLinebreaks?" ":"
");break;case"messageEntityEmoji":y.push('',":",d.title,":"),c=!0;break;case"messageEntityBotCommand":if(a.noLinks||a.noCommands||l){m=!0;break}var C,E,x=p.substr(1);(E=x.indexOf("@"))!=-1?(C=x.substr(E+1),x=x.substr(0,E)):C=a.fromBot,y.push('',encodeEntities(p),"");break;case"messageEntityBold":y.push("",s(p,d.nested,a),"");break;case"messageEntityItalic":y.push("",s(p,d.nested,a),"");break;case"messageEntityCode":y.push("",encodeEntities(p),"");break;case"messageEntityPre":y.push("
",encodeEntities(p),"
");break;default:m=!0}b=d.offset+(m?0:d.length)}if(y.push(encodeEntities(n.substr(b))),n=t(y.join("")),!a.nested&&(c||a.hasNested)){n=n.replace(/\ufe0f|️|�|‍/g,"",n);var P=18==w?"":" emoji-w"+w;n=n.replace(/]*)?) class="emoji emoji-(\d)-(\d+)-(\d+)"(.+?)<\/span>/g,'')}return e.trustAs("html",n)}function c(e,t){if(!e||!e.length)return"";t=t||{};var n=t.entities;void 0===n&&(n=i(e,t));var a,r,o,s=0,l=n.length,c=[],d=0;for(s=0;sd)c.push(e.substr(d,a.offset-d));else if(a.offsetn&&")"===e.charAt(t-1);)e=e.substr(0,t-1),i--,t--;return n>i&&(e=e.replace(/\)+$/,"")),e}function u(e){return e.replace(/(%[A-Z\d]{2})+/g,function(e){try{return decodeURIComponent(e)}catch(t){return e}})}function p(e,t){if(_)return e;if(!e||!e.length)return"";t=t||{},e=e.replace(/\ufe0f/g,"",e);for(var n,i,a=e,e=[];n=a.match(A);)e.push(a.substr(0,n.index)),n[8]&&(m=EmojiHelper.emojiMap[n[8]])&&(i=h[m][1][0])?e.push(":"+i+":"):e.push(n[0]),a=a.substr(n.index+n[0].length);return e.push(a),e.join("")}function f(e,t){e.match(/^(https?|tg):\/\//i)||(e="http://"+e);var n,i;if(2==t)e="tg://unsafe_url?url="+encodeURIComponent(e);else if(n=e.match(/^https?:\/\/t(?:elegram)?\.me\/(.+)/)){var a=n[1].split("/");switch(a[0]){case"joinchat":e="tg://join?invite="+a[1];break;case"addstickers":e="tg://addstickers?set="+a[1];break;default:if(a[1]&&a[1].match(/^\d+$/))e="tg://resolve?domain="+a[0]+"&post="+a[1];else if(!a[1]){var r=a[0].split("?");e="tg://resolve?domain="+r[0]+(r[1]?"&"+r[1]:"")}}}else(i=e.match(/^https?:\/\/telesco\.pe\/([^\/?]+)\/(\d+)/))?e="tg://resolve?domain="+i[1]+"&post="+i[2]:t&&(e="tg://unsafe_url?url="+encodeURIComponent(e));return e}var m,h=Config.Emoji,g=18,_=navigator.userAgent.search(/OS X|iPhone|iPad|iOS|Android/i)!=-1,v="\\u0023\\u20E3|\\u00a9|\\u00ae|\\u203c|\\u2049|\\u2139|[\\u2194-\\u2199]|\\u21a9|\\u21aa|\\u231a|\\u231b|\\u23e9|[\\u23ea-\\u23ec]|\\u23f0|\\u24c2|\\u25aa|\\u25ab|\\u25b6|\\u2611|\\u2614|\\u26fd|\\u2705|\\u2709|[\\u2795-\\u2797]|\\u27a1|\\u27b0|\\u27bf|\\u2934|\\u2935|[\\u2b05-\\u2b07]|\\u2b1b|\\u2b1c|\\u2b50|\\u2b55|\\u3030|\\u303d|\\u3297|\\u3299|[\\uE000-\\uF8FF\\u270A-\\u2764\\u2122\\u25C0\\u25FB-\\u25FE\\u2615\\u263a\\u2648-\\u2653\\u2660-\\u2668\\u267B\\u267F\\u2693\\u261d\\u26A0-\\u26FA\\u2708\\u2702\\u2601\\u260E]|[\\u2600\\u26C4\\u26BE\\u23F3\\u2764]|\\uD83D[\\uDC00-\\uDFFF]|\\uD83C[\\uDDE8-\\uDDFA�]\\uD83C[\\uDDEA-\\uDDFA�]|[0-9]\\u20e3|\\uD83C[\\uDC00-\\uDFFF]",y="a-z\\u00c0-\\u00d6\\u00d8-\\u00f6\\u00f8-\\u00ff\\u0100-\\u024f\\u0253\\u0254\\u0256\\u0257\\u0259\\u025b\\u0263\\u0268\\u026f\\u0272\\u0289\\u028b\\u02bb\\u0300-\\u036f\\u1e00-\\u1eff\\u0400-\\u04ff\\u0500-\\u0527\\u2de0-\\u2dff\\ua640-\\ua69f\\u0591-\\u05bf\\u05c1-\\u05c2\\u05c4-\\u05c5\\u05c7\\u05d0-\\u05ea\\u05f0-\\u05f4\\ufb1d-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufb4f\\u0610-\\u061a\\u0620-\\u065f\\u066e-\\u06d3\\u06d5-\\u06dc\\u06de-\\u06e8\\u06ea-\\u06ef\\u06fa-\\u06fc\\u06ff\\u0750-\\u077f\\u08a0\\u08a2-\\u08ac\\u08e4-\\u08fe\\ufb50-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\u200c\\u0e01-\\u0e3a\\u0e40-\\u0e4e\\u1100-\\u11ff\\u3130-\\u3185\\uA960-\\uA97F\\uAC00-\\uD7AF\\uD7B0-\\uD7FF\\u3003\\u3005\\u303b\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uff9f\\uffa1-\\uffdc",b="0-9_"+y,w="·",k="((?:https?|ftp)://|mailto:)?(?:\\S{1,64}(?::\\S{0,64})?@)?(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])(?:\\.(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])){3}|["+y+"0-9]["+y+w+"0-9-]{0,64}(?:\\.["+y+"0-9]["+y+w+"0-9-]{0,64}){0,10}(?:\\.(xn--[0-9a-z]{2,16}|["+y+"]{2,24})))(?::\\d{2,5})?(?:/(?:\\S{0,255}[^\\s.;,(\\[\\]{}<>\"'])?)?",M="[a-zA-Z\\d_]{5,32}",S="\\/([a-zA-Z\\d_]{1,32})(?:@("+M+"))?(\\b|$)",A=new RegExp("(^| )(@)("+M+")|("+k+")|(\\n)|("+v+")|(^|[\\s\\(\\]])(#["+b+"]{2,64})|(^|\\s)"+S,"i"),T=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,C=/[`_*@]/,E=/(^|\s|\n)(````?)([\s\S]+?)(````?)([\s\n\.,:?!;]|$)|(^|\s)(`|\*\*|__)([^\n]+?)\7([\s\.,:?!;]|$)|@(\d+)\s*\((.+?)\)/m,$={Telegram:"tg://search_hashtag?hashtag={1}",Twitter:"https://twitter.com/hashtag/{1}",Instagram:"https://instagram.com/explore/tags/{1}/","Google Plus":"https://plus.google.com/explore/{1}"},I={Telegram:"#/im?p=%40{1}",Twitter:"https://twitter.com/{1}",Instagram:"https://instagram.com/{1}/",GitHub:"https://github.com/{1}"},x={"`":"messageEntityCode","**":"messageEntityBold",__:"messageEntityItalic"};return{wrapRichText:l,wrapPlainText:p,wrapDraftText:c,wrapUrl:f,parseEntities:i,parseMarkdown:r,parseEmojis:a,mergeEntities:o}}]).service("ServerTimeManager",["Storage",function(e){var t=tsNow(!0),n=t-t%86400,i=new Date;i.setHours(0),i.setMinutes(0),i.setSeconds(0);var a=n-Math.floor(+i/1e3),r=0,o={midnightOffset:a,serverTimeOffset:r};return e.get("server_time_offset").then(function(e){e&&(r=e,o.serverTimeOffset=e)}),o}]).service("WebPushApiManager",["$window","$timeout","$q","$rootScope","_","AppRuntimeManager",function(e,t,n,i,a,r){function o(){w||(w=!0,l(),h())}function s(){b=!1}function l(){v&&navigator.serviceWorker.ready.then(function(e){e.pushManager.getSubscription().then(function(e){y=!!e,g("init",e)})["catch"](function(e){console.log("Error during getSubscription()",e)})})}function c(){v&&navigator.serviceWorker.ready.then(function(e){e.pushManager.subscribe({userVisibleOnly:S}).then(function(e){y=!0,g("subscribe",e)})["catch"](function(e){"denied"===Notification.permission?console.log("Permission for Notifications was denied"):(console.log("Unable to subscribe to push.",e),S||(S=!0,setTimeout(c,0)))})})}function d(){v&&navigator.serviceWorker.ready.then(function(e){e.pushManager.getSubscription().then(function(e){y=!1,e&&(g("unsubscribe",e),setTimeout(function(){e.unsubscribe().then(function(e){y=!1})["catch"](function(e){console.error("Unsubscription error: ",e)})},3e3))})["catch"](function(e){console.error("Error thrown while unsubscribing from push messaging.",e)})})}function u(){v&&navigator.serviceWorker.ready.then(function(e){e.pushManager.getSubscription().then(function(e){console.warn("force unsubscribe",e),e&&e.unsubscribe().then(function(e){console.warn("force unsubscribe successful",e),y=!1})["catch"](function(e){console.error("Unsubscription error: ",e)})})["catch"](function(e){console.error("Error thrown while unsubscribing from push messaging.",e)})})}function p(){if(!(!v||i.idle&&i.idle.deactivated)){k.baseUrl=(location.href||"").replace(/#.*$/,"")+"#/im";var e={type:"ping",localNotifications:b,lang:{push_action_mute1d:a(Config.Mobile?"push_action_mute1d_mobile_raw":"push_action_mute1d_raw"),push_action_settings:a(Config.Mobile?"push_action_settings_mobile_raw":"push_action_settings_raw"),push_message_nopreview:a("push_message_nopreview_raw")},settings:k};navigator.serviceWorker.controller&&navigator.serviceWorker.controller.postMessage(e),_=setTimeout(p,1e4)}}function f(e){k=angular.copy(e),clearTimeout(_),p()}function m(){if(v&&navigator.serviceWorker.controller){var e={type:"notifications_clear"};navigator.serviceWorker.controller.postMessage(e)}}function h(){v&&(navigator.serviceWorker.addEventListener("message",function(e){if(e.data&&"push_click"==e.data.type){if(i.idle&&i.idle.deactivated)return void r.reload();i.$emit("push_notification_click",e.data.data)}}),navigator.serviceWorker.ready.then(p))}function g(e,t){if(t){var n=t.toJSON();if(!(n&&n.endpoint&&n.keys&&n.keys.p256dh&&n.keys.auth))return console.warn(dT(),"Invalid push subscription",n),d(),v=!1,g(e,!1);console.warn(dT(),"Push",e,n),i.$emit("push_"+e,{tokenType:10,tokenValue:JSON.stringify(n)})}else console.warn(dT(),"Push",e,!1),i.$emit("push_"+e,!1)}var _,v=!0,y=!1,b=!0,w=!1,k={},M=navigator.userAgent.toLowerCase().indexOf("firefox")>-1,S=!M;return"PushManager"in window&&"Notification"in window&&"serviceWorker"in navigator||(console.warn("Push messaging is not supported."),v=!1,b=!1),v&&"denied"===Notification.permission&&console.warn("The user has blocked notifications."),{isAvailable:v,start:o,isPushEnabled:y,subscribe:c,unsubscribe:d,forceUnsubscribe:u,hidePushNotifications:m,setLocalNotificationsDisabled:s,setSettings:f}}]),angular.module("myApp.i18n",["izhukov.utils"]).factory("_",["$rootScope","$locale",function(e,t){function n(e,t){return e.replace(l,function(i,a,r){var o=t[a];return void 0===o?(console.warn("[i18n] missing param "+a+' for message "'+e+'"'),""):(void 0!==r&&(o=n(o,r.split("|"))),o.toString().trim())})}function i(e,t){return e=e.replace(/\*\*(.+?)\*\*/g,"$1").replace(/\n| /g,"
")}function a(e,t){var a=!1,l=e;if("_raw"===e.substr(-4)&&(a=!0,e=e.substr(0,e.length-4)),o.hasOwnProperty(e))l=o[e];else{if(!s.hasOwnProperty(e))return console.warn("[i18n] missing key "+e),e;l=s[e],console.warn("[i18n] missing locale key "+r+" / "+e)}return a||(l=encodeEntities(l)),"_md"==e.substr(-3)&&(l=i(l)),arguments.length>1&&("string"==typeof t?(Array.prototype.shift.apply(arguments),l=n(l,arguments)):l=n(l,t)),l}var r=Config.I18n.locale,o=Config.I18n.messages,s=Config.I18n.fallback_messages,l=/\{\s*([a-zA-Z\d\-_]+)(?:\s*:\s*(.*?))?\s*\}/g;return a.locale=function(){return r},a.pluralize=function(n){var i=e.$eval(a(n+"_raw"));return function(e){return(i[t.pluralCat(e)]||"").replace("{}",e)}},a}]).filter("i18n",["_",function(e){return function(t,n){return e(t+"_raw",n)}}]).directive("ngPluralize",["_",function(e){return{restrict:"EA",priority:1,compile:function(t){var n=t.attr("when"),i=e(n+"_raw");t.attr("when",i)}}}]).directive("myI18n",["_",function(e){return{restrict:"EA",compile:function(t){var n=t.children('my-i18n-param:not([name]), [my-i18n-param=""]:not([name])').map(function(e,t){return t.outerHTML}).toArray();t.children('my-i18n-param[name], [my-i18n-param]:not([my-i18n-param=""]), [my-i18n-param][name]').each(function(e,t){n[angular.element(t).attr("my-i18n-param")||angular.element(t).attr("name")]=t.outerHTML}),t.children("my-i18n-param").remove();var i=t.attr("my-i18n")||t.attr("msgid")?t:t.children("my-i18n-format, [my-i18n-format]");i.each(function(t,i){var a=angular.element(i),r=a.attr("my-i18n")||a.attr("msgid")||a.attr("my-i18n-format")||a.html().replace(/\s+/g," ").trim();if(a.hasClass("nocopy")){var o=e(r+"_raw",n);a.attr("data-content",o)}else{var o=e(r,n);a.html(o)}})}}}]),angular.module("izhukov.mtproto",["izhukov.utils"]).factory("MtpDcConfigurator",function(){function e(e,a){if(void 0===i[e]){var r,o,s=!1;if(Config.Modes.ssl||!Config.Modes.http){var l=t[e-1]+(a?"-1":""),c=Config.Modes.test?"apiw_test1":"apiw1";return s="https://"+l+".web.telegram.org/"+c}for(r=0;ro[0]||i[0]==o[0]&&i[1]>=o[1])&&(o=[i[0],i[1]+4]),i=o,longFromInts(o[0],o[1])}function n(t,n){var r=t-Math.floor((n||tsNow())/1e3),o=Math.abs(a-r)>10;return e.set({server_time_offset:r}),i=[0,0],a=r,console.log(dT(),"Apply server time",t,n,r,o),o}var i=[0,0],a=0;return e.get("server_time_offset").then(function(e){e&&(a=e)}),{generateID:t,applyServerTime:n}}]).factory("MtpAuthorizer",["MtpDcConfigurator","MtpRsaKeysManager","MtpSecureRandom","MtpTimeManager","CryptoWorker","$http","$q","$timeout",function(e,t,n,i,a,r,o,s){function l(t,n){var a=n.byteLength,s=new Int32Array(n),l=new TLSerialization;l.storeLongP(0,0,"auth_key_id"),l.storeLong(i.generateID(),"msg_id"),l.storeInt(a,"request_length");var c=l.getBuffer(),d=new Int32Array(c),u=c.byteLength,p=new ArrayBuffer(u+a),f=new Int32Array(p);f.set(d),f.set(s,d.length);var m,h=_?p:f,g=e.chooseServer(t),v={code:406,type:"NETWORK_BAD_RESPONSE",url:g};try{m=r.post(g,h,{responseType:"arraybuffer",transformRequest:null})}catch(y){m=o.reject(angular.extend(v,{originalError:y}))}return m.then(function(e){if(!e.data||!e.data.byteLength)return o.reject(v);try{var t=new TLDeserialization(e.data,{mtproto:!0});t.fetchLong("auth_key_id"),t.fetchLong("msg_id"),t.fetchInt("msg_len")}catch(n){return o.reject(angular.extend(v,{originalError:n}))}return t},function(e){return e.message||e.type||(e=angular.extend(v,{originalError:e})),o.reject(e)})}function c(e){var n=e.deferred,i=new TLSerialization({mtproto:!0});i.storeMethod("req_pq",{nonce:e.nonce}),console.log(dT(),"Send req_pq",bytesToHex(e.nonce)),l(e.dcID,i.getBuffer()).then(function(i){var r=i.fetchObject("ResPQ");if("resPQ"!=r._)throw new Error("[MT] resPQ response invalid: "+r._);if(!bytesCmp(e.nonce,r.nonce))throw new Error("[MT] resPQ nonce mismatch");if(e.serverNonce=r.server_nonce,e.pq=r.pq,e.fingerprints=r.server_public_key_fingerprints,console.log(dT(),"Got ResPQ",bytesToHex(e.serverNonce),bytesToHex(e.pq),e.fingerprints),e.publicKey=t.select(e.fingerprints),!e.publicKey)throw new Error("[MT] No public key found");console.log(dT(),"PQ factorization start",e.pq),a.factorize(e.pq).then(function(t){e.p=t[0],e.q=t[1],console.log(dT(),"PQ factorization done",t[2]),d(e)},function(e){console.log("Worker error",e,e.stack),n.reject(e)})},function(e){console.error(dT(),"req_pq error",e.message),n.reject(e)}),s(function(){t.prepare()})}function d(e){var t=e.deferred;e.newNonce=new Array(32),n.nextBytes(e.newNonce);var i=new TLSerialization({mtproto:!0});i.storeObject({_:"p_q_inner_data",pq:e.pq,p:e.p,q:e.q,nonce:e.nonce,server_nonce:e.serverNonce,new_nonce:e.newNonce},"P_Q_inner_data","DECRYPTED_DATA");var a=sha1BytesSync(i.getBuffer()).concat(i.getBytes()),r=new TLSerialization({mtproto:!0});r.storeMethod("req_DH_params",{nonce:e.nonce,server_nonce:e.serverNonce,p:e.p,q:e.q,public_key_fingerprint:e.publicKey.fingerprint,encrypted_data:rsaEncrypt(e.publicKey,a)}),console.log(dT(),"Send req_DH_params"),l(e.dcID,r.getBuffer()).then(function(n){var i=n.fetchObject("Server_DH_Params","RESPONSE");if("server_DH_params_fail"!=i._&&"server_DH_params_ok"!=i._)return t.reject(new Error("[MT] Server_DH_Params response invalid: "+i._)),!1;if(!bytesCmp(e.nonce,i.nonce))return t.reject(new Error("[MT] Server_DH_Params nonce mismatch")),!1;if(!bytesCmp(e.serverNonce,i.server_nonce))return t.reject(new Error("[MT] Server_DH_Params server_nonce mismatch")),!1;if("server_DH_params_fail"==i._){var a=sha1BytesSync(e.newNonce).slice(-16);return bytesCmp(a,i.new_nonce_hash)?(t.reject(new Error("[MT] server_DH_params_fail")),!1):(t.reject(new Error("[MT] server_DH_params_fail new_nonce_hash mismatch")),!1)}try{u(e,i.encrypted_answer)}catch(r){return t.reject(r),!1}f(e)},function(e){t.reject(e)})}function u(e,t){e.localTime=tsNow(),e.tmpAesKey=sha1BytesSync(e.newNonce.concat(e.serverNonce)).concat(sha1BytesSync(e.serverNonce.concat(e.newNonce)).slice(0,12)),e.tmpAesIv=sha1BytesSync(e.serverNonce.concat(e.newNonce)).slice(12).concat(sha1BytesSync([].concat(e.newNonce,e.newNonce)),e.newNonce.slice(0,4));var n=aesDecryptSync(t,e.tmpAesKey,e.tmpAesIv),a=n.slice(0,20),r=n.slice(20),o=bytesToArrayBuffer(r),s=new TLDeserialization(o,{mtproto:!0}),l=s.fetchObject("Server_DH_inner_data");if("server_DH_inner_data"!=l._)throw new Error("[MT] server_DH_inner_data response invalid: "+constructor);if(!bytesCmp(e.nonce,l.nonce))throw new Error("[MT] server_DH_inner_data nonce mismatch");if(!bytesCmp(e.serverNonce,l.server_nonce))throw new Error("[MT] server_DH_inner_data serverNonce mismatch");console.log(dT(),"Done decrypting answer"),e.g=l.g,e.dhPrime=l.dh_prime,e.gA=l.g_a,e.serverTime=l.server_time,e.retry=0,p(e.g,e.dhPrime,e.gA);var c=s.getOffset();if(!bytesCmp(a,sha1BytesSync(r.slice(0,c))))throw new Error("[MT] server_DH_inner_data SHA1-hash mismatch");i.applyServerTime(e.serverTime,e.localTime)}function p(e,t,n){console.log(dT(),"Verifying DH params");var i=bytesToHex(t);if(3!=e||"c71caeb9c6b1c9048e6c522f70f13f73980d40238e3e21c14934d037563d930f48198a0aa7c14058229493d22530f4dbfa336f6e0ac925139543aed44cce7c3720fd51f69458705ac68cd4fe6b6b13abdc9746512969328454f18faf8c595f642477fe96bb2a941d5bcd1d4ac8cc49880708fa9b378e3c4f3a9060bee67cf9a4a4a695811051907e162753b56b0f6b410dba74d8a84b2a14b3144e0ef1284754fd17ed950d5965b4b9dd46582db1178d169c6bc465b0d6ff9ca3928fef5b9ae4e418fc15e83ebea0f87fa9ff5eed70050ded2849f47bf959d956850ce929851f0d8115f635b105ee2e4e15d04b2454bf6f4fadf034b10403119cd8e3b92fcc5b"!==i)throw new Error("[MT] DH params are not verified: unknown dhPrime");console.log(dT(),"dhPrime cmp OK");var a=new BigInteger(bytesToHex(n),16),r=new BigInteger(i,16);if(a.compareTo(BigInteger.ONE)<=0)throw new Error("[MT] DH params are not verified: gA <= 1");if(a.compareTo(r.subtract(BigInteger.ONE))>=0)throw new Error("[MT] DH params are not verified: gA >= dhPrime - 1");console.log(dT(),"1 < gA < dhPrime-1 OK");var o=new BigInteger(null);o.fromInt(2);var s=o.pow(1984);if(a.compareTo(s)<0)throw new Error("[MT] DH params are not verified: gA < 2^{2048-64}");if(a.compareTo(r.subtract(s))>=0)throw new Error("[MT] DH params are not verified: gA > dhPrime - 2^{2048-64}");return console.log(dT(),"2^{2048-64} < gA < dhPrime-2^{2048-64} OK"),!0}function f(e){var t=e.deferred,i=bytesFromHex(e.g.toString(16));e.b=new Array(256),n.nextBytes(e.b),a.modPow(i,e.b,e.dhPrime).then(function(n){var i=new TLSerialization({mtproto:!0});i.storeObject({_:"client_DH_inner_data",nonce:e.nonce,server_nonce:e.serverNonce,retry_id:[0,e.retry++],g_b:n},"Client_DH_Inner_Data");var r=sha1BytesSync(i.getBuffer()).concat(i.getBytes()),o=aesEncryptSync(r,e.tmpAesKey,e.tmpAesIv),s=new TLSerialization({mtproto:!0});s.storeMethod("set_client_DH_params",{nonce:e.nonce,server_nonce:e.serverNonce,encrypted_data:o}),console.log(dT(),"Send set_client_DH_params"),l(e.dcID,s.getBuffer()).then(function(n){var i=n.fetchObject("Set_client_DH_params_answer");return"dh_gen_ok"!=i._&&"dh_gen_retry"!=i._&&"dh_gen_fail"!=i._?(t.reject(new Error("[MT] Set_client_DH_params_answer response invalid: "+i._)),!1):bytesCmp(e.nonce,i.nonce)?bytesCmp(e.serverNonce,i.server_nonce)?void a.modPow(e.gA,e.b,e.dhPrime).then(function(n){var a=sha1BytesSync(n),r=a.slice(0,8),o=a.slice(-8);switch(console.log(dT(),"Got Set_client_DH_params_answer",i._),i._){case"dh_gen_ok":var s=sha1BytesSync(e.newNonce.concat([1],r)).slice(-16);if(!bytesCmp(s,i.new_nonce_hash1))return t.reject(new Error("[MT] Set_client_DH_params_answer new_nonce_hash1 mismatch")),!1;var l=bytesXor(e.newNonce.slice(0,8),e.serverNonce.slice(0,8));e.authKeyID=o,e.authKey=n,e.serverSalt=l,t.resolve(e);break;case"dh_gen_retry":var c=sha1BytesSync(e.newNonce.concat([2],r)).slice(-16);return bytesCmp(c,i.new_nonce_hash2)?f(e):(t.reject(new Error("[MT] Set_client_DH_params_answer new_nonce_hash2 mismatch")),!1);case"dh_gen_fail":var d=sha1BytesSync(e.newNonce.concat([3],r)).slice(-16);return bytesCmp(d,i.new_nonce_hash3)?(t.reject(new Error("[MT] Set_client_DH_params_answer fail")),!1):(t.reject(new Error("[MT] Set_client_DH_params_answer new_nonce_hash3 mismatch")),!1)}},function(e){t.reject(e)}):(t.reject(new Error("[MT] Set_client_DH_params_answer server_nonce mismatch")),!1):(t.reject(new Error("[MT] Set_client_DH_params_answer nonce mismatch")),!1)},function(e){t.reject(e)})},function(e){t.reject(e)})}function m(t){if(void 0!==v[t])return v[t];for(var n=[],i=0;i<16;i++)n.push(nextRandomInt(255));if(!e.chooseServer(t))return o.reject(new Error("[MT] No server found for dc "+t));var a={dcID:t,nonce:n,deferred:o.defer()};return s(function(){c(a)}),v[t]=a.deferred.promise,v[t]["catch"](function(){delete v[t]}),v[t]}var h=navigator.userAgent.match(/Chrome\/(\d+(\.\d+)?)/),g=h&&parseFloat(h[1])||!1,_=!("ArrayBufferView"in window)&&(!g||g<30);delete r.defaults.headers.post["Content-Type"],delete r.defaults.headers.common.Accept;var v={};return{auth:m}}]).factory("MtpNetworkerFactory",["MtpDcConfigurator","MtpTimeManager","MtpSecureRandom","Storage","CryptoWorker","AppRuntimeManager","$http","$q","$timeout","$interval","$rootScope",function(e,t,n,i,a,r,o,s,l,c,d){function u(e,t,n,i){i=i||{},this.dcID=e,this.iii=h++,this.authKey=t,this.authKeyUint8=convertToUint8Array(t),this.authKeyBuffer=convertToArrayBuffer(t),this.authKeyID=sha1BytesSync(t).slice(-8),this.serverSalt=n,this.upload=i.fileUpload||i.fileDownload||!1,this.updateSession(),this.lastServerMessages=[],this.currentRequests=0,this.checkConnectionPeriod=0,this.sentMessages={},this.clientMessages=[],this.pendingMessages={},this.pendingAcks=[],this.pendingResends=[],this.connectionInited=!1,this.pendingTimeouts=[],this.longPollInt=c(this.checkLongPoll.bind(this),1e4),this.checkLongPoll(),g||(g=!0,d.offline=!0,d.offlineConnecting=!0),Config.Navigator.mobile&&this.setupMobileSleep()}function p(){_&&(_=!1,m({_:"new_session_created"},!0))}function f(){_=!0}var m,h=0,g=!1,_=!1,v=navigator.userAgent.match(/Chrome\/(\d+(\.\d+)?)/),y=v&&parseFloat(v[1])||!1,b=!("ArrayBufferView"in window)&&(!y||y<30);return delete o.defaults.headers.post["Content-Type"],delete o.defaults.headers.common.Accept,d.retryOnline=function(){$(document.body).trigger("online")},u.prototype.updateSession=function(){this.seqNo=0,this.prevSessionID=this.sessionID,this.sessionID=new Array(8),n.nextBytes(this.sessionID)},u.prototype.setupMobileSleep=function(){var e=this;d.$watch("idle.isIDLE",function(t){t?e.sleepAfter=tsNow()+3e4:(delete e.sleepAfter,e.checkLongPoll())}),d.$on("push_received",function(){e.sleepAfter&&(e.sleepAfter=tsNow()+3e4,e.checkLongPoll())})},u.prototype.updateSentMessage=function(e){var n=this.sentMessages[e];if(!n)return!1;var i=this;if(n.container){var a=[];angular.forEach(n.inner,function(e){var t=i.updateSentMessage(e);t&&a.push(t.msg_id)}),n.inner=a}return n.msg_id=t.generateID(),n.seq_no=this.generateSeqNo(n.notContentRelated||n.container),this.sentMessages[n.msg_id]=n,delete i.sentMessages[e],n},u.prototype.generateSeqNo=function(e){var t=2*this.seqNo;return e||(t++,this.seqNo++),t},u.prototype.wrapMtpCall=function(e,n,i){var a=new TLSerialization({mtproto:!0});a.storeMethod(e,n);var r=t.generateID(),o=this.generateSeqNo(),s={msg_id:r,seq_no:o,body:a.getBytes()};return Config.Modes.debug&&console.log(dT(),"MT call",e,n,r,o),this.pushMessage(s,i)},u.prototype.wrapMtpMessage=function(e,n){n=n||{};var i=new TLSerialization({mtproto:!0});i.storeObject(e,"Object");var a=t.generateID(),r=this.generateSeqNo(n.notContentRelated),o={msg_id:a,seq_no:r,body:i.getBytes()};return Config.Modes.debug&&console.log(dT(),"MT message",e,a,r),this.pushMessage(o,n)},u.prototype.wrapApiCall=function(e,n,i){var a=new TLSerialization(i);this.connectionInited||(a.storeInt(3667594509,"invokeWithLayer"),a.storeInt(Config.Schema.API.layer,"layer"),a.storeInt(1769565673,"initConnection"),a.storeInt(Config.App.id,"api_id"),a.storeString(navigator.userAgent||"Unknown UserAgent","device_model"),a.storeString(navigator.platform||"Unknown Platform","system_version"),a.storeString(Config.App.version,"app_version"),a.storeString(navigator.language||"en","lang_code")),i.afterMessageID&&(a.storeInt(3416209197,"invokeAfterMsg"),a.storeLong(i.afterMessageID,"msg_id")),i.resultType=a.storeMethod(e,n);var r=t.generateID(),o=this.generateSeqNo(),s={msg_id:r,seq_no:o,body:a.getBytes(!0),isAPI:!0};return Config.Modes.debug?console.log(dT(),"Api call",e,n,r,o,i):console.log(dT(),"Api call",e),this.pushMessage(s,i)},u.prototype.checkLongPoll=function(e){var t=this.cleanupSent();if(this.longPollPending&&tsNow()n.sleepAfter)||n.sendLongPoll()})},u.prototype.sendLongPoll=function(){var e=25e3,t=this;this.longPollPending=tsNow()+e,this.wrapMtpCall("http_wait",{max_delay:500,wait_after:150,max_wait:e},{noResponse:!0,longPoll:!0}).then(function(){delete t.longPollPending,setZeroTimeout(t.checkLongPoll.bind(t))},function(){console.log("Long-poll failed")})},u.prototype.pushMessage=function(e,t){var n=s.defer();return this.sentMessages[e.msg_id]=angular.extend(e,t||{},{deferred:n}),this.pendingMessages[e.msg_id]=0,t&&t.noShedule||this.sheduleRequest(),angular.isObject(t)&&(t.messageID=e.msg_id),n.promise},u.prototype.pushResend=function(e,t){var n=t?tsNow()+t:0,i=this.sentMessages[e];if(i.container)for(var a=0;a=l){if(r=f.sentMessages[t]){var n=(r.body.byteLength||r.body.length)+32;if(!r.notContentRelated&&u)return;if(!r.notContentRelated&&s&&s+n>655360)return void(u=!0);if(r.singleInRequest&&(p++,p>1))return;o.push(r),s+=n,r.isAPI?c=!0:r.longPoll&&(d=!0)}delete f.pendingMessages[t]}}),c&&!d){var m=new TLSerialization({mtproto:!0});m.storeMethod("http_wait",{max_delay:500,wait_after:150,max_wait:3e3}),o.push({msg_id:t.generateID(),seq_no:this.generateSeqNo(),body:m.getBytes()})}if(o.length){var h=[];if(o.length>1){var g=new TLSerialization({mtproto:!0,startMaxLength:s+64});g.storeInt(1945237724,"CONTAINER[id]"),g.storeInt(o.length,"CONTAINER[count]");for(var v=[],n=0;n1)&&this.sheduleRequest()}},u.prototype.getEncryptedMessage=function(e){var t=this;return a.sha1Hash(e).then(function(n){var i=new Uint8Array(n).subarray(4,20);return t.getMsgKeyIv(i,!0).then(function(t){return a.aesEncrypt(e,t[0],t[1]).then(function(e){return{bytes:e,msgKey:i}})})})},u.prototype.getDecryptedMessage=function(e,t){return this.getMsgKeyIv(e,!1).then(function(e){return a.aesDecrypt(t,e[0],e[1])})},u.prototype.sendEncryptedRequest=function(t,n){var i=this;n=n||{};var a=new TLSerialization({startMaxLength:t.body.length+64});return a.storeIntBytes(this.serverSalt,64,"salt"),a.storeIntBytes(this.sessionID,64,"session_id"),a.storeLong(t.msg_id,"message_id"),a.storeInt(t.seq_no,"seq_no"),a.storeInt(t.body.length,"message_data_length"),a.storeRawBytes(t.body,"message_data"),this.getEncryptedMessage(a.getBuffer()).then(function(t){var a=new TLSerialization({startMaxLength:t.bytes.byteLength+256});a.storeIntBytes(i.authKeyID,64,"auth_key_id"),a.storeIntBytes(t.msgKey,128,"msg_key"),a.storeRawBytes(t.bytes,"encrypted_data");var r,l=b?a.getBuffer():a.getArray(),c=e.chooseServer(i.dcID,i.upload),d={code:406,type:"NETWORK_BAD_RESPONSE",url:c};try{n=angular.extend(n||{},{responseType:"arraybuffer",transformRequest:null}),r=o.post(c,l,n)}catch(u){r=s.reject(u)}return r.then(function(e){return e.data&&e.data.byteLength?e:s.reject(d)},function(e){return e.message||e.type||(e=angular.extend(d,{type:"NETWORK_BAD_REQUEST",originalError:e})),s.reject(e)})})},u.prototype.parseResponse=function(e){var t=this,n=new TLDeserialization(e),i=n.fetchIntBytes(64,!1,"auth_key_id");if(!bytesCmp(i,this.authKeyID))throw new Error("[MT] Invalid server auth_key_id: "+bytesToHex(i));var r=n.fetchIntBytes(128,!0,"msg_key"),o=n.fetchRawBytes(e.byteLength-n.getOffset(),!0,"encrypted_data");return this.getDecryptedMessage(r,o).then(function(e){var n=new TLDeserialization(e,{mtproto:!0}),i=(n.fetchIntBytes(64,!1,"salt"),n.fetchIntBytes(64,!1,"session_id")),o=n.fetchLong("message_id");if(!(bytesCmp(i,t.sessionID)||t.prevSessionID&&bytesCmp(i,t.prevSessionID)))throw console.warn("Sessions",i,t.sessionID,t.prevSessionID),new Error("[MT] Invalid server session_id: "+bytesToHex(i));var s=n.fetchInt("seq_no"),l=n.getOffset(),c=e.byteLength,d=n.fetchInt("message_data[length]");if(d%4||d>c-l)throw new Error("[MT] Invalid body length: "+d);var u=n.fetchRawBytes(d,!0,"message_data"),l=n.getOffset(),p=c-l;if(p<0||p>15)throw new Error("[MT] Invalid padding length: "+p);var f=convertToUint8Array(e).subarray(0,l);return a.sha1Hash(f).then(function(e){if(!bytesCmp(r,bytesFromArrayBuffer(e).slice(-16)))throw console.warn(r,bytesFromArrayBuffer(e)),new Error("[MT] server msgKey mismatch");var n=bytesToArrayBuffer(u),a={mtproto:!0,override:{mt_message:function(e,t){e.msg_id=this.fetchLong(t+"[msg_id]"),e.seqno=this.fetchInt(t+"[seqno]"),e.bytes=this.fetchInt(t+"[bytes]");var n=this.getOffset();try{e.body=this.fetchObject("Object",t+"[body]")}catch(i){console.error(dT(),"parse error",i.message,i.stack),e.body={_:"parse_error",error:i}}this.offset!=n+e.bytes&&(this.offset=n+e.bytes)},mt_rpc_result:function(e,n){e.req_msg_id=this.fetchLong(n+"[req_msg_id]");var i=t.sentMessages[e.req_msg_id],a=i&&i.resultType||"Object";e.req_msg_id&&!i||(e.result=this.fetchObject(a,n+"[result]"))}}},l=new TLDeserialization(n,a),c=l.fetchObject("","INPUT");return{response:c,messageID:o,sessionID:i,seqNo:s}})})},u.prototype.applyServerSalt=function(e){var t=longToBytes(e),n={};return n["dc"+this.dcID+"_server_salt"]=bytesToHex(t),i.set(n),this.serverSalt=t,!0},u.prototype.sheduleRequest=function(e){this.offline&&this.checkConnection("forced shedule");var t=tsNow()+e;return!(e&&this.nextReq&&this.nextReq<=t)&&(l.cancel(this.nextReqPromise),e>0?this.nextReqPromise=l(this.performSheduledRequest.bind(this),e||0):setZeroTimeout(this.performSheduledRequest.bind(this)),void(this.nextReq=t))},u.prototype.ackMessage=function(e){this.pendingAcks.push(e),this.sheduleRequest(3e4)},u.prototype.reqResendMessage=function(e){console.log(dT(),"Req resend",e),this.pendingResends.push(e),this.sheduleRequest(100)},u.prototype.cleanupSent=function(){var e=this,t=!1;return angular.forEach(this.sentMessages,function(n,i){if(n.notContentRelated&&void 0===e.pendingMessages[i])delete e.sentMessages[i];else if(n.container){for(var a=0;a100&&this.lastServerMessages.shift(),this.processMessage(e.body,e.msg_id,a);break;case"new_session_created":this.ackMessage(n),this.processMessageAck(e.first_msg_id),this.applyServerSalt(e.server_salt);var d=this;i.get("dc").then(function(t){t==d.dcID&&!d.upload&&m&&m(e,!0)});break;case"msgs_ack":for(var s=0;s5?"[.."+e.result.length+"..]":e.result),console.log(dT(),"Rpc response",_)}l.deferred.resolve(e.result)}l.isAPI&&(this.connectionInited=!0)}delete this.sentMessages[f]}break;default:this.ackMessage(n),m&&m(e,!0)}},{getNetworker:function(e,t,n,i){return new u(e,t,n,i)},setUpdatesProcessor:function(e){m=e},stopAll:f,startAll:p}}]),angular.module("izhukov.mtproto.wrapper",["izhukov.utils","izhukov.mtproto"]).factory("MtpApiManager",["Storage","MtpAuthorizer","MtpNetworkerFactory","MtpSingleInstanceService","AppRuntimeManager","ErrorService","qSync","$rootScope","$q","WebPushApiManager","TelegramMeWebService",function(e,t,n,i,a,r,o,s,l,c,d){function u(e){y!==e&&(y=e,d.setAuthorized(y))}function p(t,n){var i=angular.extend({dcID:t},n);e.set({dc:t,user_auth:i}),u(!0),s.$broadcast("user_auth",i),M=t}function f(){for(var t=[],n=1;n<=5;n++)t.push("dc"+n+"_auth_key");return c.forceUnsubscribe(),e.get(t).then(function(n){for(var i=[],a=0;a=i.stopTime)return d(r)}else i.stopTime=_+1e3*(void 0!==i.timeout?i.timeout:10);i.waitTime=i.waitTime?Math.min(60,1.5*i.waitTime):1,setTimeout(function(){m(s)},1e3*i.waitTime)}else{var v=r.type.match(/^FLOOD_WAIT_(\d+)/)[1]||10;if(v>(i.timeout||60))return d(r);setTimeout(function(){m(s)},1e3*v)}})};return(o=i.dcID||M)?h(o,i).then(m,d):e.get("dc").then(function(e){h(o=e||2,i).then(m,d)}),c.promise}function _(){return e.get("user_auth").then(function(e){return u(e&&e.id>0||!1),e.id||0})}function v(){return M||!1}var y,b={},w={},k={},M=!1;return i.start(),e.get("dc").then(function(e){e&&(M=e)}),{getBaseDcID:v,getUserID:_,invokeApi:g,getNetworker:h,setUserAuth:p,logOut:f}}]).factory("MtpApiFileManager",["MtpApiManager","$q","qSync","FileManager","IdbFileStorage","TmpfsFileStorage","MemoryFileStorage","WebpManager",function(e,t,n,i,a,r,o,s){function l(e,n,i){void 0===w[e]&&(w[e]=[],k[e]=0);var a=w[e],r=t.defer();return a.push({cb:n,deferred:r,activeDelta:i}),setZeroTimeout(function(){c(e)}),r.promise}function c(e){var t=w[e],n="upload"==e?11:5;if(k[e]>=n||!t||!t.length)return!1;var i=t.shift(),a=i.activeDelta||1;k[e]+=a;M++;i.cb().then(function(t){k[e]-=a,c(e),i.deferred.resolve(t)},function(t){k[e]-=a,c(e),i.deferred.reject(t)})}function d(e){switch(e._){case"inputDocumentFileLocation":var t=(e.file_name||"").split(".",2),n=t[1]||"";e.sticker&&!s.isWebpSupported()&&(n+=".png");var i=e.version?"v"+e.version:"";return t[0]+"_"+e.id+i+"."+n;default:e.volume_id||console.trace("Empty location",e);var n="jpg";return e.sticker&&(n=s.isWebpSupported()?"webp":"png"),e.volume_id+"_"+e.local_id+"_"+e.secret+"."+n}}function u(e){if(!e)return!1;var t=d(e);return b[t]||!1}function p(){if(!Config.Modes.memory_only){if(r.isAvailable())return r;if(a.isAvailable())return a}return o}function f(e,t){var n=d(e);return v[n]||(v[n]=p().saveFile(n,t).then(function(e){return b[n]=e},function(e){delete v[n]})),v[n]}function m(a){if(!i.isAvailable())return t.reject({type:"BROWSER_BLOB_NOT_SUPPORTED"});var r=d(a),o=a.sticker?"image/webp":"image/jpeg",c=v[r]||y[r];if(c)return c;var u=p();return y[r]=u.getFile(r).then(function(e){return b[r]=e},function(){var t=l(a.dc_id,function(){var t=a;return t._&&"fileLocation"!=t._||(t=angular.extend({},a,{_:"inputFileLocation"})),e.invokeApi("upload.getFile",{location:t,offset:0,limit:1048576},{dcID:a.dc_id,fileDownload:!0,createNetworker:!0,noErrorBox:!0})}),c=function(e){return!a.sticker||s.isWebpSupported()?n.when(e):s.getPngBlobFromWebp(e)};return u.getFileWriter(r,o).then(function(e){return t.then(function(t){return c(t.bytes).then(function(t){return i.write(e,t).then(function(){return b[r]=e.finalize()})})})})})}function h(e,t){var n=p(),i=d(e);return n.getFile(i,t)}function g(a,r,o,c){if(!i.isAvailable())return t.reject({type:"BROWSER_BLOB_NOT_SUPPORTED"});c=c||{};var u=!1;r.sticker&&!s.isWebpSupported()&&(c.toFileEntry||o>524288?delete r.sticker:(u=!0,c.mime="image/png"));var f=d(r),m=c.toFileEntry||null,h=v[f]||y[f],g=p();if(h)return m?h.then(function(e){return i.copy(e,m)}):h;var _,w=t.defer(),k=!1,M=!1,S=c.mime||"image/jpeg",A=function(e){w.reject(e),A=angular.noop,!_||e&&"DOWNLOAD_CANCELED"==e.type||_.truncate(0)};return g.getFile(f,o).then(function(e){m?i.copy(e,m).then(function(){w.resolve()},A):w.resolve(b[f]=e)},function(){var c=m?i.getFileWriter(m):g.getFileWriter(f,S),d=function(e){return u?s.getPngBlobFromWebp(e):n.when(e)};c.then(function(n){_=n;var s,c,u=524288,p=0,h=t.when();if(n.length){if(p=n.length,p>=o)return void(m?w.resolve():w.resolve(b[f]=n.finalize()));n.seek(p),w.notify({done:p,total:o})}for(s=p;s=o,s,c,h),h=c.promise})}),w.promise.cancel=function(){k||M||(k=!0,delete y[f],A({type:"DOWNLOAD_CANCELED"}))},m||(y[f]=w.promise),w.promise}function _(n){var i=n.size,a=i>=10485760,r=!1,o=!1,s=0,c=262144,d=2;i>67108864?(c=524288,d=4):i<102400&&(c=32768,d=1);var u=Math.ceil(i/c);if(u>3e3)return t.reject({type:"FILE_TOO_BIG"});var p,f=[nextRandomInt(4294967295),nextRandomInt(4294967295)],m=t.defer(),h=function(e){m.reject(e),r=!0,h=angular.noop},g=0,_={_:a?"inputFileBig":"inputFile",id:f,parts:u,name:n.name,md5_checksum:""};for(p=0;p=u?(m.resolve(_),o=!0):(console.log(dT(),"Progress",s*c/i),m.notify({done:s*c,total:i}))},h))},d.readAsArrayBuffer(v),l.promise},d)}(p,g++);return m.promise.cancel=function(){console.log("cancel upload",r,o),r||o||(r=!0,h({type:"UPLOAD_CANCELED"}))},m.promise}var v={},y={},b={},w={},k={},M=0;return{getCachedFile:u,getDownloadedFile:h,downloadFile:g,downloadSmallFile:m,saveSmallFile:f,uploadFile:_}}]).service("MtpSingleInstanceService",["_","$rootScope","$compile","$timeout","$interval","$modalStack","Storage","AppRuntimeManager","IdleManager","ErrorService","MtpNetworkerFactory",function(e,t,n,i,a,r,o,s,l,c,d){function u(){if(!g&&!Config.Navigator.mobile&&!Config.Modes.packed){g=!0,l.start(),t.$watch("idle.isIDLE",m),a(m,5e3),m();try{$($window).on("beforeunload",p)}catch(e){}}}function p(){_&&!y&&(console.warn("clear master instance"),o.remove("xt_instance"))}function f(){if(_||y)return!1;console.log(dT(),"deactivate"),v=!1,y=!0,p(),r.dismissAll(),document.title=e("inactive_tab_title_raw");var i=n(""),a=t.$new(!0);a.close=function(){s.close()},a.reload=function(){s.reload()},i(a,function(e){$(".page_wrap").hide(),$(e).appendTo($("body"))}),t.idle.deactivated=!0}function m(){if(y)return!1;var e=tsNow(),n=t.idle&&t.idle.isIDLE,a={id:h,idle:n,time:e};o.get("xt_instance").then(function(t){!n||!t||t.id==h||t.time=1e3?void r.resolve(o):void this["continue"]()},t.onerror=function(e){console.log("phonebook error",e,e.type,e.message),r.reject(e)},r.promise}return{isAvailable:a,openPhonebookImport:r,getPhonebookContacts:o}}]).service("AppChatsManager",["$q","$rootScope","$modal","_","MtpApiManager","AppUsersManager","AppPhotosManager","RichTextProcessor",function(e,t,n,i,a,r,o,s){function l(e){angular.forEach(e,c)}function c(e){if(angular.isObject(e)){e.rTitle=s.wrapRichText(e.title,{noLinks:!0,noLinebreaks:!0})||i("chat_title_deleted");var n=A[e.id],a=SearchIndexManager.cleanSearchText(e.title||"").split(" "),r=a.shift(),o=a.pop();if(e.initials=r.charAt(0)+(o?o.charAt(0):r.charAt(1)),e.num=Math.abs(e.id>>1)%8+1,void 0===e.pFlags&&(e.pFlags={}),!e.pFlags.min||void 0===n){if(e.username){var l=SearchIndexManager.cleanUsername(e.username);T[l]=e.id}void 0===n?n=A[e.id]=e:(safeReplaceObject(n,e),t.$broadcast("chat_update",e.id)),void 0!==$[e.id]&&safeReplaceObject($[e.id],e&&e.photo&&e.photo.photo_small||{empty:!0})}}}function d(e){return A[e]||{id:e,deleted:!0,access_hash:C[e]}}function u(e,t){if(void 0===A[e])return!1;var n=d(e);if("chatForbidden"==n._||"channelForbidden"==n._||n.pFlags.kicked||n.pFlags.left)return!1;if(n.pFlags.creator)return!0;switch(t){case"send":if("channel"==n._&&!n.pFlags.megagroup&&!n.pFlags.editor)return!1;break;case"edit_title":case"edit_photo":case"invite":if("channel"==n._){if(!n.pFlags.megagroup)return!1;if(!(n.pFlags.editor||"invite"==t&&n.pFlags.democracy))return!1}else if(n.pFlags.admins_enabled&&!n.pFlags.admin)return!1}return!0}function p(e){return T[e]||0}function f(e,t){C[e]=t}function m(e){E[e]=!0}function h(e){var t=A[e];return!((!t||"channel"!=t._&&"channelForbidden"!=t._)&&!C[e])}function g(e){if(E[e])return!0;var t=A[e];return!(!t||"channel"!=t._||!t.pFlags.megagroup)}function _(e){return h(e)&&!g(e)}function v(e){return e||0}function y(e){return e?{_:"inputChannel",channel_id:e,access_hash:d(e).access_hash||C[e]||0}:{_:"inputChannelEmpty"}}function b(e,t){var n=A[e];return angular.isObject(n)&&(t||!n.pFlags.min)}function w(e){var t=d(e);return void 0===$[e]&&($[e]=t&&t.photo&&t.photo.photo_small||{empty:!0}),{placeholder:"img/placeholders/GroupAvatar"+Math.ceil(t.num/2)+"@2x.png",location:$[e]}}function k(e){var t=d(e);return h(e)?(g(e)?"s":"c")+e+"_"+t.access_hash:"g"+e}function M(e,t){var n=angular.copy(t),i=d(e);if(n.participants&&"chatParticipants"==n.participants._&&a.getUserID().then(function(e){var t=i.pFlags.creator||i.pFlags.admins_enabled&&i.pFlags.admin;angular.forEach(n.participants.participants,function(n){n.canLeave=e==n.user_id,n.canKick=!n.canLeave&&(i.pFlags.creator||"chatParticipant"==n._&&(t||e==n.inviter_id)),n.user=r.getUser(n.user_id)})}),n.participants&&"channelParticipants"==n.participants._){var o=i.pFlags.creator||i.pFlags.editor||i.pFlags.moderator;angular.forEach(n.participants.participants,function(e){e.canLeave=!i.pFlags.creator&&"channelParticipantSelf"==e._,e.canKick=o&&"channelParticipant"==e._,e.user=r.getUser(e.user_id)})}return n.about&&(n.rAbout=s.wrapRichText(n.about,{noLinebreaks:!0})),n.peerString=k(e),n.chat=i,n}function S(e,i){var a=t.$new();if(a.chatID=e,h(e)){n.open({templateUrl:templateUrl("channel_modal"),controller:"ChannelModalController",scope:a,windowClass:"chat_modal_window channel_modal_window mobile_modal"})}else{n.open({templateUrl:templateUrl("chat_modal"),controller:"ChatModalController",scope:a,windowClass:"chat_modal_window mobile_modal"})}}var A={},T={},C={},E={},$={};return t.$on("apiUpdate",function(e,n){switch(n._){case"updateChannel":var i=n.channel_id;t.$broadcast("channel_settings",{channelID:i})}}),{saveApiChats:l,saveApiChat:c,getChat:d,isChannel:h,isMegagroup:g,isBroadcast:_,hasRights:u,saveChannelAccess:f,saveIsMegagroup:m,getChatInput:v,getChannelInput:y,getChatPhoto:w,getChatString:k,resolveUsername:p,hasChat:b,wrapForFull:M,openChat:S}}]).service("AppPeersManager",["$q","qSync","AppUsersManager","AppChatsManager","MtpApiManager",function(e,t,n,i,a){function r(e){var t=e.charAt(0),a=e.substr(1).split("_");return"u"==t?(n.saveUserAccess(a[0],a[1]),{_:"inputPeerUser",user_id:a[0],access_hash:a[1]}):"c"==t||"s"==t?(i.saveChannelAccess(a[0],a[1]),"s"==t&&i.saveIsMegagroup(a[0]),{_:"inputPeerChannel",channel_id:a[0],access_hash:a[1]||0}):{_:"inputPeerChat",chat_id:a[0]}}function o(e){if(!e)return{_:"inputPeerEmpty"};if(e<0){var t=-e;return i.isChannel(t)?{_:"inputPeerChannel",channel_id:t,access_hash:i.getChat(t).access_hash||0}:{_:"inputPeerChat",chat_id:t}}return{_:"inputPeerUser",user_id:e,access_hash:n.getUser(e).access_hash||0}}function s(e){var t;if(e>0)t="%pu "+n.getUserSearchText(e);else if(e<0){var a=i.getChat(-e);t="%pg "+(a.title||"")}return t}function l(e){return e>0?n.getUserString(e):i.getChatString(-e)}function c(e){if(e>0)return{_:"peerUser",user_id:e};var t=-e;return i.isChannel(t)?{_:"peerChannel",channel_id:t}:{_:"peerChat",chat_id:t}}function d(e){var r=SearchIndexManager.cleanUsername(e);if(r.match(/^\d+$/))return t.when(!1);var o,s,l;return(o=n.resolveUsername(r))&&(l=n.getUser(o).username,SearchIndexManager.cleanUsername(l)==r)?t.when(o):(s=i.resolveUsername(r))&&(l=i.getChat(s).username,SearchIndexManager.cleanUsername(l)==r)?t.when(-s):a.invokeApi("contacts.resolveUsername",{username:e}).then(function(e){return n.saveApiUsers(e.users),i.saveApiChats(e.chats),u(e.peer)})}function u(e){if(angular.isObject(e))return e.user_id?e.user_id:-(e.channel_id||e.chat_id);var t="u"==e.charAt(0),n=e.substr(1).split("_");return t?n[0]:-n[0]||0}function p(e){return e>0?n.getUser(e):i.getChat(-e)}function f(e){return e>0?n.getUserPhoto(e):i.getChatPhoto(-e)}function m(e){return e<0&&i.isChannel(-e)}function h(e){return e<0&&i.isMegagroup(-e)}function g(e){return e<0&&!i.isBroadcast(-e)}function _(e){return m(e)&&!h(e)}function v(e){return e>0&&n.isBot(e)}return{getInputPeer:r,getInputPeerByID:o,getPeerSearchText:s,getPeerString:l,getOutputPeer:c,getPeerID:u,getPeer:p,getPeerPhoto:f,resolveUsername:d,isChannel:m,isAnyGroup:g,isMegagroup:h,isBroadcast:_,isBot:v}}]).service("AppProfileManager",["$q","$rootScope","AppUsersManager","AppChatsManager","AppPeersManager","AppPhotosManager","NotificationsManager","MtpApiManager","ApiUpdatesManager","RichTextProcessor",function(e,t,n,i,a,r,o,s,l,c){function d(e){var t=e&&e.user_id;if(!t)return!1;var n={};return angular.forEach(e.commands,function(e){n[e.command]=e.description}),_[t]={id:t,version:e.version,shareText:e.share_text,description:e.description,commands:n}}function u(e,t){return s.invokeApi("users.getFullUser",{id:n.getUserInput(e)}).then(function(i){return t&&t.phone_number?(i.user.phone=t.phone_number,(t.first_name||t.last_name)&&(i.user.first_name=t.first_name,i.user.last_name=t.last_name),n.saveApiUser(i.user)):n.saveApiUser(i.user,!0),i.profile_photo&&r.savePhoto(i.profile_photo,{user_id:e}),void 0!==i.about&&(i.rAbout=c.wrapRichText(i.about,{noLinebreaks:!0})),o.savePeerSettings(e,i.notify_settings),i.bot_info&&(i.bot_info=d(i.bot_info)),i})}function p(t){var i=[];return t>=0&&!n.isBot(t)||a.isChannel(t)&&!a.isMegagroup(t)?e.when(i):t>=0?u(t).then(function(e){var t=e.bot_info;return t&&"botInfoEmpty"!=t._&&i.push(t),i}):f(-t).then(function(e){return angular.forEach(e.bot_info,function(e){i.push(d(e))}),i})}function f(a){if(i.isChannel(a))return g(a);if(void 0!==v[a]){var l=i.getChat(a);if(l.version==v[a].participants.version||l.pFlags.left)return e.when(v[a])}return void 0!==y[a]?y[a]:y[a]=s.invokeApi("messages.getFullChat",{chat_id:i.getChatInput(a)}).then(function(e){i.saveApiChats(e.chats),n.saveApiUsers(e.users);var s=e.full_chat;return s&&s.chat_photo.id&&r.savePhoto(s.chat_photo),o.savePeerSettings(-a,s.notify_settings),delete y[a],v[a]=s,t.$broadcast("chat_full_update",a),s})}function m(e,t){return f(e).then(function(n){if(!t&&n.exported_invite&&"chatInviteExported"==n.exported_invite._)return n.exported_invite.link;var a;return a=i.isChannel(e)?s.invokeApi("channels.exportInvite",{channel:i.getChannelInput(e)}):s.invokeApi("messages.exportChatInvite",{chat_id:i.getChatInput(e)}),a.then(function(t){return void 0!==v[e]&&(v[e].exported_invite=t),t.link})})}function h(e){return s.invokeApi("channels.getParticipants",{channel:i.getChannelInput(e),filter:{_:"channelParticipantsRecent"},offset:0,limit:i.isMegagroup(e)?50:200}).then(function(t){n.saveApiUsers(t.users);var a=t.participants,r=i.getChat(e);if(!r.pFlags.kicked&&!r.pFlags.left){for(var o,s=n.getSelf().id,l=!1,c=0,d=a.length;c800&&(i-=208);var o=l(n,i,r);o&&!o.preloaded&&(o.preloaded=!0,o.size?a.downloadFile(o.location.dc_id,{_:"inputFileLocation",volume_id:o.location.volume_id,local_id:o.location.local_id,secret:o.location.secret},o.size):a.downloadSmallFile(o.location))}}function u(e){return g[e]||{_:"photoEmpty"}}function p(e,t){t=t||{};var n=angular.copy(g[e])||{_:"photoEmpty"},i=t.website?64:Math.min(_-80,Config.Mobile?210:260),a=t.website?64:Math.min(v-100,Config.Mobile?210:260),r=l(n,i,a),o={placeholder:"img/placeholders/PhotoThumbConversation.gif",width:i,height:a};if(t.website&&Config.Mobile&&(i=50,a=50),r&&"photoSizeEmpty"!=r._){var s=calcImageInBox(r.w,r.h,i,a);o.width=s.w,o.height=s.h,o.location=r.location,o.size=r.size}else o.width=100,o.height=100;return n.thumb=o,n}function f(e){var n=p(e),i=$(window).width()-(Config.Mobile?0:32),a=$(t).height()-(Config.Mobile?0:116);!Config.Mobile&&i>800&&(i-=208);var r=l(n,i,a),o={placeholder:"img/placeholders/PhotoThumbModal.gif"};if(o.width=i,o.height=a,r&&"photoSizeEmpty"!=r._){var s=calcImageInBox(r.w,r.h,i,a,!0);o.width=s.w,o.height=s.h,o.modalWidth=Math.max(o.width,Math.min(400,i)),o.location=r.location,o.size=r.size}return n.full=o,n}function m(t,i){if(!t||"0"===t)return!1;var a=n.$new(!0);a.photoID=t;var r="PhotoModalController";i&&i.p>0?(r="UserpicModalController",a.userID=i.p):i&&i.p<0?(r="ChatpicModalController",a.chatID=-i.p):i&&i.m>0&&(a.messageID=i.m,i.w&&(a.webpageID=i.w));e.open({templateUrl:templateUrl("photo_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:r,scope:a,windowClass:"photo_modal_window"})}function h(e){var n=g[e],i="jpg",r="image/jpeg",s="photo"+e+"."+i,c=Math.max(screen.width||0,$(window).width()-36,800),d=Math.max(screen.height||0,$(t).height()-150,800),u=l(n,c,d),p={_:"inputFileLocation",volume_id:u.location.volume_id,local_id:u.location.local_id,secret:u.location.secret};o.chooseSave(s,i,r).then(function(e){e&&a.downloadFile(u.location.dc_id,p,u.size,{mime:r,toFileEntry:e}).then(function(){},function(e){console.log("photo download failed",e)})},function(){var e=a.getCachedFile(p);return e?o.download(e,r,s):void a.downloadFile(u.location.dc_id,p,u.size,{mime:r}).then(function(e){o.download(e,r,s)},function(e){console.log("photo download failed",e)})})}var g={},_=$(window).width(),v=$(window).height();return n.preloadPhoto=d,n.openPhoto=m,{savePhoto:s,preloadPhoto:d,getUserPhotos:c,getPhoto:u,choosePhotoSize:l,wrapForHistory:p,wrapForFull:f,openPhoto:m,downloadPhoto:h}}]).service("AppWebPagesManager",["$modal","$sce","$window","$rootScope","MtpApiManager","AppPhotosManager","AppDocsManager","RichTextProcessor",function(e,t,n,i,a,r,o,s){function l(e,t,n){e.photo&&"photo"===e.photo._?r.savePhoto(e.photo,n):delete e.photo,e.document&&"document"===e.document._?o.saveDoc(e.document,n):("document"==e.type&&delete e.type,delete e.document);var a=e.site_name,l=e.title||e.author||a||"";a&&l==a&&delete e.site_name,l.length>100&&(l=l.substr(0,80)+"..."),e.rTitle=s.wrapRichText(l,{noLinks:!0,noLinebreaks:!0});var c="";if("GitHub"==a){var d=e.url.match(/(https?:\/\/github\.com\/[^\/]+\/[^\/]+)/);d&&(c=d[0]+"/issues/{1}")}var u=e.description||"";if(u.length>180&&(u=u.substr(0,150).replace(/(\n|\s)+$/,"")+"..."),e.rDescription=s.wrapRichText(u,{contextSite:a||"external",contextHashtag:c}),"photo"!=e.type&&"video"!=e.type&&"gif"!=e.type&&"document"!=e.type&&!e.description&&e.photo&&(e.type="photo"),t&&(void 0===f[e.id]&&(f[e.id]={}),f[e.id][t]=!0,p[e.id]=e),void 0===p[e.id]?p[e.id]=e:safeReplaceObject(p[e.id],e),!t&&void 0!==f[e.id]){var m=[];angular.forEach(f[e.id],function(e,t){m.push(t)}),i.$broadcast("webpage_updated",{id:e.id,msgs:m})}}function c(t,n){var a=i.$new(!0);a.webpageID=t,a.messageID=n,e.open({templateUrl:templateUrl("embed_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:"EmbedModalController",scope:a,windowClass:"photo_modal_window"})}function d(e){var t=angular.copy(p[e])||{_:"webPageEmpty"};return t.photo&&t.photo.id&&(t.photo=r.wrapForHistory(t.photo.id,{website:"photo"!=t.type&&"video"!=t.type})),t.document&&t.document.id&&(t.document=o.wrapForHistory(t.document.id)),t}function u(e){var i=d(e);if(!i.embed_url)return i;var a=$(window).width()-(Config.Mobile?0:10),r=$(n).height()-(Config.Mobile?92:150);!Config.Mobile&&a>800&&(a-=208);var o={width:a,height:r};if(i.embed_width&&i.embed_height){var s=calcImageInBox(i.embed_width,i.embed_height,a,r);o.width=s.w,o.height=s.h}else o.height=o.width=Math.min(a,r);var l=Config.Modes.chrome_packed?"webview":"iframe",c="iframe"!=i.embed_type?i.embed_type||"text/html":"text/html",u="<"+l+' src="'+encodeEntities(i.embed_url)+'" type="'+encodeEntities(c)+'" frameborder="0" border="0" webkitallowfullscreen mozallowfullscreen allowfullscreen width="'+o.width+'" height="'+o.height+'" style="width: '+o.width+"px; height: "+o.height+'px;">";return o.html=t.trustAs("html",u),i.full=o,i}var p={},f={};return i.$on("apiUpdate",function(e,t){switch(t._){case"updateWebPage":l(t.webpage)}}),{saveWebPage:l,openEmbed:c,wrapForFull:u,wrapForHistory:d}}]).service("AppGamesManager",["$modal","$sce","$window","$rootScope","MtpApiManager","AppPhotosManager","AppDocsManager","RichTextProcessor",function(e,t,n,i,a,r,o,s){function l(e,t,n){e.photo&&"photo"===e.photo._?r.savePhoto(e.photo,n):delete e.photo,e.document&&"document"===e.document._?o.saveDoc(e.document,n):delete e.document,e.rTitle=s.wrapRichText(e.title,{noLinks:!0,noLinebreaks:!0}),e.rDescription=s.wrapRichText(e.description||"",{}),void 0===p[e.id]?p[e.id]=e:safeReplaceObject(p[e.id],e)}function c(t,n,a){var r=i.$new(!0);r.gameID=t,r.messageID=n,r.embedUrl=a,e.open({templateUrl:templateUrl("game_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:"GameModalController",scope:r,windowClass:"photo_modal_window mobile_modal"})}function d(e){var t=angular.copy(p[e])||{_:"gameEmpty"};return t.photo&&t.photo.id&&(t.photo=r.wrapForHistory(t.photo.id)),t.document&&t.document.id&&(t.document=o.wrapForHistory(t.document.id)),t}function u(e,i,a){var r=d(e),o=$(window).width()-(Config.Mobile?0:10),s=$(n).height()-(Config.Mobile?51:150);!Config.Mobile&&o>800&&(o-=208);var l={width:o,height:s},c=Config.Modes.chrome_packed?"webview":"iframe",u="text/html",p="<"+c+' src="'+encodeEntities(a)+'" type="'+encodeEntities(u)+'" frameborder="0" border="0" webkitallowfullscreen mozallowfullscreen allowfullscreen width="'+l.width+'" height="'+l.height+'" style="width: '+l.width+"px; height: "+l.height+'px;" sandbox="allow-scripts allow-same-origin">";return l.html=t.trustAs("html",p),r.full=l,r}var p={};return{saveGame:l,openGame:c,wrapForFull:u,wrapForHistory:d}}]).service("AppDocsManager",["$sce","$rootScope","$modal","$window","$q","$timeout","RichTextProcessor","MtpApiFileManager","FileManager","qSync",function(e,t,n,i,a,r,o,s,l,c){function d(e,t){if(w[e.id]=e,t&&angular.extend(e,t),e.thumb&&"photoCachedSize"==e.thumb._&&(s.saveSmallFile(e.thumb.location,e.thumb.bytes),e.thumb.size=e.thumb.bytes.length,delete e.thumb.bytes,e.thumb._="photoSize"),e.thumb&&"photoSizeEmpty"==e.thumb._&&delete e.thumb,angular.forEach(e.attributes,function(t){switch(t._){case"documentAttributeFilename":e.file_name=t.file_name;break;case"documentAttributeAudio":e.duration=t.duration,e.audioTitle=t.title,e.audioPerformer=t.performer,e.type=t.pFlags.voice?"voice":"audio";break;case"documentAttributeVideo":e.duration=t.duration,e.w=t.w,e.h=t.h,e.thumb&&t.pFlags.round_message?e.type="round":e.thumb&&(e.type="video");break;case"documentAttributeSticker":e.sticker=!0,void 0!==t.alt&&(e.stickerEmojiRaw=t.alt,e.stickerEmoji=o.wrapRichText(e.stickerEmojiRaw,{noLinks:!0,noLinebreaks:!0})),t.stickerset&&("inputStickerSetEmpty"==t.stickerset._?delete t.stickerset:"inputStickerSetID"==t.stickerset._&&(e.stickerSetInput=t.stickerset)),e.thumb&&"image/webp"==e.mime_type&&(e.type="sticker");break;case"documentAttributeImageSize":e.w=t.w,e.h=t.h;break;case"documentAttributeAnimated":"image/gif"!=e.mime_type&&"video/mp4"!=e.mime_type||!e.thumb||(e.type="gif"),e.animated=!0}}),!e.mime_type)switch(e.type){case"gif":e.mime_type="video/mp4";break;case"video":case"round":e.mime_type="video/mp4";break;case"sticker":e.mime_type="image/webp";break;case"audio":e.mime_type="audio/mpeg";break;case"voice":e.mime_type="audio/ogg";break;default:e.mime_type="application/octet-stream"}e.file_name||(e.file_name=""),"documentEmpty"==e._&&(e.size=0)}function u(e){return w[e]||{_:"documentEmpty"}}function p(e){return void 0!==w[e]}function f(e){if(e.file_name)return e.file_name;var t="."+e.mime_type.split("/")[1];return".octet-stream"==t&&(t=""),"t_"+(e.type||"file")+e.id+t}function m(e){if(void 0!==k[e])return k[e];var t,n,i,a,r=angular.copy(w[e]),o=r.thumb,s=!1;switch(r.type){case"video":t=Math.min(M-80,Config.Mobile?210:150),n=Math.min(S-100,Config.Mobile?210:150);break;case"sticker":s=!0,t=Math.min(M-80,Config.Mobile?128:192),n=Math.min(S-100,Config.Mobile?128:192);break;case"gif":s=!0,t=Math.min(M-80,Config.Mobile?210:260),n=Math.min(S-100,Config.Mobile?210:260);break;case"round":s=!0,t=Math.min(M-80,200),n=Math.min(S-100,200);break;default:t=n=100}return s&&r.w&&r.h?a=calcImageInBox(r.w,r.h,t,n):o&&(a=calcImageInBox(o.w,o.h,t,n)),a?(i={width:a.w,height:a.h},o&&(i.location=o.location,i.size=o.size)):i=!1,r.thumb=i,r.withPreview=!Config.Mobile&&r.mime_type.match(/^image\/(gif|png|jpeg|jpg|bmp|tiff)/)?1:0,k[e]=r}function h(e){var t=w[e],n=k[e]||t||{},i={_:"inputDocumentFileLocation",id:e,access_hash:t.access_hash,version:t.version,file_name:f(t)};void 0===n.downloaded&&s.getDownloadedFile(i,t.size).then(function(){n.downloaded=!0},function(){n.downloaded=!1})}function g(n,i){var o=w[n],d=k[n]||o||{},u={_:"inputDocumentFileLocation",id:n,access_hash:o.access_hash,version:o.version,file_name:f(o)};if("documentEmpty"==o._)return a.reject();if(d.downloaded&&!i){var p=s.getCachedFile(u);if(p)return c.when(p)}d.progress={enabled:!d.downloaded,percent:1,total:o.size};var m=s.downloadFile(o.dc_id,u,o.size,{mime:o.mime_type||"application/octet-stream",toFileEntry:i});return m.then(function(t){t&&(l.getFileCorrectUrl(t,o.mime_type).then(function(t){var n=e.trustAsResourceUrl(t);d.url=n,o.url=n}),d.downloaded=!0),d.progress.percent=100,r(function(){delete d.progress})},function(e){console.log("document download failed",e),d.progress.enabled=!1},function(e){console.log("dl progress",e),d.progress.enabled=!0,d.progress.done=e.done,d.progress.percent=Math.max(1,Math.floor(100*e.done/e.total)),t.$broadcast("history_update")}),d.progress.cancel=m.cancel,m}function _(e,i){var a=t.$new(!0);a.docID=e,a.messageID=i;n.open({templateUrl:templateUrl("document_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:"DocumentModalController",scope:a,windowClass:"document_modal_window"})}function v(e){var t=w[e],n=(k[e]||t||{},t.mime_type,f(t)),i=(n.split(".",2)||[])[1]||"";l.chooseSave(f(t),i,t.mime_type).then(function(t){t&&g(e,t)},function(){g(e).then(function(e){l.download(e,t.mime_type,n)})})}function y(e){var t=m(e),n=Math.min($(window).width()-(Config.Mobile?0:60),542),i=$(window).height()-(Config.Mobile?92:150),a={placeholder:"img/placeholders/docThumbModal.gif",width:n,height:i};if(t.w&&t.h){var r=calcImageInBox(t.w,t.h,n,i);a.width=r.w,a.height=r.h}else a.height=a.width=Math.min(n,i);return t.full=a,t.fullThumb=angular.copy(t.thumb),t.fullThumb.width=a.width,t.fullThumb.height=a.height,t}function b(e,i){var a=t.$new(!0);return a.docID=e,a.messageID=i,n.open({templateUrl:templateUrl("video_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:"VideoModalController",scope:a,windowClass:"video_modal_window"})}var w={},k={},M=$(window).width(),S=$(window).height();return{saveDoc:d,getDoc:u,hasDoc:p,wrapForHistory:m,wrapVideoForFull:y,updateDocDownloaded:h,downloadDoc:g,openDoc:_,openVideo:b,saveDocFile:v}}]).service("AppStickersManager",["$q","$rootScope","$modal","_","FileManager","MtpApiManager","AppDocsManager","Storage","ApiUpdatesManager",function(e,t,n,i,a,r,o,s,l){function c(){k||(k=!0,setTimeout(d,1e3))}function d(e){return s.get("all_stickers").then(function(t){var n=Config.Schema.API.layer;return t.layer==n&&void 0!==t.emojiIndex||(t=!1),t&&t.date>tsNow(!0)&&!e?(A=t.emojiIndex,u(t)):r.invokeApi("messages.getAllStickers",{hash:t&&t.hash||""}).then(function(e){var i="messages.allStickersNotModified"==e._;return i&&(e=t),e.date=tsNow(!0)+3600,e.layer=n,delete e._,i?(s.set({all_stickers:e}),A=e.emojiIndex,u(e)):m(e,t&&t.fullSets).then(function(){return s.set({all_stickers:e}),u(e)})})})}function u(e){if(M!==e.hash){M=e.hash;var t,n,a,r,s,l,c,d;for(S=[],a=e.sets.length,t=0;t15&&(a=a.slice(0,15)),a.push([e,1])),ConfigStorage.set({stickers_popular:a})})}function _(e){return r.invokeApi("messages.getStickerSet",{stickerset:e}).then(function(e){for(var t=0;t1209600||(i=e[t][0],f.hasUser(i)||f.saveApiUser(e[t][1]),a.push({id:i,rate:e[t][2],date:e[t][3]}))}return a})}function y(e){v().then(function(t){for(var i=!1,a=t.length,r=[],o=0;o15&&(r=r.slice(0,15)),r.push([e,f.getUser(e),1,tsNow(!0)])),ConfigStorage.set({inline_bots_popular:r}),n.$broadcast("inline_bots_popular")})}function b(n){return m.resolveUsername(n).then(function(i){if(i>0){var a=f.getUser(i);if(a.pFlags.bot&&void 0!==a.bot_inline_placeholder){var r={username:n,id:i,placeholder:a.bot_inline_placeholder};return a.pFlags.bot_inline_geo&&_.isAvailable()?x(i).then(function(){return _.getPosition().then(function(t){return r.geo=t,e.when(r)})})["catch"](function(){return e.when(r)}):e.when(r)}}return t.reject()},function(e){return e.handled=!0,t.reject(e)})}function w(e,t,n,i,a){return o.invokeApi("messages.getInlineBotResults",{flags:0|(i?1:0),bot:f.getUserInput(t),peer:m.getInputPeerByID(e),query:n,geo_point:i&&{_:"inputGeoPoint",lat:i.lat,"long":i["long"]},offset:a},{timeout:1,stopTime:-1,noErrorBox:!0}).then(function(e){var n=e.query_id;return delete e._,delete e.flags,delete e.query_id,e.switch_pm&&(e.switch_pm.rText=p.wrapRichText(e.switch_pm.text,{noLinebreaks:!0,noLinks:!0})),angular.forEach(e.results,function(e){var i=n+"_"+e.id;e.qID=i,e.botID=t,e.rTitle=p.wrapRichText(e.title,{noLinebreaks:!0,noLinks:!0}),e.rDescription=p.wrapRichText(e.description,{noLinebreaks:!0,noLinks:!0}),e.initials=(e.url||e.title||e.type||"").substr(0,1),e.document&&c.saveDoc(e.document),e.photo&&d.savePhoto(e.photo),P[i]=e}),e})}function k(e,t,n){if(e&&e[0]&&["photo","gif","sticker"].indexOf(e[0].type)!=-1){var i=[];angular.forEach(e,function(e){var t,n,a,r;if("botInlineMediaResult"==e._){if(a=e.document)t=e.document.w,n=e.document.h;else if(r=e.photo){var o=(r.sizes||[])[0];t=o&&o.w,n=o&&o.h}}else t=e.w,n=e.h;t&&n||(t=n=1),i.push(t/n)});var a=[],r=0,o=0;angular.forEach(i,function(e){var i=e*n;o+=i,!r||r<4&&o<1.1*t?r++:(a.push(r),r=1,o=i)}),r&&a.push(r);var s=0,l=a.length-1;angular.forEach(a,function(a,r){var o=r==l,c=i.slice(s,s+a),d=0;angular.forEach(c,function(e){d+=e}),angular.forEach(c,function(i,a){var r=n,l=t*i/d,c=r*i;o&&l>c&&(l=c);var u=e[s+a];u.thumbW=Math.floor(l)-2,u.thumbH=Math.floor(r)-2}),s+=a})}}function M(e,t,i){var r=m.getPeerString(e),o={};o["inline_switch_pm"+t]={peer:r,time:tsNow()},a.set(o),n.$broadcast("history_focus",{peerString:m.getPeerString(t)}),s.startBot(t,0,i)}function S(t){var n=f.getUser(t);if(!n||!n.pFlags.bot||!n.bot_inline_placeholder)return e.when(!1);var i="inline_switch_pm"+t;return a.get(i).then(function(e){return!!(e&&(a.remove(i), -tsNow()-e.time<36e5))&&e.peer})}function A(e,t,i){n.$broadcast("history_focus",{peerString:t,attachment:{_:"inline_query",mention:"@"+f.getUser(e).username,query:i}})}function T(e,t){var n=s.getMessage(e),i=n.viaBotID||n.fromID;if(t.pFlags&&t.pFlags.same_peer){var a=s.getMessagePeer(n),r=m.getPeerString(a);return void A(i,r,t.query)}return S(i).then(function(e){return e?A(i,e,t.query):void g.selectPeer({canSend:!0}).then(function(e){return A(i,e,t.query)})})}function C(e,t){var n=s.getMessage(e),i=(n.fromID,s.getMessagePeer(n));return o.invokeApi("messages.getBotCallbackAnswer",{flags:1,peer:m.getInputPeerByID(i),msg_id:l.getMessageLocalID(e),data:t.data},{timeout:1,stopTime:-1,noErrorBox:!0}).then(function(e){if("string"==typeof e.message&&e.message.length)$(e.message,e.pFlags.alert);else if("string"==typeof e.url){var t=p.wrapUrl(e.url,!0);h.openUrl(t)}})}function E(e){var t=s.getMessage(e),n=s.getMessagePeer(t);return o.invokeApi("messages.getBotCallbackAnswer",{flags:2,peer:m.getInputPeerByID(n),msg_id:l.getMessageLocalID(e)},{timeout:1,stopTime:-1,noErrorBox:!0}).then(function(n){"string"==typeof n.message&&n.message.length?$(n.message,n.pFlags.alert):"string"==typeof n.url&&u.openGame(t.media.game.id,e,n.url)})}function $(e,t){if("string"==typeof e&&e.length){var n=p.wrapRichText(e,{noLinks:!0,noLinebreaks:!0});t?r.show({title_html:n,alert:!0}):i.pop({type:"info",body:n.valueOf(),bodyOutputType:"trustedHtml",showCloseButton:!1})}}function I(e,t,n){var i=P[t];if(void 0===i)return!1;y(i.botID);var a=t.split("_"),r=a.shift(),o=a.join("_");if(n=n||{},n.viaBotID=i.botID,n.queryID=r,n.resultID=o,i.send_message.reply_markup&&(n.reply_markup=i.send_message.reply_markup),"botInlineMessageText"==i.send_message._)n.entities=i.send_message.entities,s.sendText(e,i.send_message.message,n);else{var l="",c=!1;switch(i.send_message._){case"botInlineMessageMediaAuto":if(l=i.send_message.caption,"botInlineMediaResult"==i._){var d=i.document,u=i.photo;c=d?{_:"inputMediaDocument",id:{_:"inputDocument",id:d.id,access_hash:d.access_hash},caption:l}:{_:"inputMediaPhoto",id:{_:"inputPhoto",id:u.id,access_hash:u.access_hash},caption:l}}break;case"botInlineMessageMediaGeo":c={_:"inputMediaGeoPoint",geo_point:{_:"inputGeoPoint",lat:i.send_message.geo.lat,"long":i.send_message.geo["long"]}};break;case"botInlineMessageMediaVenue":c={_:"inputMediaVenue",geo_point:{_:"inputGeoPoint",lat:i.send_message.geo.lat,"long":i.send_message.geo["long"]},title:i.send_message.title,address:i.send_message.address,provider:i.send_message.provider,venue_id:i.send_message.venue_id};break;case"botInlineMessageMediaContact":c={_:"inputMediaContact",phone_number:i.send_message.phone_number,first_name:i.send_message.first_name,last_name:i.send_message.last_name}}c||(c={_:"messageMediaPending",type:i.type,file_name:i.title||i.content_url||i.url,size:0,progress:{percent:30,total:0}}),s.sendOther(e,c,n)}}function x(e){var n="bot_access_geo"+e;return a.get(n).then(function(e){return!(!e||!e.granted)||r.confirm({type:"BOT_ACCESS_GEO_INLINE"}).then(function(){var e={};return e[n]={granted:!0,time:tsNow()},a.set(e),!0},function(){var e={};return e[n]={denied:!0,time:tsNow()},a.set(e),t.reject()})})}var P={};return{resolveInlineMention:b,getPopularBots:v,sendInlineResult:I,getInlineResults:w,regroupWrappedResults:k,switchToPM:M,checkSwitchReturn:S,switchInlineButtonClick:T,callbackButtonClick:C,gameButtonClick:E}}]).service("ApiUpdatesManager",["$rootScope","MtpNetworkerFactory","AppUsersManager","AppChatsManager","AppPeersManager","MtpApiManager",function(e,t,n,i,a,r){function o(){var e=_.seq+1,t=_.pendingSeqUpdates[e];if(!t)return!1;for(var n,i,a=t.updates,n=0,i=a.length;n=_.syncPending.seqAwaiting&&(_.syncPending.ptsAwaiting?delete _.syncPending.seqAwaiting:(clearTimeout(_.syncPending.timeout),_.syncPending=!1)),!0}function s(e){var t=e?f(e):_;if(!t.pendingPtsUpdates.length)return!1;t.pendingPtsUpdates.sort(function(e,t){return e.pts-t.pts});for(var n,i=t.pts,a=!1,r=!1,o=0,s=t.pendingPtsUpdates.length;o=n.pts&&(a=n.pts,r=o);if(!a)return!1;for(console.log(dT(),"pop pending pts updates",a,t.pendingPtsUpdates.slice(0,r+1)),t.pts=a,o=0;o<=r;o++)n=t.pendingPtsUpdates[o],h(n);return t.pendingPtsUpdates.splice(0,r+1),!t.pendingPtsUpdates.length&&t.syncPending&&(t.syncPending.seqAwaiting?delete t.syncPending.ptsAwaiting:(clearTimeout(t.syncPending.timeout),t.syncPending=!1)),!0}function l(){_.syncLoading||d()}function c(e,t){var r={date:e.date,seq:e.seq,seqStart:e.seq_start};switch(e._){case"updatesTooLong":case"new_session_created":l();break;case"updateShort":m(e.update,r);break;case"updateShortMessage":case"updateShortChatMessage":var o=2&e.flags,s=e.from_id||(o?y:e.user_id),c=e.chat_id?-e.chat_id:o?e.user_id:y;m({_:"updateNewMessage",message:{_:"message",flags:e.flags,pFlags:e.pFlags,id:e.id,from_id:s,to_id:a.getOutputPeer(c),date:e.date,message:e.message,fwd_from:e.fwd_from,reply_to_msg_id:e.reply_to_msg_id,entities:e.entities},pts:e.pts,pts_count:e.pts_count},r);break;case"updatesCombined":case"updates":n.saveApiUsers(e.users),i.saveApiChats(e.chats),angular.forEach(e.updates,function(e){m(e,r)});break;default:console.warn(dT(),"Unknown update message",e)}}function d(){_.syncLoading||(_.syncLoading=!0,_.pendingSeqUpdates={},_.pendingPtsUpdates=[]),_.syncPending&&(clearTimeout(_.syncPending.timeout),_.syncPending=!1),r.invokeApi("updates.getDifference",{pts:_.pts,date:_.date,qts:-1}).then(function(t){if("updates.differenceEmpty"==t._)return console.log(dT(),"apply empty diff",t.seq),_.date=t.date,_.seq=t.seq,_.syncLoading=!1,e.$broadcast("stateSynchronized"),!1;n.saveApiUsers(t.users),i.saveApiChats(t.chats);angular.forEach(t.other_updates,function(e){switch(e._){case"updateChannelTooLong":case"updateNewChannelMessage":case"updateEditChannelMessage":return void m(e)}h(e)}),angular.forEach(t.new_messages,function(e){h({_:"updateNewMessage",message:e,pts:_.pts,pts_count:0})});var a=t.intermediate_state||t.state;_.seq=a.seq,_.pts=a.pts,_.date=a.date,"updates.differenceSlice"==t._?d():(e.$broadcast("stateSynchronized"),_.syncLoading=!1)})}function u(t){var a=f(t);a.syncLoading||(a.syncLoading=!0,a.pendingPtsUpdates=[]),a.syncPending&&(clearTimeout(a.syncPending.timeout),a.syncPending=!1),r.invokeApi("updates.getChannelDifference",{channel:i.getChannelInput(t),filter:{_:"channelMessagesFilterEmpty"},pts:a.pts,limit:30}).then(function(r){return a.pts=r.pts,"updates.channelDifferenceEmpty"==r._?(console.log(dT(),"apply channel empty diff",r),a.syncLoading=!1,e.$broadcast("stateSynchronized"),!1):"updates.channelDifferenceTooLong"==r._?(console.log(dT(),"channel diff too long",r),a.syncLoading=!1,delete v[t],h({_:"updateChannelReload",channel_id:t}),!1):(n.saveApiUsers(r.users),i.saveApiChats(r.chats),console.log(dT(),"applying",r.other_updates.length,"channel other updates"),angular.forEach(r.other_updates,function(e){h(e)}),console.log(dT(),"applying",r.new_messages.length,"channel new messages"),angular.forEach(r.new_messages,function(e){h({_:"updateNewChannelMessage",message:e,pts:a.pts,pts_count:0})}),console.log(dT(),"apply channel diff",a.pts),void("updates.channelDifference"!=r._||r.pFlags["final"]?(console.log(dT(),"finished channel get diff"),e.$broadcast("stateSynchronized"),a.syncLoading=!1):u(t)))})}function p(e,t){if(!t)throw new Error("Add channel state without pts "+e);return void 0===v[e]&&(v[e]={pts:t,pendingPtsUpdates:[],syncPending:!1,syncLoading:!1},!0)}function f(e,t){return void 0===v[e]&&p(e,t),v[e]}function m(e,t){t=t||{};var r=!1;switch(e._){case"updateNewChannelMessage":case"updateEditChannelMessage":r=-a.getPeerID(e.message.to_id);break;case"updateDeleteChannelMessages":r=e.channel_id;break;case"updateChannelTooLong":if(r=e.channel_id,void 0===v[r])return!1}var c=r?f(r,e.pts):_;if(c.syncLoading)return!1;if("updateChannelTooLong"==e._)return u(r),!1;if("updateNewMessage"==e._||"updateEditMessage"==e._||"updateNewChannelMessage"==e._||"updateEditChannelMessage"==e._){var p=e.message,m=a.getPeerID(p.to_id),g=p.fwd_from||{};if(p.from_id&&!n.hasUser(p.from_id,p.pFlags.post)||g.from_id&&!n.hasUser(g.from_id,!!g.channel_id)||g.channel_id&&!i.hasChat(g.channel_id,!0)||m>0&&!n.hasUser(m)||m<0&&!i.hasChat(-m))return console.warn(dT(),"Not enough data for message update",p),r&&i.hasChat(r)?u(r):l(),!1}else if(r&&!i.hasChat(r))return!1;var y,b;if(e.pts){var w=c.pts+(e.pts_count||0);if(wc.pts)c.pts=e.pts,y=!0;else if(e.pts_count)return!1;r&&t.date&&_.date0){var k=t.seq,M=t.seqStart||k;if(M!=c.seq+1&&M>c.seq)return console.warn(dT(),"Seq hole",c,c.syncPending&&c.syncPending.seqAwaiting),void 0===c.pendingSeqUpdates[M]&&(c.pendingSeqUpdates[M]={seq:k,date:t.date,updates:[]}),c.pendingSeqUpdates[M].updates.push(e),c.syncPending||(c.syncPending={timeout:setTimeout(function(){d()},5e3)}),(!c.syncPending.seqAwaiting||c.syncPending.seqAwaitingf)||(f=!1,!1))}var c,d=0,u=!1,p=0,f=!1;return n.getUserID().then(function(e){p=e}),t.$on("apiUpdate",function(e,t){"updateUserStatus"==t._&&t.user_id==p&&(f=tsNow()+("userStatusOnline"==t.status._?3e5:0))}),{start:r,isOtherDeviceActive:l}}]).service("NotificationsManager",["$rootScope","$window","$interval","$q","$modal","_","toaster","MtpApiManager","AppPeersManager","AppChatsManager","AppUsersManager","IdleManager","Storage","AppRuntimeManager","FileManager","WebPushApiManager",function(e,t,n,i,a,r,o,s,l,c,d,u,p,f,m,h){function g(){p.get("notify_nodesktop","notify_volume","notify_novibrate","notify_nopreview","notify_nopush").then(function(e){if(ee.nodesktop=e[0],ee.volume=e[1]===!1?.5:e[1],ee.novibrate=e[2],ee.nopreview=e[3],ee.nopush=e[4],ne){var t=!ee.nopush&&!ee.nodesktop&&h.isAvailable||!1,n=te!==!1;t!=n&&(t?h.subscribe():h.unsubscribe())}h.setSettings(ee)})}function _(){return ee}function v(e){return void 0!==K[e]?K[e]:K[e]=s.invokeApi("account.getNotifySettings",{peer:{_:"inputNotifyPeer",peer:l.getInputPeerByID(e)}})}function y(e){if(e=e||"favicon.ico",U!==e){var t=document.createElement("link");t.rel="shortcut icon",t.type="image/x-icon",t.href=e,Y.parentNode.replaceChild(t,Y),Y=t,U=e}}function b(t,n){K[t]=i.when(n),e.$broadcast("notify_settings",{peerID:t})}function w(e,t){b(e,t);var n=angular.copy(t);return n._="inputPeerNotifySettings",s.invokeApi("account.updateNotifySettings",{peer:{_:"inputNotifyPeer",peer:l.getInputPeerByID(e)},settings:n})}function k(e){return v(e).then(function(e){return"peerNotifySettings"==e._&&1e3*e.mute_until>tsNow()})}function M(){if(g(),e.$on("settings_changed",g),h.start(),!B)return!1;"Notification"in window&&"granted"!==Notification.permission&&"denied"!==Notification.permission&&$(t).on("click",A);try{"onbeforeunload"in window&&$(t).on("beforeunload",P)}catch(n){}}function S(){P(),n.cancel(F),y(),Q=!0}function A(){Notification.requestPermission(),$(t).off("click",A)}function T(e){if(!Q){if(Config.Navigator.ffos&&!Config.Navigator.ffos2p)e.image="https://telegram.org/img/t_logo.png";else if(e.image&&!angular.isString(e.image)){if(Config.Navigator.ffos2p)return m.getDataUrl(e.image,"image/jpeg").then(function(t){e.image=t,T(e)}),!1;e.image=m.getUrl(e.image,"image/jpeg")}else e.image||(e.image="img/icons/icon60.png");V++;var t=tsNow();if(ee.volume>0&&(!e.tag||!q[e.tag]||t>q[e.tag]+6e4)&&(C(ee.volume),q[e.tag]=t),!B||"Notification"in window&&"granted"!==Notification.permission)return!1;if(ee.nodesktop){if(z&&!ee.novibrate)return void navigator.vibrate([200,100,200])}else{var n,i=++j,a=e.key||"k"+i;if("Notification"in window)try{n=new Notification(e.title,{icon:e.image||"",body:e.message||"",tag:e.tag||"",silent:e.silent||!1})}catch(r){return B=!1,void h.setLocalNotificationsDisabled()}else if("mozNotification"in navigator)n=navigator.mozNotification.createNotification(e.title,e.message||"",e.image||"");else{if(!N)return;window.external.msSiteModeClearIconOverlay(),window.external.msSiteModeSetIconOverlay("img/icons/icon16.png",e.title),window.external.msSiteModeActivate(),n={index:i}}n.onclick=function(){n.close(),f.focus(),P(),e.onclick&&e.onclick()},n.onclose=function(){n.hidden||(delete H[a],P())},n.show&&n.show(),H[a]=n,Config.Navigator.mobile||setTimeout(function(){I(a)},8e3)}}}function C(e){var t=tsNow();if(!(W&&t');i.find("audio")[0].volume=e}}function E(e){var t=H[e];if(t){V>0&&V--;try{t.close?t.close():N&&t.index==j&&window.external.msSiteModeClearIconOverlay()}catch(n){}delete V[e]}}function I(e){var t=H[e];if(t){try{t.close&&(t.hidden=!0,t.close())}catch(n){}delete V[e]}}function x(e){delete q[e]}function P(){N?window.external.msSiteModeClearIconOverlay():angular.forEach(H,function(e){try{e.close&&e.close()}catch(t){}}),H={},V=0,h.hidePushNotifications()}function D(e){return(!te||!angular.equals(te,e))&&void s.invokeApi("account.registerDevice",{token_type:e.tokenType,token:e.tokenValue}).then(function(){te=e},function(e){e.handled=!0})}function R(e){return!!te&&void s.invokeApi("account.unregisterDevice",{token_type:e.tokenType,token:e.tokenValue}).then(function(){te=!1},function(e){e.handled=!0})}function O(){return z}navigator.vibrate=navigator.vibrate||navigator.mozVibrate||navigator.webkitVibrate;var N=!1;try{window.external&&window.external.msIsSiteMode()&&(N=!0)}catch(L){}var F,U,B=N||"Notification"in window||"mozNotification"in navigator,H={},j=0,V=0,q={},z=!!navigator.vibrate,W=!1,G=!1,K={},Y=$('link[rel="icon"]:first')[0],X=r.pluralize("page_title_pluralize_notifications"),J=document.title,Z=!1,Q=!1,ee={};e.$watch("idle.deactivated",function(e){e&&S()}),e.$watch("idle.isIDLE",function(e){Q||(e||P(),Config.Navigator.mobile||(n.cancel(F),e?(J=document.title,F=n(function(){Z||!V?(Z=!1,document.title=J,y()):(Z=!0,document.title=X(V),y("favicon_unread.ico"))},1e3)):(Z=!1,document.title=J,y())))}),e.$on("apiUpdate",function(e,t){switch(t._){case"updateNotifySettings":if("notifyPeer"==t.peer._){var n=l.getPeerID(t.peer.peer);b(n,t.notify_settings)}}});var te=!1,ne=!1;e.$on("push_init",function(e,t){ne=!0,ee.nodesktop||ee.nopush?R(t):t?D(t):h.subscribe()}),e.$on("push_subscribe",function(e,t){D(t)}),e.$on("push_unsubscribe",function(e,t){R(t)});var ie=i.defer(),ae=e.$on("dialogs_multiupdate",function(){ae(),ie.resolve()}),re=ie.promise;return e.$on("push_notification_click",function(t,n){if("push_settings"==n.action)return void re.then(function(){a.open({templateUrl:templateUrl("settings_modal"),controller:"SettingsModalController",windowClass:"settings_modal_window mobile_modal",backdrop:"single"})});if("mute1d"==n.action)return void s.invokeApi("account.updateDeviceLocked",function(){}).then(function(){var e=o.pop({type:"info",body:r("push_action_mute1d_success"),bodyOutputType:"trustedHtml",clickHandler:function(){o.clear(e)},showCloseButton:!1})});var i=n.custom&&n.custom.peerID;console.log("click",n,i),i&&re.then(function(){n.custom.channel_id&&!c.hasChat(n.custom.channel_id)||i>0&&!d.hasUser(i)||e.$broadcast("history_focus",{peerString:l.getPeerString(i)})})}),{start:M,notify:T,cancel:E,clear:P,soundReset:x,getPeerSettings:v,getPeerMuted:k,savePeerSettings:b,updatePeerSettings:w,updateNotifySettings:g,getNotifySettings:_,getVibrateSupport:O,testSound:C}}]).service("PasswordManager",["$timeout","$q","$rootScope","MtpApiManager","CryptoWorker","MtpSecureRandom",function(e,t,n,i,a,r){function o(e){return i.invokeApi("account.getPassword",{},e).then(function(e){return e})}function s(e,n){var a,o,s={new_settings:{_:"account.passwordInputSettings",flags:0,hint:n.hint||""}};if(a="string"==typeof n.cur_password&&n.cur_password.length>0?u(e.current_salt,n.cur_password):t.when([]),"string"==typeof n.new_password&&n.new_password.length>0){var l=new Array(8),c=bufferConcat(e.new_salt,l);r.nextBytes(l),o=u(c,n.new_password),s.new_settings.new_salt=c,s.new_settings.flags|=1}else"string"==typeof n.new_password&&(s.new_settings.flags|=1,s.new_settings.new_salt=[]),o=t.when([]);return"string"==typeof n.email&&(s.new_settings.flags|=2,s.new_settings.email=n.email||""),t.all([a,o]).then(function(e){return s.current_password_hash=e[0],s.new_settings.new_password_hash=e[1],i.invokeApi("account.updatePasswordSettings",s)})}function l(e,t,n){return u(e.current_salt,t).then(function(e){return i.invokeApi("auth.checkPassword",{password_hash:e},n)})}function c(e,t){return i.invokeApi("auth.requestPasswordRecovery",{},t)}function d(e,t){return i.invokeApi("auth.recoverPassword",{code:e},t)}function u(e,t){for(var n=unescape(encodeURIComponent(t)),i=new ArrayBuffer(n.length),r=new Uint8Array(i),o=0,s=n.length;o=1)return console.log("Skip error box, too many open",o,n,i),!1;i=i||{};var a=e.$new();angular.extend(a,n),o++;var r=t.open({templateUrl:templateUrl("error_modal"),scope:a,windowClass:i.windowClass||"error_modal_window"});return r.result["finally"](function(){o--}),r}function a(e,t){return i({title:e,description:t})}function r(n,i,a){i=i||{},a=a||{};var r=e.$new();angular.extend(r,n),angular.extend(r,{data:a});var o=t.open({templateUrl:templateUrl("confirm_modal"),scope:r,windowClass:i.windowClass||"confirm_modal_window"});return o.result}var o=0;return n.safeConfirm=function(e,t){"string"==typeof e&&(e={message:e}),r(e).then(function(e){t(e||!0)},function(){t(!1)})},{show:i,alert:a,confirm:r}}]).service("PeersSelectService",["$rootScope","$modal",function(e,t){function n(n){var i=e.$new();return i.multiSelect=!1,i.noMessages=!0,n&&angular.extend(i,n),t.open({templateUrl:templateUrl("peer_select"),controller:"PeerSelectController",scope:i,windowClass:"peer_select_window mobile_modal",backdrop:"single"}).result}function i(i){if(Config.Mobile)return n(i).then(function(e){return[e]});var a=e.$new();return a.multiSelect=!0,a.noMessages=!0,i&&angular.extend(a,i),t.open({templateUrl:templateUrl("peer_select"),controller:"PeerSelectController",scope:a,windowClass:"peer_select_window mobile_modal",backdrop:"single"}).result}return{selectPeer:n,selectPeers:i}}]).service("ContactsSelectService",["$rootScope","$modal",function(e,t){function n(n,i){i=i||{};var a=e.$new();return a.multiSelect=n,angular.extend(a,i),!a.action&&n&&(a.action="select"),t.open({templateUrl:templateUrl("contacts_modal"),controller:"ContactsModalController",scope:a,windowClass:"contacts_modal_window mobile_modal",backdrop:"single"}).result}return{selectContacts:function(e){return n(!0,e)},selectContact:function(e){return n(!1,e)}}}]).service("ChangelogNotifyService",["Storage","$rootScope","$modal","$timeout","MtpApiManager","ApiUpdatesManager",function(e,t,n,i,a,r){function o(){l||(l=!0,a.getUserID().then(function(t){t&&i(function(){e.get("last_version").then(function(t){t!=Config.App.version&&(t?a.invokeApi("help.getAppChangelog",{prev_app_version:t},{noErrorBox:!0}).then(function(t){return!("updates"==t._&&!t.updates.length)&&(r.processUpdateMessage(t),void e.set({last_version:Config.App.version}))}):e.set({last_version:Config.App.version}))})},5e3)}))}function s(e){var i=t.$new();i.lastVersion=e,n.open({controller:"ChangelogModalController",templateUrl:templateUrl("changelog_modal"),scope:i,windowClass:"changelog_modal_window mobile_modal"})}var l=!1;return{checkUpdate:o,showChangelog:s}}]).service("HttpsMigrateService",["ErrorService","Storage",function(e,t){function n(){t.get("https_dismiss").then(function(n){(!n||tsNow()>n+432e5)&&e.confirm({type:"MIGRATE_TO_HTTPS"}).then(function(){var e;try{e=window.open("https://web.telegram.org","_blank")}catch(t){}e||(location.href="https://web.telegram.org")},function(){t.set({https_dismiss:tsNow()})})})}function i(){a||"http:"!=location.protocol||Config.Modes.http||Config.App.domains.indexOf(location.hostname)==-1||(a=!0,setTimeout(n,12e4))}var a=!1;return{start:i,check:n}}]).service("LayoutSwitchService",["ErrorService","Storage","AppRuntimeManager","$window",function(e,t,n,i){function a(e){ConfigStorage.noPrefix(),t.set({layout_selected:e?"mobile":"desktop",layout_width:$(window).width()}).then(function(){n.reload()})}function r(n){if(!l){var i=$(window).width(),r=i<600;!i||!n&&(Config.Navigator.mobile?i<=800:r)||r!=Config.Mobile&&(ConfigStorage.noPrefix(),t.get("layout_width").then(function(n){return i!=n&&(l=!0,void e.confirm({type:r?"SWITCH_MOBILE_VERSION":"SWITCH_DESKTOP_VERSION"}).then(function(){a(r)},function(){ConfigStorage.noPrefix(),t.set({layout_width:i}),l=!1}))}))}}function o(){s||Config.Navigator.mobile||(s=!0,r(),$(i).on("resize",r))}var s=!1,l=!1;return{start:o,switchLayout:a}}]).service("TelegramMeWebService",["Storage",function(e){function t(t){return!n&&void e.get("tgme_sync").then(function(n){var i=tsNow(!0);if(t&&n&&n.canRedirect==t&&n.ts+86400>i)return!1;e.set({tgme_sync:{canRedirect:t,ts:i}});var a=$("