You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

27 lines
1.3 MiB

function BigInteger(e,t,n){null!=e&&("number"==typeof e?this.fromNumber(e,t,n):null==t&&"string"!=typeof e?this.fromString(e,256):this.fromString(e,t))}function nbi(){return new BigInteger(null)}function am1(e,t,n,a,i,o){for(;--o>=0;){var s=t*this[e++]+n[a]+i;i=Math.floor(s/67108864),n[a++]=67108863&s}return i}function am2(e,t,n,a,i,o){for(var s=32767&t,r=t>>15;--o>=0;){var l=32767&this[e],c=this[e++]>>15,d=r*l+c*s;l=s*l+((32767&d)<<15)+n[a]+(1073741823&i),i=(l>>>30)+(d>>>15)+r*c+(i>>>30),n[a++]=1073741823&l}return i}function am3(e,t,n,a,i,o){for(var s=16383&t,r=t>>14;--o>=0;){var l=16383&this[e],c=this[e++]>>14,d=r*l+c*s;l=s*l+((16383&d)<<14)+n[a]+i,i=(l>>28)+(d>>14)+r*c,n[a++]=268435455&l}return i}function int2char(e){return BI_RM.charAt(e)}function intAt(e,t){var n=BI_RC[e.charCodeAt(t)];return null==n?-1:n}function bnpCopyTo(e){for(var t=this.t-1;t>=0;--t)e[t]=this[t];e.t=this.t,e.s=this.s}function bnpFromInt(e){this.t=1,this.s=0>e?-1:0,e>0?this[0]=e:-1>e?this[0]=e+this.DV:this.t=0}function nbv(e){var t=nbi();return t.fromInt(e),t}function bnpFromString(e,t,n){var a;if(16==t)a=4;else if(8==t)a=3;else if(256==t)a=8;else if(2==t)a=1;else if(32==t)a=5;else{if(4!=t)return void this.fromRadix(e,t);a=2}this.t=0,this.s=0;for(var i=e.length,o=!1,s=0;--i>=0;){var r=8==a?255&e[i]:intAt(e,i);0>r?"-"==e.charAt(i)&&(o=!0):(o=!1,0==s?this[this.t++]=r:s+a>this.DB?(this[this.t-1]|=(r&(1<<this.DB-s)-1)<<s,this[this.t++]=r>>this.DB-s):this[this.t-1]|=r<<s,s+=a,s>=this.DB&&(s-=this.DB))}8==a&&0!=(128&e[0])&&n&&(this.s=-1,s>0&&(this[this.t-1]|=(1<<this.DB-s)-1<<s)),this.clamp(),o&&BigInteger.ZERO.subTo(this,this)}function bnpClamp(){for(var e=this.s&this.DM;this.t>0&&this[this.t-1]==e;)--this.t}function bnToString(e){if(this.s<0)return"-"+this.negate().toString(e);var t;if(16==e)t=4;else if(8==e)t=3;else if(2==e)t=1;else if(32==e)t=5;else{if(4!=e)return this.toRadix(e);t=2}var n,a=(1<<t)-1,i=!1,o="",s=this.t,r=this.DB-s*this.DB%t;if(s-->0)for(r<this.DB&&(n=this[s]>>r)>0&&(i=!0,o=int2char(n));s>=0;)t>r?(n=(this[s]&(1<<r)-1)<<t-r,n|=this[--s]>>(r+=this.DB-t)):(n=this[s]>>(r-=t)&a,0>=r&&(r+=this.DB,--s)),n>0&&(i=!0),i&&(o+=int2char(n));return i?o:"0"}function bnNegate(){var e=nbi();return BigInteger.ZERO.subTo(this,e),e}function bnAbs(){return this.s<0?this.negate():this}function bnCompareTo(e){var t=this.s-e.s;if(0!=t)return t;var n=this.t;if(t=n-e.t,0!=t)return this.s<0?-t:t;for(;--n>=0;)if(0!=(t=this[n]-e[n]))return t;return 0}function nbits(e){var t,n=1;return 0!=(t=e>>>16)&&(e=t,n+=16),0!=(t=e>>8)&&(e=t,n+=8),0!=(t=e>>4)&&(e=t,n+=4),0!=(t=e>>2)&&(e=t,n+=2),0!=(t=e>>1)&&(e=t,n+=1),n}function bnBitLength(){return this.t<=0?0:this.DB*(this.t-1)+nbits(this[this.t-1]^this.s&this.DM)}function bnpDLShiftTo(e,t){var n;for(n=this.t-1;n>=0;--n)t[n+e]=this[n];for(n=e-1;n>=0;--n)t[n]=0;t.t=this.t+e,t.s=this.s}function bnpDRShiftTo(e,t){for(var n=e;n<this.t;++n)t[n-e]=this[n];t.t=Math.max(this.t-e,0),t.s=this.s}function bnpLShiftTo(e,t){var n,a=e%this.DB,i=this.DB-a,o=(1<<i)-1,s=Math.floor(e/this.DB),r=this.s<<a&this.DM;for(n=this.t-1;n>=0;--n)t[n+s+1]=this[n]>>i|r,r=(this[n]&o)<<a;for(n=s-1;n>=0;--n)t[n]=0;t[s]=r,t.t=this.t+s+1,t.s=this.s,t.clamp()}function bnpRShiftTo(e,t){t.s=this.s;var n=Math.floor(e/this.DB);if(n>=this.t)return void(t.t=0);var a=e%this.DB,i=this.DB-a,o=(1<<a)-1;t[0]=this[n]>>a;for(var s=n+1;s<this.t;++s)t[s-n-1]|=(this[s]&o)<<i,t[s-n]=this[s]>>a;a>0&&(t[this.t-n-1]|=(this.s&o)<<i),t.t=this.t-n,t.clamp()}function bnpSubTo(e,t){for(var n=0,a=0,i=Math.min(e.t,this.t);i>n;)a+=this[n]-e[n],t[n++]=a&this.DM,a>>=this.DB;if(e.t<this.t){for(a-=e.s;n<this.t;)a+=this[n],t[n++]=a&this.DM,a>>=this.DB;a+=this.s}else{for(a+=this.s;n<e.t;)a-=e[n],t[n++]=a&this.DM,a>>=this.DB;a-=e.s}t.s=0>a?-1:0,-1>a?t[n++]=this.DV+a:a>0&&(t[n++]=a),t.t=n,t.clamp()}function bnpMultiplyTo(e,t){var n=this.abs(),a=e.abs(),i=n.t;for(t.t=i+a.t;--i>=0;)t[i]=0;for(i=0;i<a.t;++i)t[i+n.t]=n.am(0,a[i],t,i,0,n.t);t.s=0,t.clamp(),this.s!=e.s&&BigInteger.ZERO.subTo(t,t)}function bnpSquareTo(e){for(var t=this.abs(),n=e.t=2*t.t;--n>=0;)e[n]=0;for(n=0;n<t.t-1;++n){var a=t.am(n,t[n],e,2*n,0,1);(e[n+t.t]+=t.am(n+1,2*t[n],e,2*n+1,a,t.t-n-1))>=t.DV&&(e[n+t.t]-=t.DV,e[n+t.t+1]=1)}e.t>0&&(e[e.t-1]+=t.am(n,t[n],e,2*n,0,1)),e.s=0,e.clamp()}function bnpDivRemTo(e,t,n){var a=e.abs();if(!(a.t<=0)){var i=this.abs();if(i.t<a.t)return null!=t&&t.fromInt(0),void(null!=n&&this.copyTo(n));null==n&&(n=nbi());var o=nbi(),s=this.s,r=e.s,l=this.DB-nbits(a[a.t-1]);l>0?(a.lShiftTo(l,o),i.lShiftTo(l,n)):(a.copyTo(o),i.copyTo(n));var c=o.t,d=o[c-1];if(0!=d){var u=d*(1<<this.F1)+(c>1?o[c-2]>>this.F2:0),p=this.FV/u,m=(1<<this.F1)/u,g=1<<this.F2,h=n.t,f=h-c,_=null==t?nbi():t;for(o.dlShiftTo(f,_),n.compareTo(_)>=0&&(n[n.t++]=1,n.subTo(_,n)),BigInteger.ONE.dlShiftTo(c,_),_.subTo(o,o);o.t<c;)o[o.t++]=0;for(;--f>=0;){var v=n[--h]==d?this.DM:Math.floor(n[h]*p+(n[h-1]+g)*m);if((n[h]+=o.am(0,v,n,f,0,c))<v)for(o.dlShiftTo(f,_),n.subTo(_,n);n[h]<--v;)n.subTo(_,n)}null!=t&&(n.drShiftTo(c,t),s!=r&&BigInteger.ZERO.subTo(t,t)),n.t=c,n.clamp(),l>0&&n.rShiftTo(l,n),0>s&&BigInteger.ZERO.subTo(n,n)}}}function bnMod(e){var t=nbi();return this.abs().divRemTo(e,null,t),this.s<0&&t.compareTo(BigInteger.ZERO)>0&&e.subTo(t,t),t}function Classic(e){this.m=e}function cConvert(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e}function cRevert(e){return e}function cReduce(e){e.divRemTo(this.m,null,e)}function cMulTo(e,t,n){e.multiplyTo(t,n),this.reduce(n)}function cSqrTo(e,t){e.squareTo(t),this.reduce(t)}function bnpInvDigit(){if(this.t<1)return 0;var e=this[0];if(0==(1&e))return 0;var t=3&e;return t=t*(2-(15&e)*t)&15,t=t*(2-(255&e)*t)&255,t=t*(2-((65535&e)*t&65535))&65535,t=t*(2-e*t%this.DV)%this.DV,t>0?this.DV-t:-t}function Montgomery(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<<e.DB-15)-1,this.mt2=2*e.t}function montConvert(e){var t=nbi();return e.abs().dlShiftTo(this.m.t,t),t.divRemTo(this.m,null,t),e.s<0&&t.compareTo(BigInteger.ZERO)>0&&this.m.subTo(t,t),t}function montRevert(e){var t=nbi();return e.copyTo(t),this.reduce(t),t}function montReduce(e){for(;e.t<=this.mt2;)e[e.t++]=0;for(var t=0;t<this.m.t;++t){var n=32767&e[t],a=n*this.mpl+((n*this.mph+(e[t]>>15)*this.mpl&this.um)<<15)&e.DM;for(n=t+this.m.t,e[n]+=this.m.am(0,a,e,t,0,this.m.t);e[n]>=e.DV;)e[n]-=e.DV,e[++n]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)}function montSqrTo(e,t){e.squareTo(t),this.reduce(t)}function montMulTo(e,t,n){e.multiplyTo(t,n),this.reduce(n)}function bnpIsEven(){return 0==(this.t>0?1&this[0]:this.s)}function bnpExp(e,t){if(e>4294967295||1>e)return BigInteger.ONE;var n=nbi(),a=nbi(),i=t.convert(this),o=nbits(e)-1;for(i.copyTo(n);--o>=0;)if(t.sqrTo(n,a),(e&1<<o)>0)t.mulTo(a,i,n);else{var s=n;n=a,a=s}return t.revert(n)}function bnModPowInt(e,t){var n;return n=256>e||t.isEven()?new Classic(t):new Montgomery(t),this.exp(e,n)}function bnClone(){var e=nbi();return this.copyTo(e),e}function bnIntValue(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]}function bnByteValue(){return 0==this.t?this.s:this[0]<<24>>24}function bnShortValue(){return 0==this.t?this.s:this[0]<<16>>16}function bnpChunkSize(e){return Math.floor(Math.LN2*this.DB/Math.log(e))}function bnSigNum(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1}function bnpToRadix(e){if(null==e&&(e=10),0==this.signum()||2>e||e>36)return"0";var t=this.chunkSize(e),n=Math.pow(e,t),a=nbv(n),i=nbi(),o=nbi(),s="";for(this.divRemTo(a,i,o);i.signum()>0;)s=(n+o.intValue()).toString(e).substr(1)+s,i.divRemTo(a,i,o);return o.intValue().toString(e)+s}function bnpFromRadix(e,t){this.fromInt(0),null==t&&(t=10);for(var n=this.chunkSize(t),a=Math.pow(t,n),i=!1,o=0,s=0,r=0;r<e.length;++r){var l=intAt(e,r);0>l?"-"==e.charAt(r)&&0==this.signum()&&(i=!0):(s=t*s+l,++o>=n&&(this.dMultiply(a),this.dAddOffset(s,0),o=0,s=0))}o>0&&(this.dMultiply(Math.pow(t,o)),this.dAddOffset(s,0)),i&&BigInteger.ZERO.subTo(this,this)}function bnpFromNumber(e,t,n){if("number"==typeof t)if(2>e)this.fromInt(1);else for(this.fromNumber(e,n),this.testBit(e-1)||this.bitwiseTo(BigInteger.ONE.shiftLeft(e-1),op_or,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(t);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(BigInteger.ONE.shiftLeft(e-1),this);else{var a=new Array,i=7&e;a.length=(e>>3)+1,t.nextBytes(a),i>0?a[0]&=(1<<i)-1:a[0]=0,this.fromString(a,256)}}function bnToByteArray(e){var t=this.t,n=new Array;n[0]=this.s;var a,i=this.DB-t*this.DB%8,o=0;if(t-->0)for(i<this.DB&&(a=this[t]>>i)!=(this.s&this.DM)>>i&&(n[o++]=a|this.s<<this.DB-i);t>=0;)8>i?(a=(this[t]&(1<<i)-1)<<8-i,a|=this[--t]>>(i+=this.DB-8)):(a=this[t]>>(i-=8)&255,0>=i&&(i+=this.DB,--t)),e&&0!=(128&a)&&(a|=-256),0==o&&(128&this.s)!=(128&a)&&++o,(o>0||a!=this.s)&&(n[o++]=a);return n}function bnEquals(e){return 0==this.compareTo(e)}function bnMin(e){return this.compareTo(e)<0?this:e}function bnMax(e){return this.compareTo(e)>0?this:e}function bnpBitwiseTo(e,t,n){var a,i,o=Math.min(e.t,this.t);for(a=0;o>a;++a)n[a]=t(this[a],e[a]);if(e.t<this.t){for(i=e.s&this.DM,a=o;a<this.t;++a)n[a]=t(this[a],i);n.t=this.t}else{for(i=this.s&this.DM,a=o;a<e.t;++a)n[a]=t(i,e[a]);n.t=e.t}n.s=t(this.s,e.s),n.clamp()}function op_and(e,t){return e&t}function bnAnd(e){var t=nbi();return this.bitwiseTo(e,op_and,t),t}function op_or(e,t){return e|t}function bnOr(e){var t=nbi();return this.bitwiseTo(e,op_or,t),t}function op_xor(e,t){return e^t}function bnXor(e){var t=nbi();return this.bitwiseTo(e,op_xor,t),t}function op_andnot(e,t){return e&~t}function bnAndNot(e){var t=nbi();return this.bitwiseTo(e,op_andnot,t),t}function bnNot(){for(var e=nbi(),t=0;t<this.t;++t)e[t]=this.DM&~this[t];return e.t=this.t,e.s=~this.s,e}function bnShiftLeft(e){var t=nbi();return 0>e?this.rShiftTo(-e,t):this.lShiftTo(e,t),t}function bnShiftRight(e){var t=nbi();return 0>e?this.lShiftTo(-e,t):this.rShiftTo(e,t),t}function lbit(e){if(0==e)return-1;var t=0;return 0==(65535&e)&&(e>>=16,t+=16),0==(255&e)&&(e>>=8,t+=8),0==(15&e)&&(e>>=4,t+=4),0==(3&e)&&(e>>=2,t+=2),0==(1&e)&&++t,t}function bnGetLowestSetBit(){for(var e=0;e<this.t;++e)if(0!=this[e])return e*this.DB+lbit(this[e]);return this.s<0?this.t*this.DB:-1}function cbit(e){for(var t=0;0!=e;)e&=e-1,++t;return t}function bnBitCount(){for(var e=0,t=this.s&this.DM,n=0;n<this.t;++n)e+=cbit(this[n]^t);return e}function bnTestBit(e){var t=Math.floor(e/this.DB);return t>=this.t?0!=this.s:0!=(this[t]&1<<e%this.DB)}function bnpChangeBit(e,t){var n=BigInteger.ONE.shiftLeft(e);return this.bitwiseTo(n,t,n),n}function bnSetBit(e){return this.changeBit(e,op_or)}function bnClearBit(e){return this.changeBit(e,op_andnot)}function bnFlipBit(e){return this.changeBit(e,op_xor)}function bnpAddTo(e,t){for(var n=0,a=0,i=Math.min(e.t,this.t);i>n;)a+=this[n]+e[n],t[n++]=a&this.DM,a>>=this.DB;if(e.t<this.t){for(a+=e.s;n<this.t;)a+=this[n],t[n++]=a&this.DM,a>>=this.DB;a+=this.s}else{for(a+=this.s;n<e.t;)a+=e[n],t[n++]=a&this.DM,a>>=this.DB;a+=e.s}t.s=0>a?-1:0,a>0?t[n++]=a:-1>a&&(t[n++]=this.DV+a),t.t=n,t.clamp()}function bnAdd(e){var t=nbi();return this.addTo(e,t),t}function bnSubtract(e){var t=nbi();return this.subTo(e,t),t}function bnMultiply(e){var t=nbi();return this.multiplyTo(e,t),t}function bnSquare(){var e=nbi();return this.squareTo(e),e}function bnDivide(e){var t=nbi();return this.divRemTo(e,t,null),t}function bnRemainder(e){var t=nbi();return this.divRemTo(e,null,t),t}function bnDivideAndRemainder(e){var t=nbi(),n=nbi();return this.divRemTo(e,t,n),new Array(t,n)}function bnpDMultiply(e){this[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()}function bnpDAddOffset(e,t){if(0!=e){for(;this.t<=t;)this[this.t++]=0;for(this[t]+=e;this[t]>=this.DV;)this[t]-=this.DV,++t>=this.t&&(this[this.t++]=0),++this[t]}}function NullExp(){}function nNop(e){return e}function nMulTo(e,t,n){e.multiplyTo(t,n)}function nSqrTo(e,t){e.squareTo(t)}function bnPow(e){return this.exp(e,new NullExp)}function bnpMultiplyLowerTo(e,t,n){var a=Math.min(this.t+e.t,t);for(n.s=0,n.t=a;a>0;)n[--a]=0;var i;for(i=n.t-this.t;i>a;++a)n[a+this.t]=this.am(0,e[a],n,a,0,this.t);for(i=Math.min(e.t,t);i>a;++a)this.am(0,e[a],n,a,0,t-a);n.clamp()}function bnpMultiplyUpperTo(e,t,n){--t;var a=n.t=this.t+e.t-t;for(n.s=0;--a>=0;)n[a]=0;for(a=Math.max(t-this.t,0);a<e.t;++a)n[this.t+a-t]=this.am(t-a,e[a],n,0,0,this.t+a-t);n.clamp(),n.drShiftTo(1,n)}function Barrett(e){this.r2=nbi(),this.q3=nbi(),BigInteger.ONE.dlShiftTo(2*e.t,this.r2),this.mu=this.r2.divide(e),this.m=e}function barrettConvert(e){if(e.s<0||e.t>2*this.m.t)return e.mod(this.m);if(e.compareTo(this.m)<0)return e;var t=nbi();return e.copyTo(t),this.reduce(t),t}function barrettRevert(e){return e}function barrettReduce(e){for(e.drShiftTo(this.m.t-1,this.r2),e.t>this.m.t+1&&(e.t=this.m.t+1,e.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);e.compareTo(this.r2)<0;)e.dAddOffset(1,this.m.t+1);for(e.subTo(this.r2,e);e.compareTo(this.m)>=0;)e.subTo(this.m,e)}function barrettSqrTo(e,t){e.squareTo(t),this.reduce(t)}function barrettMulTo(e,t,n){e.multiplyTo(t,n),this.reduce(n)}function bnModPow(e,t){var n,a,i=e.bitLength(),o=nbv(1);if(0>=i)return o;n=18>i?1:48>i?3:144>i?4:768>i?5:6,a=8>i?new Classic(t):t.isEven()?new Barrett(t):new Montgomery(t);var s=new Array,r=3,l=n-1,c=(1<<n)-1;if(s[1]=a.convert(this),n>1){var d=nbi();for(a.sqrTo(s[1],d);c>=r;)s[r]=nbi(),a.mulTo(d,s[r-2],s[r]),r+=2}var u,p,m=e.t-1,g=!0,h=nbi();for(i=nbits(e[m])-1;m>=0;){for(i>=l?u=e[m]>>i-l&c:(u=(e[m]&(1<<i+1)-1)<<l-i,m>0&&(u|=e[m-1]>>this.DB+i-l)),r=n;0==(1&u);)u>>=1,--r;if((i-=r)<0&&(i+=this.DB,--m),g)s[u].copyTo(o),g=!1;else{for(;r>1;)a.sqrTo(o,h),a.sqrTo(h,o),r-=2;r>0?a.sqrTo(o,h):(p=o,o=h,h=p),a.mulTo(h,s[u],o)}for(;m>=0&&0==(e[m]&1<<i);)a.sqrTo(o,h),p=o,o=h,h=p,--i<0&&(i=this.DB-1,--m)}return a.revert(o)}function bnGCD(e){var t=this.s<0?this.negate():this.clone(),n=e.s<0?e.negate():e.clone();if(t.compareTo(n)<0){var a=t;t=n,n=a}var i=t.getLowestSetBit(),o=n.getLowestSetBit();if(0>o)return t;for(o>i&&(o=i),o>0&&(t.rShiftTo(o,t),n.rShiftTo(o,n));t.signum()>0;)(i=t.getLowestSetBit())>0&&t.rShiftTo(i,t),(i=n.getLowestSetBit())>0&&n.rShiftTo(i,n),t.compareTo(n)>=0?(t.subTo(n,t),t.rShiftTo(1,t)):(n.subTo(t,n),n.rShiftTo(1,n));return o>0&&n.lShiftTo(o,n),n}function bnpModInt(e){if(0>=e)return 0;var t=this.DV%e,n=this.s<0?e-1:0;if(this.t>0)if(0==t)n=this[0]%e;else for(var a=this.t-1;a>=0;--a)n=(t*n+this[a])%e;return n}function bnModInverse(e){var t=e.isEven();if(this.isEven()&&t||0==e.signum())return BigInteger.ZERO;for(var n=e.clone(),a=this.clone(),i=nbv(1),o=nbv(0),s=nbv(0),r=nbv(1);0!=n.signum();){for(;n.isEven();)n.rShiftTo(1,n),t?(i.isEven()&&o.isEven()||(i.addTo(this,i),o.subTo(e,o)),i.rShiftTo(1,i)):o.isEven()||o.subTo(e,o),o.rShiftTo(1,o);for(;a.isEven();)a.rShiftTo(1,a),t?(s.isEven()&&r.isEven()||(s.addTo(this,s),r.subTo(e,r)),s.rShiftTo(1,s)):r.isEven()||r.subTo(e,r),r.rShiftTo(1,r);n.compareTo(a)>=0?(n.subTo(a,n),t&&i.subTo(s,i),o.subTo(r,o)):(a.subTo(n,a),t&&s.subTo(i,s),r.subTo(o,r))}return 0!=a.compareTo(BigInteger.ONE)?BigInteger.ZERO:r.compareTo(e)>=0?r.subtract(e):r.signum()<0?(r.addTo(e,r),r.signum()<0?r.add(e):r):r}function bnIsProbablePrime(e){var t,n=this.abs();if(1==n.t&&n[0]<=lowprimes[lowprimes.length-1]){for(t=0;t<lowprimes.length;++t)if(n[0]==lowprimes[t])return!0;return!1}if(n.isEven())return!1;for(t=1;t<lowprimes.length;){for(var a=lowprimes[t],i=t+1;i<lowprimes.length&&lplim>a;)a*=lowprimes[i++];for(a=n.modInt(a);i>t;)if(a%lowprimes[t++]==0)return!1}return n.millerRabin(e)}function bnpMillerRabin(e){var t=this.subtract(BigInteger.ONE),n=t.getLowestSetBit();if(0>=n)return!1;var a=t.shiftRight(n);e=e+1>>1,e>lowprimes.length&&(e=lowprimes.length);for(var i=nbi(),o=0;e>o;++o){i.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);var s=i.modPow(a,this);if(0!=s.compareTo(BigInteger.ONE)&&0!=s.compareTo(t)){for(var r=1;r++<n&&0!=s.compareTo(t);)if(s=s.modPowInt(2,this),0==s.compareTo(BigInteger.ONE))return!1;if(0!=s.compareTo(t))return!1}}return!0}function rng_seed_int(e){rng_pool[rng_pptr++]^=255&e,rng_pool[rng_pptr++]^=e>>8&255,rng_pool[rng_pptr++]^=e>>16&255,rng_pool[rng_pptr++]^=e>>24&255,rng_pptr>=rng_psize&&(rng_pptr-=rng_psize)}function rng_seed_time(){rng_seed_int((new Date).getTime())}function rng_get_byte(){if(null==rng_state){for(rng_seed_time(),rng_state=prng_newstate(),rng_state.init(rng_pool),rng_pptr=0;rng_pptr<rng_pool.length;++rng_pptr)rng_pool[rng_pptr]=0;rng_pptr=0}return rng_state.next()}function rng_get_bytes(e){var t;for(t=0;t<e.length;++t)e[t]=rng_get_byte()}function SecureRandom(){}function Arcfour(){this.i=0,this.j=0,this.S=new Array}function ARC4init(e){var t,n,a;for(t=0;256>t;++t)this.S[t]=t;for(n=0,t=0;256>t;++t)n=n+this.S[t]+e[t%e.length]&255,a=this.S[t],this.S[t]=this.S[n],this.S[n]=a;this.i=0,this.j=0}function ARC4next(){var e;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,e=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=e,this.S[e+this.S[this.i]&255]}function prng_newstate(){return new Arcfour}function findPrimes(e){var t,n,a,i;for(n=new Array(e),t=0;e>t;t++)n[t]=0;for(n[0]=2,a=0;n[a]<e;){for(t=n[a]*n[a];e>t;t+=n[a])n[t]=1;for(a++,n[a]=n[a-1]+1;n[a]<e&&n[n[a]];n[a]++);}for(i=new Array(a),t=0;a>t;t++)i[t]=n[t];return i}function millerRabinInt(e,t){return mr_x1.length!=e.length&&(mr_x1=dup(e),mr_r=dup(e),mr_a=dup(e)),copyInt_(mr_a,t),millerRabin(e,mr_a)}function millerRabin(e,t){var n,a,i,o;for(mr_x1.length!=e.length&&(mr_x1=dup(e),mr_r=dup(e),mr_a=dup(e)),copy_(mr_a,t),copy_(mr_r,e),copy_(mr_x1,e),addInt_(mr_r,-1),addInt_(mr_x1,-1),i=0,n=0;n<mr_r.length;n++)for(a=1;mask>a;a<<=1)e[n]&a?(o=i<mr_r.length+bpe?i:0,n=mr_r.length,a=mask):i++;if(o&&rightShift_(mr_r,o),powMod_(mr_a,mr_r,e),!equalsInt(mr_a,1)&&!equals(mr_a,mr_x1)){for(a=1;o-1>=a&&!equals(mr_a,mr_x1);){if(squareMod_(mr_a,e),equalsInt(mr_a,1))return 0;a++}if(!equals(mr_a,mr_x1))return 0}return 1}function bitSize(e){var t,n,a;for(t=e.length-1;0==e[t]&&t>0;t--);for(n=0,a=e[t];a;a>>=1,n++);return n+=bpe*t}function expand(e,t){var n=int2bigInt(0,(e.length>t?e.length:t)*bpe,0);return copy_(n,e),n}function randTruePrime(e){var t=int2bigInt(0,e,0);return randTruePrime_(t,e),trim(t,1)}function randProbPrime(e){return e>=600?randProbPrimeRounds(e,2):e>=550?randProbPrimeRounds(e,4):e>=500?randProbPrimeRounds(e,5):e>=400?randProbPrimeRounds(e,6):e>=350?randProbPrimeRounds(e,7):e>=300?randProbPrimeRounds(e,9):e>=250?randProbPrimeRounds(e,12):e>=200?randProbPrimeRounds(e,15):e>=150?randProbPrimeRounds(e,18):e>=100?randProbPrimeRounds(e,27):randProbPrimeRounds(e,40)}function randProbPrimeRounds(e,t){var n,a,i,o;for(o=3e4,n=int2bigInt(0,e,0),0==primes.length&&(primes=findPrimes(3e4)),rpprb.length!=n.length&&(rpprb=dup(n));;){for(randBigInt_(n,e,0),n[0]|=1,i=0,a=0;a<primes.length&&primes[a]<=o;a++)if(0==modInt(n,primes[a])&&!equalsInt(n,primes[a])){i=1;break}for(a=0;t>a&&!i;a++){for(randBigInt_(rpprb,e,0);!greater(n,rpprb);)randBigInt_(rpprb,e,0);millerRabin(n,rpprb)||(i=1)}if(!i)return n}}function mod(e,t){var n=dup(e);return mod_(n,t),trim(n,1)}function addInt(e,t){var n=expand(e,e.length+1);return addInt_(n,t),trim(n,1)}function mult(e,t){var n=expand(e,e.length+t.length);return mult_(n,t),trim(n,1)}function powMod(e,t,n){var a=expand(e,n.length);return powMod_(a,trim(t,2),trim(n,2),0),trim(a,1)}function sub(e,t){var n=expand(e,e.length>t.length?e.length+1:t.length+1);return sub_(n,t),trim(n,1)}function add(e,t){var n=expand(e,e.length>t.length?e.length+1:t.length+1);return add_(n,t),trim(n,1)}function inverseMod(e,t){var n,a=expand(e,t.length);return n=inverseMod_(a,t),n?trim(a,1):null}function multMod(e,t,n){var a=expand(e,n.length);return multMod_(a,t,n),trim(a,1)}function randTruePrime_(e,t){var n,a,i,o,s,r,l,c,d,u,p;if(0==primes.length&&(primes=findPrimes(3e4)),0==pows.length)for(pows=new Array(512),s=0;512>s;s++)pows[s]=Math.pow(2,s/511-1);if(n=.1,a=20,recLimit=20,s_i2.length!=e.length&&(s_i2=dup(e),s_R=dup(e),s_n1=dup(e),s_r2=dup(e),s_d=dup(e),s_x1=dup(e),s_x2=dup(e),s_b=dup(e),s_n=dup(e),s_i=dup(e),s_rm=dup(e),s_q=dup(e),s_a=dup(e),s_aa=dup(e)),recLimit>=t){for(i=(1<<(t+2>>1))-1,copyInt_(e,0),o=1;o;)for(o=0,e[0]=1|1<<t-1|Math.floor(Math.random()*(1<<t)),s=1;s<primes.length&&(primes[s]&i)==primes[s];s++)if(0==e[0]%primes[s]){o=1;break}return void carry_(e)}if(l=n*t*t,t>2*a)for(r=1;a>=t-t*r;)r=pows[Math.floor(512*Math.random())];else r=.5;for(p=Math.floor(r*t)+1,randTruePrime_(s_q,p),copyInt_(s_i2,0),s_i2[Math.floor((t-2)/bpe)]|=1<<(t-2)%bpe,divide_(s_i2,s_q,s_i,s_rm),d=bitSize(s_i);;){for(;randBigInt_(s_R,d,0),!greater(s_i,s_R););for(addInt_(s_R,1),add_(s_R,s_i),copy_(s_n,s_q),mult_(s_n,s_R),multInt_(s_n,2),addInt_(s_n,1),copy_(s_r2,s_R),multInt_(s_r2,2),c=0,s=0;s<primes.length&&primes[s]<l;s++)if(0==modInt(s_n,primes[s])&&!equalsInt(s_n,primes[s])){c=1;break}if(c||millerRabinInt(s_n,2)||(c=1),!c){for(addInt_(s_n,-3),s=s_n.length-1;0==s_n[s]&&s>0;s--);for(u=0,w=s_n[s];w;w>>=1,u++);for(u+=bpe*s;randBigInt_(s_a,u,0),!greater(s_n,s_a););if(addInt_(s_n,3),addInt_(s_a,2),copy_(s_b,s_a),copy_(s_n1,s_n),addInt_(s_n1,-1),powMod_(s_b,s_n1,s_n),addInt_(s_b,-1),isZero(s_b)&&(copy_(s_b,s_a),powMod_(s_b,s_r2,s_n),addInt_(s_b,-1),copy_(s_aa,s_n),copy_(s_d,s_b),GCD_(s_d,s_n),equalsInt(s_d,1)))return void copy_(e,s_aa)}}}function randBigInt(e,t){var n,a;return n=Math.floor((e-1)/bpe)+2,a=int2bigInt(0,0,n),randBigInt_(a,e,t),a}function randBigInt_(e,t,n){var a,i;for(a=0;a<e.length;a++)e[a]=0;for(i=Math.floor((t-1)/bpe)+1,a=0;i>a;a++)e[a]=Math.floor(Math.random()*(1<<bpe-1));e[i-1]&=(2<<(t-1)%bpe)-1,1==n&&(e[i-1]|=1<<(t-1)%bpe)}function GCD(e,t){var n,a;return n=dup(e),a=dup(t),GCD_(n,a),n}function GCD_(e,n){var a,i,o,s,r,l,c,d,u;for(T.length!=e.length&&(T=dup(e)),u=1;u;){for(u=0,a=1;a<n.length;a++)if(n[a]){u=1;break}if(!u)break;for(a=e.length;!e[a]&&a>=0;a--);for(i=e[a],o=n[a],s=1,r=0,l=0,c=1;o+l&&o+c&&(d=Math.floor((i+s)/(o+l)),qp=Math.floor((i+r)/(o+c)),d==qp);)t=s-d*l,s=l,l=t,t=r-d*c,r=c,c=t,t=i-d*o,i=o,o=t;r?(copy_(T,e),linComb_(e,n,s,r),linComb_(n,T,c,l)):(mod_(e,n),copy_(T,e),copy_(e,n),copy_(n,T))}if(0!=n[0])for(t=modInt(e,n[0]),copyInt_(e,n[0]),n[0]=t;n[0];)e[0]%=n[0],t=e[0],e[0]=n[0],n[0]=t}function inverseMod_(e,t){var n=1+2*Math.max(e.length,t.length);if(!(1&e[0]||1&t[0]))return copyInt_(e,0),0;for(eg_u.length!=n&&(eg_u=new Array(n),eg_v=new Array(n),eg_A=new Array(n),eg_B=new Array(n),eg_C=new Array(n),eg_D=new Array(n)),copy_(eg_u,e),copy_(eg_v,t),copyInt_(eg_A,1),copyInt_(eg_B,0),copyInt_(eg_C,0),copyInt_(eg_D,1);;){for(;!(1&eg_u[0]);)halve_(eg_u),1&eg_A[0]||1&eg_B[0]?(add_(eg_A,t),halve_(eg_A),sub_(eg_B,e),halve_(eg_B)):(halve_(eg_A),halve_(eg_B));for(;!(1&eg_v[0]);)halve_(eg_v),1&eg_C[0]||1&eg_D[0]?(add_(eg_C,t),halve_(eg_C),sub_(eg_D,e),halve_(eg_D)):(halve_(eg_C),halve_(eg_D));if(greater(eg_v,eg_u)?(sub_(eg_v,eg_u),sub_(eg_C,eg_A),sub_(eg_D,eg_B)):(sub_(eg_u,eg_v),sub_(eg_A,eg_C),sub_(eg_B,eg_D)),equalsInt(eg_u,0)){for(;negative(eg_C);)add_(eg_C,t);return copy_(e,eg_C),equalsInt(eg_v,1)?1:(copyInt_(e,0),0)}}}function inverseModInt(e,t){for(var n=1,a=0;;){if(1==e)return n;if(0==e)return 0;if(a-=n*Math.floor(t/e),t%=e,1==t)return a;if(0==t)return 0;n-=a*Math.floor(e/t),e%=t}}function inverseModInt_(e,t){return inverseModInt(e,t)}function eGCD_(e,t,n,a,i){var o=0,s=Math.max(e.length,t.length);for(eg_u.length!=s&&(eg_u=new Array(s),eg_A=new Array(s),eg_B=new Array(s),eg_C=new Array(s),eg_D=new Array(s));!(1&e[0]||1&t[0]);)halve_(e),halve_(t),o++;for(copy_(eg_u,e),copy_(n,t),copyInt_(eg_A,1),copyInt_(eg_B,0),copyInt_(eg_C,0),copyInt_(eg_D,1);;){for(;!(1&eg_u[0]);)halve_(eg_u),1&eg_A[0]||1&eg_B[0]?(add_(eg_A,t),halve_(eg_A),sub_(eg_B,e),halve_(eg_B)):(halve_(eg_A),halve_(eg_B));for(;!(1&n[0]);)halve_(n),1&eg_C[0]||1&eg_D[0]?(add_(eg_C,t),halve_(eg_C),sub_(eg_D,e),halve_(eg_D)):(halve_(eg_C),halve_(eg_D));if(greater(n,eg_u)?(sub_(n,eg_u),sub_(eg_C,eg_A),sub_(eg_D,eg_B)):(sub_(eg_u,n),sub_(eg_A,eg_C),sub_(eg_B,eg_D)),equalsInt(eg_u,0)){for(;negative(eg_C);)add_(eg_C,t),sub_(eg_D,e);return multInt_(eg_D,-1),copy_(a,eg_C),copy_(i,eg_D),void leftShift_(n,o)}}}function negative(e){return e[e.length-1]>>bpe-1&1}function greaterShift(e,t,n){var a,i=e.length,o=t.length;for(k=o>i+n?i+n:o,a=o-1-n;i>a&&a>=0;a++)if(e[a]>0)return 1;for(a=i-1+n;o>a;a++)if(t[a]>0)return 0;for(a=k-1;a>=n;a--){if(e[a-n]>t[a])return 1;if(e[a-n]<t[a])return 0}return 0}function greater(e,t){var n,a=e.length<t.length?e.length:t.length;for(n=e.length;n<t.length;n++)if(t[n])return 0;for(n=t.length;n<e.length;n++)if(e[n])return 1;for(n=a-1;n>=0;n--){if(e[n]>t[n])return 1;if(e[n]<t[n])return 0}return 0}function divide_(e,t,n,a){var i,o,s,r,l,c,d,u;for(copy_(a,e),o=t.length;0==t[o-1];o--);for(u=t[o-1],d=0;u;d++)u>>=1;for(d=bpe-d,leftShift_(t,d),leftShift_(a,d),i=a.length;0==a[i-1]&&i>o;i--);for(copyInt_(n,0);!greaterShift(t,a,i-o);)subShift_(a,t,i-o),n[i-o]++;for(s=i-1;s>=o;s--){for(n[s-o]=a[s]==t[o-1]?mask:Math.floor((a[s]*radix+a[s-1])/t[o-1]);l=(o>1?t[o-2]:0)*n[s-o],c=l>>bpe,l&=mask,r=c+n[s-o]*t[o-1],c=r>>bpe,r&=mask,c==a[s]?r==a[s-1]?l>(s>1?a[s-2]:0):r>a[s-1]:c>a[s];)n[s-o]--;linCombShift_(a,t,-n[s-o],s-o),negative(a)&&(addShift_(a,t,s-o),n[s-o]--)}rightShift_(t,d),rightShift_(a,d)}function carry_(e){var t,n,a,i;for(n=e.length,a=0,t=0;n>t;t++)a+=e[t],i=0,0>a&&(i=-(a>>bpe),a+=i*radix),e[t]=a&mask,a=(a>>bpe)-i}function modInt(e,t){var n,a=0;for(n=e.length-1;n>=0;n--)a=(a*radix+e[n])%t;return a}function int2bigInt(e,t,n){var a;return a=Math.ceil(t/bpe)+1,a=n>a?n:a,buff=new Array(a),copyInt_(buff,e),buff}function str2bigInt(e,t,n){var a,i,o,s,r,l=e.length;if(-1==t){for(o=new Array(0);;){for(s=new Array(o.length+1),i=0;i<o.length;i++)s[i+1]=o[i];if(s[0]=parseInt(e,10),o=s,a=e.indexOf(",",0),1>a)break;if(e=e.substring(a+1),0==e.length)break}return o.length<n?(s=new Array(n),copy_(s,o),s):o}for(o=int2bigInt(0,t*l,0),i=0;l>i&&(a=digitsStr.indexOf(e.substring(i,i+1),0),36>=t&&a>=36&&(a-=26),!(a>=t||0>a));i++)multInt_(o,t),addInt_(o,a);for(l=o.length;l>0&&!o[l-1];l--);for(l=n>l+1?n:l+1,s=new Array(l),r=l<o.length?l:o.length,i=0;r>i;i++)s[i]=o[i];for(;l>i;i++)s[i]=0;return s}function equalsInt(e,t){var n;if(e[0]!=t)return 0;for(n=1;n<e.length;n++)if(e[n])return 0;return 1}function equals(e,t){var n,a=e.length<t.length?e.length:t.length;for(n=0;a>n;n++)if(e[n]!=t[n])return 0;if(e.length>t.length){for(;n<e.length;n++)if(e[n])return 0}else for(;n<t.length;n++)if(t[n])return 0;return 1}function isZero(e){var t;for(t=0;t<e.length;t++)if(e[t])return 0;return 1}function bigInt2str(e,t){var n,a,i="";if(s6.length!=e.length?s6=dup(e):copy_(s6,e),-1==t){for(n=e.length-1;n>0;n--)i+=e[n]+",";i+=e[0]}else for(;!isZero(s6);)a=divInt_(s6,t),i=digitsStr.substring(a,a+1)+i;return 0==i.length&&(i="0"),i}function dup(e){return buff=new Array(e.length),copy_(buff,e),buff}function copy_(e,t){var n,a=e.length<t.length?e.length:t.length;for(n=0;a>n;n++)e[n]=t[n];for(n=a;n<e.length;n++)e[n]=0}function copyInt_(e,t){var n,a;for(a=t,n=0;n<e.length;n++)e[n]=a&mask,a>>=bpe}function addInt_(e,t){var n,a,i,o;for(e[0]+=t,a=e.length,i=0,n=0;a>n;n++)if(i+=e[n],o=0,0>i&&(o=-(i>>bpe),i+=o*radix),e[n]=i&mask,i=(i>>bpe)-o,!i)return}function rightShift_(e,t){var n,a=Math.floor(t/bpe);if(a){for(n=0;n<e.length-a;n++)e[n]=e[n+a];for(;n<e.length;n++)e[n]=0;t%=bpe}for(n=0;n<e.length-1;n++)e[n]=mask&(e[n+1]<<bpe-t|e[n]>>t);e[n]>>=t}function halve_(e){var t;for(t=0;t<e.length-1;t++)e[t]=mask&(e[t+1]<<bpe-1|e[t]>>1);e[t]=e[t]>>1|e[t]&radix>>1}function leftShift_(e,t){var n,a=Math.floor(t/bpe);if(a){for(n=e.length;n>=a;n--)e[n]=e[n-a];for(;n>=0;n--)e[n]=0;t%=bpe}if(t){for(n=e.length-1;n>0;n--)e[n]=mask&(e[n]<<t|e[n-1]>>bpe-t);e[n]=mask&e[n]<<t}}function multInt_(e,t){var n,a,i,o;if(t)for(a=e.length,i=0,n=0;a>n;n++)i+=e[n]*t,o=0,0>i&&(o=-(i>>bpe),i+=o*radix),e[n]=i&mask,i=(i>>bpe)-o}function divInt_(e,t){var n,a,i=0;for(n=e.length-1;n>=0;n--)a=i*radix+e[n],e[n]=Math.floor(a/t),i=a%t;return i}function linComb_(e,t,n,a){var i,o,s,r;for(s=e.length<t.length?e.length:t.length,r=e.length,o=0,i=0;s>i;i++)o+=n*e[i]+a*t[i],e[i]=o&mask,o>>=bpe;for(i=s;r>i;i++)o+=n*e[i],e[i]=o&mask,o>>=bpe}function linCombShift_(e,t,n,a){var i,o,s,r;for(s=e.length<a+t.length?e.length:a+t.length,r=e.length,o=0,i=a;s>i;i++)o+=e[i]+n*t[i-a],e[i]=o&mask,o>>=bpe;for(i=s;o&&r>i;i++)o+=e[i],e[i]=o&mask,o>>=bpe}function addShift_(e,t,n){var a,i,o,s;for(o=e.length<n+t.length?e.length:n+t.length,s=e.length,i=0,a=n;o>a;a++)i+=e[a]+t[a-n],e[a]=i&mask,i>>=bpe;for(a=o;i&&s>a;a++)i+=e[a],e[a]=i&mask,i>>=bpe}function subShift_(e,t,n){var a,i,o,s;for(o=e.length<n+t.length?e.length:n+t.length,s=e.length,i=0,a=n;o>a;a++)i+=e[a]-t[a-n],e[a]=i&mask,i>>=bpe;for(a=o;i&&s>a;a++)i+=e[a],e[a]=i&mask,i>>=bpe}function sub_(e,t){var n,a,i;for(i=e.length<t.length?e.length:t.length,a=0,n=0;i>n;n++)a+=e[n]-t[n],e[n]=a&mask,a>>=bpe;for(n=i;a&&n<e.length;n++)a+=e[n],e[n]=a&mask,a>>=bpe}function add_(e,t){var n,a,i;for(i=e.length<t.length?e.length:t.length,a=0,n=0;i>n;n++)a+=e[n]+t[n],e[n]=a&mask,a>>=bpe;for(n=i;a&&n<e.length;n++)a+=e[n],e[n]=a&mask,a>>=bpe}function mult_(e,t){var n;for(ss.length!=2*e.length&&(ss=new Array(2*e.length)),copyInt_(ss,0),n=0;n<t.length;n++)t[n]&&linCombShift_(ss,e,t[n],n);copy_(e,ss)}function mod_(e,t){s4.length!=e.length?s4=dup(e):copy_(s4,e),s5.length!=e.length&&(s5=dup(e)),divide_(s4,t,s5,e)}function multMod_(e,t,n){var a;for(s0.length!=2*e.length&&(s0=new Array(2*e.length)),copyInt_(s0,0),a=0;a<t.length;a++)t[a]&&linCombShift_(s0,e,t[a],a);mod_(s0,n),copy_(e,s0)}function squareMod_(e,t){var n,a,i,o,s;for(o=e.length;o>0&&!e[o-1];o--);for(s=o>t.length?2*o:2*t.length,s0.length!=s&&(s0=new Array(s)),copyInt_(s0,0),n=0;o>n;n++){for(i=s0[2*n]+e[n]*e[n],s0[2*n]=i&mask,i>>=bpe,a=n+1;o>a;a++)i=s0[n+a]+2*e[n]*e[a]+i,s0[n+a]=i&mask,i>>=bpe;s0[n+o]=i}mod_(s0,t),copy_(e,s0)}function trim(e,t){var n,a;for(n=e.length;n>0&&!e[n-1];n--);return a=new Array(n+t),copy_(a,e),a}function powMod_(e,t,n){var a,i,o,s;if(s7.length!=n.length&&(s7=dup(n)),0!=(1&n[0])){for(copyInt_(s7,0),o=n.length;o>0&&!n[o-1];o--);for(s=radix-inverseModInt(modInt(n,radix),radix),s7[o]=1,multMod_(e,s7,n),s3.length!=e.length?s3=dup(e):copy_(s3,e),a=t.length-1;a>0&!t[a];a--);if(0==t[a])return void copyInt_(e,1);for(i=1<<bpe-1;i&&!(t[a]&i);i>>=1);for(;;){if(!(i>>=1)){if(a--,0>a)return void mont_(e,one,n,s);i=1<<bpe-1}mont_(e,e,n,s),i&t[a]&&mont_(e,s3,n,s)}}else for(copy_(s7,e),copyInt_(e,1);!equalsInt(t,0);)1&t[0]&&multMod_(e,s7,n),divInt_(t,2),squareMod_(s7,n)}function mont_(e,t,n,a){var i,o,s,r,l,c,d=n.length,u=t.length;for(sa.length!=d&&(sa=new Array(d)),copyInt_(sa,0);d>0&&0==n[d-1];d--);for(;u>0&&0==t[u-1];u--);for(c=sa.length-1,i=0;d>i;i++){for(l=sa[0]+e[i]*t[0],r=(l&mask)*a&mask,s=l+r*n[0]>>bpe,l=e[i],o=1;u-4>o;)s+=sa[o]+r*n[o]+l*t[o],sa[o-1]=s&mask,s>>=bpe,o++,s+=sa[o]+r*n[o]+l*t[o],sa[o-1]=s&mask,s>>=bpe,o++,s+=sa[o]+r*n[o]+l*t[o],sa[o-1]=s&mask,s>>=bpe,o++,s+=sa[o]+r*n[o]+l*t[o],sa[o-1]=s&mask,s>>=bpe,o++,s+=sa[o]+r*n[o]+l*t[o],sa[o-1]=s&mask,s>>=bpe,o++;for(;u>o;)s+=sa[o]+r*n[o]+l*t[o],sa[o-1]=s&mask,s>>=bpe,o++;for(;d-4>o;)s+=sa[o]+r*n[o],sa[o-1]=s&mask,s>>=bpe,o++,s+=sa[o]+r*n[o],sa[o-1]=s&mask,s>>=bpe,o++,s+=sa[o]+r*n[o],sa[o-1]=s&mask,s>>=bpe,o++,s+=sa[o]+r*n[o],sa[o-1]=s&mask,s>>=bpe,o++,s+=sa[o]+r*n[o],sa[o-1]=s&mask,s>>=bpe,o++;for(;d>o;)s+=sa[o]+r*n[o],sa[o-1]=s&mask,s>>=bpe,o++;for(;c>o;)s+=sa[o],sa[o-1]=s&mask,s>>=bpe,o++;sa[o-1]=s&mask}greater(n,sa)||sub_(sa,n),copy_(e,sa)}function dT(){return"["+(((new Date).getTime()-_logTimer)/1e3).toFixed(3)+"]"}function checkClick(e,t){return 1==e.which&&(e.ctrlKey||e.metaKey)||2==e.which?!0:(t||e.preventDefault(),!1)}function isInDOM(e,t){return e?(t=t||document.body,e==t?!0:isInDOM(e.parentNode,t)):!1}function checkDragEvent(e){if(!e||e.target&&("IMG"==e.target.tagName||"A"==e.target.tagName))return!1;if(!e.dataTransfer||!e.dataTransfer.types)return!0;for(var t=0;t<e.dataTransfer.types.length;t++)if("Files"==e.dataTransfer.types[t])return!0;
return!1}function cancelEvent(e){return e=e||window.event,e&&(e=e.originalEvent||e,e.stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault(),e.returnValue=!1,e.cancelBubble=!0),!1}function hasOnlick(e){if(e.onclick||e.getAttribute("ng-click"))return!0;var t=$._data(e,"events");return t&&(t.click||t.mousedown)?!0:!1}function getScrollWidth(){var e=$("<div>").css({position:"absolute",width:100,height:100,overflow:"scroll",top:-9999}).appendTo($(document.body)),t=e[0].offsetWidth-e[0].clientWidth;return e.remove(),t}function onCtrlEnter(e,t){$(e).on("keydown",function(e){return 13==e.keyCode&&(e.ctrlKey||e.metaKey)?(t(),cancelEvent(e)):void 0})}function setFieldSelection(e,t,n){e=$(e)[0];try{if(e.focus(),(void 0===t||t===!1)&&(t=e.value.length),(void 0===n||n===!1)&&(n=t),e.createTextRange){var a=e.createTextRange();a.collapse(!0),a.moveEnd("character",n),a.moveStart("character",t),a.select()}else e.setSelectionRange&&e.setSelectionRange(t,n)}catch(i){}}function getFieldSelection(e){if(e.selectionStart)return e.selectionStart;if(!document.selection)return 0;var t="",n=document.selection.createRange(),a=n.text,i=n.duplicate(),o=0;try{i.moveToElementText(e)}catch(s){return 0}return n.text=a+t,o=i.text.indexOf(t),n.moveStart("character",-1),n.text="",o}function getRichValue(e){if(!e)return"";var t=[],n=[];getRichElementValue(e,t,n),n.length&&t.push(n.join(""));var a=t.join("\n");return a=a.replace(/\u00A0/g," ")}function getRichValueWithCaret(e){if(!e)return[];var t,n,a=[],i=[],o=window.getSelection?window.getSelection():!1;if(o&&o.rangeCount){var s=o.getRangeAt(0);s.startContainer&&s.startContainer==s.endContainer&&s.startOffset==s.endOffset&&(t=s.startContainer,n=s.startOffset)}getRichElementValue(e,a,i,t,n),i.length&&a.push(i.join(""));var r=a.join("\n"),l=r.indexOf("");return-1!=l&&(r=r.substr(0,l)+r.substr(l+1)),r=r.replace(/\u00A0/g," "),[r,l]}function getRichElementValue(e,t,n,a,i){if(3!=e.nodeType){if(1==e.nodeType){var o,s=a===e,r="DIV"==e.tagName||"P"==e.tagName;r&&n.length||"BR"==e.tagName?(t.push(n.join("")),n.splice(0,n.length)):"IMG"==e.tagName&&e.alt&&n.push(e.alt),s&&!i&&n.push("");for(var o=e.firstChild;o;)getRichElementValue(o,t,n,a,i),o=o.nextSibling;s&&i&&n.push(""),r&&n.length&&(t.push(n.join("")),n.splice(0,n.length))}}else if(a===e){var l=e.nodeValue;n.push(l.substr(0,i)+""+l.substr(i))}else n.push(e.nodeValue)}function setRichFocus(e,t,n){if(e.focus(),!t||t.parentNode!=e||t.nextSibling||n||(e.removeChild(t),t=null),window.getSelection&&document.createRange){var a=document.createRange();t?a.selectNode(t):a.selectNodeContents(e),n||a.collapse(!1);var i=window.getSelection();i.removeAllRanges(),i.addRange(a)}else if(void 0!==document.body.createTextRange){var o=document.body.createTextRange();o.moveToElementText(t||e),n||o.collapse(!1),o.select()}}function getSelectedText(){var e=(window.getSelection&&window.getSelection()||document.getSelection&&document.getSelection()||document.selection&&document.selection.createRange().text||"").toString().replace(/^\s+|\s+$/g,"");return e}function scrollToNode(e,t,n){var a=t.offsetTop-15,i=t.offsetHeight+30,o=e.scrollTop,s=e.clientHeight;o>a?(e.scrollTop=a,$(n).nanoScroller({flash:!0})):a+i-s>o&&(e.scrollTop=a+i-s,$(n).nanoScroller({flash:!0}))}function onContentLoaded(e){e=onAnimationFrameCallback(e),setZeroTimeout(e)}function tsNow(e){var t=+new Date+(window.tsOffset||0);return e?Math.floor(t/1e3):t}function safeReplaceObject(e,t){for(var n in e)t.hasOwnProperty(n)||"$"==n.charAt(0)||delete e[n];for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])}function listMergeSorted(e,t){e=e||[],t=t||[];for(var n=angular.copy(e),a=e.length?e[e.length-1]:4294967295,i=0;i<t.length;i++)t[i]<a&&n.push(t[i]);return n}function listUniqSorted(e){e=e||[];for(var t=[],n=!1,a=0;a<e.length;a++)e[a]!==n&&t.push(e[a]),n=e[a];return t}function templateUrl(e){var t={confirm_modal:"desktop",error_modal:"desktop",media_modal_layout:"desktop",slider:"desktop",reply_message:"desktop",message_body:"desktop",message_media:"desktop",forwarded_messages:"desktop",chat_invite_link_modal:"desktop",reply_markup:"desktop",short_message:"desktop",pinned_message:"desktop",channel_edit_modal:"desktop",megagroup_edit_modal:"desktop",inline_results:"desktop",composer_dropdown:"desktop"},n=t[e]||(Config.Mobile?"mobile":"desktop");return"partials/"+n+"/"+e+".html"}function encodeEntities(e){return e.replace(/&/g,"&amp;").replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,function(e){var t=e.charCodeAt(0),n=e.charCodeAt(1);return"&#"+(1024*(t-55296)+(n-56320)+65536)+";"}).replace(/([^\#-~| |!])/g,function(e){return"&#"+e.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}function calcImageInBox(e,t,n,a,i){var o=n,s=a;return e/t>n/a?s=parseInt(t*n/e):(o=parseInt(e*a/t),o>n&&(s=parseInt(s*n/o),o=n)),i&&o>=e&&s>=t&&(o=e,s=t),{w:o,h:s}}function versionCompare(e,t){"string"!=typeof e&&(e=""),"string"!=typeof t&&(t=""),e=e.replace(/^\s+|\s+$/g,"").split("."),t=t.replace(/^\s+|\s+$/g,"").split(".");var n,a=Math.max(e.length,t.length);for(n=0;a>n;n++)if(e[n]!=t[n])return e[n]>t[n]?1:-1;return 0}function bigint(e){return new BigInteger(e.toString(16),16)}function bigStringInt(e){return new BigInteger(e,10)}function dHexDump(e){for(var t=[],n=0;n<e.length;n++)!n||n%2||t.push(n%16?n%4?" ":" ":"\n"),t.push((e[n]<16?"0":"")+e[n].toString(16));console.log(t.join(""))}function bytesToHex(e){e=e||[];for(var t=[],n=0;n<e.length;n++)t.push((e[n]<16?"0":"")+(e[n]||0).toString(16));return t.join("")}function bytesFromHex(e){var t,n=e.length,a=0,i=[];for(e.length%2&&(i.push(parseInt(e.charAt(0),16)),a++),t=a;n>t;t+=2)i.push(parseInt(e.substr(t,2),16));return i}function bytesToBase64(e){for(var t,n="",a=e.length,i=0,o=0;a>o;o++)t=o%3,i|=e[o]<<(16>>>t&24),(2===t||a-o===1)&&(n+=String.fromCharCode(uint6ToBase64(i>>>18&63),uint6ToBase64(i>>>12&63),uint6ToBase64(i>>>6&63),uint6ToBase64(63&i)),i=0);return n.replace(/A(?=A$|$)/g,"=")}function uint6ToBase64(e){return 26>e?e+65:52>e?e+71:62>e?e-4:62===e?43:63===e?47:65}function base64ToBlob(e,t){for(var n=1024,a=atob(e),i=a.length,o=Math.ceil(i/n),s=new Array(o),r=0;o>r;++r){for(var l=r*n,c=Math.min(l+n,i),d=new Array(c-l),u=l,p=0;c>u;++p,++u)d[p]=a[u].charCodeAt(0);s[r]=new Uint8Array(d)}return blobConstruct(s,t)}function dataUrlToBlob(e){var t=e.split(","),n=t[1],a=t[0].split(":")[1].split(";")[0],i=base64ToBlob(n,a);return i}function blobConstruct(e,t){var n;try{n=new Blob(e,{type:t})}catch(a){var i=new BlobBuilder;angular.forEach(e,function(e){i.append(e)}),n=i.getBlob(t)}return n}function bytesCmp(e,t){var n=e.length;if(n!=t.length)return!1;for(var a=0;n>a;a++)if(e[a]!=t[a])return!1;return!0}function bytesXor(e,t){for(var n=e.length,a=[],i=0;n>i;++i)a[i]=e[i]^t[i];return a}function bytesToWords(e){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var t,n=e.length,a=[];for(t=0;n>t;t++)a[t>>>2]|=e[t]<<24-t%4*8;return new CryptoJS.lib.WordArray.init(a,n)}function bytesFromWords(e){for(var t=e.words,n=e.sigBytes,a=[],i=0;n>i;i++)a.push(t[i>>>2]>>>24-i%4*8&255);return a}function bytesFromBigInt(e,t){var n=e.toByteArray();if(t&&n.length<t){for(var a=[],i=0,o=t-n.length;o>i;i++)a[i]=0;n=n instanceof ArrayBuffer?bufferConcat(a,n):a.concat(n)}else for(;!n[0]&&(!t||n.length>t);)n=n.slice(1);return n}function bytesFromLeemonBigInt(e){var t=bigInt2str(e,16);return bytesFromHex(t)}function bytesToArrayBuffer(e){return new Uint8Array(e).buffer}function convertToArrayBuffer(e){return e instanceof ArrayBuffer?e:void 0!==e.buffer&&e.buffer.byteLength==e.length*e.BYTES_PER_ELEMENT?e.buffer:bytesToArrayBuffer(e)}function convertToUint8Array(e){return void 0!==e.buffer?e:new Uint8Array(e)}function convertToByteArray(e){if(Array.isArray(e))return e;e=convertToUint8Array(e);for(var t=[],n=0,a=e.length;a>n;n++)t.push(e[n]);return t}function bytesFromArrayBuffer(e){for(var t=e.byteLength,n=new Uint8Array(e),a=[],i=0;t>i;++i)a[i]=n[i];return a}function bufferConcat(e,t){var n=e.byteLength||e.length,a=t.byteLength||t.length,i=new Uint8Array(n+a);return i.set(e instanceof ArrayBuffer?new Uint8Array(e):e,0),i.set(t instanceof ArrayBuffer?new Uint8Array(t):t,n),i.buffer}function longToInts(e){var t=bigStringInt(e).divideAndRemainder(bigint(4294967296));return[t[0].intValue(),t[1].intValue()]}function longToBytes(e){return bytesFromWords({words:longToInts(e),sigBytes:8}).reverse()}function longFromInts(e,t){return bigint(e).shiftLeft(32).add(bigint(t)).toString(10)}function intToUint(e){return e=parseInt(e),0>e&&(e+=4294967296),e}function uintToInt(e){return e>2147483647&&(e-=4294967296),e}function sha1HashSync(e){this.rushaInstance=this.rushaInstance||new Rusha(1048576);var t=rushaInstance.rawDigest(e).buffer;return t}function sha1BytesSync(e){return bytesFromArrayBuffer(sha1HashSync(e))}function sha256HashSync(e){var t=CryptoJS.SHA256(bytesToWords(e)),n=bytesFromWords(t);return n}function rsaEncrypt(e,t){t=addPadding(t,255);var n=new BigInteger(e.modulus,16),a=new BigInteger(e.exponent,16),i=new BigInteger(t),o=i.modPowInt(a,n),s=bytesFromBigInt(o,256);return s}function addPadding(e,t,n){t=t||16;var a=e.byteLength||e.length,i=t-a%t;if(i>0&&t>i){var o=new Array(i);if(n)for(var s=0;i>s;s++)o[s]=0;else(new SecureRandom).nextBytes(o);e=e instanceof ArrayBuffer?bufferConcat(e,o):e.concat(o)}return e}function aesEncryptSync(e,t,n){e.byteLength||e.length;e=addPadding(e);var a=CryptoJS.AES.encrypt(bytesToWords(e),bytesToWords(t),{iv:bytesToWords(n),padding:CryptoJS.pad.NoPadding,mode:CryptoJS.mode.IGE}).ciphertext,i=bytesFromWords(a);return i}function aesDecryptSync(e,t,n){var a=CryptoJS.AES.decrypt({ciphertext:bytesToWords(e)},bytesToWords(t),{iv:bytesToWords(n),padding:CryptoJS.pad.NoPadding,mode:CryptoJS.mode.IGE}),i=bytesFromWords(a);return i}function gzipUncompress(e){var t=new Zlib.Gunzip(e).decompress();return t}function nextRandomInt(e){return Math.floor(Math.random()*e)}function pqPrimeFactorization(e){var t=new BigInteger(e),n=!1;try{n=pqPrimeLeemon(str2bigInt(t.toString(16),16,Math.ceil(64/bpe)+1))}catch(a){console.error("Pq leemon Exception",a)}if(n===!1&&t.bitLength()<=64)try{n=pqPrimeLong(goog.math.Long.fromString(t.toString(16),16))}catch(a){console.error("Pq long Exception",a)}return n===!1&&(n=pqPrimeBigInteger(t)),n}function pqPrimeBigInteger(e){for(var t,n=0,a=0;3>a;a++){for(var i=(15&nextRandomInt(128))+17,o=bigint(nextRandomInt(1e9)+1),s=o.clone(),r=1<<a+18,l=1;r>l;l++){++n;for(var c=o.clone(),d=o.clone(),u=bigint(i);!d.equals(BigInteger.ZERO);)d.and(BigInteger.ONE).equals(BigInteger.ZERO)||(u=u.add(c),u.compareTo(e)>0&&(u=u.subtract(e))),c=c.add(c),c.compareTo(e)>0&&(c=c.subtract(e)),d=d.shiftRight(1);o=u.clone();var p=o.compareTo(s)<0?s.subtract(o):o.subtract(s);if(t=p.gcd(e),!t.equals(BigInteger.ONE))break;0==(l&l-1)&&(s=o.clone())}if(t.compareTo(BigInteger.ONE)>0)break}var m,g,h=e.divide(t);return t.compareTo(h)>0?(m=h,g=t):(m=t,g=h),[bytesFromBigInt(m),bytesFromBigInt(g),n]}function gcdLong(e,t){for(;e.notEquals(goog.math.Long.ZERO)&&t.notEquals(goog.math.Long.ZERO);){for(;t.and(goog.math.Long.ONE).equals(goog.math.Long.ZERO);)t=t.shiftRight(1);for(;e.and(goog.math.Long.ONE).equals(goog.math.Long.ZERO);)e=e.shiftRight(1);e.compare(t)>0?e=e.subtract(t):t=t.subtract(e)}return t.equals(goog.math.Long.ZERO)?e:t}function pqPrimeLong(e){for(var t,n=0,a=0;3>a;a++){for(var i=goog.math.Long.fromInt((15&nextRandomInt(128))+17),o=goog.math.Long.fromInt(nextRandomInt(1e9)+1),s=o,r=1<<a+18,l=1;r>l;l++){++n;for(var c=o,d=o,u=i;d.notEquals(goog.math.Long.ZERO);)d.and(goog.math.Long.ONE).notEquals(goog.math.Long.ZERO)&&(u=u.add(c),u.compare(e)>0&&(u=u.subtract(e))),c=c.add(c),c.compare(e)>0&&(c=c.subtract(e)),d=d.shiftRight(1);o=u;var p=o.compare(s)<0?s.subtract(o):o.subtract(s);if(t=gcdLong(p,e),t.notEquals(goog.math.Long.ONE))break;0==(l&l-1)&&(s=o)}if(t.compare(goog.math.Long.ONE)>0)break}var m,g,h=e.div(t);return t.compare(h)>0?(m=h,g=t):(m=t,g=h),[bytesFromHex(m.toString(16)),bytesFromHex(g.toString(16)),n]}function pqPrimeLeemon(e){var t,n,a,i,o,s,r,l=64,c=Math.ceil(l/bpe)+1,d=0,u=new Array(c),p=new Array(c),m=new Array(c),o=new Array(c),g=new Array(c),h=new Array(c),f=new Array(c);for(t=0;3>t;t++){for(n=(15&nextRandomInt(128))+17,copyInt_(h,nextRandomInt(1e9)+1),copy_(f,h),i=1<<t+18,a=1;i>a;a++){for(++d,copy_(u,h),copy_(p,h),copyInt_(m,n);!isZero(p);)1&p[0]&&(add_(m,u),greater(m,e)&&sub_(m,e)),add_(u,u),greater(u,e)&&sub_(u,e),rightShift_(p,1);if(copy_(h,m),greater(h,f)?(copy_(g,h),sub_(g,f)):(copy_(g,f),sub_(g,h)),eGCD_(g,e,o,u,p),!equalsInt(o,1))break;0==(a&a-1)&&copy_(f,h)}if(greater(o,one))break}return divide_(e,o,h,f),greater(o,h)?(s=h,r=o):(s=o,r=h),[bytesFromLeemonBigInt(s),bytesFromLeemonBigInt(r),d]}function bytesModPow(e,t,n){try{var a=str2bigInt(bytesToHex(e),16),i=str2bigInt(bytesToHex(t),16),o=str2bigInt(bytesToHex(n),16),s=powMod(a,i,o);return bytesFromHex(bigInt2str(s,16))}catch(r){console.error("mod pow error",r)}return bytesFromBigInt(new BigInteger(e).modPow(new BigInteger(t),new BigInteger(n)),256)}function TLSerialization(e){return e=e||{},this.maxLength=e.startMaxLength||2048,this.offset=0,this.createBuffer(),this.mtproto=e.mtproto||!1,this}function TLDeserialization(e,t){return t=t||{},this.offset=0,this.override=t.override||{},this.buffer=e,this.intView=new Uint32Array(this.buffer),this.byteView=new Uint8Array(this.buffer),this.mtproto=t.mtproto||!1,this}function EmojiTooltip(e,t){t=t||{};var n=this;this.btnEl=$(e),this.onEmojiSelected=t.onEmojiSelected,this.onStickerSelected=t.onStickerSelected,this.getStickers=t.getStickers,this.getStickerImage=t.getStickerImage,this.onStickersetSelected=t.onStickersetSelected,this.langpack=t.langpack||{},Config.Navigator.touch||$(this.btnEl).on("mouseenter mouseleave",function(e){n.isOverBtn="mouseenter"==e.type,n.createTooltip(),n.isOverBtn?n.onMouseEnter(!0):n.onMouseLeave(!0)}),$(this.btnEl).on("mousedown",function(e){return n.shown?(clearTimeout(n.hideTimeout),delete n.hideTimeout,n.hide()):(clearTimeout(n.showTimeout),delete n.showTimeout,n.createTooltip(),n.show()),cancelEvent(e)}),$(document).on("mousedown",function(){n.shown&&n.hide()})}function EmojiPanel(e,t){t=t||{};var n=this;this.containerEl=$(e),this.onEmojiSelected=t.onEmojiSelected,this.containerEl.on("mousedown",function(e){e=e.originalEvent||e;var t,a=$(e.target);return"A"!=a[0].tagName&&(a=$(a[0].parentNode)),(t=a.attr("data-code"))&&(n.onEmojiSelected&&n.onEmojiSelected(t),EmojiHelper.pushPopularEmoji(t)),cancelEvent(e)}),this.update()}function MessageComposer(e,t){var n=this;this.textareaEl=$(e),this.setUpInput(),this.autoCompleteWrapEl=$('<div class="composer_dropdown_wrap"></div>').appendTo(document.body);var a=$("<div></div>").appendTo(this.autoCompleteWrapEl);t.dropdownDirective(a,function(e,t){n.autoCompleteEl=t,n.autoCompleteScope=e,n.setUpAutoComplete()}),this.isActive=!1,this.onTyping=t.onTyping,this.onMessageSubmit=t.onMessageSubmit,this.getSendOnEnter=t.getSendOnEnter,this.onFilePaste=t.onFilePaste,this.onCommandSend=t.onCommandSend,this.onInlineResultSend=t.onInlineResultSend,this.mentions=t.mentions,this.commands=t.commands}function Scroller(e,t){t=t||{};t.classPrefix||"scroller";this.content=$(e),this.useNano=void 0!==t.nano?t.nano:!Config.Mobile,this.maxHeight=t.maxHeight,this.minHeight=t.minHeight,this.useNano?this.setUpNano():this.setUpNative(),this.updateHeight()}!function(e){"use strict";e.console=e.console||{};for(var t,n,a=e.console,i={},o=function(){},s="memory".split(","),r="assert,clear,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profiles,profileEnd,show,table,time,timeEnd,timeline,timelineEnd,timeStamp,trace,warn".split(",");t=s.pop();)a[t]||(a[t]=i);for(;n=r.pop();)a[n]||(a[n]=o)}("undefined"==typeof window?this:window),Array.prototype.indexOf||(Array.prototype.indexOf=function(e,t){var n;if(null==this)throw new TypeError('"this" is null or not defined');var a=Object(this),i=a.length>>>0;if(0===i)return-1;var o=+t||0;if(1/0===Math.abs(o)&&(o=0),o>=i)return-1;for(n=Math.max(o>=0?o:i-Math.abs(o),0);i>n;){if(n in a&&a[n]===e)return n;n++}return-1}),Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),"function"!=typeof Object.create&&(Object.create=function(){var e=function(){};return function(t){if(arguments.length>1)throw Error("Second argument not supported");if("object"!=typeof t)throw TypeError("Argument must be an object");e.prototype=t;var n=new e;return e.prototype=null,n}}()),Function.prototype.bind||(Function.prototype.bind=function(e){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var t=Array.prototype.slice.call(arguments,1),n=this,a=function(){},i=function(){return n.apply(this instanceof a&&e?this:e,t.concat(Array.prototype.slice.call(arguments)))};return a.prototype=this.prototype,i.prototype=new a,i}),function(e){function t(t){a.push(t),e.postMessage(i,"*")}function n(t){if(t.source==e&&t.data==i&&(t.stopPropagation(),a.length>0)){var n=a.shift();n()}}var a=[],i="zero-timeout-message";e.addEventListener("message",n,!0);var o=e.setTimeout;e.setTimeout=function(e,n){return!n||5>=n?t(e):o(e,n)},e.setZeroTimeout=t}(this),!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){function n(e){var t=e.length,n=it.type(e);return"function"===n||it.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e}function a(e,t,n){if(it.isFunction(t))return it.grep(e,function(e,a){return!!t.call(e,a,e)!==n});if(t.nodeType)return it.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(pt.test(t))return it.filter(t,e,n);t=it.filter(t,e)}return it.grep(e,function(e){return it.inArray(e,t)>=0!==n})}function i(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function o(e){var t=bt[e]={};return it.each(e.match(yt)||[],function(e,n){t[n]=!0}),t}function s(){gt.addEventListener?(gt.removeEventListener("DOMContentLoaded",r,!1),e.removeEventListener("load",r,!1)):(gt.detachEvent("onreadystatechange",r),e.detachEvent("onload",r))}function r(){(gt.addEventListener||"load"===event.type||"complete"===gt.readyState)&&(s(),it.ready())}function l(e,t,n){if(void 0===n&&1===e.nodeType){var a="data-"+t.replace(St,"-$1").toLowerCase();if(n=e.getAttribute(a),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:Ct.test(n)?it.parseJSON(n):n}catch(i){}it.data(e,t,n)}else n=void 0}return n}function c(e){var t;for(t in e)if(("data"!==t||!it.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function d(e,t,n,a){if(it.acceptData(e)){var i,o,s=it.expando,r=e.nodeType,l=r?it.cache:e,c=r?e[s]:e[s]&&s;if(c&&l[c]&&(a||l[c].data)||void 0!==n||"string"!=typeof t)return c||(c=r?e[s]=K.pop()||it.guid++:s),l[c]||(l[c]=r?{}:{toJSON:it.noop}),("object"==typeof t||"function"==typeof t)&&(a?l[c]=it.extend(l[c],t):l[c].data=it.extend(l[c].data,t)),o=l[c],a||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[it.camelCase(t)]=n),"string"==typeof t?(i=o[t],null==i&&(i=o[it.camelCase(t)])):i=o,i}}function u(e,t,n){if(it.acceptData(e)){var a,i,o=e.nodeType,s=o?it.cache:e,r=o?e[it.expando]:it.expando;if(s[r]){if(t&&(a=n?s[r]:s[r].data)){it.isArray(t)?t=t.concat(it.map(t,it.camelCase)):t in a?t=[t]:(t=it.camelCase(t),t=t in a?[t]:t.split(" ")),i=t.length;for(;i--;)delete a[t[i]];if(n?!c(a):!it.isEmptyObject(a))return}(n||(delete s[r].data,c(s[r])))&&(o?it.cleanData([e],!0):nt.deleteExpando||s!=s.window?delete s[r]:s[r]=null)}}}function p(){return!0}function m(){return!1}function g(){try{return gt.activeElement}catch(e){}}function h(e){var t=Nt.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function f(e,t){var n,a,i=0,o=typeof e.getElementsByTagName!==$t?e.getElementsByTagName(t||"*"):typeof e.querySelectorAll!==$t?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(a=n[i]);i++)!t||it.nodeName(a,t)?o.push(a):it.merge(o,f(a,t));return void 0===t||t&&it.nodeName(e,t)?it.merge([e],o):o}function _(e){Et.test(e.type)&&(e.defaultChecked=e.checked)}function v(e,t){return it.nodeName(e,"table")&&it.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function y(e){return e.type=(null!==it.find.attr(e,"type"))+"/"+e.type,e}function b(e){var t=Gt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function w(e,t){for(var n,a=0;null!=(n=e[a]);a++)it._data(n,"globalEval",!t||it._data(t[a],"globalEval"))}function k(e,t){if(1===t.nodeType&&it.hasData(e)){var n,a,i,o=it._data(e),s=it._data(t,o),r=o.events;if(r){delete s.handle,s.events={};for(n in r)for(a=0,i=r[n].length;i>a;a++)it.event.add(t,n,r[n][a])}s.data&&(s.data=it.extend({},s.data))}}function $(e,t){var n,a,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!nt.noCloneEvent&&t[it.expando]){i=it._data(t);for(a in i.events)it.removeEvent(t,a,i.handle);t.removeAttribute(it.expando)}"script"===n&&t.text!==e.text?(y(t).text=e.text,b(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),nt.html5Clone&&e.innerHTML&&!it.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Et.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function C(t,n){var a,i=it(n.createElement(t)).appendTo(n.body),o=e.getDefaultComputedStyle&&(a=e.getDefaultComputedStyle(i[0]))?a.display:it.css(i[0],"display");return i.detach(),o}function S(e){var t=gt,n=Qt[e];return n||(n=C(e,t),"none"!==n&&n||(Jt=(Jt||it("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement),t=(Jt[0].contentWindow||Jt[0].contentDocument).document,t.write(),t.close(),n=C(e,t),Jt.detach()),Qt[e]=n),n}function M(e,t){return{get:function(){var n=e();return null!=n?n?void delete this.get:(this.get=t).apply(this,arguments):void 0}}}function x(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),a=t,i=mn.length;i--;)if(t=mn[i]+n,t in e)return t;return a}function I(e,t){for(var n,a,i,o=[],s=0,r=e.length;r>s;s++)a=e[s],a.style&&(o[s]=it._data(a,"olddisplay"),n=a.style.display,t?(o[s]||"none"!==n||(a.style.display=""),""===a.style.display&&It(a)&&(o[s]=it._data(a,"olddisplay",S(a.nodeName)))):(i=It(a),(n&&"none"!==n||!i)&&it._data(a,"olddisplay",i?n:it.css(a,"display"))));for(s=0;r>s;s++)a=e[s],a.style&&(t&&"none"!==a.style.display&&""!==a.style.display||(a.style.display=t?o[s]||"":"none"));return e}function A(e,t,n){var a=cn.exec(t);return a?Math.max(0,a[1]-(n||0))+(a[2]||"px"):t}function E(e,t,n,a,i){for(var o=n===(a?"border":"content")?4:"width"===t?1:0,s=0;4>o;o+=2)"margin"===n&&(s+=it.css(e,n+xt[o],!0,i)),a?("content"===n&&(s-=it.css(e,"padding"+xt[o],!0,i)),"margin"!==n&&(s-=it.css(e,"border"+xt[o]+"Width",!0,i))):(s+=it.css(e,"padding"+xt[o],!0,i),"padding"!==n&&(s+=it.css(e,"border"+xt[o]+"Width",!0,i)));return s}function T(e,t,n){var a=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=en(e),s=nt.boxSizing&&"border-box"===it.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=tn(e,t,o),(0>i||null==i)&&(i=e.style[t]),an.test(i))return i;a=s&&(nt.boxSizingReliable()||i===e.style[t]),i=parseFloat(i)||0}return i+E(e,t,n||(s?"border":"content"),a,o)+"px"}function D(e,t,n,a,i){return new D.prototype.init(e,t,n,a,i)}function P(){return setTimeout(function(){gn=void 0}),gn=it.now()}function F(e,t){var n,a={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=xt[i],a["margin"+n]=a["padding"+n]=e;return t&&(a.opacity=a.width=e),a}function R(e,t,n){for(var a,i=(bn[t]||[]).concat(bn["*"]),o=0,s=i.length;s>o;o++)if(a=i[o].call(n,t,e))return a}function N(e,t,n){var a,i,o,s,r,l,c,d,u=this,p={},m=e.style,g=e.nodeType&&It(e),h=it._data(e,"fxshow");n.queue||(r=it._queueHooks(e,"fx"),null==r.unqueued&&(r.unqueued=0,l=r.empty.fire,r.empty.fire=function(){r.unqueued||l()}),r.unqueued++,u.always(function(){u.always(function(){r.unqueued--,it.queue(e,"fx").length||r.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[m.overflow,m.overflowX,m.overflowY],c=it.css(e,"display"),d="none"===c?it._data(e,"olddisplay")||S(e.nodeName):c,"inline"===d&&"none"===it.css(e,"float")&&(nt.inlineBlockNeedsLayout&&"inline"!==S(e.nodeName)?m.zoom=1:m.display="inline-block")),n.overflow&&(m.overflow="hidden",nt.shrinkWrapBlocks()||u.always(function(){m.overflow=n.overflow[0],m.overflowX=n.overflow[1],m.overflowY=n.overflow[2]}));for(a in t)if(i=t[a],fn.exec(i)){if(delete t[a],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!h||void 0===h[a])continue;g=!0}p[a]=h&&h[a]||it.style(e,a)}else c=void 0;if(it.isEmptyObject(p))"inline"===("none"===c?S(e.nodeName):c)&&(m.display=c);else{h?"hidden"in h&&(g=h.hidden):h=it._data(e,"fxshow",{}),o&&(h.hidden=!g),g?it(e).show():u.done(function(){it(e).hide()}),u.done(function(){var t;it._removeData(e,"fxshow");for(t in p)it.style(e,t,p[t])});for(a in p)s=R(g?h[a]:0,a,u),a in h||(h[a]=s.start,g&&(s.end=s.start,s.start="width"===a||"height"===a?1:0))}}function U(e,t){var n,a,i,o,s;for(n in e)if(a=it.camelCase(n),i=t[a],o=e[n],it.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==a&&(e[a]=o,delete e[n]),s=it.cssHooks[a],s&&"expand"in s){o=s.expand(o),delete e[a];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[a]=i}function O(e,t,n){var a,i,o=0,s=yn.length,r=it.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;for(var t=gn||P(),n=Math.max(0,c.startTime+c.duration-t),a=n/c.duration||0,o=1-a,s=0,l=c.tweens.length;l>s;s++)c.tweens[s].run(o);return r.notifyWith(e,[c,o,n]),1>o&&l?n:(r.resolveWith(e,[c]),!1)},c=r.promise({elem:e,props:it.extend({},t),opts:it.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:gn||P(),duration:n.duration,tweens:[],createTween:function(t,n){var a=it.Tween(e,c.opts,t,n,c.opts.specialEasing[t]||c.opts.easing);return c.tweens.push(a),a},stop:function(t){var n=0,a=t?c.tweens.length:0;if(i)return this;for(i=!0;a>n;n++)c.tweens[n].run(1);return t?r.resolveWith(e,[c,t]):r.rejectWith(e,[c,t]),this}}),d=c.props;for(U(d,c.opts.specialEasing);s>o;o++)if(a=yn[o].call(c,e,d,c.opts))return a;return it.map(d,R,c),it.isFunction(c.opts.start)&&c.opts.start.call(e,c),it.fx.timer(it.extend(l,{elem:e,anim:c,queue:c.opts.queue})),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always)}function B(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var a,i=0,o=t.toLowerCase().match(yt)||[];if(it.isFunction(n))for(;a=o[i++];)"+"===a.charAt(0)?(a=a.slice(1)||"*",(e[a]=e[a]||[]).unshift(n)):(e[a]=e[a]||[]).push(n)}}function L(e,t,n,a){function i(r){var l;return o[r]=!0,it.each(e[r]||[],function(e,r){var c=r(t,n,a);return"string"!=typeof c||s||o[c]?s?!(l=c):void 0:(t.dataTypes.unshift(c),i(c),!1)}),l}var o={},s=e===Vn;return i(t.dataTypes[0])||!o["*"]&&i("*")}function j(e,t){var n,a,i=it.ajaxSettings.flatOptions||{};for(a in t)void 0!==t[a]&&((i[a]?e:n||(n={}))[a]=t[a]);return n&&it.extend(!0,e,n),e}function q(e,t,n){for(var a,i,o,s,r=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===i&&(i=e.mimeType||t.getResponseHeader("Content-Type"));if(i)for(s in r)if(r[s]&&r[s].test(i)){l.unshift(s);break}if(l[0]in n)o=l[0];else{for(s in n){if(!l[0]||e.converters[s+" "+l[0]]){o=s;break}a||(a=s)}o=o||a}return o?(o!==l[0]&&l.unshift(o),n[o]):void 0}function H(e,t,n,a){var i,o,s,r,l,c={},d=e.dataTypes.slice();if(d[1])for(s in e.converters)c[s.toLowerCase()]=e.converters[s];for(o=d.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&a&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=d.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(s=c[l+" "+o]||c["* "+o],!s)for(i in c)if(r=i.split(" "),r[1]===o&&(s=c[l+" "+r[0]]||c["* "+r[0]])){s===!0?s=c[i]:c[i]!==!0&&(o=r[0],d.unshift(r[1]));break}if(s!==!0)if(s&&e["throws"])t=s(t);else try{t=s(t)}catch(u){return{state:"parsererror",error:s?u:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}function V(e,t,n,a){var i;if(it.isArray(t))it.each(t,function(t,i){n||Kn.test(e)?a(e,i):V(e+"["+("object"==typeof i?t:"")+"]",i,n,a)});else if(n||"object"!==it.type(t))a(e,t);else for(i in t)V(e+"["+i+"]",t[i],n,a)}function z(){try{return new e.XMLHttpRequest}catch(t){}}function W(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function G(e){return it.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}var K=[],Y=K.slice,Z=K.concat,X=K.push,J=K.indexOf,Q={},et=Q.toString,tt=Q.hasOwnProperty,nt={},at="1.11.1",it=function(e,t){return new it.fn.init(e,t)},ot=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,st=/^-ms-/,rt=/-([\da-z])/gi,lt=function(e,t){return t.toUpperCase()};it.fn=it.prototype={jquery:at,constructor:it,selector:"",length:0,toArray:function(){return Y.call(this)},get:function(e){return null!=e?0>e?this[e+this.length]:this[e]:Y.call(this)},pushStack:function(e){var t=it.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return it.each(this,e,t)},map:function(e){return this.pushStack(it.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(Y.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:X,sort:K.sort,splice:K.splice},it.extend=it.fn.extend=function(){var e,t,n,a,i,o,s=arguments[0]||{},r=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[r]||{},r++),"object"==typeof s||it.isFunction(s)||(s={}),r===l&&(s=this,r--);l>r;r++)if(null!=(i=arguments[r]))for(a in i)e=s[a],n=i[a],s!==n&&(c&&n&&(it.isPlainObject(n)||(t=it.isArray(n)))?(t?(t=!1,o=e&&it.isArray(e)?e:[]):o=e&&it.isPlainObject(e)?e:{},s[a]=it.extend(c,o,n)):void 0!==n&&(s[a]=n));return s},it.extend({expando:"jQuery"+(at+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===it.type(e)},isArray:Array.isArray||function(e){return"array"===it.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!it.isArray(e)&&e-parseFloat(e)>=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||"object"!==it.type(e)||e.nodeType||it.isWindow(e))return!1;try{if(e.constructor&&!tt.call(e,"constructor")&&!tt.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}if(nt.ownLast)for(t in e)return tt.call(e,t);for(t in e);return void 0===t||tt.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?Q[et.call(e)]||"object":typeof e},globalEval:function(t){t&&it.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(st,"ms-").replace(rt,lt)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,a){var i,o=0,s=e.length,r=n(e);if(a){if(r)for(;s>o&&(i=t.apply(e[o],a),i!==!1);o++);else for(o in e)if(i=t.apply(e[o],a),i===!1)break}else if(r)for(;s>o&&(i=t.call(e[o],o,e[o]),i!==!1);o++);else for(o in e)if(i=t.call(e[o],o,e[o]),i===!1)break;return e},trim:function(e){return null==e?"":(e+"").replace(ot,"")},makeArray:function(e,t){var a=t||[];return null!=e&&(n(Object(e))?it.merge(a,"string"==typeof e?[e]:e):X.call(a,e)),a},inArray:function(e,t,n){var a;if(t){if(J)return J.call(t,e,n);for(a=t.length,n=n?0>n?Math.max(0,a+n):n:0;a>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,t){for(var n=+t.length,a=0,i=e.length;n>a;)e[i++]=t[a++];if(n!==n)for(;void 0!==t[a];)e[i++]=t[a++];return e.length=i,e},grep:function(e,t,n){for(var a,i=[],o=0,s=e.length,r=!n;s>o;o++)a=!t(e[o],o),a!==r&&i.push(e[o]);
return i},map:function(e,t,a){var i,o=0,s=e.length,r=n(e),l=[];if(r)for(;s>o;o++)i=t(e[o],o,a),null!=i&&l.push(i);else for(o in e)i=t(e[o],o,a),null!=i&&l.push(i);return Z.apply([],l)},guid:1,proxy:function(e,t){var n,a,i;return"string"==typeof t&&(i=e[t],t=e,e=i),it.isFunction(e)?(n=Y.call(arguments,2),a=function(){return e.apply(t||this,n.concat(Y.call(arguments)))},a.guid=e.guid=e.guid||it.guid++,a):void 0},now:function(){return+new Date},support:nt}),it.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){Q["[object "+t+"]"]=t.toLowerCase()});var ct=function(e){function t(e,t,n,a){var i,o,s,r,l,c,u,m,g,h;if((t?t.ownerDocument||t:L)!==D&&T(t),t=t||D,n=n||[],!e||"string"!=typeof e)return n;if(1!==(r=t.nodeType)&&9!==r)return[];if(F&&!a){if(i=vt.exec(e))if(s=i[1]){if(9===r){if(o=t.getElementById(s),!o||!o.parentNode)return n;if(o.id===s)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(s))&&O(t,o)&&o.id===s)return n.push(o),n}else{if(i[2])return Q.apply(n,t.getElementsByTagName(e)),n;if((s=i[3])&&w.getElementsByClassName&&t.getElementsByClassName)return Q.apply(n,t.getElementsByClassName(s)),n}if(w.qsa&&(!R||!R.test(e))){if(m=u=B,g=t,h=9===r&&e,1===r&&"object"!==t.nodeName.toLowerCase()){for(c=S(e),(u=t.getAttribute("id"))?m=u.replace(bt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",l=c.length;l--;)c[l]=m+p(c[l]);g=yt.test(e)&&d(t.parentNode)||t,h=c.join(",")}if(h)try{return Q.apply(n,g.querySelectorAll(h)),n}catch(f){}finally{u||t.removeAttribute("id")}}}return x(e.replace(lt,"$1"),t,n,a)}function n(){function e(n,a){return t.push(n+" ")>k.cacheLength&&delete e[t.shift()],e[n+" "]=a}var t=[];return e}function a(e){return e[B]=!0,e}function i(e){var t=D.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),a=e.length;a--;)k.attrHandle[n[a]]=t}function s(e,t){var n=t&&e,a=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||K)-(~e.sourceIndex||K);if(a)return a;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function r(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return a(function(t){return t=+t,a(function(n,a){for(var i,o=e([],n.length,t),s=o.length;s--;)n[i=o[s]]&&(n[i]=!(a[i]=n[i]))})})}function d(e){return e&&typeof e.getElementsByTagName!==G&&e}function u(){}function p(e){for(var t=0,n=e.length,a="";n>t;t++)a+=e[t].value;return a}function m(e,t,n){var a=t.dir,i=n&&"parentNode"===a,o=q++;return t.first?function(t,n,o){for(;t=t[a];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,s){var r,l,c=[j,o];if(s){for(;t=t[a];)if((1===t.nodeType||i)&&e(t,n,s))return!0}else for(;t=t[a];)if(1===t.nodeType||i){if(l=t[B]||(t[B]={}),(r=l[a])&&r[0]===j&&r[1]===o)return c[2]=r[2];if(l[a]=c,c[2]=e(t,n,s))return!0}}}function g(e){return e.length>1?function(t,n,a){for(var i=e.length;i--;)if(!e[i](t,n,a))return!1;return!0}:e[0]}function h(e,n,a){for(var i=0,o=n.length;o>i;i++)t(e,n[i],a);return a}function f(e,t,n,a,i){for(var o,s=[],r=0,l=e.length,c=null!=t;l>r;r++)(o=e[r])&&(!n||n(o,a,i))&&(s.push(o),c&&t.push(r));return s}function _(e,t,n,i,o,s){return i&&!i[B]&&(i=_(i)),o&&!o[B]&&(o=_(o,s)),a(function(a,s,r,l){var c,d,u,p=[],m=[],g=s.length,_=a||h(t||"*",r.nodeType?[r]:r,[]),v=!e||!a&&t?_:f(_,p,e,r,l),y=n?o||(a?e:g||i)?[]:s:v;if(n&&n(v,y,r,l),i)for(c=f(y,m),i(c,[],r,l),d=c.length;d--;)(u=c[d])&&(y[m[d]]=!(v[m[d]]=u));if(a){if(o||e){if(o){for(c=[],d=y.length;d--;)(u=y[d])&&c.push(v[d]=u);o(null,y=[],c,l)}for(d=y.length;d--;)(u=y[d])&&(c=o?tt.call(a,u):p[d])>-1&&(a[c]=!(s[c]=u))}}else y=f(y===s?y.splice(g,y.length):y),o?o(null,s,y,l):Q.apply(s,y)})}function v(e){for(var t,n,a,i=e.length,o=k.relative[e[0].type],s=o||k.relative[" "],r=o?1:0,l=m(function(e){return e===t},s,!0),c=m(function(e){return tt.call(t,e)>-1},s,!0),d=[function(e,n,a){return!o&&(a||n!==I)||((t=n).nodeType?l(e,n,a):c(e,n,a))}];i>r;r++)if(n=k.relative[e[r].type])d=[m(g(d),n)];else{if(n=k.filter[e[r].type].apply(null,e[r].matches),n[B]){for(a=++r;i>a&&!k.relative[e[a].type];a++);return _(r>1&&g(d),r>1&&p(e.slice(0,r-1).concat({value:" "===e[r-2].type?"*":""})).replace(lt,"$1"),n,a>r&&v(e.slice(r,a)),i>a&&v(e=e.slice(a)),i>a&&p(e))}d.push(n)}return g(d)}function y(e,n){var i=n.length>0,o=e.length>0,s=function(a,s,r,l,c){var d,u,p,m=0,g="0",h=a&&[],_=[],v=I,y=a||o&&k.find.TAG("*",c),b=j+=null==v?1:Math.random()||.1,w=y.length;for(c&&(I=s!==D&&s);g!==w&&null!=(d=y[g]);g++){if(o&&d){for(u=0;p=e[u++];)if(p(d,s,r)){l.push(d);break}c&&(j=b)}i&&((d=!p&&d)&&m--,a&&h.push(d))}if(m+=g,i&&g!==m){for(u=0;p=n[u++];)p(h,_,s,r);if(a){if(m>0)for(;g--;)h[g]||_[g]||(_[g]=X.call(l));_=f(_)}Q.apply(l,_),c&&!a&&_.length>0&&m+n.length>1&&t.uniqueSort(l)}return c&&(j=b,I=v),h};return i?a(s):s}var b,w,k,$,C,S,M,x,I,A,E,T,D,P,F,R,N,U,O,B="sizzle"+-new Date,L=e.document,j=0,q=0,H=n(),V=n(),z=n(),W=function(e,t){return e===t&&(E=!0),0},G="undefined",K=1<<31,Y={}.hasOwnProperty,Z=[],X=Z.pop,J=Z.push,Q=Z.push,et=Z.slice,tt=Z.indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(this[t]===e)return t;return-1},nt="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",at="[\\x20\\t\\r\\n\\f]",it="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",ot=it.replace("w","w#"),st="\\["+at+"*("+it+")(?:"+at+"*([*^$|!~]?=)"+at+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ot+"))|)"+at+"*\\]",rt=":("+it+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+st+")*)|.*)\\)|)",lt=new RegExp("^"+at+"+|((?:^|[^\\\\])(?:\\\\.)*)"+at+"+$","g"),ct=new RegExp("^"+at+"*,"+at+"*"),dt=new RegExp("^"+at+"*([>+~]|"+at+")"+at+"*"),ut=new RegExp("="+at+"*([^\\]'\"]*?)"+at+"*\\]","g"),pt=new RegExp(rt),mt=new RegExp("^"+ot+"$"),gt={ID:new RegExp("^#("+it+")"),CLASS:new RegExp("^\\.("+it+")"),TAG:new RegExp("^("+it.replace("w","w*")+")"),ATTR:new RegExp("^"+st),PSEUDO:new RegExp("^"+rt),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+at+"*(even|odd|(([+-]|)(\\d*)n|)"+at+"*(?:([+-]|)"+at+"*(\\d+)|))"+at+"*\\)|)","i"),bool:new RegExp("^(?:"+nt+")$","i"),needsContext:new RegExp("^"+at+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+at+"*((?:-\\d)?\\d*)"+at+"*\\)|)(?=[^-]|$)","i")},ht=/^(?:input|select|textarea|button)$/i,ft=/^h\d$/i,_t=/^[^{]+\{\s*\[native \w/,vt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,yt=/[+~]/,bt=/'|\\/g,wt=new RegExp("\\\\([\\da-f]{1,6}"+at+"?|("+at+")|.)","ig"),kt=function(e,t,n){var a="0x"+t-65536;return a!==a||n?t:0>a?String.fromCharCode(a+65536):String.fromCharCode(a>>10|55296,1023&a|56320)};try{Q.apply(Z=et.call(L.childNodes),L.childNodes),Z[L.childNodes.length].nodeType}catch($t){Q={apply:Z.length?function(e,t){J.apply(e,et.call(t))}:function(e,t){for(var n=e.length,a=0;e[n++]=t[a++];);e.length=n-1}}}w=t.support={},C=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},T=t.setDocument=function(e){var t,n=e?e.ownerDocument||e:L,a=n.defaultView;return n!==D&&9===n.nodeType&&n.documentElement?(D=n,P=n.documentElement,F=!C(n),a&&a!==a.top&&(a.addEventListener?a.addEventListener("unload",function(){T()},!1):a.attachEvent&&a.attachEvent("onunload",function(){T()})),w.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=i(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=_t.test(n.getElementsByClassName)&&i(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),w.getById=i(function(e){return P.appendChild(e).id=B,!n.getElementsByName||!n.getElementsByName(B).length}),w.getById?(k.find.ID=function(e,t){if(typeof t.getElementById!==G&&F){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},k.filter.ID=function(e){var t=e.replace(wt,kt);return function(e){return e.getAttribute("id")===t}}):(delete k.find.ID,k.filter.ID=function(e){var t=e.replace(wt,kt);return function(e){var n=typeof e.getAttributeNode!==G&&e.getAttributeNode("id");return n&&n.value===t}}),k.find.TAG=w.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==G?t.getElementsByTagName(e):void 0}:function(e,t){var n,a=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&a.push(n);return a}return o},k.find.CLASS=w.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==G&&F?t.getElementsByClassName(e):void 0},N=[],R=[],(w.qsa=_t.test(n.querySelectorAll))&&(i(function(e){e.innerHTML="<select msallowclip=''><option selected=''></option></select>",e.querySelectorAll("[msallowclip^='']").length&&R.push("[*^$]="+at+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||R.push("\\["+at+"*(?:value|"+nt+")"),e.querySelectorAll(":checked").length||R.push(":checked")}),i(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&R.push("name"+at+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||R.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),R.push(",.*:")})),(w.matchesSelector=_t.test(U=P.matches||P.webkitMatchesSelector||P.mozMatchesSelector||P.oMatchesSelector||P.msMatchesSelector))&&i(function(e){w.disconnectedMatch=U.call(e,"div"),U.call(e,"[s!='']:x"),N.push("!=",rt)}),R=R.length&&new RegExp(R.join("|")),N=N.length&&new RegExp(N.join("|")),t=_t.test(P.compareDocumentPosition),O=t||_t.test(P.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,a=t&&t.parentNode;return e===a||!(!a||1!==a.nodeType||!(n.contains?n.contains(a):e.compareDocumentPosition&&16&e.compareDocumentPosition(a)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},W=t?function(e,t){if(e===t)return E=!0,0;var a=!e.compareDocumentPosition-!t.compareDocumentPosition;return a?a:(a=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&a||!w.sortDetached&&t.compareDocumentPosition(e)===a?e===n||e.ownerDocument===L&&O(L,e)?-1:t===n||t.ownerDocument===L&&O(L,t)?1:A?tt.call(A,e)-tt.call(A,t):0:4&a?-1:1)}:function(e,t){if(e===t)return E=!0,0;var a,i=0,o=e.parentNode,r=t.parentNode,l=[e],c=[t];if(!o||!r)return e===n?-1:t===n?1:o?-1:r?1:A?tt.call(A,e)-tt.call(A,t):0;if(o===r)return s(e,t);for(a=e;a=a.parentNode;)l.unshift(a);for(a=t;a=a.parentNode;)c.unshift(a);for(;l[i]===c[i];)i++;return i?s(l[i],c[i]):l[i]===L?-1:c[i]===L?1:0},n):D},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==D&&T(e),n=n.replace(ut,"='$1']"),!(!w.matchesSelector||!F||N&&N.test(n)||R&&R.test(n)))try{var a=U.call(e,n);if(a||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return a}catch(i){}return t(n,D,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==D&&T(e),O(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==D&&T(e);var n=k.attrHandle[t.toLowerCase()],a=n&&Y.call(k.attrHandle,t.toLowerCase())?n(e,t,!F):void 0;return void 0!==a?a:w.attributes||!F?e.getAttribute(t):(a=e.getAttributeNode(t))&&a.specified?a.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],a=0,i=0;if(E=!w.detectDuplicates,A=!w.sortStable&&e.slice(0),e.sort(W),E){for(;t=e[i++];)t===e[i]&&(a=n.push(i));for(;a--;)e.splice(n[a],1)}return A=null,e},$=t.getText=function(e){var t,n="",a=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=$(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[a++];)n+=$(t);return n},k=t.selectors={cacheLength:50,createPseudo:a,match:gt,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(wt,kt),e[3]=(e[3]||e[4]||e[5]||"").replace(wt,kt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return gt.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&pt.test(n)&&(t=S(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(wt,kt).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=H[e+" "];return t||(t=new RegExp("(^|"+at+")"+e+"("+at+"|$)"))&&H(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==G&&e.getAttribute("class")||"")})},ATTR:function(e,n,a){return function(i){var o=t.attr(i,e);return null==o?"!="===n:n?(o+="","="===n?o===a:"!="===n?o!==a:"^="===n?a&&0===o.indexOf(a):"*="===n?a&&o.indexOf(a)>-1:"$="===n?a&&o.slice(-a.length)===a:"~="===n?(" "+o+" ").indexOf(a)>-1:"|="===n?o===a||o.slice(0,a.length+1)===a+"-":!1):!0}},CHILD:function(e,t,n,a,i){var o="nth"!==e.slice(0,3),s="last"!==e.slice(-4),r="of-type"===t;return 1===a&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var c,d,u,p,m,g,h=o!==s?"nextSibling":"previousSibling",f=t.parentNode,_=r&&t.nodeName.toLowerCase(),v=!l&&!r;if(f){if(o){for(;h;){for(u=t;u=u[h];)if(r?u.nodeName.toLowerCase()===_:1===u.nodeType)return!1;g=h="only"===e&&!g&&"nextSibling"}return!0}if(g=[s?f.firstChild:f.lastChild],s&&v){for(d=f[B]||(f[B]={}),c=d[e]||[],m=c[0]===j&&c[1],p=c[0]===j&&c[2],u=m&&f.childNodes[m];u=++m&&u&&u[h]||(p=m=0)||g.pop();)if(1===u.nodeType&&++p&&u===t){d[e]=[j,m,p];break}}else if(v&&(c=(t[B]||(t[B]={}))[e])&&c[0]===j)p=c[1];else for(;(u=++m&&u&&u[h]||(p=m=0)||g.pop())&&((r?u.nodeName.toLowerCase()!==_:1!==u.nodeType)||!++p||(v&&((u[B]||(u[B]={}))[e]=[j,p]),u!==t)););return p-=i,p===a||p%a===0&&p/a>=0}}},PSEUDO:function(e,n){var i,o=k.pseudos[e]||k.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[B]?o(n):o.length>1?(i=[e,e,"",n],k.setFilters.hasOwnProperty(e.toLowerCase())?a(function(e,t){for(var a,i=o(e,n),s=i.length;s--;)a=tt.call(e,i[s]),e[a]=!(t[a]=i[s])}):function(e){return o(e,0,i)}):o}},pseudos:{not:a(function(e){var t=[],n=[],i=M(e.replace(lt,"$1"));return i[B]?a(function(e,t,n,a){for(var o,s=i(e,null,a,[]),r=e.length;r--;)(o=s[r])&&(e[r]=!(t[r]=o))}):function(e,a,o){return t[0]=e,i(t,null,o,n),!n.pop()}}),has:a(function(e){return function(n){return t(e,n).length>0}}),contains:a(function(e){return function(t){return(t.textContent||t.innerText||$(t)).indexOf(e)>-1}}),lang:a(function(e){return mt.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(wt,kt).toLowerCase(),function(t){var n;do if(n=F?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===P},focus:function(e){return e===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!k.pseudos.empty(e)},header:function(e){return ft.test(e.nodeName)},input:function(e){return ht.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var a=0>n?n+t:n;--a>=0;)e.push(a);return e}),gt:c(function(e,t,n){for(var a=0>n?n+t:n;++a<t;)e.push(a);return e})}},k.pseudos.nth=k.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})k.pseudos[b]=r(b);for(b in{submit:!0,reset:!0})k.pseudos[b]=l(b);return u.prototype=k.filters=k.pseudos,k.setFilters=new u,S=t.tokenize=function(e,n){var a,i,o,s,r,l,c,d=V[e+" "];if(d)return n?0:d.slice(0);for(r=e,l=[],c=k.preFilter;r;){(!a||(i=ct.exec(r)))&&(i&&(r=r.slice(i[0].length)||r),l.push(o=[])),a=!1,(i=dt.exec(r))&&(a=i.shift(),o.push({value:a,type:i[0].replace(lt," ")}),r=r.slice(a.length));for(s in k.filter)!(i=gt[s].exec(r))||c[s]&&!(i=c[s](i))||(a=i.shift(),o.push({value:a,type:s,matches:i}),r=r.slice(a.length));if(!a)break}return n?r.length:r?t.error(e):V(e,l).slice(0)},M=t.compile=function(e,t){var n,a=[],i=[],o=z[e+" "];if(!o){for(t||(t=S(e)),n=t.length;n--;)o=v(t[n]),o[B]?a.push(o):i.push(o);o=z(e,y(i,a)),o.selector=e}return o},x=t.select=function(e,t,n,a){var i,o,s,r,l,c="function"==typeof e&&e,u=!a&&S(e=c.selector||e);if(n=n||[],1===u.length){if(o=u[0]=u[0].slice(0),o.length>2&&"ID"===(s=o[0]).type&&w.getById&&9===t.nodeType&&F&&k.relative[o[1].type]){if(t=(k.find.ID(s.matches[0].replace(wt,kt),t)||[])[0],!t)return n;c&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=gt.needsContext.test(e)?0:o.length;i--&&(s=o[i],!k.relative[r=s.type]);)if((l=k.find[r])&&(a=l(s.matches[0].replace(wt,kt),yt.test(o[0].type)&&d(t.parentNode)||t))){if(o.splice(i,1),e=a.length&&p(o),!e)return Q.apply(n,a),n;break}}return(c||M(e,u))(a,t,!F,n,yt.test(e)&&d(t.parentNode)||t),n},w.sortStable=B.split("").sort(W).join("")===B,w.detectDuplicates=!!E,T(),w.sortDetached=i(function(e){return 1&e.compareDocumentPosition(D.createElement("div"))}),i(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),w.attributes&&i(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(nt,function(e,t,n){var a;return n?void 0:e[t]===!0?t.toLowerCase():(a=e.getAttributeNode(t))&&a.specified?a.value:null}),t}(e);it.find=ct,it.expr=ct.selectors,it.expr[":"]=it.expr.pseudos,it.unique=ct.uniqueSort,it.text=ct.getText,it.isXMLDoc=ct.isXML,it.contains=ct.contains;var dt=it.expr.match.needsContext,ut=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,pt=/^.[^:#\[\.,]*$/;it.filter=function(e,t,n){var a=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===a.nodeType?it.find.matchesSelector(a,e)?[a]:[]:it.find.matches(e,it.grep(t,function(e){return 1===e.nodeType}))},it.fn.extend({find:function(e){var t,n=[],a=this,i=a.length;if("string"!=typeof e)return this.pushStack(it(e).filter(function(){for(t=0;i>t;t++)if(it.contains(a[t],this))return!0}));for(t=0;i>t;t++)it.find(e,a[t],n);return n=this.pushStack(i>1?it.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},filter:function(e){return this.pushStack(a(this,e||[],!1))},not:function(e){return this.pushStack(a(this,e||[],!0))},is:function(e){return!!a(this,"string"==typeof e&&dt.test(e)?it(e):e||[],!1).length}});var mt,gt=e.document,ht=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,ft=it.fn.init=function(e,t){var n,a;if(!e)return this;if("string"==typeof e){if(n="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:ht.exec(e),!n||!n[1]&&t)return!t||t.jquery?(t||mt).find(e):this.constructor(t).find(e);if(n[1]){if(t=t instanceof it?t[0]:t,it.merge(this,it.parseHTML(n[1],t&&t.nodeType?t.ownerDocument||t:gt,!0)),ut.test(n[1])&&it.isPlainObject(t))for(n in t)it.isFunction(this[n])?this[n](t[n]):this.attr(n,t[n]);return this}if(a=gt.getElementById(n[2]),a&&a.parentNode){if(a.id!==n[2])return mt.find(e);this.length=1,this[0]=a}return this.context=gt,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):it.isFunction(e)?"undefined"!=typeof mt.ready?mt.ready(e):e(it):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),it.makeArray(e,this))};ft.prototype=it.fn,mt=it(gt);var _t=/^(?:parents|prev(?:Until|All))/,vt={children:!0,contents:!0,next:!0,prev:!0};it.extend({dir:function(e,t,n){for(var a=[],i=e[t];i&&9!==i.nodeType&&(void 0===n||1!==i.nodeType||!it(i).is(n));)1===i.nodeType&&a.push(i),i=i[t];return a},sibling:function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}}),it.fn.extend({has:function(e){var t,n=it(e,this),a=n.length;return this.filter(function(){for(t=0;a>t;t++)if(it.contains(this,n[t]))return!0})},closest:function(e,t){for(var n,a=0,i=this.length,o=[],s=dt.test(e)||"string"!=typeof e?it(e,t||this.context):0;i>a;a++)for(n=this[a];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(s?s.index(n)>-1:1===n.nodeType&&it.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?it.unique(o):o)},index:function(e){return e?"string"==typeof e?it.inArray(this[0],it(e)):it.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(it.unique(it.merge(this.get(),it(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),it.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return it.dir(e,"parentNode")},parentsUntil:function(e,t,n){return it.dir(e,"parentNode",n)},next:function(e){return i(e,"nextSibling")},prev:function(e){return i(e,"previousSibling")},nextAll:function(e){return it.dir(e,"nextSibling")},prevAll:function(e){return it.dir(e,"previousSibling")},nextUntil:function(e,t,n){return it.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return it.dir(e,"previousSibling",n)},siblings:function(e){return it.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return it.sibling(e.firstChild)},contents:function(e){return it.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:it.merge([],e.childNodes)}},function(e,t){it.fn[e]=function(n,a){var i=it.map(this,t,n);return"Until"!==e.slice(-5)&&(a=n),a&&"string"==typeof a&&(i=it.filter(a,i)),this.length>1&&(vt[e]||(i=it.unique(i)),_t.test(e)&&(i=i.reverse())),this.pushStack(i)}});var yt=/\S+/g,bt={};it.Callbacks=function(e){e="string"==typeof e?bt[e]||o(e):it.extend({},e);var t,n,a,i,s,r,l=[],c=!e.once&&[],d=function(o){for(n=e.memory&&o,a=!0,s=r||0,r=0,i=l.length,t=!0;l&&i>s;s++)if(l[s].apply(o[0],o[1])===!1&&e.stopOnFalse){n=!1;break}t=!1,l&&(c?c.length&&d(c.shift()):n?l=[]:u.disable())},u={add:function(){if(l){var a=l.length;!function o(t){it.each(t,function(t,n){var a=it.type(n);"function"===a?e.unique&&u.has(n)||l.push(n):n&&n.length&&"string"!==a&&o(n)})}(arguments),t?i=l.length:n&&(r=a,d(n))}return this},remove:function(){return l&&it.each(arguments,function(e,n){for(var a;(a=it.inArray(n,l,a))>-1;)l.splice(a,1),t&&(i>=a&&i--,s>=a&&s--)}),this},has:function(e){return e?it.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],i=0,this},disable:function(){return l=c=n=void 0,this},disabled:function(){return!l},lock:function(){return c=void 0,n||u.disable(),this},locked:function(){return!c},fireWith:function(e,n){return!l||a&&!c||(n=n||[],n=[e,n.slice?n.slice():n],t?c.push(n):d(n)),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!a}};return u},it.extend({Deferred:function(e){var t=[["resolve","done",it.Callbacks("once memory"),"resolved"],["reject","fail",it.Callbacks("once memory"),"rejected"],["notify","progress",it.Callbacks("memory")]],n="pending",a={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return it.Deferred(function(n){it.each(t,function(t,o){var s=it.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&it.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[o[0]+"With"](this===a?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?it.extend(e,a):a}},i={};return a.pipe=a.then,it.each(t,function(e,o){var s=o[2],r=o[3];a[o[1]]=s.add,r&&s.add(function(){n=r},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?a:this,arguments),this},i[o[0]+"With"]=s.fireWith}),a.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,a,i=0,o=Y.call(arguments),s=o.length,r=1!==s||e&&it.isFunction(e.promise)?s:0,l=1===r?e:it.Deferred(),c=function(e,n,a){return function(i){n[e]=this,a[e]=arguments.length>1?Y.call(arguments):i,a===t?l.notifyWith(n,a):--r||l.resolveWith(n,a)}};if(s>1)for(t=new Array(s),n=new Array(s),a=new Array(s);s>i;i++)o[i]&&it.isFunction(o[i].promise)?o[i].promise().done(c(i,a,o)).fail(l.reject).progress(c(i,n,t)):--r;return r||l.resolveWith(a,o),l.promise()}});var wt;it.fn.ready=function(e){return it.ready.promise().done(e),this},it.extend({isReady:!1,readyWait:1,holdReady:function(e){e?it.readyWait++:it.ready(!0)},ready:function(e){if(e===!0?!--it.readyWait:!it.isReady){if(!gt.body)return setTimeout(it.ready);it.isReady=!0,e!==!0&&--it.readyWait>0||(wt.resolveWith(gt,[it]),it.fn.triggerHandler&&(it(gt).triggerHandler("ready"),it(gt).off("ready")))}}}),it.ready.promise=function(t){if(!wt)if(wt=it.Deferred(),"complete"===gt.readyState)setTimeout(it.ready);else if(gt.addEventListener)gt.addEventListener("DOMContentLoaded",r,!1),e.addEventListener("load",r,!1);else{gt.attachEvent("onreadystatechange",r),e.attachEvent("onload",r);var n=!1;try{n=null==e.frameElement&&gt.documentElement}catch(a){}n&&n.doScroll&&!function i(){if(!it.isReady){try{n.doScroll("left")}catch(e){return setTimeout(i,50)}s(),it.ready()}}()}return wt.promise(t)};var kt,$t="undefined";for(kt in it(nt))break;nt.ownLast="0"!==kt,nt.inlineBlockNeedsLayout=!1,it(function(){var e,t,n,a;n=gt.getElementsByTagName("body")[0],n&&n.style&&(t=gt.createElement("div"),a=gt.createElement("div"),a.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(a).appendChild(t),typeof t.style.zoom!==$t&&(t.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",nt.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(a))}),function(){var e=gt.createElement("div");if(null==nt.deleteExpando){nt.deleteExpando=!0;try{delete e.test}catch(t){nt.deleteExpando=!1}}e=null}(),it.acceptData=function(e){var t=it.noData[(e.nodeName+" ").toLowerCase()],n=+e.nodeType||1;return 1!==n&&9!==n?!1:!t||t!==!0&&e.getAttribute("classid")===t};var Ct=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,St=/([A-Z])/g;it.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?it.cache[e[it.expando]]:e[it.expando],!!e&&!c(e)},data:function(e,t,n){return d(e,t,n)},removeData:function(e,t){return u(e,t)},_data:function(e,t,n){return d(e,t,n,!0)},_removeData:function(e,t){return u(e,t,!0)}}),it.fn.extend({data:function(e,t){var n,a,i,o=this[0],s=o&&o.attributes;if(void 0===e){if(this.length&&(i=it.data(o),1===o.nodeType&&!it._data(o,"parsedAttrs"))){for(n=s.length;n--;)s[n]&&(a=s[n].name,0===a.indexOf("data-")&&(a=it.camelCase(a.slice(5)),l(o,a,i[a])));it._data(o,"parsedAttrs",!0)}return i}return"object"==typeof e?this.each(function(){it.data(this,e)}):arguments.length>1?this.each(function(){it.data(this,e,t)}):o?l(o,e,it.data(o,e)):void 0},removeData:function(e){return this.each(function(){it.removeData(this,e)})}}),it.extend({queue:function(e,t,n){var a;return e?(t=(t||"fx")+"queue",a=it._data(e,t),n&&(!a||it.isArray(n)?a=it._data(e,t,it.makeArray(n)):a.push(n)),a||[]):void 0},dequeue:function(e,t){t=t||"fx";var n=it.queue(e,t),a=n.length,i=n.shift(),o=it._queueHooks(e,t),s=function(){it.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),a--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,s,o)),!a&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return it._data(e,n)||it._data(e,n,{empty:it.Callbacks("once memory").add(function(){it._removeData(e,t+"queue"),it._removeData(e,n)})})}}),it.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?it.queue(this[0],e):void 0===t?this:this.each(function(){var n=it.queue(this,e,t);it._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&it.dequeue(this,e)})},dequeue:function(e){return this.each(function(){it.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,a=1,i=it.Deferred(),o=this,s=this.length,r=function(){--a||i.resolveWith(o,[o])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";s--;)n=it._data(o[s],e+"queueHooks"),n&&n.empty&&(a++,n.empty.add(r));return r(),i.promise(t)}});var Mt=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,xt=["Top","Right","Bottom","Left"],It=function(e,t){return e=t||e,"none"===it.css(e,"display")||!it.contains(e.ownerDocument,e)},At=it.access=function(e,t,n,a,i,o,s){var r=0,l=e.length,c=null==n;if("object"===it.type(n)){i=!0;for(r in n)it.access(e,t,r,n[r],!0,o,s)}else if(void 0!==a&&(i=!0,it.isFunction(a)||(s=!0),c&&(s?(t.call(e,a),t=null):(c=t,t=function(e,t,n){return c.call(it(e),n)})),t))for(;l>r;r++)t(e[r],n,s?a:a.call(e[r],r,t(e[r],n)));return i?e:c?t.call(e):l?t(e[0],n):o},Et=/^(?:checkbox|radio)$/i;!function(){var e=gt.createElement("input"),t=gt.createElement("div"),n=gt.createDocumentFragment();if(t.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",nt.leadingWhitespace=3===t.firstChild.nodeType,nt.tbody=!t.getElementsByTagName("tbody").length,nt.htmlSerialize=!!t.getElementsByTagName("link").length,nt.html5Clone="<:nav></:nav>"!==gt.createElement("nav").cloneNode(!0).outerHTML,e.type="checkbox",e.checked=!0,n.appendChild(e),nt.appendChecked=e.checked,t.innerHTML="<textarea>x</textarea>",nt.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue,n.appendChild(t),t.innerHTML="<input type='radio' checked='checked' name='t'/>",nt.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,nt.noCloneEvent=!0,t.attachEvent&&(t.attachEvent("onclick",function(){nt.noCloneEvent=!1}),t.cloneNode(!0).click()),null==nt.deleteExpando){nt.deleteExpando=!0;try{delete t.test}catch(a){nt.deleteExpando=!1}}}(),function(){var t,n,a=gt.createElement("div");for(t in{submit:!0,change:!0,focusin:!0})n="on"+t,(nt[t+"Bubbles"]=n in e)||(a.setAttribute(n,"t"),nt[t+"Bubbles"]=a.attributes[n].expando===!1);a=null}();var Tt=/^(?:input|select|textarea)$/i,Dt=/^key/,Pt=/^(?:mouse|pointer|contextmenu)|click/,Ft=/^(?:focusinfocus|focusoutblur)$/,Rt=/^([^.]*)(?:\.(.+)|)$/;it.event={global:{},add:function(e,t,n,a,i){var o,s,r,l,c,d,u,p,m,g,h,f=it._data(e);if(f){for(n.handler&&(l=n,n=l.handler,i=l.selector),n.guid||(n.guid=it.guid++),(s=f.events)||(s=f.events={}),(d=f.handle)||(d=f.handle=function(e){return typeof it===$t||e&&it.event.triggered===e.type?void 0:it.event.dispatch.apply(d.elem,arguments)},d.elem=e),t=(t||"").match(yt)||[""],r=t.length;r--;)o=Rt.exec(t[r])||[],m=h=o[1],g=(o[2]||"").split(".").sort(),m&&(c=it.event.special[m]||{},m=(i?c.delegateType:c.bindType)||m,c=it.event.special[m]||{},u=it.extend({type:m,origType:h,data:a,handler:n,guid:n.guid,selector:i,needsContext:i&&it.expr.match.needsContext.test(i),namespace:g.join(".")},l),(p=s[m])||(p=s[m]=[],p.delegateCount=0,c.setup&&c.setup.call(e,a,g,d)!==!1||(e.addEventListener?e.addEventListener(m,d,!1):e.attachEvent&&e.attachEvent("on"+m,d))),c.add&&(c.add.call(e,u),u.handler.guid||(u.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,u):p.push(u),it.event.global[m]=!0);
e=null}},remove:function(e,t,n,a,i){var o,s,r,l,c,d,u,p,m,g,h,f=it.hasData(e)&&it._data(e);if(f&&(d=f.events)){for(t=(t||"").match(yt)||[""],c=t.length;c--;)if(r=Rt.exec(t[c])||[],m=h=r[1],g=(r[2]||"").split(".").sort(),m){for(u=it.event.special[m]||{},m=(a?u.delegateType:u.bindType)||m,p=d[m]||[],r=r[2]&&new RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=p.length;o--;)s=p[o],!i&&h!==s.origType||n&&n.guid!==s.guid||r&&!r.test(s.namespace)||a&&a!==s.selector&&("**"!==a||!s.selector)||(p.splice(o,1),s.selector&&p.delegateCount--,u.remove&&u.remove.call(e,s));l&&!p.length&&(u.teardown&&u.teardown.call(e,g,f.handle)!==!1||it.removeEvent(e,m,f.handle),delete d[m])}else for(m in d)it.event.remove(e,m+t[c],n,a,!0);it.isEmptyObject(d)&&(delete f.handle,it._removeData(e,"events"))}},trigger:function(t,n,a,i){var o,s,r,l,c,d,u,p=[a||gt],m=tt.call(t,"type")?t.type:t,g=tt.call(t,"namespace")?t.namespace.split("."):[];if(r=d=a=a||gt,3!==a.nodeType&&8!==a.nodeType&&!Ft.test(m+it.event.triggered)&&(m.indexOf(".")>=0&&(g=m.split("."),m=g.shift(),g.sort()),s=m.indexOf(":")<0&&"on"+m,t=t[it.expando]?t:new it.Event(m,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=g.join("."),t.namespace_re=t.namespace?new RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=a),n=null==n?[t]:it.makeArray(n,[t]),c=it.event.special[m]||{},i||!c.trigger||c.trigger.apply(a,n)!==!1)){if(!i&&!c.noBubble&&!it.isWindow(a)){for(l=c.delegateType||m,Ft.test(l+m)||(r=r.parentNode);r;r=r.parentNode)p.push(r),d=r;d===(a.ownerDocument||gt)&&p.push(d.defaultView||d.parentWindow||e)}for(u=0;(r=p[u++])&&!t.isPropagationStopped();)t.type=u>1?l:c.bindType||m,o=(it._data(r,"events")||{})[t.type]&&it._data(r,"handle"),o&&o.apply(r,n),o=s&&r[s],o&&o.apply&&it.acceptData(r)&&(t.result=o.apply(r,n),t.result===!1&&t.preventDefault());if(t.type=m,!i&&!t.isDefaultPrevented()&&(!c._default||c._default.apply(p.pop(),n)===!1)&&it.acceptData(a)&&s&&a[m]&&!it.isWindow(a)){d=a[s],d&&(a[s]=null),it.event.triggered=m;try{a[m]()}catch(h){}it.event.triggered=void 0,d&&(a[s]=d)}return t.result}},dispatch:function(e){e=it.event.fix(e);var t,n,a,i,o,s=[],r=Y.call(arguments),l=(it._data(this,"events")||{})[e.type]||[],c=it.event.special[e.type]||{};if(r[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(s=it.event.handlers.call(this,e,l),t=0;(i=s[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,o=0;(a=i.handlers[o++])&&!e.isImmediatePropagationStopped();)(!e.namespace_re||e.namespace_re.test(a.namespace))&&(e.handleObj=a,e.data=a.data,n=((it.event.special[a.origType]||{}).handle||a.handler).apply(i.elem,r),void 0!==n&&(e.result=n)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,a,i,o,s=[],r=t.delegateCount,l=e.target;if(r&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(i=[],o=0;r>o;o++)a=t[o],n=a.selector+" ",void 0===i[n]&&(i[n]=a.needsContext?it(n,this).index(l)>=0:it.find(n,this,null,[l]).length),i[n]&&i.push(a);i.length&&s.push({elem:l,handlers:i})}return r<t.length&&s.push({elem:this,handlers:t.slice(r)}),s},fix:function(e){if(e[it.expando])return e;var t,n,a,i=e.type,o=e,s=this.fixHooks[i];for(s||(this.fixHooks[i]=s=Pt.test(i)?this.mouseHooks:Dt.test(i)?this.keyHooks:{}),a=s.props?this.props.concat(s.props):this.props,e=new it.Event(o),t=a.length;t--;)n=a[t],e[n]=o[n];return e.target||(e.target=o.srcElement||gt),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,a,i,o=t.button,s=t.fromElement;return null==e.pageX&&null!=t.clientX&&(a=e.target.ownerDocument||gt,i=a.documentElement,n=a.body,e.pageX=t.clientX+(i&&i.scrollLeft||n&&n.scrollLeft||0)-(i&&i.clientLeft||n&&n.clientLeft||0),e.pageY=t.clientY+(i&&i.scrollTop||n&&n.scrollTop||0)-(i&&i.clientTop||n&&n.clientTop||0)),!e.relatedTarget&&s&&(e.relatedTarget=s===e.target?t.toElement:s),e.which||void 0===o||(e.which=1&o?1:2&o?3:4&o?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==g()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===g()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return it.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(e){return it.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,a){var i=it.extend(new it.Event,n,{type:e,isSimulated:!0,originalEvent:{}});a?it.event.trigger(i,null,t):it.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},it.removeEvent=gt.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var a="on"+t;e.detachEvent&&(typeof e[a]===$t&&(e[a]=null),e.detachEvent(a,n))},it.Event=function(e,t){return this instanceof it.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&e.returnValue===!1?p:m):this.type=e,t&&it.extend(this,t),this.timeStamp=e&&e.timeStamp||it.now(),void(this[it.expando]=!0)):new it.Event(e,t)},it.Event.prototype={isDefaultPrevented:m,isPropagationStopped:m,isImmediatePropagationStopped:m,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=p,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=p,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=p,e&&e.stopImmediatePropagation&&e.stopImmediatePropagation(),this.stopPropagation()}},it.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){it.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,a=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==a&&!it.contains(a,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),nt.submitBubbles||(it.event.special.submit={setup:function(){return it.nodeName(this,"form")?!1:void it.event.add(this,"click._submit keypress._submit",function(e){var t=e.target,n=it.nodeName(t,"input")||it.nodeName(t,"button")?t.form:void 0;n&&!it._data(n,"submitBubbles")&&(it.event.add(n,"submit._submit",function(e){e._submit_bubble=!0}),it._data(n,"submitBubbles",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&it.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return it.nodeName(this,"form")?!1:void it.event.remove(this,"._submit")}}),nt.changeBubbles||(it.event.special.change={setup:function(){return Tt.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(it.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),it.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),it.event.simulate("change",this,e,!0)})),!1):void it.event.add(this,"beforeactivate._change",function(e){var t=e.target;Tt.test(t.nodeName)&&!it._data(t,"changeBubbles")&&(it.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||it.event.simulate("change",this.parentNode,e,!0)}),it._data(t,"changeBubbles",!0))})},handle:function(e){var t=e.target;return this!==t||e.isSimulated||e.isTrigger||"radio"!==t.type&&"checkbox"!==t.type?e.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return it.event.remove(this,"._change"),!Tt.test(this.nodeName)}}),nt.focusinBubbles||it.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){it.event.simulate(t,e.target,it.event.fix(e),!0)};it.event.special[t]={setup:function(){var a=this.ownerDocument||this,i=it._data(a,t);i||a.addEventListener(e,n,!0),it._data(a,t,(i||0)+1)},teardown:function(){var a=this.ownerDocument||this,i=it._data(a,t)-1;i?it._data(a,t,i):(a.removeEventListener(e,n,!0),it._removeData(a,t))}}}),it.fn.extend({on:function(e,t,n,a,i){var o,s;if("object"==typeof e){"string"!=typeof t&&(n=n||t,t=void 0);for(o in e)this.on(o,t,n,e[o],i);return this}if(null==n&&null==a?(a=t,n=t=void 0):null==a&&("string"==typeof t?(a=n,n=void 0):(a=n,n=t,t=void 0)),a===!1)a=m;else if(!a)return this;return 1===i&&(s=a,a=function(e){return it().off(e),s.apply(this,arguments)},a.guid=s.guid||(s.guid=it.guid++)),this.each(function(){it.event.add(this,e,a,n,t)})},one:function(e,t,n,a){return this.on(e,t,n,a,1)},off:function(e,t,n){var a,i;if(e&&e.preventDefault&&e.handleObj)return a=e.handleObj,it(e.delegateTarget).off(a.namespace?a.origType+"."+a.namespace:a.origType,a.selector,a.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return(t===!1||"function"==typeof t)&&(n=t,t=void 0),n===!1&&(n=m),this.each(function(){it.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){it.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?it.event.trigger(e,t,n,!0):void 0}});var Nt="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",Ut=/ jQuery\d+="(?:null|\d+)"/g,Ot=new RegExp("<(?:"+Nt+")[\\s/>]","i"),Bt=/^\s+/,Lt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jt=/<([\w:]+)/,qt=/<tbody/i,Ht=/<|&#?\w+;/,Vt=/<(?:script|style|link)/i,zt=/checked\s*(?:[^=]|=\s*.checked.)/i,Wt=/^$|\/(?:java|ecma)script/i,Gt=/^true\/(.*)/,Kt=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Yt={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:nt.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},Zt=h(gt),Xt=Zt.appendChild(gt.createElement("div"));Yt.optgroup=Yt.option,Yt.tbody=Yt.tfoot=Yt.colgroup=Yt.caption=Yt.thead,Yt.th=Yt.td,it.extend({clone:function(e,t,n){var a,i,o,s,r,l=it.contains(e.ownerDocument,e);if(nt.html5Clone||it.isXMLDoc(e)||!Ot.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Xt.innerHTML=e.outerHTML,Xt.removeChild(o=Xt.firstChild)),!(nt.noCloneEvent&&nt.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||it.isXMLDoc(e)))for(a=f(o),r=f(e),s=0;null!=(i=r[s]);++s)a[s]&&$(i,a[s]);if(t)if(n)for(r=r||f(e),a=a||f(o),s=0;null!=(i=r[s]);s++)k(i,a[s]);else k(e,o);return a=f(o,"script"),a.length>0&&w(a,!l&&f(e,"script")),a=r=i=null,o},buildFragment:function(e,t,n,a){for(var i,o,s,r,l,c,d,u=e.length,p=h(t),m=[],g=0;u>g;g++)if(o=e[g],o||0===o)if("object"===it.type(o))it.merge(m,o.nodeType?[o]:o);else if(Ht.test(o)){for(r=r||p.appendChild(t.createElement("div")),l=(jt.exec(o)||["",""])[1].toLowerCase(),d=Yt[l]||Yt._default,r.innerHTML=d[1]+o.replace(Lt,"<$1></$2>")+d[2],i=d[0];i--;)r=r.lastChild;if(!nt.leadingWhitespace&&Bt.test(o)&&m.push(t.createTextNode(Bt.exec(o)[0])),!nt.tbody)for(o="table"!==l||qt.test(o)?"<table>"!==d[1]||qt.test(o)?0:r:r.firstChild,i=o&&o.childNodes.length;i--;)it.nodeName(c=o.childNodes[i],"tbody")&&!c.childNodes.length&&o.removeChild(c);for(it.merge(m,r.childNodes),r.textContent="";r.firstChild;)r.removeChild(r.firstChild);r=p.lastChild}else m.push(t.createTextNode(o));for(r&&p.removeChild(r),nt.appendChecked||it.grep(f(m,"input"),_),g=0;o=m[g++];)if((!a||-1===it.inArray(o,a))&&(s=it.contains(o.ownerDocument,o),r=f(p.appendChild(o),"script"),s&&w(r),n))for(i=0;o=r[i++];)Wt.test(o.type||"")&&n.push(o);return r=null,p},cleanData:function(e,t){for(var n,a,i,o,s=0,r=it.expando,l=it.cache,c=nt.deleteExpando,d=it.event.special;null!=(n=e[s]);s++)if((t||it.acceptData(n))&&(i=n[r],o=i&&l[i])){if(o.events)for(a in o.events)d[a]?it.event.remove(n,a):it.removeEvent(n,a,o.handle);l[i]&&(delete l[i],c?delete n[r]:typeof n.removeAttribute!==$t?n.removeAttribute(r):n[r]=null,K.push(i))}}}),it.fn.extend({text:function(e){return At(this,function(e){return void 0===e?it.text(this):this.empty().append((this[0]&&this[0].ownerDocument||gt).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=v(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=v(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){for(var n,a=e?it.filter(e,this):this,i=0;null!=(n=a[i]);i++)t||1!==n.nodeType||it.cleanData(f(n)),n.parentNode&&(t&&it.contains(n.ownerDocument,n)&&w(f(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&it.cleanData(f(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&it.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return it.clone(this,e,t)})},html:function(e){return At(this,function(e){var t=this[0]||{},n=0,a=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(Ut,""):void 0;if(!("string"!=typeof e||Vt.test(e)||!nt.htmlSerialize&&Ot.test(e)||!nt.leadingWhitespace&&Bt.test(e)||Yt[(jt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(Lt,"<$1></$2>");try{for(;a>n;n++)t=this[n]||{},1===t.nodeType&&(it.cleanData(f(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=arguments[0];return this.domManip(arguments,function(t){e=this.parentNode,it.cleanData(f(this)),e&&e.replaceChild(t,this)}),e&&(e.length||e.nodeType)?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t){e=Z.apply([],e);var n,a,i,o,s,r,l=0,c=this.length,d=this,u=c-1,p=e[0],m=it.isFunction(p);if(m||c>1&&"string"==typeof p&&!nt.checkClone&&zt.test(p))return this.each(function(n){var a=d.eq(n);m&&(e[0]=p.call(this,n,a.html())),a.domManip(e,t)});if(c&&(r=it.buildFragment(e,this[0].ownerDocument,!1,this),n=r.firstChild,1===r.childNodes.length&&(r=n),n)){for(o=it.map(f(r,"script"),y),i=o.length;c>l;l++)a=r,l!==u&&(a=it.clone(a,!0,!0),i&&it.merge(o,f(a,"script"))),t.call(this[l],a,l);if(i)for(s=o[o.length-1].ownerDocument,it.map(o,b),l=0;i>l;l++)a=o[l],Wt.test(a.type||"")&&!it._data(a,"globalEval")&&it.contains(s,a)&&(a.src?it._evalUrl&&it._evalUrl(a.src):it.globalEval((a.text||a.textContent||a.innerHTML||"").replace(Kt,"")));r=n=null}return this}}),it.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){it.fn[e]=function(e){for(var n,a=0,i=[],o=it(e),s=o.length-1;s>=a;a++)n=a===s?this:this.clone(!0),it(o[a])[t](n),X.apply(i,n.get());return this.pushStack(i)}});var Jt,Qt={};!function(){var e;nt.shrinkWrapBlocks=function(){if(null!=e)return e;e=!1;var t,n,a;return n=gt.getElementsByTagName("body")[0],n&&n.style?(t=gt.createElement("div"),a=gt.createElement("div"),a.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(a).appendChild(t),typeof t.style.zoom!==$t&&(t.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",t.appendChild(gt.createElement("div")).style.width="5px",e=3!==t.offsetWidth),n.removeChild(a),e):void 0}}();var en,tn,nn=/^margin/,an=new RegExp("^("+Mt+")(?!px)[a-z%]+$","i"),on=/^(top|right|bottom|left)$/;e.getComputedStyle?(en=function(e){return e.ownerDocument.defaultView.getComputedStyle(e,null)},tn=function(e,t,n){var a,i,o,s,r=e.style;return n=n||en(e),s=n?n.getPropertyValue(t)||n[t]:void 0,n&&(""!==s||it.contains(e.ownerDocument,e)||(s=it.style(e,t)),an.test(s)&&nn.test(t)&&(a=r.width,i=r.minWidth,o=r.maxWidth,r.minWidth=r.maxWidth=r.width=s,s=n.width,r.width=a,r.minWidth=i,r.maxWidth=o)),void 0===s?s:s+""}):gt.documentElement.currentStyle&&(en=function(e){return e.currentStyle},tn=function(e,t,n){var a,i,o,s,r=e.style;return n=n||en(e),s=n?n[t]:void 0,null==s&&r&&r[t]&&(s=r[t]),an.test(s)&&!on.test(t)&&(a=r.left,i=e.runtimeStyle,o=i&&i.left,o&&(i.left=e.currentStyle.left),r.left="fontSize"===t?"1em":s,s=r.pixelLeft+"px",r.left=a,o&&(i.left=o)),void 0===s?s:s+""||"auto"}),!function(){function t(){var t,n,a,i;n=gt.getElementsByTagName("body")[0],n&&n.style&&(t=gt.createElement("div"),a=gt.createElement("div"),a.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(a).appendChild(t),t.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",o=s=!1,l=!0,e.getComputedStyle&&(o="1%"!==(e.getComputedStyle(t,null)||{}).top,s="4px"===(e.getComputedStyle(t,null)||{width:"4px"}).width,i=t.appendChild(gt.createElement("div")),i.style.cssText=t.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",t.style.width="1px",l=!parseFloat((e.getComputedStyle(i,null)||{}).marginRight)),t.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=t.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",r=0===i[0].offsetHeight,r&&(i[0].style.display="",i[1].style.display="none",r=0===i[0].offsetHeight),n.removeChild(a))}var n,a,i,o,s,r,l;n=gt.createElement("div"),n.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",i=n.getElementsByTagName("a")[0],(a=i&&i.style)&&(a.cssText="float:left;opacity:.5",nt.opacity="0.5"===a.opacity,nt.cssFloat=!!a.cssFloat,n.style.backgroundClip="content-box",n.cloneNode(!0).style.backgroundClip="",nt.clearCloneStyle="content-box"===n.style.backgroundClip,nt.boxSizing=""===a.boxSizing||""===a.MozBoxSizing||""===a.WebkitBoxSizing,it.extend(nt,{reliableHiddenOffsets:function(){return null==r&&t(),r},boxSizingReliable:function(){return null==s&&t(),s},pixelPosition:function(){return null==o&&t(),o},reliableMarginRight:function(){return null==l&&t(),l}}))}(),it.swap=function(e,t,n,a){var i,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,a||[]);for(o in t)e.style[o]=s[o];return i};var sn=/alpha\([^)]*\)/i,rn=/opacity\s*=\s*([^)]*)/,ln=/^(none|table(?!-c[ea]).+)/,cn=new RegExp("^("+Mt+")(.*)$","i"),dn=new RegExp("^([+-])=("+Mt+")","i"),un={position:"absolute",visibility:"hidden",display:"block"},pn={letterSpacing:"0",fontWeight:"400"},mn=["Webkit","O","Moz","ms"];it.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=tn(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":nt.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,n,a){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,s,r=it.camelCase(t),l=e.style;if(t=it.cssProps[r]||(it.cssProps[r]=x(l,r)),s=it.cssHooks[t]||it.cssHooks[r],void 0===n)return s&&"get"in s&&void 0!==(i=s.get(e,!1,a))?i:l[t];if(o=typeof n,"string"===o&&(i=dn.exec(n))&&(n=(i[1]+1)*i[2]+parseFloat(it.css(e,t)),o="number"),null!=n&&n===n&&("number"!==o||it.cssNumber[r]||(n+="px"),nt.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),!(s&&"set"in s&&void 0===(n=s.set(e,n,a)))))try{l[t]=n}catch(c){}}},css:function(e,t,n,a){var i,o,s,r=it.camelCase(t);return t=it.cssProps[r]||(it.cssProps[r]=x(e.style,r)),s=it.cssHooks[t]||it.cssHooks[r],s&&"get"in s&&(o=s.get(e,!0,n)),void 0===o&&(o=tn(e,t,a)),"normal"===o&&t in pn&&(o=pn[t]),""===n||n?(i=parseFloat(o),n===!0||it.isNumeric(i)?i||0:o):o}}),it.each(["height","width"],function(e,t){it.cssHooks[t]={get:function(e,n,a){return n?ln.test(it.css(e,"display"))&&0===e.offsetWidth?it.swap(e,un,function(){return T(e,t,a)}):T(e,t,a):void 0},set:function(e,n,a){var i=a&&en(e);return A(e,n,a?E(e,t,a,nt.boxSizing&&"border-box"===it.css(e,"boxSizing",!1,i),i):0)}}}),nt.opacity||(it.cssHooks.opacity={get:function(e,t){return rn.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,a=e.currentStyle,i=it.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=a&&a.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===it.trim(o.replace(sn,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||a&&!a.filter)||(n.filter=sn.test(o)?o.replace(sn,i):o+" "+i)}}),it.cssHooks.marginRight=M(nt.reliableMarginRight,function(e,t){return t?it.swap(e,{display:"inline-block"},tn,[e,"marginRight"]):void 0}),it.each({margin:"",padding:"",border:"Width"},function(e,t){it.cssHooks[e+t]={expand:function(n){for(var a=0,i={},o="string"==typeof n?n.split(" "):[n];4>a;a++)i[e+xt[a]+t]=o[a]||o[a-2]||o[0];return i}},nn.test(e)||(it.cssHooks[e+t].set=A)}),it.fn.extend({css:function(e,t){return At(this,function(e,t,n){var a,i,o={},s=0;if(it.isArray(t)){for(a=en(e),i=t.length;i>s;s++)o[t[s]]=it.css(e,t[s],!1,a);return o}return void 0!==n?it.style(e,t,n):it.css(e,t)},e,t,arguments.length>1)},show:function(){return I(this,!0)},hide:function(){return I(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){It(this)?it(this).show():it(this).hide()})}}),it.Tween=D,D.prototype={constructor:D,init:function(e,t,n,a,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=a,this.unit=o||(it.cssNumber[n]?"":"px")},cur:function(){var e=D.propHooks[this.prop];return e&&e.get?e.get(this):D.propHooks._default.get(this)},run:function(e){var t,n=D.propHooks[this.prop];return this.pos=t=this.options.duration?it.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):D.propHooks._default.set(this),this}},D.prototype.init.prototype=D.prototype,D.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=it.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){it.fx.step[e.prop]?it.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[it.cssProps[e.prop]]||it.cssHooks[e.prop])?it.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},D.propHooks.scrollTop=D.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},it.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},it.fx=D.prototype.init,it.fx.step={};var gn,hn,fn=/^(?:toggle|show|hide)$/,_n=new RegExp("^(?:([+-])=|)("+Mt+")([a-z%]*)$","i"),vn=/queueHooks$/,yn=[N],bn={"*":[function(e,t){var n=this.createTween(e,t),a=n.cur(),i=_n.exec(t),o=i&&i[3]||(it.cssNumber[e]?"":"px"),s=(it.cssNumber[e]||"px"!==o&&+a)&&_n.exec(it.css(n.elem,e)),r=1,l=20;if(s&&s[3]!==o){o=o||s[3],i=i||[],s=+a||1;do r=r||".5",s/=r,it.style(n.elem,e,s+o);while(r!==(r=n.cur()/a)&&1!==r&&--l)}return i&&(s=n.start=+s||+a||0,n.unit=o,n.end=i[1]?s+(i[1]+1)*i[2]:+i[2]),n}]};it.Animation=it.extend(O,{tweener:function(e,t){it.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");for(var n,a=0,i=e.length;i>a;a++)n=e[a],bn[n]=bn[n]||[],bn[n].unshift(t)},prefilter:function(e,t){t?yn.unshift(e):yn.push(e)}}),it.speed=function(e,t,n){var a=e&&"object"==typeof e?it.extend({},e):{complete:n||!n&&t||it.isFunction(e)&&e,duration:e,easing:n&&t||t&&!it.isFunction(t)&&t};return a.duration=it.fx.off?0:"number"==typeof a.duration?a.duration:a.duration in it.fx.speeds?it.fx.speeds[a.duration]:it.fx.speeds._default,(null==a.queue||a.queue===!0)&&(a.queue="fx"),a.old=a.complete,a.complete=function(){it.isFunction(a.old)&&a.old.call(this),a.queue&&it.dequeue(this,a.queue)},a},it.fn.extend({fadeTo:function(e,t,n,a){return this.filter(It).css("opacity",0).show().end().animate({opacity:t},e,n,a)},animate:function(e,t,n,a){var i=it.isEmptyObject(e),o=it.speed(t,n,a),s=function(){var t=O(this,it.extend({},e),o);(i||it._data(this,"finish"))&&t.stop(!0)};return s.finish=s,i||o.queue===!1?this.each(s):this.queue(o.queue,s)},stop:function(e,t,n){var a=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=it.timers,s=it._data(this);if(i)s[i]&&s[i].stop&&a(s[i]);else for(i in s)s[i]&&s[i].stop&&vn.test(i)&&a(s[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));(t||!n)&&it.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=it._data(this),a=n[e+"queue"],i=n[e+"queueHooks"],o=it.timers,s=a?a.length:0;for(n.finish=!0,it.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;s>t;t++)a[t]&&a[t].finish&&a[t].finish.call(this);delete n.finish})}}),it.each(["toggle","show","hide"],function(e,t){var n=it.fn[t];it.fn[t]=function(e,a,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(F(t,!0),e,a,i)}}),it.each({slideDown:F("show"),slideUp:F("hide"),slideToggle:F("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){it.fn[e]=function(e,n,a){return this.animate(t,e,n,a)}}),it.timers=[],it.fx.tick=function(){var e,t=it.timers,n=0;for(gn=it.now();n<t.length;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||it.fx.stop(),gn=void 0},it.fx.timer=function(e){it.timers.push(e),e()?it.fx.start():it.timers.pop()},it.fx.interval=13,it.fx.start=function(){hn||(hn=setInterval(it.fx.tick,it.fx.interval))},it.fx.stop=function(){clearInterval(hn),hn=null},it.fx.speeds={slow:600,fast:200,_default:400},it.fn.delay=function(e,t){return e=it.fx?it.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var a=setTimeout(t,e);n.stop=function(){clearTimeout(a)}})},function(){var e,t,n,a,i;t=gt.createElement("div"),t.setAttribute("className","t"),t.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=t.getElementsByTagName("a")[0],n=gt.createElement("select"),i=n.appendChild(gt.createElement("option")),e=t.getElementsByTagName("input")[0],a.style.cssText="top:1px",nt.getSetAttribute="t"!==t.className,nt.style=/top/.test(a.getAttribute("style")),nt.hrefNormalized="/a"===a.getAttribute("href"),nt.checkOn=!!e.value,nt.optSelected=i.selected,nt.enctype=!!gt.createElement("form").enctype,n.disabled=!0,nt.optDisabled=!i.disabled,e=gt.createElement("input"),e.setAttribute("value",""),nt.input=""===e.getAttribute("value"),e.value="t",e.setAttribute("type","radio"),nt.radioValue="t"===e.value}();var wn=/\r/g;it.fn.extend({val:function(e){var t,n,a,i=this[0];return arguments.length?(a=it.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=a?e.call(this,n,it(this).val()):e,null==i?i="":"number"==typeof i?i+="":it.isArray(i)&&(i=it.map(i,function(e){return null==e?"":e+""})),t=it.valHooks[this.type]||it.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))})):i?(t=it.valHooks[i.type]||it.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace(wn,""):null==n?"":n)):void 0}}),it.extend({valHooks:{option:{get:function(e){var t=it.find.attr(e,"value");return null!=t?t:it.trim(it.text(e))}},select:{get:function(e){for(var t,n,a=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,s=o?null:[],r=o?i+1:a.length,l=0>i?r:o?i:0;r>l;l++)if(n=a[l],!(!n.selected&&l!==i||(nt.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&it.nodeName(n.parentNode,"optgroup"))){if(t=it(n).val(),o)return t;s.push(t)}return s},set:function(e,t){for(var n,a,i=e.options,o=it.makeArray(t),s=i.length;s--;)if(a=i[s],it.inArray(it.valHooks.option.get(a),o)>=0)try{a.selected=n=!0}catch(r){a.scrollHeight}else a.selected=!1;return n||(e.selectedIndex=-1),i}}}}),it.each(["radio","checkbox"],function(){it.valHooks[this]={set:function(e,t){return it.isArray(t)?e.checked=it.inArray(it(e).val(),t)>=0:void 0}},nt.checkOn||(it.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var kn,$n,Cn=it.expr.attrHandle,Sn=/^(?:checked|selected)$/i,Mn=nt.getSetAttribute,xn=nt.input;it.fn.extend({attr:function(e,t){return At(this,it.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){it.removeAttr(this,e)})}}),it.extend({attr:function(e,t,n){var a,i,o=e.nodeType;return e&&3!==o&&8!==o&&2!==o?typeof e.getAttribute===$t?it.prop(e,t,n):(1===o&&it.isXMLDoc(e)||(t=t.toLowerCase(),a=it.attrHooks[t]||(it.expr.match.bool.test(t)?$n:kn)),void 0===n?a&&"get"in a&&null!==(i=a.get(e,t))?i:(i=it.find.attr(e,t),null==i?void 0:i):null!==n?a&&"set"in a&&void 0!==(i=a.set(e,n,t))?i:(e.setAttribute(t,n+""),n):void it.removeAttr(e,t)):void 0},removeAttr:function(e,t){var n,a,i=0,o=t&&t.match(yt);if(o&&1===e.nodeType)for(;n=o[i++];)a=it.propFix[n]||n,it.expr.match.bool.test(n)?xn&&Mn||!Sn.test(n)?e[a]=!1:e[it.camelCase("default-"+n)]=e[a]=!1:it.attr(e,n,""),e.removeAttribute(Mn?n:a)},attrHooks:{type:{set:function(e,t){if(!nt.radioValue&&"radio"===t&&it.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}}}),$n={set:function(e,t,n){return t===!1?it.removeAttr(e,n):xn&&Mn||!Sn.test(n)?e.setAttribute(!Mn&&it.propFix[n]||n,n):e[it.camelCase("default-"+n)]=e[n]=!0,n}},it.each(it.expr.match.bool.source.match(/\w+/g),function(e,t){var n=Cn[t]||it.find.attr;Cn[t]=xn&&Mn||!Sn.test(t)?function(e,t,a){var i,o;return a||(o=Cn[t],Cn[t]=i,i=null!=n(e,t,a)?t.toLowerCase():null,Cn[t]=o),i}:function(e,t,n){return n?void 0:e[it.camelCase("default-"+t)]?t.toLowerCase():null}}),xn&&Mn||(it.attrHooks.value={set:function(e,t,n){return it.nodeName(e,"input")?void(e.defaultValue=t):kn&&kn.set(e,t,n)}}),Mn||(kn={set:function(e,t,n){var a=e.getAttributeNode(n);return a||e.setAttributeNode(a=e.ownerDocument.createAttribute(n)),a.value=t+="","value"===n||t===e.getAttribute(n)?t:void 0}},Cn.id=Cn.name=Cn.coords=function(e,t,n){var a;return n?void 0:(a=e.getAttributeNode(t))&&""!==a.value?a.value:null},it.valHooks.button={get:function(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:void 0},set:kn.set},it.attrHooks.contenteditable={set:function(e,t,n){kn.set(e,""===t?!1:t,n)}},it.each(["width","height"],function(e,t){it.attrHooks[t]={set:function(e,n){return""===n?(e.setAttribute(t,"auto"),n):void 0}}})),nt.style||(it.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+""}});var In=/^(?:input|select|textarea|button|object)$/i,An=/^(?:a|area)$/i;it.fn.extend({prop:function(e,t){return At(this,it.prop,e,t,arguments.length>1)},removeProp:function(e){return e=it.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]
}catch(t){}})}}),it.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(e,t,n){var a,i,o,s=e.nodeType;return e&&3!==s&&8!==s&&2!==s?(o=1!==s||!it.isXMLDoc(e),o&&(t=it.propFix[t]||t,i=it.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(a=i.set(e,n,t))?a:e[t]=n:i&&"get"in i&&null!==(a=i.get(e,t))?a:e[t]):void 0},propHooks:{tabIndex:{get:function(e){var t=it.find.attr(e,"tabindex");return t?parseInt(t,10):In.test(e.nodeName)||An.test(e.nodeName)&&e.href?0:-1}}}}),nt.hrefNormalized||it.each(["href","src"],function(e,t){it.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),nt.optSelected||(it.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),it.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){it.propFix[this.toLowerCase()]=this}),nt.enctype||(it.propFix.enctype="encoding");var En=/[\t\r\n\f]/g;it.fn.extend({addClass:function(e){var t,n,a,i,o,s,r=0,l=this.length,c="string"==typeof e&&e;if(it.isFunction(e))return this.each(function(t){it(this).addClass(e.call(this,t,this.className))});if(c)for(t=(e||"").match(yt)||[];l>r;r++)if(n=this[r],a=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(En," "):" ")){for(o=0;i=t[o++];)a.indexOf(" "+i+" ")<0&&(a+=i+" ");s=it.trim(a),n.className!==s&&(n.className=s)}return this},removeClass:function(e){var t,n,a,i,o,s,r=0,l=this.length,c=0===arguments.length||"string"==typeof e&&e;if(it.isFunction(e))return this.each(function(t){it(this).removeClass(e.call(this,t,this.className))});if(c)for(t=(e||"").match(yt)||[];l>r;r++)if(n=this[r],a=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(En," "):"")){for(o=0;i=t[o++];)for(;a.indexOf(" "+i+" ")>=0;)a=a.replace(" "+i+" "," ");s=e?it.trim(a):"",n.className!==s&&(n.className=s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):this.each(it.isFunction(e)?function(n){it(this).toggleClass(e.call(this,n,this.className,t),t)}:function(){if("string"===n)for(var t,a=0,i=it(this),o=e.match(yt)||[];t=o[a++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else(n===$t||"boolean"===n)&&(this.className&&it._data(this,"__className__",this.className),this.className=this.className||e===!1?"":it._data(this,"__className__")||"")})},hasClass:function(e){for(var t=" "+e+" ",n=0,a=this.length;a>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(En," ").indexOf(t)>=0)return!0;return!1}}),it.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){it.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),it.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,a){return this.on(t,e,n,a)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var Tn=it.now(),Dn=/\?/,Pn=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;it.parseJSON=function(t){if(e.JSON&&e.JSON.parse)return e.JSON.parse(t+"");var n,a=null,i=it.trim(t+"");return i&&!it.trim(i.replace(Pn,function(e,t,i,o){return n&&t&&(a=0),0===a?e:(n=i||t,a+=!o-!i,"")}))?Function("return "+i)():it.error("Invalid JSON: "+t)},it.parseXML=function(t){var n,a;if(!t||"string"!=typeof t)return null;try{e.DOMParser?(a=new DOMParser,n=a.parseFromString(t,"text/xml")):(n=new ActiveXObject("Microsoft.XMLDOM"),n.async="false",n.loadXML(t))}catch(i){n=void 0}return n&&n.documentElement&&!n.getElementsByTagName("parsererror").length||it.error("Invalid XML: "+t),n};var Fn,Rn,Nn=/#.*$/,Un=/([?&])_=[^&]*/,On=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Bn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ln=/^(?:GET|HEAD)$/,jn=/^\/\//,qn=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hn={},Vn={},zn="*/".concat("*");try{Rn=location.href}catch(Wn){Rn=gt.createElement("a"),Rn.href="",Rn=Rn.href}Fn=qn.exec(Rn.toLowerCase())||[],it.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Rn,type:"GET",isLocal:Bn.test(Fn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":zn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":it.parseJSON,"text xml":it.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?j(j(e,it.ajaxSettings),t):j(it.ajaxSettings,e)},ajaxPrefilter:B(Hn),ajaxTransport:B(Vn),ajax:function(e,t){function n(e,t,n,a){var i,d,_,v,b,k=t;2!==y&&(y=2,r&&clearTimeout(r),c=void 0,s=a||"",w.readyState=e>0?4:0,i=e>=200&&300>e||304===e,n&&(v=q(u,w,n)),v=H(u,v,w,i),i?(u.ifModified&&(b=w.getResponseHeader("Last-Modified"),b&&(it.lastModified[o]=b),b=w.getResponseHeader("etag"),b&&(it.etag[o]=b)),204===e||"HEAD"===u.type?k="nocontent":304===e?k="notmodified":(k=v.state,d=v.data,_=v.error,i=!_)):(_=k,(e||!k)&&(k="error",0>e&&(e=0))),w.status=e,w.statusText=(t||k)+"",i?g.resolveWith(p,[d,k,w]):g.rejectWith(p,[w,k,_]),w.statusCode(f),f=void 0,l&&m.trigger(i?"ajaxSuccess":"ajaxError",[w,u,i?d:_]),h.fireWith(p,[w,k]),l&&(m.trigger("ajaxComplete",[w,u]),--it.active||it.event.trigger("ajaxStop")))}"object"==typeof e&&(t=e,e=void 0),t=t||{};var a,i,o,s,r,l,c,d,u=it.ajaxSetup({},t),p=u.context||u,m=u.context&&(p.nodeType||p.jquery)?it(p):it.event,g=it.Deferred(),h=it.Callbacks("once memory"),f=u.statusCode||{},_={},v={},y=0,b="canceled",w={readyState:0,getResponseHeader:function(e){var t;if(2===y){if(!d)for(d={};t=On.exec(s);)d[t[1].toLowerCase()]=t[2];t=d[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===y?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return y||(e=v[n]=v[n]||e,_[e]=t),this},overrideMimeType:function(e){return y||(u.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>y)for(t in e)f[t]=[f[t],e[t]];else w.always(e[w.status]);return this},abort:function(e){var t=e||b;return c&&c.abort(t),n(0,t),this}};if(g.promise(w).complete=h.add,w.success=w.done,w.error=w.fail,u.url=((e||u.url||Rn)+"").replace(Nn,"").replace(jn,Fn[1]+"//"),u.type=t.method||t.type||u.method||u.type,u.dataTypes=it.trim(u.dataType||"*").toLowerCase().match(yt)||[""],null==u.crossDomain&&(a=qn.exec(u.url.toLowerCase()),u.crossDomain=!(!a||a[1]===Fn[1]&&a[2]===Fn[2]&&(a[3]||("http:"===a[1]?"80":"443"))===(Fn[3]||("http:"===Fn[1]?"80":"443")))),u.data&&u.processData&&"string"!=typeof u.data&&(u.data=it.param(u.data,u.traditional)),L(Hn,u,t,w),2===y)return w;l=u.global,l&&0===it.active++&&it.event.trigger("ajaxStart"),u.type=u.type.toUpperCase(),u.hasContent=!Ln.test(u.type),o=u.url,u.hasContent||(u.data&&(o=u.url+=(Dn.test(o)?"&":"?")+u.data,delete u.data),u.cache===!1&&(u.url=Un.test(o)?o.replace(Un,"$1_="+Tn++):o+(Dn.test(o)?"&":"?")+"_="+Tn++)),u.ifModified&&(it.lastModified[o]&&w.setRequestHeader("If-Modified-Since",it.lastModified[o]),it.etag[o]&&w.setRequestHeader("If-None-Match",it.etag[o])),(u.data&&u.hasContent&&u.contentType!==!1||t.contentType)&&w.setRequestHeader("Content-Type",u.contentType),w.setRequestHeader("Accept",u.dataTypes[0]&&u.accepts[u.dataTypes[0]]?u.accepts[u.dataTypes[0]]+("*"!==u.dataTypes[0]?", "+zn+"; q=0.01":""):u.accepts["*"]);for(i in u.headers)w.setRequestHeader(i,u.headers[i]);if(u.beforeSend&&(u.beforeSend.call(p,w,u)===!1||2===y))return w.abort();b="abort";for(i in{success:1,error:1,complete:1})w[i](u[i]);if(c=L(Vn,u,t,w)){w.readyState=1,l&&m.trigger("ajaxSend",[w,u]),u.async&&u.timeout>0&&(r=setTimeout(function(){w.abort("timeout")},u.timeout));try{y=1,c.send(_,n)}catch(k){if(!(2>y))throw k;n(-1,k)}}else n(-1,"No Transport");return w},getJSON:function(e,t,n){return it.get(e,t,n,"json")},getScript:function(e,t){return it.get(e,void 0,t,"script")}}),it.each(["get","post"],function(e,t){it[t]=function(e,n,a,i){return it.isFunction(n)&&(i=i||a,a=n,n=void 0),it.ajax({url:e,type:t,dataType:i,data:n,success:a})}}),it.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){it.fn[t]=function(e){return this.on(t,e)}}),it._evalUrl=function(e){return it.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},it.fn.extend({wrapAll:function(e){if(it.isFunction(e))return this.each(function(t){it(this).wrapAll(e.call(this,t))});if(this[0]){var t=it(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return this.each(it.isFunction(e)?function(t){it(this).wrapInner(e.call(this,t))}:function(){var t=it(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=it.isFunction(e);return this.each(function(n){it(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){it.nodeName(this,"body")||it(this).replaceWith(this.childNodes)}).end()}}),it.expr.filters.hidden=function(e){return e.offsetWidth<=0&&e.offsetHeight<=0||!nt.reliableHiddenOffsets()&&"none"===(e.style&&e.style.display||it.css(e,"display"))},it.expr.filters.visible=function(e){return!it.expr.filters.hidden(e)};var Gn=/%20/g,Kn=/\[\]$/,Yn=/\r?\n/g,Zn=/^(?:submit|button|image|reset|file)$/i,Xn=/^(?:input|select|textarea|keygen)/i;it.param=function(e,t){var n,a=[],i=function(e,t){t=it.isFunction(t)?t():null==t?"":t,a[a.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=it.ajaxSettings&&it.ajaxSettings.traditional),it.isArray(e)||e.jquery&&!it.isPlainObject(e))it.each(e,function(){i(this.name,this.value)});else for(n in e)V(n,e[n],t,i);return a.join("&").replace(Gn,"+")},it.fn.extend({serialize:function(){return it.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=it.prop(this,"elements");return e?it.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!it(this).is(":disabled")&&Xn.test(this.nodeName)&&!Zn.test(e)&&(this.checked||!Et.test(e))}).map(function(e,t){var n=it(this).val();return null==n?null:it.isArray(n)?it.map(n,function(e){return{name:t.name,value:e.replace(Yn,"\r\n")}}):{name:t.name,value:n.replace(Yn,"\r\n")}}).get()}}),it.ajaxSettings.xhr=void 0!==e.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&z()||W()}:z;var Jn=0,Qn={},ea=it.ajaxSettings.xhr();e.ActiveXObject&&it(e).on("unload",function(){for(var e in Qn)Qn[e](void 0,!0)}),nt.cors=!!ea&&"withCredentials"in ea,ea=nt.ajax=!!ea,ea&&it.ajaxTransport(function(e){if(!e.crossDomain||nt.cors){var t;return{send:function(n,a){var i,o=e.xhr(),s=++Jn;if(o.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(i in e.xhrFields)o[i]=e.xhrFields[i];e.mimeType&&o.overrideMimeType&&o.overrideMimeType(e.mimeType),e.crossDomain||n["X-Requested-With"]||(n["X-Requested-With"]="XMLHttpRequest");for(i in n)void 0!==n[i]&&o.setRequestHeader(i,n[i]+"");o.send(e.hasContent&&e.data||null),t=function(n,i){var r,l,c;if(t&&(i||4===o.readyState))if(delete Qn[s],t=void 0,o.onreadystatechange=it.noop,i)4!==o.readyState&&o.abort();else{c={},r=o.status,"string"==typeof o.responseText&&(c.text=o.responseText);try{l=o.statusText}catch(d){l=""}r||!e.isLocal||e.crossDomain?1223===r&&(r=204):r=c.text?200:404}c&&a(r,l,c,o.getAllResponseHeaders())},e.async?4===o.readyState?setTimeout(t):o.onreadystatechange=Qn[s]=t:t()},abort:function(){t&&t(void 0,!0)}}}}),it.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return it.globalEval(e),e}}}),it.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),it.ajaxTransport("script",function(e){if(e.crossDomain){var t,n=gt.head||it("head")[0]||gt.documentElement;return{send:function(a,i){t=gt.createElement("script"),t.async=!0,e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,n){(n||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),t=null,n||i(200,"success"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var ta=[],na=/(=)\?(?=&|$)|\?\?/;it.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=ta.pop()||it.expando+"_"+Tn++;return this[e]=!0,e}}),it.ajaxPrefilter("json jsonp",function(t,n,a){var i,o,s,r=t.jsonp!==!1&&(na.test(t.url)?"url":"string"==typeof t.data&&!(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&na.test(t.data)&&"data");return r||"jsonp"===t.dataTypes[0]?(i=t.jsonpCallback=it.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,r?t[r]=t[r].replace(na,"$1"+i):t.jsonp!==!1&&(t.url+=(Dn.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return s||it.error(i+" was not called"),s[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){s=arguments},a.always(function(){e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,ta.push(i)),s&&it.isFunction(o)&&o(s[0]),s=o=void 0}),"script"):void 0}),it.parseHTML=function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||gt;var a=ut.exec(e),i=!n&&[];return a?[t.createElement(a[1])]:(a=it.buildFragment([e],t,i),i&&i.length&&it(i).remove(),it.merge([],a.childNodes))};var aa=it.fn.load;it.fn.load=function(e,t,n){if("string"!=typeof e&&aa)return aa.apply(this,arguments);var a,i,o,s=this,r=e.indexOf(" ");return r>=0&&(a=it.trim(e.slice(r,e.length)),e=e.slice(0,r)),it.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(o="POST"),s.length>0&&it.ajax({url:e,type:o,dataType:"html",data:t}).done(function(e){i=arguments,s.html(a?it("<div>").append(it.parseHTML(e)).find(a):e)}).complete(n&&function(e,t){s.each(n,i||[e.responseText,t,e])}),this},it.expr.filters.animated=function(e){return it.grep(it.timers,function(t){return e===t.elem}).length};var ia=e.document.documentElement;it.offset={setOffset:function(e,t,n){var a,i,o,s,r,l,c,d=it.css(e,"position"),u=it(e),p={};"static"===d&&(e.style.position="relative"),r=u.offset(),o=it.css(e,"top"),l=it.css(e,"left"),c=("absolute"===d||"fixed"===d)&&it.inArray("auto",[o,l])>-1,c?(a=u.position(),s=a.top,i=a.left):(s=parseFloat(o)||0,i=parseFloat(l)||0),it.isFunction(t)&&(t=t.call(e,n,r)),null!=t.top&&(p.top=t.top-r.top+s),null!=t.left&&(p.left=t.left-r.left+i),"using"in t?t.using.call(e,p):u.css(p)}},it.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){it.offset.setOffset(this,e,t)});var t,n,a={top:0,left:0},i=this[0],o=i&&i.ownerDocument;return o?(t=o.documentElement,it.contains(t,i)?(typeof i.getBoundingClientRect!==$t&&(a=i.getBoundingClientRect()),n=G(o),{top:a.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:a.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):a):void 0},position:function(){if(this[0]){var e,t,n={top:0,left:0},a=this[0];return"fixed"===it.css(a,"position")?t=a.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),it.nodeName(e[0],"html")||(n=e.offset()),n.top+=it.css(e[0],"borderTopWidth",!0),n.left+=it.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-it.css(a,"marginTop",!0),left:t.left-n.left-it.css(a,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent||ia;e&&!it.nodeName(e,"html")&&"static"===it.css(e,"position");)e=e.offsetParent;return e||ia})}}),it.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n=/Y/.test(t);it.fn[e]=function(a){return At(this,function(e,a,i){var o=G(e);return void 0===i?o?t in o?o[t]:o.document.documentElement[a]:e[a]:void(o?o.scrollTo(n?it(o).scrollLeft():i,n?i:it(o).scrollTop()):e[a]=i)},e,a,arguments.length,null)}}),it.each(["top","left"],function(e,t){it.cssHooks[t]=M(nt.pixelPosition,function(e,n){return n?(n=tn(e,t),an.test(n)?it(e).position()[t]+"px":n):void 0})}),it.each({Height:"height",Width:"width"},function(e,t){it.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,a){it.fn[a]=function(a,i){var o=arguments.length&&(n||"boolean"!=typeof a),s=n||(a===!0||i===!0?"margin":"border");return At(this,function(t,n,a){var i;return it.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):void 0===a?it.css(t,n,s):it.style(t,n,a,s)},t,o?a:void 0,o,null)}})}),it.fn.size=function(){return this.length},it.fn.andSelf=it.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return it});var oa=e.jQuery,sa=e.$;return it.noConflict=function(t){return e.$===it&&(e.$=sa),t&&e.jQuery===it&&(e.jQuery=oa),it},typeof t===$t&&(e.jQuery=e.$=it),it}),Config=window.Config||{},Config.App={id:2496,hash:"8da85b0d5bfe62527e5b244c209159c3",version:"0.5.3",domains:["web.telegram.org","zhukov.github.io"]},Config.Modes={test:location.search.indexOf("test=1")>0,debug:location.search.indexOf("debug=1")>0,http:location.search.indexOf("http=1")>0,ssl:location.search.indexOf("ssl=1")>0||"https:"==location.protocol&&-1==location.search.indexOf("ssl=0"),force_mobile:location.search.indexOf("mobile=1")>0,force_desktop:location.search.indexOf("desktop=1")>0,nacl:-1==location.search.indexOf("nacl=0"),webcrypto:-1==location.search.indexOf("webcrypto=0"),packed:"app:"==location.protocol||"chrome-extension:"==location.protocol,ios_standalone:window.navigator.standalone&&navigator.userAgent.match(/iOS|iPhone|iPad/),chrome_packed:window.chrome&&chrome.app&&chrome.app.window&&!0||!1,animations:!0,memory_only:!1},Config.Navigator={osX:-1!=(navigator.platform||"").toLowerCase().indexOf("mac")||-1!=(navigator.userAgent||"").toLowerCase().indexOf("mac"),msie:-1!=(navigator.userAgent||"").search(/MSIE | Trident\/|Edge\//),retina:window.devicePixelRatio>1,ffos:-1!=navigator.userAgent.search(/mobi.+Gecko/i),ffos2p:-1!=navigator.userAgent.search(/mobi.+Gecko\/[34567]/i),touch:screen.width<=768||"ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch,mobile:screen.width&&screen.width<480||-1!=navigator.userAgent.search(/iOS|iPhone OS|Android|BlackBerry|BB10|Series ?[64]0|J2ME|MIDP|opera mini|opera mobi|mobi.+Gecko|Windows Phone/i)},Config.I18n={locale:"en-us",supported:["en-us","es-es","de-de","it-it","nl-nl","pt-br"],languages:{"en-us":"English","de-de":"Deutsch","es-es":"Español","it-it":"Italiano","ru-ru":"Русский","nl-nl":"Nederlands","pt-br":"Português (Brazil)"},aliases:{en:"en-us",de:"de-de",es:"es-es",it:"it-it",ru:"ru-ru",nl:"nl-nl"},messages:{},fallback_messages:{}},Config.ExtCredentials={gmaps:{api_key:"AIzaSyC32ij28dCa0YzEV_HqbWfIwTZQql-RNS0"}},Config.Schema=Config.Schema||{},Config.Schema.MTProto={constructors:[{id:"481674261",predicate:"vector",params:[],type:"Vector t"},{id:"85337187",predicate:"resPQ",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"pq",type:"bytes"},{name:"server_public_key_fingerprints",type:"Vector<long>"}],type:"ResPQ"},{id:"-2083955988",predicate:"p_q_inner_data",params:[{name:"pq",type:"bytes"},{name:"p",type:"bytes"},{name:"q",type:"bytes"},{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"new_nonce",type:"int256"}],type:"P_Q_inner_data"},{id:"2043348061",predicate:"server_DH_params_fail",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"new_nonce_hash",type:"int128"}],type:"Server_DH_Params"},{id:"-790100132",predicate:"server_DH_params_ok",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"encrypted_answer",type:"bytes"}],type:"Server_DH_Params"},{id:"-1249309254",predicate:"server_DH_inner_data",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"g",type:"int"},{name:"dh_prime",type:"bytes"},{name:"g_a",type:"bytes"},{name:"server_time",type:"int"}],type:"Server_DH_inner_data"},{id:"1715713620",predicate:"client_DH_inner_data",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"retry_id",type:"long"},{name:"g_b",type:"bytes"}],type:"Client_DH_Inner_Data"},{id:"1003222836",predicate:"dh_gen_ok",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"new_nonce_hash1",type:"int128"}],type:"Set_client_DH_params_answer"},{id:"1188831161",predicate:"dh_gen_retry",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"new_nonce_hash2",type:"int128"}],type:"Set_client_DH_params_answer"},{id:"-1499615742",predicate:"dh_gen_fail",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"new_nonce_hash3",type:"int128"}],type:"Set_client_DH_params_answer"},{id:"-212046591",predicate:"rpc_result",params:[{name:"req_msg_id",type:"long"},{name:"result",type:"Object"}],type:"RpcResult"},{id:"558156313",predicate:"rpc_error",params:[{name:"error_code",type:"int"},{name:"error_message",type:"string"}],type:"RpcError"},{id:"1579864942",predicate:"rpc_answer_unknown",params:[],type:"RpcDropAnswer"},{id:"-847714938",predicate:"rpc_answer_dropped_running",params:[],type:"RpcDropAnswer"},{id:"-1539647305",predicate:"rpc_answer_dropped",params:[{name:"msg_id",type:"long"},{name:"seq_no",type:"int"},{name:"bytes",type:"int"}],type:"RpcDropAnswer"},{id:"155834844",predicate:"future_salt",params:[{name:"valid_since",type:"int"},{name:"valid_until",type:"int"},{name:"salt",type:"long"}],type:"FutureSalt"},{id:"-1370486635",predicate:"future_salts",params:[{name:"req_msg_id",type:"long"},{name:"now",type:"int"},{name:"salts",type:"vector<future_salt>"}],type:"FutureSalts"},{id:"880243653",predicate:"pong",params:[{name:"msg_id",type:"long"},{name:"ping_id",type:"long"}],type:"Pong"},{id:"-501201412",predicate:"destroy_session_ok",params:[{name:"session_id",type:"long"}],type:"DestroySessionRes"},{id:"1658015945",predicate:"destroy_session_none",params:[{name:"session_id",type:"long"}],type:"DestroySessionRes"},{id:"-1631450872",predicate:"new_session_created",params:[{name:"first_msg_id",type:"long"},{name:"unique_id",type:"long"},{name:"server_salt",type:"long"}],type:"NewSession"},{id:"1945237724",predicate:"msg_container",params:[{name:"messages",type:"vector<%Message>"}],type:"MessageContainer"},{id:"1538843921",predicate:"message",params:[{name:"msg_id",type:"long"},{name:"seqno",type:"int"},{name:"bytes",type:"int"},{name:"body",type:"Object"}],type:"Message"},{id:"-530561358",predicate:"msg_copy",params:[{name:"orig_message",type:"Message"}],type:"MessageCopy"},{id:"812830625",predicate:"gzip_packed",params:[{name:"packed_data",type:"bytes"}],type:"Object"},{id:"1658238041",predicate:"msgs_ack",params:[{name:"msg_ids",type:"Vector<long>"}],type:"MsgsAck"},{id:"-1477445615",predicate:"bad_msg_notification",params:[{name:"bad_msg_id",type:"long"},{name:"bad_msg_seqno",type:"int"},{name:"error_code",type:"int"}],type:"BadMsgNotification"},{id:"-307542917",predicate:"bad_server_salt",params:[{name:"bad_msg_id",type:"long"},{name:"bad_msg_seqno",type:"int"},{name:"error_code",type:"int"},{name:"new_server_salt",type:"long"}],type:"BadMsgNotification"},{id:"2105940488",predicate:"msg_resend_req",params:[{name:"msg_ids",type:"Vector<long>"}],type:"MsgResendReq"},{id:"-630588590",predicate:"msgs_state_req",params:[{name:"msg_ids",type:"Vector<long>"}],type:"MsgsStateReq"},{id:"81704317",predicate:"msgs_state_info",params:[{name:"req_msg_id",type:"long"},{name:"info",type:"bytes"}],type:"MsgsStateInfo"},{id:"-1933520591",predicate:"msgs_all_info",params:[{name:"msg_ids",type:"Vector<long>"},{name:"info",type:"bytes"}],type:"MsgsAllInfo"},{id:"661470918",predicate:"msg_detailed_info",params:[{name:"msg_id",type:"long"},{name:"answer_msg_id",type:"long"},{name:"bytes",type:"int"},{name:"status",type:"int"}],type:"MsgDetailedInfo"},{id:"-2137147681",predicate:"msg_new_detailed_info",params:[{name:"answer_msg_id",type:"long"},{name:"bytes",type:"int"},{name:"status",type:"int"}],type:"MsgDetailedInfo"}],methods:[{id:"1615239032",method:"req_pq",params:[{name:"nonce",type:"int128"}],type:"ResPQ"},{id:"-686627650",method:"req_DH_params",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"p",type:"bytes"},{name:"q",type:"bytes"},{name:"public_key_fingerprint",type:"long"},{name:"encrypted_data",type:"bytes"}],type:"Server_DH_Params"},{id:"-184262881",method:"set_client_DH_params",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"encrypted_data",type:"bytes"}],type:"Set_client_DH_params_answer"},{id:"1491380032",method:"rpc_drop_answer",params:[{name:"req_msg_id",type:"long"}],type:"RpcDropAnswer"},{id:"-1188971260",method:"get_future_salts",params:[{name:"num",type:"int"}],type:"FutureSalts"},{id:"2059302892",method:"ping",params:[{name:"ping_id",type:"long"}],type:"Pong"},{id:"-213746804",method:"ping_delay_disconnect",params:[{name:"ping_id",type:"long"},{name:"disconnect_delay",type:"int"}],type:"Pong"},{id:"-414113498",method:"destroy_session",params:[{name:"session_id",type:"long"}],type:"DestroySessionRes"},{id:"-1835453025",method:"http_wait",params:[{name:"max_delay",type:"int"},{name:"wait_after",type:"int"},{name:"max_wait",type:"int"}],type:"HttpWait"}]},Config.TLD=["abogado","ac","academy","accountants","active","actor","ad","adult","ae","aero","af","ag","agency","ai","airforce","al","allfinanz","alsace","am","amsterdam","an","android","ao","apartments","aq","aquarelle","ar","archi","army","arpa","as","asia","associates","at","attorney","au","auction","audio","autos","aw","ax","axa","az","ba","band","bank","bar","barclaycard","barclays","bargains","bayern","bb","bd","be","beer","berlin","best","bf","bg","bh","bi","bid","bike","bingo","bio","biz","bj","black","blackfriday","bloomberg","blue","bm","bmw","bn","bnpparibas","bo","boo","boutique","br","brussels","bs","bt","budapest","build","builders","business","buzz","bv","bw","by","bz","bzh","ca","cab","cal","camera","camp","cancerresearch","canon","capetown","capital","caravan","cards","care","career","careers","cartier","casa","cash","cat","catering","cc","cd","center","ceo","cern","cf","cg","ch","channel","chat","cheap","christmas","chrome","church","ci","citic","city","ck","cl","claims","cleaning","click","clinic","clothing","club","cm","cn","co","coach","codes","coffee","college","cologne","com","community","company","computer","condos","construction","consulting","contractors","cooking","cool","coop","country","cr","credit","creditcard","cricket","crs","cruises","cu","cuisinella","cv","cw","cx","cy","cymru","cz","dabur","dad","dance","dating","day","dclk","de","deals","degree","delivery","democrat","dental","dentist","desi","design","dev","diamonds","diet","digital","direct","directory","discount","dj","dk","dm","dnp","do","docs","domains","doosan","durban","dvag","dz","eat","ec","edu","education","ee","eg","email","emerck","energy","engineer","engineering","enterprises","equipment","er","es","esq","estate","et","eu","eurovision","eus","events","everbank","exchange","expert","exposed","fail","farm","fashion","feedback","fi","finance","financial","firmdale","fish","fishing","fit","fitness","fj","fk","flights","florist","flowers","flsmidth","fly","fm","fo","foo","forsale","foundation","fr","frl","frogans","fund","furniture","futbol","ga","gal","gallery","garden","gb","gbiz","gd","ge","gent","gf","gg","ggee","gh","gi","gift","gifts","gives","gl","glass","gle","global","globo","gm","gmail","gmo","gmx","gn","goog","google","gop","gov","gp","gq","gr","graphics","gratis","green","gripe","gs","gt","gu","guide","guitars","guru","gw","gy","hamburg","hangout","haus","healthcare","help","here","hermes","hiphop","hiv","hk","hm","hn","holdings","holiday","homes","horse","host","hosting","house","how","hr","ht","hu","ibm","id","ie","ifm","il","im","immo","immobilien","in","industries","info","ing","ink","institute","insure","int","international","investments","io","iq","ir","irish","is","it","iwc","jcb","je","jetzt","jm","jo","jobs","joburg","jp","juegos","kaufen","kddi","ke","kg","kh","ki","kim","kitchen","kiwi","km","kn","koeln","kp","kr","krd","kred","kw","ky","kyoto","kz","la","lacaixa","land","lat","latrobe","lawyer","lb","lc","lds","lease","legal","lgbt","li","lidl","life","lighting","limited","limo","link","lk","loans","london","lotte","lotto","lr","ls","lt","ltda","lu","luxe","luxury","lv","ly","ma","madrid","maison","management","mango","market","marketing","marriott","mc","md","me","media","meet","melbourne","meme","memorial","menu","mg","mh","miami","mil","mini","mk","ml","mm","mn","mo","mobi","moda","moe","monash","money","mormon","mortgage","moscow","motorcycles","mov","mp","mq","mr","ms","mt","mu","museum","mv","mw","mx","my","mz","na","nagoya","name","navy","nc","ne","net","network","neustar","new","nexus","nf","ng","ngo","nhk","ni","nico","ninja","nl","no","np","nr","nra","nrw","ntt","nu","nyc","nz","okinawa","om","one","ong","onl","ooo","org","organic","osaka","otsuka","ovh","pa","paris","partners","parts","party","pe","pf","pg","ph","pharmacy","photo","photography","photos","physio","pics","pictures","pink","pizza","pk","pl","place","plumbing","pm","pn","pohl","poker","porn","post","pr","praxi","press","pro","prod","productions","prof","properties","property","ps","pt","pub","pw","py","qa","qpon","quebec","re","realtor","recipes","red","rehab","reise","reisen","reit","ren","rentals","repair","report","republican","rest","restaurant","reviews","rich","rio","rip","ro","rocks","rodeo","rs","rsvp","ru","ruhr","rw","ryukyu","sa","saarland","sale","samsung","sarl","saxo","sb","sc","sca","scb","schmidt","schule","schwarz","science","scot","sd","se","services","sew","sexy","sg","sh","shiksha","shoes","shriram","si","singles","sj","sk","sky","sl","sm","sn","so","social","software","sohu","solar","solutions","soy","space","spiegel","sr","st","style","su","supplies","supply","support","surf","surgery","suzuki","sv","sx","sy","sydney","systems","sz","taipei","tatar","tattoo","tax","tc","td","technology","tel","temasek","tennis","tf","tg","th","tienda","tips","tires","tirol","tj","tk","tl","tm","tn","to","today","tokyo","tools","top","toshiba","town","toys","tp","tr","trade","training","travel","trust","tt","tui","tv","tw","tz","ua","ug","uk","university","uno","uol","us","uy","uz","va","vacations","vc","ve","vegas","ventures","versicherung","vet","vg","vi","viajes","video","villas","vision","vlaanderen","vn","vodka","vote","voting","voto","voyage","vu","wales","wang","watch","webcam","website","wed","wedding","wf","whoswho","wien","wiki","williamhill","wme","work","works","world","ws","wtc","wtf","佛山","集团","在线","한국","ভরত","八卦","موقع","公益","公司","移动","我爱你","москва","қаз","онлайн","сайт","срб","淡马锡","орг","삼성","சிகப","商标","商店","商城","дети","мкд","中文网","中信","中国","中國","谷歌","భరత","ල","ભરત","भरत","网店","सगठन","网络","укр","香港","台湾","台灣","手机","мон","الجزائر","عمان","ایران","امارات","بازار","الاردن","بھارت","المغرب","السعودية","مليسيا","شبكة","გე","机构","组织机构","ไทย","سورية","рус","рф","تونس","みんな","グーグル","世界","ਭਰਤ","网址","游戏","vermögensberater","vermögensberatung","企业","مصر","قطر","广东","இலங","இநி","新加坡","فلسطين","政务","xxx","xyz","yachts","yandex","ye","yoga","yokohama","youtube","yt","za","zip","zm","zone","zuerich","zw"],Config.Schema.API={constructors:[{id:"-1132882121",predicate:"boolFalse",params:[],type:"Bool"},{id:"-1720552011",predicate:"boolTrue",params:[],type:"Bool"},{id:"1072550713",predicate:"true",params:[],type:"True"},{id:"481674261",predicate:"vector",params:[],type:"Vector t"},{id:"-994444869",predicate:"error",params:[{name:"code",type:"int"},{name:"text",type:"string"}],type:"Error"},{id:"1450380236",predicate:"null",params:[],type:"Null"},{id:"2134579434",predicate:"inputPeerEmpty",params:[],type:"InputPeer"},{id:"2107670217",predicate:"inputPeerSelf",params:[],type:"InputPeer"},{id:"396093539",predicate:"inputPeerChat",params:[{name:"chat_id",type:"int"}],type:"InputPeer"},{id:"-1182234929",predicate:"inputUserEmpty",params:[],type:"InputUser"},{id:"-138301121",predicate:"inputUserSelf",params:[],type:"InputUser"},{id:"-208488460",predicate:"inputPhoneContact",params:[{name:"client_id",type:"long"},{name:"phone",type:"string"},{name:"first_name",type:"string"},{name:"last_name",type:"string"}],type:"InputContact"},{id:"-181407105",predicate:"inputFile",params:[{name:"id",type:"long"},{name:"parts",type:"int"},{name:"name",type:"string"},{name:"md5_checksum",type:"string"}],type:"InputFile"},{id:"-1771768449",predicate:"inputMediaEmpty",params:[],type:"InputMedia"},{id:"-139464256",predicate:"inputMediaUploadedPhoto",params:[{name:"file",type:"InputFile"},{name:"caption",type:"string"}],type:"InputMedia"},{id:"-373312269",predicate:"inputMediaPhoto",params:[{name:"id",type:"InputPhoto"},{name:"caption",type:"string"}],type:"InputMedia"},{id:"-104578748",predicate:"inputMediaGeoPoint",params:[{name:"geo_point",type:"InputGeoPoint"}],type:"InputMedia"},{id:"-1494984313",predicate:"inputMediaContact",params:[{name:"phone_number",type:"string"},{name:"first_name",type:"string"},{name:"last_name",type:"string"}],type:"InputMedia"},{id:"480546647",predicate:"inputChatPhotoEmpty",params:[],type:"InputChatPhoto"},{id:"-1809496270",predicate:"inputChatUploadedPhoto",params:[{name:"file",type:"InputFile"},{name:"crop",type:"InputPhotoCrop"}],type:"InputChatPhoto"},{id:"-1293828344",predicate:"inputChatPhoto",params:[{name:"id",type:"InputPhoto"},{name:"crop",type:"InputPhotoCrop"}],type:"InputChatPhoto"},{id:"-457104426",predicate:"inputGeoPointEmpty",params:[],type:"InputGeoPoint"},{id:"-206066487",predicate:"inputGeoPoint",params:[{name:"lat",type:"double"},{name:"long",type:"double"}],type:"InputGeoPoint"},{id:"483901197",predicate:"inputPhotoEmpty",params:[],type:"InputPhoto"},{id:"-74070332",predicate:"inputPhoto",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputPhoto"},{id:"342061462",predicate:"inputFileLocation",params:[{name:"volume_id",type:"long"},{name:"local_id",type:"int"},{name:"secret",type:"long"}],type:"InputFileLocation"},{id:"-1377390588",predicate:"inputPhotoCropAuto",params:[],type:"InputPhotoCrop"},{id:"-644787419",predicate:"inputPhotoCrop",params:[{name:"crop_left",type:"double"},{name:"crop_top",type:"double"},{name:"crop_width",type:"double"}],type:"InputPhotoCrop"},{id:"1996904104",predicate:"inputAppEvent",params:[{name:"time",type:"double"},{name:"type",type:"string"},{name:"peer",type:"long"},{name:"data",type:"string"}],type:"InputAppEvent"},{id:"-1649296275",predicate:"peerUser",params:[{name:"user_id",type:"int"}],type:"Peer"},{id:"-1160714821",predicate:"peerChat",params:[{name:"chat_id",type:"int"}],type:"Peer"},{id:"-1432995067",predicate:"storage.fileUnknown",params:[],type:"storage.FileType"},{id:"8322574",predicate:"storage.fileJpeg",params:[],type:"storage.FileType"},{id:"-891180321",predicate:"storage.fileGif",params:[],type:"storage.FileType"},{id:"172975040",predicate:"storage.filePng",params:[],type:"storage.FileType"},{id:"-1373745011",predicate:"storage.filePdf",params:[],type:"storage.FileType"},{id:"1384777335",predicate:"storage.fileMp3",params:[],type:"storage.FileType"},{id:"1258941372",predicate:"storage.fileMov",params:[],type:"storage.FileType"},{id:"1086091090",predicate:"storage.filePartial",params:[],type:"storage.FileType"},{id:"-1278304028",predicate:"storage.fileMp4",params:[],type:"storage.FileType"},{id:"276907596",predicate:"storage.fileWebp",params:[],type:"storage.FileType"},{id:"2086234950",predicate:"fileLocationUnavailable",params:[{name:"volume_id",type:"long"},{name:"local_id",type:"int"},{name:"secret",type:"long"}],type:"FileLocation"},{id:"1406570614",predicate:"fileLocation",params:[{name:"dc_id",type:"int"},{name:"volume_id",type:"long"},{name:"local_id",type:"int"},{name:"secret",type:"long"}],type:"FileLocation"},{id:"537022650",predicate:"userEmpty",params:[{name:"id",type:"int"}],type:"User"},{id:"1326562017",predicate:"userProfilePhotoEmpty",params:[],type:"UserProfilePhoto"},{id:"-715532088",predicate:"userProfilePhoto",params:[{name:"photo_id",type:"long"},{name:"photo_small",type:"FileLocation"},{name:"photo_big",type:"FileLocation"}],type:"UserProfilePhoto"},{id:"164646985",predicate:"userStatusEmpty",params:[],type:"UserStatus"},{id:"-306628279",predicate:"userStatusOnline",params:[{name:"expires",type:"int"}],type:"UserStatus"},{id:"9203775",predicate:"userStatusOffline",params:[{name:"was_online",type:"int"}],type:"UserStatus"},{id:"-1683826688",predicate:"chatEmpty",params:[{name:"id",type:"int"}],type:"Chat"},{id:"-652419756",predicate:"chat",params:[{name:"flags",type:"#"},{name:"creator",type:"flags.0?true"},{name:"kicked",type:"flags.1?true"},{name:"left",type:"flags.2?true"},{name:"admins_enabled",type:"flags.3?true"},{name:"admin",type:"flags.4?true"},{name:"deactivated",type:"flags.5?true"},{name:"id",type:"int"},{name:"title",type:"string"},{name:"photo",type:"ChatPhoto"},{name:"participants_count",type:"int"},{name:"date",type:"int"},{name:"version",type:"int"},{name:"migrated_to",type:"flags.6?InputChannel"}],type:"Chat"},{id:"120753115",predicate:"chatForbidden",params:[{name:"id",type:"int"},{name:"title",type:"string"}],type:"Chat"},{id:"771925524",predicate:"chatFull",params:[{name:"id",type:"int"},{name:"participants",type:"ChatParticipants"},{name:"chat_photo",type:"Photo"},{name:"notify_settings",type:"PeerNotifySettings"},{name:"exported_invite",type:"ExportedChatInvite"},{name:"bot_info",type:"Vector<BotInfo>"}],type:"ChatFull"},{id:"-925415106",predicate:"chatParticipant",params:[{name:"user_id",type:"int"},{name:"inviter_id",type:"int"},{name:"date",type:"int"}],type:"ChatParticipant"},{id:"-57668565",predicate:"chatParticipantsForbidden",params:[{name:"flags",type:"#"},{name:"chat_id",type:"int"},{name:"self_participant",type:"flags.0?ChatParticipant"}],type:"ChatParticipants"},{id:"1061556205",predicate:"chatParticipants",params:[{name:"chat_id",type:"int"},{name:"participants",type:"Vector<ChatParticipant>"},{name:"version",type:"int"}],type:"ChatParticipants"},{id:"935395612",predicate:"chatPhotoEmpty",params:[],type:"ChatPhoto"},{id:"1632839530",predicate:"chatPhoto",params:[{name:"photo_small",type:"FileLocation"},{name:"photo_big",type:"FileLocation"}],type:"ChatPhoto"},{id:"-2082087340",predicate:"messageEmpty",params:[{name:"id",type:"int"}],type:"Message"},{id:"-1063525281",predicate:"message",params:[{name:"flags",type:"#"},{name:"unread",type:"flags.0?true"},{name:"out",type:"flags.1?true"},{name:"mentioned",type:"flags.4?true"},{name:"media_unread",type:"flags.5?true"},{name:"silent",type:"flags.13?true"},{name:"post",type:"flags.14?true"},{name:"id",type:"int"},{name:"from_id",type:"flags.8?int"},{name:"to_id",type:"Peer"},{name:"fwd_from",type:"flags.2?MessageFwdHeader"},{name:"via_bot_id",type:"flags.11?int"},{name:"reply_to_msg_id",type:"flags.3?int"},{name:"date",type:"int"},{name:"message",type:"string"},{name:"media",type:"flags.9?MessageMedia"},{name:"reply_markup",type:"flags.6?ReplyMarkup"},{name:"entities",type:"flags.7?Vector<MessageEntity>"},{name:"views",type:"flags.10?int"},{name:"edit_date",type:"flags.15?int"}],type:"Message"},{id:"-1642487306",predicate:"messageService",params:[{name:"flags",type:"#"},{name:"unread",type:"flags.0?true"},{name:"out",type:"flags.1?true"},{name:"mentioned",type:"flags.4?true"},{name:"media_unread",type:"flags.5?true"},{name:"silent",type:"flags.13?true"},{name:"post",type:"flags.14?true"},{name:"id",type:"int"},{name:"from_id",type:"flags.8?int"},{name:"to_id",type:"Peer"},{name:"reply_to_msg_id",type:"flags.3?int"},{name:"date",type:"int"},{name:"action",type:"MessageAction"}],type:"Message"},{id:"1038967584",predicate:"messageMediaEmpty",params:[],type:"MessageMedia"},{id:"1032643901",predicate:"messageMediaPhoto",params:[{name:"photo",type:"Photo"},{name:"caption",type:"string"}],type:"MessageMedia"},{id:"1457575028",predicate:"messageMediaGeo",params:[{name:"geo",type:"GeoPoint"}],type:"MessageMedia"},{id:"1585262393",predicate:"messageMediaContact",params:[{name:"phone_number",type:"string"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"user_id",type:"int"}],type:"MessageMedia"},{id:"-1618676578",predicate:"messageMediaUnsupported",params:[],type:"MessageMedia"},{id:"-1230047312",predicate:"messageActionEmpty",params:[],type:"MessageAction"},{id:"-1503425638",predicate:"messageActionChatCreate",params:[{name:"title",type:"string"},{name:"users",type:"Vector<int>"}],type:"MessageAction"},{id:"-1247687078",predicate:"messageActionChatEditTitle",params:[{name:"title",type:"string"}],type:"MessageAction"},{id:"2144015272",predicate:"messageActionChatEditPhoto",params:[{name:"photo",type:"Photo"}],type:"MessageAction"},{id:"-1780220945",predicate:"messageActionChatDeletePhoto",params:[],type:"MessageAction"},{id:"1217033015",predicate:"messageActionChatAddUser",params:[{name:"users",type:"Vector<int>"}],type:"MessageAction"},{id:"-1297179892",predicate:"messageActionChatDeleteUser",params:[{name:"user_id",type:"int"}],type:"MessageAction"},{id:"-1042448310",predicate:"dialog",params:[{name:"peer",type:"Peer"},{name:"top_message",type:"int"},{name:"read_inbox_max_id",type:"int"},{name:"unread_count",type:"int"},{name:"notify_settings",type:"PeerNotifySettings"}],type:"Dialog"},{id:"590459437",predicate:"photoEmpty",params:[{name:"id",type:"long"}],type:"Photo"},{id:"-840088834",predicate:"photo",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"date",type:"int"},{name:"sizes",type:"Vector<PhotoSize>"}],type:"Photo"},{id:"236446268",predicate:"photoSizeEmpty",params:[{name:"type",type:"string"}],type:"PhotoSize"},{id:"2009052699",predicate:"photoSize",params:[{name:"type",type:"string"},{name:"location",type:"FileLocation"},{name:"w",type:"int"},{name:"h",type:"int"},{name:"size",type:"int"}],type:"PhotoSize"},{id:"-374917894",predicate:"photoCachedSize",params:[{name:"type",type:"string"},{name:"location",type:"FileLocation"},{name:"w",type:"int"},{name:"h",type:"int"},{name:"bytes",type:"bytes"}],type:"PhotoSize"},{id:"286776671",predicate:"geoPointEmpty",params:[],type:"GeoPoint"},{id:"541710092",predicate:"geoPoint",params:[{name:"long",type:"double"},{name:"lat",type:"double"}],type:"GeoPoint"},{id:"-2128698738",predicate:"auth.checkedPhone",params:[{name:"phone_registered",type:"Bool"}],type:"auth.CheckedPhone"},{id:"1577067778",predicate:"auth.sentCode",params:[{name:"flags",type:"#"},{name:"phone_registered",type:"flags.0?true"},{name:"type",type:"auth.SentCodeType"},{name:"phone_code_hash",type:"string"},{name:"next_type",type:"flags.1?auth.CodeType"},{name:"timeout",type:"flags.2?int"}],type:"auth.SentCode"},{id:"-16553231",predicate:"auth.authorization",params:[{name:"user",type:"User"}],type:"auth.Authorization"},{id:"-543777747",predicate:"auth.exportedAuthorization",params:[{name:"id",type:"int"},{name:"bytes",type:"bytes"}],type:"auth.ExportedAuthorization"},{id:"-1195615476",predicate:"inputNotifyPeer",params:[{name:"peer",type:"InputPeer"}],type:"InputNotifyPeer"},{id:"423314455",predicate:"inputNotifyUsers",params:[],type:"InputNotifyPeer"},{id:"1251338318",predicate:"inputNotifyChats",params:[],type:"InputNotifyPeer"},{id:"-1540769658",predicate:"inputNotifyAll",params:[],type:"InputNotifyPeer"},{id:"-265263912",predicate:"inputPeerNotifyEventsEmpty",params:[],type:"InputPeerNotifyEvents"},{id:"-395694988",predicate:"inputPeerNotifyEventsAll",params:[],type:"InputPeerNotifyEvents"},{id:"949182130",predicate:"inputPeerNotifySettings",params:[{name:"flags",type:"#"},{name:"show_previews",type:"flags.0?true"},{name:"silent",type:"flags.1?true"},{name:"mute_until",type:"int"},{name:"sound",type:"string"}],type:"InputPeerNotifySettings"},{id:"-1378534221",predicate:"peerNotifyEventsEmpty",params:[],type:"PeerNotifyEvents"},{id:"1830677896",predicate:"peerNotifyEventsAll",params:[],type:"PeerNotifyEvents"},{id:"1889961234",predicate:"peerNotifySettingsEmpty",params:[],type:"PeerNotifySettings"},{id:"-1697798976",predicate:"peerNotifySettings",params:[{name:"flags",type:"#"},{name:"show_previews",type:"flags.0?true"},{name:"silent",type:"flags.1?true"},{name:"mute_until",type:"int"},{name:"sound",type:"string"}],type:"PeerNotifySettings"},{id:"-2122045747",predicate:"peerSettings",params:[{name:"flags",type:"#"},{name:"report_spam",type:"flags.0?true"}],type:"PeerSettings"},{id:"-860866985",predicate:"wallPaper",params:[{name:"id",type:"int"},{name:"title",type:"string"},{name:"sizes",type:"Vector<PhotoSize>"},{name:"color",type:"int"}],type:"WallPaper"},{id:"1490799288",predicate:"inputReportReasonSpam",params:[],type:"ReportReason"},{id:"505595789",predicate:"inputReportReasonViolence",params:[],type:"ReportReason"},{id:"777640226",predicate:"inputReportReasonPornography",params:[],type:"ReportReason"},{id:"-512463606",predicate:"inputReportReasonOther",params:[{name:"text",type:"string"}],type:"ReportReason"},{id:"1496513539",predicate:"userFull",params:[{name:"flags",type:"#"},{name:"blocked",type:"flags.0?true"},{name:"user",type:"User"},{name:"about",type:"flags.1?string"},{name:"link",type:"contacts.Link"},{name:"profile_photo",type:"flags.2?Photo"},{name:"notify_settings",type:"PeerNotifySettings"},{name:"bot_info",type:"flags.3?BotInfo"}],type:"UserFull"},{id:"-116274796",predicate:"contact",params:[{name:"user_id",type:"int"},{name:"mutual",type:"Bool"}],type:"Contact"},{id:"-805141448",predicate:"importedContact",params:[{name:"user_id",type:"int"},{name:"client_id",type:"long"}],type:"ImportedContact"},{id:"1444661369",predicate:"contactBlocked",params:[{name:"user_id",type:"int"},{name:"date",type:"int"}],type:"ContactBlocked"},{id:"-748155807",predicate:"contactStatus",params:[{name:"user_id",type:"int"},{name:"status",type:"UserStatus"}],type:"ContactStatus"},{id:"986597452",predicate:"contacts.link",params:[{name:"my_link",type:"ContactLink"},{name:"foreign_link",type:"ContactLink"},{name:"user",type:"User"}],type:"contacts.Link"},{id:"-1219778094",predicate:"contacts.contactsNotModified",params:[],type:"contacts.Contacts"},{id:"1871416498",predicate:"contacts.contacts",params:[{name:"contacts",type:"Vector<Contact>"},{name:"users",type:"Vector<User>"}],type:"contacts.Contacts"},{id:"-1387117803",predicate:"contacts.importedContacts",params:[{name:"imported",type:"Vector<ImportedContact>"},{name:"retry_contacts",type:"Vector<long>"},{name:"users",type:"Vector<User>"}],type:"contacts.ImportedContacts"},{id:"471043349",predicate:"contacts.blocked",params:[{name:"blocked",type:"Vector<ContactBlocked>"},{name:"users",type:"Vector<User>"}],type:"contacts.Blocked"},{id:"-1878523231",predicate:"contacts.blockedSlice",params:[{name:"count",type:"int"},{name:"blocked",type:"Vector<ContactBlocked>"},{name:"users",type:"Vector<User>"}],type:"contacts.Blocked"},{id:"364538944",predicate:"messages.dialogs",params:[{name:"dialogs",type:"Vector<Dialog>"},{name:"messages",type:"Vector<Message>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"messages.Dialogs"},{id:"1910543603",predicate:"messages.dialogsSlice",params:[{name:"count",type:"int"},{name:"dialogs",type:"Vector<Dialog>"},{name:"messages",type:"Vector<Message>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"messages.Dialogs"},{id:"-1938715001",predicate:"messages.messages",params:[{name:"messages",type:"Vector<Message>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"messages.Messages"},{id:"189033187",predicate:"messages.messagesSlice",params:[{name:"count",type:"int"},{name:"messages",type:"Vector<Message>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"messages.Messages"},{id:"1694474197",predicate:"messages.chats",params:[{name:"chats",type:"Vector<Chat>"}],type:"messages.Chats"},{id:"-438840932",predicate:"messages.chatFull",params:[{name:"full_chat",type:"ChatFull"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"messages.ChatFull"},{id:"-1269012015",predicate:"messages.affectedHistory",params:[{name:"pts",type:"int"},{name:"pts_count",type:"int"},{name:"offset",type:"int"}],type:"messages.AffectedHistory"},{id:"1474492012",predicate:"inputMessagesFilterEmpty",params:[],type:"MessagesFilter"},{id:"-1777752804",predicate:"inputMessagesFilterPhotos",params:[],type:"MessagesFilter"},{id:"-1614803355",predicate:"inputMessagesFilterVideo",params:[],type:"MessagesFilter"},{id:"1458172132",predicate:"inputMessagesFilterPhotoVideo",params:[],type:"MessagesFilter"},{id:"-648121413",predicate:"inputMessagesFilterPhotoVideoDocuments",params:[],type:"MessagesFilter"},{id:"-1629621880",predicate:"inputMessagesFilterDocument",params:[],type:"MessagesFilter"},{id:"2129714567",predicate:"inputMessagesFilterUrl",params:[],type:"MessagesFilter"},{id:"-3644025",predicate:"inputMessagesFilterGif",params:[],type:"MessagesFilter"},{id:"522914557",predicate:"updateNewMessage",params:[{name:"message",type:"Message"},{name:"pts",type:"int"},{name:"pts_count",type:"int"}],type:"Update"},{id:"1318109142",predicate:"updateMessageID",params:[{name:"id",type:"int"},{name:"random_id",type:"long"}],type:"Update"},{id:"-1576161051",predicate:"updateDeleteMessages",params:[{name:"messages",type:"Vector<int>"},{name:"pts",type:"int"},{name:"pts_count",type:"int"}],type:"Update"},{id:"1548249383",predicate:"updateUserTyping",params:[{name:"user_id",type:"int"},{name:"action",type:"SendMessageAction"}],type:"Update"},{id:"-1704596961",predicate:"updateChatUserTyping",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"int"},{name:"action",type:"SendMessageAction"}],type:"Update"},{id:"125178264",predicate:"updateChatParticipants",params:[{name:"participants",type:"ChatParticipants"}],type:"Update"},{id:"469489699",predicate:"updateUserStatus",params:[{name:"user_id",type:"int"},{name:"status",type:"UserStatus"}],type:"Update"},{id:"-1489818765",predicate:"updateUserName",params:[{name:"user_id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"username",type:"string"}],type:"Update"},{id:"-1791935732",predicate:"updateUserPhoto",params:[{name:"user_id",type:"int"},{name:"date",type:"int"},{name:"photo",type:"UserProfilePhoto"},{name:"previous",type:"Bool"}],type:"Update"},{id:"628472761",predicate:"updateContactRegistered",params:[{name:"user_id",type:"int"},{name:"date",type:"int"}],type:"Update"},{id:"-1657903163",predicate:"updateContactLink",params:[{name:"user_id",type:"int"},{name:"my_link",type:"ContactLink"},{name:"foreign_link",type:"ContactLink"}],type:"Update"},{id:"-1895411046",predicate:"updateNewAuthorization",params:[{name:"auth_key_id",type:"long"},{name:"date",type:"int"},{name:"device",type:"string"},{name:"location",type:"string"}],type:"Update"},{id:"-1519637954",predicate:"updates.state",params:[{name:"pts",type:"int"},{name:"qts",type:"int"},{name:"date",type:"int"},{name:"seq",type:"int"},{name:"unread_count",type:"int"}],type:"updates.State"},{id:"1567990072",predicate:"updates.differenceEmpty",params:[{name:"date",type:"int"},{name:"seq",type:"int"}],type:"updates.Difference"},{id:"16030880",predicate:"updates.difference",params:[{name:"new_messages",type:"Vector<Message>"},{name:"new_encrypted_messages",type:"Vector<EncryptedMessage>"},{name:"other_updates",type:"Vector<Update>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"},{name:"state",type:"updates.State"}],type:"updates.Difference"},{id:"-1459938943",predicate:"updates.differenceSlice",params:[{name:"new_messages",type:"Vector<Message>"},{name:"new_encrypted_messages",type:"Vector<EncryptedMessage>"},{name:"other_updates",type:"Vector<Update>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"},{name:"intermediate_state",type:"updates.State"}],type:"updates.Difference"},{id:"-484987010",predicate:"updatesTooLong",params:[],type:"Updates"},{id:"-1857044719",predicate:"updateShortMessage",params:[{name:"flags",type:"#"},{name:"unread",type:"flags.0?true"},{name:"out",type:"flags.1?true"},{name:"mentioned",type:"flags.4?true"},{name:"media_unread",type:"flags.5?true"},{name:"silent",type:"flags.13?true"},{name:"id",type:"int"},{name:"user_id",type:"int"},{name:"message",type:"string"},{name:"pts",type:"int"},{name:"pts_count",type:"int"},{name:"date",type:"int"},{name:"fwd_from",type:"flags.2?MessageFwdHeader"},{name:"via_bot_id",type:"flags.11?int"},{name:"reply_to_msg_id",type:"flags.3?int"},{name:"entities",type:"flags.7?Vector<MessageEntity>"}],type:"Updates"},{id:"377562760",predicate:"updateShortChatMessage",params:[{name:"flags",type:"#"},{name:"unread",type:"flags.0?true"},{name:"out",type:"flags.1?true"},{name:"mentioned",type:"flags.4?true"},{name:"media_unread",type:"flags.5?true"},{name:"silent",type:"flags.13?true"},{name:"id",type:"int"},{name:"from_id",type:"int"},{name:"chat_id",type:"int"},{name:"message",type:"string"},{name:"pts",type:"int"},{name:"pts_count",type:"int"},{name:"date",type:"int"},{name:"fwd_from",type:"flags.2?MessageFwdHeader"},{name:"via_bot_id",type:"flags.11?int"},{name:"reply_to_msg_id",type:"flags.3?int"},{name:"entities",type:"flags.7?Vector<MessageEntity>"}],type:"Updates"},{id:"2027216577",predicate:"updateShort",params:[{name:"update",type:"Update"},{name:"date",type:"int"}],type:"Updates"},{id:"1918567619",predicate:"updatesCombined",params:[{name:"updates",type:"Vector<Update>"},{name:"users",type:"Vector<User>"},{name:"chats",type:"Vector<Chat>"},{name:"date",type:"int"},{name:"seq_start",type:"int"},{name:"seq",type:"int"}],type:"Updates"},{id:"1957577280",predicate:"updates",params:[{name:"updates",type:"Vector<Update>"},{name:"users",type:"Vector<User>"},{name:"chats",type:"Vector<Chat>"},{name:"date",type:"int"},{name:"seq",type:"int"}],type:"Updates"},{id:"-1916114267",predicate:"photos.photos",params:[{name:"photos",type:"Vector<Photo>"},{name:"users",type:"Vector<User>"}],type:"photos.Photos"},{id:"352657236",predicate:"photos.photosSlice",params:[{name:"count",type:"int"},{name:"photos",type:"Vector<Photo>"},{name:"users",type:"Vector<User>"}],type:"photos.Photos"},{id:"539045032",predicate:"photos.photo",params:[{name:"photo",type:"Photo"},{name:"users",type:"Vector<User>"}],type:"photos.Photo"},{id:"157948117",predicate:"upload.file",params:[{name:"type",type:"storage.FileType"},{name:"mtime",type:"int"},{name:"bytes",type:"bytes"}],type:"upload.File"},{id:"98092748",predicate:"dcOption",params:[{name:"flags",type:"#"},{name:"ipv6",type:"flags.0?true"},{name:"media_only",type:"flags.1?true"},{name:"tcpo_only",type:"flags.2?true"},{name:"id",type:"int"},{name:"ip_address",type:"string"},{name:"port",type:"int"}],type:"DcOption"},{id:"830271220",predicate:"config",params:[{name:"date",type:"int"},{name:"expires",type:"int"},{name:"test_mode",type:"Bool"},{name:"this_dc",type:"int"},{name:"dc_options",type:"Vector<DcOption>"},{name:"chat_size_max",type:"int"},{name:"megagroup_size_max",type:"int"},{name:"forwarded_count_max",type:"int"},{name:"online_update_period_ms",type:"int"},{name:"offline_blur_timeout_ms",type:"int"},{name:"offline_idle_timeout_ms",type:"int"},{name:"online_cloud_timeout_ms",type:"int"},{name:"notify_cloud_delay_ms",type:"int"},{name:"notify_default_delay_ms",type:"int"},{name:"chat_big_size",type:"int"},{name:"push_chat_period_ms",type:"int"},{name:"push_chat_limit",type:"int"},{name:"saved_gifs_limit",type:"int"},{name:"edit_time_limit",type:"int"},{name:"disabled_features",type:"Vector<DisabledFeature>"}],type:"Config"},{id:"-1910892683",predicate:"nearestDc",params:[{name:"country",type:"string"},{name:"this_dc",type:"int"},{name:"nearest_dc",type:"int"}],type:"NearestDc"},{id:"-1987579119",predicate:"help.appUpdate",params:[{name:"id",type:"int"},{name:"critical",type:"Bool"},{name:"url",type:"string"},{name:"text",type:"string"}],type:"help.AppUpdate"},{id:"-1000708810",predicate:"help.noAppUpdate",params:[],type:"help.AppUpdate"},{id:"415997816",predicate:"help.inviteText",params:[{name:"message",type:"string"}],type:"help.InviteText"},{id:"1662091044",predicate:"wallPaperSolid",params:[{name:"id",type:"int"},{name:"title",type:"string"},{name:"bg_color",type:"int"},{name:"color",type:"int"}],type:"WallPaper"},{id:"314359194",predicate:"updateNewEncryptedMessage",params:[{name:"message",type:"EncryptedMessage"},{name:"qts",type:"int"}],type:"Update"},{id:"386986326",predicate:"updateEncryptedChatTyping",params:[{name:"chat_id",type:"int"}],type:"Update"},{id:"-1264392051",predicate:"updateEncryption",params:[{name:"chat",type:"EncryptedChat"},{name:"date",type:"int"}],type:"Update"},{id:"956179895",predicate:"updateEncryptedMessagesRead",params:[{name:"chat_id",type:"int"},{name:"max_date",type:"int"},{name:"date",type:"int"}],type:"Update"},{id:"-1417756512",predicate:"encryptedChatEmpty",params:[{name:"id",type:"int"}],type:"EncryptedChat"},{id:"1006044124",predicate:"encryptedChatWaiting",params:[{name:"id",type:"int"},{name:"access_hash",type:"long"},{name:"date",type:"int"},{name:"admin_id",type:"int"},{name:"participant_id",type:"int"}],type:"EncryptedChat"},{id:"-931638658",predicate:"encryptedChatRequested",params:[{name:"id",type:"int"},{name:"access_hash",type:"long"},{name:"date",type:"int"},{name:"admin_id",type:"int"},{name:"participant_id",type:"int"},{name:"g_a",type:"bytes"}],type:"EncryptedChat"},{id:"-94974410",predicate:"encryptedChat",params:[{name:"id",type:"int"},{name:"access_hash",type:"long"},{name:"date",type:"int"},{name:"admin_id",type:"int"},{name:"participant_id",type:"int"},{name:"g_a_or_b",type:"bytes"},{name:"key_fingerprint",type:"long"}],type:"EncryptedChat"},{id:"332848423",predicate:"encryptedChatDiscarded",params:[{name:"id",type:"int"}],type:"EncryptedChat"},{id:"-247351839",predicate:"inputEncryptedChat",params:[{name:"chat_id",type:"int"},{name:"access_hash",type:"long"}],type:"InputEncryptedChat"},{id:"-1038136962",predicate:"encryptedFileEmpty",params:[],type:"EncryptedFile"},{id:"1248893260",predicate:"encryptedFile",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"size",type:"int"},{name:"dc_id",type:"int"},{name:"key_fingerprint",type:"int"}],type:"EncryptedFile"},{id:"406307684",predicate:"inputEncryptedFileEmpty",params:[],type:"InputEncryptedFile"},{id:"1690108678",predicate:"inputEncryptedFileUploaded",params:[{name:"id",type:"long"},{name:"parts",type:"int"},{name:"md5_checksum",type:"string"},{name:"key_fingerprint",type:"int"}],type:"InputEncryptedFile"},{id:"1511503333",predicate:"inputEncryptedFile",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputEncryptedFile"},{id:"-182231723",predicate:"inputEncryptedFileLocation",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputFileLocation"},{id:"-317144808",predicate:"encryptedMessage",params:[{name:"random_id",type:"long"},{name:"chat_id",type:"int"},{name:"date",type:"int"},{name:"bytes",type:"bytes"},{name:"file",type:"EncryptedFile"}],type:"EncryptedMessage"},{id:"594758406",predicate:"encryptedMessageService",params:[{name:"random_id",type:"long"},{name:"chat_id",type:"int"},{name:"date",type:"int"},{name:"bytes",type:"bytes"}],type:"EncryptedMessage"},{id:"-1058912715",predicate:"messages.dhConfigNotModified",params:[{name:"random",type:"bytes"}],type:"messages.DhConfig"},{id:"740433629",predicate:"messages.dhConfig",params:[{name:"g",type:"int"},{name:"p",type:"bytes"},{name:"version",type:"int"},{name:"random",type:"bytes"}],type:"messages.DhConfig"},{id:"1443858741",predicate:"messages.sentEncryptedMessage",params:[{name:"date",type:"int"}],type:"messages.SentEncryptedMessage"},{id:"-1802240206",predicate:"messages.sentEncryptedFile",params:[{name:"date",type:"int"},{name:"file",type:"EncryptedFile"}],type:"messages.SentEncryptedMessage"},{id:"-95482955",predicate:"inputFileBig",params:[{name:"id",type:"long"},{name:"parts",type:"int"},{name:"name",type:"string"}],type:"InputFile"},{id:"767652808",predicate:"inputEncryptedFileBigUploaded",params:[{name:"id",type:"long"},{name:"parts",type:"int"},{name:"key_fingerprint",type:"int"}],type:"InputEncryptedFile"},{id:"-364179876",predicate:"updateChatParticipantAdd",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"int"},{name:"inviter_id",type:"int"},{name:"date",type:"int"},{name:"version",type:"int"}],type:"Update"},{id:"1851755554",predicate:"updateChatParticipantDelete",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"int"},{name:"version",type:"int"}],type:"Update"},{id:"-1906403213",predicate:"updateDcOptions",params:[{name:"dc_options",type:"Vector<DcOption>"}],type:"Update"},{id:"495530093",predicate:"inputMediaUploadedDocument",params:[{name:"file",type:"InputFile"},{name:"mime_type",type:"string"},{name:"attributes",type:"Vector<DocumentAttribute>"},{name:"caption",type:"string"}],type:"InputMedia"},{id:"-1386138479",predicate:"inputMediaUploadedThumbDocument",params:[{name:"file",type:"InputFile"},{name:"thumb",type:"InputFile"},{name:"mime_type",type:"string"},{name:"attributes",type:"Vector<DocumentAttribute>"},{name:"caption",type:"string"}],type:"InputMedia"},{id:"444068508",predicate:"inputMediaDocument",params:[{name:"id",type:"InputDocument"},{name:"caption",type:"string"}],type:"InputMedia"},{id:"-203411800",predicate:"messageMediaDocument",params:[{name:"document",type:"Document"},{name:"caption",type:"string"}],type:"MessageMedia"},{id:"1928391342",predicate:"inputDocumentEmpty",params:[],type:"InputDocument"},{id:"410618194",predicate:"inputDocument",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputDocument"},{id:"1313188841",predicate:"inputDocumentFileLocation",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputFileLocation"},{id:"922273905",predicate:"documentEmpty",params:[{name:"id",type:"long"}],type:"Document"},{id:"-106717361",predicate:"document",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"date",type:"int"},{name:"mime_type",type:"string"},{name:"size",type:"int"},{name:"thumb",type:"PhotoSize"},{name:"dc_id",type:"int"},{name:"attributes",type:"Vector<DocumentAttribute>"}],type:"Document"},{id:"398898678",predicate:"help.support",params:[{name:"phone_number",type:"string"},{name:"user",type:"User"}],type:"help.Support"},{id:"-1613493288",predicate:"notifyPeer",params:[{name:"peer",type:"Peer"}],type:"NotifyPeer"},{id:"-1261946036",predicate:"notifyUsers",params:[],type:"NotifyPeer"},{id:"-1073230141",predicate:"notifyChats",params:[],type:"NotifyPeer"},{id:"1959820384",predicate:"notifyAll",params:[],type:"NotifyPeer"},{id:"-2131957734",predicate:"updateUserBlocked",params:[{name:"user_id",type:"int"},{name:"blocked",type:"Bool"}],type:"Update"},{id:"-1094555409",predicate:"updateNotifySettings",params:[{name:"peer",type:"NotifyPeer"},{name:"notify_settings",type:"PeerNotifySettings"}],type:"Update"},{id:"381645902",predicate:"sendMessageTypingAction",params:[],type:"SendMessageAction"},{id:"-44119819",predicate:"sendMessageCancelAction",params:[],type:"SendMessageAction"},{id:"-1584933265",predicate:"sendMessageRecordVideoAction",params:[],type:"SendMessageAction"},{id:"-378127636",predicate:"sendMessageUploadVideoAction",params:[{name:"progress",type:"int"}],type:"SendMessageAction"},{id:"-718310409",predicate:"sendMessageRecordAudioAction",params:[],type:"SendMessageAction"},{id:"-212740181",predicate:"sendMessageUploadAudioAction",params:[{name:"progress",type:"int"}],type:"SendMessageAction"},{id:"-774682074",predicate:"sendMessageUploadPhotoAction",params:[{name:"progress",type:"int"}],type:"SendMessageAction"},{id:"-1441998364",predicate:"sendMessageUploadDocumentAction",params:[{name:"progress",type:"int"}],type:"SendMessageAction"},{id:"393186209",predicate:"sendMessageGeoLocationAction",params:[],type:"SendMessageAction"},{id:"1653390447",predicate:"sendMessageChooseContactAction",params:[],type:"SendMessageAction"},{id:"446822276",predicate:"contacts.found",params:[{name:"results",type:"Vector<Peer>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"contacts.Found"},{id:"942527460",predicate:"updateServiceNotification",params:[{name:"type",type:"string"},{name:"message",type:"string"},{name:"media",type:"MessageMedia"},{name:"popup",type:"Bool"}],type:"Update"},{id:"-496024847",predicate:"userStatusRecently",params:[],type:"UserStatus"},{id:"129960444",predicate:"userStatusLastWeek",params:[],type:"UserStatus"},{id:"2011940674",predicate:"userStatusLastMonth",params:[],type:"UserStatus"},{id:"-298113238",predicate:"updatePrivacy",params:[{name:"key",type:"PrivacyKey"},{name:"rules",type:"Vector<PrivacyRule>"}],type:"Update"},{id:"1335282456",predicate:"inputPrivacyKeyStatusTimestamp",params:[],type:"InputPrivacyKey"},{id:"-1137792208",predicate:"privacyKeyStatusTimestamp",params:[],type:"PrivacyKey"},{id:"218751099",predicate:"inputPrivacyValueAllowContacts",params:[],type:"InputPrivacyRule"},{id:"407582158",predicate:"inputPrivacyValueAllowAll",params:[],type:"InputPrivacyRule"},{id:"320652927",predicate:"inputPrivacyValueAllowUsers",params:[{name:"users",type:"Vector<InputUser>"}],type:"InputPrivacyRule"},{id:"195371015",predicate:"inputPrivacyValueDisallowContacts",params:[],type:"InputPrivacyRule"},{id:"-697604407",predicate:"inputPrivacyValueDisallowAll",params:[],type:"InputPrivacyRule"},{id:"-1877932953",predicate:"inputPrivacyValueDisallowUsers",params:[{name:"users",type:"Vector<InputUser>"}],type:"InputPrivacyRule"},{id:"-123988",predicate:"privacyValueAllowContacts",params:[],type:"PrivacyRule"},{id:"1698855810",predicate:"privacyValueAllowAll",params:[],type:"PrivacyRule"},{id:"1297858060",predicate:"privacyValueAllowUsers",params:[{name:"users",type:"Vector<int>"}],type:"PrivacyRule"},{id:"-125240806",predicate:"privacyValueDisallowContacts",params:[],type:"PrivacyRule"},{id:"-1955338397",predicate:"privacyValueDisallowAll",params:[],type:"PrivacyRule"},{id:"209668535",predicate:"privacyValueDisallowUsers",params:[{name:"users",type:"Vector<int>"}],type:"PrivacyRule"},{id:"1430961007",predicate:"account.privacyRules",params:[{name:"rules",type:"Vector<PrivacyRule>"},{name:"users",type:"Vector<User>"}],type:"account.PrivacyRules"},{id:"-1194283041",predicate:"accountDaysTTL",params:[{name:"days",type:"int"}],type:"AccountDaysTTL"},{id:"314130811",predicate:"updateUserPhone",params:[{name:"user_id",type:"int"},{name:"phone",type:"string"}],type:"Update"},{id:"1815593308",predicate:"documentAttributeImageSize",params:[{name:"w",type:"int"},{name:"h",type:"int"}],type:"DocumentAttribute"},{id:"297109817",predicate:"documentAttributeAnimated",params:[],type:"DocumentAttribute"},{id:"978674434",predicate:"documentAttributeSticker",params:[{name:"alt",type:"string"},{name:"stickerset",type:"InputStickerSet"}],type:"DocumentAttribute"},{id:"1494273227",predicate:"documentAttributeVideo",params:[{name:"duration",type:"int"},{name:"w",type:"int"},{name:"h",type:"int"}],type:"DocumentAttribute"},{id:"-1739392570",predicate:"documentAttributeAudio",params:[{name:"flags",type:"#"},{name:"voice",type:"flags.10?true"},{name:"duration",type:"int"},{name:"title",type:"flags.0?string"},{name:"performer",type:"flags.1?string"},{name:"waveform",type:"flags.2?bytes"}],type:"DocumentAttribute"},{id:"358154344",predicate:"documentAttributeFilename",params:[{name:"file_name",type:"string"}],type:"DocumentAttribute"},{id:"-244016606",predicate:"messages.stickersNotModified",params:[],type:"messages.Stickers"},{id:"-1970352846",predicate:"messages.stickers",params:[{name:"hash",type:"string"},{name:"stickers",type:"Vector<Document>"}],type:"messages.Stickers"},{id:"313694676",predicate:"stickerPack",params:[{name:"emoticon",type:"string"},{name:"documents",type:"Vector<long>"}],type:"StickerPack"},{id:"-395967805",predicate:"messages.allStickersNotModified",params:[],type:"messages.AllStickers"},{id:"-302170017",predicate:"messages.allStickers",params:[{name:"hash",type:"int"},{name:"sets",type:"Vector<StickerSet>"}],type:"messages.AllStickers"},{id:"-1369215196",predicate:"disabledFeature",params:[{name:"feature",type:"string"},{name:"description",type:"string"}],type:"DisabledFeature"},{id:"-1721631396",predicate:"updateReadHistoryInbox",params:[{name:"peer",type:"Peer"},{name:"max_id",type:"int"},{name:"pts",type:"int"},{name:"pts_count",type:"int"}],type:"Update"},{id:"791617983",predicate:"updateReadHistoryOutbox",params:[{name:"peer",type:"Peer"},{name:"max_id",type:"int"},{name:"pts",type:"int"},{name:"pts_count",type:"int"}],type:"Update"},{id:"-2066640507",predicate:"messages.affectedMessages",params:[{name:"pts",type:"int"},{name:"pts_count",type:"int"}],type:"messages.AffectedMessages"},{id:"1599050311",predicate:"contactLinkUnknown",params:[],type:"ContactLink"},{id:"-17968211",predicate:"contactLinkNone",params:[],type:"ContactLink"},{id:"646922073",predicate:"contactLinkHasPhone",params:[],type:"ContactLink"},{id:"-721239344",predicate:"contactLinkContact",params:[],type:"ContactLink"},{id:"2139689491",predicate:"updateWebPage",params:[{name:"webpage",type:"WebPage"},{name:"pts",type:"int"},{name:"pts_count",type:"int"}],type:"Update"},{id:"-350980120",predicate:"webPageEmpty",params:[{name:"id",type:"long"}],type:"WebPage"},{id:"-981018084",predicate:"webPagePending",params:[{name:"id",type:"long"},{name:"date",type:"int"}],type:"WebPage"},{id:"-897446185",predicate:"webPage",params:[{name:"flags",type:"#"},{name:"id",type:"long"},{name:"url",type:"string"},{name:"display_url",type:"string"},{name:"type",type:"flags.0?string"},{name:"site_name",type:"flags.1?string"},{name:"title",type:"flags.2?string"},{name:"description",type:"flags.3?string"},{name:"photo",type:"flags.4?Photo"},{name:"embed_url",type:"flags.5?string"},{name:"embed_type",type:"flags.5?string"},{name:"embed_width",type:"flags.6?int"},{name:"embed_height",type:"flags.6?int"},{name:"duration",type:"flags.7?int"},{name:"author",type:"flags.8?string"},{name:"document",type:"flags.9?Document"}],type:"WebPage"},{id:"-1557277184",predicate:"messageMediaWebPage",params:[{name:"webpage",type:"WebPage"}],type:"MessageMedia"},{id:"2079516406",predicate:"authorization",params:[{name:"hash",type:"long"},{name:"flags",type:"int"},{name:"device_model",type:"string"},{name:"platform",type:"string"},{name:"system_version",type:"string"},{name:"api_id",type:"int"},{name:"app_name",type:"string"},{name:"app_version",type:"string"},{name:"date_created",type:"int"},{name:"date_active",type:"int"},{name:"ip",type:"string"},{name:"country",type:"string"},{name:"region",type:"string"}],type:"Authorization"},{id:"307276766",predicate:"account.authorizations",params:[{name:"authorizations",type:"Vector<Authorization>"}],type:"account.Authorizations"},{id:"-1764049896",predicate:"account.noPassword",params:[{name:"new_salt",type:"bytes"},{name:"email_unconfirmed_pattern",type:"string"}],type:"account.Password"},{id:"2081952796",predicate:"account.password",params:[{name:"current_salt",type:"bytes"},{name:"new_salt",type:"bytes"},{name:"hint",type:"string"},{name:"has_recovery",type:"Bool"},{name:"email_unconfirmed_pattern",type:"string"}],type:"account.Password"},{id:"-1212732749",predicate:"account.passwordSettings",params:[{name:"email",type:"string"}],type:"account.PasswordSettings"},{id:"-2037289493",predicate:"account.passwordInputSettings",params:[{name:"flags",type:"#"},{name:"new_salt",type:"flags.0?bytes"},{name:"new_password_hash",type:"flags.0?bytes"},{name:"hint",type:"flags.0?string"},{name:"email",type:"flags.1?string"}],type:"account.PasswordInputSettings"},{id:"326715557",predicate:"auth.passwordRecovery",params:[{name:"email_pattern",type:"string"}],type:"auth.PasswordRecovery"},{id:"673687578",predicate:"inputMediaVenue",params:[{name:"geo_point",type:"InputGeoPoint"},{name:"title",type:"string"},{name:"address",type:"string"},{name:"provider",type:"string"},{name:"venue_id",type:"string"}],type:"InputMedia"},{id:"2031269663",predicate:"messageMediaVenue",params:[{name:"geo",type:"GeoPoint"},{name:"title",type:"string"},{name:"address",type:"string"},{name:"provider",type:"string"},{name:"venue_id",type:"string"}],type:"MessageMedia"},{id:"-1551583367",predicate:"receivedNotifyMessage",params:[{name:"id",type:"int"},{name:"flags",type:"int"}],type:"ReceivedNotifyMessage"},{id:"1776236393",predicate:"chatInviteEmpty",params:[],type:"ExportedChatInvite"},{id:"-64092740",predicate:"chatInviteExported",params:[{name:"link",type:"string"}],type:"ExportedChatInvite"},{id:"1516793212",predicate:"chatInviteAlready",params:[{name:"chat",type:"Chat"}],type:"ChatInvite"},{id:"-1813406880",predicate:"chatInvite",params:[{name:"flags",type:"#"},{name:"channel",type:"flags.0?true"},{name:"broadcast",type:"flags.1?true"},{name:"public",type:"flags.2?true"},{name:"megagroup",type:"flags.3?true"},{name:"title",type:"string"}],type:"ChatInvite"},{id:"-123931160",predicate:"messageActionChatJoinedByLink",params:[{name:"inviter_id",type:"int"}],type:"MessageAction"},{id:"1757493555",predicate:"updateReadMessagesContents",params:[{name:"messages",type:"Vector<int>"},{name:"pts",type:"int"},{name:"pts_count",type:"int"}],type:"Update"},{id:"-4838507",predicate:"inputStickerSetEmpty",params:[],type:"InputStickerSet"},{id:"-1645763991",predicate:"inputStickerSetID",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputStickerSet"},{id:"-2044933984",predicate:"inputStickerSetShortName",params:[{name:"short_name",type:"string"}],type:"InputStickerSet"},{id:"-852477119",predicate:"stickerSet",params:[{name:"flags",type:"#"},{name:"installed",type:"flags.0?true"},{name:"disabled",type:"flags.1?true"},{name:"official",type:"flags.2?true"},{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"title",type:"string"},{name:"short_name",type:"string"},{name:"count",type:"int"},{name:"hash",type:"int"}],type:"StickerSet"},{id:"-1240849242",predicate:"messages.stickerSet",params:[{name:"set",type:"StickerSet"},{name:"packs",type:"Vector<StickerPack>"},{name:"documents",type:"Vector<Document>"}],type:"messages.StickerSet"},{id:"-787638374",predicate:"user",params:[{name:"flags",type:"#"},{name:"self",type:"flags.10?true"},{name:"contact",type:"flags.11?true"},{name:"mutual_contact",type:"flags.12?true"},{name:"deleted",type:"flags.13?true"},{name:"bot",type:"flags.14?true"},{name:"bot_chat_history",type:"flags.15?true"},{name:"bot_nochats",type:"flags.16?true"},{name:"verified",type:"flags.17?true"},{name:"restricted",type:"flags.18?true"},{name:"min",type:"flags.20?true"},{name:"bot_inline_geo",type:"flags.21?true"},{name:"id",type:"int"},{name:"access_hash",type:"flags.0?long"},{name:"first_name",type:"flags.1?string"},{name:"last_name",type:"flags.2?string"},{name:"username",type:"flags.3?string"},{name:"phone",type:"flags.4?string"},{name:"photo",type:"flags.5?UserProfilePhoto"},{name:"status",type:"flags.6?UserStatus"},{name:"bot_info_version",type:"flags.14?int"},{name:"restriction_reason",type:"flags.18?string"},{name:"bot_inline_placeholder",type:"flags.19?string"}],type:"User"},{id:"-1032140601",predicate:"botCommand",params:[{name:"command",type:"string"},{name:"description",type:"string"}],type:"BotCommand"},{id:"-1729618630",predicate:"botInfo",params:[{name:"user_id",type:"int"},{name:"description",type:"string"},{name:"commands",type:"Vector<BotCommand>"}],type:"BotInfo"},{id:"-1560655744",predicate:"keyboardButton",params:[{name:"text",type:"string"}],type:"KeyboardButton"},{id:"2002815875",predicate:"keyboardButtonRow",params:[{name:"buttons",type:"Vector<KeyboardButton>"}],type:"KeyboardButtonRow"},{id:"-1606526075",predicate:"replyKeyboardHide",params:[{name:"flags",type:"#"},{name:"selective",type:"flags.2?true"}],type:"ReplyMarkup"},{id:"-200242528",predicate:"replyKeyboardForceReply",params:[{name:"flags",type:"#"},{name:"single_use",type:"flags.1?true"},{name:"selective",type:"flags.2?true"}],type:"ReplyMarkup"},{id:"889353612",predicate:"replyKeyboardMarkup",params:[{name:"flags",type:"#"},{name:"resize",type:"flags.0?true"},{name:"single_use",type:"flags.1?true"},{name:"selective",type:"flags.2?true"},{name:"rows",type:"Vector<KeyboardButtonRow>"}],type:"ReplyMarkup"},{id:"2072935910",predicate:"inputPeerUser",params:[{name:"user_id",type:"int"},{name:"access_hash",type:"long"}],type:"InputPeer"},{id:"-668391402",predicate:"inputUser",params:[{name:"user_id",type:"int"},{name:"access_hash",type:"long"}],type:"InputUser"},{id:"-1350696044",predicate:"help.appChangelogEmpty",params:[],type:"help.AppChangelog"},{id:"1181279933",predicate:"help.appChangelog",params:[{name:"text",type:"string"}],type:"help.AppChangelog"},{id:"-1148011883",predicate:"messageEntityUnknown",params:[{name:"offset",type:"int"},{name:"length",type:"int"}],type:"MessageEntity"},{id:"-100378723",predicate:"messageEntityMention",params:[{name:"offset",type:"int"},{name:"length",type:"int"}],type:"MessageEntity"},{id:"1868782349",predicate:"messageEntityHashtag",params:[{name:"offset",type:"int"},{name:"length",type:"int"}],type:"MessageEntity"},{id:"1827637959",predicate:"messageEntityBotCommand",params:[{name:"offset",type:"int"},{name:"length",type:"int"}],type:"MessageEntity"},{id:"1859134776",predicate:"messageEntityUrl",params:[{name:"offset",type:"int"},{name:"length",type:"int"}],type:"MessageEntity"},{id:"1692693954",predicate:"messageEntityEmail",params:[{name:"offset",type:"int"},{name:"length",type:"int"}],type:"MessageEntity"},{id:"-1117713463",predicate:"messageEntityBold",params:[{name:"offset",type:"int"},{name:"length",type:"int"}],type:"MessageEntity"},{id:"-2106619040",predicate:"messageEntityItalic",params:[{name:"offset",type:"int"},{name:"length",type:"int"}],type:"MessageEntity"},{id:"681706865",predicate:"messageEntityCode",params:[{name:"offset",type:"int"},{name:"length",type:"int"}],type:"MessageEntity"},{id:"1938967520",predicate:"messageEntityPre",params:[{name:"offset",type:"int"},{name:"length",type:"int"},{name:"language",type:"string"}],type:"MessageEntity"},{id:"1990644519",predicate:"messageEntityTextUrl",params:[{name:"offset",type:"int"},{name:"length",type:"int"},{name:"url",type:"string"}],type:"MessageEntity"},{id:"301019932",predicate:"updateShortSentMessage",params:[{name:"flags",type:"#"},{name:"unread",type:"flags.0?true"},{name:"out",type:"flags.1?true"},{name:"id",type:"int"},{name:"pts",type:"int"},{name:"pts_count",type:"int"},{name:"date",type:"int"},{name:"media",type:"flags.9?MessageMedia"},{name:"entities",type:"flags.7?Vector<MessageEntity>"}],type:"Updates"},{id:"-292807034",predicate:"inputChannelEmpty",params:[],type:"InputChannel"},{id:"-1343524562",predicate:"inputChannel",params:[{name:"channel_id",type:"int"},{name:"access_hash",type:"long"}],type:"InputChannel"},{id:"-1109531342",predicate:"peerChannel",params:[{name:"channel_id",type:"int"}],type:"Peer"},{id:"548253432",predicate:"inputPeerChannel",params:[{name:"channel_id",type:"int"},{name:"access_hash",type:"long"}],type:"InputPeer"},{id:"-1588737454",predicate:"channel",params:[{name:"flags",type:"#"},{name:"creator",type:"flags.0?true"},{name:"kicked",type:"flags.1?true"},{name:"left",type:"flags.2?true"},{name:"editor",type:"flags.3?true"},{name:"moderator",type:"flags.4?true"},{name:"broadcast",type:"flags.5?true"},{name:"verified",type:"flags.7?true"},{name:"megagroup",type:"flags.8?true"},{name:"restricted",type:"flags.9?true"},{name:"democracy",type:"flags.10?true"},{name:"signatures",type:"flags.11?true"},{name:"min",type:"flags.12?true"},{name:"id",type:"int"},{name:"access_hash",type:"flags.13?long"},{name:"title",type:"string"},{name:"username",type:"flags.6?string"},{name:"photo",type:"ChatPhoto"},{name:"date",type:"int"},{name:"version",type:"int"},{name:"restriction_reason",type:"flags.9?string"}],type:"Chat"},{id:"763724588",predicate:"channelForbidden",params:[{name:"id",type:"int"},{name:"access_hash",type:"long"},{name:"title",type:"string"}],type:"Chat"},{id:"2131196633",predicate:"contacts.resolvedPeer",params:[{name:"peer",type:"Peer"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"contacts.ResolvedPeer"},{id:"-1749097118",predicate:"channelFull",params:[{name:"flags",type:"#"},{name:"can_view_participants",type:"flags.3?true"},{name:"can_set_username",type:"flags.6?true"},{name:"id",type:"int"},{name:"about",type:"string"},{name:"participants_count",type:"flags.0?int"},{name:"admins_count",type:"flags.1?int"},{name:"kicked_count",type:"flags.2?int"},{name:"read_inbox_max_id",type:"int"},{name:"unread_count",type:"int"},{name:"unread_important_count",type:"int"},{name:"chat_photo",type:"Photo"},{name:"notify_settings",type:"PeerNotifySettings"},{name:"exported_invite",type:"ExportedChatInvite"},{name:"bot_info",type:"Vector<BotInfo>"},{name:"migrated_from_chat_id",type:"flags.4?int"},{name:"migrated_from_max_id",type:"flags.4?int"},{name:"pinned_msg_id",type:"flags.5?int"}],type:"ChatFull"},{id:"1535415986",predicate:"dialogChannel",params:[{name:"peer",type:"Peer"},{name:"top_message",type:"int"},{name:"top_important_message",type:"int"},{name:"read_inbox_max_id",type:"int"},{name:"unread_count",type:"int"},{name:"unread_important_count",type:"int"},{name:"notify_settings",type:"PeerNotifySettings"},{name:"pts",type:"int"}],type:"Dialog"},{id:"182649427",predicate:"messageRange",params:[{name:"min_id",type:"int"},{name:"max_id",type:"int"}],type:"MessageRange"},{id:"-399216813",predicate:"messageGroup",params:[{name:"min_id",type:"int"},{name:"max_id",type:"int"},{name:"count",type:"int"},{name:"date",type:"int"}],type:"MessageGroup"},{id:"-1139861572",predicate:"messages.channelMessages",params:[{name:"flags",type:"#"},{name:"pts",type:"int"},{name:"count",type:"int"},{name:"messages",type:"Vector<Message>"},{name:"collapsed",type:"flags.0?Vector<MessageGroup>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"messages.Messages"},{id:"-1781355374",predicate:"messageActionChannelCreate",params:[{name:"title",type:"string"}],type:"MessageAction"},{id:"-352032773",predicate:"updateChannelTooLong",params:[{name:"flags",type:"#"},{name:"channel_id",type:"int"},{name:"pts",type:"flags.0?int"}],type:"Update"},{id:"-1227598250",predicate:"updateChannel",params:[{name:"channel_id",type:"int"}],type:"Update"},{id:"-1016324548",predicate:"updateChannelGroup",params:[{name:"channel_id",type:"int"},{name:"group",type:"MessageGroup"}],type:"Update"},{id:"1656358105",predicate:"updateNewChannelMessage",params:[{name:"message",type:"Message"},{name:"pts",type:"int"},{name:"pts_count",type:"int"}],type:"Update"},{id:"1108669311",predicate:"updateReadChannelInbox",params:[{name:"channel_id",type:"int"},{name:"max_id",type:"int"}],type:"Update"},{id:"-1015733815",predicate:"updateDeleteChannelMessages",params:[{name:"channel_id",type:"int"},{name:"messages",type:"Vector<int>"},{name:"pts",type:"int"},{name:"pts_count",type:"int"}],type:"Update"},{id:"-1734268085",predicate:"updateChannelMessageViews",params:[{name:"channel_id",type:"int"},{name:"id",type:"int"},{name:"views",type:"int"}],type:"Update"},{id:"1041346555",predicate:"updates.channelDifferenceEmpty",params:[{name:"flags",type:"#"},{name:"final",type:"flags.0?true"},{name:"pts",type:"int"},{name:"timeout",type:"flags.1?int"}],type:"updates.ChannelDifference"},{id:"1578530374",predicate:"updates.channelDifferenceTooLong",params:[{name:"flags",type:"#"},{name:"final",type:"flags.0?true"},{name:"pts",type:"int"},{name:"timeout",type:"flags.1?int"},{name:"top_message",type:"int"},{name:"top_important_message",type:"int"},{name:"read_inbox_max_id",type:"int"},{name:"unread_count",type:"int"},{name:"unread_important_count",type:"int"},{name:"messages",type:"Vector<Message>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"updates.ChannelDifference"},{id:"543450958",predicate:"updates.channelDifference",params:[{name:"flags",type:"#"},{name:"final",type:"flags.0?true"},{name:"pts",type:"int"},{name:"timeout",type:"flags.1?int"},{name:"new_messages",type:"Vector<Message>"},{name:"other_updates",type:"Vector<Update>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"updates.ChannelDifference"},{id:"-1798033689",predicate:"channelMessagesFilterEmpty",params:[],type:"ChannelMessagesFilter"},{id:"-847783593",predicate:"channelMessagesFilter",params:[{name:"flags",type:"#"},{name:"important_only",type:"flags.0?true"},{name:"exclude_new_messages",type:"flags.1?true"},{name:"ranges",type:"Vector<MessageRange>"}],type:"ChannelMessagesFilter"},{id:"-100588754",predicate:"channelMessagesFilterCollapsed",params:[],type:"ChannelMessagesFilter"},{id:"367766557",predicate:"channelParticipant",params:[{name:"user_id",type:"int"},{name:"date",type:"int"}],type:"ChannelParticipant"},{id:"-1557620115",predicate:"channelParticipantSelf",params:[{name:"user_id",type:"int"},{name:"inviter_id",type:"int"},{name:"date",type:"int"}],type:"ChannelParticipant"},{id:"-1861910545",predicate:"channelParticipantModerator",params:[{name:"user_id",type:"int"},{name:"inviter_id",type:"int"},{name:"date",type:"int"}],type:"ChannelParticipant"},{id:"-1743180447",predicate:"channelParticipantEditor",params:[{name:"user_id",type:"int"},{name:"inviter_id",type:"int"},{name:"date",type:"int"}],type:"ChannelParticipant"},{id:"-1933187430",predicate:"channelParticipantKicked",params:[{name:"user_id",type:"int"},{name:"kicked_by",type:"int"},{name:"date",type:"int"}],type:"ChannelParticipant"},{id:"-471670279",predicate:"channelParticipantCreator",params:[{name:"user_id",type:"int"}],type:"ChannelParticipant"},{id:"-566281095",predicate:"channelParticipantsRecent",params:[],type:"ChannelParticipantsFilter"},{id:"-1268741783",predicate:"channelParticipantsAdmins",params:[],type:"ChannelParticipantsFilter"},{id:"1010285434",predicate:"channelParticipantsKicked",params:[],type:"ChannelParticipantsFilter"},{id:"-1299865402",predicate:"channelRoleEmpty",params:[],type:"ChannelParticipantRole"},{id:"-1776756363",predicate:"channelRoleModerator",params:[],type:"ChannelParticipantRole"},{id:"-2113143156",predicate:"channelRoleEditor",params:[],type:"ChannelParticipantRole"},{id:"-177282392",predicate:"channels.channelParticipants",params:[{name:"count",type:"int"},{name:"participants",type:"Vector<ChannelParticipant>"},{name:"users",type:"Vector<User>"}],type:"channels.ChannelParticipants"},{id:"-791039645",predicate:"channels.channelParticipant",params:[{name:"participant",type:"ChannelParticipant"},{name:"users",type:"Vector<User>"}],type:"channels.ChannelParticipant"},{id:"-636267638",predicate:"chatParticipantCreator",params:[{name:"user_id",type:"int"}],type:"ChatParticipant"},{id:"-489233354",predicate:"chatParticipantAdmin",params:[{name:"user_id",type:"int"},{name:"inviter_id",type:"int"},{name:"date",type:"int"}],type:"ChatParticipant"},{id:"1855224129",predicate:"updateChatAdmins",params:[{name:"chat_id",type:"int"},{name:"enabled",type:"Bool"},{name:"version",type:"int"}],type:"Update"},{id:"-1232070311",predicate:"updateChatParticipantAdmin",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"int"},{name:"is_admin",type:"Bool"},{name:"version",type:"int"}],type:"Update"},{id:"1371385889",predicate:"messageActionChatMigrateTo",params:[{name:"channel_id",type:"int"}],type:"MessageAction"},{id:"-1336546578",predicate:"messageActionChannelMigrateFrom",params:[{name:"title",type:"string"},{name:"chat_id",type:"int"}],type:"MessageAction"},{id:"-1328445861",predicate:"channelParticipantsBots",params:[],type:"ChannelParticipantsFilter"},{id:"-236044656",predicate:"help.termsOfService",params:[{name:"text",type:"string"}],type:"help.TermsOfService"},{id:"1753886890",predicate:"updateNewStickerSet",params:[{name:"stickerset",type:"messages.StickerSet"}],type:"Update"},{id:"-253774767",predicate:"updateStickerSetsOrder",params:[{name:"order",type:"Vector<long>"}],type:"Update"},{id:"1135492588",predicate:"updateStickerSets",params:[],type:"Update"},{id:"372165663",predicate:"foundGif",params:[{name:"url",type:"string"},{name:"thumb_url",type:"string"},{name:"content_url",type:"string"},{name:"content_type",type:"string"},{name:"w",type:"int"},{name:"h",type:"int"}],type:"FoundGif"},{id:"-1670052855",predicate:"foundGifCached",params:[{name:"url",type:"string"},{name:"photo",type:"Photo"},{name:"document",type:"Document"}],type:"FoundGif"},{id:"1212395773",predicate:"inputMediaGifExternal",params:[{name:"url",type:"string"},{name:"q",type:"string"}],type:"InputMedia"},{id:"1158290442",predicate:"messages.foundGifs",params:[{name:"next_offset",type:"int"},{name:"results",type:"Vector<FoundGif>"}],type:"messages.FoundGifs"},{id:"-402498398",predicate:"messages.savedGifsNotModified",params:[],type:"messages.SavedGifs"},{id:"772213157",predicate:"messages.savedGifs",params:[{name:"hash",type:"int"},{name:"gifs",type:"Vector<Document>"}],type:"messages.SavedGifs"},{id:"-1821035490",predicate:"updateSavedGifs",params:[],type:"Update"},{id:"691006739",predicate:"inputBotInlineMessageMediaAuto",params:[{name:"flags",type:"#"},{name:"caption",type:"string"},{name:"reply_markup",type:"flags.2?ReplyMarkup"}],type:"InputBotInlineMessage"},{id:"1036876423",predicate:"inputBotInlineMessageText",params:[{name:"flags",type:"#"},{name:"no_webpage",type:"flags.0?true"},{name:"message",type:"string"},{name:"entities",type:"flags.1?Vector<MessageEntity>"},{name:"reply_markup",type:"flags.2?ReplyMarkup"}],type:"InputBotInlineMessage"},{id:"750510426",predicate:"inputBotInlineResult",params:[{name:"flags",type:"#"},{name:"id",type:"string"},{name:"type",type:"string"},{name:"title",type:"flags.1?string"},{name:"description",type:"flags.2?string"},{name:"url",type:"flags.3?string"},{name:"thumb_url",type:"flags.4?string"},{name:"content_url",type:"flags.5?string"},{name:"content_type",type:"flags.5?string"},{name:"w",type:"flags.6?int"},{name:"h",type:"flags.6?int"},{name:"duration",type:"flags.7?int"},{name:"send_message",type:"InputBotInlineMessage"}],type:"InputBotInlineResult"},{id:"175419739",predicate:"botInlineMessageMediaAuto",params:[{name:"flags",type:"#"},{name:"caption",type:"string"},{name:"reply_markup",type:"flags.2?ReplyMarkup"}],type:"BotInlineMessage"},{id:"-1937807902",predicate:"botInlineMessageText",params:[{name:"flags",type:"#"},{name:"no_webpage",type:"flags.0?true"},{name:"message",type:"string"},{name:"entities",type:"flags.1?Vector<MessageEntity>"},{name:"reply_markup",type:"flags.2?ReplyMarkup"}],type:"BotInlineMessage"},{id:"-1679053127",predicate:"botInlineResult",params:[{name:"flags",type:"#"},{name:"id",type:"string"},{name:"type",type:"string"},{name:"title",type:"flags.1?string"},{name:"description",type:"flags.2?string"},{name:"url",type:"flags.3?string"},{name:"thumb_url",type:"flags.4?string"},{name:"content_url",type:"flags.5?string"},{name:"content_type",type:"flags.5?string"},{name:"w",type:"flags.6?int"},{name:"h",type:"flags.6?int"},{name:"duration",type:"flags.7?int"},{name:"send_message",type:"BotInlineMessage"}],type:"BotInlineResult"},{id:"627509670",predicate:"messages.botResults",params:[{name:"flags",type:"#"},{name:"gallery",type:"flags.0?true"},{name:"query_id",type:"long"},{name:"next_offset",type:"flags.1?string"},{name:"switch_pm",type:"flags.2?InlineBotSwitchPM"},{name:"results",type:"Vector<BotInlineResult>"}],type:"messages.BotResults"},{id:"1417832080",predicate:"updateBotInlineQuery",params:[{name:"flags",type:"#"},{name:"query_id",type:"long"},{name:"user_id",type:"int"},{name:"query",type:"string"},{name:"geo",type:"flags.0?GeoPoint"},{name:"offset",type:"string"}],type:"Update"},{id:"239663460",predicate:"updateBotInlineSend",params:[{name:"flags",type:"#"},{name:"user_id",type:"int"},{name:"query",type:"string"},{name:"geo",type:"flags.0?GeoPoint"},{name:"id",type:"string"},{name:"msg_id",type:"flags.1?InputBotInlineMessageID"}],type:"Update"},{id:"1358283666",predicate:"inputMessagesFilterVoice",params:[],type:"MessagesFilter"},{id:"928101534",predicate:"inputMessagesFilterMusic",params:[],type:"MessagesFilter"},{id:"-1107622874",predicate:"inputPrivacyKeyChatInvite",params:[],type:"InputPrivacyKey"},{id:"1343122938",predicate:"privacyKeyChatInvite",params:[],type:"PrivacyKey"},{id:"524838915",predicate:"exportedMessageLink",params:[{name:"link",type:"string"}],type:"ExportedMessageLink"},{id:"-947462709",predicate:"messageFwdHeader",params:[{name:"flags",type:"#"},{name:"from_id",type:"flags.0?int"},{name:"date",type:"int"},{name:"channel_id",type:"flags.1?int"},{name:"channel_post",type:"flags.2?int"}],type:"MessageFwdHeader"},{id:"457133559",predicate:"updateEditChannelMessage",params:[{name:"message",type:"Message"},{name:"pts",type:"int"},{name:"pts_count",type:"int"}],type:"Update"},{id:"-1738988427",predicate:"updateChannelPinnedMessage",params:[{name:"channel_id",type:"int"},{name:"id",type:"int"}],type:"Update"},{id:"-1799538451",predicate:"messageActionPinMessage",params:[],type:"MessageAction"},{id:"1923290508",predicate:"auth.codeTypeSms",params:[],type:"auth.CodeType"},{id:"1948046307",predicate:"auth.codeTypeCall",params:[],type:"auth.CodeType"},{id:"577556219",predicate:"auth.codeTypeFlashCall",params:[],type:"auth.CodeType"},{id:"1035688326",predicate:"auth.sentCodeTypeApp",params:[{name:"length",type:"int"}],type:"auth.SentCodeType"},{id:"-1073693790",predicate:"auth.sentCodeTypeSms",params:[{name:"length",type:"int"}],type:"auth.SentCodeType"},{id:"1398007207",predicate:"auth.sentCodeTypeCall",params:[{name:"length",type:"int"}],type:"auth.SentCodeType"},{id:"-1425815847",predicate:"auth.sentCodeTypeFlashCall",params:[{name:"pattern",type:"string"}],type:"auth.SentCodeType"},{id:"629866245",predicate:"keyboardButtonUrl",params:[{name:"text",type:"string"},{name:"url",type:"string"}],type:"KeyboardButton"},{id:"1748655686",predicate:"keyboardButtonCallback",params:[{name:"text",type:"string"},{name:"data",type:"bytes"}],type:"KeyboardButton"},{id:"-1318425559",predicate:"keyboardButtonRequestPhone",params:[{name:"text",type:"string"}],type:"KeyboardButton"},{id:"-59151553",predicate:"keyboardButtonRequestGeoLocation",params:[{name:"text",type:"string"}],type:"KeyboardButton"},{id:"-367298028",predicate:"keyboardButtonSwitchInline",params:[{name:"text",type:"string"},{name:"query",type:"string"}],type:"KeyboardButton"},{id:"1218642516",predicate:"replyInlineMarkup",params:[{name:"rows",type:"Vector<KeyboardButtonRow>"}],type:"ReplyMarkup"},{id:"308605382",predicate:"messages.botCallbackAnswer",params:[{name:"flags",type:"#"},{name:"alert",type:"flags.1?true"},{name:"message",type:"flags.0?string"}],type:"messages.BotCallbackAnswer"},{id:"-1500747636",predicate:"updateBotCallbackQuery",params:[{name:"query_id",type:"long"},{name:"user_id",type:"int"},{name:"peer",type:"Peer"},{name:"msg_id",type:"int"},{name:"data",type:"bytes"}],type:"Update"},{id:"649453030",predicate:"messages.messageEditData",params:[{name:"flags",type:"#"},{name:"caption",type:"flags.0?true"}],type:"messages.MessageEditData"},{id:"-469536605",predicate:"updateEditMessage",params:[{name:"message",type:"Message"},{name:"pts",type:"int"},{name:"pts_count",type:"int"}],type:"Update"},{id:"-190472735",predicate:"inputBotInlineMessageMediaGeo",params:[{name:"flags",type:"#"},{name:"geo_point",type:"InputGeoPoint"},{name:"reply_markup",type:"flags.2?ReplyMarkup"}],type:"InputBotInlineMessage"},{id:"-1431327288",predicate:"inputBotInlineMessageMediaVenue",params:[{name:"flags",type:"#"},{name:"geo_point",type:"InputGeoPoint"},{name:"title",type:"string"},{name:"address",type:"string"},{name:"provider",type:"string"},{name:"venue_id",type:"string"},{name:"reply_markup",type:"flags.2?ReplyMarkup"}],type:"InputBotInlineMessage"},{id:"766443943",predicate:"inputBotInlineMessageMediaContact",params:[{name:"flags",type:"#"},{name:"phone_number",type:"string"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"reply_markup",type:"flags.2?ReplyMarkup"}],type:"InputBotInlineMessage"},{id:"982505656",predicate:"botInlineMessageMediaGeo",params:[{name:"flags",type:"#"},{name:"geo",type:"GeoPoint"},{name:"reply_markup",type:"flags.2?ReplyMarkup"}],type:"BotInlineMessage"},{id:"1130767150",predicate:"botInlineMessageMediaVenue",params:[{name:"flags",type:"#"},{name:"geo",type:"GeoPoint"},{name:"title",type:"string"},{name:"address",type:"string"},{name:"provider",type:"string"},{name:"venue_id",type:"string"},{name:"reply_markup",type:"flags.2?ReplyMarkup"}],type:"BotInlineMessage"},{id:"904770772",predicate:"botInlineMessageMediaContact",params:[{name:"flags",type:"#"},{name:"phone_number",type:"string"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"reply_markup",type:"flags.2?ReplyMarkup"}],type:"BotInlineMessage"},{id:"-1462213465",predicate:"inputBotInlineResultPhoto",params:[{name:"id",type:"string"},{name:"type",type:"string"},{name:"photo",type:"InputPhoto"},{name:"send_message",type:"InputBotInlineMessage"}],type:"InputBotInlineResult"},{id:"-459324",predicate:"inputBotInlineResultDocument",params:[{name:"flags",type:"#"},{name:"id",type:"string"},{name:"type",type:"string"},{name:"title",type:"flags.1?string"},{name:"description",type:"flags.2?string"},{name:"document",type:"InputDocument"},{name:"send_message",type:"InputBotInlineMessage"}],type:"InputBotInlineResult"},{id:"400266251",predicate:"botInlineMediaResult",params:[{name:"flags",type:"#"},{name:"id",type:"string"},{name:"type",type:"string"},{name:"photo",type:"flags.0?Photo"},{name:"document",type:"flags.1?Document"},{name:"title",type:"flags.2?string"},{name:"description",type:"flags.3?string"},{name:"send_message",type:"BotInlineMessage"}],type:"BotInlineResult"},{id:"-1995686519",predicate:"inputBotInlineMessageID",params:[{name:"dc_id",type:"int"},{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputBotInlineMessageID"},{id:"750622127",predicate:"updateInlineBotCallbackQuery",params:[{name:"query_id",type:"long"},{name:"user_id",type:"int"},{name:"msg_id",type:"InputBotInlineMessageID"},{name:"data",type:"bytes"}],type:"Update"},{id:"1008755359",predicate:"inlineBotSwitchPM",params:[{name:"text",type:"string"},{name:"start_param",type:"string"}],type:"InlineBotSwitchPM"}],methods:[{id:"-878758099",method:"invokeAfterMsg",params:[{name:"msg_id",type:"long"},{name:"query",type:"!X"}],type:"X"},{id:"1036301552",method:"invokeAfterMsgs",params:[{name:"msg_ids",type:"Vector<long>"},{name:"query",type:"!X"}],type:"X"},{id:"1877286395",method:"auth.checkPhone",params:[{name:"phone_number",type:"string"}],type:"auth.CheckedPhone"},{id:"-855805745",method:"auth.sendCode",params:[{name:"flags",type:"#"},{name:"allow_flashcall",type:"flags.0?true"},{name:"phone_number",type:"string"},{name:"current_number",type:"flags.0?Bool"},{name:"api_id",type:"int"},{name:"api_hash",type:"string"},{name:"lang_code",type:"string"}],type:"auth.SentCode"},{id:"453408308",method:"auth.signUp",params:[{name:"phone_number",type:"string"},{name:"phone_code_hash",type:"string"},{name:"phone_code",type:"string"},{name:"first_name",type:"string"},{name:"last_name",type:"string"}],type:"auth.Authorization"},{id:"-1126886015",method:"auth.signIn",params:[{name:"phone_number",type:"string"},{name:"phone_code_hash",type:"string"},{name:"phone_code",type:"string"}],type:"auth.Authorization"},{id:"1461180992",method:"auth.logOut",params:[],type:"Bool"},{id:"-1616179942",method:"auth.resetAuthorizations",params:[],type:"Bool"},{id:"1998331287",method:"auth.sendInvites",params:[{name:"phone_numbers",type:"Vector<string>"},{name:"message",type:"string"}],type:"Bool"},{id:"-440401971",method:"auth.exportAuthorization",params:[{name:"dc_id",type:"int"}],type:"auth.ExportedAuthorization"},{id:"-470837741",method:"auth.importAuthorization",params:[{name:"id",type:"int"},{name:"bytes",type:"bytes"}],type:"auth.Authorization"},{id:"-841733627",method:"auth.bindTempAuthKey",params:[{name:"perm_auth_key_id",type:"long"},{name:"nonce",type:"long"},{name:"expires_at",type:"int"},{name:"encrypted_message",type:"bytes"}],type:"Bool"},{id:"1147957548",method:"account.registerDevice",params:[{name:"token_type",type:"int"},{name:"token",type:"string"},{name:"device_model",type:"string"},{name:"system_version",type:"string"},{name:"app_version",type:"string"},{name:"app_sandbox",type:"Bool"},{name:"lang_code",type:"string"}],type:"Bool"},{id:"1707432768",method:"account.unregisterDevice",params:[{name:"token_type",type:"int"},{name:"token",type:"string"}],type:"Bool"},{id:"-2067899501",method:"account.updateNotifySettings",params:[{name:"peer",type:"InputNotifyPeer"},{name:"settings",type:"InputPeerNotifySettings"}],type:"Bool"},{id:"313765169",method:"account.getNotifySettings",params:[{name:"peer",type:"InputNotifyPeer"}],type:"PeerNotifySettings"},{id:"-612493497",method:"account.resetNotifySettings",params:[],type:"Bool"},{id:"2018596725",method:"account.updateProfile",params:[{name:"flags",type:"#"},{name:"first_name",type:"flags.0?string"},{name:"last_name",type:"flags.1?string"},{name:"about",type:"flags.2?string"}],type:"User"},{id:"1713919532",method:"account.updateStatus",params:[{name:"offline",type:"Bool"}],type:"Bool"},{id:"-1068696894",method:"account.getWallPapers",params:[],type:"Vector<WallPaper>"},{id:"-1374118561",method:"account.reportPeer",params:[{name:"peer",type:"InputPeer"},{name:"reason",type:"ReportReason"}],type:"Bool"},{id:"227648840",method:"users.getUsers",params:[{name:"id",type:"Vector<InputUser>"}],type:"Vector<User>"},{id:"-902781519",method:"users.getFullUser",params:[{name:"id",type:"InputUser"}],type:"UserFull"},{id:"-995929106",method:"contacts.getStatuses",params:[],type:"Vector<ContactStatus>"},{id:"583445000",method:"contacts.getContacts",params:[{name:"hash",type:"string"}],type:"contacts.Contacts"},{id:"-634342611",method:"contacts.importContacts",params:[{name:"contacts",type:"Vector<InputContact>"},{name:"replace",type:"Bool"}],type:"contacts.ImportedContacts"},{id:"-1902823612",method:"contacts.deleteContact",params:[{name:"id",type:"InputUser"}],type:"contacts.Link"},{id:"1504393374",method:"contacts.deleteContacts",params:[{name:"id",type:"Vector<InputUser>"}],type:"Bool"},{id:"858475004",method:"contacts.block",params:[{name:"id",type:"InputUser"}],type:"Bool"},{id:"-448724803",method:"contacts.unblock",params:[{name:"id",type:"InputUser"}],type:"Bool"},{id:"-176409329",method:"contacts.getBlocked",params:[{name:"offset",type:"int"},{name:"limit",type:"int"}],type:"contacts.Blocked"},{id:"-2065352905",method:"contacts.exportCard",params:[],type:"Vector<int>"},{id:"1340184318",method:"contacts.importCard",params:[{name:"export_card",type:"Vector<int>"}],type:"User"},{id:"1109588596",method:"messages.getMessages",params:[{name:"id",type:"Vector<int>"}],type:"messages.Messages"},{id:"1799878989",method:"messages.getDialogs",params:[{name:"offset_date",type:"int"},{name:"offset_id",type:"int"},{name:"offset_peer",type:"InputPeer"},{name:"limit",type:"int"}],type:"messages.Dialogs"},{id:"-1347868602",method:"messages.getHistory",params:[{name:"peer",type:"InputPeer"},{name:"offset_id",type:"int"},{name:"offset_date",type:"int"},{name:"add_offset",type:"int"},{name:"limit",type:"int"},{name:"max_id",type:"int"},{name:"min_id",type:"int"}],type:"messages.Messages"},{id:"-732523960",method:"messages.search",params:[{name:"flags",type:"#"},{name:"important_only",type:"flags.0?true"},{name:"peer",type:"InputPeer"},{name:"q",type:"string"},{name:"filter",type:"MessagesFilter"},{name:"min_date",type:"int"},{name:"max_date",type:"int"},{name:"offset",type:"int"},{name:"max_id",type:"int"},{name:"limit",type:"int"}],type:"messages.Messages"},{id:"238054714",method:"messages.readHistory",params:[{name:"peer",type:"InputPeer"},{name:"max_id",type:"int"}],type:"messages.AffectedMessages"},{id:"-1212072999",method:"messages.deleteHistory",params:[{name:"peer",type:"InputPeer"},{name:"max_id",type:"int"}],type:"messages.AffectedHistory"},{id:"-1510897371",method:"messages.deleteMessages",params:[{name:"id",type:"Vector<int>"}],type:"messages.AffectedMessages"},{id:"94983360",method:"messages.receivedMessages",params:[{name:"max_id",type:"int"}],type:"Vector<ReceivedNotifyMessage>"},{id:"-1551737264",method:"messages.setTyping",params:[{name:"peer",type:"InputPeer"},{name:"action",type:"SendMessageAction"}],type:"Bool"},{id:"-91733382",method:"messages.sendMessage",params:[{name:"flags",type:"#"},{name:"no_webpage",type:"flags.1?true"},{name:"broadcast",type:"flags.4?true"},{name:"silent",type:"flags.5?true"},{name:"background",type:"flags.6?true"},{name:"peer",type:"InputPeer"},{name:"reply_to_msg_id",type:"flags.0?int"},{name:"message",type:"string"},{name:"random_id",type:"long"},{name:"reply_markup",type:"flags.2?ReplyMarkup"},{name:"entities",type:"flags.3?Vector<MessageEntity>"}],type:"Updates"},{id:"-923703407",method:"messages.sendMedia",params:[{name:"flags",type:"#"},{name:"broadcast",type:"flags.4?true"},{name:"silent",type:"flags.5?true"},{name:"background",type:"flags.6?true"},{name:"peer",type:"InputPeer"},{name:"reply_to_msg_id",type:"flags.0?int"},{name:"media",type:"InputMedia"},{name:"random_id",type:"long"},{name:"reply_markup",type:"flags.2?ReplyMarkup"}],type:"Updates"},{id:"1888354709",method:"messages.forwardMessages",params:[{name:"flags",type:"#"},{name:"broadcast",type:"flags.4?true"},{name:"silent",type:"flags.5?true"},{name:"background",type:"flags.6?true"},{name:"from_peer",type:"InputPeer"},{name:"id",type:"Vector<int>"},{name:"random_id",type:"Vector<long>"},{name:"to_peer",type:"InputPeer"}],type:"Updates"},{id:"-820669733",method:"messages.reportSpam",params:[{name:"peer",type:"InputPeer"}],type:"Bool"},{id:"-1460572005",method:"messages.hideReportSpam",params:[{name:"peer",type:"InputPeer"}],type:"Bool"},{id:"913498268",method:"messages.getPeerSettings",params:[{name:"peer",type:"InputPeer"}],type:"PeerSettings"},{id:"1013621127",method:"messages.getChats",params:[{name:"id",type:"Vector<int>"}],type:"messages.Chats"},{id:"998448230",method:"messages.getFullChat",params:[{name:"chat_id",type:"int"}],type:"messages.ChatFull"},{id:"-599447467",method:"messages.editChatTitle",params:[{name:"chat_id",type:"int"},{name:"title",type:"string"}],type:"Updates"},{id:"-900957736",method:"messages.editChatPhoto",params:[{name:"chat_id",type:"int"},{name:"photo",type:"InputChatPhoto"}],type:"Updates"},{id:"-106911223",method:"messages.addChatUser",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"InputUser"},{name:"fwd_limit",type:"int"}],type:"Updates"},{id:"-530505962",method:"messages.deleteChatUser",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"InputUser"}],type:"Updates"},{id:"164303470",method:"messages.createChat",params:[{name:"users",type:"Vector<InputUser>"},{name:"title",type:"string"}],type:"Updates"},{id:"-304838614",method:"updates.getState",params:[],type:"updates.State"},{id:"168039573",method:"updates.getDifference",params:[{name:"pts",type:"int"},{name:"date",type:"int"},{name:"qts",type:"int"}],type:"updates.Difference"},{id:"-285902432",method:"photos.updateProfilePhoto",params:[{name:"id",type:"InputPhoto"},{name:"crop",type:"InputPhotoCrop"}],type:"UserProfilePhoto"},{id:"-720397176",method:"photos.uploadProfilePhoto",params:[{name:"file",type:"InputFile"},{name:"caption",type:"string"},{name:"geo_point",type:"InputGeoPoint"},{name:"crop",type:"InputPhotoCrop"}],type:"photos.Photo"},{id:"-2016444625",method:"photos.deletePhotos",params:[{name:"id",type:"Vector<InputPhoto>"}],type:"Vector<long>"},{id:"-1291540959",method:"upload.saveFilePart",params:[{name:"file_id",type:"long"},{name:"file_part",type:"int"},{name:"bytes",type:"bytes"}],type:"Bool"},{id:"-475607115",method:"upload.getFile",params:[{name:"location",type:"InputFileLocation"},{name:"offset",type:"int"},{name:"limit",type:"int"}],type:"upload.File"},{id:"-990308245",method:"help.getConfig",params:[],type:"Config"},{id:"531836966",method:"help.getNearestDc",params:[],type:"NearestDc"},{id:"-938300290",method:"help.getAppUpdate",params:[{name:"device_model",type:"string"},{name:"system_version",type:"string"},{name:"app_version",type:"string"},{name:"lang_code",type:"string"}],type:"help.AppUpdate"},{id:"1862465352",method:"help.saveAppLog",params:[{name:"events",type:"Vector<InputAppEvent>"}],type:"Bool"},{id:"-1532407418",method:"help.getInviteText",params:[{name:"lang_code",type:"string"}],type:"help.InviteText"},{id:"-1848823128",method:"photos.getUserPhotos",params:[{name:"user_id",type:"InputUser"},{name:"offset",type:"int"},{name:"max_id",type:"long"},{name:"limit",type:"int"}],type:"photos.Photos"},{id:"865483769",method:"messages.forwardMessage",params:[{name:"peer",type:"InputPeer"},{name:"id",type:"int"},{name:"random_id",type:"long"}],type:"Updates"},{id:"-1082919718",method:"messages.sendBroadcast",params:[{name:"contacts",type:"Vector<InputUser>"},{name:"random_id",type:"Vector<long>"},{name:"message",type:"string"},{name:"media",type:"InputMedia"}],type:"Updates"},{id:"651135312",method:"messages.getDhConfig",params:[{name:"version",type:"int"},{name:"random_length",type:"int"}],type:"messages.DhConfig"},{id:"-162681021",method:"messages.requestEncryption",params:[{name:"user_id",type:"InputUser"},{name:"random_id",type:"int"},{name:"g_a",type:"bytes"}],type:"EncryptedChat"},{id:"1035731989",method:"messages.acceptEncryption",params:[{name:"peer",type:"InputEncryptedChat"},{name:"g_b",type:"bytes"},{name:"key_fingerprint",type:"long"}],type:"EncryptedChat"},{id:"-304536635",method:"messages.discardEncryption",params:[{name:"chat_id",type:"int"}],type:"Bool"},{id:"2031374829",method:"messages.setEncryptedTyping",params:[{name:"peer",type:"InputEncryptedChat"},{name:"typing",type:"Bool"}],type:"Bool"},{id:"2135648522",method:"messages.readEncryptedHistory",params:[{name:"peer",type:"InputEncryptedChat"},{name:"max_date",type:"int"}],type:"Bool"},{id:"-1451792525",method:"messages.sendEncrypted",params:[{name:"peer",type:"InputEncryptedChat"},{name:"random_id",type:"long"},{name:"data",type:"bytes"}],type:"messages.SentEncryptedMessage"},{id:"-1701831834",method:"messages.sendEncryptedFile",params:[{name:"peer",type:"InputEncryptedChat"},{name:"random_id",type:"long"},{name:"data",type:"bytes"},{name:"file",type:"InputEncryptedFile"}],type:"messages.SentEncryptedMessage"},{id:"852769188",method:"messages.sendEncryptedService",params:[{name:"peer",type:"InputEncryptedChat"},{name:"random_id",type:"long"},{name:"data",type:"bytes"}],type:"messages.SentEncryptedMessage"},{id:"1436924774",method:"messages.receivedQueue",params:[{name:"max_qts",type:"int"}],type:"Vector<long>"},{id:"-562337987",method:"upload.saveBigFilePart",params:[{name:"file_id",type:"long"},{name:"file_part",type:"int"},{name:"file_total_parts",type:"int"},{name:"bytes",type:"bytes"}],type:"Bool"},{id:"1769565673",method:"initConnection",params:[{name:"api_id",type:"int"},{name:"device_model",type:"string"},{name:"system_version",type:"string"},{name:"app_version",type:"string"},{name:"lang_code",type:"string"},{name:"query",type:"!X"}],type:"X"},{id:"-1663104819",method:"help.getSupport",params:[],type:"help.Support"},{id:"916930423",method:"messages.readMessageContents",params:[{name:"id",type:"Vector<int>"}],type:"messages.AffectedMessages"},{id:"655677548",method:"account.checkUsername",params:[{name:"username",type:"string"}],type:"Bool"},{id:"1040964988",method:"account.updateUsername",params:[{name:"username",type:"string"}],type:"User"},{id:"301470424",method:"contacts.search",params:[{name:"q",type:"string"},{name:"limit",type:"int"}],type:"contacts.Found"},{id:"-623130288",method:"account.getPrivacy",params:[{name:"key",type:"InputPrivacyKey"}],type:"account.PrivacyRules"},{id:"-906486552",method:"account.setPrivacy",params:[{name:"key",type:"InputPrivacyKey"},{name:"rules",type:"Vector<InputPrivacyRule>"}],type:"account.PrivacyRules"},{id:"1099779595",method:"account.deleteAccount",params:[{name:"reason",type:"string"}],type:"Bool"},{id:"150761757",method:"account.getAccountTTL",params:[],type:"AccountDaysTTL"},{id:"608323678",method:"account.setAccountTTL",params:[{name:"ttl",type:"AccountDaysTTL"}],type:"Bool"},{id:"-627372787",method:"invokeWithLayer",params:[{name:"layer",type:"int"},{name:"query",type:"!X"}],type:"X"},{id:"-113456221",method:"contacts.resolveUsername",params:[{name:"username",type:"string"}],type:"contacts.ResolvedPeer"},{id:"149257707",method:"account.sendChangePhoneCode",params:[{name:"flags",type:"#"},{name:"allow_flashcall",type:"flags.0?true"},{name:"phone_number",type:"string"},{name:"current_number",type:"flags.0?Bool"}],type:"auth.SentCode"},{id:"1891839707",method:"account.changePhone",params:[{name:"phone_number",type:"string"},{name:"phone_code_hash",type:"string"},{name:"phone_code",type:"string"}],type:"User"},{id:"-1373446075",method:"messages.getStickers",params:[{name:"emoticon",type:"string"},{name:"hash",type:"string"}],type:"messages.Stickers"},{id:"479598769",method:"messages.getAllStickers",params:[{name:"hash",type:"int"}],type:"messages.AllStickers"},{id:"954152242",method:"account.updateDeviceLocked",params:[{name:"period",type:"int"}],type:"Bool"},{id:"1738800940",method:"auth.importBotAuthorization",params:[{name:"flags",type:"int"},{name:"api_id",type:"int"},{name:"api_hash",type:"string"},{name:"bot_auth_token",type:"string"}],type:"auth.Authorization"},{id:"623001124",method:"messages.getWebPagePreview",params:[{name:"message",type:"string"}],type:"MessageMedia"},{id:"-484392616",method:"account.getAuthorizations",params:[],type:"account.Authorizations"},{id:"-545786948",method:"account.resetAuthorization",params:[{name:"hash",type:"long"}],type:"Bool"},{id:"1418342645",method:"account.getPassword",params:[],type:"account.Password"},{id:"-1131605573",method:"account.getPasswordSettings",params:[{name:"current_password_hash",type:"bytes"}],type:"account.PasswordSettings"},{id:"-92517498",method:"account.updatePasswordSettings",params:[{name:"current_password_hash",type:"bytes"},{name:"new_settings",type:"account.PasswordInputSettings"}],type:"Bool"},{id:"174260510",method:"auth.checkPassword",params:[{name:"password_hash",type:"bytes"}],type:"auth.Authorization"},{id:"-661144474",method:"auth.requestPasswordRecovery",params:[],type:"auth.PasswordRecovery"},{id:"1319464594",method:"auth.recoverPassword",params:[{name:"code",type:"string"}],type:"auth.Authorization"},{id:"-1080796745",method:"invokeWithoutUpdates",params:[{name:"query",type:"!X"}],type:"X"},{id:"2106086025",method:"messages.exportChatInvite",params:[{name:"chat_id",type:"int"}],type:"ExportedChatInvite"},{id:"1051570619",method:"messages.checkChatInvite",params:[{name:"hash",type:"string"}],type:"ChatInvite"},{id:"1817183516",method:"messages.importChatInvite",params:[{name:"hash",type:"string"}],type:"Updates"},{id:"639215886",method:"messages.getStickerSet",params:[{name:"stickerset",type:"InputStickerSet"}],type:"messages.StickerSet"},{id:"2066793382",method:"messages.installStickerSet",params:[{name:"stickerset",type:"InputStickerSet"},{name:"disabled",type:"Bool"}],type:"Bool"},{id:"-110209570",method:"messages.uninstallStickerSet",params:[{name:"stickerset",type:"InputStickerSet"}],type:"Bool"},{id:"-421563528",method:"messages.startBot",params:[{name:"bot",type:"InputUser"},{name:"peer",type:"InputPeer"},{name:"random_id",type:"long"},{name:"start_param",type:"string"}],type:"Updates"},{id:"1537966002",method:"help.getAppChangelog",params:[{name:"device_model",type:"string"},{name:"system_version",type:"string"},{name:"app_version",type:"string"},{name:"lang_code",type:"string"}],type:"help.AppChangelog"},{id:"-993483427",method:"messages.getMessagesViews",params:[{name:"peer",type:"InputPeer"},{name:"id",type:"Vector<int>"},{name:"increment",type:"Bool"}],type:"Vector<int>"},{id:"-1445735863",method:"channels.getDialogs",params:[{name:"offset",type:"int"},{name:"limit",type:"int"}],type:"messages.Dialogs"},{id:"-1891021902",method:"channels.getImportantHistory",params:[{name:"channel",type:"InputChannel"},{name:"offset_id",type:"int"},{name:"offset_date",type:"int"},{name:"add_offset",type:"int"},{name:"limit",type:"int"},{name:"max_id",type:"int"},{name:"min_id",type:"int"}],type:"messages.Messages"},{id:"-871347913",method:"channels.readHistory",params:[{name:"channel",type:"InputChannel"},{name:"max_id",type:"int"}],type:"Bool"},{id:"-2067661490",method:"channels.deleteMessages",params:[{name:"channel",type:"InputChannel"},{name:"id",type:"Vector<int>"}],type:"messages.AffectedMessages"},{id:"-787622117",method:"channels.deleteUserHistory",params:[{name:"channel",type:"InputChannel"},{name:"user_id",type:"InputUser"}],type:"messages.AffectedHistory"},{id:"-32999408",method:"channels.reportSpam",params:[{name:"channel",type:"InputChannel"},{name:"user_id",type:"InputUser"},{name:"id",type:"Vector<int>"}],type:"Bool"},{id:"-1814580409",method:"channels.getMessages",params:[{name:"channel",type:"InputChannel"},{name:"id",type:"Vector<int>"}],type:"messages.Messages"},{id:"618237842",method:"channels.getParticipants",params:[{name:"channel",type:"InputChannel"},{name:"filter",type:"ChannelParticipantsFilter"},{name:"offset",type:"int"},{name:"limit",type:"int"}],type:"channels.ChannelParticipants"},{id:"1416484774",method:"channels.getParticipant",params:[{name:"channel",type:"InputChannel"},{name:"user_id",type:"InputUser"}],type:"channels.ChannelParticipant"},{id:"176122811",method:"channels.getChannels",params:[{name:"id",type:"Vector<InputChannel>"}],type:"messages.Chats"},{id:"141781513",method:"channels.getFullChannel",params:[{name:"channel",type:"InputChannel"}],type:"messages.ChatFull"},{id:"-192332417",method:"channels.createChannel",params:[{name:"flags",type:"#"},{name:"broadcast",type:"flags.0?true"},{name:"megagroup",type:"flags.1?true"},{name:"title",type:"string"},{name:"about",type:"string"}],type:"Updates"},{id:"333610782",method:"channels.editAbout",params:[{name:"channel",type:"InputChannel"},{name:"about",type:"string"}],type:"Bool"},{id:"-344583728",method:"channels.editAdmin",params:[{name:"channel",type:"InputChannel"},{name:"user_id",type:"InputUser"},{name:"role",type:"ChannelParticipantRole"}],type:"Updates"},{id:"1450044624",method:"channels.editTitle",params:[{name:"channel",type:"InputChannel"},{name:"title",type:"string"}],type:"Updates"},{id:"-248621111",method:"channels.editPhoto",params:[{name:"channel",type:"InputChannel"},{name:"photo",type:"InputChatPhoto"}],type:"Updates"},{id:"-1432183160",method:"channels.toggleComments",params:[{name:"channel",type:"InputChannel"},{name:"enabled",type:"Bool"}],type:"Updates"},{id:"283557164",method:"channels.checkUsername",params:[{name:"channel",type:"InputChannel"},{name:"username",type:"string"}],type:"Bool"},{id:"890549214",method:"channels.updateUsername",params:[{name:"channel",type:"InputChannel"},{name:"username",type:"string"}],type:"Bool"},{id:"615851205",method:"channels.joinChannel",params:[{name:"channel",type:"InputChannel"}],type:"Updates"},{id:"-130635115",method:"channels.leaveChannel",params:[{name:"channel",type:"InputChannel"}],type:"Updates"},{id:"429865580",method:"channels.inviteToChannel",params:[{name:"channel",type:"InputChannel"},{name:"users",type:"Vector<InputUser>"}],type:"Updates"},{id:"-1502421484",method:"channels.kickFromChannel",params:[{name:"channel",type:"InputChannel"},{name:"user_id",type:"InputUser"},{name:"kicked",type:"Bool"}],type:"Updates"},{id:"-950663035",method:"channels.exportInvite",params:[{name:"channel",type:"InputChannel"}],type:"ExportedChatInvite"},{id:"-1072619549",method:"channels.deleteChannel",params:[{name:"channel",type:"InputChannel"}],type:"Updates"},{id:"-1154295872",method:"updates.getChannelDifference",params:[{name:"channel",type:"InputChannel"},{name:"filter",type:"ChannelMessagesFilter"},{name:"pts",type:"int"},{name:"limit",type:"int"}],type:"updates.ChannelDifference"},{id:"-326379039",method:"messages.toggleChatAdmins",params:[{name:"chat_id",type:"int"},{name:"enabled",type:"Bool"}],type:"Updates"},{id:"-1444503762",method:"messages.editChatAdmin",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"InputUser"},{name:"is_admin",type:"Bool"}],type:"Bool"},{id:"363051235",method:"messages.migrateChat",params:[{name:"chat_id",type:"int"}],type:"Updates"},{id:"-1640190800",method:"messages.searchGlobal",params:[{name:"q",type:"string"},{name:"offset_date",type:"int"},{name:"offset_peer",type:"InputPeer"},{name:"offset_id",type:"int"},{name:"limit",type:"int"}],type:"messages.Messages"},{id:"936873859",method:"help.getTermsOfService",params:[{name:"lang_code",type:"string"}],type:"help.TermsOfService"},{id:"-1613775824",method:"messages.reorderStickerSets",params:[{name:"order",type:"Vector<long>"}],type:"Bool"},{id:"864953444",method:"messages.getDocumentByHash",params:[{name:"sha256",type:"bytes"},{name:"size",type:"int"},{name:"mime_type",type:"string"}],type:"Document"},{id:"-1080395925",method:"messages.searchGifs",params:[{name:"q",type:"string"},{name:"offset",type:"int"}],type:"messages.FoundGifs"},{id:"-2084618926",method:"messages.getSavedGifs",params:[{name:"hash",type:"int"}],type:"messages.SavedGifs"},{id:"846868683",method:"messages.saveGif",params:[{name:"id",type:"InputDocument"},{name:"unsave",type:"Bool"}],type:"Bool"},{id:"1364105629",method:"messages.getInlineBotResults",params:[{name:"flags",type:"#"},{name:"bot",type:"InputUser"},{name:"peer",type:"InputPeer"},{name:"geo_point",type:"flags.0?InputGeoPoint"},{name:"query",type:"string"},{name:"offset",type:"string"}],type:"messages.BotResults"},{id:"-346119674",method:"messages.setInlineBotResults",params:[{name:"flags",type:"#"},{name:"gallery",type:"flags.0?true"},{name:"private",type:"flags.1?true"},{name:"query_id",type:"long"},{name:"results",type:"Vector<InputBotInlineResult>"},{name:"cache_time",type:"int"},{name:"next_offset",type:"flags.2?string"},{name:"switch_pm",type:"flags.3?InlineBotSwitchPM"}],type:"Bool"},{id:"-1318189314",method:"messages.sendInlineBotResult",params:[{name:"flags",type:"#"},{name:"broadcast",type:"flags.4?true"},{name:"silent",type:"flags.5?true"},{name:"background",type:"flags.6?true"},{name:"peer",type:"InputPeer"},{name:"reply_to_msg_id",type:"flags.0?int"},{name:"random_id",type:"long"},{name:"query_id",type:"long"},{name:"id",type:"string"}],type:"Updates"},{id:"1231065863",method:"channels.toggleInvites",params:[{name:"channel",type:"InputChannel"},{name:"enabled",type:"Bool"}],type:"Updates"},{id:"-934882771",method:"channels.exportMessageLink",params:[{name:"channel",type:"InputChannel"},{name:"id",type:"int"}],type:"ExportedMessageLink"},{id:"527021574",method:"channels.toggleSignatures",params:[{name:"channel",type:"InputChannel"},{name:"enabled",type:"Bool"}],type:"Updates"},{id:"-1490162350",method:"channels.updatePinnedMessage",params:[{name:"flags",type:"#"},{name:"silent",type:"flags.0?true"},{name:"channel",type:"InputChannel"},{name:"id",type:"int"}],type:"Updates"},{id:"1056025023",method:"auth.resendCode",params:[{name:"phone_number",type:"string"},{name:"phone_code_hash",type:"string"}],type:"auth.SentCode"},{id:"520357240",method:"auth.cancelCode",params:[{name:"phone_number",type:"string"},{name:"phone_code_hash",type:"string"}],type:"Bool"},{id:"-39416522",method:"messages.getMessageEditData",params:[{name:"peer",type:"InputPeer"},{name:"id",type:"int"}],type:"messages.MessageEditData"},{id:"-829299510",method:"messages.editMessage",params:[{name:"flags",type:"#"},{name:"no_webpage",type:"flags.1?true"},{name:"peer",type:"InputPeer"},{name:"id",type:"int"},{name:"message",type:"flags.11?string"},{name:"reply_markup",type:"flags.2?ReplyMarkup"},{name:"entities",type:"flags.3?Vector<MessageEntity>"}],type:"Updates"},{id:"319564933",method:"messages.editInlineBotMessage",params:[{name:"flags",type:"#"},{name:"no_webpage",type:"flags.1?true"},{name:"id",type:"InputBotInlineMessageID"},{name:"message",type:"flags.11?string"},{name:"reply_markup",type:"flags.2?ReplyMarkup"},{name:"entities",type:"flags.3?Vector<MessageEntity>"}],type:"Bool"},{id:"-1494659324",method:"messages.getBotCallbackAnswer",params:[{name:"peer",type:"InputPeer"},{name:"msg_id",type:"int"},{name:"data",type:"bytes"}],type:"messages.BotCallbackAnswer"},{id:"1209817370",method:"messages.setBotCallbackAnswer",params:[{name:"flags",type:"#"},{name:"alert",type:"flags.1?true"},{name:"query_id",type:"long"},{name:"message",type:"flags.0?string"}],type:"Bool"}]},Config.Schema.API.layer=51,Config.Emoji={"00a9":["©",["copyright"]],"00ae":["®",["registered"]],"203c":["‼",["bangbang"]],2049:["⁉",["interrobang"]],2122:["™",["tm"]],2139:["ℹ",["information_source"]],2194:["↔",["left_right_arrow"]],2195:["↕",["arrow_up_down"]],2196:["↖",["arrow_upper_left"]],2197:["↗",["arrow_upper_right"]],2198:["↘",["arrow_lower_right"]],2199:["↙",["arrow_lower_left"]],"21a9":["↩",["leftwards_arrow_with_hook"]],"21aa":["↪",["arrow_right_hook"]],"231a":["⌚",["watch"]],"231b":["⌛",["hourglass"]],"23e9":["⏩",["fast_forward"]],"23ea":["⏪",["rewind"]],"23eb":["⏫",["arrow_double_up"]],"23ec":["⏬",["arrow_double_down"]],"23f0":["⏰",["alarm_clock"]],"23f3":["⏳",["hourglass_flowing_sand"]],"24c2":["Ⓜ",["m"]],"25aa":["▪",["black_small_square"]],"25ab":["▫",["white_small_square"]],"25b6":["▶",["arrow_forward"]],"25c0":["◀",["arrow_backward"]],"25fb":["◻",["white_medium_square"]],"25fc":["◼",["black_medium_square"]],"25fd":["◽",["white_medium_small_square"]],"25fe":["◾",["black_medium_small_square"]],2600:["☀",["sunny"]],2601:["☁",["cloud"]],"260e":["☎",["phone","telephone"]],2611:["☑",["ballot_box_with_check"]],2614:["☔",["umbrella"]],2615:["☕",["coffee"]],"261d":["☝",["point_up"]],"263a":["☺",["relaxed"]],2648:["♈",["aries"]],2649:["♉",["taurus"]],"264a":["♊",["gemini"]],"264b":["♋",["cancer"]],"264c":["♌",["leo"]],"264d":["♍",["virgo"]],"264e":["♎",["libra"]],"264f":["♏",["scorpius"]],2650:["♐",["sagittarius"]],2651:["♑",["capricorn"]],2652:["♒",["aquarius"]],2653:["♓",["pisces"]],2660:["♠",["spades"]],2663:["♣",["clubs"]],2665:["♥",["hearts"]],2666:["♦",["diamonds"]],2668:["♨",["hotsprings"]],"267b":["♻",["recycle"]],"267f":["♿",["wheelchair"]],2693:["⚓",["anchor"]],"26a0":["⚠",["warning"]],"26a1":["⚡",["zap"]],"26aa":["⚪",["white_circle"]],"26ab":["⚫",["black_circle"]],"26bd":["⚽",["soccer"]],"26be":["⚾",["baseball"]],"26c4":["⛄",["snowman"]],"26c5":["⛅",["partly_sunny"]],"26ce":["⛎",["ophiuchus"]],"26d4":["⛔",["no_entry"]],"26ea":["⛪",["church"]],"26f2":["⛲",["fountain"]],"26f3":["⛳",["golf"]],"26f5":["⛵",["boat","sailboat"]],"26fa":["⛺",["tent"]],"26fd":["⛽",["fuelpump"]],2702:["✂",["scissors"]],2705:["✅",["white_check_mark"]],2708:["✈",["airplane"]],2709:["✉",["email","envelope"]],"270a":["✊",["fist"]],"270b":["✋",["hand","raised_hand"]],"270c":["✌",["v"]],"270f":["✏",["pencil2"]],2712:["✒",["black_nib"]],2714:["✔",["heavy_check_mark"]],2716:["✖",["heavy_multiplication_x"]],2728:["✨",["sparkles"]],2733:["✳",["eight_spoked_asterisk"]],2734:["✴",["eight_pointed_black_star"]],2744:["❄",["snowflake"]],2747:["❇",["sparkle"]],"274c":["❌",["x"]],"274e":["❎",["negative_squared_cross_mark"]],2753:["❓",["question"]],2754:["❔",["grey_question"]],2755:["❕",["grey_exclamation"]],2757:["❗",["exclamation","heavy_exclamation_mark"]],2764:["❤",["heart"],"<3"],2795:["➕",["heavy_plus_sign"]],2796:["➖",["heavy_minus_sign"]],2797:["➗",["heavy_division_sign"]],"27a1":["➡",["arrow_right"]],"27b0":["➰",["curly_loop"]],"27bf":["➿",["loop"]],2934:["⤴",["arrow_heading_up"]],2935:["⤵",["arrow_heading_down"]],"2b05":["⬅",["arrow_left"]],"2b06":["⬆",["arrow_up"]],"2b07":["⬇",["arrow_down"]],"2b1b":["⬛",["black_large_square"]],"2b1c":["⬜",["white_large_square"]],"2b50":["⭐",["star"]],"2b55":["⭕",["o"]],3030:["〰",["wavy_dash"]],"303d":["〽",["part_alternation_mark"]],3297:["㊗",["congratulations"]],3299:["㊙",["secret"]],"1f004":["🀄",["mahjong"]],"1f0cf":["🃏",["black_joker"]],"1f170":["🅰",["a"]],"1f171":["🅱",["b"]],"1f17e":["🅾",["o2"]],"1f17f":["🅿",["parking"]],"1f18e":["🆎",["ab"]],"1f191":["🆑",["cl"]],"1f192":["🆒",["cool"]],"1f193":["🆓",["free"]],"1f194":["🆔",["id"]],"1f195":["🆕",["new"]],"1f196":["🆖",["ng"]],"1f197":["🆗",["ok"]],"1f198":["🆘",["sos"]],"1f199":["🆙",["up"]],"1f19a":["🆚",["vs"]],"1f201":["🈁",["koko"]],"1f202":["🈂",["sa"]],"1f21a":["🈚",["u7121"]],"1f22f":["🈯",["u6307"]],"1f232":["🈲",["u7981"]],"1f233":["🈳",["u7a7a"]],"1f234":["🈴",["u5408"]],"1f235":["🈵",["u6e80"]],"1f236":["🈶",["u6709"]],"1f237":["🈷",["u6708"]],"1f238":["🈸",["u7533"]],"1f239":["🈹",["u5272"]],"1f23a":["🈺",["u55b6"]],"1f250":["🉐",["ideograph_advantage"]],"1f251":["🉑",["accept"]],"1f300":["🌀",["cyclone"]],"1f301":["🌁",["foggy"]],"1f302":["🌂",["closed_umbrella"]],"1f303":["🌃",["night_with_stars"]],"1f304":["🌄",["sunrise_over_mountains"]],"1f305":["🌅",["sunrise"]],"1f306":["🌆",["city_sunset"]],"1f307":["🌇",["city_sunrise"]],"1f308":["🌈",["rainbow"]],"1f309":["🌉",["bridge_at_night"]],"1f30a":["🌊",["ocean"]],"1f30b":["🌋",["volcano"]],"1f30c":["🌌",["milky_way"]],"1f30d":["🌍",["earth_africa"]],"1f30e":["🌎",["earth_americas"]],"1f30f":["🌏",["earth_asia"]],"1f310":["🌐",["globe_with_meridians"]],"1f311":["🌑",["new_moon"]],"1f312":["🌒",["waxing_crescent_moon"]],"1f313":["🌓",["first_quarter_moon"]],"1f314":["🌔",["moon","waxing_gibbous_moon"]],"1f315":["🌕",["full_moon"]],"1f316":["🌖",["waning_gibbous_moon"]],"1f317":["🌗",["last_quarter_moon"]],"1f318":["🌘",["waning_crescent_moon"]],"1f319":["🌙",["crescent_moon"]],"1f320":["🌠",["stars"]],"1f31a":["🌚",["new_moon_with_face"]],"1f31b":["🌛",["first_quarter_moon_with_face"]],"1f31c":["🌜",["last_quarter_moon_with_face"]],"1f31d":["🌝",["full_moon_with_face"]],"1f31e":["🌞",["sun_with_face"]],"1f31f":["🌟",["star2"]],"1f330":["🌰",["chestnut"]],"1f331":["🌱",["seedling"]],"1f332":["🌲",["evergreen_tree"]],"1f333":["🌳",["deciduous_tree"]],"1f334":["🌴",["palm_tree"]],"1f335":["🌵",["cactus"]],"1f337":["🌷",["tulip"]],"1f338":["🌸",["cherry_blossom"]],"1f339":["🌹",["rose"]],"1f33a":["🌺",["hibiscus"]],"1f33b":["🌻",["sunflower"]],"1f33c":["🌼",["blossom"]],"1f33d":["🌽",["corn"]],"1f33e":["🌾",["ear_of_rice"]],"1f33f":["🌿",["herb"]],"1f340":["🍀",["four_leaf_clover"]],"1f341":["🍁",["maple_leaf"]],"1f342":["🍂",["fallen_leaf"]],"1f343":["🍃",["leaves"]],"1f344":["🍄",["mushroom"]],"1f345":["🍅",["tomato"]],"1f346":["🍆",["eggplant"]],"1f347":["🍇",["grapes"]],"1f348":["🍈",["melon"]],"1f349":["🍉",["watermelon"]],"1f34a":["🍊",["tangerine"]],"1f34b":["🍋",["lemon"]],"1f34c":["🍌",["banana"]],"1f34d":["🍍",["pineapple"]],"1f34e":["🍎",["apple"]],"1f34f":["🍏",["green_apple"]],"1f350":["🍐",["pear"]],"1f351":["🍑",["peach"]],"1f352":["🍒",["cherries"]],"1f353":["🍓",["strawberry"]],"1f354":["🍔",["hamburger"]],"1f355":["🍕",["pizza"]],"1f356":["🍖",["meat_on_bone"]],"1f357":["🍗",["poultry_leg"]],"1f358":["🍘",["rice_cracker"]],"1f359":["🍙",["rice_ball"]],"1f35a":["🍚",["rice"]],"1f35b":["🍛",["curry"]],"1f35c":["🍜",["ramen"]],"1f35d":["🍝",["spaghetti"]],"1f35e":["🍞",["bread"]],"1f35f":["🍟",["fries"]],"1f360":["🍠",["sweet_potato"]],"1f361":["🍡",["dango"]],"1f362":["🍢",["oden"]],"1f363":["🍣",["sushi"]],"1f364":["🍤",["fried_shrimp"]],"1f365":["🍥",["fish_cake"]],"1f366":["🍦",["icecream"]],"1f367":["🍧",["shaved_ice"]],"1f368":["🍨",["ice_cream"]],"1f369":["🍩",["doughnut"]],"1f36a":["🍪",["cookie"]],"1f36b":["🍫",["chocolate_bar"]],"1f36c":["🍬",["candy"]],"1f36d":["🍭",["lollipop"]],"1f36e":["🍮",["custard"]],"1f36f":["🍯",["honey_pot"]],"1f370":["🍰",["cake"]],"1f371":["🍱",["bento"]],"1f372":["🍲",["stew"]],"1f373":["🍳",["egg"]],"1f374":["🍴",["fork_and_knife"]],"1f375":["🍵",["tea"]],"1f376":["🍶",["sake"]],"1f377":["🍷",["wine_glass"]],"1f378":["🍸",["cocktail"]],"1f379":["🍹",["tropical_drink"]],"1f37a":["🍺",["beer"]],"1f37b":["🍻",["beers"]],"1f37c":["🍼",["baby_bottle"]],"1f380":["🎀",["ribbon"]],"1f381":["🎁",["gift"]],"1f382":["🎂",["birthday"]],"1f383":["🎃",["jack_o_lantern"]],"1f384":["🎄",["christmas_tree"]],"1f385":["🎅",["santa"]],"1f386":["🎆",["fireworks"]],"1f387":["🎇",["sparkler"]],"1f388":["🎈",["balloon"]],"1f389":["🎉",["tada"]],"1f38a":["🎊",["confetti_ball"]],"1f38b":["🎋",["tanabata_tree"]],"1f38c":["🎌",["crossed_flags"]],"1f38d":["🎍",["bamboo"]],"1f38e":["🎎",["dolls"]],"1f38f":["🎏",["flags"]],"1f390":["🎐",["wind_chime"]],"1f391":["🎑",["rice_scene"]],"1f392":["🎒",["school_satchel"]],"1f393":["🎓",["mortar_board"]],"1f3a0":["🎠",["carousel_horse"]],"1f3a1":["🎡",["ferris_wheel"]],"1f3a2":["🎢",["roller_coaster"]],"1f3a3":["🎣",["fishing_pole_and_fish"]],"1f3a4":["🎤",["microphone"]],"1f3a5":["🎥",["movie_camera"]],"1f3a6":["🎦",["cinema"]],"1f3a7":["🎧",["headphones"]],"1f3a8":["🎨",["art"]],"1f3a9":["🎩",["tophat"]],"1f3aa":["🎪",["circus_tent"]],"1f3ab":["🎫",["ticket"]],"1f3ac":["🎬",["clapper"]],"1f3ad":["🎭",["performing_arts"]],"1f3ae":["🎮",["video_game"]],"1f3af":["🎯",["dart"]],"1f3b0":["🎰",["slot_machine"]],"1f3b1":["🎱",["8ball"]],"1f3b2":["🎲",["game_die"]],"1f3b3":["🎳",["bowling"]],"1f3b4":["🎴",["flower_playing_cards"]],"1f3b5":["🎵",["musical_note"]],"1f3b6":["🎶",["notes"]],"1f3b7":["🎷",["saxophone"]],"1f3b8":["🎸",["guitar"]],"1f3b9":["🎹",["musical_keyboard"]],"1f3ba":["🎺",["trumpet"]],"1f3bb":["🎻",["violin"]],"1f3bc":["🎼",["musical_score"]],"1f3bd":["🎽",["running_shirt_with_sash"]],"1f3be":["🎾",["tennis"]],"1f3bf":["🎿",["ski"]],"1f3c0":["🏀",["basketball"]],"1f3c1":["🏁",["checkered_flag"]],"1f3c2":["🏂",["snowboarder"]],"1f3c3":["🏃",["runner","running"]],"1f3c4":["🏄",["surfer"]],"1f3c6":["🏆",["trophy"]],"1f3c7":["🏇",["horse_racing"]],"1f3c8":["🏈",["football"]],"1f3c9":["🏉",["rugby_football"]],"1f3ca":["🏊",["swimmer"]],"1f3e0":["🏠",["house"]],"1f3e1":["🏡",["house_with_garden"]],"1f3e2":["🏢",["office"]],"1f3e3":["🏣",["post_office"]],"1f3e4":["🏤",["european_post_office"]],"1f3e5":["🏥",["hospital"]],"1f3e6":["🏦",["bank"]],"1f3e7":["🏧",["atm"]],"1f3e8":["🏨",["hotel"]],"1f3e9":["🏩",["love_hotel"]],"1f3ea":["🏪",["convenience_store"]],"1f3eb":["🏫",["school"]],"1f3ec":["🏬",["department_store"]],"1f3ed":["🏭",["factory"]],"1f3ee":["🏮",["izakaya_lantern","lantern"]],"1f3ef":["🏯",["japanese_castle"]],"1f3f0":["🏰",["european_castle"]],"1f400":["🐀",["rat"]],"1f401":["🐁",["mouse2"]],"1f402":["🐂",["ox"]],"1f403":["🐃",["water_buffalo"]],"1f404":["🐄",["cow2"]],"1f405":["🐅",["tiger2"]],"1f406":["🐆",["leopard"]],"1f407":["🐇",["rabbit2"]],"1f408":["🐈",["cat2"]],"1f409":["🐉",["dragon"]],"1f40a":["🐊",["crocodile"]],"1f40b":["🐋",["whale2"]],"1f40c":["🐌",["snail"]],"1f40d":["🐍",["snake"]],"1f40e":["🐎",["racehorse"]],"1f40f":["🐏",["ram"]],"1f410":["🐐",["goat"]],"1f411":["🐑",["sheep"]],"1f412":["🐒",["monkey"]],"1f413":["🐓",["rooster"]],"1f414":["🐔",["chicken"]],"1f415":["🐕",["dog2"]],"1f416":["🐖",["pig2"]],"1f417":["🐗",["boar"]],"1f418":["🐘",["elephant"]],"1f419":["🐙",["octopus"]],"1f41a":["🐚",["shell"]],"1f41b":["🐛",["bug"]],"1f41c":["🐜",["ant"]],"1f41d":["🐝",["bee","honeybee"]],"1f41e":["🐞",["beetle"]],"1f41f":["🐟",["fish"]],"1f420":["🐠",["tropical_fish"]],"1f421":["🐡",["blowfish"]],"1f422":["🐢",["turtle"]],"1f423":["🐣",["hatching_chick"]],"1f424":["🐤",["baby_chick"]],"1f425":["🐥",["hatched_chick"]],"1f426":["🐦",["bird"]],"1f427":["🐧",["penguin"]],"1f428":["🐨",["koala"]],"1f429":["🐩",["poodle"]],"1f42a":["🐪",["dromedary_camel"]],"1f42b":["🐫",["camel"]],"1f42c":["🐬",["dolphin","flipper"]],"1f42d":["🐭",["mouse"]],"1f42e":["🐮",["cow"]],"1f42f":["🐯",["tiger"]],"1f430":["🐰",["rabbit"]],"1f431":["🐱",["cat"]],"1f432":["🐲",["dragon_face"]],"1f433":["🐳",["whale"]],"1f434":["🐴",["horse"]],"1f435":["🐵",["monkey_face"]],"1f436":["🐶",["dog"]],"1f437":["🐷",["pig"]],"1f438":["🐸",["frog"]],"1f439":["🐹",["hamster"]],"1f43a":["🐺",["wolf"]],"1f43b":["🐻",["bear"]],"1f43c":["🐼",["panda_face"]],"1f43d":["🐽",["pig_nose"]],"1f43e":["🐾",["feet","paw_prints"]],"1f440":["👀",["eyes"]],"1f442":["👂",["ear"]],"1f443":["👃",["nose"]],"1f444":["👄",["lips"]],"1f445":["👅",["tongue"]],"1f446":["👆",["point_up_2"]],"1f447":["👇",["point_down"]],"1f448":["👈",["point_left"]],"1f449":["👉",["point_right"]],"1f44a":["👊",["facepunch","punch"]],"1f44b":["👋",["wave"]],"1f44c":["👌",["ok_hand"]],"1f44d":["👍",["+1","thumbsup"]],"1f44e":["👎",["-1","thumbsdown"]],"1f44f":["👏",["clap"]],"1f450":["👐",["open_hands"]],"1f451":["👑",["crown"]],"1f452":["👒",["womans_hat"]],"1f453":["👓",["eyeglasses"]],"1f454":["👔",["necktie"]],"1f455":["👕",["shirt","tshirt"]],"1f456":["👖",["jeans"]],"1f457":["👗",["dress"]],"1f458":["👘",["kimono"]],"1f459":["👙",["bikini"]],"1f45a":["👚",["womans_clothes"]],"1f45b":["👛",["purse"]],"1f45c":["👜",["handbag"]],"1f45d":["👝",["pouch"]],"1f45e":["👞",["mans_shoe","shoe"]],"1f45f":["👟",["athletic_shoe"]],"1f460":["👠",["high_heel"]],"1f461":["👡",["sandal"]],"1f462":["👢",["boot"]],"1f463":["👣",["footprints"]],"1f464":["👤",["bust_in_silhouette"]],"1f465":["👥",["busts_in_silhouette"]],"1f466":["👦",["boy"]],"1f467":["👧",["girl"]],"1f468":["👨",["man"]],"1f469":["👩",["woman"]],"1f46a":["👪",["family"]],"1f46b":["👫",["couple"]],"1f46c":["👬",["two_men_holding_hands"]],"1f46d":["👭",["two_women_holding_hands"]],"1f46e":["👮",["cop"]],"1f46f":["👯",["dancers"]],"1f470":["👰",["bride_with_veil"]],"1f471":["👱",["person_with_blond_hair"]],"1f472":["👲",["man_with_gua_pi_mao"]],"1f473":["👳",["man_with_turban"]],"1f474":["👴",["older_man"]],"1f475":["👵",["older_woman"]],"1f476":["👶",["baby"]],"1f477":["👷",["construction_worker"]],"1f478":["👸",["princess"]],"1f479":["👹",["japanese_ogre"]],"1f47a":["👺",["japanese_goblin"]],"1f47b":["👻",["ghost"]],"1f47c":["👼",["angel"]],"1f47d":["👽",["alien"]],"1f47e":["👾",["space_invader"]],"1f47f":["👿",["imp"]],"1f480":["💀",["skull"]],"1f481":["💁",["information_desk_person"]],"1f482":["💂",["guardsman"]],"1f483":["💃",["dancer"]],"1f484":["💄",["lipstick"]],"1f485":["💅",["nail_care"]],"1f486":["💆",["massage"]],"1f487":["💇",["haircut"]],"1f488":["💈",["barber"]],"1f489":["💉",["syringe"]],"1f48a":["💊",["pill"]],"1f48b":["💋",["kiss"]],"1f48c":["💌",["love_letter"]],"1f48d":["💍",["ring"]],"1f48e":["💎",["gem"]],"1f48f":["💏",["couplekiss"]],"1f490":["💐",["bouquet"]],"1f491":["💑",["couple_with_heart"]],"1f492":["💒",["wedding"]],"1f493":["💓",["heartbeat"]],"1f494":["💔",["broken_heart"],"</3"],"1f495":["💕",["two_hearts"]],"1f496":["💖",["sparkling_heart"]],"1f497":["💗",["heartpulse"]],"1f498":["💘",["cupid"]],"1f499":["💙",["blue_heart"],"<3"],"1f49a":["💚",["green_heart"],"<3"],"1f49b":["💛",["yellow_heart"],"<3"],"1f49c":["💜",["purple_heart"],"<3"],"1f49d":["💝",["gift_heart"]],"1f49e":["💞",["revolving_hearts"]],"1f49f":["💟",["heart_decoration"]],"1f4a0":["💠",["diamond_shape_with_a_dot_inside"]],"1f4a1":["💡",["bulb"]],"1f4a2":["💢",["anger"]],"1f4a3":["💣",["bomb"]],"1f4a4":["💤",["zzz"]],"1f4a5":["💥",["boom","collision"]],"1f4a6":["💦",["sweat_drops"]],"1f4a7":["💧",["droplet"]],"1f4a8":["💨",["dash"]],"1f4a9":["💩",["hankey","poop","shit"]],"1f4aa":["💪",["muscle"]],"1f4ab":["💫",["dizzy"]],"1f4ac":["💬",["speech_balloon"]],"1f4ad":["💭",["thought_balloon"]],"1f4ae":["💮",["white_flower"]],"1f4af":["💯",["100"]],"1f4b0":["💰",["moneybag"]],"1f4b1":["💱",["currency_exchange"]],"1f4b2":["💲",["heavy_dollar_sign"]],"1f4b3":["💳",["credit_card"]],"1f4b4":["💴",["yen"]],"1f4b5":["💵",["dollar"]],"1f4b6":["💶",["euro"]],"1f4b7":["💷",["pound"]],"1f4b8":["💸",["money_with_wings"]],"1f4b9":["💹",["chart"]],"1f4ba":["💺",["seat"]],"1f4bb":["💻",["computer"]],"1f4bc":["💼",["briefcase"]],"1f4bd":["💽",["minidisc"]],"1f4be":["💾",["floppy_disk"]],"1f4bf":["💿",["cd"]],"1f4c0":["📀",["dvd"]],"1f4c1":["📁",["file_folder"]],"1f4c2":["📂",["open_file_folder"]],"1f4c3":["📃",["page_with_curl"]],"1f4c4":["📄",["page_facing_up"]],"1f4c5":["📅",["date"]],"1f4c6":["📆",["calendar"]],"1f4c7":["📇",["card_index"]],"1f4c8":["📈",["chart_with_upwards_trend"]],"1f4c9":["📉",["chart_with_downwards_trend"]],"1f4ca":["📊",["bar_chart"]],"1f4cb":["📋",["clipboard"]],"1f4cc":["📌",["pushpin"]],"1f4cd":["📍",["round_pushpin"]],"1f4ce":["📎",["paperclip"]],"1f4cf":["📏",["straight_ruler"]],"1f4d0":["📐",["triangular_ruler"]],"1f4d1":["📑",["bookmark_tabs"]],"1f4d2":["📒",["ledger"]],"1f4d3":["📓",["notebook"]],"1f4d4":["📔",["notebook_with_decorative_cover"]],"1f4d5":["📕",["closed_book"]],"1f4d6":["📖",["book","open_book"]],"1f4d7":["📗",["green_book"]],"1f4d8":["📘",["blue_book"]],"1f4d9":["📙",["orange_book"]],"1f4da":["📚",["books"]],"1f4db":["📛",["name_badge"]],"1f4dc":["📜",["scroll"]],"1f4dd":["📝",["memo","pencil"]],"1f4de":["📞",["telephone_receiver"]],"1f4df":["📟",["pager"]],"1f4e0":["📠",["fax"]],"1f4e1":["📡",["satellite"]],"1f4e2":["📢",["loudspeaker"]],"1f4e3":["📣",["mega"]],"1f4e4":["📤",["outbox_tray"]],"1f4e5":["📥",["inbox_tray"]],"1f4e6":["📦",["package"]],"1f4e7":["📧",["e-mail"]],"1f4e8":["📨",["incoming_envelope"]],"1f4e9":["📩",["envelope_with_arrow"]],"1f4ea":["📪",["mailbox_closed"]],"1f4eb":["📫",["mailbox"]],"1f4ec":["📬",["mailbox_with_mail"]],"1f4ed":["📭",["mailbox_with_no_mail"]],"1f4ee":["📮",["postbox"]],"1f4ef":["📯",["postal_horn"]],"1f4f0":["📰",["newspaper"]],"1f4f1":["📱",["iphone"]],"1f4f2":["📲",["calling"]],"1f4f3":["📳",["vibration_mode"]],"1f4f4":["📴",["mobile_phone_off"]],"1f4f5":["📵",["no_mobile_phones"]],"1f4f6":["📶",["signal_strength"]],"1f4f7":["📷",["camera"]],"1f4f9":["📹",["video_camera"]],"1f4fa":["📺",["tv"]],"1f4fb":["📻",["radio"]],"1f4fc":["📼",["vhs"]],"1f500":["🔀",["twisted_rightwards_arrows"]],"1f501":["🔁",["repeat"]],"1f502":["🔂",["repeat_one"]],"1f503":["🔃",["arrows_clockwise"]],"1f504":["🔄",["arrows_counterclockwise"]],"1f505":["🔅",["low_brightness"]],"1f506":["🔆",["high_brightness"]],"1f507":["🔇",["mute"]],"1f508":["🔉",["speaker"]],"1f509":["🔉",["sound"]],"1f50a":["🔊",["loud_sound"]],"1f50b":["🔋",["battery"]],"1f50c":["🔌",["electric_plug"]],"1f50d":["🔍",["mag"]],"1f50e":["🔎",["mag_right"]],"1f50f":["🔏",["lock_with_ink_pen"]],"1f510":["🔐",["closed_lock_with_key"]],"1f511":["🔑",["key"]],"1f512":["🔒",["lock"]],"1f513":["🔓",["unlock"]],"1f514":["🔔",["bell"]],"1f515":["🔕",["no_bell"]],"1f516":["🔖",["bookmark"]],"1f517":["🔗",["link"]],"1f518":["🔘",["radio_button"]],"1f519":["🔙",["back"]],"1f51a":["🔚",["end"]],"1f51b":["🔛",["on"]],"1f51c":["🔜",["soon"]],"1f51d":["🔝",["top"]],"1f51e":["🔞",["underage"]],"1f51f":["🔟",["keycap_ten"]],"1f520":["🔠",["capital_abcd"]],"1f521":["🔡",["abcd"]],"1f522":["🔢",["1234"]],"1f523":["🔣",["symbols"]],"1f524":["🔤",["abc"]],"1f525":["🔥",["fire"]],"1f526":["🔦",["flashlight"]],"1f527":["🔧",["wrench"]],"1f528":["🔨",["hammer"]],"1f529":["🔩",["nut_and_bolt"]],"1f52a":["🔪",["hocho"]],"1f52b":["🔫",["gun"]],"1f52c":["🔬",["microscope"]],"1f52d":["🔭",["telescope"]],"1f52e":["🔮",["crystal_ball"]],"1f52f":["🔯",["six_pointed_star"]],"1f530":["🔰",["beginner"]],"1f531":["🔱",["trident"]],"1f532":["🔲",["black_square_button"]],"1f533":["🔳",["white_square_button"]],"1f534":["🔴",["red_circle"]],"1f535":["🔵",["large_blue_circle"]],"1f536":["🔶",["large_orange_diamond"]],"1f537":["🔷",["large_blue_diamond"]],"1f538":["🔸",["small_orange_diamond"]],"1f539":["🔹",["small_blue_diamond"]],"1f53a":["🔺",["small_red_triangle"]],"1f53b":["🔻",["small_red_triangle_down"]],"1f53c":["🔼",["arrow_up_small"]],"1f53d":["🔽",["arrow_down_small"]],"1f550":["🕐",["clock1"]],"1f551":["🕑",["clock2"]],"1f552":["🕒",["clock3"]],"1f553":["🕓",["clock4"]],"1f554":["🕔",["clock5"]],"1f555":["🕕",["clock6"]],"1f556":["🕖",["clock7"]],"1f557":["🕗",["clock8"]],"1f558":["🕘",["clock9"]],"1f559":["🕙",["clock10"]],"1f55a":["🕚",["clock11"]],"1f55b":["🕛",["clock12"]],"1f55c":["🕜",["clock130"]],"1f55d":["🕝",["clock230"]],"1f55e":["🕞",["clock330"]],"1f55f":["🕟",["clock430"]],"1f560":["🕠",["clock530"]],"1f561":["🕡",["clock630"]],"1f562":["🕢",["clock730"]],"1f563":["🕣",["clock830"]],"1f564":["🕤",["clock930"]],"1f565":["🕥",["clock1030"]],"1f566":["🕦",["clock1130"]],"1f567":["🕧",["clock1230"]],"1f5fb":["🗻",["mount_fuji"]],"1f5fc":["🗼",["tokyo_tower"]],"1f5fd":["🗽",["statue_of_liberty"]],"1f5fe":["🗾",["japan"]],"1f5ff":["🗿",["moyai"]],"1f600":["😀",["grinning"]],"1f601":["😁",["grin"]],"1f602":["😂",["joy"]],"1f603":["😃",["smiley"],":)"],"1f604":["😄",["smile"],":)"],"1f605":["😅",["sweat_smile"]],"1f606":["😆",["laughing","satisfied"]],"1f607":["😇",["innocent"]],"1f608":["😈",["smiling_imp"]],"1f609":["😉",["wink"],";)"],"1f60a":["😊",["blush"]],"1f60b":["😋",["yum"]],"1f60c":["😌",["relieved"]],"1f60d":["😍",["heart_eyes"]],"1f60e":["😎",["sunglasses"]],"1f60f":["😏",["smirk"]],"1f610":["😐",["neutral_face"]],"1f611":["😑",["expressionless"]],"1f612":["😒",["unamused"]],"1f613":["😓",["sweat"]],"1f614":["😔",["pensive"]],"1f615":["😕",["confused"]],"1f616":["😖",["confounded"]],"1f617":["😗",["kissing"]],"1f618":["😘",["kissing_heart"]],"1f619":["😙",["kissing_smiling_eyes"]],"1f61a":["😚",["kissing_closed_eyes"]],"1f61b":["😛",["stuck_out_tongue"]],"1f61c":["😜",["stuck_out_tongue_winking_eye"],";p"],"1f61d":["😝",["stuck_out_tongue_closed_eyes"]],"1f61e":["😞",["disappointed"],":("],"1f61f":["😟",["worried"]],"1f620":["😠",["angry"]],"1f621":["😡",["rage"]],"1f622":["😢",["cry"],":'("],"1f623":["😣",["persevere"]],"1f624":["😤",["triumph"]],"1f625":["😥",["disappointed_relieved"]],"1f626":["😦",["frowning"]],"1f627":["😧",["anguished"]],"1f628":["😨",["fearful"]],"1f629":["😩",["weary"]],"1f62a":["😪",["sleepy"]],"1f62b":["😫",["tired_face"]],"1f62c":["😬",["grimacing"]],"1f62d":["😭",["sob"],":'("],"1f62e":["😮",["open_mouth"]],"1f62f":["😯",["hushed"]],"1f630":["😰",["cold_sweat"]],"1f631":["😱",["scream"]],"1f632":["😲",["astonished"]],"1f633":["😳",["flushed"]],"1f634":["😴",["sleeping"]],"1f635":["😵",["dizzy_face"]],"1f636":["😶",["no_mouth"]],"1f637":["😷",["mask"]],"1f638":["😸",["smile_cat"]],"1f639":["😹",["joy_cat"]],"1f63a":["😺",["smiley_cat"]],"1f63b":["😻",["heart_eyes_cat"]],"1f63c":["😼",["smirk_cat"]],"1f63d":["😽",["kissing_cat"]],"1f63e":["😾",["pouting_cat"]],"1f63f":["😿",["crying_cat_face"]],"1f640":["🙀",["scream_cat"]],"1f645":["🙅",["no_good"]],"1f646":["🙆",["ok_woman"]],"1f647":["🙇",["bow"]],"1f648":["🙈",["see_no_evil"]],"1f649":["🙉",["hear_no_evil"]],"1f64a":["🙊",["speak_no_evil"]],"1f64b":["🙋",["raising_hand"]],"1f64c":["🙌",["raised_hands"]],"1f64d":["🙍",["person_frowning"]],"1f64e":["🙎",["person_with_pouting_face"]],"1f64f":["🙏",["pray"]],"1f680":["🚀",["rocket"]],"1f681":["🚁",["helicopter"]],"1f682":["🚂",["steam_locomotive"]],"1f683":["🚃",["railway_car"]],"1f68b":["🚋",["train"]],"1f684":["🚄",["bullettrain_side"]],"1f685":["🚅",["bullettrain_front"]],"1f686":["🚆",["train2"]],"1f687":["🚇",["metro"]],"1f688":["🚈",["light_rail"]],"1f689":["🚉",["station"]],"1f68a":["🚊",["tram"]],"1f68c":["🚌",["bus"]],"1f68d":["🚍",["oncoming_bus"]],"1f68e":["🚎",["trolleybus"]],"1f68f":["🚏",["busstop"]],"1f690":["🚐",["minibus"]],"1f691":["🚑",["ambulance"]],"1f692":["🚒",["fire_engine"]],"1f693":["🚓",["police_car"]],"1f694":["🚔",["oncoming_police_car"]],"1f695":["🚕",["taxi"]],"1f696":["🚖",["oncoming_taxi"]],"1f697":["🚗",["car","red_car"]],"1f698":["🚘",["oncoming_automobile"]],"1f699":["🚙",["blue_car"]],"1f69a":["🚚",["truck"]],"1f69b":["🚛",["articulated_lorry"]],"1f69c":["🚜",["tractor"]],"1f69d":["🚝",["monorail"]],"1f69e":["🚞",["mountain_railway"]],"1f69f":["🚟",["suspension_railway"]],"1f6a0":["🚠",["mountain_cableway"]],"1f6a1":["🚡",["aerial_tramway"]],"1f6a2":["🚢",["ship"]],"1f6a3":["🚣",["rowboat"]],"1f6a4":["🚤",["speedboat"]],"1f6a5":["🚥",["traffic_light"]],"1f6a6":["🚦",["vertical_traffic_light"]],"1f6a7":["🚧",["construction"]],"1f6a8":["🚨",["rotating_light"]],"1f6a9":["🚩",["triangular_flag_on_post"]],"1f6aa":["🚪",["door"]],"1f6ab":["🚫",["no_entry_sign"]],"1f6ac":["🚬",["smoking"]],"1f6ad":["🚭",["no_smoking"]],"1f6ae":["🚮",["put_litter_in_its_place"]],"1f6af":["🚯",["do_not_litter"]],"1f6b0":["🚰",["potable_water"]],"1f6b1":["🚱",["non-potable_water"]],"1f6b2":["🚲",["bike"]],"1f6b3":["🚳",["no_bicycles"]],"1f6b4":["🚴",["bicyclist"]],"1f6b5":["🚵",["mountain_bicyclist"]],"1f6b6":["🚶",["walking"]],"1f6b7":["🚷",["no_pedestrians"]],"1f6b8":["🚸",["children_crossing"]],"1f6b9":["🚹",["mens"]],"1f6ba":["🚺",["womens"]],"1f6bb":["🚻",["restroom"]],"1f6bc":["🚼",["baby_symbol"]],"1f6bd":["🚽",["toilet"]],"1f6be":["🚾",["wc"]],"1f6bf":["🚿",["shower"]],"1f6c0":["🛀",["bath"]],"1f6c1":["🛁",["bathtub"]],"1f6c2":["🛂",["passport_control"]],"1f6c3":["🛃",["customs"]],"1f6c4":["🛄",["baggage_claim"]],"1f6c5":["🛅",["left_luggage"]],"0023":["#",["hash"]],"0030":["0",["zero"]],"0031":["1",["one"]],"0032":["2",["two"]],"0033":["3",["three"]],"0034":["4",["four"]],"0035":["5",["five"]],"0036":["6",["six"]],"0037":["7",["seven"]],"0038":["8",["eight"]],"0039":["9",["nine"]],"1f1e8-1f1f3":["🇨🇳",["cn"]],"1f1e9-1f1ea":["🇩🇪",["de"]],"1f1ea-1f1f8":["🇪🇸",["es"]],"1f1eb-1f1f7":["🇫🇷",["fr"]],"1f1ec-1f1e7":["🇬🇧",["gb","uk"]],"1f1ee-1f1f9":["🇮🇹",["it"]],"1f1ef-1f1f5":["🇯🇵",["jp"]],"1f1f0-1f1f7":["🇰🇷",["kr"]],"1f1f7-1f1fa":["🇷🇺",["ru"]],"1f1fa-1f1f8":["🇺🇸",["us"]]},Config.EmojiCategories=[["1f604","1f603","1f600","1f60a","263a","1f609","1f60d","1f618","1f61a","1f617","1f619","1f61c","1f61d","1f61b","1f633","1f601","1f614","1f60c","1f612","1f61e","1f623","1f622","1f602","1f62d","1f62a","1f625","1f630","1f605","1f613","1f629","1f62b","1f628","1f631","1f620","1f621","1f624","1f616","1f606","1f60b","1f637","1f60e","1f634","1f635","1f632","1f61f","1f626","1f627","1f608","1f47f","1f62e","1f62c","1f610","1f615","1f62f","1f636","1f607","1f60f","1f611","1f472","1f473","1f46e","1f477","1f482","1f476","1f466","1f467","1f468","1f469","1f474","1f475","1f471","1f47c","1f478","1f63a","1f638","1f63b","1f63d","1f63c","1f640","1f63f","1f639","1f63e","1f479","1f47a","1f648","1f649","1f64a","1f480","1f47d","1f4a9","1f525","2728","1f31f","1f4ab","1f4a5","1f4a2","1f4a6","1f4a7","1f4a4","1f4a8","1f442","1f440","1f443","1f445","1f444","1f44d","1f44e","1f44c","1f44a","270a","270c","1f44b","270b","1f450","1f446","1f447","1f449","1f448","1f64c","1f64f","261d","1f44f","1f4aa","1f6b6","1f3c3","1f483","1f46b","1f46a","1f46c","1f46d","1f48f","1f491","1f46f","1f646","1f645","1f481","1f64b","1f486","1f487","1f485","1f470","1f64e","1f64d","1f647","1f3a9","1f451","1f452","1f45f","1f45e","1f461","1f460","1f462","1f455","1f454","1f45a","1f457","1f3bd","1f456","1f458","1f459","1f4bc","1f45c","1f45d","1f45b","1f453","1f380","1f302","1f484","1f49b","1f499","1f49c","1f49a","2764","1f494","1f497","1f493","1f495","1f496","1f49e","1f498","1f48c","1f48b","1f48d","1f48e","1f464","1f465","1f4ac","1f463","1f4ad"],["1f436","1f43a","1f431","1f42d","1f439","1f430","1f438","1f42f","1f428","1f43b","1f437","1f43d","1f42e","1f417","1f435","1f412","1f434","1f411","1f418","1f43c","1f427","1f426","1f424","1f425","1f423","1f414","1f40d","1f422","1f41b","1f41d","1f41c","1f41e","1f40c","1f419","1f41a","1f420","1f41f","1f42c","1f433","1f40b","1f404","1f40f","1f400","1f403","1f405","1f407","1f409","1f40e","1f410","1f413","1f415","1f416","1f401","1f402","1f432","1f421","1f40a","1f42b","1f42a","1f406","1f408","1f429","1f43e","1f490","1f338","1f337","1f340","1f339","1f33b","1f33a","1f341","1f343","1f342","1f33f","1f33e","1f344","1f335","1f334","1f332","1f333","1f330","1f331","1f33c","1f310","1f31e","1f31d","1f31a","1f311","1f312","1f313","1f314","1f315","1f316","1f317","1f318","1f31c","1f31b","1f319","1f30d","1f30e","1f30f","1f30b","1f30c","1f320","2b50","2600","26c5","2601","26a1","2614","2744","26c4","1f300","1f301","1f308","1f30a"],["1f38d","1f49d","1f38e","1f392","1f393","1f38f","1f386","1f387","1f390","1f391","1f383","1f47b","1f385","1f384","1f381","1f38b","1f389","1f38a","1f388","1f38c","1f52e","1f3a5","1f4f7","1f4f9","1f4fc","1f4bf","1f4c0","1f4bd","1f4be","1f4bb","1f4f1","260e","1f4de","1f4df","1f4e0","1f4e1","1f4fa","1f4fb","1f50a","1f509","1f508","1f507","1f514","1f515","1f4e3","1f4e2","23f3","231b","23f0","231a","1f513","1f512","1f50f","1f510","1f511","1f50e","1f4a1","1f526","1f506","1f505","1f50c","1f50b","1f50d","1f6c0","1f6c1","1f6bf","1f6bd","1f527","1f529","1f528","1f6aa","1f6ac","1f4a3","1f52b","1f52a","1f48a","1f489","1f4b0","1f4b4","1f4b5","1f4b7","1f4b6","1f4b3","1f4b8","1f4f2","1f4e7","1f4e5","1f4e4","2709","1f4e9","1f4e8","1f4ef","1f4eb","1f4ea","1f4ec","1f4ed","1f4ee","1f4e6","1f4dd","1f4c4","1f4c3","1f4d1","1f4ca","1f4c8","1f4c9","1f4dc","1f4cb","1f4c5","1f4c6","1f4c7","1f4c1","1f4c2","2702","1f4cc","1f4ce","2712","270f","1f4cf","1f4d0","1f4d5","1f4d7","1f4d8","1f4d9","1f4d3","1f4d4","1f4d2","1f4da","1f4d6","1f516","1f4db","1f52c","1f52d","1f4f0","1f3a8","1f3ac","1f3a4","1f3a7","1f3bc","1f3b5","1f3b6","1f3b9","1f3bb","1f3ba","1f3b7","1f3b8","1f47e","1f3ae","1f0cf","1f3b4","1f004","1f3b2","1f3af","1f3c8","1f3c0","26bd","26be","1f3be","1f3b1","1f3c9","1f3b3","26f3","1f6b5","1f6b4","1f3c1","1f3c7","1f3c6","1f3bf","1f3c2","1f3ca","1f3c4","1f3a3","2615","1f375","1f376","1f37c","1f37a","1f37b","1f378","1f379","1f377","1f374","1f355","1f354","1f35f","1f357","1f356","1f35d","1f35b","1f364","1f371","1f363","1f365","1f359","1f358","1f35a","1f35c","1f372","1f362","1f361","1f373","1f35e","1f369","1f36e","1f366","1f368","1f367","1f382","1f370","1f36a","1f36b","1f36c","1f36d","1f36f","1f34e","1f34f","1f34a","1f34b","1f352","1f347","1f349","1f353","1f351","1f348","1f34c","1f350","1f34d","1f360","1f346","1f345","1f33d"],["1f3e0","1f3e1","1f3eb","1f3e2","1f3e3","1f3e5","1f3e6","1f3ea","1f3e9","1f3e8","1f492","26ea","1f3ec","1f3e4","1f307","1f306","1f3ef","1f3f0","26fa","1f3ed","1f5fc","1f5fe","1f5fb","1f304","1f305","1f303","1f5fd","1f309","1f3a0","1f3a1","26f2","1f3a2","1f6a2","26f5","1f6a4","1f6a3","2693","1f680","2708","1f4ba","1f681","1f682","1f68a","1f689","1f69e","1f686","1f684","1f685","1f688","1f687","1f69d","1f683","1f68b","1f68e","1f68c","1f68d","1f699","1f698","1f697","1f695","1f696","1f69b","1f69a","1f6a8","1f693","1f694","1f692","1f691","1f690","1f6b2","1f6a1","1f69f","1f6a0","1f69c","1f488","1f68f","1f3ab","1f6a6","1f6a5","26a0","1f6a7","1f530","26fd","1f3ee","1f3b0","2668","1f5ff","1f3aa","1f3ad","1f4cd","1f6a9","1f1ef-1f1f5","1f1f0-1f1f7","1f1e9-1f1ea","1f1e8-1f1f3","1f1fa-1f1f8","1f1eb-1f1f7","1f1ea-1f1f8","1f1ee-1f1f9","1f1f7-1f1fa","1f1ec-1f1e7"],["0031","0032","0033","0034","0035","0036","0037","0038","0039","0030","1f51f","1f522","0023","1f523","2b06","2b07","2b05","27a1","1f520","1f521","1f524","2197","2196","2198","2199","2194","2195","1f504","25c0","25b6","1f53c","1f53d","21a9","21aa","2139","23ea","23e9","23eb","23ec","2935","2934","1f197","1f500","1f501","1f502","1f195","1f199","1f192","1f193","1f196","1f4f6","1f3a6","1f201","1f22f","1f233","1f235","1f234","1f232","1f250","1f239","1f23a","1f236","1f21a","1f6bb","1f6b9","1f6ba","1f6bc","1f6be","1f6b0","1f6ae","1f17f","267f","1f6ad","1f237","1f238","1f202","24c2","1f6c2","1f6c4","1f6c5","1f6c3","1f251","3299","3297","1f191","1f198","1f194","1f6ab","1f51e","1f4f5","1f6af","1f6b1","1f6b3","1f6b7","1f6b8","26d4","2733","2747","274e","2705","2734","1f49f","1f19a","1f4f3","1f4f4","1f170","1f171","1f18e","1f17e","1f4a0","27bf","267b","2648","2649","264a","264b","264c","264d","264e","264f","2650","2651","2652","2653","26ce","1f52f","1f3e7","1f4b9","1f4b2","1f4b1","00a9","00ae","2122","274c","203c","2049","2757","2753","2755","2754","2b55","1f51d","1f51a","1f519","1f51b","1f51c","1f503","1f55b","1f567","1f550","1f55c","1f551","1f55d","1f552","1f55e","1f553","1f55f","1f554","1f560","1f555","1f556","1f557","1f558","1f559","1f55a","1f561","1f562","1f563","1f564","1f565","1f566","2716","2795","2796","2797","2660","2665","2663","2666","1f4ae","1f4af","2714","2611","1f518","1f517","27b0","3030","303d","1f531","25fc","25fb","25fe","25fd","25aa","25ab","1f53a","1f532","1f533","26ab","26aa","1f534","1f535","1f53b","2b1c","2b1b","1f536","1f537","1f538","1f539"]],Config.EmojiCategorySpritesheetDimens=[[7,27],[4,29],[7,33],[3,34],[7,34]],Config.LatinizeMap={"Á":"A","Ă":"A","Ắ":"A","Ặ":"A","Ằ":"A","Ẳ":"A","Ẵ":"A","Ǎ":"A","Â":"A","Ấ":"A","Ậ":"A","Ầ":"A","Ẩ":"A","Ẫ":"A","Ä":"A","Ǟ":"A","Ȧ":"A","Ǡ":"A","Ạ":"A","Ȁ":"A","À":"A","Ả":"A","Ȃ":"A","Ā":"A","Ą":"A","Å":"A","Ǻ":"A","Ḁ":"A","Ⱥ":"A","Ã":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ḃ":"B","Ḅ":"B","Ɓ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ć":"C","Č":"C","Ç":"C","Ḉ":"C","Ĉ":"C","Ċ":"C","Ƈ":"C","Ȼ":"C","Ď":"D","Ḑ":"D","Ḓ":"D","Ḋ":"D","Ḍ":"D","Ɗ":"D","Ḏ":"D","Dz":"D","Dž":"D","Đ":"D","Ƌ":"D","DZ":"DZ","DŽ":"DZ","É":"E","Ĕ":"E","Ě":"E","Ȩ":"E","Ḝ":"E","Ê":"E","Ế":"E","Ệ":"E","Ề":"E","Ể":"E","Ễ":"E","Ḙ":"E","Ë":"E","Ė":"E","Ẹ":"E","Ȅ":"E","È":"E","Ẻ":"E","Ȇ":"E","Ē":"E","Ḗ":"E","Ḕ":"E","Ę":"E","Ɇ":"E","Ẽ":"E","Ḛ":"E","Ꝫ":"ET","Ḟ":"F","Ƒ":"F","Ǵ":"G","Ğ":"G","Ǧ":"G","Ģ":"G","Ĝ":"G","Ġ":"G","Ɠ":"G","Ḡ":"G","Ǥ":"G","Ḫ":"H","Ȟ":"H","Ḩ":"H","Ĥ":"H","Ⱨ":"H","Ḧ":"H","Ḣ":"H","Ḥ":"H","Ħ":"H","Í":"I","Ĭ":"I","Ǐ":"I","Î":"I","Ï":"I","Ḯ":"I","İ":"I","Ị":"I","Ȉ":"I","Ì":"I","Ỉ":"I","Ȋ":"I","Ī":"I","Į":"I","Ɨ":"I","Ĩ":"I","Ḭ":"I","Ꝺ":"D","Ꝼ":"F","Ᵹ":"G","Ꞃ":"R","Ꞅ":"S","Ꞇ":"T","Ꝭ":"IS","Ĵ":"J","Ɉ":"J","Ḱ":"K","Ǩ":"K","Ķ":"K","Ⱪ":"K","Ꝃ":"K","Ḳ":"K","Ƙ":"K","Ḵ":"K","Ꝁ":"K","Ꝅ":"K","Ĺ":"L","Ƚ":"L","Ľ":"L","Ļ":"L","Ḽ":"L","Ḷ":"L","Ḹ":"L","Ⱡ":"L","Ꝉ":"L","Ḻ":"L","Ŀ":"L","Ɫ":"L","Lj":"L","Ł":"L","LJ":"LJ","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ń":"N","Ň":"N","Ņ":"N","Ṋ":"N","Ṅ":"N","Ṇ":"N","Ǹ":"N","Ɲ":"N","Ṉ":"N","Ƞ":"N","Nj":"N","Ñ":"N","NJ":"NJ","Ó":"O","Ŏ":"O","Ǒ":"O","Ô":"O","Ố":"O","Ộ":"O","Ồ":"O","Ổ":"O","Ỗ":"O","Ö":"O","Ȫ":"O","Ȯ":"O","Ȱ":"O","Ọ":"O","Ő":"O","Ȍ":"O","Ò":"O","Ỏ":"O","Ơ":"O","Ớ":"O","Ợ":"O","Ờ":"O","Ở":"O","Ỡ":"O","Ȏ":"O","Ꝋ":"O","Ꝍ":"O","Ō":"O","Ṓ":"O","Ṑ":"O","Ɵ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Õ":"O","Ṍ":"O","Ṏ":"O","Ȭ":"O","Ƣ":"OI","Ꝏ":"OO","Ɛ":"E","Ɔ":"O","Ȣ":"OU","Ṕ":"P","Ṗ":"P","Ꝓ":"P","Ƥ":"P","Ꝕ":"P","Ᵽ":"P","Ꝑ":"P","Ꝙ":"Q","Ꝗ":"Q","Ŕ":"R","Ř":"R","Ŗ":"R","Ṙ":"R","Ṛ":"R","Ṝ":"R","Ȑ":"R","Ȓ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꜿ":"C","Ǝ":"E","Ś":"S","Ṥ":"S","Š":"S","Ṧ":"S","Ş":"S","Ŝ":"S","Ș":"S","Ṡ":"S","Ṣ":"S","Ṩ":"S","ẞ":"SS","Ť":"T","Ţ":"T","Ṱ":"T","Ț":"T","Ⱦ":"T","Ṫ":"T","Ṭ":"T","Ƭ":"T","Ṯ":"T","Ʈ":"T","Ŧ":"T","Ɐ":"A","Ꞁ":"L","Ɯ":"M","Ʌ":"V","Ꜩ":"TZ","Ú":"U","Ŭ":"U","Ǔ":"U","Û":"U","Ṷ":"U","Ü":"U","Ǘ":"U","Ǚ":"U","Ǜ":"U","Ǖ":"U","Ṳ":"U","Ụ":"U","Ű":"U","Ȕ":"U","Ù":"U","Ủ":"U","Ư":"U","Ứ":"U","Ự":"U","Ừ":"U","Ử":"U","Ữ":"U","Ȗ":"U","Ū":"U","Ṻ":"U","Ų":"U","Ů":"U","Ũ":"U","Ṹ":"U","Ṵ":"U","Ꝟ":"V","Ṿ":"V","Ʋ":"V","Ṽ":"V","Ꝡ":"VY","Ẃ":"W","Ŵ":"W","Ẅ":"W","Ẇ":"W","Ẉ":"W","Ẁ":"W","Ⱳ":"W","Ẍ":"X","Ẋ":"X","Ý":"Y","Ŷ":"Y","Ÿ":"Y","Ẏ":"Y","Ỵ":"Y","Ỳ":"Y","Ƴ":"Y","Ỷ":"Y","Ỿ":"Y","Ȳ":"Y","Ɏ":"Y","Ỹ":"Y","Ź":"Z","Ž":"Z","Ẑ":"Z","Ⱬ":"Z","Ż":"Z","Ẓ":"Z","Ȥ":"Z","Ẕ":"Z","Ƶ":"Z","IJ":"IJ","Œ":"OE","ᴀ":"A","ᴁ":"AE","ʙ":"B","ᴃ":"B","ᴄ":"C","ᴅ":"D","ᴇ":"E","ꜰ":"F","ɢ":"G","ʛ":"G","ʜ":"H","ɪ":"I","ʁ":"R","ᴊ":"J","ᴋ":"K","ʟ":"L","ᴌ":"L","ᴍ":"M","ɴ":"N","ᴏ":"O","ɶ":"OE","ᴐ":"O","ᴕ":"OU","ᴘ":"P","ʀ":"R","ᴎ":"N","ᴙ":"R","ꜱ":"S","ᴛ":"T","ⱻ":"E","ᴚ":"R","ᴜ":"U","ᴠ":"V","ᴡ":"W","ʏ":"Y","ᴢ":"Z","á":"a","ă":"a","ắ":"a","ặ":"a","ằ":"a","ẳ":"a","ẵ":"a","ǎ":"a","â":"a","ấ":"a","ậ":"a","ầ":"a","ẩ":"a","ẫ":"a","ä":"a","ǟ":"a","ȧ":"a","ǡ":"a","ạ":"a","ȁ":"a","à":"a","ả":"a","ȃ":"a","ā":"a","ą":"a","ᶏ":"a","ẚ":"a","å":"a","ǻ":"a","ḁ":"a","ⱥ":"a","ã":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ḃ":"b","ḅ":"b","ɓ":"b","ḇ":"b","ᵬ":"b","ᶀ":"b","ƀ":"b","ƃ":"b","ɵ":"o","ć":"c","č":"c","ç":"c","ḉ":"c","ĉ":"c","ɕ":"c","ċ":"c","ƈ":"c","ȼ":"c","ď":"d","ḑ":"d","ḓ":"d","ȡ":"d","ḋ":"d","ḍ":"d","ɗ":"d","ᶑ":"d","ḏ":"d","ᵭ":"d","ᶁ":"d","đ":"d","ɖ":"d","ƌ":"d","ı":"i","ȷ":"j","ɟ":"j","ʄ":"j","dz":"dz","dž":"dz","é":"e","ĕ":"e","ě":"e","ȩ":"e","ḝ":"e","ê":"e","ế":"e","ệ":"e","ề":"e","ể":"e","ễ":"e","ḙ":"e","ë":"e","ė":"e","ẹ":"e","ȅ":"e","è":"e","ẻ":"e","ȇ":"e","ē":"e","ḗ":"e","ḕ":"e","ⱸ":"e","ę":"e","ᶒ":"e","ɇ":"e","ẽ":"e","ḛ":"e","ꝫ":"et","ḟ":"f","ƒ":"f","ᵮ":"f","ᶂ":"f","ǵ":"g","ğ":"g","ǧ":"g","ģ":"g","ĝ":"g","ġ":"g","ɠ":"g","ḡ":"g","ᶃ":"g","ǥ":"g","ḫ":"h","ȟ":"h","ḩ":"h","ĥ":"h","ⱨ":"h","ḧ":"h","ḣ":"h","ḥ":"h","ɦ":"h","ẖ":"h","ħ":"h","ƕ":"hv","í":"i","ĭ":"i","ǐ":"i","î":"i","ï":"i","ḯ":"i","ị":"i","ȉ":"i","ì":"i","ỉ":"i","ȋ":"i","ī":"i","į":"i","ᶖ":"i","ɨ":"i","ĩ":"i","ḭ":"i","ꝺ":"d","ꝼ":"f","ᵹ":"g","ꞃ":"r","ꞅ":"s","ꞇ":"t","ꝭ":"is","ǰ":"j","ĵ":"j","ʝ":"j","ɉ":"j","ḱ":"k","ǩ":"k","ķ":"k","ⱪ":"k","ꝃ":"k","ḳ":"k","ƙ":"k","ḵ":"k","ᶄ":"k","ꝁ":"k","ꝅ":"k","ĺ":"l","ƚ":"l","ɬ":"l","ľ":"l","ļ":"l","ḽ":"l","ȴ":"l","ḷ":"l","ḹ":"l","ⱡ":"l","ꝉ":"l","ḻ":"l","ŀ":"l","ɫ":"l","ᶅ":"l","ɭ":"l","ł":"l","lj":"lj","ſ":"s","ẜ":"s","ẛ":"s","ẝ":"s","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ᵯ":"m","ᶆ":"m","ń":"n","ň":"n","ņ":"n","ṋ":"n","ȵ":"n","ṅ":"n","ṇ":"n","ǹ":"n","ɲ":"n","ṉ":"n","ƞ":"n","ᵰ":"n","ᶇ":"n","ɳ":"n","ñ":"n","nj":"nj","ó":"o","ŏ":"o","ǒ":"o","ô":"o","ố":"o","ộ":"o","ồ":"o","ổ":"o","ỗ":"o","ö":"o","ȫ":"o","ȯ":"o","ȱ":"o","ọ":"o","ő":"o","ȍ":"o","ò":"o","ỏ":"o","ơ":"o","ớ":"o","ợ":"o","ờ":"o","ở":"o","ỡ":"o","ȏ":"o","ꝋ":"o","ꝍ":"o","ⱺ":"o","ō":"o","ṓ":"o","ṑ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","õ":"o","ṍ":"o","ṏ":"o","ȭ":"o","ƣ":"oi","ꝏ":"oo","ɛ":"e","ᶓ":"e","ɔ":"o","ᶗ":"o","ȣ":"ou","ṕ":"p","ṗ":"p","ꝓ":"p","ƥ":"p","ᵱ":"p","ᶈ":"p","ꝕ":"p","ᵽ":"p","ꝑ":"p","ꝙ":"q","ʠ":"q","ɋ":"q","ꝗ":"q","ŕ":"r","ř":"r","ŗ":"r","ṙ":"r","ṛ":"r","ṝ":"r","ȑ":"r","ɾ":"r","ᵳ":"r","ȓ":"r","ṟ":"r","ɼ":"r","ᵲ":"r","ᶉ":"r","ɍ":"r","ɽ":"r","ↄ":"c","ꜿ":"c","ɘ":"e","ɿ":"r","ś":"s","ṥ":"s","š":"s","ṧ":"s","ş":"s","ŝ":"s","ș":"s","ṡ":"s","ṣ":"s","ṩ":"s","ʂ":"s","ᵴ":"s","ᶊ":"s","ȿ":"s","ɡ":"g","ß":"ss","ᴑ":"o","ᴓ":"o","ᴝ":"u","ť":"t","ţ":"t","ṱ":"t","ț":"t","ȶ":"t","ẗ":"t","ⱦ":"t","ṫ":"t","ṭ":"t","ƭ":"t","ṯ":"t","ᵵ":"t","ƫ":"t","ʈ":"t","ŧ":"t","ᵺ":"th","ɐ":"a","ᴂ":"ae","ǝ":"e","ᵷ":"g","ɥ":"h","ʮ":"h","ʯ":"h","ᴉ":"i","ʞ":"k","ꞁ":"l","ɯ":"m","ɰ":"m","ᴔ":"oe","ɹ":"r","ɻ":"r","ɺ":"r","ⱹ":"r","ʇ":"t","ʌ":"v","ʍ":"w","ʎ":"y","ꜩ":"tz","ú":"u","ŭ":"u","ǔ":"u","û":"u","ṷ":"u","ü":"u","ǘ":"u","ǚ":"u","ǜ":"u","ǖ":"u","ṳ":"u","ụ":"u","ű":"u","ȕ":"u","ù":"u","ủ":"u","ư":"u","ứ":"u","ự":"u","ừ":"u","ử":"u","ữ":"u","ȗ":"u","ū":"u","ṻ":"u","ų":"u","ᶙ":"u","ů":"u","ũ":"u","ṹ":"u","ṵ":"u","ᵫ":"ue","ꝸ":"um","ⱴ":"v","ꝟ":"v","ṿ":"v","ʋ":"v","ᶌ":"v","ⱱ":"v","ṽ":"v","ꝡ":"vy","ẃ":"w","ŵ":"w","ẅ":"w","ẇ":"w","ẉ":"w","ẁ":"w","ⱳ":"w","ẘ":"w","ẍ":"x","ẋ":"x","ᶍ":"x","ý":"y","ŷ":"y","ÿ":"y","ẏ":"y","ỵ":"y","ỳ":"y","ƴ":"y","ỷ":"y","ỿ":"y","ȳ":"y","ẙ":"y","ɏ":"y","ỹ":"y","ź":"z","ž":"z","ẑ":"z","ʑ":"z","ⱬ":"z","ż":"z","ẓ":"z","ȥ":"z","ẕ":"z","ᵶ":"z","ᶎ":"z","ʐ":"z","ƶ":"z","ɀ":"z","ff":"ff","ffi":"ffi","ffl":"ffl","fi":"fi","fl":"fl","ij":"ij","œ":"oe","st":"st","ₐ":"a","ₑ":"e","ᵢ":"i","ⱼ":"j","ₒ":"o","ᵣ":"r","ᵤ":"u","ᵥ":"v","ₓ":"x","Ё":"YO","Й":"I","Ц":"TS","У":"U","К":"K","Е":"E","Н":"N","Г":"G","Ш":"SH","Щ":"SCH","З":"Z","Х":"H","Ъ":"","ё":"yo","й":"i","ц":"ts","у":"u","к":"k","е":"e","н":"n","г":"g","ш":"sh","щ":"sch","з":"z","х":"h","ъ":"","Ф":"F","Ы":"I","В":"V","А":"A","П":"P","Р":"R","О":"O","Л":"L","Д":"D","Ж":"ZH","Э":"E","ф":"f","ы":"i","в":"v","а":"a","п":"p","р":"r","о":"o","л":"l","д":"d","ж":"zh","э":"e","Я":"Ya","Ч":"CH","С":"S","М":"M","И":"I","Т":"T","Ь":"","Б":"B","Ю":"YU","я":"ya","ч":"ch","с":"s","м":"m","и":"i","т":"t","ь":"","б":"b","ю":"yu"},Config.CountryCodes=[["AB","country_select_modal_country_ab","+7 840","+7 940","+995 44"],["AF","country_select_modal_country_af","+93"],["AX","country_select_modal_country_ax","+358 18"],["AL","country_select_modal_country_al","+355"],["DZ","country_select_modal_country_dz","+213"],["AS","country_select_modal_country_as","+1 684"],["AD","country_select_modal_country_ad","+376"],["AO","country_select_modal_country_ao","+244"],["AI","country_select_modal_country_ai","+1 264"],["AG","country_select_modal_country_ag","+1 268"],["AR","country_select_modal_country_ar","+54"],["AM","country_select_modal_country_am","+374"],["AW","country_select_modal_country_aw","+297"],["SH","country_select_modal_country_sh_ac","+247"],["AU","country_select_modal_country_au","+61"],["AU","country_select_modal_country_au_et","+672"],["AT","country_select_modal_country_at","+43"],["AZ","country_select_modal_country_az","+994"],["BS","country_select_modal_country_bs","+1 242"],["BH","country_select_modal_country_bh","+973"],["BD","country_select_modal_country_bd","+880"],["BB","country_select_modal_country_bb","+1 246"],["AG","country_select_modal_country_ag_bar","+1 268"],["BY","country_select_modal_country_by","+375"],["BE","country_select_modal_country_be","+32"],["BZ","country_select_modal_country_bz","+501"],["BJ","country_select_modal_country_bj","+229"],["BM","country_select_modal_country_bm","+1 441"],["BT","country_select_modal_country_bt","+975"],["BO","country_select_modal_country_bo","+591"],["BQ","country_select_modal_country_bq","+599 7"],["BA","country_select_modal_country_ba","+387"],["BW","country_select_modal_country_bw","+267"],["BR","country_select_modal_country_br","+55"],["IO","country_select_modal_country_io","+246"],["VG","country_select_modal_country_vg","+1 284"],["BN","country_select_modal_country_bn","+673"],["BG","country_select_modal_country_bg","+359"],["BF","country_select_modal_country_bf","+226"],["MY","country_select_modal_country_mm","+95"],["BI","country_select_modal_country_bi","+257"],["KH","country_select_modal_country_kh","+855"],["CM","country_select_modal_country_cm","+237"],["CA","country_select_modal_country_ca","+1"],["CV","country_select_modal_country_cv","+238"],["KY","country_select_modal_country_ky","+1 345"],["CF","country_select_modal_country_cf","+236"],["TD","country_select_modal_country_td","+235"],["CL","country_select_modal_country_cl","+56"],["CN","country_select_modal_country_cn","+86"],["CX","country_select_modal_country_cx","+61"],["CC","country_select_modal_country_cc","+61"],["CO","country_select_modal_country_co","+57"],["KM","country_select_modal_country_km","+269"],["CG","country_select_modal_country_cg","+242"],["CD","country_select_modal_country_cd","+243"],["CK","country_select_modal_country_ck","+682"],["CR","country_select_modal_country_cr","+506"],["CI","country_select_modal_country_ci","+225"],["HR","country_select_modal_country_hr","+385"],["CU","country_select_modal_country_cu","+53"],["CW","country_select_modal_country_cw","+599 9"],["CY","country_select_modal_country_cy","+357"],["CZ","country_select_modal_country_cz","+420"],["DK","country_select_modal_country_dk","+45"],["DG","country_select_modal_country_dg","+246"],["DJ","country_select_modal_country_dj","+253"],["DM","country_select_modal_country_dm","+1 767"],["DO","country_select_modal_country_do","+1 809","+1 829","+1 849"],["TL","country_select_modal_country_tl","+670"],["EC","country_select_modal_country_ec","+593"],["EG","country_select_modal_country_eg","+20"],["SV","country_select_modal_country_sv","+503"],["GQ","country_select_modal_country_gq","+240"],["ER","country_select_modal_country_er","+291"],["EE","country_select_modal_country_ee","+372"],["ET","country_select_modal_country_et","+251"],["FK","country_select_modal_country_fk","+500"],["FO","country_select_modal_country_fo","+298"],["FJ","country_select_modal_country_fj","+679"],["FI","country_select_modal_country_fi","+358"],["FR","country_select_modal_country_fr","+33"],["GF","country_select_modal_country_gf","+594"],["PF","country_select_modal_country_pf","+689"],["GA","country_select_modal_country_ga","+241"],["GM","country_select_modal_country_gm","+220"],["GE","country_select_modal_country_ge","+995"],["DE","country_select_modal_country_de","+49"],["GH","country_select_modal_country_gh","+233"],["GI","country_select_modal_country_gi","+350"],["GR","country_select_modal_country_gr","+30"],["GL","country_select_modal_country_gl","+299"],["GD","country_select_modal_country_gd","+1 473"],["GP","country_select_modal_country_gp","+590"],["GU","country_select_modal_country_gu","+1 671"],["GT","country_select_modal_country_gt","+502"],["GG","country_select_modal_country_gg","+44"],["GN","country_select_modal_country_gn","+224"],["GW","country_select_modal_country_gw","+245"],["GY","country_select_modal_country_gy","+592"],["HT","country_select_modal_country_ht","+509"],["HN","country_select_modal_country_hn","+504"],["HK","country_select_modal_country_hk","+852"],["HU","country_select_modal_country_hu","+36"],["IS","country_select_modal_country_is","+354"],["IN","country_select_modal_country_in","+91"],["ID","country_select_modal_country_id","+62"],["IR","country_select_modal_country_ir","+98"],["IQ","country_select_modal_country_iq","+964"],["IE","country_select_modal_country_ie","+353"],["IL","country_select_modal_country_il","+972"],["IT","country_select_modal_country_it","+39"],["JM","country_select_modal_country_jm","+1 876"],["SJ","country_select_modal_country_sj","+47 79"],["JP","country_select_modal_country_jp","+81"],["JE","country_select_modal_country_je","+44"],["JO","country_select_modal_country_jo","+962"],["KZ","country_select_modal_country_kz","+7 6","+7 7"],["KE","country_select_modal_country_ke","+254"],["KI","country_select_modal_country_ki","+686"],["KP","country_select_modal_country_kp","+850"],["KR","country_select_modal_country_kr","+82"],["KW","country_select_modal_country_kw","+965"],["KG","country_select_modal_country_kg","+996"],["LA","country_select_modal_country_la","+856"],["LV","country_select_modal_country_lv","+371"],["LB","country_select_modal_country_lb","+961"],["LS","country_select_modal_country_ls","+266"],["LR","country_select_modal_country_lr","+231"],["LY","country_select_modal_country_ly","+218"],["LI","country_select_modal_country_li","+423"],["LT","country_select_modal_country_lt","+370"],["LU","country_select_modal_country_lu","+352"],["MO","country_select_modal_country_mo","+853"],["MK","country_select_modal_country_mk","+389"],["MG","country_select_modal_country_mg","+261"],["MW","country_select_modal_country_mw","+265"],["MY","country_select_modal_country_my","+60"],["MV","country_select_modal_country_mv","+960"],["ML","country_select_modal_country_ml","+223"],["MT","country_select_modal_country_mt","+356"],["MH","country_select_modal_country_mh","+692"],["MQ","country_select_modal_country_mq","+596"],["MR","country_select_modal_country_mr","+222"],["MU","country_select_modal_country_mu","+230"],["YT","country_select_modal_country_yt","+262"],["MX","country_select_modal_country_mx","+52"],["FM","country_select_modal_country_fm","+691"],["MD","country_select_modal_country_md","+373"],["MC","country_select_modal_country_mc","+377"],["MN","country_select_modal_country_mn","+976"],["ME","country_select_modal_country_me","+382"],["MS","country_select_modal_country_ms","+1 664"],["MA","country_select_modal_country_ma","+212"],["MZ","country_select_modal_country_mz","+258"],["NA","country_select_modal_country_na","+264"],["NR","country_select_modal_country_nr","+674"],["NP","country_select_modal_country_np","+977"],["NL","country_select_modal_country_nl","+31"],["NC","country_select_modal_country_nc","+687"],["NZ","country_select_modal_country_nz","+64"],["NI","country_select_modal_country_ni","+505"],["NE","country_select_modal_country_ne","+227"],["NG","country_select_modal_country_ng","+234"],["NU","country_select_modal_country_nu","+683"],["NF","country_select_modal_country_nf","+672"],["MP","country_select_modal_country_mp","+1 670"],["NO","country_select_modal_country_no","+47"],["OM","country_select_modal_country_om","+968"],["PK","country_select_modal_country_pk","+92"],["PW","country_select_modal_country_pw","+680"],["PS","country_select_modal_country_ps","+970"],["PA","country_select_modal_country_pa","+507"],["PG","country_select_modal_country_pg","+675"],["PY","country_select_modal_country_py","+595"],["PE","country_select_modal_country_pe","+51"],["PH","country_select_modal_country_ph","+63"],["PN","country_select_modal_country_pn","+64"],["PL","country_select_modal_country_pl","+48"],["PT","country_select_modal_country_pt","+351"],["PR","country_select_modal_country_pr","+1 787","+1 939"],["QA","country_select_modal_country_qa","+974"],["RE","country_select_modal_country_re","+262"],["RO","country_select_modal_country_ro","+40"],["RU","country_select_modal_country_ru","+7"],["RW","country_select_modal_country_rw","+250"],["BL","country_select_modal_country_bl","+590"],["SH","country_select_modal_country_sh","+290"],["KN","country_select_modal_country_kn","+1 869"],["LC","country_select_modal_country_lc","+1 758"],["MF","country_select_modal_country_mf","+590"],["PM","country_select_modal_country_pm","+508"],["VC","country_select_modal_country_vc","+1 784"],["WS","country_select_modal_country_ws","+685"],["SM","country_select_modal_country_sm","+378"],["ST","country_select_modal_country_st","+239"],["SA","country_select_modal_country_sa","+966"],["SN","country_select_modal_country_sn","+221"],["RS","country_select_modal_country_rs","+381"],["SC","country_select_modal_country_sc","+248"],["SL","country_select_modal_country_sl","+232"],["SG","country_select_modal_country_sg","+65"],["BQ","country_select_modal_country_nl_bq3","+599 3"],["SX","country_select_modal_country_sx","+1 721"],["SK","country_select_modal_country_sk","+421"],["SI","country_select_modal_country_si","+386"],["SB","country_select_modal_country_sb","+677"],["SO","country_select_modal_country_so","+252"],["ZA","country_select_modal_country_za","+27"],["GS","country_select_modal_country_gs","+500"],[!1,"country_select_modal_country_ge_so","+995 34"],["SS","country_select_modal_country_ss","+211"],["ES","country_select_modal_country_es","+34"],["LK","country_select_modal_country_lk","+94"],["SD","country_select_modal_country_sd","+249"],["SR","country_select_modal_country_sr","+597"],["SJ","country_select_modal_country_sj_no","+47 79"],["SZ","country_select_modal_country_sz","+268"],["SE","country_select_modal_country_se","+46"],["CH","country_select_modal_country_ch","+41"],["SY","country_select_modal_country_sy","+963"],["TW","country_select_modal_country_tw","+886"],["TJ","country_select_modal_country_tj","+992"],["TZ","country_select_modal_country_tz","+255"],["TH","country_select_modal_country_th","+66"],["TG","country_select_modal_country_tg","+228"],["TK","country_select_modal_country_tk","+690"],["TO","country_select_modal_country_to","+676"],["TT","country_select_modal_country_tt","+1 868"],["TN","country_select_modal_country_tn","+216"],["TR","country_select_modal_country_tr","+90"],["TM","country_select_modal_country_tm","+993"],["TC","country_select_modal_country_tc","+1 649"],["TV","country_select_modal_country_tv","+688"],["UG","country_select_modal_country_ug","+256"],["UA","country_select_modal_country_ua","+380"],["AE","country_select_modal_country_ae","+971"],["UK","country_select_modal_country_uk","+44"],["US","country_select_modal_country_us","+1"],["UY","country_select_modal_country_uy","+598"],["VI","country_select_modal_country_vi","+1 340"],["UZ","country_select_modal_country_uz","+998"],["VU","country_select_modal_country_vu","+678"],["VE","country_select_modal_country_ve","+58"],["VA","country_select_modal_country_va","+39 06 698","+379"],["VN","country_select_modal_country_vn","+84"],["WF","country_select_modal_country_wf","+681"],["YE","country_select_modal_country_ye","+967"],["ZM","country_select_modal_country_zm","+260"],[!1,"country_select_modal_country_tz_uk","+255"],["ZW","country_select_modal_country_zw","+263"]],Config.LangCountries={es:"ES",ru:"RU",en:"US",de:"DE",it:"IT",nl:"NL",fr:"FR",ca:"ES","es-419":"MX",ar:"SA",he:"IL",tr:"TR",id:"ID",pl:"PL"},function(e){function t(e){r=e
}function n(){l=!0}function a(){return l?(l=!1,""):r}function i(){var e,t,n,i=Array.prototype.slice.call(arguments),o=i.pop(),s=[],r=1==i.length,l=!0,p=a();for(t=0;t<i.length;t++)if(n=i[t]=p+i[t],"xt_"!=n.substr(0,3)&&void 0!==c[n])s.push(c[n]);else if(u){try{e=localStorage.getItem(n)}catch(m){u=!1}try{e=void 0===e||null===e?!1:JSON.parse(e)}catch(m){e=!1}s.push(c[n]=e)}else d?l=!1:s.push(c[n]=!1);return l?o(r?s[0]:s):void chrome.storage.local.get(i,function(e){var a;for(s=[],t=0;t<i.length;t++)n=i[t],a=e[n],a=void 0===a||null===a?!1:JSON.parse(a),s.push(c[n]=a);o(r?s[0]:s)})}function o(e,t){var n,i,o={},s=a();for(n in e)if(e.hasOwnProperty(n))if(i=e[n],n=s+n,c[n]=i,i=JSON.stringify(i),u)try{localStorage.setItem(n,i)}catch(r){u=!1}else o[n]=i;return u||!d?void(t&&t()):void chrome.storage.local.set(o,t)}function s(){var e,t,n,i=Array.prototype.slice.call(arguments),o=a();for("function"==typeof i[i.length-1]&&(n=i.pop()),e=0;e<i.length;e++)if(t=i[e]=o+i[e],delete c[t],u)try{localStorage.removeItem(t)}catch(s){u=!1}d?chrome.storage.local.remove(i,n):n&&n()}var r="",l=!1,c={},d=!!(e.chrome&&chrome.storage&&chrome.storage.local),u=!d&&!!e.localStorage;e.ConfigStorage={prefix:t,noPrefix:n,get:i,set:o,remove:s}}(this),function(){try{window==window.top||window.chrome&&chrome.app&&chrome.app.window?document.documentElement.style.display="block":top.location=self.location}catch(e){console.error("CJ protection",e)}if(window.safeConfirm=function(e,t){"string"==typeof e&&(e={message:e});var n=!1;try{n=confirm(e.message)}catch(a){n=!0}setTimeout(function(){t(n)},10)},window.applicationCache&&!Config.Modes.packed&&window.addEventListener){var t=window.applicationCache,n=!1,a=!1,i=function(e){clearTimeout(a),a=setTimeout(function(){try{t.update()}catch(e){console.log("appCache.update: "+e)}},e||3e5)},o=function(){t.addEventListener("updateready",function(){t.status==t.UPDATEREADY&&(n||(safeConfirm({type:"WEBOGRAM_UPDATED_RELOAD",message:"A new version of Webogram is downloaded. Launch it?"},function(e){e?window.location.reload():n=!0}),i()))},!1),t.addEventListener("noupdate",function(){i()},!1),t.addEventListener("error",function(){i()},!1)};i(3e3),window.addEventListener("load",o)}}(),function(){var e=[Config.Navigator.osX?"osx":"non_osx",Config.Navigator.msie?"msie":"non_msie",Config.Navigator.retina?"is_2x":"is_1x"];Config.Modes.ios_standalone&&e.push("ios_standalone"),$(document.body).addClass(e.join(" ")),ConfigStorage.get("layout_selected","i18n_locale",function(e){var t=e[0],n=e[1],a="en-us",i={dom:!1,i18n_ng:!1,i18n_messages:!1,i18n_fallback:!1},o=function(){var e,t=!0;for(e in i)if(i.hasOwnProperty(e)&&i[e]===!1){t=!1;break}t&&(i.boot=!1,angular.bootstrap(document,["myApp"]))};switch(Config.Modes.force_mobile?t="mobile":Config.Modes.force_desktop&&(t="desktop"),t){case"mobile":Config.Mobile=!0;break;case"desktop":Config.Mobile=!1;break;default:var s=$(window).width();Config.Mobile=Config.Navigator.mobile||s>10&&480>s}$("head").append('<link rel="stylesheet" href="css/'+(Config.Mobile?"mobile.css":"desktop.css")+'" />'),n||(n=(navigator.language||"").toLowerCase(),n=Config.I18n.aliases[n]||n);for(var r=0;r<Config.I18n.supported.length;r++)if(Config.I18n.supported[r]==n){Config.I18n.locale=n;break}i.i18n_ng=Config.I18n.locale==a,$.getJSON("js/locales/"+Config.I18n.locale+".json").success(function(e){Config.I18n.messages=e,i.i18n_messages=!0,Config.I18n.locale==a&&(i.i18n_fallback=!0),o()}),Config.I18n.locale!=a&&$.getJSON("js/locales/"+a+".json").success(function(e){Config.I18n.fallback_messages=e,i.i18n_fallback=!0,o()}),$(document).ready(function(){i.dom=!0,i.i18n_ng?o():$("<script>").appendTo("body").on("load",function(){i.i18n_ng=!0,o()}).attr("src","vendor/angular/i18n/angular-locale_"+Config.I18n.locale+".js")})})}(),function(e,t,n){"use strict";var a,i,o,s,r,l,c,d,u,p,m,g,h,f,_,v,y,b,w,k,$,C,S,M,x,I,A,E,T,D,P;S={paneClass:"nano-pane",sliderClass:"nano-slider",contentClass:"nano-content",iOSNativeScrolling:!1,preventPageScrolling:!1,disableResize:!1,alwaysVisible:!1,flashDelay:1500,sliderMinHeight:20,sliderMaxHeight:null,documentContext:null,windowContext:null},b="scrollbar",y="scroll",u="mousedown",p="mouseenter",m="mousemove",h="mousewheel",g="mouseup",v="resize",r="drag",l="enter",k="up",_="panedown",o="DOMMouseScroll",s="down",$="wheel",c="keydown",d="keyup",w="touchmove",a="Microsoft Internet Explorer"===t.navigator.appName&&/msie 7./i.test(t.navigator.appVersion)&&t.ActiveXObject,i=null,A=t.requestAnimationFrame,C=t.cancelAnimationFrame,T=n.createElement("div").style,P=function(){var e,t,n,a,i,o;for(a=["t","webkitT","MozT","msT","OT"],e=i=0,o=a.length;o>i;e=++i)if(n=a[e],t=a[e]+"ransform",t in T)return a[e].substr(0,a[e].length-1);return!1}(),D=function(e){return P===!1?!1:""===P?e:P+e.charAt(0).toUpperCase()+e.substr(1)},E=D("transform"),x=E!==!1,M=function(){var e,t,a;return e=n.createElement("div"),t=e.style,t.position="absolute",t.width="100px",t.height="100px",t.overflow=y,t.top="-9999px",n.body.appendChild(e),a=e.offsetWidth-e.clientWidth,n.body.removeChild(e),a},I=function(){var e,n,a;return n=t.navigator.userAgent,(e=/(?=.+Mac OS X)(?=.+Firefox)/.test(n))?(a=/Firefox\/\d{2}\./.exec(n),a&&(a=a[0].replace(/\D+/g,"")),e&&+a>23):!1},f=function(){function c(a,o){this.el=a,this.options=o,i||(i=M()),this.$el=e(this.el),this.doc=e(this.options.documentContext||n),this.win=e(this.options.windowContext||t),this.body=this.doc.find("body"),this.$content=this.$el.children("."+o.contentClass),this.$content.attr("tabindex",this.options.tabIndex||0),this.content=this.$content[0],this.previousPosition=0,this.options.iOSNativeScrolling&&(null!=this.el.style.WebkitOverflowScrolling||navigator.userAgent.match(/mobi.+Gecko/i))?this.nativeScrolling():this.generate(),this.createEvents(),this.addEvents(),this.reset()}return c.prototype.preventScrolling=function(e,t){if(this.isActive)if(e.type===o)(t===s&&e.originalEvent.detail>0||t===k&&e.originalEvent.detail<0)&&e.preventDefault();else if(e.type===h){if(!e.originalEvent||!e.originalEvent.wheelDelta)return;(t===s&&e.originalEvent.wheelDelta<0||t===k&&e.originalEvent.wheelDelta>0)&&e.preventDefault()}},c.prototype.nativeScrolling=function(){this.$content.css({WebkitOverflowScrolling:"touch"}),this.iOSNativeScrolling=!0,this.isActive=!0},c.prototype.updateScrollValues=function(){var e,t;e=this.content,this.maxScrollTop=e.scrollHeight-e.clientHeight,this.prevScrollTop=this.contentScrollTop||0,this.contentScrollTop=e.scrollTop,t=this.contentScrollTop>this.previousPosition?"down":this.contentScrollTop<this.previousPosition?"up":"same",this.previousPosition=this.contentScrollTop,"same"!==t&&this.$el.trigger("update",{position:this.contentScrollTop,maximum:this.maxScrollTop,direction:t}),this.iOSNativeScrolling||(this.maxSliderTop=this.paneHeight-this.sliderHeight,this.sliderTop=0===this.maxScrollTop?0:this.contentScrollTop*this.maxSliderTop/this.maxScrollTop)},c.prototype.setOnScrollStyles=function(){var e;x?(e={},e[E]="translate(0, "+this.sliderTop+"px)"):e={top:this.sliderTop},A?(C&&this.scrollRAF&&C(this.scrollRAF),this.scrollRAF=A(function(t){return function(){return t.scrollRAF=null,t.slider.css(e)}}(this))):this.slider.css(e)},c.prototype.createEvents=function(){this.events={down:function(e){return function(t){return e.isBeingDragged=!0,e.offsetY=t.pageY-e.slider.offset().top,e.slider.is(t.target)||(e.offsetY=0),e.pane.addClass("active"),e.doc.bind(m,e.events[r]).bind(g,e.events[k]),e.body.bind(p,e.events[l]),!1}}(this),drag:function(e){return function(t){return e.sliderY=t.pageY-e.$el.offset().top-e.paneTop-(e.offsetY||.5*e.sliderHeight),e.scroll(),e.contentScrollTop>=e.maxScrollTop&&e.prevScrollTop!==e.maxScrollTop?e.$el.trigger("scrollend"):0===e.contentScrollTop&&0!==e.prevScrollTop&&e.$el.trigger("scrolltop"),!1}}(this),up:function(e){return function(){return e.isBeingDragged=!1,e.pane.removeClass("active"),e.doc.unbind(m,e.events[r]).unbind(g,e.events[k]),e.body.unbind(p,e.events[l]),!1}}(this),resize:function(e){return function(){e.reset()}}(this),panedown:function(e){return function(t){return e.sliderY=(t.offsetY||t.originalEvent.layerY)-.5*e.sliderHeight,e.scroll(),e.events.down(t),!1}}(this),scroll:function(e){return function(t){e.updateScrollValues(),e.isBeingDragged||(e.iOSNativeScrolling||(e.sliderY=e.sliderTop,e.setOnScrollStyles()),null!=t&&(e.contentScrollTop>=e.maxScrollTop?(e.options.preventPageScrolling&&e.preventScrolling(t,s),e.prevScrollTop!==e.maxScrollTop&&e.$el.trigger("scrollend")):0===e.contentScrollTop&&(e.options.preventPageScrolling&&e.preventScrolling(t,k),0!==e.prevScrollTop&&e.$el.trigger("scrolltop"))))}}(this),wheel:function(e){return function(t){var n;if(null!=t)return n=t.delta||t.wheelDelta||t.originalEvent&&t.originalEvent.wheelDelta||-t.detail||t.originalEvent&&-t.originalEvent.detail,n&&(e.sliderY+=-n/3),e.scroll(),!1}}(this),enter:function(e){return function(t){var n;if(e.isBeingDragged)return 1!==(t.buttons||t.which)?(n=e.events)[k].apply(n,arguments):void 0}}(this)}},c.prototype.addEvents=function(){var e;this.removeEvents(),e=this.events,this.options.disableResize||this.win.bind(v,e[v]),this.iOSNativeScrolling||(this.slider.bind(u,e[s]),this.pane.bind(u,e[_]).bind(""+h+" "+o,e[$])),this.$content.bind(""+y+" "+h+" "+o+" "+w,e[y])},c.prototype.removeEvents=function(){var e;e=this.events,this.win.unbind(v,e[v]),this.iOSNativeScrolling||(this.slider.unbind(),this.pane.unbind()),this.$content.unbind(""+y+" "+h+" "+o+" "+w,e[y])},c.prototype.generate=function(){var e,n,a,o,s,r,l;return o=this.options,r=o.paneClass,l=o.sliderClass,e=o.contentClass,(s=this.$el.children("."+r)).length||s.children("."+l).length||this.$el.append('<div class="'+r+'"><div class="'+l+'" /></div>'),this.pane=this.$el.children("."+r),this.slider=this.pane.find("."+l),0===i&&I()?(a=t.getComputedStyle(this.content,null).getPropertyValue("padding-right").replace(/[^0-9.]+/g,""),n={right:-14,paddingRight:+a+14}):i&&(n={right:-i},this.$el.addClass("has-scrollbar")),null!=n&&this.$content.css(n),this},c.prototype.restore=function(){this.stopped=!1,this.iOSNativeScrolling||this.pane.show(),this.addEvents()},c.prototype.reset=function(){var e,t,n,o,s,r,l,c,d,u,p,m;return this.iOSNativeScrolling?void(this.contentHeight=this.content.scrollHeight):(this.$el.find("."+this.options.paneClass).length||this.generate().stop(),this.stopped&&this.restore(),e=this.content,o=e.style,s=o.overflowY,a&&this.$content.css({height:this.$content.height()}),t=e.scrollHeight+i,u=parseInt(this.$el.css("max-height"),10),u>0&&(this.$el.height(""),this.$el.height(e.scrollHeight>u?u:e.scrollHeight)),l=this.pane.outerHeight(!1),d=parseInt(this.pane.css("top"),10),r=parseInt(this.pane.css("bottom"),10),c=l+d+r,m=Math.round(c/t*c),m<this.options.sliderMinHeight?m=this.options.sliderMinHeight:null!=this.options.sliderMaxHeight&&m>this.options.sliderMaxHeight&&(m=this.options.sliderMaxHeight),s===y&&o.overflowX!==y&&(m+=i),this.maxSliderTop=c-m,this.contentHeight=t,this.paneHeight=l,this.paneOuterHeight=c,this.sliderHeight=m,this.paneTop=d,this.slider.height(m),this.events.scroll(),this.pane.show(),this.isActive=!0,e.scrollHeight===e.clientHeight||this.pane.outerHeight(!0)>=e.scrollHeight&&s!==y?(this.pane.hide(),this.isActive=!1):this.el.clientHeight===e.scrollHeight&&s===y?this.slider.hide():this.slider.show(),this.$el.toggleClass("active-scrollbar",this.isActive),this.pane.css({opacity:this.options.alwaysVisible?1:"",visibility:this.options.alwaysVisible?"visible":""}),n=this.$content.css("position"),("static"===n||"relative"===n)&&(p=parseInt(this.$content.css("right"),10),p&&this.$content.css({right:"",marginRight:p})),this)},c.prototype.scroll=function(){return this.isActive?(this.sliderY=Math.max(0,this.sliderY),this.sliderY=Math.min(this.maxSliderTop,this.sliderY),this.$content.scrollTop(this.maxScrollTop*this.sliderY/this.maxSliderTop),this.iOSNativeScrolling||(this.updateScrollValues(),this.setOnScrollStyles()),this):void 0},c.prototype.scrollBottom=function(e){return this.isActive?(this.$content.scrollTop(this.contentHeight-this.$content.height()-e).trigger(h),this.stop().restore(),this):void 0},c.prototype.scrollTop=function(e){return this.isActive?(this.$content.scrollTop(+e).trigger(h),this.stop().restore(),this):void 0},c.prototype.scrollTo=function(e){return this.isActive?(this.scrollTop(this.$el.find(e).get(0).offsetTop),this):void 0},c.prototype.stop=function(){return C&&this.scrollRAF&&(C(this.scrollRAF),this.scrollRAF=null),this.stopped=!0,this.removeEvents(),this.iOSNativeScrolling||this.pane.hide(),this},c.prototype.destroy=function(){return this.stopped||this.stop(),!this.iOSNativeScrolling&&this.pane.length&&this.pane.remove(),a&&this.$content.height(""),this.$content.removeAttr("tabindex"),this.$el.hasClass("has-scrollbar")&&(this.$el.removeClass("has-scrollbar"),this.$content.css({right:""})),this},c.prototype.flash=function(){return!this.iOSNativeScrolling&&this.isActive?(this.reset(),this.pane.addClass("flashed"),setTimeout(function(e){return function(){e.pane.removeClass("flashed")}}(this),this.options.flashDelay),this):void 0},c}(),e.fn.nanoScroller=function(t){return this.each(function(){var n,a;if((a=this.nanoscroller)||(n=e.extend({},S,t),this.nanoscroller=a=new f(this,n)),t&&"object"==typeof t){if(e.extend(a.options,t),null!=t.scrollBottom)return a.scrollBottom(t.scrollBottom);if(null!=t.scrollTop)return a.scrollTop(t.scrollTop);if(t.scrollTo)return a.scrollTo(t.scrollTo);if("bottom"===t.scroll)return a.scrollBottom(0);if("top"===t.scroll)return a.scrollTop(0);if(t.scroll&&t.scroll instanceof e)return a.scrollTo(t.scroll);if(t.stop)return a.stop();if(t.destroy)return a.destroy();if(t.flash)return a.flash()}return a.reset()})},e.fn.nanoScroller.Constructor=f}(jQuery,window,document),function(e,t,n){"use strict";function a(e,t){return t=t||Error,function(){var n,a,i=2,o=arguments,s=o[0],r="["+(e?e+":":"")+s+"] ",l=o[1];for(r+=l.replace(/\{\d+\}/g,function(e){var t=+e.slice(1,-1),n=t+i;return n<o.length?yt(o[n]):e}),r+="\nhttp://errors.angularjs.org/1.4.7/"+(e?e+"/":"")+s,a=i,n="?";a<o.length;a++,n="&")r+=n+"p"+(a-i)+"="+encodeURIComponent(yt(o[a]));return new t(r)}}function i(e){if(null==e||I(e))return!1;var t="length"in Object(e)&&e.length;return e.nodeType===Gi&&t?!0:$(e)||Oi(e)||0===t||"number"==typeof t&&t>0&&t-1 in e}function o(e,t,n){var a,s;if(e)if(M(e))for(a in e)"prototype"==a||"length"==a||"name"==a||e.hasOwnProperty&&!e.hasOwnProperty(a)||t.call(n,e[a],a,e);else if(Oi(e)||i(e)){var r="object"!=typeof e;for(a=0,s=e.length;s>a;a++)(r||a in e)&&t.call(n,e[a],a,e)}else if(e.forEach&&e.forEach!==o)e.forEach(t,n,e);else if(k(e))for(a in e)t.call(n,e[a],a,e);else if("function"==typeof e.hasOwnProperty)for(a in e)e.hasOwnProperty(a)&&t.call(n,e[a],a,e);else for(a in e)wi.call(e,a)&&t.call(n,e[a],a,e);return e}function s(e,t,n){for(var a=Object.keys(e).sort(),i=0;i<a.length;i++)t.call(n,e[a[i]],a[i]);return a}function r(e){return function(t,n){e(n,t)}}function l(){return++Ni}function c(e,t){t?e.$$hashKey=t:delete e.$$hashKey}function d(e,t,n){for(var a=e.$$hashKey,i=0,o=t.length;o>i;++i){var s=t[i];if(w(s)||M(s))for(var r=Object.keys(s),l=0,u=r.length;u>l;l++){var p=r[l],m=s[p];n&&w(m)?S(m)?e[p]=new Date(m.valueOf()):x(m)?e[p]=new RegExp(m):(w(e[p])||(e[p]=Oi(m)?[]:{}),d(e[p],[m],!0)):e[p]=m}}return c(e,a),e}function u(e){return d(e,Ai.call(arguments,1),!1)}function p(e){return d(e,Ai.call(arguments,1),!0)}function m(e){return parseInt(e,10)}function g(e,t){return u(Object.create(e),t)}function h(){}function f(e){return e}function _(e){return function(){return e}}function v(e){return M(e.toString)&&e.toString!==Object.prototype.toString}function y(e){return"undefined"==typeof e}function b(e){return"undefined"!=typeof e}function w(e){return null!==e&&"object"==typeof e}function k(e){return null!==e&&"object"==typeof e&&!Pi(e)}function $(e){return"string"==typeof e}function C(e){return"number"==typeof e}function S(e){return"[object Date]"===Di.call(e)}function M(e){return"function"==typeof e}function x(e){return"[object RegExp]"===Di.call(e)}function I(e){return e&&e.window===e}function A(e){return e&&e.$evalAsync&&e.$watch}function E(e){return"[object File]"===Di.call(e)}function T(e){return"[object FormData]"===Di.call(e)}function D(e){return"[object Blob]"===Di.call(e)}function P(e){return"boolean"==typeof e}function F(e){return e&&M(e.then)}function R(e){return Bi.test(Di.call(e))}function N(e){return!(!e||!(e.nodeName||e.prop&&e.attr&&e.find))}function U(e){var t,n={},a=e.split(",");for(t=0;t<a.length;t++)n[a[t]]=!0;return n}function O(e){return bi(e.nodeName||e[0]&&e[0].nodeName)}function B(e,t){var n=e.indexOf(t);return n>=0&&e.splice(n,1),n}function L(e,t,n,a){if(I(e)||A(e))throw Fi("cpws","Can't copy! Making copies of Window or Scope instances is not supported.");if(R(t))throw Fi("cpta","Can't copy! TypedArray destination cannot be mutated.");if(t){if(e===t)throw Fi("cpi","Can't copy! Source and destination are identical.");n=n||[],a=a||[],w(e)&&(n.push(e),a.push(t));var i;if(Oi(e)){t.length=0;for(var s=0;s<e.length;s++)t.push(L(e[s],null,n,a))}else{var r=t.$$hashKey;if(Oi(t)?t.length=0:o(t,function(e,n){delete t[n]}),k(e))for(i in e)t[i]=L(e[i],null,n,a);else if(e&&"function"==typeof e.hasOwnProperty)for(i in e)e.hasOwnProperty(i)&&(t[i]=L(e[i],null,n,a));else for(i in e)wi.call(e,i)&&(t[i]=L(e[i],null,n,a));c(t,r)}}else if(t=e,w(e)){var l;if(n&&-1!==(l=n.indexOf(e)))return a[l];if(Oi(e))return L(e,[],n,a);if(R(e))t=new e.constructor(e);else if(S(e))t=new Date(e.getTime());else if(x(e))t=new RegExp(e.source,e.toString().match(/[^\/]*$/)[0]),t.lastIndex=e.lastIndex;else{if(!M(e.cloneNode)){var d=Object.create(Pi(e));return L(e,d,n,a)}t=e.cloneNode(!0)}a&&(n.push(e),a.push(t))}return t}function j(e,t){if(Oi(e)){t=t||[];for(var n=0,a=e.length;a>n;n++)t[n]=e[n]}else if(w(e)){t=t||{};for(var i in e)("$"!==i.charAt(0)||"$"!==i.charAt(1))&&(t[i]=e[i])}return t||e}function q(e,t){if(e===t)return!0;if(null===e||null===t)return!1;if(e!==e&&t!==t)return!0;var n,a,i,o=typeof e,s=typeof t;if(o==s&&"object"==o){if(!Oi(e)){if(S(e))return S(t)?q(e.getTime(),t.getTime()):!1;if(x(e))return x(t)?e.toString()==t.toString():!1;if(A(e)||A(t)||I(e)||I(t)||Oi(t)||S(t)||x(t))return!1;i=ft();for(a in e)if("$"!==a.charAt(0)&&!M(e[a])){if(!q(e[a],t[a]))return!1;i[a]=!0}for(a in t)if(!(a in i)&&"$"!==a.charAt(0)&&b(t[a])&&!M(t[a]))return!1;return!0}if(!Oi(t))return!1;if((n=e.length)==t.length){for(a=0;n>a;a++)if(!q(e[a],t[a]))return!1;return!0}}return!1}function H(e,t,n){return e.concat(Ai.call(t,n))}function V(e,t){return Ai.call(e,t||0)}function z(e,t){var n=arguments.length>2?V(arguments,2):[];return!M(t)||t instanceof RegExp?t:n.length?function(){return arguments.length?t.apply(e,H(n,arguments,0)):t.apply(e,n)}:function(){return arguments.length?t.apply(e,arguments):t.call(e)}}function W(e,a){var i=a;return"string"==typeof e&&"$"===e.charAt(0)&&"$"===e.charAt(1)?i=n:I(a)?i="$WINDOW":a&&t===a?i="$DOCUMENT":A(a)&&(i="$SCOPE"),i}function G(e,t){return"undefined"==typeof e?n:(C(t)||(t=t?2:null),JSON.stringify(e,W,t))}function K(e){return $(e)?JSON.parse(e):e}function Y(e,t){var n=Date.parse("Jan 01, 1970 00:00:00 "+e)/6e4;return isNaN(n)?t:n}function Z(e,t){return e=new Date(e.getTime()),e.setMinutes(e.getMinutes()+t),e}function X(e,t,n){n=n?-1:1;var a=Y(t,e.getTimezoneOffset());return Z(e,n*(a-e.getTimezoneOffset()))}function J(e){e=Mi(e).clone();try{e.empty()}catch(t){}var n=Mi("<div>").append(e).html();try{return e[0].nodeType===Yi?bi(n):n.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(e,t){return"<"+bi(t)})}catch(t){return bi(n)}}function Q(e){try{return decodeURIComponent(e)}catch(t){}}function et(e){var t={};return o((e||"").split("&"),function(e){var n,a,i;e&&(a=e=e.replace(/\+/g,"%20"),n=e.indexOf("="),-1!==n&&(a=e.substring(0,n),i=e.substring(n+1)),a=Q(a),b(a)&&(i=b(i)?Q(i):!0,wi.call(t,a)?Oi(t[a])?t[a].push(i):t[a]=[t[a],i]:t[a]=i))}),t}function tt(e){var t=[];return o(e,function(e,n){Oi(e)?o(e,function(e){t.push(at(n,!0)+(e===!0?"":"="+at(e,!0)))}):t.push(at(n,!0)+(e===!0?"":"="+at(e,!0)))}),t.length?t.join("&"):""}function nt(e){return at(e,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function at(e,t){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,t?"%20":"+")}function it(e,t){var n,a,i=Vi.length;for(a=0;i>a;++a)if(n=Vi[a]+t,$(n=e.getAttribute(n)))return n;return null}function ot(e,t){var n,a,i={};o(Vi,function(t){var i=t+"app";!n&&e.hasAttribute&&e.hasAttribute(i)&&(n=e,a=e.getAttribute(i))}),o(Vi,function(t){var i,o=t+"app";!n&&(i=e.querySelector("["+o.replace(":","\\:")+"]"))&&(n=i,a=i.getAttribute(o))}),n&&(i.strictDi=null!==it(n,"strict-di"),t(n,a?[a]:[],i))}function st(n,a,i){w(i)||(i={});var s={strictDi:!1};i=u(s,i);var r=function(){if(n=Mi(n),n.injector()){var e=n[0]===t?"document":J(n);throw Fi("btstrpd","App Already Bootstrapped with this Element '{0}'",e.replace(/</,"&lt;").replace(/>/,"&gt;"))}a=a||[],a.unshift(["$provide",function(e){e.value("$rootElement",n)}]),i.debugInfoEnabled&&a.push(["$compileProvider",function(e){e.debugInfoEnabled(!0)}]),a.unshift("ng");var o=Jt(a,i.strictDi);return o.invoke(["$rootScope","$rootElement","$compile","$injector",function(e,t,n,a){e.$apply(function(){t.data("$injector",a),n(t)(e)})}]),o},l=/^NG_ENABLE_DEBUG_INFO!/,c=/^NG_DEFER_BOOTSTRAP!/;return e&&l.test(e.name)&&(i.debugInfoEnabled=!0,e.name=e.name.replace(l,"")),e&&!c.test(e.name)?r():(e.name=e.name.replace(c,""),Ri.resumeBootstrap=function(e){return o(e,function(e){a.push(e)}),r()},void(M(Ri.resumeDeferredBootstrap)&&Ri.resumeDeferredBootstrap()))}function rt(){e.name="NG_ENABLE_DEBUG_INFO!"+e.name,e.location.reload()}function lt(e){var t=Ri.element(e).injector();if(!t)throw Fi("test","no injector found for element argument to getTestability");return t.get("$$testability")}function ct(e,t){return t=t||"_",e.replace(zi,function(e,n){return(n?t:"")+e.toLowerCase()})}function dt(){var t;if(!Wi){var a=Hi();xi=y(a)?e.jQuery:a?e[a]:n,xi&&xi.fn.on?(Mi=xi,u(xi.fn,{scope:go.scope,isolateScope:go.isolateScope,controller:go.controller,injector:go.injector,inheritedData:go.inheritedData}),t=xi.cleanData,xi.cleanData=function(e){var n;if(Ui)Ui=!1;else for(var a,i=0;null!=(a=e[i]);i++)n=xi._data(a,"events"),n&&n.$destroy&&xi(a).triggerHandler("$destroy");t(e)}):Mi=It,Ri.element=Mi,Wi=!0}}function ut(e,t,n){if(!e)throw Fi("areq","Argument '{0}' is {1}",t||"?",n||"required");return e}function pt(e,t,n){return n&&Oi(e)&&(e=e[e.length-1]),ut(M(e),t,"not a function, got "+(e&&"object"==typeof e?e.constructor.name||"Object":typeof e)),e}function mt(e,t){if("hasOwnProperty"===e)throw Fi("badname","hasOwnProperty is not a valid {0} name",t)}function gt(e,t,n){if(!t)return e;for(var a,i=t.split("."),o=e,s=i.length,r=0;s>r;r++)a=i[r],e&&(e=(o=e)[a]);return!n&&M(e)?z(o,e):e}function ht(e){for(var t,n=e[0],a=e[e.length-1],i=1;n!==a&&(n=n.nextSibling);i++)(t||e[i]!==n)&&(t||(t=Mi(Ai.call(e,0,i))),t.push(n));return t||e}function ft(){return Object.create(null)}function _t(e){function t(e,t,n){return e[t]||(e[t]=n())}var n=a("$injector"),i=a("ng"),o=t(e,"angular",Object);return o.$$minErr=o.$$minErr||a,t(o,"module",function(){var e={};return function(a,o,s){var r=function(e,t){if("hasOwnProperty"===e)throw i("badname","hasOwnProperty is not a valid {0} name",t)};return r(a,"module"),o&&e.hasOwnProperty(a)&&(e[a]=null),t(e,a,function(){function e(e,t,n,a){return a||(a=i),function(){return a[n||"push"]([e,t,arguments]),d}}function t(e,t){return function(n,o){return o&&M(o)&&(o.$$moduleName=a),i.push([e,t,arguments]),d}}if(!o)throw n("nomod","Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.",a);var i=[],r=[],l=[],c=e("$injector","invoke","push",r),d={_invokeQueue:i,_configBlocks:r,_runBlocks:l,requires:o,name:a,provider:t("$provide","provider"),factory:t("$provide","factory"),service:t("$provide","service"),value:e("$provide","value"),constant:e("$provide","constant","unshift"),decorator:t("$provide","decorator"),animation:t("$animateProvider","register"),filter:t("$filterProvider","register"),controller:t("$controllerProvider","register"),directive:t("$compileProvider","directive"),config:c,run:function(e){return l.push(e),this}};return s&&c(s),d})}})}function vt(e){var t=[];return JSON.stringify(e,function(e,n){if(n=W(e,n),w(n)){if(t.indexOf(n)>=0)return"...";t.push(n)}return n})}function yt(e){return"function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):y(e)?"undefined":"string"!=typeof e?vt(e):e}function bt(t){u(t,{bootstrap:st,copy:L,extend:u,merge:p,equals:q,element:Mi,forEach:o,injector:Jt,noop:h,bind:z,toJson:G,fromJson:K,identity:f,isUndefined:y,isDefined:b,isString:$,isFunction:M,isObject:w,isNumber:C,isElement:N,isArray:Oi,version:Qi,isDate:S,lowercase:bi,uppercase:ki,callbacks:{counter:0},getTestability:lt,$$minErr:a,$$csp:qi,reloadWithDebugInfo:rt}),(Ii=_t(e))("ng",["ngLocale"],["$provide",function(e){e.provider({$$sanitizeUri:_a}),e.provider("$compile",cn).directive({a:gs,input:Ts,textarea:Ts,form:ys,script:$r,select:Mr,style:Ir,option:xr,ngBind:Fs,ngBindHtml:Ns,ngBindTemplate:Rs,ngClass:Os,ngClassEven:Ls,ngClassOdd:Bs,ngCloak:js,ngController:qs,ngForm:bs,ngHide:_r,ngIf:zs,ngInclude:Ws,ngInit:Ks,ngNonBindable:lr,ngPluralize:pr,ngRepeat:mr,ngShow:fr,ngStyle:vr,ngSwitch:yr,ngSwitchWhen:br,ngSwitchDefault:wr,ngOptions:ur,ngTransclude:kr,ngModel:or,ngList:Ys,ngChange:Us,pattern:Er,ngPattern:Er,required:Ar,ngRequired:Ar,minlength:Dr,ngMinlength:Dr,maxlength:Tr,ngMaxlength:Tr,ngValue:Ps,ngModelOptions:rr}).directive({ngInclude:Gs}).directive(hs).directive(Hs),e.provider({$anchorScroll:Qt,$animate:Ao,$animateCss:Eo,$$animateQueue:Io,$$AnimateRunner:xo,$browser:sn,$cacheFactory:rn,$controller:gn,$document:hn,$exceptionHandler:fn,$filter:Ta,$$forceReflow:Ro,$interpolate:En,$interval:Tn,$http:Mn,$httpParamSerializer:vn,$httpParamSerializerJQLike:yn,$httpBackend:In,$xhrFactory:xn,$location:zn,$log:Wn,$parse:ua,$rootScope:fa,$q:pa,$$q:ma,$sce:wa,$sceDelegate:ba,$sniffer:ka,$templateCache:ln,$templateRequest:$a,$$testability:Ca,$timeout:Sa,$window:Ia,$$rAF:ha,$$jqLite:Gt,$$HashMap:vo,$$cookieReader:Ea})}])}function wt(){return++to}function kt(e){return e.replace(io,function(e,t,n,a){return a?n.toUpperCase():n}).replace(oo,"Moz$1")}function $t(e){return!co.test(e)}function Ct(e){var t=e.nodeType;return t===Gi||!t||t===Xi}function St(e){for(var t in eo[e.ng339])return!0;return!1}function Mt(e,t){var n,a,i,s,r=t.createDocumentFragment(),l=[];if($t(e))l.push(t.createTextNode(e));else{for(n=n||r.appendChild(t.createElement("div")),a=(uo.exec(e)||["",""])[1].toLowerCase(),i=mo[a]||mo._default,n.innerHTML=i[1]+e.replace(po,"<$1></$2>")+i[2],s=i[0];s--;)n=n.lastChild;l=H(l,n.childNodes),n=r.firstChild,n.textContent=""}return r.textContent="",r.innerHTML="",o(l,function(e){r.appendChild(e)}),r}function xt(e,n){n=n||t;var a;return(a=lo.exec(e))?[n.createElement(a[1])]:(a=Mt(e,n))?a.childNodes:[]}function It(e){if(e instanceof It)return e;var t;if($(e)&&(e=Li(e),t=!0),!(this instanceof It)){if(t&&"<"!=e.charAt(0))throw ro("nosel","Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");return new It(e)}t?Ot(this,xt(e)):Ot(this,e)}function At(e){return e.cloneNode(!0)}function Et(e,t){if(t||Dt(e),e.querySelectorAll)for(var n=e.querySelectorAll("*"),a=0,i=n.length;i>a;a++)Dt(n[a])}function Tt(e,t,n,a){if(b(a))throw ro("offargs","jqLite#off() does not support the `selector` argument");var i=Pt(e),s=i&&i.events,r=i&&i.handle;if(r)if(t)o(t.split(" "),function(t){if(b(n)){var a=s[t];if(B(a||[],n),a&&a.length>0)return}ao(e,t,r),delete s[t]});else for(t in s)"$destroy"!==t&&ao(e,t,r),delete s[t]}function Dt(e,t){var a=e.ng339,i=a&&eo[a];if(i){if(t)return void delete i.data[t];i.handle&&(i.events.$destroy&&i.handle({},"$destroy"),Tt(e)),delete eo[a],e.ng339=n}}function Pt(e,t){var a=e.ng339,i=a&&eo[a];return t&&!i&&(e.ng339=a=wt(),i=eo[a]={events:{},data:{},handle:n}),i}function Ft(e,t,n){if(Ct(e)){var a=b(n),i=!a&&t&&!w(t),o=!t,s=Pt(e,!i),r=s&&s.data;if(a)r[t]=n;else{if(o)return r;if(i)return r&&r[t];u(r,t)}}}function Rt(e,t){return e.getAttribute?(" "+(e.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+t+" ")>-1:!1}function Nt(e,t){t&&e.setAttribute&&o(t.split(" "),function(t){e.setAttribute("class",Li((" "+(e.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+Li(t)+" "," ")))})}function Ut(e,t){if(t&&e.setAttribute){var n=(" "+(e.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");o(t.split(" "),function(e){e=Li(e),-1===n.indexOf(" "+e+" ")&&(n+=e+" ")}),e.setAttribute("class",Li(n))}}function Ot(e,t){if(t)if(t.nodeType)e[e.length++]=t;else{var n=t.length;if("number"==typeof n&&t.window!==t){if(n)for(var a=0;n>a;a++)e[e.length++]=t[a]}else e[e.length++]=t}}function Bt(e,t){return Lt(e,"$"+(t||"ngController")+"Controller")}function Lt(e,t,n){e.nodeType==Xi&&(e=e.documentElement);for(var a=Oi(t)?t:[t];e;){for(var i=0,o=a.length;o>i;i++)if(b(n=Mi.data(e,a[i])))return n;e=e.parentNode||e.nodeType===Ji&&e.host}}function jt(e){for(Et(e,!0);e.firstChild;)e.removeChild(e.firstChild)}function qt(e,t){t||Et(e);var n=e.parentNode;n&&n.removeChild(e)}function Ht(t,n){n=n||e,"complete"===n.document.readyState?n.setTimeout(t):Mi(n).on("load",t)}function Vt(e,t){var n=ho[t.toLowerCase()];return n&&fo[O(e)]&&n}function zt(e){return _o[e]}function Wt(e,t){var n=function(n,a){n.isDefaultPrevented=function(){return n.defaultPrevented};var i=t[a||n.type],o=i?i.length:0;if(o){if(y(n.immediatePropagationStopped)){var s=n.stopImmediatePropagation;n.stopImmediatePropagation=function(){n.immediatePropagationStopped=!0,n.stopPropagation&&n.stopPropagation(),s&&s.call(n)}}n.isImmediatePropagationStopped=function(){return n.immediatePropagationStopped===!0},o>1&&(i=j(i));for(var r=0;o>r;r++)n.isImmediatePropagationStopped()||i[r].call(e,n)}};return n.elem=e,n}function Gt(){this.$get=function(){return u(It,{hasClass:function(e,t){return e.attr&&(e=e[0]),Rt(e,t)},addClass:function(e,t){return e.attr&&(e=e[0]),Ut(e,t)},removeClass:function(e,t){return e.attr&&(e=e[0]),Nt(e,t)}})}}function Kt(e,t){var n=e&&e.$$hashKey;if(n)return"function"==typeof n&&(n=e.$$hashKey()),n;var a=typeof e;return n="function"==a||"object"==a&&null!==e?e.$$hashKey=a+":"+(t||l)():a+":"+e}function Yt(e,t){if(t){var n=0;this.nextUid=function(){return++n}}o(e,this.put,this)}function Zt(e){var t=e.toString().replace(ko,""),n=t.match(yo);return n?"function("+(n[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}function Xt(e,t,n){var a,i,s,r;if("function"==typeof e){if(!(a=e.$inject)){if(a=[],e.length){if(t)throw $(n)&&n||(n=e.name||Zt(e)),$o("strictdi","{0} is not using explicit annotation and cannot be invoked in strict mode",n);i=e.toString().replace(ko,""),s=i.match(yo),o(s[1].split(bo),function(e){e.replace(wo,function(e,t,n){a.push(n)})})}e.$inject=a}}else Oi(e)?(r=e.length-1,pt(e[r],"fn"),a=e.slice(0,r)):pt(e,"fn",!0);return a}function Jt(e,t){function a(e){return function(t,n){return w(t)?void o(t,r(e)):e(t,n)}}function i(e,t){if(mt(e,"service"),(M(t)||Oi(t))&&(t=C.instantiate(t)),!t.$get)throw $o("pget","Provider '{0}' must define $get factory method.",e);return k[e+f]=t}function s(e,t){return function(){var n=x.invoke(t,this);if(y(n))throw $o("undef","Provider '{0}' must return a value from $get factory method.",e);return n}}function l(e,t,n){return i(e,{$get:n!==!1?s(e,t):t})}function c(e,t){return l(e,["$injector",function(e){return e.instantiate(t)}])}function d(e,t){return l(e,_(t),!1)}function u(e,t){mt(e,"constant"),k[e]=t,S[e]=t}function p(e,t){var n=C.get(e+f),a=n.$get;n.$get=function(){var e=x.invoke(a,n);return x.invoke(t,null,{$delegate:e})}}function m(e){ut(y(e)||Oi(e),"modulesToLoad","not an array");
var t,n=[];return o(e,function(e){function a(e){var t,n;for(t=0,n=e.length;n>t;t++){var a=e[t],i=C.get(a[0]);i[a[1]].apply(i,a[2])}}if(!b.get(e)){b.put(e,!0);try{$(e)?(t=Ii(e),n=n.concat(m(t.requires)).concat(t._runBlocks),a(t._invokeQueue),a(t._configBlocks)):M(e)?n.push(C.invoke(e)):Oi(e)?n.push(C.invoke(e)):pt(e,"module")}catch(i){throw Oi(e)&&(e=e[e.length-1]),i.message&&i.stack&&-1==i.stack.indexOf(i.message)&&(i=i.message+"\n"+i.stack),$o("modulerr","Failed to instantiate module {0} due to:\n{1}",e,i.stack||i.message||i)}}}),n}function g(e,n){function a(t,a){if(e.hasOwnProperty(t)){if(e[t]===h)throw $o("cdep","Circular dependency found: {0}",t+" <- "+v.join(" <- "));return e[t]}try{return v.unshift(t),e[t]=h,e[t]=n(t,a)}catch(i){throw e[t]===h&&delete e[t],i}finally{v.shift()}}function i(e,n,i,o){"string"==typeof i&&(o=i,i=null);var s,r,l,c=[],d=Jt.$$annotate(e,t,o);for(r=0,s=d.length;s>r;r++){if(l=d[r],"string"!=typeof l)throw $o("itkn","Incorrect injection token! Expected service name as string, got {0}",l);c.push(i&&i.hasOwnProperty(l)?i[l]:a(l,o))}return Oi(e)&&(e=e[s]),e.apply(n,c)}function o(e,t,n){var a=Object.create((Oi(e)?e[e.length-1]:e).prototype||null),o=i(e,a,t,n);return w(o)||M(o)?o:a}return{invoke:i,instantiate:o,get:a,annotate:Jt.$$annotate,has:function(t){return k.hasOwnProperty(t+f)||e.hasOwnProperty(t)}}}t=t===!0;var h={},f="Provider",v=[],b=new Yt([],!0),k={$provide:{provider:a(i),factory:a(l),service:a(c),value:a(d),constant:a(u),decorator:p}},C=k.$injector=g(k,function(e,t){throw Ri.isString(t)&&v.push(t),$o("unpr","Unknown provider: {0}",v.join(" <- "))}),S={},x=S.$injector=g(S,function(e,t){var a=C.get(e+f,t);return x.invoke(a.$get,a,n,e)});return o(m(e),function(e){e&&x.invoke(e)}),x}function Qt(){var e=!0;this.disableAutoScrolling=function(){e=!1},this.$get=["$window","$location","$rootScope",function(t,n,a){function i(e){var t=null;return Array.prototype.some.call(e,function(e){return"a"===O(e)?(t=e,!0):void 0}),t}function o(){var e=r.yOffset;if(M(e))e=e();else if(N(e)){var n=e[0],a=t.getComputedStyle(n);e="fixed"!==a.position?0:n.getBoundingClientRect().bottom}else C(e)||(e=0);return e}function s(e){if(e){e.scrollIntoView();var n=o();if(n){var a=e.getBoundingClientRect().top;t.scrollBy(0,a-n)}}else t.scrollTo(0,0)}function r(e){e=$(e)?e:n.hash();var t;e?(t=l.getElementById(e))?s(t):(t=i(l.getElementsByName(e)))?s(t):"top"===e&&s(null):s(null)}var l=t.document;return e&&a.$watch(function(){return n.hash()},function(e,t){(e!==t||""!==e)&&Ht(function(){a.$evalAsync(r)})}),r}]}function en(e,t){return e||t?e?t?(Oi(e)&&(e=e.join(" ")),Oi(t)&&(t=t.join(" ")),e+" "+t):e:t:""}function tn(e){for(var t=0;t<e.length;t++){var n=e[t];if(n.nodeType===So)return n}}function nn(e){$(e)&&(e=e.split(" "));var t=ft();return o(e,function(e){e.length&&(t[e]=!0)}),t}function an(e){return w(e)?e:{}}function on(e,t,n,a){function i(e){try{e.apply(null,V(arguments,1))}finally{if(v--,0===v)for(;b.length;)try{b.pop()()}catch(t){n.error(t)}}}function s(e){var t=e.indexOf("#");return-1===t?"":e.substr(t)}function r(){S=null,c(),d()}function l(){try{return m.state}catch(e){}}function c(){w=l(),w=y(w)?null:w,q(w,I)&&(w=I),I=w}function d(){($!==u.url()||k!==w)&&($=u.url(),k=w,o(M,function(e){e(u.url(),w)}))}var u=this,p=(t[0],e.location),m=e.history,g=e.setTimeout,f=e.clearTimeout,_={};u.isMock=!1;var v=0,b=[];u.$$completeOutstandingRequest=i,u.$$incOutstandingRequestCount=function(){v++},u.notifyWhenNoOutstandingRequests=function(e){0===v?e():b.push(e)};var w,k,$=p.href,C=t.find("base"),S=null;c(),k=w,u.url=function(t,n,i){if(y(i)&&(i=null),p!==e.location&&(p=e.location),m!==e.history&&(m=e.history),t){var o=k===i;if($===t&&(!a.history||o))return u;var r=$&&Nn($)===Nn(t);return $=t,k=i,!a.history||r&&o?((!r||S)&&(S=t),n?p.replace(t):r?p.hash=s(t):p.href=t,p.href!==t&&(S=t)):(m[n?"replaceState":"pushState"](i,"",t),c(),k=w),u}return S||p.href.replace(/%27/g,"'")},u.state=function(){return w};var M=[],x=!1,I=null;u.onUrlChange=function(t){return x||(a.history&&Mi(e).on("popstate",r),Mi(e).on("hashchange",r),x=!0),M.push(t),t},u.$$applicationDestroyed=function(){Mi(e).off("hashchange popstate",r)},u.$$checkUrlChange=d,u.baseHref=function(){var e=C.attr("href");return e?e.replace(/^(https?\:)?\/\/[^\/]*/,""):""},u.defer=function(e,t){var n;return v++,n=g(function(){delete _[n],i(e)},t||0),_[n]=!0,n},u.defer.cancel=function(e){return _[e]?(delete _[e],f(e),i(h),!0):!1}}function sn(){this.$get=["$window","$log","$sniffer","$document",function(e,t,n,a){return new on(e,a,t,n)}]}function rn(){this.$get=function(){function e(e,n){function i(e){e!=p&&(m?m==e&&(m=e.n):m=e,o(e.n,e.p),o(e,p),p=e,p.n=null)}function o(e,t){e!=t&&(e&&(e.p=t),t&&(t.n=e))}if(e in t)throw a("$cacheFactory")("iid","CacheId '{0}' is already taken!",e);var s=0,r=u({},n,{id:e}),l={},c=n&&n.capacity||Number.MAX_VALUE,d={},p=null,m=null;return t[e]={put:function(e,t){if(!y(t)){if(c<Number.MAX_VALUE){var n=d[e]||(d[e]={key:e});i(n)}return e in l||s++,l[e]=t,s>c&&this.remove(m.key),t}},get:function(e){if(c<Number.MAX_VALUE){var t=d[e];if(!t)return;i(t)}return l[e]},remove:function(e){if(c<Number.MAX_VALUE){var t=d[e];if(!t)return;t==p&&(p=t.p),t==m&&(m=t.n),o(t.n,t.p),delete d[e]}delete l[e],s--},removeAll:function(){l={},s=0,d={},p=m=null},destroy:function(){l=null,r=null,d=null,delete t[e]},info:function(){return u({},r,{size:s})}}}var t={};return e.info=function(){var e={};return o(t,function(t,n){e[n]=t.info()}),e},e.get=function(e){return t[e]},e}}function ln(){this.$get=["$cacheFactory",function(e){return e("templates")}]}function cn(e,a){function i(e,t,n){var a=/^\s*([@&]|=(\*?))(\??)\s*(\w*)\s*$/,i={};return o(e,function(e,o){var s=e.match(a);if(!s)throw To("iscp","Invalid {3} for directive '{0}'. Definition: {... {1}: '{2}' ...}",t,o,e,n?"controller bindings definition":"isolate scope definition");i[o]={mode:s[1][0],collection:"*"===s[2],optional:"?"===s[3],attrName:s[4]||o}}),i}function s(e,t){var n={isolateScope:null,bindToController:null};if(w(e.scope)&&(e.bindToController===!0?(n.bindToController=i(e.scope,t,!0),n.isolateScope={}):n.isolateScope=i(e.scope,t,!1)),w(e.bindToController)&&(n.bindToController=i(e.bindToController,t,!0)),w(n.bindToController)){var a=e.controller,o=e.controllerAs;if(!a)throw To("noctrl","Cannot bind to controller without directive '{0}'s controller.",t);if(!mn(a,o))throw To("noident","Cannot bind to controller without identifier for directive '{0}'.",t)}return n}function l(e){var t=e.charAt(0);if(!t||t!==bi(t))throw To("baddir","Directive name '{0}' is invalid. The first character must be a lowercase letter",e);if(e!==e.trim())throw To("baddir","Directive name '{0}' is invalid. The name should not contain leading or trailing whitespaces",e)}var c={},d="Directive",p=/^\s*directive\:\s*([\w\-]+)\s+(.*)$/,m=/(([\w\-]+)(?:\:([^;]+))?;?)/,v=U("ngSrc,ngSrcset,src,srcset"),k=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/,C=/^(on[a-z]+|formaction)$/;this.directive=function x(t,n){return mt(t,"directive"),$(t)?(l(t),ut(n,"directiveFactory"),c.hasOwnProperty(t)||(c[t]=[],e.factory(t+d,["$injector","$exceptionHandler",function(e,n){var a=[];return o(c[t],function(i,o){try{var r=e.invoke(i);M(r)?r={compile:_(r)}:!r.compile&&r.link&&(r.compile=_(r.link)),r.priority=r.priority||0,r.index=o,r.name=r.name||t,r.require=r.require||r.controller&&r.name,r.restrict=r.restrict||"EA";var l=r.$$bindings=s(r,r.name);w(l.isolateScope)&&(r.$$isolateBindings=l.isolateScope),r.$$moduleName=i.$$moduleName,a.push(r)}catch(c){n(c)}}),a}])),c[t].push(n)):o(t,r(x)),this},this.aHrefSanitizationWhitelist=function(e){return b(e)?(a.aHrefSanitizationWhitelist(e),this):a.aHrefSanitizationWhitelist()},this.imgSrcSanitizationWhitelist=function(e){return b(e)?(a.imgSrcSanitizationWhitelist(e),this):a.imgSrcSanitizationWhitelist()};var S=!0;this.debugInfoEnabled=function(e){return b(e)?(S=e,this):S},this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$document","$sce","$animate","$$sanitizeUri",function(e,a,i,s,r,l,_,b,x,I,E){function T(e,t){try{e.addClass(t)}catch(n){}}function D(e,t,n,a,i){e instanceof Mi||(e=Mi(e)),o(e,function(t,n){t.nodeType==Yi&&t.nodeValue.match(/\S+/)&&(e[n]=Mi(t).wrap("<span></span>").parent()[0])});var s=F(e,t,e,n,a,i);D.$$addScopeClass(e);var r=null;return function(t,n,a){ut(t,"scope"),a=a||{};var i=a.parentBoundTranscludeFn,o=a.transcludeControllers,l=a.futureParentElement;i&&i.$$boundTransclude&&(i=i.$$boundTransclude),r||(r=P(l));var c;if(c="html"!==r?Mi(Q(r,Mi("<div>").append(e).html())):n?go.clone.call(e):e,o)for(var d in o)c.data("$"+d+"Controller",o[d].instance);return D.$$addScopeInfo(c,t),n&&n(c,t),s&&s(t,c,c,i),c}}function P(e){var t=e&&e[0];return t&&"foreignobject"!==O(t)&&t.toString().match(/SVG/)?"svg":"html"}function F(e,t,a,i,o,s){function r(e,a,i,o){var s,r,l,c,d,u,p,m,f;if(g){var _=a.length;for(f=new Array(_),d=0;d<h.length;d+=3)p=h[d],f[p]=a[p]}else f=a;for(d=0,u=h.length;u>d;)if(l=f[h[d++]],s=h[d++],r=h[d++],s){if(s.scope){c=e.$new(),D.$$addScopeInfo(Mi(l),c);var v=s.$$destroyBindings;v&&(s.$$destroyBindings=null,c.$on("$destroyed",v))}else c=e;m=s.transcludeOnThisElement?R(e,s.transclude,o):!s.templateOnThisElement&&o?o:!o&&t?R(e,t):null,s(r,c,l,i,m,s)}else r&&r(e,l.childNodes,n,o)}for(var l,c,d,u,p,m,g,h=[],f=0;f<e.length;f++)l=new st,c=N(e[f],[],l,0===f?i:n,o),d=c.length?j(c,e[f],l,t,a,null,[],[],s):null,d&&d.scope&&D.$$addScopeClass(l.$$element),p=d&&d.terminal||!(u=e[f].childNodes)||!u.length?null:F(u,d?(d.transcludeOnThisElement||!d.templateOnThisElement)&&d.transclude:t),(d||p)&&(h.push(f,d,p),m=!0,g=g||d),s=null;return m?r:null}function R(e,t,n){var a=function(a,i,o,s,r){return a||(a=e.$new(!1,r),a.$$transcluded=!0),t(a,i,{parentBoundTranscludeFn:n,transcludeControllers:o,futureParentElement:s})};return a}function N(e,t,n,a,i){var o,s,r=e.nodeType,l=n.$attr;switch(r){case Gi:z(t,dn(O(e)),"E",a,i);for(var c,d,u,g,h,f,_=e.attributes,v=0,y=_&&_.length;y>v;v++){var b=!1,k=!1;c=_[v],d=c.name,h=Li(c.value),g=dn(d),(f=pt.test(g))&&(d=d.replace(Do,"").substr(8).replace(/_(.)/g,function(e,t){return t.toUpperCase()}));var C=g.replace(/(Start|End)$/,"");W(C)&&g===C+"Start"&&(b=d,k=d.substr(0,d.length-5)+"end",d=d.substr(0,d.length-6)),u=dn(d.toLowerCase()),l[u]=d,(f||!n.hasOwnProperty(u))&&(n[u]=h,Vt(e,u)&&(n[u]=!0)),tt(e,t,h,u,f),z(t,u,"A",a,i,b,k)}if(s=e.className,w(s)&&(s=s.animVal),$(s)&&""!==s)for(;o=m.exec(s);)u=dn(o[2]),z(t,u,"C",a,i)&&(n[u]=Li(o[3])),s=s.substr(o.index+o[0].length);break;case Yi:if(11===Si)for(;e.parentNode&&e.nextSibling&&e.nextSibling.nodeType===Yi;)e.nodeValue=e.nodeValue+e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);X(t,e.nodeValue);break;case Zi:try{o=p.exec(e.nodeValue),o&&(u=dn(o[1]),z(t,u,"M",a,i)&&(n[u]=Li(o[2])))}catch(S){}}return t.sort(Y),t}function U(e,t,n){var a=[],i=0;if(t&&e.hasAttribute&&e.hasAttribute(t)){do{if(!e)throw To("uterdir","Unterminated attribute, found '{0}' but no matching '{1}' found.",t,n);e.nodeType==Gi&&(e.hasAttribute(t)&&i++,e.hasAttribute(n)&&i--),a.push(e),e=e.nextSibling}while(i>0)}else a.push(e);return Mi(a)}function L(e,t,n){return function(a,i,o,s,r){return i=U(i[0],t,n),e(a,i,o,s,r)}}function j(e,a,o,s,r,c,d,u,p){function m(e,t,n,a){e&&(n&&(e=L(e,n,a)),e.require=_.require,e.directiveName=v,(E===_||_.$$isolateScope)&&(e=at(e,{isolateScope:!0})),d.push(e)),t&&(n&&(t=L(t,n,a)),t.require=_.require,t.directiveName=v,(E===_||_.$$isolateScope)&&(t=at(t,{isolateScope:!0})),u.push(t))}function g(e,t,n,a){var i;if($(t)){var o=t.match(k),s=t.substring(o[0].length),r=o[1]||o[3],l="?"===o[2];if("^^"===r?n=n.parent():(i=a&&a[s],i=i&&i.instance),!i){var c="$"+s+"Controller";i=r?n.inheritedData(c):n.data(c)}if(!i&&!l)throw To("ctreq","Controller '{0}', required by directive '{1}', can't be found!",s,e)}else if(Oi(t)){i=[];for(var d=0,u=t.length;u>d;d++)i[d]=g(e,t[d],n,a)}return i||null}function h(e,t,n,a,i,o){var s=ft();for(var r in a){var c=a[r],d={$scope:c===E||c.$$isolateScope?i:o,$element:e,$attrs:t,$transclude:n},u=c.controller;"@"==u&&(u=t[c.name]);var p=l(u,d,!0,c.controllerAs);s[c.name]=p,O||e.data("$"+c.name+"Controller",p.instance)}return s}function f(e,t,i,s,r,l){function c(e,t,a){var i;return A(e)||(a=t,t=e,e=n),O&&(i=y),a||(a=O?w.parent():w),r(e,t,i,a,P)}var p,m,f,_,v,y,b,w,k;if(a===i?(k=o,w=o.$$element):(w=Mi(i),k=new st(w,o)),E&&(v=t.$new(!0)),r&&(b=c,b.$$boundTransclude=r),I&&(y=h(w,k,b,I,v,t)),E&&(D.$$addScopeInfo(w,v,!0,!(T&&(T===E||T===E.$$originalDirective))),D.$$addScopeClass(w,!0),v.$$isolateBindings=E.$$isolateBindings,ot(t,k,v,v.$$isolateBindings,E,v)),y){var $,C,S=E||x;S&&y[S.name]&&($=S.$$bindings.bindToController,_=y[S.name],_&&_.identifier&&$&&(C=_,l.$$destroyBindings=ot(t,k,_.instance,$,S)));for(p in y){_=y[p];var M=_();M!==_.instance&&(_.instance=M,w.data("$"+p+"Controller",M),_===C&&(l.$$destroyBindings(),l.$$destroyBindings=ot(t,k,M,$,S)))}}for(p=0,m=d.length;m>p;p++)f=d[p],it(f,f.isolateScope?v:t,w,k,f.require&&g(f.directiveName,f.require,w,y),b);var P=t;for(E&&(E.template||null===E.templateUrl)&&(P=v),e&&e(P,i.childNodes,n,r),p=u.length-1;p>=0;p--)f=u[p],it(f,f.isolateScope?v:t,w,k,f.require&&g(f.directiveName,f.require,w,y),b)}p=p||{};for(var _,v,y,b,C,S=-Number.MAX_VALUE,x=p.newScopeDirective,I=p.controllerDirectives,E=p.newIsolateScopeDirective,T=p.templateDirective,P=p.nonTlbTranscludeDirective,F=!1,R=!1,O=p.hasElementTranscludeDirective,B=o.$$element=Mi(a),j=c,q=s,z=0,W=e.length;W>z;z++){_=e[z];var Y=_.$$start,X=_.$$end;if(Y&&(B=U(a,Y,X)),y=n,S>_.priority)break;if((C=_.scope)&&(_.templateUrl||(w(C)?(Z("new/isolated scope",E||x,_,B),E=_):Z("new/isolated scope",E,_,B)),x=x||_),v=_.name,!_.templateUrl&&_.controller&&(C=_.controller,I=I||ft(),Z("'"+v+"' controller",I[v],_,B),I[v]=_),(C=_.transclude)&&(F=!0,_.$$tlb||(Z("transclusion",P,_,B),P=_),"element"==C?(O=!0,S=_.priority,y=B,B=o.$$element=Mi(t.createComment(" "+v+": "+o[v]+" ")),a=B[0],nt(r,V(y),a),q=D(y,s,S,j&&j.name,{nonTlbTranscludeDirective:P})):(y=Mi(At(a)).contents(),B.empty(),q=D(y,s))),_.template)if(R=!0,Z("template",T,_,B),T=_,C=M(_.template)?_.template(B,o):_.template,C=dt(C),_.replace){if(j=_,y=$t(C)?[]:pn(Q(_.templateNamespace,Li(C))),a=y[0],1!=y.length||a.nodeType!==Gi)throw To("tplrt","Template for directive '{0}' must have exactly one root element. {1}",v,"");nt(r,B,a);var et={$attr:{}},tt=N(a,[],et),rt=e.splice(z+1,e.length-(z+1));E&&H(tt),e=e.concat(tt).concat(rt),G(o,et),W=e.length}else B.html(C);if(_.templateUrl)R=!0,Z("template",T,_,B),T=_,_.replace&&(j=_),f=K(e.splice(z,e.length-z),B,o,r,F&&q,d,u,{controllerDirectives:I,newScopeDirective:x!==_&&x,newIsolateScopeDirective:E,templateDirective:T,nonTlbTranscludeDirective:P}),W=e.length;else if(_.compile)try{b=_.compile(B,o,q),M(b)?m(null,b,Y,X):b&&m(b.pre,b.post,Y,X)}catch(lt){i(lt,J(B))}_.terminal&&(f.terminal=!0,S=Math.max(S,_.priority))}return f.scope=x&&x.scope===!0,f.transcludeOnThisElement=F,f.templateOnThisElement=R,f.transclude=q,p.hasElementTranscludeDirective=O,f}function H(e){for(var t=0,n=e.length;n>t;t++)e[t]=g(e[t],{$$isolateScope:!0})}function z(t,n,a,o,s,r,l){if(n===s)return null;var u=null;if(c.hasOwnProperty(n))for(var p,m=e.get(n+d),h=0,f=m.length;f>h;h++)try{p=m[h],(y(o)||o>p.priority)&&-1!=p.restrict.indexOf(a)&&(r&&(p=g(p,{$$start:r,$$end:l})),t.push(p),u=p)}catch(_){i(_)}return u}function W(t){if(c.hasOwnProperty(t))for(var n,a=e.get(t+d),i=0,o=a.length;o>i;i++)if(n=a[i],n.multiElement)return!0;return!1}function G(e,t){var n=t.$attr,a=e.$attr,i=e.$$element;o(e,function(a,i){"$"!=i.charAt(0)&&(t[i]&&t[i]!==a&&(a+=("style"===i?";":" ")+t[i]),e.$set(i,a,!0,n[i]))}),o(t,function(t,o){"class"==o?(T(i,t),e["class"]=(e["class"]?e["class"]+" ":"")+t):"style"==o?(i.attr("style",i.attr("style")+";"+t),e.style=(e.style?e.style+";":"")+t):"$"==o.charAt(0)||e.hasOwnProperty(o)||(e[o]=t,a[o]=n[o])})}function K(e,t,n,a,i,r,l,c){var d,u,p=[],m=t[0],h=e.shift(),f=g(h,{templateUrl:null,transclude:null,replace:null,$$originalDirective:h}),_=M(h.templateUrl)?h.templateUrl(t,n):h.templateUrl,v=h.templateNamespace;return t.empty(),s(_).then(function(s){var g,y,b,k;if(s=dt(s),h.replace){if(b=$t(s)?[]:pn(Q(v,Li(s))),g=b[0],1!=b.length||g.nodeType!==Gi)throw To("tplrt","Template for directive '{0}' must have exactly one root element. {1}",h.name,_);y={$attr:{}},nt(a,t,g);var $=N(g,[],y);w(h.scope)&&H($),e=$.concat(e),G(n,y)}else g=m,t.html(s);for(e.unshift(f),d=j(e,g,n,i,t,h,r,l,c),o(a,function(e,n){e==g&&(a[n]=t[0])}),u=F(t[0].childNodes,i);p.length;){var C=p.shift(),S=p.shift(),M=p.shift(),x=p.shift(),I=t[0];if(!C.$$destroyed){if(S!==m){var A=S.className;c.hasElementTranscludeDirective&&h.replace||(I=At(g)),nt(M,Mi(S),I),T(Mi(I),A)}k=d.transcludeOnThisElement?R(C,d.transclude,x):x,d(u,C,I,a,k,d)}}p=null}),function(e,t,n,a,i){var o=i;t.$$destroyed||(p?p.push(t,n,a,o):(d.transcludeOnThisElement&&(o=R(t,d.transclude,i)),d(u,t,n,a,o,d)))}}function Y(e,t){var n=t.priority-e.priority;return 0!==n?n:e.name!==t.name?e.name<t.name?-1:1:e.index-t.index}function Z(e,t,n,a){function i(e){return e?" (module: "+e+")":""}if(t)throw To("multidir","Multiple directives [{0}{1}, {2}{3}] asking for {4} on: {5}",t.name,i(t.$$moduleName),n.name,i(n.$$moduleName),e,J(a))}function X(e,t){var n=a(t,!0);n&&e.push({priority:0,compile:function(e){var t=e.parent(),a=!!t.length;return a&&D.$$addBindingClass(t),function(e,t){var i=t.parent();a||D.$$addBindingClass(i),D.$$addBindingInfo(i,n.expressions),e.$watch(n,function(e){t[0].nodeValue=e})}}})}function Q(e,n){switch(e=bi(e||"html")){case"svg":case"math":var a=t.createElement("div");return a.innerHTML="<"+e+">"+n+"</"+e+">",a.childNodes[0].childNodes;default:return n}}function et(e,t){if("srcdoc"==t)return x.HTML;var n=O(e);return"xlinkHref"==t||"form"==n&&"action"==t||"img"!=n&&("src"==t||"ngSrc"==t)?x.RESOURCE_URL:void 0}function tt(e,t,n,i,o){var s=et(e,i);o=v[i]||o;var r=a(n,!0,s,o);if(r){if("multiple"===i&&"select"===O(e))throw To("selmulti","Binding to the 'multiple' attribute is not supported. Element: {0}",J(e));t.push({priority:100,compile:function(){return{pre:function(e,t,l){var c=l.$$observers||(l.$$observers=ft());if(C.test(i))throw To("nodomevents","Interpolations for HTML DOM event attributes are disallowed. Please use the ng- versions (such as ng-click instead of onclick) instead.");var d=l[i];d!==n&&(r=d&&a(d,!0,s,o),n=d),r&&(l[i]=r(e),(c[i]||(c[i]=[])).$$inter=!0,(l.$$observers&&l.$$observers[i].$$scope||e).$watch(r,function(e,t){"class"===i&&e!=t?l.$updateClass(e,t):l.$set(i,e)}))}}}})}}function nt(e,n,a){var i,o,s=n[0],r=n.length,l=s.parentNode;if(e)for(i=0,o=e.length;o>i;i++)if(e[i]==s){e[i++]=a;for(var c=i,d=c+r-1,u=e.length;u>c;c++,d++)u>d?e[c]=e[d]:delete e[c];e.length-=r-1,e.context===s&&(e.context=a);break}l&&l.replaceChild(a,s);var p=t.createDocumentFragment();p.appendChild(s),Mi.hasData(s)&&(Mi(a).data(Mi(s).data()),xi?(Ui=!0,xi.cleanData([s])):delete Mi.cache[s[Mi.expando]]);for(var m=1,g=n.length;g>m;m++){var h=n[m];Mi(h).remove(),p.appendChild(h),delete n[m]}n[0]=a,n.length=1}function at(e,t){return u(function(){return e.apply(null,arguments)},e,t)}function it(e,t,n,a,o,s){try{e(t,n,a,o,s)}catch(r){i(r,J(n))}}function ot(e,t,n,i,s,l){var c;o(i,function(i,o){var l,d,u,p,m=i.attrName,g=i.optional,f=i.mode;switch(f){case"@":g||wi.call(t,m)||(n[o]=t[m]=void 0),t.$observe(m,function(e){$(e)&&(n[o]=e)}),t.$$observers[m].$$scope=e,$(t[m])&&(n[o]=a(t[m])(e));break;case"=":if(!wi.call(t,m)){if(g)break;t[m]=void 0}if(g&&!t[m])break;d=r(t[m]),p=d.literal?q:function(e,t){return e===t||e!==e&&t!==t},u=d.assign||function(){throw l=n[o]=d(e),To("nonassign","Expression '{0}' used with directive '{1}' is non-assignable!",t[m],s.name)},l=n[o]=d(e);var _=function(t){return p(t,n[o])||(p(t,l)?u(e,t=n[o]):n[o]=t),l=t};_.$stateful=!0;var v;v=i.collection?e.$watchCollection(t[m],_):e.$watch(r(t[m],_),null,d.literal),c=c||[],c.push(v);break;case"&":if(d=t.hasOwnProperty(m)?r(t[m]):h,d===h&&g)break;n[o]=function(t){return d(e,t)}}});var d=c?function(){for(var e=0,t=c.length;t>e;++e)c[e]()}:h;return l&&d!==h?(l.$on("$destroy",d),h):d}var st=function(e,t){if(t){var n,a,i,o=Object.keys(t);for(n=0,a=o.length;a>n;n++)i=o[n],this[i]=t[i]}else this.$attr={};this.$$element=e};st.prototype={$normalize:dn,$addClass:function(e){e&&e.length>0&&I.addClass(this.$$element,e)},$removeClass:function(e){e&&e.length>0&&I.removeClass(this.$$element,e)},$updateClass:function(e,t){var n=un(e,t);n&&n.length&&I.addClass(this.$$element,n);var a=un(t,e);a&&a.length&&I.removeClass(this.$$element,a)},$set:function(e,t,n,a){var s,r=this.$$element[0],l=Vt(r,e),c=zt(e),d=e;if(l?(this.$$element.prop(e,t),a=l):c&&(this[c]=t,d=c),this[e]=t,a?this.$attr[e]=a:(a=this.$attr[e],a||(this.$attr[e]=a=ct(e,"-"))),s=O(this.$$element),"a"===s&&"href"===e||"img"===s&&"src"===e)this[e]=t=E(t,"src"===e);else if("img"===s&&"srcset"===e){for(var u="",p=Li(t),m=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,g=/\s/.test(p)?m:/(,)/,h=p.split(g),f=Math.floor(h.length/2),_=0;f>_;_++){var v=2*_;u+=E(Li(h[v]),!0),u+=" "+Li(h[v+1])}var b=Li(h[2*_]).split(/\s/);u+=E(Li(b[0]),!0),2===b.length&&(u+=" "+Li(b[1])),this[e]=t=u}n!==!1&&(null===t||y(t)?this.$$element.removeAttr(a):this.$$element.attr(a,t));var w=this.$$observers;w&&o(w[d],function(e){try{e(t)}catch(n){i(n)}})},$observe:function(e,t){var n=this,a=n.$$observers||(n.$$observers=ft()),i=a[e]||(a[e]=[]);return i.push(t),_.$evalAsync(function(){i.$$inter||!n.hasOwnProperty(e)||y(n[e])||t(n[e])}),function(){B(i,t)}}};var rt=a.startSymbol(),lt=a.endSymbol(),dt="{{"==rt||"}}"==lt?f:function(e){return e.replace(/\{\{/g,rt).replace(/}}/g,lt)},pt=/^ngAttr[A-Z]/;return D.$$addBindingInfo=S?function(e,t){var n=e.data("$binding")||[];Oi(t)?n=n.concat(t):n.push(t),e.data("$binding",n)}:h,D.$$addBindingClass=S?function(e){T(e,"ng-binding")}:h,D.$$addScopeInfo=S?function(e,t,n,a){var i=n?a?"$isolateScopeNoTemplate":"$isolateScope":"$scope";e.data(i,t)}:h,D.$$addScopeClass=S?function(e,t){T(e,t?"ng-isolate-scope":"ng-scope")}:h,D}]}function dn(e){return kt(e.replace(Do,""))}function un(e,t){var n="",a=e.split(/\s+/),i=t.split(/\s+/);e:for(var o=0;o<a.length;o++){for(var s=a[o],r=0;r<i.length;r++)if(s==i[r])continue e;n+=(n.length>0?" ":"")+s}return n}function pn(e){e=Mi(e);var t=e.length;if(1>=t)return e;for(;t--;){var n=e[t];n.nodeType===Zi&&Ei.call(e,t,1)}return e}function mn(e,t){if(t&&$(t))return t;if($(e)){var n=Fo.exec(e);if(n)return n[3]}}function gn(){var e={},t=!1;this.register=function(t,n){mt(t,"controller"),w(t)?u(e,t):e[t]=n},this.allowGlobals=function(){t=!0},this.$get=["$injector","$window",function(i,o){function s(e,t,n,i){if(!e||!w(e.$scope))throw a("$controller")("noscp","Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",i,t);e.$scope[t]=n}return function(a,r,l,c){var d,p,m,g;if(l=l===!0,c&&$(c)&&(g=c),$(a)){if(p=a.match(Fo),!p)throw Po("ctrlfmt","Badly formed controller string '{0}'. Must match `__name__ as __id__` or `__name__`.",a);m=p[1],g=g||p[3],a=e.hasOwnProperty(m)?e[m]:gt(r.$scope,m,!0)||(t?gt(o,m,!0):n),pt(a,m,!0)}if(l){var h=(Oi(a)?a[a.length-1]:a).prototype;d=Object.create(h||null),g&&s(r,g,d,m||a.name);var f;return f=u(function(){var e=i.invoke(a,d,r,m);return e!==d&&(w(e)||M(e))&&(d=e,g&&s(r,g,d,m||a.name)),d},{instance:d,identifier:g})}return d=i.instantiate(a,r,m),g&&s(r,g,d,m||a.name),d}}]}function hn(){this.$get=["$window",function(e){return Mi(e.document)}]}function fn(){this.$get=["$log",function(e){return function(){e.error.apply(e,arguments)}}]}function _n(e){return w(e)?S(e)?e.toISOString():G(e):e}function vn(){this.$get=function(){return function(e){if(!e)return"";var t=[];return s(e,function(e,n){null===e||y(e)||(Oi(e)?o(e,function(e){t.push(at(n)+"="+at(_n(e)))}):t.push(at(n)+"="+at(_n(e))))}),t.join("&")}}}function yn(){this.$get=function(){return function(e){function t(e,a,i){null===e||y(e)||(Oi(e)?o(e,function(e,n){t(e,a+"["+(w(e)?n:"")+"]")}):w(e)&&!S(e)?s(e,function(e,n){t(e,a+(i?"":"[")+n+(i?"":"]"))}):n.push(at(a)+"="+at(_n(e))))}if(!e)return"";var n=[];return t(e,"",!0),n.join("&")}}}function bn(e,t){if($(e)){var n=e.replace(Lo,"").trim();if(n){var a=t("Content-Type");(a&&0===a.indexOf(No)||wn(n))&&(e=K(n))}}return e}function wn(e){var t=e.match(Oo);return t&&Bo[t[0]].test(e)}function kn(e){function t(e,t){e&&(a[e]=a[e]?a[e]+", "+t:t)}var n,a=ft();return $(e)?o(e.split("\n"),function(e){n=e.indexOf(":"),t(bi(Li(e.substr(0,n))),Li(e.substr(n+1)))}):w(e)&&o(e,function(e,n){t(bi(n),Li(e))}),a}function $n(e){var t;return function(n){if(t||(t=kn(e)),n){var a=t[bi(n)];return void 0===a&&(a=null),a}return t}}function Cn(e,t,n,a){return M(a)?a(e,t,n):(o(a,function(a){e=a(e,t,n)}),e)}function Sn(e){return e>=200&&300>e}function Mn(){var e=this.defaults={transformResponse:[bn],transformRequest:[function(e){return!w(e)||E(e)||D(e)||T(e)?e:G(e)}],headers:{common:{Accept:"application/json, text/plain, */*"},post:j(Uo),put:j(Uo),patch:j(Uo)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer"},t=!1;this.useApplyAsync=function(e){return b(e)?(t=!!e,this):t};var i=!0;this.useLegacyPromiseExtensions=function(e){return b(e)?(i=!!e,this):i};var s=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector",function(r,l,c,d,p,m){function g(t){function s(e){var t=u({},e);return t.data=e.data?Cn(e.data,e.headers,e.status,c.transformResponse):e.data,Sn(e.status)?t:p.reject(t)}function r(e,t){var n,a={};return o(e,function(e,i){M(e)?(n=e(t),null!=n&&(a[i]=n)):a[i]=e}),a}function l(t){var n,a,i,o=e.headers,s=u({},t.headers);o=u({},o.common,o[bi(t.method)]);e:for(n in o){a=bi(n);for(i in s)if(bi(i)===a)continue e;s[n]=o[n]}return r(s,j(t))}if(!Ri.isObject(t))throw a("$http")("badreq","Http request configuration must be an object. Received: {0}",t);var c=u({method:"get",transformRequest:e.transformRequest,transformResponse:e.transformResponse,paramSerializer:e.paramSerializer},t);c.headers=l(t),c.method=ki(c.method),c.paramSerializer=$(c.paramSerializer)?m.get(c.paramSerializer):c.paramSerializer;var d=function(t){var a=t.headers,i=Cn(t.data,$n(a),n,t.transformRequest);return y(i)&&o(a,function(e,t){"content-type"===bi(t)&&delete a[t]}),y(t.withCredentials)&&!y(e.withCredentials)&&(t.withCredentials=e.withCredentials),_(t,i).then(s,s)},g=[d,n],h=p.when(c);for(o(C,function(e){(e.request||e.requestError)&&g.unshift(e.request,e.requestError),(e.response||e.responseError)&&g.push(e.response,e.responseError)});g.length;){var f=g.shift(),v=g.shift();h=h.then(f,v)}return i?(h.success=function(e){return pt(e,"fn"),h.then(function(t){e(t.data,t.status,t.headers,c)}),h},h.error=function(e){return pt(e,"fn"),h.then(null,function(t){e(t.data,t.status,t.headers,c)}),h}):(h.success=qo("success"),h.error=qo("error")),h}function h(){o(arguments,function(e){g[e]=function(t,n){return g(u({},n||{},{method:e,url:t}))}})}function f(){o(arguments,function(e){g[e]=function(t,n,a){return g(u({},a||{},{method:e,url:t,data:n}))}})}function _(a,i){function o(e,n,a,i){function o(){s(n,e,a,i)}m&&(Sn(e)?m.put(C,[e,n,kn(a),i]):m.remove(C)),t?d.$applyAsync(o):(o(),d.$$phase||d.$apply())}function s(e,t,n,i){t=t>=-1?t:0,(Sn(t)?f.resolve:f.reject)({data:e,status:t,headers:$n(n),config:a,statusText:i})}function c(e){s(e.data,e.status,j(e.headers()),e.statusText)}function u(){var e=g.pendingRequests.indexOf(a);-1!==e&&g.pendingRequests.splice(e,1)}var m,h,f=p.defer(),_=f.promise,$=a.headers,C=v(a.url,a.paramSerializer(a.params));if(g.pendingRequests.push(a),_.then(u,u),!a.cache&&!e.cache||a.cache===!1||"GET"!==a.method&&"JSONP"!==a.method||(m=w(a.cache)?a.cache:w(e.cache)?e.cache:k),m&&(h=m.get(C),b(h)?F(h)?h.then(c,c):Oi(h)?s(h[1],h[0],j(h[2]),h[3]):s(h,200,{},"OK"):m.put(C,_)),y(h)){var S=xa(a.url)?l()[a.xsrfCookieName||e.xsrfCookieName]:n;S&&($[a.xsrfHeaderName||e.xsrfHeaderName]=S),r(a.method,C,i,o,$,a.timeout,a.withCredentials,a.responseType)}return _}function v(e,t){return t.length>0&&(e+=(-1==e.indexOf("?")?"?":"&")+t),e}var k=c("$http");e.paramSerializer=$(e.paramSerializer)?m.get(e.paramSerializer):e.paramSerializer;var C=[];return o(s,function(e){C.unshift($(e)?m.get(e):m.invoke(e))}),g.pendingRequests=[],h("get","delete","head","jsonp"),f("post","put","patch"),g.defaults=e,g}]}function xn(){this.$get=function(){return function(){return new e.XMLHttpRequest}}}function In(){this.$get=["$browser","$window","$document","$xhrFactory",function(e,t,n,a){return An(e,a,e.defer,t.angular.callbacks,n[0])}]}function An(e,t,n,a,i){function s(e,t,n){var o=i.createElement("script"),s=null;return o.type="text/javascript",o.src=e,o.async=!0,s=function(e){ao(o,"load",s),ao(o,"error",s),i.body.removeChild(o),o=null;var r=-1,l="unknown";e&&("load"!==e.type||a[t].called||(e={type:"error"}),l=e.type,r="error"===e.type?404:200),n&&n(r,l)},no(o,"load",s),no(o,"error",s),i.body.appendChild(o),s}return function(i,r,l,c,d,u,p,m){function g(){v&&v(),w&&w.abort()}function f(t,a,i,o,s){b(C)&&n.cancel(C),v=w=null,t(a,i,o,s),e.$$completeOutstandingRequest(h)}if(e.$$incOutstandingRequestCount(),r=r||e.url(),"jsonp"==bi(i)){var _="_"+(a.counter++).toString(36);a[_]=function(e){a[_].data=e,a[_].called=!0};var v=s(r.replace("JSON_CALLBACK","angular.callbacks."+_),_,function(e,t){f(c,e,a[_].data,"",t),a[_]=h})}else{var w=t(i,r);w.open(i,r,!0),o(d,function(e,t){b(e)&&w.setRequestHeader(t,e)}),w.onload=function(){var e=w.statusText||"",t="response"in w?w.response:w.responseText,n=1223===w.status?204:w.status;0===n&&(n=t?200:"file"==Ma(r).protocol?404:0),f(c,n,t,w.getAllResponseHeaders(),e)};var k=function(){f(c,-1,null,null,"")};if(w.onerror=k,w.onabort=k,p&&(w.withCredentials=!0),m)try{w.responseType=m}catch($){if("json"!==m)throw $}w.send(y(l)?null:l)}if(u>0)var C=n(g,u);else F(u)&&u.then(g)}}function En(){var e="{{",t="}}";this.startSymbol=function(t){return t?(e=t,this):e},this.endSymbol=function(e){return e?(t=e,this):t},this.$get=["$parse","$exceptionHandler","$sce",function(n,a,i){function o(e){return"\\\\\\"+e}function s(n){return n.replace(p,e).replace(m,t)}function r(e){if(null==e)return"";switch(typeof e){case"string":break;case"number":e=""+e;break;default:e=G(e)}return e}function l(o,l,p,m){function g(e){try{return e=I(e),m&&!b(e)?e:r(e)}catch(t){a(Ho.interr(o,t))}}m=!!m;for(var h,f,_,v=0,w=[],k=[],$=o.length,C=[],S=[];$>v;){if(-1==(h=o.indexOf(e,v))||-1==(f=o.indexOf(t,h+c))){v!==$&&C.push(s(o.substring(v)));break}v!==h&&C.push(s(o.substring(v,h))),_=o.substring(h+c,f),w.push(_),k.push(n(_,g)),v=f+d,S.push(C.length),C.push("")}if(p&&C.length>1&&Ho.throwNoconcat(o),!l||w.length){var x=function(e){for(var t=0,n=w.length;n>t;t++){if(m&&y(e[t]))return;C[S[t]]=e[t]}return C.join("")},I=function(e){return p?i.getTrusted(p,e):i.valueOf(e)};return u(function(e){var t=0,n=w.length,i=new Array(n);try{for(;n>t;t++)i[t]=k[t](e);return x(i)}catch(s){a(Ho.interr(o,s))}},{exp:o,expressions:w,$$watchDelegate:function(e,t){var n;return e.$watchGroup(k,function(a,i){var o=x(a);M(t)&&t.call(this,o,a!==i?n:o,e),n=o})}})}}var c=e.length,d=t.length,p=new RegExp(e.replace(/./g,o),"g"),m=new RegExp(t.replace(/./g,o),"g");return l.startSymbol=function(){return e},l.endSymbol=function(){return t},l}]}function Tn(){this.$get=["$rootScope","$window","$q","$$q",function(e,t,n,a){function i(i,s,r,l){var c=arguments.length>4,d=c?V(arguments,4):[],u=t.setInterval,p=t.clearInterval,m=0,g=b(l)&&!l,h=(g?a:n).defer(),f=h.promise;return r=b(r)?r:0,f.then(null,null,c?function(){i.apply(null,d)}:i),f.$$intervalId=u(function(){h.notify(m++),r>0&&m>=r&&(h.resolve(m),p(f.$$intervalId),delete o[f.$$intervalId]),g||e.$apply()},s),o[f.$$intervalId]=h,f}var o={};return i.cancel=function(e){return e&&e.$$intervalId in o?(o[e.$$intervalId].reject("canceled"),t.clearInterval(e.$$intervalId),delete o[e.$$intervalId],!0):!1},i}]}function Dn(e){for(var t=e.split("/"),n=t.length;n--;)t[n]=nt(t[n]);return t.join("/")}function Pn(e,t){var n=Ma(e);t.$$protocol=n.protocol,t.$$host=n.hostname,t.$$port=m(n.port)||zo[n.protocol]||null
}function Fn(e,t){var n="/"!==e.charAt(0);n&&(e="/"+e);var a=Ma(e);t.$$path=decodeURIComponent(n&&"/"===a.pathname.charAt(0)?a.pathname.substring(1):a.pathname),t.$$search=et(a.search),t.$$hash=decodeURIComponent(a.hash),t.$$path&&"/"!=t.$$path.charAt(0)&&(t.$$path="/"+t.$$path)}function Rn(e,t){return 0===t.indexOf(e)?t.substr(e.length):void 0}function Nn(e){var t=e.indexOf("#");return-1==t?e:e.substr(0,t)}function Un(e){return e.replace(/(#.+)|#$/,"$1")}function On(e){return e.substr(0,Nn(e).lastIndexOf("/")+1)}function Bn(e){return e.substring(0,e.indexOf("/",e.indexOf("//")+2))}function Ln(e,t,n){this.$$html5=!0,n=n||"",Pn(e,this),this.$$parse=function(e){var n=Rn(t,e);if(!$(n))throw Wo("ipthprfx",'Invalid url "{0}", missing path prefix "{1}".',e,t);Fn(n,this),this.$$path||(this.$$path="/"),this.$$compose()},this.$$compose=function(){var e=tt(this.$$search),n=this.$$hash?"#"+nt(this.$$hash):"";this.$$url=Dn(this.$$path)+(e?"?"+e:"")+n,this.$$absUrl=t+this.$$url.substr(1)},this.$$parseLinkUrl=function(a,i){if(i&&"#"===i[0])return this.hash(i.slice(1)),!0;var o,s,r;return b(o=Rn(e,a))?(s=o,r=b(o=Rn(n,o))?t+(Rn("/",o)||o):e+s):b(o=Rn(t,a))?r=t+o:t==a+"/"&&(r=t),r&&this.$$parse(r),!!r}}function jn(e,t,n){Pn(e,this),this.$$parse=function(a){function i(e,t,n){var a,i=/^\/[A-Z]:(\/.*)/;return 0===t.indexOf(n)&&(t=t.replace(n,"")),i.exec(t)?e:(a=i.exec(e),a?a[1]:e)}var o,s=Rn(e,a)||Rn(t,a);y(s)||"#"!==s.charAt(0)?this.$$html5?o=s:(o="",y(s)&&(e=a,this.replace())):(o=Rn(n,s),y(o)&&(o=s)),Fn(o,this),this.$$path=i(this.$$path,o,e),this.$$compose()},this.$$compose=function(){var t=tt(this.$$search),a=this.$$hash?"#"+nt(this.$$hash):"";this.$$url=Dn(this.$$path)+(t?"?"+t:"")+a,this.$$absUrl=e+(this.$$url?n+this.$$url:"")},this.$$parseLinkUrl=function(t){return Nn(e)==Nn(t)?(this.$$parse(t),!0):!1}}function qn(e,t,n){this.$$html5=!0,jn.apply(this,arguments),this.$$parseLinkUrl=function(a,i){if(i&&"#"===i[0])return this.hash(i.slice(1)),!0;var o,s;return e==Nn(a)?o=a:(s=Rn(t,a))?o=e+n+s:t===a+"/"&&(o=t),o&&this.$$parse(o),!!o},this.$$compose=function(){var t=tt(this.$$search),a=this.$$hash?"#"+nt(this.$$hash):"";this.$$url=Dn(this.$$path)+(t?"?"+t:"")+a,this.$$absUrl=e+n+this.$$url}}function Hn(e){return function(){return this[e]}}function Vn(e,t){return function(n){return y(n)?this[e]:(this[e]=t(n),this.$$compose(),this)}}function zn(){var e="",t={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(t){return b(t)?(e=t,this):e},this.html5Mode=function(e){return P(e)?(t.enabled=e,this):w(e)?(P(e.enabled)&&(t.enabled=e.enabled),P(e.requireBase)&&(t.requireBase=e.requireBase),P(e.rewriteLinks)&&(t.rewriteLinks=e.rewriteLinks),this):t},this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(n,a,i,o,s){function r(e,t,n){var i=c.url(),o=c.$$state;try{a.url(e,t,n),c.$$state=a.state()}catch(s){throw c.url(i),c.$$state=o,s}}function l(e,t){n.$broadcast("$locationChangeSuccess",c.absUrl(),e,c.$$state,t)}var c,d,u,p=a.baseHref(),m=a.url();if(t.enabled){if(!p&&t.requireBase)throw Wo("nobase","$location in HTML5 mode requires a <base> tag to be present!");u=Bn(m)+(p||"/"),d=i.history?Ln:qn}else u=Nn(m),d=jn;var g=On(u);c=new d(u,g,"#"+e),c.$$parseLinkUrl(m,m),c.$$state=a.state();var h=/^\s*(javascript|mailto):/i;o.on("click",function(e){if(t.rewriteLinks&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey&&2!=e.which&&2!=e.button){for(var i=Mi(e.target);"a"!==O(i[0]);)if(i[0]===o[0]||!(i=i.parent())[0])return;var r=i.prop("href"),l=i.attr("href")||i.attr("xlink:href");w(r)&&"[object SVGAnimatedString]"===r.toString()&&(r=Ma(r.animVal).href),h.test(r)||!r||i.attr("target")||e.isDefaultPrevented()||c.$$parseLinkUrl(r,l)&&(e.preventDefault(),c.absUrl()!=a.url()&&(n.$apply(),s.angular["ff-684208-preventDefault"]=!0))}}),Un(c.absUrl())!=Un(m)&&a.url(c.absUrl(),!0);var f=!0;return a.onUrlChange(function(e,t){return y(Rn(g,e))?void(s.location.href=e):(n.$evalAsync(function(){var a,i=c.absUrl(),o=c.$$state;c.$$parse(e),c.$$state=t,a=n.$broadcast("$locationChangeStart",e,i,t,o).defaultPrevented,c.absUrl()===e&&(a?(c.$$parse(i),c.$$state=o,r(i,!1,o)):(f=!1,l(i,o)))}),void(n.$$phase||n.$digest()))}),n.$watch(function(){var e=Un(a.url()),t=Un(c.absUrl()),o=a.state(),s=c.$$replace,d=e!==t||c.$$html5&&i.history&&o!==c.$$state;(f||d)&&(f=!1,n.$evalAsync(function(){var t=c.absUrl(),a=n.$broadcast("$locationChangeStart",t,e,c.$$state,o).defaultPrevented;c.absUrl()===t&&(a?(c.$$parse(e),c.$$state=o):(d&&r(t,s,o===c.$$state?null:c.$$state),l(e,o)))})),c.$$replace=!1}),c}]}function Wn(){var e=!0,t=this;this.debugEnabled=function(t){return b(t)?(e=t,this):e},this.$get=["$window",function(n){function a(e){return e instanceof Error&&(e.stack?e=e.message&&-1===e.stack.indexOf(e.message)?"Error: "+e.message+"\n"+e.stack:e.stack:e.sourceURL&&(e=e.message+"\n"+e.sourceURL+":"+e.line)),e}function i(e){var t=n.console||{},i=t[e]||t.log||h,s=!1;try{s=!!i.apply}catch(r){}return s?function(){var e=[];return o(arguments,function(t){e.push(a(t))}),i.apply(t,e)}:function(e,t){i(e,null==t?"":t)}}return{log:i("log"),info:i("info"),warn:i("warn"),error:i("error"),debug:function(){var n=i("debug");return function(){e&&n.apply(t,arguments)}}()}}]}function Gn(e,t){if("__defineGetter__"===e||"__defineSetter__"===e||"__lookupGetter__"===e||"__lookupSetter__"===e||"__proto__"===e)throw Ko("isecfld","Attempting to access a disallowed field in Angular expressions! Expression: {0}",t);return e}function Kn(e,t){if(e+="",!$(e))throw Ko("iseccst","Cannot convert object to primitive value! Expression: {0}",t);return e}function Yn(e,t){if(e){if(e.constructor===e)throw Ko("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",t);if(e.window===e)throw Ko("isecwindow","Referencing the Window in Angular expressions is disallowed! Expression: {0}",t);if(e.children&&(e.nodeName||e.prop&&e.attr&&e.find))throw Ko("isecdom","Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}",t);if(e===Object)throw Ko("isecobj","Referencing Object in Angular expressions is disallowed! Expression: {0}",t)}return e}function Zn(e,t){if(e){if(e.constructor===e)throw Ko("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",t);if(e===Yo||e===Zo||e===Xo)throw Ko("isecff","Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}",t)}}function Xn(e,t){if(e&&(e===0..constructor||e===(!1).constructor||e==="".constructor||e==={}.constructor||e===[].constructor||e===Function.constructor))throw Ko("isecaf","Assigning to a constructor is disallowed! Expression: {0}",t)}function Jn(e,t){return"undefined"!=typeof e?e:t}function Qn(e,t){return"undefined"==typeof e?t:"undefined"==typeof t?e:e+t}function ea(e,t){var n=e(t);return!n.$stateful}function ta(e,t){var n,a;switch(e.type){case ts.Program:n=!0,o(e.body,function(e){ta(e.expression,t),n=n&&e.expression.constant}),e.constant=n;break;case ts.Literal:e.constant=!0,e.toWatch=[];break;case ts.UnaryExpression:ta(e.argument,t),e.constant=e.argument.constant,e.toWatch=e.argument.toWatch;break;case ts.BinaryExpression:ta(e.left,t),ta(e.right,t),e.constant=e.left.constant&&e.right.constant,e.toWatch=e.left.toWatch.concat(e.right.toWatch);break;case ts.LogicalExpression:ta(e.left,t),ta(e.right,t),e.constant=e.left.constant&&e.right.constant,e.toWatch=e.constant?[]:[e];break;case ts.ConditionalExpression:ta(e.test,t),ta(e.alternate,t),ta(e.consequent,t),e.constant=e.test.constant&&e.alternate.constant&&e.consequent.constant,e.toWatch=e.constant?[]:[e];break;case ts.Identifier:e.constant=!1,e.toWatch=[e];break;case ts.MemberExpression:ta(e.object,t),e.computed&&ta(e.property,t),e.constant=e.object.constant&&(!e.computed||e.property.constant),e.toWatch=[e];break;case ts.CallExpression:n=e.filter?ea(t,e.callee.name):!1,a=[],o(e.arguments,function(e){ta(e,t),n=n&&e.constant,e.constant||a.push.apply(a,e.toWatch)}),e.constant=n,e.toWatch=e.filter&&ea(t,e.callee.name)?a:[e];break;case ts.AssignmentExpression:ta(e.left,t),ta(e.right,t),e.constant=e.left.constant&&e.right.constant,e.toWatch=[e];break;case ts.ArrayExpression:n=!0,a=[],o(e.elements,function(e){ta(e,t),n=n&&e.constant,e.constant||a.push.apply(a,e.toWatch)}),e.constant=n,e.toWatch=a;break;case ts.ObjectExpression:n=!0,a=[],o(e.properties,function(e){ta(e.value,t),n=n&&e.value.constant,e.value.constant||a.push.apply(a,e.value.toWatch)}),e.constant=n,e.toWatch=a;break;case ts.ThisExpression:e.constant=!1,e.toWatch=[]}}function na(e){if(1==e.length){var t=e[0].expression,a=t.toWatch;return 1!==a.length?a:a[0]!==t?a:n}}function aa(e){return e.type===ts.Identifier||e.type===ts.MemberExpression}function ia(e){return 1===e.body.length&&aa(e.body[0].expression)?{type:ts.AssignmentExpression,left:e.body[0].expression,right:{type:ts.NGValueParameter},operator:"="}:void 0}function oa(e){return 0===e.body.length||1===e.body.length&&(e.body[0].expression.type===ts.Literal||e.body[0].expression.type===ts.ArrayExpression||e.body[0].expression.type===ts.ObjectExpression)}function sa(e){return e.constant}function ra(e,t){this.astBuilder=e,this.$filter=t}function la(e,t){this.astBuilder=e,this.$filter=t}function ca(e){return"constructor"==e}function da(e){return M(e.valueOf)?e.valueOf():as.call(e)}function ua(){var e=ft(),t=ft();this.$get=["$filter",function(a){function i(e,t){return null==e||null==t?e===t:"object"==typeof e&&(e=da(e),"object"==typeof e)?!1:e===t||e!==e&&t!==t}function s(e,t,a,o,s){var r,l=o.inputs;if(1===l.length){var c=i;return l=l[0],e.$watch(function(e){var t=l(e);return i(t,c)||(r=o(e,n,n,[t]),c=t&&da(t)),r},t,a,s)}for(var d=[],u=[],p=0,m=l.length;m>p;p++)d[p]=i,u[p]=null;return e.$watch(function(e){for(var t=!1,a=0,s=l.length;s>a;a++){var c=l[a](e);(t||(t=!i(c,d[a])))&&(u[a]=c,d[a]=c&&da(c))}return t&&(r=o(e,n,n,u)),r},t,a,s)}function r(e,t,n,a){var i,o;return i=e.$watch(function(e){return a(e)},function(e,n,a){o=e,M(t)&&t.apply(this,arguments),b(e)&&a.$$postDigest(function(){b(o)&&i()})},n)}function l(e,t,n,a){function i(e){var t=!0;return o(e,function(e){b(e)||(t=!1)}),t}var s,r;return s=e.$watch(function(e){return a(e)},function(e,n,a){r=e,M(t)&&t.call(this,e,n,a),i(e)&&a.$$postDigest(function(){i(r)&&s()})},n)}function c(e,t,n,a){var i;return i=e.$watch(function(e){return a(e)},function(){M(t)&&t.apply(this,arguments),i()},n)}function d(e,t){if(!t)return e;var n=e.$$watchDelegate,a=n!==l&&n!==r,i=a?function(n,a,i,o){var s=e(n,a,i,o);return t(s,n,a)}:function(n,a,i,o){var s=e(n,a,i,o),r=t(s,n,a);return b(s)?r:s};return e.$$watchDelegate&&e.$$watchDelegate!==s?i.$$watchDelegate=e.$$watchDelegate:t.$stateful||(i.$$watchDelegate=s,i.inputs=e.inputs?e.inputs:[e]),i}var u=qi().noUnsafeEval,p={csp:u,expensiveChecks:!1},m={csp:u,expensiveChecks:!0};return function(n,i,o){var u,g,f;switch(typeof n){case"string":n=n.trim(),f=n;var _=o?t:e;if(u=_[f],!u){":"===n.charAt(0)&&":"===n.charAt(1)&&(g=!0,n=n.substring(2));var v=o?m:p,y=new es(v),b=new ns(y,a,v);u=b.parse(n),u.constant?u.$$watchDelegate=c:g?u.$$watchDelegate=u.literal?l:r:u.inputs&&(u.$$watchDelegate=s),_[f]=u}return d(u,i);case"function":return d(n,i);default:return h}}}]}function pa(){this.$get=["$rootScope","$exceptionHandler",function(e,t){return ga(function(t){e.$evalAsync(t)},t)}]}function ma(){this.$get=["$browser","$exceptionHandler",function(e,t){return ga(function(t){e.defer(t)},t)}]}function ga(e,t){function i(e,t,n){function a(t){return function(n){i||(i=!0,t.call(e,n))}}var i=!1;return[a(t),a(n)]}function s(){this.$$state={status:0}}function r(e,t){return function(n){t.call(e,n)}}function l(e){var a,i,o;o=e.pending,e.processScheduled=!1,e.pending=n;for(var s=0,r=o.length;r>s;++s){i=o[s][0],a=o[s][e.status];try{M(a)?i.resolve(a(e.value)):1===e.status?i.resolve(e.value):i.reject(e.value)}catch(l){i.reject(l),t(l)}}}function c(t){!t.processScheduled&&t.pending&&(t.processScheduled=!0,e(function(){l(t)}))}function d(){this.promise=new s,this.resolve=r(this,this.resolve),this.reject=r(this,this.reject),this.notify=r(this,this.notify)}function p(e){var t=new d,n=0,a=Oi(e)?[]:{};return o(e,function(e,i){n++,v(e).then(function(e){a.hasOwnProperty(i)||(a[i]=e,--n||t.resolve(a))},function(e){a.hasOwnProperty(i)||t.reject(e)})}),0===n&&t.resolve(a),t.promise}var m=a("$q",TypeError),g=function(){return new d};u(s.prototype,{then:function(e,t,n){if(y(e)&&y(t)&&y(n))return this;var a=new d;return this.$$state.pending=this.$$state.pending||[],this.$$state.pending.push([a,e,t,n]),this.$$state.status>0&&c(this.$$state),a.promise},"catch":function(e){return this.then(null,e)},"finally":function(e,t){return this.then(function(t){return _(t,!0,e)},function(t){return _(t,!1,e)},t)}}),u(d.prototype,{resolve:function(e){this.promise.$$state.status||(e===this.promise?this.$$reject(m("qcycle","Expected promise to be resolved with value other than itself '{0}'",e)):this.$$resolve(e))},$$resolve:function(e){var n,a;a=i(this,this.$$resolve,this.$$reject);try{(w(e)||M(e))&&(n=e&&e.then),M(n)?(this.promise.$$state.status=-1,n.call(e,a[0],a[1],this.notify)):(this.promise.$$state.value=e,this.promise.$$state.status=1,c(this.promise.$$state))}catch(o){a[1](o),t(o)}},reject:function(e){this.promise.$$state.status||this.$$reject(e)},$$reject:function(e){this.promise.$$state.value=e,this.promise.$$state.status=2,c(this.promise.$$state)},notify:function(n){var a=this.promise.$$state.pending;this.promise.$$state.status<=0&&a&&a.length&&e(function(){for(var e,i,o=0,s=a.length;s>o;o++){i=a[o][0],e=a[o][3];try{i.notify(M(e)?e(n):n)}catch(r){t(r)}}})}});var h=function(e){var t=new d;return t.reject(e),t.promise},f=function(e,t){var n=new d;return t?n.resolve(e):n.reject(e),n.promise},_=function(e,t,n){var a=null;try{M(n)&&(a=n())}catch(i){return f(i,!1)}return F(a)?a.then(function(){return f(e,t)},function(e){return f(e,!1)}):f(e,t)},v=function(e,t,n,a){var i=new d;return i.resolve(e),i.promise.then(t,n,a)},b=v,k=function $(e){function t(e){a.resolve(e)}function n(e){a.reject(e)}if(!M(e))throw m("norslvr","Expected resolverFn, got '{0}'",e);if(!(this instanceof $))return new $(e);var a=new d;return e(t,n),a.promise};return k.defer=g,k.reject=h,k.when=v,k.resolve=b,k.all=p,k}function ha(){this.$get=["$window","$timeout",function(e,t){var n=e.requestAnimationFrame||e.webkitRequestAnimationFrame,a=e.cancelAnimationFrame||e.webkitCancelAnimationFrame||e.webkitCancelRequestAnimationFrame,i=!!n,o=i?function(e){var t=n(e);return function(){a(t)}}:function(e){var n=t(e,16.66,!1);return function(){t.cancel(n)}};return o.supported=i,o}]}function fa(){function e(e){function t(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null,this.$$listeners={},this.$$listenerCount={},this.$$watchersCount=0,this.$id=l(),this.$$ChildScope=null}return t.prototype=e,t}var t=10,n=a("$rootScope"),s=null,r=null;this.digestTtl=function(e){return arguments.length&&(t=e),t},this.$get=["$injector","$exceptionHandler","$parse","$browser",function(a,c,d,u){function p(e){e.currentScope.$$destroyed=!0}function m(){this.$id=l(),this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null,this.$root=this,this.$$destroyed=!1,this.$$listeners={},this.$$listenerCount={},this.$$watchersCount=0,this.$$isolateBindings=null}function g(e){if(C.$$phase)throw n("inprog","{0} already in progress",C.$$phase);C.$$phase=e}function f(){C.$$phase=null}function _(e,t){do e.$$watchersCount+=t;while(e=e.$parent)}function v(e,t,n){do e.$$listenerCount[n]-=t,0===e.$$listenerCount[n]&&delete e.$$listenerCount[n];while(e=e.$parent)}function b(){}function k(){for(;I.length;)try{I.shift()()}catch(e){c(e)}r=null}function $(){null===r&&(r=u.defer(function(){C.$apply(k)}))}m.prototype={constructor:m,$new:function(t,n){var a;return n=n||this,t?(a=new m,a.$root=this.$root):(this.$$ChildScope||(this.$$ChildScope=e(this)),a=new this.$$ChildScope),a.$parent=n,a.$$prevSibling=n.$$childTail,n.$$childHead?(n.$$childTail.$$nextSibling=a,n.$$childTail=a):n.$$childHead=n.$$childTail=a,(t||n!=this)&&a.$on("$destroy",p),a},$watch:function(e,t,n,a){var i=d(e);if(i.$$watchDelegate)return i.$$watchDelegate(this,t,n,i,e);var o=this,r=o.$$watchers,l={fn:t,last:b,get:i,exp:a||e,eq:!!n};return s=null,M(t)||(l.fn=h),r||(r=o.$$watchers=[]),r.unshift(l),_(this,1),function(){B(r,l)>=0&&_(o,-1),s=null}},$watchGroup:function(e,t){function n(){l=!1,c?(c=!1,t(i,i,r)):t(i,a,r)}var a=new Array(e.length),i=new Array(e.length),s=[],r=this,l=!1,c=!0;if(!e.length){var d=!0;return r.$evalAsync(function(){d&&t(i,i,r)}),function(){d=!1}}return 1===e.length?this.$watch(e[0],function(e,n,o){i[0]=e,a[0]=n,t(i,e===n?i:a,o)}):(o(e,function(e,t){var o=r.$watch(e,function(e,o){i[t]=e,a[t]=o,l||(l=!0,r.$evalAsync(n))});s.push(o)}),function(){for(;s.length;)s.shift()()})},$watchCollection:function(e,t){function n(e){o=e;var t,n,a,r,l;if(!y(o)){if(w(o))if(i(o)){s!==m&&(s=m,f=s.length=0,u++),t=o.length,f!==t&&(u++,s.length=f=t);for(var c=0;t>c;c++)l=s[c],r=o[c],a=l!==l&&r!==r,a||l===r||(u++,s[c]=r)}else{s!==g&&(s=g={},f=0,u++),t=0;for(n in o)wi.call(o,n)&&(t++,r=o[n],l=s[n],n in s?(a=l!==l&&r!==r,a||l===r||(u++,s[n]=r)):(f++,s[n]=r,u++));if(f>t){u++;for(n in s)wi.call(o,n)||(f--,delete s[n])}}else s!==o&&(s=o,u++);return u}}function a(){if(h?(h=!1,t(o,o,l)):t(o,r,l),c)if(w(o))if(i(o)){r=new Array(o.length);for(var e=0;e<o.length;e++)r[e]=o[e]}else{r={};for(var n in o)wi.call(o,n)&&(r[n]=o[n])}else r=o}n.$stateful=!0;var o,s,r,l=this,c=t.length>1,u=0,p=d(e,n),m=[],g={},h=!0,f=0;return this.$watch(p,a)},$digest:function(){var e,a,i,o,l,d,p,m,h,_,v=t,y=this,w=[];g("$digest"),u.$$checkUrlChange(),this===C&&null!==r&&(u.defer.cancel(r),k()),s=null;do{for(d=!1,m=y;S.length;){try{_=S.shift(),_.scope.$eval(_.expression,_.locals)}catch($){c($)}s=null}e:do{if(o=m.$$watchers)for(l=o.length;l--;)try{if(e=o[l])if((a=e.get(m))===(i=e.last)||(e.eq?q(a,i):"number"==typeof a&&"number"==typeof i&&isNaN(a)&&isNaN(i))){if(e===s){d=!1;break e}}else d=!0,s=e,e.last=e.eq?L(a,null):a,e.fn(a,i===b?a:i,m),5>v&&(h=4-v,w[h]||(w[h]=[]),w[h].push({msg:M(e.exp)?"fn: "+(e.exp.name||e.exp.toString()):e.exp,newVal:a,oldVal:i}))}catch($){c($)}if(!(p=m.$$watchersCount&&m.$$childHead||m!==y&&m.$$nextSibling))for(;m!==y&&!(p=m.$$nextSibling);)m=m.$parent}while(m=p);if((d||S.length)&&!v--)throw f(),n("infdig","{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}",t,w)}while(d||S.length);for(f();x.length;)try{x.shift()()}catch($){c($)}},$destroy:function(){if(!this.$$destroyed){var e=this.$parent;this.$broadcast("$destroy"),this.$$destroyed=!0,this===C&&u.$$applicationDestroyed(),_(this,-this.$$watchersCount);for(var t in this.$$listenerCount)v(this,this.$$listenerCount[t],t);e&&e.$$childHead==this&&(e.$$childHead=this.$$nextSibling),e&&e.$$childTail==this&&(e.$$childTail=this.$$prevSibling),this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling),this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling),this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=h,this.$on=this.$watch=this.$watchGroup=function(){return h},this.$$listeners={},this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=this.$$watchers=null}},$eval:function(e,t){return d(e)(this,t)},$evalAsync:function(e,t){C.$$phase||S.length||u.defer(function(){S.length&&C.$digest()}),S.push({scope:this,expression:e,locals:t})},$$postDigest:function(e){x.push(e)},$apply:function(e){try{g("$apply");try{return this.$eval(e)}finally{f()}}catch(t){c(t)}finally{try{C.$digest()}catch(t){throw c(t),t}}},$applyAsync:function(e){function t(){n.$eval(e)}var n=this;e&&I.push(t),$()},$on:function(e,t){var n=this.$$listeners[e];n||(this.$$listeners[e]=n=[]),n.push(t);var a=this;do a.$$listenerCount[e]||(a.$$listenerCount[e]=0),a.$$listenerCount[e]++;while(a=a.$parent);var i=this;return function(){var a=n.indexOf(t);-1!==a&&(n[a]=null,v(i,1,e))}},$emit:function(e){var t,n,a,i=[],o=this,s=!1,r={name:e,targetScope:o,stopPropagation:function(){s=!0},preventDefault:function(){r.defaultPrevented=!0},defaultPrevented:!1},l=H([r],arguments,1);do{for(t=o.$$listeners[e]||i,r.currentScope=o,n=0,a=t.length;a>n;n++)if(t[n])try{t[n].apply(null,l)}catch(d){c(d)}else t.splice(n,1),n--,a--;if(s)return r.currentScope=null,r;o=o.$parent}while(o);return r.currentScope=null,r},$broadcast:function(e){var t=this,n=t,a=t,i={name:e,targetScope:t,preventDefault:function(){i.defaultPrevented=!0},defaultPrevented:!1};if(!t.$$listenerCount[e])return i;for(var o,s,r,l=H([i],arguments,1);n=a;){for(i.currentScope=n,o=n.$$listeners[e]||[],s=0,r=o.length;r>s;s++)if(o[s])try{o[s].apply(null,l)}catch(d){c(d)}else o.splice(s,1),s--,r--;if(!(a=n.$$listenerCount[e]&&n.$$childHead||n!==t&&n.$$nextSibling))for(;n!==t&&!(a=n.$$nextSibling);)n=n.$parent}return i.currentScope=null,i}};var C=new m,S=C.$$asyncQueue=[],x=C.$$postDigestQueue=[],I=C.$$applyAsyncQueue=[];return C}]}function _a(){var e=/^\s*(https?|ftp|mailto|tel|file):/,t=/^\s*((https?|ftp|file|blob):|data:image\/)/;this.aHrefSanitizationWhitelist=function(t){return b(t)?(e=t,this):e},this.imgSrcSanitizationWhitelist=function(e){return b(e)?(t=e,this):t},this.$get=function(){return function(n,a){var i,o=a?t:e;return i=Ma(n).href,""===i||i.match(o)?n:"unsafe:"+i}}}function va(e){if("self"===e)return e;if($(e)){if(e.indexOf("***")>-1)throw is("iwcard","Illegal sequence *** in string matcher. String: {0}",e);return e=ji(e).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*"),new RegExp("^"+e+"$")}if(x(e))return new RegExp("^"+e.source+"$");throw is("imatcher",'Matchers may only be "self", string patterns or RegExp objects')}function ya(e){var t=[];return b(e)&&o(e,function(e){t.push(va(e))}),t}function ba(){this.SCE_CONTEXTS=os;var e=["self"],t=[];this.resourceUrlWhitelist=function(t){return arguments.length&&(e=ya(t)),e},this.resourceUrlBlacklist=function(e){return arguments.length&&(t=ya(e)),t},this.$get=["$injector",function(n){function a(e,t){return"self"===e?xa(t):!!e.exec(t.href)}function i(n){var i,o,s=Ma(n.toString()),r=!1;for(i=0,o=e.length;o>i;i++)if(a(e[i],s)){r=!0;break}if(r)for(i=0,o=t.length;o>i;i++)if(a(t[i],s)){r=!1;break}return r}function o(e){var t=function(e){this.$$unwrapTrustedValue=function(){return e}};return e&&(t.prototype=new e),t.prototype.valueOf=function(){return this.$$unwrapTrustedValue()},t.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()},t}function s(e,t){var n=u.hasOwnProperty(e)?u[e]:null;if(!n)throw is("icontext","Attempted to trust a value in invalid context. Context: {0}; Value: {1}",e,t);if(null===t||y(t)||""===t)return t;if("string"!=typeof t)throw is("itype","Attempted to trust a non-string value in a content requiring a string: Context: {0}",e);return new n(t)}function r(e){return e instanceof d?e.$$unwrapTrustedValue():e}function l(e,t){if(null===t||y(t)||""===t)return t;var n=u.hasOwnProperty(e)?u[e]:null;if(n&&t instanceof n)return t.$$unwrapTrustedValue();if(e===os.RESOURCE_URL){if(i(t))return t;throw is("insecurl","Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}",t.toString())}if(e===os.HTML)return c(t);throw is("unsafe","Attempting to use an unsafe value in a safe context.")}var c=function(){throw is("unsafe","Attempting to use an unsafe value in a safe context.")};n.has("$sanitize")&&(c=n.get("$sanitize"));var d=o(),u={};return u[os.HTML]=o(d),u[os.CSS]=o(d),u[os.URL]=o(d),u[os.JS]=o(d),u[os.RESOURCE_URL]=o(u[os.URL]),{trustAs:s,getTrusted:l,valueOf:r}}]}function wa(){var e=!0;this.enabled=function(t){return arguments.length&&(e=!!t),e},this.$get=["$parse","$sceDelegate",function(t,n){if(e&&8>Si)throw is("iequirks","Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks mode. You can fix this by adding the text <!doctype html> to the top of your HTML document. See http://docs.angularjs.org/api/ng.$sce for more information.");var a=j(os);a.isEnabled=function(){return e},a.trustAs=n.trustAs,a.getTrusted=n.getTrusted,a.valueOf=n.valueOf,e||(a.trustAs=a.getTrusted=function(e,t){return t},a.valueOf=f),a.parseAs=function(e,n){var i=t(n);return i.literal&&i.constant?i:t(n,function(t){return a.getTrusted(e,t)})};var i=a.parseAs,s=a.getTrusted,r=a.trustAs;return o(os,function(e,t){var n=bi(t);a[kt("parse_as_"+n)]=function(t){return i(e,t)},a[kt("get_trusted_"+n)]=function(t){return s(e,t)},a[kt("trust_as_"+n)]=function(t){return r(e,t)}}),a}]}function ka(){this.$get=["$window","$document",function(e,t){var n,a,i={},o=m((/android (\d+)/.exec(bi((e.navigator||{}).userAgent))||[])[1]),s=/Boxee/i.test((e.navigator||{}).userAgent),r=t[0]||{},l=/^(Moz|webkit|ms)(?=[A-Z])/,c=r.body&&r.body.style,d=!1,u=!1;if(c){for(var p in c)if(a=l.exec(p)){n=a[0],n=n.substr(0,1).toUpperCase()+n.substr(1);break}n||(n="WebkitOpacity"in c&&"webkit"),d=!!("transition"in c||n+"Transition"in c),u=!!("animation"in c||n+"Animation"in c),!o||d&&u||(d=$(c.webkitTransition),u=$(c.webkitAnimation))}return{history:!(!e.history||!e.history.pushState||4>o||s),hasEvent:function(e){if("input"===e&&11>=Si)return!1;if(y(i[e])){var t=r.createElement("div");i[e]="on"+e in t}return i[e]},csp:qi(),vendorPrefix:n,transitions:d,animations:u,android:o}}]}function $a(){this.$get=["$templateCache","$http","$q","$sce",function(e,t,n,a){function i(o,s){function r(e){if(!s)throw To("tpload","Failed to load template: {0} (HTTP status: {1} {2})",o,e.status,e.statusText);return n.reject(e)}i.totalPendingRequests++,$(o)&&e.get(o)||(o=a.getTrustedResourceUrl(o));var l=t.defaults&&t.defaults.transformResponse;Oi(l)?l=l.filter(function(e){return e!==bn}):l===bn&&(l=null);var c={cache:e,transformResponse:l};return t.get(o,c)["finally"](function(){i.totalPendingRequests--}).then(function(t){return e.put(o,t.data),t.data},r)}return i.totalPendingRequests=0,i}]}function Ca(){this.$get=["$rootScope","$browser","$location",function(e,t,n){var a={};return a.findBindings=function(e,t,n){var a=e.getElementsByClassName("ng-binding"),i=[];return o(a,function(e){var a=Ri.element(e).data("$binding");a&&o(a,function(a){if(n){var o=new RegExp("(^|\\s)"+ji(t)+"(\\s|\\||$)");o.test(a)&&i.push(e)}else-1!=a.indexOf(t)&&i.push(e)})}),i},a.findModels=function(e,t,n){for(var a=["ng-","data-ng-","ng\\:"],i=0;i<a.length;++i){var o=n?"=":"*=",s="["+a[i]+"model"+o+'"'+t+'"]',r=e.querySelectorAll(s);if(r.length)return r}},a.getLocation=function(){return n.url()},a.setLocation=function(t){t!==n.url()&&(n.url(t),e.$digest())},a.whenStable=function(e){t.notifyWhenNoOutstandingRequests(e)},a}]}function Sa(){this.$get=["$rootScope","$browser","$q","$$q","$exceptionHandler",function(e,t,n,a,i){function o(o,r,l){M(o)||(l=r,r=o,o=h);var c,d=V(arguments,3),u=b(l)&&!l,p=(u?a:n).defer(),m=p.promise;return c=t.defer(function(){try{p.resolve(o.apply(null,d))}catch(t){p.reject(t),i(t)}finally{delete s[m.$$timeoutId]}u||e.$apply()},r),m.$$timeoutId=c,s[c]=p,m}var s={};return o.cancel=function(e){return e&&e.$$timeoutId in s?(s[e.$$timeoutId].reject("canceled"),delete s[e.$$timeoutId],t.defer.cancel(e.$$timeoutId)):!1},o}]}function Ma(e){var t=e;return Si&&(ss.setAttribute("href",t),t=ss.href),ss.setAttribute("href",t),{href:ss.href,protocol:ss.protocol?ss.protocol.replace(/:$/,""):"",host:ss.host,search:ss.search?ss.search.replace(/^\?/,""):"",hash:ss.hash?ss.hash.replace(/^#/,""):"",hostname:ss.hostname,port:ss.port,pathname:"/"===ss.pathname.charAt(0)?ss.pathname:"/"+ss.pathname}}function xa(e){var t=$(e)?Ma(e):e;return t.protocol===rs.protocol&&t.host===rs.host}function Ia(){this.$get=_(e)}function Aa(e){function t(e){try{return decodeURIComponent(e)}catch(t){return e}}var n=e[0]||{},a={},i="";return function(){var e,o,s,r,l,c=n.cookie||"";if(c!==i)for(i=c,e=i.split("; "),a={},s=0;s<e.length;s++)o=e[s],r=o.indexOf("="),r>0&&(l=t(o.substring(0,r)),y(a[l])&&(a[l]=t(o.substring(r+1))));return a}}function Ea(){this.$get=Aa}function Ta(e){function t(a,i){if(w(a)){var s={};return o(a,function(e,n){s[n]=t(n,e)}),s}return e.factory(a+n,i)}var n="Filter";this.register=t,this.$get=["$injector",function(e){return function(t){return e.get(t+n)}}],t("currency",Na),t("date",Ya),t("filter",Da),t("json",Za),t("limitTo",Xa),t("lowercase",ps),t("number",Ua),t("orderBy",Ja),t("uppercase",ms)}function Da(){return function(e,t,n){if(!i(e)){if(null==e)return e;throw a("filter")("notarray","Expected array but received: {0}",e)}var o,s,r=Ra(t);switch(r){case"function":o=t;break;case"boolean":case"null":case"number":case"string":s=!0;case"object":o=Pa(t,n,s);break;default:return e}return Array.prototype.filter.call(e,o)}}function Pa(e,t,n){var a,i=w(e)&&"$"in e;return t===!0?t=q:M(t)||(t=function(e,t){return y(e)?!1:null===e||null===t?e===t:w(t)||w(e)&&!v(e)?!1:(e=bi(""+e),t=bi(""+t),-1!==e.indexOf(t))}),a=function(a){return i&&!w(a)?Fa(a,e.$,t,!1):Fa(a,e,t,n)}}function Fa(e,t,n,a,i){var o=Ra(e),s=Ra(t);if("string"===s&&"!"===t.charAt(0))return!Fa(e,t.substring(1),n,a);if(Oi(e))return e.some(function(e){return Fa(e,t,n,a)});switch(o){case"object":var r;if(a){for(r in e)if("$"!==r.charAt(0)&&Fa(e[r],t,n,!0))return!0;return i?!1:Fa(e,t,n,!1)}if("object"===s){for(r in t){var l=t[r];if(!M(l)&&!y(l)){var c="$"===r,d=c?e:e[r];if(!Fa(d,l,n,c,c))return!1}}return!0}return n(e,t);case"function":return!1;default:return n(e,t)}}function Ra(e){return null===e?"null":typeof e}function Na(e){var t=e.NUMBER_FORMATS;return function(e,n,a){return y(n)&&(n=t.CURRENCY_SYM),y(a)&&(a=t.PATTERNS[1].maxFrac),null==e?e:Oa(e,t.PATTERNS[1],t.GROUP_SEP,t.DECIMAL_SEP,a).replace(/\u00A4/g,n)}}function Ua(e){var t=e.NUMBER_FORMATS;return function(e,n){return null==e?e:Oa(e,t.PATTERNS[0],t.GROUP_SEP,t.DECIMAL_SEP,n)}}function Oa(e,t,n,a,i){if(w(e))return"";var o=0>e;e=Math.abs(e);var s=1/0===e;if(!s&&!isFinite(e))return"";var r=e+"",l="",c=!1,d=[];if(s&&(l="∞"),!s&&-1!==r.indexOf("e")){var u=r.match(/([\d\.]+)e(-?)(\d+)/);u&&"-"==u[2]&&u[3]>i+1?e=0:(l=r,c=!0)}if(s||c)i>0&&1>e&&(l=e.toFixed(i),e=parseFloat(l),l=l.replace(ls,a));else{var p=(r.split(ls)[1]||"").length;y(i)&&(i=Math.min(Math.max(t.minFrac,p),t.maxFrac)),e=+(Math.round(+(e.toString()+"e"+i)).toString()+"e"+-i);var m=(""+e).split(ls),g=m[0];m=m[1]||"";var h,f=0,_=t.lgSize,v=t.gSize;if(g.length>=_+v)for(f=g.length-_,h=0;f>h;h++)(f-h)%v===0&&0!==h&&(l+=n),l+=g.charAt(h);for(h=f;h<g.length;h++)(g.length-h)%_===0&&0!==h&&(l+=n),l+=g.charAt(h);for(;m.length<i;)m+="0";i&&"0"!==i&&(l+=a+m.substr(0,i))}return 0===e&&(o=!1),d.push(o?t.negPre:t.posPre,l,o?t.negSuf:t.posSuf),d.join("")}function Ba(e,t,n){var a="";for(0>e&&(a="-",e=-e),e=""+e;e.length<t;)e="0"+e;return n&&(e=e.substr(e.length-t)),a+e}function La(e,t,n,a){return n=n||0,function(i){var o=i["get"+e]();return(n>0||o>-n)&&(o+=n),0===o&&-12==n&&(o=12),Ba(o,t,a)}}function ja(e,t){return function(n,a){var i=n["get"+e](),o=ki(t?"SHORT"+e:e);return a[o][i]}}function qa(e,t,n){var a=-1*n,i=a>=0?"+":"";return i+=Ba(Math[a>0?"floor":"ceil"](a/60),2)+Ba(Math.abs(a%60),2)}function Ha(e){var t=new Date(e,0,1).getDay();return new Date(e,0,(4>=t?5:12)-t)}function Va(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate()+(4-e.getDay()))}function za(e){return function(t){var n=Ha(t.getFullYear()),a=Va(t),i=+a-+n,o=1+Math.round(i/6048e5);return Ba(o,e)}}function Wa(e,t){return e.getHours()<12?t.AMPMS[0]:t.AMPMS[1]}function Ga(e,t){return e.getFullYear()<=0?t.ERAS[0]:t.ERAS[1]}function Ka(e,t){return e.getFullYear()<=0?t.ERANAMES[0]:t.ERANAMES[1]}function Ya(e){function t(e){var t;if(t=e.match(n)){var a=new Date(0),i=0,o=0,s=t[8]?a.setUTCFullYear:a.setFullYear,r=t[8]?a.setUTCHours:a.setHours;t[9]&&(i=m(t[9]+t[10]),o=m(t[9]+t[11])),s.call(a,m(t[1]),m(t[2])-1,m(t[3]));var l=m(t[4]||0)-i,c=m(t[5]||0)-o,d=m(t[6]||0),u=Math.round(1e3*parseFloat("0."+(t[7]||0)));return r.call(a,l,c,d,u),a}return e}var n=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(n,a,i){var s,r,l="",c=[];if(a=a||"mediumDate",a=e.DATETIME_FORMATS[a]||a,$(n)&&(n=us.test(n)?m(n):t(n)),C(n)&&(n=new Date(n)),!S(n)||!isFinite(n.getTime()))return n;
for(;a;)r=ds.exec(a),r?(c=H(c,r,1),a=c.pop()):(c.push(a),a=null);var d=n.getTimezoneOffset();return i&&(d=Y(i,n.getTimezoneOffset()),n=X(n,i,!0)),o(c,function(t){s=cs[t],l+=s?s(n,e.DATETIME_FORMATS,d):t.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),l}}function Za(){return function(e,t){return y(t)&&(t=2),G(e,t)}}function Xa(){return function(e,t,n){return t=1/0===Math.abs(Number(t))?Number(t):m(t),isNaN(t)?e:(C(e)&&(e=e.toString()),Oi(e)||$(e)?(n=!n||isNaN(n)?0:m(n),n=0>n&&n>=-e.length?e.length+n:n,t>=0?e.slice(n,n+t):0===n?e.slice(t,e.length):e.slice(Math.max(0,n+t),n)):e)}}function Ja(e){function t(t,n){return n=n?-1:1,t.map(function(t){var a=1,i=f;if(M(t))i=t;else if($(t)&&(("+"==t.charAt(0)||"-"==t.charAt(0))&&(a="-"==t.charAt(0)?-1:1,t=t.substring(1)),""!==t&&(i=e(t),i.constant))){var o=i();i=function(e){return e[o]}}return{get:i,descending:a*n}})}function n(e){switch(typeof e){case"number":case"boolean":case"string":return!0;default:return!1}}function a(e,t){return"function"==typeof e.valueOf&&(e=e.valueOf(),n(e))?e:v(e)&&(e=e.toString(),n(e))?e:t}function o(e,t){var n=typeof e;return null===e?(n="string",e="null"):"string"===n?e=e.toLowerCase():"object"===n&&(e=a(e,t)),{value:e,type:n}}function s(e,t){var n=0;return e.type===t.type?e.value!==t.value&&(n=e.value<t.value?-1:1):n=e.type<t.type?-1:1,n}return function(e,n,a){function r(e,t){return{value:e,predicateValues:c.map(function(n){return o(n.get(e),t)})}}function l(e,t){for(var n=0,a=0,i=c.length;i>a&&!(n=s(e.predicateValues[a],t.predicateValues[a])*c[a].descending);++a);return n}if(!i(e))return e;Oi(n)||(n=[n]),0===n.length&&(n=["+"]);var c=t(n,a);c.push({get:function(){return{}},descending:a?-1:1});var d=Array.prototype.map.call(e,r);return d.sort(l),e=d.map(function(e){return e.value})}}function Qa(e){return M(e)&&(e={link:e}),e.restrict=e.restrict||"AC",_(e)}function ei(e,t){e.$name=t}function ti(e,t,a,i,s){var r=this,l=[];r.$error={},r.$$success={},r.$pending=n,r.$name=s(t.name||t.ngForm||"")(a),r.$dirty=!1,r.$pristine=!0,r.$valid=!0,r.$invalid=!1,r.$submitted=!1,r.$$parentForm=fs,r.$rollbackViewValue=function(){o(l,function(e){e.$rollbackViewValue()})},r.$commitViewValue=function(){o(l,function(e){e.$commitViewValue()})},r.$addControl=function(e){mt(e.$name,"input"),l.push(e),e.$name&&(r[e.$name]=e),e.$$parentForm=r},r.$$renameControl=function(e,t){var n=e.$name;r[n]===e&&delete r[n],r[t]=e,e.$name=t},r.$removeControl=function(e){e.$name&&r[e.$name]===e&&delete r[e.$name],o(r.$pending,function(t,n){r.$setValidity(n,null,e)}),o(r.$error,function(t,n){r.$setValidity(n,null,e)}),o(r.$$success,function(t,n){r.$setValidity(n,null,e)}),B(l,e),e.$$parentForm=fs},fi({ctrl:this,$element:e,set:function(e,t,n){var a=e[t];if(a){var i=a.indexOf(n);-1===i&&a.push(n)}else e[t]=[n]},unset:function(e,t,n){var a=e[t];a&&(B(a,n),0===a.length&&delete e[t])},$animate:i}),r.$setDirty=function(){i.removeClass(e,Js),i.addClass(e,Qs),r.$dirty=!0,r.$pristine=!1,r.$$parentForm.$setDirty()},r.$setPristine=function(){i.setClass(e,Js,Qs+" "+_s),r.$dirty=!1,r.$pristine=!0,r.$submitted=!1,o(l,function(e){e.$setPristine()})},r.$setUntouched=function(){o(l,function(e){e.$setUntouched()})},r.$setSubmitted=function(){i.addClass(e,_s),r.$submitted=!0,r.$$parentForm.$setSubmitted()}}function ni(e){e.$formatters.push(function(t){return e.$isEmpty(t)?t:t.toString()})}function ai(e,t,n,a,i,o){ii(e,t,n,a,i,o),ni(a)}function ii(e,t,n,a,i,o){var s=bi(t[0].type);if(!i.android){var r=!1;t.on("compositionstart",function(){r=!0}),t.on("compositionend",function(){r=!1,l()})}var l=function(e){if(c&&(o.defer.cancel(c),c=null),!r){var i=t.val(),l=e&&e.type;"password"===s||n.ngTrim&&"false"===n.ngTrim||(i=Li(i)),(a.$viewValue!==i||""===i&&a.$$hasNativeValidators)&&a.$setViewValue(i,l)}};if(i.hasEvent("input"))t.on("input",l);else{var c,d=function(e,t,n){c||(c=o.defer(function(){c=null,t&&t.value===n||l(e)}))};t.on("keydown",function(e){var t=e.keyCode;91===t||t>15&&19>t||t>=37&&40>=t||d(e,this,this.value)}),i.hasEvent("paste")&&t.on("paste cut",d)}t.on("change",l),a.$render=function(){var e=a.$isEmpty(a.$viewValue)?"":a.$viewValue;t.val()!==e&&t.val(e)}}function oi(e,t){if(S(e))return e;if($(e)){xs.lastIndex=0;var n=xs.exec(e);if(n){var a=+n[1],i=+n[2],o=0,s=0,r=0,l=0,c=Ha(a),d=7*(i-1);return t&&(o=t.getHours(),s=t.getMinutes(),r=t.getSeconds(),l=t.getMilliseconds()),new Date(a,0,c.getDate()+d,o,s,r,l)}}return 0/0}function si(e,t){return function(n,a){var i,s;if(S(n))return n;if($(n)){if('"'==n.charAt(0)&&'"'==n.charAt(n.length-1)&&(n=n.substring(1,n.length-1)),ws.test(n))return new Date(n);if(e.lastIndex=0,i=e.exec(n))return i.shift(),s=a?{yyyy:a.getFullYear(),MM:a.getMonth()+1,dd:a.getDate(),HH:a.getHours(),mm:a.getMinutes(),ss:a.getSeconds(),sss:a.getMilliseconds()/1e3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},o(i,function(e,n){n<t.length&&(s[t[n]]=+e)}),new Date(s.yyyy,s.MM-1,s.dd,s.HH,s.mm,s.ss||0,1e3*s.sss||0)}return 0/0}}function ri(e,t,a,i){return function(o,s,r,l,c,d,u){function p(e){return e&&!(e.getTime&&e.getTime()!==e.getTime())}function m(e){return b(e)&&!S(e)?a(e)||n:e}li(o,s,r,l),ii(o,s,r,l,c,d);var g,h=l&&l.$options&&l.$options.timezone;if(l.$$parserName=e,l.$parsers.push(function(e){if(l.$isEmpty(e))return null;if(t.test(e)){var i=a(e,g);return h&&(i=X(i,h)),i}return n}),l.$formatters.push(function(e){if(e&&!S(e))throw ar("datefmt","Expected `{0}` to be a date",e);return p(e)?(g=e,g&&h&&(g=X(g,h,!0)),u("date")(e,i,h)):(g=null,"")}),b(r.min)||r.ngMin){var f;l.$validators.min=function(e){return!p(e)||y(f)||a(e)>=f},r.$observe("min",function(e){f=m(e),l.$validate()})}if(b(r.max)||r.ngMax){var _;l.$validators.max=function(e){return!p(e)||y(_)||a(e)<=_},r.$observe("max",function(e){_=m(e),l.$validate()})}}}function li(e,t,a,i){var o=t[0],s=i.$$hasNativeValidators=w(o.validity);s&&i.$parsers.push(function(e){var a=t.prop(yi)||{};return a.badInput&&!a.typeMismatch?n:e})}function ci(e,t,a,i,o,s){if(li(e,t,a,i),ii(e,t,a,i,o,s),i.$$parserName="number",i.$parsers.push(function(e){return i.$isEmpty(e)?null:Cs.test(e)?parseFloat(e):n}),i.$formatters.push(function(e){if(!i.$isEmpty(e)){if(!C(e))throw ar("numfmt","Expected `{0}` to be a number",e);e=e.toString()}return e}),b(a.min)||a.ngMin){var r;i.$validators.min=function(e){return i.$isEmpty(e)||y(r)||e>=r},a.$observe("min",function(e){b(e)&&!C(e)&&(e=parseFloat(e,10)),r=C(e)&&!isNaN(e)?e:n,i.$validate()})}if(b(a.max)||a.ngMax){var l;i.$validators.max=function(e){return i.$isEmpty(e)||y(l)||l>=e},a.$observe("max",function(e){b(e)&&!C(e)&&(e=parseFloat(e,10)),l=C(e)&&!isNaN(e)?e:n,i.$validate()})}}function di(e,t,n,a,i,o){ii(e,t,n,a,i,o),ni(a),a.$$parserName="url",a.$validators.url=function(e,t){var n=e||t;return a.$isEmpty(n)||ks.test(n)}}function ui(e,t,n,a,i,o){ii(e,t,n,a,i,o),ni(a),a.$$parserName="email",a.$validators.email=function(e,t){var n=e||t;return a.$isEmpty(n)||$s.test(n)}}function pi(e,t,n,a){y(n.name)&&t.attr("name",l());var i=function(e){t[0].checked&&a.$setViewValue(n.value,e&&e.type)};t.on("click",i),a.$render=function(){var e=n.value;t[0].checked=e==a.$viewValue},n.$observe("value",a.$render)}function mi(e,t,n,a,i){var o;if(b(a)){if(o=e(a),!o.constant)throw ar("constexpr","Expected constant expression for `{0}`, but saw `{1}`.",n,a);return o(t)}return i}function gi(e,t,n,a,i,o,s,r){var l=mi(r,e,"ngTrueValue",n.ngTrueValue,!0),c=mi(r,e,"ngFalseValue",n.ngFalseValue,!1),d=function(e){a.$setViewValue(t[0].checked,e&&e.type)};t.on("click",d),a.$render=function(){t[0].checked=a.$viewValue},a.$isEmpty=function(e){return e===!1},a.$formatters.push(function(e){return q(e,l)}),a.$parsers.push(function(e){return e?l:c})}function hi(e,t){return e="ngClass"+e,["$animate",function(n){function a(e,t){var n=[];e:for(var a=0;a<e.length;a++){for(var i=e[a],o=0;o<t.length;o++)if(i==t[o])continue e;n.push(i)}return n}function i(e){var t=[];return Oi(e)?(o(e,function(e){t=t.concat(i(e))}),t):$(e)?e.split(" "):w(e)?(o(e,function(e,n){e&&(t=t.concat(n.split(" ")))}),t):e}return{restrict:"AC",link:function(s,r,l){function c(e){var t=u(e,1);l.$addClass(t)}function d(e){var t=u(e,-1);l.$removeClass(t)}function u(e,t){var n=r.data("$classCounts")||ft(),a=[];return o(e,function(e){(t>0||n[e])&&(n[e]=(n[e]||0)+t,n[e]===+(t>0)&&a.push(e))}),r.data("$classCounts",n),a.join(" ")}function p(e,t){var i=a(t,e),o=a(e,t);i=u(i,1),o=u(o,-1),i&&i.length&&n.addClass(r,i),o&&o.length&&n.removeClass(r,o)}function m(e){if(t===!0||s.$index%2===t){var n=i(e||[]);if(g){if(!q(e,g)){var a=i(g);p(a,n)}}else c(n)}g=j(e)}var g;s.$watch(l[e],m,!0),l.$observe("class",function(){m(s.$eval(l[e]))}),"ngClass"!==e&&s.$watch("$index",function(n,a){var o=1&n;if(o!==(1&a)){var r=i(s.$eval(l[e]));o===t?c(r):d(r)}})}}}]}function fi(e){function t(e,t,l){y(t)?a("$pending",e,l):i("$pending",e,l),P(t)?t?(u(r.$error,e,l),d(r.$$success,e,l)):(d(r.$error,e,l),u(r.$$success,e,l)):(u(r.$error,e,l),u(r.$$success,e,l)),r.$pending?(o(nr,!0),r.$valid=r.$invalid=n,s("",null)):(o(nr,!1),r.$valid=_i(r.$error),r.$invalid=!r.$valid,s("",r.$valid));var c;c=r.$pending&&r.$pending[e]?n:r.$error[e]?!1:r.$$success[e]?!0:null,s(e,c),r.$$parentForm.$setValidity(e,c,r)}function a(e,t,n){r[e]||(r[e]={}),d(r[e],t,n)}function i(e,t,a){r[e]&&u(r[e],t,a),_i(r[e])&&(r[e]=n)}function o(e,t){t&&!c[e]?(p.addClass(l,e),c[e]=!0):!t&&c[e]&&(p.removeClass(l,e),c[e]=!1)}function s(e,t){e=e?"-"+ct(e,"-"):"",o(Zs+e,t===!0),o(Xs+e,t===!1)}var r=e.ctrl,l=e.$element,c={},d=e.set,u=e.unset,p=e.$animate;c[Xs]=!(c[Zs]=l.hasClass(Zs)),r.$setValidity=t}function _i(e){if(e)for(var t in e)if(e.hasOwnProperty(t))return!1;return!0}var vi=/^\/(.+)\/([a-z]*)$/,yi="validity",bi=function(e){return $(e)?e.toLowerCase():e},wi=Object.prototype.hasOwnProperty,ki=function(e){return $(e)?e.toUpperCase():e},$i=function(e){return $(e)?e.replace(/[A-Z]/g,function(e){return String.fromCharCode(32|e.charCodeAt(0))}):e},Ci=function(e){return $(e)?e.replace(/[a-z]/g,function(e){return String.fromCharCode(-33&e.charCodeAt(0))}):e};"i"!=="I".toLowerCase()&&(bi=$i,ki=Ci);var Si,Mi,xi,Ii,Ai=[].slice,Ei=[].splice,Ti=[].push,Di=Object.prototype.toString,Pi=Object.getPrototypeOf,Fi=a("ng"),Ri=e.angular||(e.angular={}),Ni=0;Si=t.documentMode,h.$inject=[],f.$inject=[];var Ui,Oi=Array.isArray,Bi=/^\[object (Uint8(Clamped)?)|(Uint16)|(Uint32)|(Int8)|(Int16)|(Int32)|(Float(32)|(64))Array\]$/,Li=function(e){return $(e)?e.trim():e},ji=function(e){return e.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")},qi=function(){function e(){try{return new Function(""),!1}catch(e){return!0}}if(!b(qi.rules)){var n=t.querySelector("[ng-csp]")||t.querySelector("[data-ng-csp]");if(n){var a=n.getAttribute("ng-csp")||n.getAttribute("data-ng-csp");qi.rules={noUnsafeEval:!a||-1!==a.indexOf("no-unsafe-eval"),noInlineStyle:!a||-1!==a.indexOf("no-inline-style")}}else qi.rules={noUnsafeEval:e(),noInlineStyle:!1}}return qi.rules},Hi=function(){if(b(Hi.name_))return Hi.name_;var e,n,a,i,o=Vi.length;for(n=0;o>n;++n)if(a=Vi[n],e=t.querySelector("["+a.replace(":","\\:")+"jq]")){i=e.getAttribute(a+"jq");break}return Hi.name_=i},Vi=["ng-","data-ng-","ng:","x-ng-"],zi=/[A-Z]/g,Wi=!1,Gi=1,Ki=2,Yi=3,Zi=8,Xi=9,Ji=11,Qi={full:"1.4.7",major:1,minor:4,dot:7,codeName:"dark-luminescence"};It.expando="ng339";var eo=It.cache={},to=1,no=function(e,t,n){e.addEventListener(t,n,!1)},ao=function(e,t,n){e.removeEventListener(t,n,!1)};It._data=function(e){return this.cache[e[this.expando]]||{}};var io=/([\:\-\_]+(.))/g,oo=/^moz([A-Z])/,so={mouseleave:"mouseout",mouseenter:"mouseover"},ro=a("jqLite"),lo=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,co=/<|&#?\w+;/,uo=/<([\w:-]+)/,po=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,mo={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};mo.optgroup=mo.option,mo.tbody=mo.tfoot=mo.colgroup=mo.caption=mo.thead,mo.th=mo.td;var go=It.prototype={ready:function(n){function a(){i||(i=!0,n())}var i=!1;"complete"===t.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),It(e).on("load",a))},toString:function(){var e=[];return o(this,function(t){e.push(""+t)}),"["+e.join(", ")+"]"},eq:function(e){return Mi(e>=0?this[e]:this[this.length+e])},length:0,push:Ti,sort:[].sort,splice:[].splice},ho={};o("multiple,selected,checked,disabled,readOnly,required,open".split(","),function(e){ho[bi(e)]=e});var fo={};o("input,select,option,textarea,button,form,details".split(","),function(e){fo[e]=!0});var _o={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};o({data:Ft,removeData:Dt,hasData:St},function(e,t){It[t]=e}),o({data:Ft,inheritedData:Lt,scope:function(e){return Mi.data(e,"$scope")||Lt(e.parentNode||e,["$isolateScope","$scope"])},isolateScope:function(e){return Mi.data(e,"$isolateScope")||Mi.data(e,"$isolateScopeNoTemplate")},controller:Bt,injector:function(e){return Lt(e,"$injector")},removeAttr:function(e,t){e.removeAttribute(t)},hasClass:Rt,css:function(e,t,n){return t=kt(t),b(n)?void(e.style[t]=n):e.style[t]},attr:function(e,t,a){var i=e.nodeType;if(i!==Yi&&i!==Ki&&i!==Zi){var o=bi(t);if(ho[o]){if(!b(a))return e[t]||(e.attributes.getNamedItem(t)||h).specified?o:n;a?(e[t]=!0,e.setAttribute(t,o)):(e[t]=!1,e.removeAttribute(o))}else if(b(a))e.setAttribute(t,a);else if(e.getAttribute){var s=e.getAttribute(t,2);return null===s?n:s}}},prop:function(e,t,n){return b(n)?void(e[t]=n):e[t]},text:function(){function e(e,t){if(y(t)){var n=e.nodeType;return n===Gi||n===Yi?e.textContent:""}e.textContent=t}return e.$dv="",e}(),val:function(e,t){if(y(t)){if(e.multiple&&"select"===O(e)){var n=[];return o(e.options,function(e){e.selected&&n.push(e.value||e.text)}),0===n.length?null:n}return e.value}e.value=t},html:function(e,t){return y(t)?e.innerHTML:(Et(e,!0),void(e.innerHTML=t))},empty:jt},function(e,t){It.prototype[t]=function(t,n){var a,i,o=this.length;if(e!==jt&&y(2==e.length&&e!==Rt&&e!==Bt?t:n)){if(w(t)){for(a=0;o>a;a++)if(e===Ft)e(this[a],t);else for(i in t)e(this[a],i,t[i]);return this}for(var s=e.$dv,r=y(s)?Math.min(o,1):o,l=0;r>l;l++){var c=e(this[l],t,n);s=s?s+c:c}return s}for(a=0;o>a;a++)e(this[a],t,n);return this}}),o({removeData:Dt,on:function Pr(e,t,n,a){if(b(a))throw ro("onargs","jqLite#on() does not support the `selector` or `eventData` parameters");if(Ct(e)){var i=Pt(e,!0),o=i.events,s=i.handle;s||(s=i.handle=Wt(e,o));for(var r=t.indexOf(" ")>=0?t.split(" "):[t],l=r.length;l--;){t=r[l];var c=o[t];c||(o[t]=[],"mouseenter"===t||"mouseleave"===t?Pr(e,so[t],function(e){var n=this,a=e.relatedTarget;(!a||a!==n&&!n.contains(a))&&s(e,t)}):"$destroy"!==t&&no(e,t,s),c=o[t]),c.push(n)}}},off:Tt,one:function(e,t,n){e=Mi(e),e.on(t,function a(){e.off(t,n),e.off(t,a)}),e.on(t,n)},replaceWith:function(e,t){var n,a=e.parentNode;Et(e),o(new It(t),function(t){n?a.insertBefore(t,n.nextSibling):a.replaceChild(t,e),n=t})},children:function(e){var t=[];return o(e.childNodes,function(e){e.nodeType===Gi&&t.push(e)}),t},contents:function(e){return e.contentDocument||e.childNodes||[]},append:function(e,t){var n=e.nodeType;if(n===Gi||n===Ji){t=new It(t);for(var a=0,i=t.length;i>a;a++){var o=t[a];e.appendChild(o)}}},prepend:function(e,t){if(e.nodeType===Gi){var n=e.firstChild;o(new It(t),function(t){e.insertBefore(t,n)})}},wrap:function(e,t){t=Mi(t).eq(0).clone()[0];var n=e.parentNode;n&&n.replaceChild(t,e),t.appendChild(e)},remove:qt,detach:function(e){qt(e,!0)},after:function(e,t){var n=e,a=e.parentNode;t=new It(t);for(var i=0,o=t.length;o>i;i++){var s=t[i];a.insertBefore(s,n.nextSibling),n=s}},addClass:Ut,removeClass:Nt,toggleClass:function(e,t,n){t&&o(t.split(" "),function(t){var a=n;y(a)&&(a=!Rt(e,t)),(a?Ut:Nt)(e,t)})},parent:function(e){var t=e.parentNode;return t&&t.nodeType!==Ji?t:null},next:function(e){return e.nextElementSibling},find:function(e,t){return e.getElementsByTagName?e.getElementsByTagName(t):[]},clone:At,triggerHandler:function(e,t,n){var a,i,s,r=t.type||t,l=Pt(e),c=l&&l.events,d=c&&c[r];d&&(a={preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return this.defaultPrevented===!0},stopImmediatePropagation:function(){this.immediatePropagationStopped=!0},isImmediatePropagationStopped:function(){return this.immediatePropagationStopped===!0},stopPropagation:h,type:r,target:e},t.type&&(a=u(a,t)),i=j(d),s=n?[a].concat(n):[a],o(i,function(t){a.isImmediatePropagationStopped()||t.apply(e,s)}))}},function(e,t){It.prototype[t]=function(t,n,a){for(var i,o=0,s=this.length;s>o;o++)y(i)?(i=e(this[o],t,n,a),b(i)&&(i=Mi(i))):Ot(i,e(this[o],t,n,a));return b(i)?i:this},It.prototype.bind=It.prototype.on,It.prototype.unbind=It.prototype.off}),Yt.prototype={put:function(e,t){this[Kt(e,this.nextUid)]=t},get:function(e){return this[Kt(e,this.nextUid)]},remove:function(e){var t=this[e=Kt(e,this.nextUid)];return delete this[e],t}};var vo=[function(){this.$get=[function(){return Yt}]}],yo=/^[^\(]*\(\s*([^\)]*)\)/m,bo=/,/,wo=/^\s*(_?)(\S+?)\1\s*$/,ko=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,$o=a("$injector");Jt.$$annotate=Xt;var Co=a("$animate"),So=1,Mo="ng-animate",xo=function(){this.$get=["$q","$$rAF",function(e,t){function n(){}return n.all=h,n.chain=h,n.prototype={end:h,cancel:h,resume:h,pause:h,complete:h,then:function(n,a){return e(function(e){t(function(){e()})}).then(n,a)}},n}]},Io=function(){var e=new Yt,t=[];this.$get=["$$AnimateRunner","$rootScope",function(n,a){function i(e,t,n){var a=!1;return t&&(t=$(t)?t.split(" "):Oi(t)?t:[],o(t,function(t){t&&(a=!0,e[t]=n)})),a}function s(){o(t,function(t){var n=e.get(t);if(n){var a=nn(t.attr("class")),i="",s="";o(n,function(e,t){var n=!!a[t];e!==n&&(e?i+=(i.length?" ":"")+t:s+=(s.length?" ":"")+t)}),o(t,function(e){i&&Ut(e,i),s&&Nt(e,s)}),e.remove(t)}}),t.length=0}function r(n,o,r){var l=e.get(n)||{},c=i(l,o,!0),d=i(l,r,!1);(c||d)&&(e.put(n,l),t.push(n),1===t.length&&a.$$postDigest(s))}return{enabled:h,on:h,off:h,pin:h,push:function(e,t,a,i){return i&&i(),a=a||{},a.from&&e.css(a.from),a.to&&e.css(a.to),(a.addClass||a.removeClass)&&r(e,a.addClass,a.removeClass),new n}}}]},Ao=["$provide",function(e){var t=this;this.$$registeredAnimations=Object.create(null),this.register=function(n,a){if(n&&"."!==n.charAt(0))throw Co("notcsel","Expecting class selector starting with '.' got '{0}'.",n);var i=n+"-animation";t.$$registeredAnimations[n.substr(1)]=i,e.factory(i,a)},this.classNameFilter=function(e){if(1===arguments.length&&(this.$$classNameFilter=e instanceof RegExp?e:null,this.$$classNameFilter)){var t=new RegExp("(\\s+|\\/)"+Mo+"(\\s+|\\/)");if(t.test(this.$$classNameFilter.toString()))throw Co("nongcls",'$animateProvider.classNameFilter(regex) prohibits accepting a regex value which matches/contains the "{0}" CSS class.',Mo)}return this.$$classNameFilter},this.$get=["$$animateQueue",function(e){function t(e,t,n){if(n){var a=tn(n);!a||a.parentNode||a.previousElementSibling||(n=null)}n?n.after(e):t.prepend(e)}return{on:e.on,off:e.off,pin:e.pin,enabled:e.enabled,cancel:function(e){e.end&&e.end()},enter:function(n,a,i,o){return a=a&&Mi(a),i=i&&Mi(i),a=a||i.parent(),t(n,a,i),e.push(n,"enter",an(o))},move:function(n,a,i,o){return a=a&&Mi(a),i=i&&Mi(i),a=a||i.parent(),t(n,a,i),e.push(n,"move",an(o))},leave:function(t,n){return e.push(t,"leave",an(n),function(){t.remove()})},addClass:function(t,n,a){return a=an(a),a.addClass=en(a.addclass,n),e.push(t,"addClass",a)},removeClass:function(t,n,a){return a=an(a),a.removeClass=en(a.removeClass,n),e.push(t,"removeClass",a)},setClass:function(t,n,a,i){return i=an(i),i.addClass=en(i.addClass,n),i.removeClass=en(i.removeClass,a),e.push(t,"setClass",i)},animate:function(t,n,a,i,o){return o=an(o),o.from=o.from?u(o.from,n):n,o.to=o.to?u(o.to,a):a,i=i||"ng-inline-animate",o.tempClasses=en(o.tempClasses,i),e.push(t,"animate",o)}}}]}],Eo=function(){this.$get=["$$rAF","$q",function(e,t){var n=function(){};return n.prototype={done:function(e){this.defer&&this.defer[e===!0?"reject":"resolve"]()},end:function(){this.done()},cancel:function(){this.done(!0)},getPromise:function(){return this.defer||(this.defer=t.defer()),this.defer.promise},then:function(e,t){return this.getPromise().then(e,t)},"catch":function(e){return this.getPromise()["catch"](e)},"finally":function(e){return this.getPromise()["finally"](e)}},function(t,a){function i(){return e(function(){o(),s||r.done(),s=!0}),r}function o(){a.addClass&&(t.addClass(a.addClass),a.addClass=null),a.removeClass&&(t.removeClass(a.removeClass),a.removeClass=null),a.to&&(t.css(a.to),a.to=null)}a.cleanupStyles&&(a.from=a.to=null),a.from&&(t.css(a.from),a.from=null);var s,r=new n;return{start:i,end:i}}}]},To=a("$compile");cn.$inject=["$provide","$$sanitizeUriProvider"];var Do=/^((?:x|data)[\:\-_])/i,Po=a("$controller"),Fo=/^(\S+)(\s+as\s+(\w+))?$/,Ro=function(){this.$get=["$document",function(e){return function(t){return t?!t.nodeType&&t instanceof Mi&&(t=t[0]):t=e[0].body,t.offsetWidth+1}}]},No="application/json",Uo={"Content-Type":No+";charset=utf-8"},Oo=/^\[|^\{(?!\{)/,Bo={"[":/]$/,"{":/}$/},Lo=/^\)\]\}',?\n/,jo=a("$http"),qo=function(e){return function(){throw jo("legacy","The method `{0}` on the promise returned from `$http` has been disabled.",e)}},Ho=Ri.$interpolateMinErr=a("$interpolate");Ho.throwNoconcat=function(e){throw Ho("noconcat","Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce",e)},Ho.interr=function(e,t){return Ho("interr","Can't interpolate: {0}\n{1}",e,t.toString())};var Vo=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,zo={http:80,https:443,ftp:21},Wo=a("$location"),Go={$$html5:!1,$$replace:!1,absUrl:Hn("$$absUrl"),url:function(e){if(y(e))return this.$$url;var t=Vo.exec(e);return(t[1]||""===e)&&this.path(decodeURIComponent(t[1])),(t[2]||t[1]||""===e)&&this.search(t[3]||""),this.hash(t[5]||""),this},protocol:Hn("$$protocol"),host:Hn("$$host"),port:Hn("$$port"),path:Vn("$$path",function(e){return e=null!==e?e.toString():"","/"==e.charAt(0)?e:"/"+e}),search:function(e,t){switch(arguments.length){case 0:return this.$$search;case 1:if($(e)||C(e))e=e.toString(),this.$$search=et(e);else{if(!w(e))throw Wo("isrcharg","The first argument of the `$location#search()` call must be a string or an object.");e=L(e,{}),o(e,function(t,n){null==t&&delete e[n]}),this.$$search=e}break;default:y(t)||null===t?delete this.$$search[e]:this.$$search[e]=t}return this.$$compose(),this},hash:Vn("$$hash",function(e){return null!==e?e.toString():""}),replace:function(){return this.$$replace=!0,this}};o([qn,jn,Ln],function(e){e.prototype=Object.create(Go),e.prototype.state=function(t){if(!arguments.length)return this.$$state;if(e!==Ln||!this.$$html5)throw Wo("nostate","History API state support is available only in HTML5 mode and only in browsers supporting HTML5 History API");return this.$$state=y(t)?null:t,this}});var Ko=a("$parse"),Yo=Function.prototype.call,Zo=Function.prototype.apply,Xo=Function.prototype.bind,Jo=ft();o("+ - * / % === !== == != < > <= >= && || ! = |".split(" "),function(e){Jo[e]=!0});var Qo={n:"\n",f:"\f",r:"\r",t:" ",v:" ","'":"'",'"':'"'},es=function(e){this.options=e};es.prototype={constructor:es,lex:function(e){for(this.text=e,this.index=0,this.tokens=[];this.index<this.text.length;){var t=this.text.charAt(this.index);if('"'===t||"'"===t)this.readString(t);else if(this.isNumber(t)||"."===t&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdent(t))this.readIdent();else if(this.is(t,"(){}[].,;:?"))this.tokens.push({index:this.index,text:t}),this.index++;else if(this.isWhitespace(t))this.index++;else{var n=t+this.peek(),a=n+this.peek(2),i=Jo[t],o=Jo[n],s=Jo[a];if(i||o||s){var r=s?a:o?n:t;this.tokens.push({index:this.index,text:r,operator:!0}),this.index+=r.length}else this.throwError("Unexpected next character ",this.index,this.index+1)}}return this.tokens},is:function(e,t){return-1!==t.indexOf(e)},peek:function(e){var t=e||1;return this.index+t<this.text.length?this.text.charAt(this.index+t):!1},isNumber:function(e){return e>="0"&&"9">=e&&"string"==typeof e},isWhitespace:function(e){return" "===e||"\r"===e||" "===e||"\n"===e||" "===e||" "===e},isIdent:function(e){return e>="a"&&"z">=e||e>="A"&&"Z">=e||"_"===e||"$"===e},isExpOperator:function(e){return"-"===e||"+"===e||this.isNumber(e)},throwError:function(e,t,n){n=n||this.index;var a=b(t)?"s "+t+"-"+this.index+" ["+this.text.substring(t,n)+"]":" "+n;throw Ko("lexerr","Lexer Error: {0} at column{1} in expression [{2}].",e,a,this.text)},readNumber:function(){for(var e="",t=this.index;this.index<this.text.length;){var n=bi(this.text.charAt(this.index));if("."==n||this.isNumber(n))e+=n;else{var a=this.peek();if("e"==n&&this.isExpOperator(a))e+=n;else if(this.isExpOperator(n)&&a&&this.isNumber(a)&&"e"==e.charAt(e.length-1))e+=n;else{if(!this.isExpOperator(n)||a&&this.isNumber(a)||"e"!=e.charAt(e.length-1))break;this.throwError("Invalid exponent")}}this.index++}this.tokens.push({index:t,text:e,constant:!0,value:Number(e)})},readIdent:function(){for(var e=this.index;this.index<this.text.length;){var t=this.text.charAt(this.index);if(!this.isIdent(t)&&!this.isNumber(t))break;this.index++}this.tokens.push({index:e,text:this.text.slice(e,this.index),identifier:!0})},readString:function(e){var t=this.index;this.index++;for(var n="",a=e,i=!1;this.index<this.text.length;){var o=this.text.charAt(this.index);if(a+=o,i){if("u"===o){var s=this.text.substring(this.index+1,this.index+5);s.match(/[\da-f]{4}/i)||this.throwError("Invalid unicode escape [\\u"+s+"]"),this.index+=4,n+=String.fromCharCode(parseInt(s,16))}else{var r=Qo[o];n+=r||o}i=!1}else if("\\"===o)i=!0;else{if(o===e)return this.index++,void this.tokens.push({index:t,text:a,constant:!0,value:n});n+=o}this.index++}this.throwError("Unterminated quote",t)}};var ts=function(e,t){this.lexer=e,this.options=t};ts.Program="Program",ts.ExpressionStatement="ExpressionStatement",ts.AssignmentExpression="AssignmentExpression",ts.ConditionalExpression="ConditionalExpression",ts.LogicalExpression="LogicalExpression",ts.BinaryExpression="BinaryExpression",ts.UnaryExpression="UnaryExpression",ts.CallExpression="CallExpression",ts.MemberExpression="MemberExpression",ts.Identifier="Identifier",ts.Literal="Literal",ts.ArrayExpression="ArrayExpression",ts.Property="Property",ts.ObjectExpression="ObjectExpression",ts.ThisExpression="ThisExpression",ts.NGValueParameter="NGValueParameter",ts.prototype={ast:function(e){this.text=e,this.tokens=this.lexer.lex(e);var t=this.program();return 0!==this.tokens.length&&this.throwError("is an unexpected token",this.tokens[0]),t},program:function(){for(var e=[];;)if(this.tokens.length>0&&!this.peek("}",")",";","]")&&e.push(this.expressionStatement()),!this.expect(";"))return{type:ts.Program,body:e}},expressionStatement:function(){return{type:ts.ExpressionStatement,expression:this.filterChain()}},filterChain:function(){for(var e,t=this.expression();e=this.expect("|");)t=this.filter(t);return t},expression:function(){return this.assignment()},assignment:function(){var e=this.ternary();return this.expect("=")&&(e={type:ts.AssignmentExpression,left:e,right:this.assignment(),operator:"="}),e},ternary:function(){var e,t,n=this.logicalOR();return this.expect("?")&&(e=this.expression(),this.consume(":"))?(t=this.expression(),{type:ts.ConditionalExpression,test:n,alternate:e,consequent:t}):n},logicalOR:function(){for(var e=this.logicalAND();this.expect("||");)e={type:ts.LogicalExpression,operator:"||",left:e,right:this.logicalAND()};return e},logicalAND:function(){for(var e=this.equality();this.expect("&&");)e={type:ts.LogicalExpression,operator:"&&",left:e,right:this.equality()};return e},equality:function(){for(var e,t=this.relational();e=this.expect("==","!=","===","!==");)t={type:ts.BinaryExpression,operator:e.text,left:t,right:this.relational()};return t},relational:function(){for(var e,t=this.additive();e=this.expect("<",">","<=",">=");)t={type:ts.BinaryExpression,operator:e.text,left:t,right:this.additive()};return t},additive:function(){for(var e,t=this.multiplicative();e=this.expect("+","-");)t={type:ts.BinaryExpression,operator:e.text,left:t,right:this.multiplicative()};return t},multiplicative:function(){for(var e,t=this.unary();e=this.expect("*","/","%");)t={type:ts.BinaryExpression,operator:e.text,left:t,right:this.unary()};return t},unary:function(){var e;return(e=this.expect("+","-","!"))?{type:ts.UnaryExpression,operator:e.text,prefix:!0,argument:this.unary()}:this.primary()},primary:function(){var e;this.expect("(")?(e=this.filterChain(),this.consume(")")):this.expect("[")?e=this.arrayDeclaration():this.expect("{")?e=this.object():this.constants.hasOwnProperty(this.peek().text)?e=L(this.constants[this.consume().text]):this.peek().identifier?e=this.identifier():this.peek().constant?e=this.constant():this.throwError("not a primary expression",this.peek());for(var t;t=this.expect("(","[",".");)"("===t.text?(e={type:ts.CallExpression,callee:e,arguments:this.parseArguments()},this.consume(")")):"["===t.text?(e={type:ts.MemberExpression,object:e,property:this.expression(),computed:!0},this.consume("]")):"."===t.text?e={type:ts.MemberExpression,object:e,property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return e},filter:function(e){for(var t=[e],n={type:ts.CallExpression,callee:this.identifier(),arguments:t,filter:!0};this.expect(":");)t.push(this.expression());return n},parseArguments:function(){var e=[];if(")"!==this.peekToken().text)do e.push(this.expression());while(this.expect(","));return e},identifier:function(){var e=this.consume();return e.identifier||this.throwError("is not a valid identifier",e),{type:ts.Identifier,name:e.text}},constant:function(){return{type:ts.Literal,value:this.consume().value}},arrayDeclaration:function(){var e=[];if("]"!==this.peekToken().text)do{if(this.peek("]"))break;e.push(this.expression())}while(this.expect(","));return this.consume("]"),{type:ts.ArrayExpression,elements:e}},object:function(){var e,t=[];if("}"!==this.peekToken().text)do{if(this.peek("}"))break;e={type:ts.Property,kind:"init"},this.peek().constant?e.key=this.constant():this.peek().identifier?e.key=this.identifier():this.throwError("invalid key",this.peek()),this.consume(":"),e.value=this.expression(),t.push(e)}while(this.expect(","));return this.consume("}"),{type:ts.ObjectExpression,properties:t}},throwError:function(e,t){throw Ko("syntax","Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].",t.text,e,t.index+1,this.text,this.text.substring(t.index))},consume:function(e){if(0===this.tokens.length)throw Ko("ueoe","Unexpected end of expression: {0}",this.text);var t=this.expect(e);return t||this.throwError("is unexpected, expecting ["+e+"]",this.peek()),t},peekToken:function(){if(0===this.tokens.length)throw Ko("ueoe","Unexpected end of expression: {0}",this.text);return this.tokens[0]},peek:function(e,t,n,a){return this.peekAhead(0,e,t,n,a)},peekAhead:function(e,t,n,a,i){if(this.tokens.length>e){var o=this.tokens[e],s=o.text;if(s===t||s===n||s===a||s===i||!t&&!n&&!a&&!i)return o}return!1},expect:function(e,t,n,a){var i=this.peek(e,t,n,a);return i?(this.tokens.shift(),i):!1},constants:{"true":{type:ts.Literal,value:!0},"false":{type:ts.Literal,value:!1},"null":{type:ts.Literal,value:null},undefined:{type:ts.Literal,value:n},"this":{type:ts.ThisExpression}}},ra.prototype={compile:function(e,t){var a=this,i=this.astBuilder.ast(e);this.state={nextId:0,filters:{},expensiveChecks:t,fn:{vars:[],body:[],own:{}},assign:{vars:[],body:[],own:{}},inputs:[]},ta(i,a.$filter);var s,r="";if(this.stage="assign",s=ia(i)){this.state.computing="assign";var l=this.nextId();this.recurse(s,l),this.return_(l),r="fn.assign="+this.generateFunction("assign","s,v,l")}var c=na(i.body);a.stage="inputs",o(c,function(e,t){var n="fn"+t;a.state[n]={vars:[],body:[],own:{}},a.state.computing=n;
var i=a.nextId();a.recurse(e,i),a.return_(i),a.state.inputs.push(n),e.watchId=t}),this.state.computing="fn",this.stage="main",this.recurse(i);var d='"'+this.USE+" "+this.STRICT+'";\n'+this.filterPrefix()+"var fn="+this.generateFunction("fn","s,l,a,i")+r+this.watchFns()+"return fn;",u=new Function("$filter","ensureSafeMemberName","ensureSafeObject","ensureSafeFunction","getStringValue","ensureSafeAssignContext","ifDefined","plus","text",d)(this.$filter,Gn,Yn,Zn,Kn,Xn,Jn,Qn,e);return this.state=this.stage=n,u.literal=oa(i),u.constant=sa(i),u},USE:"use",STRICT:"strict",watchFns:function(){var e=[],t=this.state.inputs,n=this;return o(t,function(t){e.push("var "+t+"="+n.generateFunction(t,"s"))}),t.length&&e.push("fn.inputs=["+t.join(",")+"];"),e.join("")},generateFunction:function(e,t){return"function("+t+"){"+this.varsPrefix(e)+this.body(e)+"};"},filterPrefix:function(){var e=[],t=this;return o(this.state.filters,function(n,a){e.push(n+"=$filter("+t.escape(a)+")")}),e.length?"var "+e.join(",")+";":""},varsPrefix:function(e){return this.state[e].vars.length?"var "+this.state[e].vars.join(",")+";":""},body:function(e){return this.state[e].body.join("")},recurse:function(e,t,a,i,s,r){var l,c,d,u,p=this;if(i=i||h,!r&&b(e.watchId))return t=t||this.nextId(),void this.if_("i",this.lazyAssign(t,this.computedMember("i",e.watchId)),this.lazyRecurse(e,t,a,i,s,!0));switch(e.type){case ts.Program:o(e.body,function(t,a){p.recurse(t.expression,n,n,function(e){c=e}),a!==e.body.length-1?p.current().body.push(c,";"):p.return_(c)});break;case ts.Literal:u=this.escape(e.value),this.assign(t,u),i(u);break;case ts.UnaryExpression:this.recurse(e.argument,n,n,function(e){c=e}),u=e.operator+"("+this.ifDefined(c,0)+")",this.assign(t,u),i(u);break;case ts.BinaryExpression:this.recurse(e.left,n,n,function(e){l=e}),this.recurse(e.right,n,n,function(e){c=e}),u="+"===e.operator?this.plus(l,c):"-"===e.operator?this.ifDefined(l,0)+e.operator+this.ifDefined(c,0):"("+l+")"+e.operator+"("+c+")",this.assign(t,u),i(u);break;case ts.LogicalExpression:t=t||this.nextId(),p.recurse(e.left,t),p.if_("&&"===e.operator?t:p.not(t),p.lazyRecurse(e.right,t)),i(t);break;case ts.ConditionalExpression:t=t||this.nextId(),p.recurse(e.test,t),p.if_(t,p.lazyRecurse(e.alternate,t),p.lazyRecurse(e.consequent,t)),i(t);break;case ts.Identifier:t=t||this.nextId(),a&&(a.context="inputs"===p.stage?"s":this.assign(this.nextId(),this.getHasOwnProperty("l",e.name)+"?l:s"),a.computed=!1,a.name=e.name),Gn(e.name),p.if_("inputs"===p.stage||p.not(p.getHasOwnProperty("l",e.name)),function(){p.if_("inputs"===p.stage||"s",function(){s&&1!==s&&p.if_(p.not(p.nonComputedMember("s",e.name)),p.lazyAssign(p.nonComputedMember("s",e.name),"{}")),p.assign(t,p.nonComputedMember("s",e.name))})},t&&p.lazyAssign(t,p.nonComputedMember("l",e.name))),(p.state.expensiveChecks||ca(e.name))&&p.addEnsureSafeObject(t),i(t);break;case ts.MemberExpression:l=a&&(a.context=this.nextId())||this.nextId(),t=t||this.nextId(),p.recurse(e.object,l,n,function(){p.if_(p.notNull(l),function(){e.computed?(c=p.nextId(),p.recurse(e.property,c),p.getStringValue(c),p.addEnsureSafeMemberName(c),s&&1!==s&&p.if_(p.not(p.computedMember(l,c)),p.lazyAssign(p.computedMember(l,c),"{}")),u=p.ensureSafeObject(p.computedMember(l,c)),p.assign(t,u),a&&(a.computed=!0,a.name=c)):(Gn(e.property.name),s&&1!==s&&p.if_(p.not(p.nonComputedMember(l,e.property.name)),p.lazyAssign(p.nonComputedMember(l,e.property.name),"{}")),u=p.nonComputedMember(l,e.property.name),(p.state.expensiveChecks||ca(e.property.name))&&(u=p.ensureSafeObject(u)),p.assign(t,u),a&&(a.computed=!1,a.name=e.property.name))},function(){p.assign(t,"undefined")}),i(t)},!!s);break;case ts.CallExpression:t=t||this.nextId(),e.filter?(c=p.filter(e.callee.name),d=[],o(e.arguments,function(e){var t=p.nextId();p.recurse(e,t),d.push(t)}),u=c+"("+d.join(",")+")",p.assign(t,u),i(t)):(c=p.nextId(),l={},d=[],p.recurse(e.callee,c,l,function(){p.if_(p.notNull(c),function(){p.addEnsureSafeFunction(c),o(e.arguments,function(e){p.recurse(e,p.nextId(),n,function(e){d.push(p.ensureSafeObject(e))})}),l.name?(p.state.expensiveChecks||p.addEnsureSafeObject(l.context),u=p.member(l.context,l.name,l.computed)+"("+d.join(",")+")"):u=c+"("+d.join(",")+")",u=p.ensureSafeObject(u),p.assign(t,u)},function(){p.assign(t,"undefined")}),i(t)}));break;case ts.AssignmentExpression:if(c=this.nextId(),l={},!aa(e.left))throw Ko("lval","Trying to assing a value to a non l-value");this.recurse(e.left,n,l,function(){p.if_(p.notNull(l.context),function(){p.recurse(e.right,c),p.addEnsureSafeObject(p.member(l.context,l.name,l.computed)),p.addEnsureSafeAssignContext(l.context),u=p.member(l.context,l.name,l.computed)+e.operator+c,p.assign(t,u),i(t||u)})},1);break;case ts.ArrayExpression:d=[],o(e.elements,function(e){p.recurse(e,p.nextId(),n,function(e){d.push(e)})}),u="["+d.join(",")+"]",this.assign(t,u),i(u);break;case ts.ObjectExpression:d=[],o(e.properties,function(e){p.recurse(e.value,p.nextId(),n,function(t){d.push(p.escape(e.key.type===ts.Identifier?e.key.name:""+e.key.value)+":"+t)})}),u="{"+d.join(",")+"}",this.assign(t,u),i(u);break;case ts.ThisExpression:this.assign(t,"s"),i("s");break;case ts.NGValueParameter:this.assign(t,"v"),i("v")}},getHasOwnProperty:function(e,t){var n=e+"."+t,a=this.current().own;return a.hasOwnProperty(n)||(a[n]=this.nextId(!1,e+"&&("+this.escape(t)+" in "+e+")")),a[n]},assign:function(e,t){return e?(this.current().body.push(e,"=",t,";"),e):void 0},filter:function(e){return this.state.filters.hasOwnProperty(e)||(this.state.filters[e]=this.nextId(!0)),this.state.filters[e]},ifDefined:function(e,t){return"ifDefined("+e+","+this.escape(t)+")"},plus:function(e,t){return"plus("+e+","+t+")"},return_:function(e){this.current().body.push("return ",e,";")},if_:function(e,t,n){if(e===!0)t();else{var a=this.current().body;a.push("if(",e,"){"),t(),a.push("}"),n&&(a.push("else{"),n(),a.push("}"))}},not:function(e){return"!("+e+")"},notNull:function(e){return e+"!=null"},nonComputedMember:function(e,t){return e+"."+t},computedMember:function(e,t){return e+"["+t+"]"},member:function(e,t,n){return n?this.computedMember(e,t):this.nonComputedMember(e,t)},addEnsureSafeObject:function(e){this.current().body.push(this.ensureSafeObject(e),";")},addEnsureSafeMemberName:function(e){this.current().body.push(this.ensureSafeMemberName(e),";")},addEnsureSafeFunction:function(e){this.current().body.push(this.ensureSafeFunction(e),";")},addEnsureSafeAssignContext:function(e){this.current().body.push(this.ensureSafeAssignContext(e),";")},ensureSafeObject:function(e){return"ensureSafeObject("+e+",text)"},ensureSafeMemberName:function(e){return"ensureSafeMemberName("+e+",text)"},ensureSafeFunction:function(e){return"ensureSafeFunction("+e+",text)"},getStringValue:function(e){this.assign(e,"getStringValue("+e+",text)")},ensureSafeAssignContext:function(e){return"ensureSafeAssignContext("+e+",text)"},lazyRecurse:function(e,t,n,a,i,o){var s=this;return function(){s.recurse(e,t,n,a,i,o)}},lazyAssign:function(e,t){var n=this;return function(){n.assign(e,t)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(e){return"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)},escape:function(e){if($(e))return"'"+e.replace(this.stringEscapeRegex,this.stringEscapeFn)+"'";if(C(e))return e.toString();if(e===!0)return"true";if(e===!1)return"false";if(null===e)return"null";if("undefined"==typeof e)return"undefined";throw Ko("esc","IMPOSSIBLE")},nextId:function(e,t){var n="v"+this.state.nextId++;return e||this.current().vars.push(n+(t?"="+t:"")),n},current:function(){return this.state[this.state.computing]}},la.prototype={compile:function(e,t){var n=this,a=this.astBuilder.ast(e);this.expression=e,this.expensiveChecks=t,ta(a,n.$filter);var i,s;(i=ia(a))&&(s=this.recurse(i));var r,l=na(a.body);l&&(r=[],o(l,function(e,t){var a=n.recurse(e);e.input=a,r.push(a),e.watchId=t}));var c=[];o(a.body,function(e){c.push(n.recurse(e.expression))});var d=0===a.body.length?function(){}:1===a.body.length?c[0]:function(e,t){var n;return o(c,function(a){n=a(e,t)}),n};return s&&(d.assign=function(e,t,n){return s(e,n,t)}),r&&(d.inputs=r),d.literal=oa(a),d.constant=sa(a),d},recurse:function(e,t,a){var i,s,r,l=this;if(e.input)return this.inputs(e.input,e.watchId);switch(e.type){case ts.Literal:return this.value(e.value,t);case ts.UnaryExpression:return s=this.recurse(e.argument),this["unary"+e.operator](s,t);case ts.BinaryExpression:return i=this.recurse(e.left),s=this.recurse(e.right),this["binary"+e.operator](i,s,t);case ts.LogicalExpression:return i=this.recurse(e.left),s=this.recurse(e.right),this["binary"+e.operator](i,s,t);case ts.ConditionalExpression:return this["ternary?:"](this.recurse(e.test),this.recurse(e.alternate),this.recurse(e.consequent),t);case ts.Identifier:return Gn(e.name,l.expression),l.identifier(e.name,l.expensiveChecks||ca(e.name),t,a,l.expression);case ts.MemberExpression:return i=this.recurse(e.object,!1,!!a),e.computed||(Gn(e.property.name,l.expression),s=e.property.name),e.computed&&(s=this.recurse(e.property)),e.computed?this.computedMember(i,s,t,a,l.expression):this.nonComputedMember(i,s,l.expensiveChecks,t,a,l.expression);case ts.CallExpression:return r=[],o(e.arguments,function(e){r.push(l.recurse(e))}),e.filter&&(s=this.$filter(e.callee.name)),e.filter||(s=this.recurse(e.callee,!0)),e.filter?function(e,a,i,o){for(var l=[],c=0;c<r.length;++c)l.push(r[c](e,a,i,o));var d=s.apply(n,l,o);return t?{context:n,name:n,value:d}:d}:function(e,n,a,i){var o,c=s(e,n,a,i);if(null!=c.value){Yn(c.context,l.expression),Zn(c.value,l.expression);for(var d=[],u=0;u<r.length;++u)d.push(Yn(r[u](e,n,a,i),l.expression));o=Yn(c.value.apply(c.context,d),l.expression)}return t?{value:o}:o};case ts.AssignmentExpression:return i=this.recurse(e.left,!0,1),s=this.recurse(e.right),function(e,n,a,o){var r=i(e,n,a,o),c=s(e,n,a,o);return Yn(r.value,l.expression),Xn(r.context),r.context[r.name]=c,t?{value:c}:c};case ts.ArrayExpression:return r=[],o(e.elements,function(e){r.push(l.recurse(e))}),function(e,n,a,i){for(var o=[],s=0;s<r.length;++s)o.push(r[s](e,n,a,i));return t?{value:o}:o};case ts.ObjectExpression:return r=[],o(e.properties,function(e){r.push({key:e.key.type===ts.Identifier?e.key.name:""+e.key.value,value:l.recurse(e.value)})}),function(e,n,a,i){for(var o={},s=0;s<r.length;++s)o[r[s].key]=r[s].value(e,n,a,i);return t?{value:o}:o};case ts.ThisExpression:return function(e){return t?{value:e}:e};case ts.NGValueParameter:return function(e,n,a){return t?{value:a}:a}}},"unary+":function(e,t){return function(n,a,i,o){var s=e(n,a,i,o);return s=b(s)?+s:0,t?{value:s}:s}},"unary-":function(e,t){return function(n,a,i,o){var s=e(n,a,i,o);return s=b(s)?-s:0,t?{value:s}:s}},"unary!":function(e,t){return function(n,a,i,o){var s=!e(n,a,i,o);return t?{value:s}:s}},"binary+":function(e,t,n){return function(a,i,o,s){var r=e(a,i,o,s),l=t(a,i,o,s),c=Qn(r,l);return n?{value:c}:c}},"binary-":function(e,t,n){return function(a,i,o,s){var r=e(a,i,o,s),l=t(a,i,o,s),c=(b(r)?r:0)-(b(l)?l:0);return n?{value:c}:c}},"binary*":function(e,t,n){return function(a,i,o,s){var r=e(a,i,o,s)*t(a,i,o,s);return n?{value:r}:r}},"binary/":function(e,t,n){return function(a,i,o,s){var r=e(a,i,o,s)/t(a,i,o,s);return n?{value:r}:r}},"binary%":function(e,t,n){return function(a,i,o,s){var r=e(a,i,o,s)%t(a,i,o,s);return n?{value:r}:r}},"binary===":function(e,t,n){return function(a,i,o,s){var r=e(a,i,o,s)===t(a,i,o,s);return n?{value:r}:r}},"binary!==":function(e,t,n){return function(a,i,o,s){var r=e(a,i,o,s)!==t(a,i,o,s);return n?{value:r}:r}},"binary==":function(e,t,n){return function(a,i,o,s){var r=e(a,i,o,s)==t(a,i,o,s);return n?{value:r}:r}},"binary!=":function(e,t,n){return function(a,i,o,s){var r=e(a,i,o,s)!=t(a,i,o,s);return n?{value:r}:r}},"binary<":function(e,t,n){return function(a,i,o,s){var r=e(a,i,o,s)<t(a,i,o,s);return n?{value:r}:r}},"binary>":function(e,t,n){return function(a,i,o,s){var r=e(a,i,o,s)>t(a,i,o,s);return n?{value:r}:r}},"binary<=":function(e,t,n){return function(a,i,o,s){var r=e(a,i,o,s)<=t(a,i,o,s);return n?{value:r}:r}},"binary>=":function(e,t,n){return function(a,i,o,s){var r=e(a,i,o,s)>=t(a,i,o,s);return n?{value:r}:r}},"binary&&":function(e,t,n){return function(a,i,o,s){var r=e(a,i,o,s)&&t(a,i,o,s);return n?{value:r}:r}},"binary||":function(e,t,n){return function(a,i,o,s){var r=e(a,i,o,s)||t(a,i,o,s);return n?{value:r}:r}},"ternary?:":function(e,t,n,a){return function(i,o,s,r){var l=e(i,o,s,r)?t(i,o,s,r):n(i,o,s,r);return a?{value:l}:l}},value:function(e,t){return function(){return t?{context:n,name:n,value:e}:e}},identifier:function(e,t,a,i,o){return function(s,r){var l=r&&e in r?r:s;i&&1!==i&&l&&!l[e]&&(l[e]={});var c=l?l[e]:n;return t&&Yn(c,o),a?{context:l,name:e,value:c}:c}},computedMember:function(e,t,n,a,i){return function(o,s,r,l){var c,d,u=e(o,s,r,l);return null!=u&&(c=t(o,s,r,l),c=Kn(c),Gn(c,i),a&&1!==a&&u&&!u[c]&&(u[c]={}),d=u[c],Yn(d,i)),n?{context:u,name:c,value:d}:d}},nonComputedMember:function(e,t,a,i,o,s){return function(r,l,c,d){var u=e(r,l,c,d);o&&1!==o&&u&&!u[t]&&(u[t]={});var p=null!=u?u[t]:n;return(a||ca(t))&&Yn(p,s),i?{context:u,name:t,value:p}:p}},inputs:function(e,t){return function(n,a,i,o){return o?o[t]:e(n,a,i)}}};var ns=function(e,t,n){this.lexer=e,this.$filter=t,this.options=n,this.ast=new ts(this.lexer),this.astCompiler=n.csp?new la(this.ast,t):new ra(this.ast,t)};ns.prototype={constructor:ns,parse:function(e){return this.astCompiler.compile(e,this.options.expensiveChecks)}};var as=(ft(),ft(),Object.prototype.valueOf),is=a("$sce"),os={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},To=a("$compile"),ss=t.createElement("a"),rs=Ma(e.location.href);Aa.$inject=["$document"],Ta.$inject=["$provide"],Na.$inject=["$locale"],Ua.$inject=["$locale"];var ls=".",cs={yyyy:La("FullYear",4),yy:La("FullYear",2,0,!0),y:La("FullYear",1),MMMM:ja("Month"),MMM:ja("Month",!0),MM:La("Month",2,1),M:La("Month",1,1),dd:La("Date",2),d:La("Date",1),HH:La("Hours",2),H:La("Hours",1),hh:La("Hours",2,-12),h:La("Hours",1,-12),mm:La("Minutes",2),m:La("Minutes",1),ss:La("Seconds",2),s:La("Seconds",1),sss:La("Milliseconds",3),EEEE:ja("Day"),EEE:ja("Day",!0),a:Wa,Z:qa,ww:za(2),w:za(1),G:Ga,GG:Ga,GGG:Ga,GGGG:Ka},ds=/((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,us=/^\-?\d+$/;Ya.$inject=["$locale"];var ps=_(bi),ms=_(ki);Ja.$inject=["$parse"];var gs=_({restrict:"E",compile:function(e,t){return t.href||t.xlinkHref?void 0:function(e,t){if("a"===t[0].nodeName.toLowerCase()){var n="[object SVGAnimatedString]"===Di.call(t.prop("href"))?"xlink:href":"href";t.on("click",function(e){t.attr(n)||e.preventDefault()})}}}}),hs={};o(ho,function(e,t){function n(e,n,i){e.$watch(i[a],function(e){i.$set(t,!!e)})}if("multiple"!=e){var a=dn("ng-"+t),i=n;"checked"===e&&(i=function(e,t,i){i.ngModel!==i[a]&&n(e,t,i)}),hs[a]=function(){return{restrict:"A",priority:100,link:i}}}}),o(_o,function(e,t){hs[t]=function(){return{priority:100,link:function(e,n,a){if("ngPattern"===t&&"/"==a.ngPattern.charAt(0)){var i=a.ngPattern.match(vi);if(i)return void a.$set("ngPattern",new RegExp(i[1],i[2]))}e.$watch(a[t],function(e){a.$set(t,e)})}}}}),o(["src","srcset","href"],function(e){var t=dn("ng-"+e);hs[t]=function(){return{priority:99,link:function(n,a,i){var o=e,s=e;"href"===e&&"[object SVGAnimatedString]"===Di.call(a.prop("href"))&&(s="xlinkHref",i.$attr[s]="xlink:href",o=null),i.$observe(t,function(t){return t?(i.$set(s,t),void(Si&&o&&a.prop(o,i[s]))):void("href"===e&&i.$set(s,null))})}}}});var fs={$addControl:h,$$renameControl:ei,$removeControl:h,$setValidity:h,$setDirty:h,$setPristine:h,$setSubmitted:h},_s="ng-submitted";ti.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var vs=function(e){return["$timeout","$parse",function(t,a){function i(e){return""===e?a('this[""]').assign:a(e).assign||h}var o={name:"form",restrict:e?"EAC":"E",require:["form","^^?form"],controller:ti,compile:function(a,o){a.addClass(Js).addClass(Zs);var s=o.name?"name":e&&o.ngForm?"ngForm":!1;return{pre:function(e,a,o,r){var l=r[0];if(!("action"in o)){var c=function(t){e.$apply(function(){l.$commitViewValue(),l.$setSubmitted()}),t.preventDefault()};no(a[0],"submit",c),a.on("$destroy",function(){t(function(){ao(a[0],"submit",c)},0,!1)})}var d=r[1]||l.$$parentForm;d.$addControl(l);var p=s?i(l.$name):h;s&&(p(e,l),o.$observe(s,function(t){l.$name!==t&&(p(e,n),l.$$parentForm.$$renameControl(l,t),(p=i(l.$name))(e,l))})),a.on("$destroy",function(){l.$$parentForm.$removeControl(l),p(e,n),u(l,fs)})}}}};return o}]},ys=vs(),bs=vs(!0),ws=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,ks=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,$s=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,Cs=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,Ss=/^(\d{4})-(\d{2})-(\d{2})$/,Ms=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,xs=/^(\d{4})-W(\d\d)$/,Is=/^(\d{4})-(\d\d)$/,As=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Es={text:ai,date:ri("date",Ss,si(Ss,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":ri("datetimelocal",Ms,si(Ms,["yyyy","MM","dd","HH","mm","ss","sss"]),"yyyy-MM-ddTHH:mm:ss.sss"),time:ri("time",As,si(As,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:ri("week",xs,oi,"yyyy-Www"),month:ri("month",Is,si(Is,["yyyy","MM"]),"yyyy-MM"),number:ci,url:di,email:ui,radio:pi,checkbox:gi,hidden:h,button:h,submit:h,reset:h,file:h},Ts=["$browser","$sniffer","$filter","$parse",function(e,t,n,a){return{restrict:"E",require:["?ngModel"],link:{pre:function(i,o,s,r){r[0]&&(Es[bi(s.type)]||Es.text)(i,o,s,r[0],t,e,n,a)}}}}],Ds=/^(true|false|\d+)$/,Ps=function(){return{restrict:"A",priority:100,compile:function(e,t){return Ds.test(t.ngValue)?function(e,t,n){n.$set("value",e.$eval(n.ngValue))}:function(e,t,n){e.$watch(n.ngValue,function(e){n.$set("value",e)})}}}},Fs=["$compile",function(e){return{restrict:"AC",compile:function(t){return e.$$addBindingClass(t),function(t,n,a){e.$$addBindingInfo(n,a.ngBind),n=n[0],t.$watch(a.ngBind,function(e){n.textContent=y(e)?"":e})}}}}],Rs=["$interpolate","$compile",function(e,t){return{compile:function(n){return t.$$addBindingClass(n),function(n,a,i){var o=e(a.attr(i.$attr.ngBindTemplate));t.$$addBindingInfo(a,o.expressions),a=a[0],i.$observe("ngBindTemplate",function(e){a.textContent=y(e)?"":e})}}}}],Ns=["$sce","$parse","$compile",function(e,t,n){return{restrict:"A",compile:function(a,i){var o=t(i.ngBindHtml),s=t(i.ngBindHtml,function(e){return(e||"").toString()});return n.$$addBindingClass(a),function(t,a,i){n.$$addBindingInfo(a,i.ngBindHtml),t.$watch(s,function(){a.html(e.getTrustedHtml(o(t))||"")})}}}}],Us=_({restrict:"A",require:"ngModel",link:function(e,t,n,a){a.$viewChangeListeners.push(function(){e.$eval(n.ngChange)})}}),Os=hi("",!0),Bs=hi("Odd",0),Ls=hi("Even",1),js=Qa({compile:function(e,t){t.$set("ngCloak",n),e.removeClass("ng-cloak")}}),qs=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],Hs={},Vs={blur:!0,focus:!0};o("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(e){var t=dn("ng-"+e);Hs[t]=["$parse","$rootScope",function(n,a){return{restrict:"A",compile:function(i,o){var s=n(o[t],null,!0);return function(t,n){n.on(e,function(n){var i=function(){s(t,{$event:n})};Vs[e]&&a.$$phase?t.$evalAsync(i):t.$apply(i)})}}}}]});var zs=["$animate",function(e){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(n,a,i,o,s){var r,l,c;n.$watch(i.ngIf,function(n){n?l||s(function(n,o){l=o,n[n.length++]=t.createComment(" end ngIf: "+i.ngIf+" "),r={clone:n},e.enter(n,a.parent(),a)}):(c&&(c.remove(),c=null),l&&(l.$destroy(),l=null),r&&(c=ht(r.clone),e.leave(c).then(function(){c=null}),r=null))})}}}],Ws=["$templateRequest","$anchorScroll","$animate",function(e,t,n){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:Ri.noop,compile:function(a,i){var o=i.ngInclude||i.src,s=i.onload||"",r=i.autoscroll;return function(a,i,l,c,d){var u,p,m,g=0,h=function(){p&&(p.remove(),p=null),u&&(u.$destroy(),u=null),m&&(n.leave(m).then(function(){p=null}),p=m,m=null)};a.$watch(o,function(o){var l=function(){!b(r)||r&&!a.$eval(r)||t()},p=++g;o?(e(o,!0).then(function(e){if(p===g){var t=a.$new();c.template=e;var r=d(t,function(e){h(),n.enter(e,null,i).then(l)});u=t,m=r,u.$emit("$includeContentLoaded",o),a.$eval(s)}},function(){p===g&&(h(),a.$emit("$includeContentError",o))}),a.$emit("$includeContentRequested",o)):(h(),c.template=null)})}}}}],Gs=["$compile",function(e){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(n,a,i,o){return/SVG/.test(a[0].toString())?(a.empty(),void e(Mt(o.template,t).childNodes)(n,function(e){a.append(e)},{futureParentElement:a})):(a.html(o.template),void e(a.contents())(n))}}}],Ks=Qa({priority:450,compile:function(){return{pre:function(e,t,n){e.$eval(n.ngInit)}}}}),Ys=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(e,t,a,i){var s=t.attr(a.$attr.ngList)||", ",r="false"!==a.ngTrim,l=r?Li(s):s,c=function(e){if(!y(e)){var t=[];return e&&o(e.split(l),function(e){e&&t.push(r?Li(e):e)}),t}};i.$parsers.push(c),i.$formatters.push(function(e){return Oi(e)?e.join(s):n}),i.$isEmpty=function(e){return!e||!e.length}}}},Zs="ng-valid",Xs="ng-invalid",Js="ng-pristine",Qs="ng-dirty",er="ng-untouched",tr="ng-touched",nr="ng-pending",ar=a("ngModel"),ir=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(e,t,a,i,s,r,l,c,d,u){this.$viewValue=Number.NaN,this.$modelValue=Number.NaN,this.$$rawModelValue=n,this.$validators={},this.$asyncValidators={},this.$parsers=[],this.$formatters=[],this.$viewChangeListeners=[],this.$untouched=!0,this.$touched=!1,this.$pristine=!0,this.$dirty=!1,this.$valid=!0,this.$invalid=!1,this.$error={},this.$$success={},this.$pending=n,this.$name=u(a.name||"",!1)(e),this.$$parentForm=fs;var p,m=s(a.ngModel),g=m.assign,f=m,_=g,v=null,w=this;this.$$setOptions=function(e){if(w.$options=e,e&&e.getterSetter){var t=s(a.ngModel+"()"),n=s(a.ngModel+"($$$p)");f=function(e){var n=m(e);return M(n)&&(n=t(e)),n},_=function(e){M(m(e))?n(e,{$$$p:w.$modelValue}):g(e,w.$modelValue)}}else if(!m.assign)throw ar("nonassign","Expression '{0}' is non-assignable. Element: {1}",a.ngModel,J(i))},this.$render=h,this.$isEmpty=function(e){return y(e)||""===e||null===e||e!==e};var k=0;fi({ctrl:this,$element:i,set:function(e,t){e[t]=!0},unset:function(e,t){delete e[t]},$animate:r}),this.$setPristine=function(){w.$dirty=!1,w.$pristine=!0,r.removeClass(i,Qs),r.addClass(i,Js)},this.$setDirty=function(){w.$dirty=!0,w.$pristine=!1,r.removeClass(i,Js),r.addClass(i,Qs),w.$$parentForm.$setDirty()},this.$setUntouched=function(){w.$touched=!1,w.$untouched=!0,r.setClass(i,er,tr)},this.$setTouched=function(){w.$touched=!0,w.$untouched=!1,r.setClass(i,tr,er)},this.$rollbackViewValue=function(){l.cancel(v),w.$viewValue=w.$$lastCommittedViewValue,w.$render()},this.$validate=function(){if(!C(w.$modelValue)||!isNaN(w.$modelValue)){var e=w.$$lastCommittedViewValue,t=w.$$rawModelValue,a=w.$valid,i=w.$modelValue,o=w.$options&&w.$options.allowInvalid;w.$$runValidators(t,e,function(e){o||a===e||(w.$modelValue=e?t:n,w.$modelValue!==i&&w.$$writeModelToScope())})}},this.$$runValidators=function(e,t,a){function i(){var e=w.$$parserName||"parse";return y(p)?(l(e,null),!0):(p||(o(w.$validators,function(e,t){l(t,null)}),o(w.$asyncValidators,function(e,t){l(t,null)})),l(e,p),p)}function s(){var n=!0;return o(w.$validators,function(a,i){var o=a(e,t);n=n&&o,l(i,o)}),n?!0:(o(w.$asyncValidators,function(e,t){l(t,null)}),!1)}function r(){var a=[],i=!0;o(w.$asyncValidators,function(o,s){var r=o(e,t);if(!F(r))throw ar("$asyncValidators","Expected asynchronous validator to return a promise but got '{0}' instead.",r);l(s,n),a.push(r.then(function(){l(s,!0)},function(){i=!1,l(s,!1)}))}),a.length?d.all(a).then(function(){c(i)},h):c(!0)}function l(e,t){u===k&&w.$setValidity(e,t)}function c(e){u===k&&a(e)}k++;var u=k;return i()&&s()?void r():void c(!1)},this.$commitViewValue=function(){var e=w.$viewValue;l.cancel(v),(w.$$lastCommittedViewValue!==e||""===e&&w.$$hasNativeValidators)&&(w.$$lastCommittedViewValue=e,w.$pristine&&this.$setDirty(),this.$$parseAndValidate())},this.$$parseAndValidate=function(){function t(){w.$modelValue!==s&&w.$$writeModelToScope()}var a=w.$$lastCommittedViewValue,i=a;if(p=y(i)?n:!0)for(var o=0;o<w.$parsers.length;o++)if(i=w.$parsers[o](i),y(i)){p=!1;break}C(w.$modelValue)&&isNaN(w.$modelValue)&&(w.$modelValue=f(e));var s=w.$modelValue,r=w.$options&&w.$options.allowInvalid;w.$$rawModelValue=i,r&&(w.$modelValue=i,t()),w.$$runValidators(i,w.$$lastCommittedViewValue,function(e){r||(w.$modelValue=e?i:n,t())})},this.$$writeModelToScope=function(){_(e,w.$modelValue),o(w.$viewChangeListeners,function(e){try{e()}catch(n){t(n)}})},this.$setViewValue=function(e,t){w.$viewValue=e,(!w.$options||w.$options.updateOnDefault)&&w.$$debounceViewValueCommit(t)},this.$$debounceViewValueCommit=function(t){var n,a=0,i=w.$options;i&&b(i.debounce)&&(n=i.debounce,C(n)?a=n:C(n[t])?a=n[t]:C(n["default"])&&(a=n["default"])),l.cancel(v),a?v=l(function(){w.$commitViewValue()},a):c.$$phase?w.$commitViewValue():e.$apply(function(){w.$commitViewValue()})},e.$watch(function(){var t=f(e);if(t!==w.$modelValue&&(w.$modelValue===w.$modelValue||t===t)){w.$modelValue=w.$$rawModelValue=t,p=n;for(var a=w.$formatters,i=a.length,o=t;i--;)o=a[i](o);w.$viewValue!==o&&(w.$viewValue=w.$$lastCommittedViewValue=o,w.$render(),w.$$runValidators(t,o,h))}return t})}],or=["$rootScope",function(e){return{restrict:"A",require:["ngModel","^?form","^?ngModelOptions"],controller:ir,priority:1,compile:function(t){return t.addClass(Js).addClass(er).addClass(Zs),{pre:function(e,t,n,a){var i=a[0],o=a[1]||i.$$parentForm;i.$$setOptions(a[2]&&a[2].$options),o.$addControl(i),n.$observe("name",function(e){i.$name!==e&&i.$$parentForm.$$renameControl(i,e)}),e.$on("$destroy",function(){i.$$parentForm.$removeControl(i)})},post:function(t,n,a,i){var o=i[0];o.$options&&o.$options.updateOn&&n.on(o.$options.updateOn,function(e){o.$$debounceViewValueCommit(e&&e.type)}),n.on("blur",function(){o.$touched||(e.$$phase?t.$evalAsync(o.$setTouched):t.$apply(o.$setTouched))})}}}}}],sr=/(\s+|^)default(\s+|$)/,rr=function(){return{restrict:"A",controller:["$scope","$attrs",function(e,t){var n=this;this.$options=L(e.$eval(t.ngModelOptions)),b(this.$options.updateOn)?(this.$options.updateOnDefault=!1,this.$options.updateOn=Li(this.$options.updateOn.replace(sr,function(){return n.$options.updateOnDefault=!0," "}))):this.$options.updateOnDefault=!0}]}},lr=Qa({terminal:!0,priority:1e3}),cr=a("ngOptions"),dr=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,ur=["$compile","$parse",function(e,n){function a(e,t,a){function o(e,t,n,a,i){this.selectValue=e,this.viewValue=t,this.label=n,this.group=a,this.disabled=i}function s(e){var t;if(!c&&i(e))t=e;else{t=[];for(var n in e)e.hasOwnProperty(n)&&"$"!==n.charAt(0)&&t.push(n)}return t}var r=e.match(dr);if(!r)throw cr("iexp","Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}",e,J(t));var l=r[5]||r[7],c=r[6],d=/ as /.test(r[0])&&r[1],u=r[9],p=n(r[2]?r[1]:l),m=d&&n(d),g=m||p,h=u&&n(u),f=u?function(e,t){return h(a,t)}:function(e){return Kt(e)},_=function(e,t){return f(e,$(e,t))},v=n(r[2]||r[1]),y=n(r[3]||""),b=n(r[4]||""),w=n(r[8]),k={},$=c?function(e,t){return k[c]=t,k[l]=e,k}:function(e){return k[l]=e,k};return{trackBy:u,getTrackByValue:_,getWatchables:n(w,function(e){var t=[];e=e||[];for(var n=s(e),i=n.length,o=0;i>o;o++){var l=e===n?o:n[o],c=(e[l],$(e[l],l)),d=f(e[l],c);if(t.push(d),r[2]||r[1]){var u=v(a,c);t.push(u)}if(r[4]){var p=b(a,c);t.push(p)}}return t}),getOptions:function(){for(var e=[],t={},n=w(a)||[],i=s(n),r=i.length,l=0;r>l;l++){var c=n===i?l:i[l],d=n[c],p=$(d,c),m=g(a,p),h=f(m,p),k=v(a,p),C=y(a,p),S=b(a,p),M=new o(h,m,k,C,S);e.push(M),t[h]=M}return{items:e,selectValueMap:t,getOptionFromViewValue:function(e){return t[_(e)]},getViewValueFromOption:function(e){return u?Ri.copy(e.viewValue):e.viewValue}}}}}var s=t.createElement("option"),r=t.createElement("optgroup");return{restrict:"A",terminal:!0,require:["select","?ngModel"],link:function(t,n,i,l){function c(e,t){e.element=t,t.disabled=e.disabled,e.label!==t.label&&(t.label=e.label,t.textContent=e.label),e.value!==t.value&&(t.value=e.selectValue)}function d(e,t,n,a){var i;return t&&bi(t.nodeName)===n?i=t:(i=a.cloneNode(!1),t?e.insertBefore(i,t):e.appendChild(i)),i}function u(e){for(var t;e;)t=e.nextSibling,qt(e),e=t}function p(e){var t=h&&h[0],n=k&&k[0];if(t||n)for(;e&&(e===t||e===n||t&&t.nodeType===Zi);)e=e.nextSibling;return e}function m(){var e=$&&f.readValue();$=C.getOptions();var t={},a=n[0].firstChild;if(w&&n.prepend(h),a=p(a),$.items.forEach(function(e){var i,o,l;e.group?(i=t[e.group],i||(o=d(n[0],a,"optgroup",r),a=o.nextSibling,o.label=e.group,i=t[e.group]={groupElement:o,currentOptionElement:o.firstChild}),l=d(i.groupElement,i.currentOptionElement,"option",s),c(e,l),i.currentOptionElement=l.nextSibling):(l=d(n[0],a,"option",s),c(e,l),a=l.nextSibling)}),Object.keys(t).forEach(function(e){u(t[e].currentOptionElement)}),u(a),g.$render(),!g.$isEmpty(e)){var i=f.readValue();(C.trackBy?q(e,i):e===i)||(g.$setViewValue(i),g.$render())}}var g=l[1];if(g){for(var h,f=l[0],_=i.multiple,v=0,y=n.children(),b=y.length;b>v;v++)if(""===y[v].value){h=y.eq(v);break}var w=!!h,k=Mi(s.cloneNode(!1));k.val("?");var $,C=a(i.ngOptions,n,t),S=function(){w||n.prepend(h),n.val(""),h.prop("selected",!0),h.attr("selected",!0)},M=function(){w||h.remove()},x=function(){n.prepend(k),n.val("?"),k.prop("selected",!0),k.attr("selected",!0)},I=function(){k.remove()};_?(g.$isEmpty=function(e){return!e||0===e.length},f.writeValue=function(e){$.items.forEach(function(e){e.element.selected=!1}),e&&e.forEach(function(e){var t=$.getOptionFromViewValue(e);t&&!t.disabled&&(t.element.selected=!0)})},f.readValue=function(){var e=n.val()||[],t=[];return o(e,function(e){var n=$.selectValueMap[e];n&&!n.disabled&&t.push($.getViewValueFromOption(n))}),t},C.trackBy&&t.$watchCollection(function(){return Oi(g.$viewValue)?g.$viewValue.map(function(e){return C.getTrackByValue(e)}):void 0},function(){g.$render()})):(f.writeValue=function(e){var t=$.getOptionFromViewValue(e);t&&!t.disabled?n[0].value!==t.selectValue&&(I(),M(),n[0].value=t.selectValue,t.element.selected=!0,t.element.setAttribute("selected","selected")):null===e||w?(I(),S()):(M(),x())},f.readValue=function(){var e=$.selectValueMap[n.val()];return e&&!e.disabled?(M(),I(),$.getViewValueFromOption(e)):null},C.trackBy&&t.$watch(function(){return C.getTrackByValue(g.$viewValue)},function(){g.$render()})),w?(h.remove(),e(h)(t),h.removeClass("ng-scope")):h=Mi(s.cloneNode(!1)),m(),t.$watchCollection(C.getWatchables,m)}}}}],pr=["$locale","$interpolate","$log",function(e,t,n){var a=/{}/g,i=/^when(Minus)?(.+)$/;return{link:function(s,r,l){function c(e){r.text(e||"")}var d,u=l.count,p=l.$attr.when&&r.attr(l.$attr.when),m=l.offset||0,g=s.$eval(p)||{},f={},_=t.startSymbol(),v=t.endSymbol(),b=_+u+"-"+m+v,w=Ri.noop;o(l,function(e,t){var n=i.exec(t);if(n){var a=(n[1]?"-":"")+bi(n[2]);g[a]=r.attr(l.$attr[t])}}),o(g,function(e,n){f[n]=t(e.replace(a,b))}),s.$watch(u,function(t){var a=parseFloat(t),i=isNaN(a);if(i||a in g||(a=e.pluralCat(a-m)),a!==d&&!(i&&C(d)&&isNaN(d))){w();var o=f[a];y(o)?(null!=t&&n.debug("ngPluralize: no rule defined for '"+a+"' in "+p),w=h,c()):w=s.$watch(o,c),d=a}})}}}],mr=["$parse","$animate",function(e,s){var r="$$NG_REMOVED",l=a("ngRepeat"),c=function(e,t,n,a,i,o,s){e[n]=a,i&&(e[i]=o),e.$index=t,e.$first=0===t,e.$last=t===s-1,e.$middle=!(e.$first||e.$last),e.$odd=!(e.$even=0===(1&t))
},d=function(e){return e.clone[0]},u=function(e){return e.clone[e.clone.length-1]};return{restrict:"A",multiElement:!0,transclude:"element",priority:1e3,terminal:!0,$$tlb:!0,compile:function(a,p){var m=p.ngRepeat,g=t.createComment(" end ngRepeat: "+m+" "),h=m.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!h)throw l("iexp","Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",m);var f=h[1],_=h[2],v=h[3],y=h[4];if(h=f.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/),!h)throw l("iidexp","'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",f);var b=h[3]||h[1],w=h[2];if(v&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(v)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(v)))throw l("badident","alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.",v);var k,$,C,S,M={$id:Kt};return y?k=e(y):(C=function(e,t){return Kt(t)},S=function(e){return e}),function(e,t,a,p,h){k&&($=function(t,n,a){return w&&(M[w]=t),M[b]=n,M.$index=a,k(e,M)});var f=ft();e.$watchCollection(_,function(a){var p,_,y,k,M,x,I,A,E,T,D,P,F=t[0],R=ft();if(v&&(e[v]=a),i(a))E=a,A=$||C;else{A=$||S,E=[];for(var N in a)wi.call(a,N)&&"$"!==N.charAt(0)&&E.push(N)}for(k=E.length,D=new Array(k),p=0;k>p;p++)if(M=a===E?p:E[p],x=a[M],I=A(M,x,p),f[I])T=f[I],delete f[I],R[I]=T,D[p]=T;else{if(R[I])throw o(D,function(e){e&&e.scope&&(f[e.id]=e)}),l("dupes","Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}",m,I,x);D[p]={id:I,scope:n,clone:n},R[I]=!0}for(var U in f){if(T=f[U],P=ht(T.clone),s.leave(P),P[0].parentNode)for(p=0,_=P.length;_>p;p++)P[p][r]=!0;T.scope.$destroy()}for(p=0;k>p;p++)if(M=a===E?p:E[p],x=a[M],T=D[p],T.scope){y=F;do y=y.nextSibling;while(y&&y[r]);d(T)!=y&&s.move(ht(T.clone),null,Mi(F)),F=u(T),c(T.scope,p,b,x,w,M,k)}else h(function(e,t){T.scope=t;var n=g.cloneNode(!1);e[e.length++]=n,s.enter(e,null,Mi(F)),F=n,T.clone=e,R[T.id]=T,c(T.scope,p,b,x,w,M,k)});f=R})}}}}],gr="ng-hide",hr="ng-hide-animate",fr=["$animate",function(e){return{restrict:"A",multiElement:!0,link:function(t,n,a){t.$watch(a.ngShow,function(t){e[t?"removeClass":"addClass"](n,gr,{tempClasses:hr})})}}}],_r=["$animate",function(e){return{restrict:"A",multiElement:!0,link:function(t,n,a){t.$watch(a.ngHide,function(t){e[t?"addClass":"removeClass"](n,gr,{tempClasses:hr})})}}}],vr=Qa(function(e,t,n){e.$watch(n.ngStyle,function(e,n){n&&e!==n&&o(n,function(e,n){t.css(n,"")}),e&&t.css(e)},!0)}),yr=["$animate",function(e){return{require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(n,a,i,s){var r=i.ngSwitch||i.on,l=[],c=[],d=[],u=[],p=function(e,t){return function(){e.splice(t,1)}};n.$watch(r,function(n){var a,i;for(a=0,i=d.length;i>a;++a)e.cancel(d[a]);for(d.length=0,a=0,i=u.length;i>a;++a){var r=ht(c[a].clone);u[a].$destroy();var m=d[a]=e.leave(r);m.then(p(d,a))}c.length=0,u.length=0,(l=s.cases["!"+n]||s.cases["?"])&&o(l,function(n){n.transclude(function(a,i){u.push(i);var o=n.element;a[a.length++]=t.createComment(" end ngSwitchWhen: ");var s={clone:a};c.push(s),e.enter(a,o.parent(),o)})})})}}}],br=Qa({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(e,t,n,a,i){a.cases["!"+n.ngSwitchWhen]=a.cases["!"+n.ngSwitchWhen]||[],a.cases["!"+n.ngSwitchWhen].push({transclude:i,element:t})}}),wr=Qa({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(e,t,n,a,i){a.cases["?"]=a.cases["?"]||[],a.cases["?"].push({transclude:i,element:t})}}),kr=Qa({restrict:"EAC",link:function(e,t,n,i,o){if(!o)throw a("ngTransclude")("orphan","Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}",J(t));o(function(e){t.empty(),t.append(e)})}}),$r=["$templateCache",function(e){return{restrict:"E",terminal:!0,compile:function(t,n){if("text/ng-template"==n.type){var a=n.id,i=t[0].text;e.put(a,i)}}}}],Cr={$setViewValue:h,$render:h},Sr=["$element","$scope","$attrs",function(e,a){var i=this,o=new Yt;i.ngModelCtrl=Cr,i.unknownOption=Mi(t.createElement("option")),i.renderUnknownOption=function(t){var n="? "+Kt(t)+" ?";i.unknownOption.val(n),e.prepend(i.unknownOption),e.val(n)},a.$on("$destroy",function(){i.renderUnknownOption=h}),i.removeUnknownOption=function(){i.unknownOption.parent()&&i.unknownOption.remove()},i.readValue=function(){return i.removeUnknownOption(),e.val()},i.writeValue=function(t){i.hasOption(t)?(i.removeUnknownOption(),e.val(t),""===t&&i.emptyOption.prop("selected",!0)):null==t&&i.emptyOption?(i.removeUnknownOption(),e.val("")):i.renderUnknownOption(t)},i.addOption=function(e,t){mt(e,'"option value"'),""===e&&(i.emptyOption=t);var n=o.get(e)||0;o.put(e,n+1)},i.removeOption=function(e){var t=o.get(e);t&&(1===t?(o.remove(e),""===e&&(i.emptyOption=n)):o.put(e,t-1))},i.hasOption=function(e){return!!o.get(e)}}],Mr=function(){return{restrict:"E",require:["select","?ngModel"],controller:Sr,link:function(e,t,n,a){var i=a[1];if(i){var s=a[0];if(s.ngModelCtrl=i,i.$render=function(){s.writeValue(i.$viewValue)},t.on("change",function(){e.$apply(function(){i.$setViewValue(s.readValue())})}),n.multiple){s.readValue=function(){var e=[];return o(t.find("option"),function(t){t.selected&&e.push(t.value)}),e},s.writeValue=function(e){var n=new Yt(e);o(t.find("option"),function(e){e.selected=b(n.get(e.value))})};var r,l=0/0;e.$watch(function(){l!==i.$viewValue||q(r,i.$viewValue)||(r=j(i.$viewValue),i.$render()),l=i.$viewValue}),i.$isEmpty=function(e){return!e||0===e.length}}}}}},xr=["$interpolate",function(e){function t(e){e[0].hasAttribute("selected")&&(e[0].selected=!0)}return{restrict:"E",priority:100,compile:function(n,a){if(b(a.value))var i=e(a.value,!0);else{var o=e(n.text(),!0);o||a.$set("value",n.text())}return function(e,n,a){function s(e){c.addOption(e,n),c.ngModelCtrl.$render(),t(n)}var r="$selectController",l=n.parent(),c=l.data(r)||l.parent().data(r);if(c&&c.ngModelCtrl){if(i){var d;a.$observe("value",function(e){b(d)&&c.removeOption(d),d=e,s(e)})}else o?e.$watch(o,function(e,t){a.$set("value",e),t!==e&&c.removeOption(t),s(e)}):s(a.value);n.on("$destroy",function(){c.removeOption(a.value),c.ngModelCtrl.$render()})}}}}}],Ir=_({restrict:"E",terminal:!1}),Ar=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,n,a){a&&(n.required=!0,a.$validators.required=function(e,t){return!n.required||!a.$isEmpty(t)},n.$observe("required",function(){a.$validate()}))}}},Er=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,i,o){if(o){var s,r=i.ngPattern||i.pattern;i.$observe("pattern",function(e){if($(e)&&e.length>0&&(e=new RegExp("^"+e+"$")),e&&!e.test)throw a("ngPattern")("noregexp","Expected {0} to be a RegExp but was {1}. Element: {2}",r,e,J(t));s=e||n,o.$validate()}),o.$validators.pattern=function(e,t){return o.$isEmpty(t)||y(s)||s.test(t)}}}}},Tr=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,n,a){if(a){var i=-1;n.$observe("maxlength",function(e){var t=m(e);i=isNaN(t)?-1:t,a.$validate()}),a.$validators.maxlength=function(e,t){return 0>i||a.$isEmpty(t)||t.length<=i}}}}},Dr=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,n,a){if(a){var i=0;n.$observe("minlength",function(e){i=m(e)||0,a.$validate()}),a.$validators.minlength=function(e,t){return a.$isEmpty(t)||t.length>=i}}}}};return e.angular.bootstrap?void console.log("WARNING: Tried to load angular more than once."):(dt(),bt(Ri),Ri.module("ngLocale",[],["$provide",function(e){function t(e){e+="";var t=e.indexOf(".");return-1==t?0:e.length-t-1}function a(e,a){var i=a;n===i&&(i=Math.min(t(e),3));var o=Math.pow(10,i),s=(e*o|0)%o;return{v:i,f:s}}var i={ZERO:"zero",ONE:"one",TWO:"two",FEW:"few",MANY:"many",OTHER:"other"};e.value("$locale",{DATETIME_FORMATS:{AMPMS:["AM","PM"],DAY:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"],FIRSTDAYOFWEEK:6,MONTH:["January","February","March","April","May","June","July","August","September","October","November","December"],SHORTDAY:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],SHORTMONTH:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],WEEKENDRANGE:[5,6],fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",medium:"MMM d, y h:mm:ss a",mediumDate:"MMM d, y",mediumTime:"h:mm:ss a","short":"M/d/yy h:mm a",shortDate:"M/d/yy",shortTime:"h:mm a"},NUMBER_FORMATS:{CURRENCY_SYM:"$",DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{gSize:3,lgSize:3,maxFrac:3,minFrac:0,minInt:1,negPre:"-",negSuf:"",posPre:"",posSuf:""},{gSize:3,lgSize:3,maxFrac:2,minFrac:2,minInt:1,negPre:"-¤",negSuf:"",posPre:"¤",posSuf:""}]},id:"en-us",pluralCat:function(e,t){var n=0|e,o=a(e,t);return 1==n&&0==o.v?i.ONE:i.OTHER}})}]),void Mi(t).ready(function(){ot(t,st)}))}(window,document),!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}</style>'),function(e,t){"use strict";function n(){function e(e,n){return t.extend(Object.create(e),n)}function n(e,t){var n=t.caseInsensitiveMatch,a={originalPath:e,regexp:e},i=a.keys=[];return e=e.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?\*])?/g,function(e,t,n,a){var o="?"===a?a:null,s="*"===a?a:null;return i.push({name:n,optional:!!o}),t=t||"",""+(o?"":t)+"(?:"+(o?t:"")+(s&&"(.+?)"||"([^/]+)")+(o||"")+")"+(o||"")}).replace(/([\/$\*])/g,"\\$1"),a.regexp=new RegExp("^"+e+"$",n?"i":""),a}var a={};this.when=function(e,i){var o=t.copy(i);if(t.isUndefined(o.reloadOnSearch)&&(o.reloadOnSearch=!0),t.isUndefined(o.caseInsensitiveMatch)&&(o.caseInsensitiveMatch=this.caseInsensitiveMatch),a[e]=t.extend(o,e&&n(e,o)),e){var s="/"==e[e.length-1]?e.substr(0,e.length-1):e+"/";a[s]=t.extend({redirectTo:e},n(s,o))}return this},this.caseInsensitiveMatch=!1,this.otherwise=function(e){return"string"==typeof e&&(e={redirectTo:e}),this.when(null,e),this},this.$get=["$rootScope","$location","$routeParams","$q","$injector","$templateRequest","$sce",function(n,i,o,s,l,c,d){function u(e,t){var n=t.keys,a={};if(!t.regexp)return null;var i=t.regexp.exec(e);if(!i)return null;for(var o=1,s=i.length;s>o;++o){var r=n[o-1],l=i[o];r&&l&&(a[r.name]=l)}return a}function p(e){var a=y.current;f=g(),_=f&&a&&f.$$route===a.$$route&&t.equals(f.pathParams,a.pathParams)&&!f.reloadOnSearch&&!v,_||!a&&!f||n.$broadcast("$routeChangeStart",f,a).defaultPrevented&&e&&e.preventDefault()}function m(){var e=y.current,a=f;_?(e.params=a.params,t.copy(e.params,o),n.$broadcast("$routeUpdate",e)):(a||e)&&(v=!1,y.current=a,a&&a.redirectTo&&(t.isString(a.redirectTo)?i.path(h(a.redirectTo,a.params)).search(a.params).replace():i.url(a.redirectTo(a.pathParams,i.path(),i.search())).replace()),s.when(a).then(function(){if(a){var e,n,i=t.extend({},a.resolve);return t.forEach(i,function(e,n){i[n]=t.isString(e)?l.get(e):l.invoke(e,null,null,n)}),t.isDefined(e=a.template)?t.isFunction(e)&&(e=e(a.params)):t.isDefined(n=a.templateUrl)&&(t.isFunction(n)&&(n=n(a.params)),t.isDefined(n)&&(a.loadedTemplateUrl=d.valueOf(n),e=c(n))),t.isDefined(e)&&(i.$template=e),s.all(i)}}).then(function(i){a==y.current&&(a&&(a.locals=i,t.copy(a.params,o)),n.$broadcast("$routeChangeSuccess",a,e))},function(t){a==y.current&&n.$broadcast("$routeChangeError",a,e,t)}))}function g(){var n,o;return t.forEach(a,function(a){!o&&(n=u(i.path(),a))&&(o=e(a,{params:t.extend({},i.search(),n),pathParams:n}),o.$$route=a)}),o||a[null]&&e(a[null],{params:{},pathParams:{}})}function h(e,n){var a=[];return t.forEach((e||"").split(":"),function(e,t){if(0===t)a.push(e);else{var i=e.match(/(\w+)(?:[?*])?(.*)/),o=i[1];a.push(n[o]),a.push(i[2]||""),delete n[o]}}),a.join("")}var f,_,v=!1,y={routes:a,reload:function(){v=!0,n.$evalAsync(function(){p(),m()})},updateParams:function(e){if(!this.current||!this.current.$$route)throw r("norout","Tried updating route when with no current route");e=t.extend({},this.current.params,e),i.path(h(this.current.$$route.originalPath,e)),i.search(e)}};return n.$on("$locationChangeStart",p),n.$on("$locationChangeSuccess",m),y}]}function a(){this.$get=function(){return{}}}function i(e,n,a){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(i,o,s,r,l){function c(){m&&(a.cancel(m),m=null),u&&(u.$destroy(),u=null),p&&(m=a.leave(p),m.then(function(){m=null}),p=null)}function d(){var s=e.current&&e.current.locals,r=s&&s.$template;if(t.isDefined(r)){var d=i.$new(),m=e.current,f=l(d,function(e){a.enter(e,null,p||o).then(function(){!t.isDefined(g)||g&&!i.$eval(g)||n()}),c()});p=f,u=m.scope=d,u.$emit("$viewContentLoaded"),u.$eval(h)}else c()}var u,p,m,g=s.autoscroll,h=s.onload||"";i.$on("$routeChangeSuccess",d),d()}}}function o(e,t,n){return{restrict:"ECA",priority:-400,link:function(a,i){var o=n.current,s=o.locals;i.html(s.$template);var r=e(i.contents());if(o.controller){s.$scope=a;var l=t(o.controller,s);o.controllerAs&&(a[o.controllerAs]=l),i.data("$ngControllerController",l),i.children().data("$ngControllerController",l)}r(a)}}}var s=t.module("ngRoute",["ng"]).provider("$route",n),r=t.$$minErr("ngRoute");s.provider("$routeParams",a),s.directive("ngView",i),s.directive("ngView",o),i.$inject=["$route","$anchorScroll","$animate"],o.$inject=["$compile","$controller","$route"]}(window,window.angular),function(e,t){"use strict";function n(e,t,n){if(!e)throw ngMinErr("areq","Argument '{0}' is {1}",t||"?",n||"required");return e}function a(e,t){return e||t?e?t?(j(e)&&(e=e.join(" ")),j(t)&&(t=t.join(" ")),e+" "+t):e:t:""}function i(e){var t={};return e&&(e.to||e.from)&&(t.to=e.to,t.from=e.from),t}function o(e,t,n){var a="";return e=j(e)?e:e&&q(e)&&e.length?e.split(/\s+/):[],L(e,function(e,i){e&&e.length>0&&(a+=i>0?" ":"",a+=n?t+e:e+t)}),a}function s(e,t){var n=e.indexOf(t);t>=0&&e.splice(n,1)}function r(e){if(e instanceof B)switch(e.length){case 0:return[];case 1:if(e[0].nodeType===K)return e;break;default:return B(l(e))}return e.nodeType===K?B(e):void 0}function l(e){if(!e[0])return e;for(var t=0;t<e.length;t++){var n=e[t];if(n.nodeType==K)return n}}function c(e,t,n){L(t,function(t){e.addClass(t,n)})}function d(e,t,n){L(t,function(t){e.removeClass(t,n)})}function u(e){return function(t,n){n.addClass&&(c(e,t,n.addClass),n.addClass=null),n.removeClass&&(d(e,t,n.removeClass),n.removeClass=null)}}function p(e){if(e=e||{},!e.$$prepared){var t=e.domOperation||U;e.domOperation=function(){e.$$domOperationFired=!0,t(),t=U},e.$$prepared=!0}return e}function m(e,t){g(e,t),h(e,t)}function g(e,t){t.from&&(e.css(t.from),t.from=null)}function h(e,t){t.to&&(e.css(t.to),t.to=null)}function f(e,t,n){var a=(t.addClass||"")+" "+(n.addClass||""),i=(t.removeClass||"")+" "+(n.removeClass||""),o=_(e.attr("class"),a,i);n.preparationClasses&&(t.preparationClasses=C(n.preparationClasses,t.preparationClasses),delete n.preparationClasses);var s=t.domOperation!==U?t.domOperation:null;return O(t,n),s&&(t.domOperation=s),t.addClass=o.addClass?o.addClass:null,t.removeClass=o.removeClass?o.removeClass:null,t}function _(e,t,n){function a(e){q(e)&&(e=e.split(" "));var t={};return L(e,function(e){e.length&&(t[e]=!0)}),t}var i=1,o=-1,s={};e=a(e),t=a(t),L(t,function(e,t){s[t]=i}),n=a(n),L(n,function(e,t){s[t]=s[t]===i?null:o});var r={addClass:"",removeClass:""};return L(s,function(t,n){var a,s;t===i?(a="addClass",s=!e[n]):t===o&&(a="removeClass",s=e[n]),s&&(r[a].length&&(r[a]+=" "),r[a]+=n)}),r}function v(e){return e instanceof t.element?e[0]:e}function y(e,t,n){var a="";t&&(a=o(t,X,!0)),n.addClass&&(a=C(a,o(n.addClass,Y))),n.removeClass&&(a=C(a,o(n.removeClass,Z))),a.length&&(n.preparationClasses=a,e.addClass(a))}function b(e,t){t.preparationClasses&&(e.removeClass(t.preparationClasses),t.preparationClasses=null),t.activeClasses&&(e.removeClass(t.activeClasses),t.activeClasses=null)}function w(e,t){var n=t?"-"+t+"s":"";return $(e,[ut,n]),[ut,n]}function k(e,t){var n=t?"paused":"",a=R+rt;return $(e,[a,n]),[a,n]}function $(e,t){var n=t[0],a=t[1];e.style[n]=a}function C(e,t){return e?t?e+" "+t:e:t}function S(e){return[dt,e+"s"]}function M(e,t){var n=t?ct:ut;return[n,e+"s"]}function x(e,t,n){var a=Object.create(null),i=e.getComputedStyle(t)||{};return L(n,function(e,t){var n=i[e];if(n){var o=n.charAt(0);("-"===o||"+"===o||o>=0)&&(n=I(n)),0===n&&(n=null),a[t]=n}}),a}function I(e){var t=0,n=e.split(/\s*,\s*/);return L(n,function(e){"s"==e.charAt(e.length-1)&&(e=e.substring(0,e.length-1)),e=parseFloat(e)||0,t=t?Math.max(e,t):e}),t}function A(e){return 0===e||null!=e}function E(e,t){var n=P,a=e+"s";return t?n+=nt:a+=" linear all",[n,a]}function T(){var e=Object.create(null);return{flush:function(){e=Object.create(null)},count:function(t){var n=e[t];return n?n.total:0},get:function(t){var n=e[t];return n&&n.value},put:function(t,n){e[t]?e[t].total++:e[t]={total:1,value:n}}}}function D(e,t,n){L(n,function(n){e[n]=z(e[n])?e[n]:t.style.getPropertyValue(n)})}var P,F,R,N,U=t.noop,O=t.extend,B=t.element,L=t.forEach,j=t.isArray,q=t.isString,H=t.isObject,V=t.isUndefined,z=t.isDefined,W=t.isFunction,G=t.isElement,K=1,Y="-add",Z="-remove",X="ng-",J="-active",Q="ng-animate",et="$$ngAnimateChildren",tt="";V(e.ontransitionend)&&z(e.onwebkittransitionend)?(tt="-webkit-",P="WebkitTransition",F="webkitTransitionEnd transitionend"):(P="transition",F="transitionend"),V(e.onanimationend)&&z(e.onwebkitanimationend)?(tt="-webkit-",R="WebkitAnimation",N="webkitAnimationEnd animationend"):(R="animation",N="animationend");var nt="Duration",at="Property",it="Delay",ot="TimingFunction",st="IterationCount",rt="PlayState",lt=9999,ct=R+it,dt=R+nt,ut=P+it,pt=P+nt,mt=["$$rAF",function(e){function t(e){a=a.concat(e),n()}function n(){if(a.length){for(var t=a.shift(),o=0;o<t.length;o++)t[o]();i||e(function(){i||n()})}}var a,i;return a=t.queue=[],t.waitUntilQuiet=function(t){i&&i(),i=e(function(){i=null,t(),n()})},t}],gt=[function(){return function(e,n,a){var i=a.ngAnimateChildren;t.isString(i)&&0===i.length?n.data(et,!0):a.$observe("ngAnimateChildren",function(e){e="on"===e||"true"===e,n.data(et,e)})}}],ht="$$animateCss",ft=1e3,_t=3,vt=1.5,yt={transitionDuration:pt,transitionDelay:ut,transitionProperty:P+at,animationDuration:dt,animationDelay:ct,animationIterationCount:R+st},bt={transitionDuration:pt,transitionDelay:ut,animationDuration:dt,animationDelay:ct},wt=["$animateProvider",function(){var e=T(),t=T();this.$get=["$window","$$jqLite","$$AnimateRunner","$timeout","$$forceReflow","$sniffer","$$rAFScheduler","$animate",function(n,a,r,l,c,d,f,_){function y(e,t){var n="$$ngAnimateParentKey",a=e.parentNode,i=a[n]||(a[n]=++B);return i+"-"+e.getAttribute("class")+"-"+t}function b(t,a,i,o){var s=e.get(i);return s||(s=x(n,t,o),"infinite"===s.animationIterationCount&&(s.animationIterationCount=1)),e.put(i,s),s}function C(i,s,r,l){var c;if(e.count(r)>0&&(c=t.get(r),!c)){var d=o(s,"-stagger");a.addClass(i,d),c=x(n,i,l),c.animationDuration=Math.max(c.animationDuration,0),c.transitionDuration=Math.max(c.transitionDuration,0),a.removeClass(i,d),t.put(r,c)}return c||{}}function I(n){q.push(n),f.waitUntilQuiet(function(){e.flush(),t.flush();for(var n=c(),a=0;a<q.length;a++)q[a](n);q.length=0})}function T(e,t,n){var a=b(e,t,n,yt),i=a.animationDelay,o=a.transitionDelay;return a.maxDelay=i&&o?Math.max(i,o):i||o,a.maxDuration=Math.max(a.animationDuration*a.animationIterationCount,a.transitionDuration),a}var O=u(a),B=0,q=[];return function(t,n){function c(){f()}function u(){f(!0)}function f(e){V||W&&z||(V=!0,z=!1,n.$$skipPreparationClasses||a.removeClass(t,mt),a.removeClass(t,yt),k(H,!1),w(H,!1),L(it,function(e){H.style[e[0]]=""}),O(t,n),m(t,n),Object.keys(q).length&&L(q,function(e,t){e?H.style.setProperty(t,e):H.style.removeProperty(t)}),n.onDone&&n.onDone(),G&&G.complete(!e))}function b(e){Ft.blockTransition&&w(H,e),Ft.blockKeyframeAnimation&&k(H,!!e)}function x(){return G=new r({end:c,cancel:u}),I(U),f(),{$$willAnimate:!1,start:function(){return G},end:c}}function B(){function e(){if(!V){if(b(!1),L(it,function(e){var t=e[0],n=e[1];H.style[t]=n}),O(t,n),a.addClass(t,yt),Ft.recalculateTimingStyles){if(gt=H.className+" "+mt,$t=y(H,gt),Dt=T(H,gt,$t),Pt=Dt.maxDelay,Q=Math.max(Pt,0),tt=Dt.maxDuration,0===tt)return void f();Ft.hasTransitions=Dt.transitionDuration>0,Ft.hasAnimations=Dt.animationDuration>0}if(Ft.applyAnimationDelay&&(Pt="boolean"!=typeof n.delay&&A(n.delay)?parseFloat(n.delay):Pt,Q=Math.max(Pt,0),Dt.animationDelay=Pt,Rt=M(Pt,!0),it.push(Rt),H.style[Rt[0]]=Rt[1]),et=Q*ft,nt=tt*ft,n.easing){var e,s=n.easing;Ft.hasTransitions&&(e=P+ot,it.push([e,s]),H.style[e]=s),Ft.hasAnimations&&(e=R+ot,it.push([e,s]),H.style[e]=s)}Dt.transitionDuration&&c.push(F),Dt.animationDuration&&c.push(N),r=Date.now();var d=et+vt*nt,u=r+d,p=t.data(ht)||[],m=!0;if(p.length){var g=p[0];m=u>g.expectedEndTime,m?l.cancel(g.timer):p.push(f)}if(m){var _=l(i,d,!1);p[0]={timer:_,expectedEndTime:u},p.push(f),t.data(ht,p)}t.on(c.join(" "),o),n.to&&(n.cleanupStyles&&D(q,H,Object.keys(n.to)),h(t,n))}}function i(){var e=t.data(ht);if(e){for(var n=1;n<e.length;n++)e[n]();t.removeData(ht)}}function o(e){e.stopPropagation();var t=e.originalEvent||e,n=t.$manualTimeStamp||t.timeStamp||Date.now(),a=parseFloat(t.elapsedTime.toFixed(_t));Math.max(n-r,0)>=et&&a>=tt&&(W=!0,f())}if(!V){if(!H.parentNode)return void f();var r,c=[],d=function(e){if(W)z&&e&&(z=!1,f());else if(z=!e,Dt.animationDuration){var t=k(H,z);z?it.push(t):s(it,t)}},u=Et>0&&(Dt.transitionDuration&&0===Ct.transitionDuration||Dt.animationDuration&&0===Ct.animationDuration)&&Math.max(Ct.animationDelay,Ct.transitionDelay);u?l(e,Math.floor(u*Et*ft),!1):e(),K.resume=function(){d(!0)},K.pause=function(){d(!1)}}}var q={},H=v(t);if(!H||!H.parentNode||!_.enabled())return x();n=p(n);var V,z,W,G,K,Q,et,tt,nt,it=[],st=t.attr("class"),rt=i(n);if(0===n.duration||!d.animations&&!d.transitions)return x();var ct=n.event&&j(n.event)?n.event.join(" "):n.event,dt=ct&&n.structural,ut="",pt="";dt?ut=o(ct,X,!0):ct&&(ut=ct),n.addClass&&(pt+=o(n.addClass,Y)),n.removeClass&&(pt.length&&(pt+=" "),pt+=o(n.removeClass,Z)),n.applyClassesEarly&&pt.length&&O(t,n);var mt=[ut,pt].join(" ").trim(),gt=st+" "+mt,yt=o(mt,J),wt=rt.to&&Object.keys(rt.to).length>0,kt=(n.keyframeStyle||"").length>0;if(!kt&&!wt&&!mt)return x();var $t,Ct;if(n.stagger>0){var St=parseFloat(n.stagger);Ct={transitionDelay:St,animationDelay:St,transitionDuration:0,animationDuration:0}}else $t=y(H,gt),Ct=C(H,mt,$t,bt);n.$$skipPreparationClasses||a.addClass(t,mt);var Mt;if(n.transitionStyle){var xt=[P,n.transitionStyle];$(H,xt),it.push(xt)}if(n.duration>=0){Mt=H.style[P].length>0;var It=E(n.duration,Mt);$(H,It),it.push(It)}if(n.keyframeStyle){var At=[R,n.keyframeStyle];$(H,At),it.push(At)}var Et=Ct?n.staggerIndex>=0?n.staggerIndex:e.count($t):0,Tt=0===Et;Tt&&!n.skipBlocking&&w(H,lt);var Dt=T(H,gt,$t),Pt=Dt.maxDelay;Q=Math.max(Pt,0),tt=Dt.maxDuration;var Ft={};if(Ft.hasTransitions=Dt.transitionDuration>0,Ft.hasAnimations=Dt.animationDuration>0,Ft.hasTransitionAll=Ft.hasTransitions&&"all"==Dt.transitionProperty,Ft.applyTransitionDuration=wt&&(Ft.hasTransitions&&!Ft.hasTransitionAll||Ft.hasAnimations&&!Ft.hasTransitions),Ft.applyAnimationDuration=n.duration&&Ft.hasAnimations,Ft.applyTransitionDelay=A(n.delay)&&(Ft.applyTransitionDuration||Ft.hasTransitions),Ft.applyAnimationDelay=A(n.delay)&&Ft.hasAnimations,Ft.recalculateTimingStyles=pt.length>0,(Ft.applyTransitionDuration||Ft.applyAnimationDuration)&&(tt=n.duration?parseFloat(n.duration):tt,Ft.applyTransitionDuration&&(Ft.hasTransitions=!0,Dt.transitionDuration=tt,Mt=H.style[P+at].length>0,it.push(E(tt,Mt))),Ft.applyAnimationDuration&&(Ft.hasAnimations=!0,Dt.animationDuration=tt,it.push(S(tt)))),0===tt&&!Ft.recalculateTimingStyles)return x();if(null!=n.delay){var Rt=parseFloat(n.delay);Ft.applyTransitionDelay&&it.push(M(Rt)),Ft.applyAnimationDelay&&it.push(M(Rt,!0))}return null==n.duration&&Dt.transitionDuration>0&&(Ft.recalculateTimingStyles=Ft.recalculateTimingStyles||Tt),et=Q*ft,nt=tt*ft,n.skipBlocking||(Ft.blockTransition=Dt.transitionDuration>0,Ft.blockKeyframeAnimation=Dt.animationDuration>0&&Ct.animationDelay>0&&0===Ct.animationDuration),n.from&&(n.cleanupStyles&&D(q,H,Object.keys(n.from)),g(t,n)),Ft.blockTransition||Ft.blockKeyframeAnimation?b(tt):n.skipBlocking||w(H,!1),{$$willAnimate:!0,end:c,start:function(){return V?void 0:(K={end:c,cancel:u,resume:null,pause:null},G=new r(K),I(B),G)}}}}]}],kt=["$$animationProvider",function(e){function t(e){return e.parentNode&&11===e.parentNode.nodeType}e.drivers.push("$$animateCssDriver");var n="ng-animate-shim",a="ng-anchor",i="ng-anchor-out",o="ng-anchor-in";this.$get=["$animateCss","$rootScope","$$AnimateRunner","$rootElement","$sniffer","$$jqLite","$document",function(e,s,r,l,c,d,p){function m(e){return e.replace(/\bng-\S+\b/g,"")}function g(e,t){return q(e)&&(e=e.split(" ")),q(t)&&(t=t.split(" ")),e.filter(function(e){return-1===t.indexOf(e)}).join(" ")}function h(t,s,l){function c(e){var t={},n=v(e).getBoundingClientRect();return L(["width","height","top","left"],function(e){var a=n[e];switch(e){case"top":a+=y.scrollTop;break;case"left":a+=y.scrollLeft}t[e]=Math.floor(a)+"px"}),t}function d(){var t=e(f,{addClass:i,delay:!0,from:c(s)});return t.$$willAnimate?t:null}function u(e){return e.attr("class")||""}function p(){var t=m(u(l)),n=g(t,_),a=g(_,t),s=e(f,{to:c(l),addClass:o+" "+n,removeClass:i+" "+a,delay:!0});return s.$$willAnimate?s:null}function h(){f.remove(),s.removeClass(n),l.removeClass(n)}var f=B(v(s).cloneNode(!0)),_=m(u(f));s.addClass(n),l.addClass(n),f.addClass(a),w.append(f);var b,k=d();if(!k&&(b=p(),!b))return h();var $=k||b;return{start:function(){function e(){n&&n.end()}var t,n=$.start();return n.done(function(){return n=null,!b&&(b=p())?(n=b.start(),n.done(function(){n=null,h(),t.complete()}),n):(h(),void t.complete())}),t=new r({end:e,cancel:e})}}}function f(e,t,n,a){var i=_(e,U),o=_(t,U),s=[];return L(a,function(e){var t=e.out,a=e["in"],i=h(n,t,a);i&&s.push(i)}),i||o||0!==s.length?{start:function(){function e(){L(t,function(e){e.end()})}var t=[];i&&t.push(i.start()),o&&t.push(o.start()),L(s,function(e){t.push(e.start())});var n=new r({end:e,cancel:e});return r.all(t,function(e){n.complete(e)}),n}}:void 0}function _(t){var n=t.element,a=t.options||{};t.structural&&(a.event=t.event,a.structural=!0,a.applyClassesEarly=!0,"leave"===t.event&&(a.onDone=a.domOperation)),a.preparationClasses&&(a.event=C(a.event,a.preparationClasses));var i=e(n,a);return i.$$willAnimate?i:null}if(!c.animations&&!c.transitions)return U;{var y=p[0].body,b=v(l),w=B(t(b)||y.contains(b)?b:y);u(d)}return function(e){return e.from&&e.to?f(e.from,e.to,e.classes,e.anchors):_(e)}}]}],$t=["$animateProvider",function(e){this.$get=["$injector","$$AnimateRunner","$$jqLite",function(t,n,a){function i(n){n=j(n)?n:n.split(" ");for(var a=[],i={},o=0;o<n.length;o++){var s=n[o],r=e.$$registeredAnimations[s];r&&!i[s]&&(a.push(t.get(r)),i[s]=!0)}return a}var o=u(a);return function(e,t,a,s){function r(){s.domOperation(),o(e,s)}function l(e,t,a,i,o){var s;switch(a){case"animate":s=[t,i.from,i.to,o];break;case"setClass":s=[t,h,f,o];break;case"addClass":s=[t,h,o];break;case"removeClass":s=[t,f,o];break;default:s=[t,o]}s.push(i);var r=e.apply(e,s);if(r)if(W(r.start)&&(r=r.start()),r instanceof n)r.done(o);else if(W(r))return r;return U}function c(e,t,a,i,o){var s=[];return L(i,function(i){var r=i[o];r&&s.push(function(){var i,o,s=!1,c=function(e){s||(s=!0,(o||U)(e),i.complete(!e))};return i=new n({end:function(){c()},cancel:function(){c(!0)}}),o=l(r,e,t,a,function(e){var t=e===!1;c(t)}),i})}),s}function d(e,t,a,i,o){var s=c(e,t,a,i,o);if(0===s.length){var r,l;"beforeSetClass"===o?(r=c(e,"removeClass",a,i,"beforeRemoveClass"),l=c(e,"addClass",a,i,"beforeAddClass")):"setClass"===o&&(r=c(e,"removeClass",a,i,"removeClass"),l=c(e,"addClass",a,i,"addClass")),r&&(s=s.concat(r)),l&&(s=s.concat(l))}if(0!==s.length)return function(e){var t=[];return s.length&&L(s,function(e){t.push(e())}),t.length?n.all(t,e):e(),function(e){L(t,function(t){e?t.cancel():t.end()})}}}3===arguments.length&&H(a)&&(s=a,a=null),s=p(s),a||(a=e.attr("class")||"",s.addClass&&(a+=" "+s.addClass),s.removeClass&&(a+=" "+s.removeClass));var u,g,h=s.addClass,f=s.removeClass,_=i(a);if(_.length){var v,y;"leave"==t?(y="leave",v="afterLeave"):(y="before"+t.charAt(0).toUpperCase()+t.substr(1),v=t),"enter"!==t&&"move"!==t&&(u=d(e,t,s,_,y)),g=d(e,t,s,_,v)}return u||g?{start:function(){function t(t){l=!0,r(),m(e,s),c.complete(t)}function a(e){l||((i||U)(e),t(e))}var i,o=[];u&&o.push(function(e){i=u(e)}),o.length?o.push(function(e){r(),e(!0)}):r(),g&&o.push(function(e){i=g(e)});var l=!1,c=new n({end:function(){a()},cancel:function(){a(!0)}});return n.chain(o,t),c}}:void 0}}]}],Ct=["$$animationProvider",function(e){e.drivers.push("$$animateJsDriver"),this.$get=["$$animateJs","$$AnimateRunner",function(e,t){function n(t){var n=t.element,a=t.event,i=t.options,o=t.classes;return e(n,a,o,i)}return function(e){if(e.from&&e.to){var a=n(e.from),i=n(e.to);if(!a&&!i)return;return{start:function(){function e(){return function(){L(o,function(e){e.end()})}}function n(e){s.complete(e)}var o=[];a&&o.push(a.start()),i&&o.push(i.start()),t.all(o,n);var s=new t({end:e(),cancel:e()});return s}}}return n(e)}}]}],St="data-ng-animate",Mt="$ngAnimatePin",xt=["$animateProvider",function(e){function t(e,t,n,a){return s[e].some(function(e){return e(t,n,a)})}function a(e,t){e=e||{};var n=(e.addClass||"").length>0,a=(e.removeClass||"").length>0;return t?n&&a:n||a}var i=1,o=2,s=this.rules={skip:[],cancel:[],join:[]};s.join.push(function(e,t){return!t.structural&&a(t.options)}),s.skip.push(function(e,t){return!t.structural&&!a(t.options)}),s.skip.push(function(e,t,n){return"leave"==n.event&&t.structural}),s.skip.push(function(e,t,n){return n.structural&&n.state===o&&!t.structural}),s.cancel.push(function(e,t,n){return n.structural&&t.structural}),s.cancel.push(function(e,t,n){return n.state===o&&t.structural}),s.cancel.push(function(e,t,n){var a=t.options,i=n.options;return a.addClass&&a.addClass===i.removeClass||a.removeClass&&a.removeClass===i.addClass}),this.$get=["$$rAF","$rootScope","$rootElement","$document","$$HashMap","$$animation","$$AnimateRunner","$templateRequest","$$jqLite","$$forceReflow",function(s,c,d,g,h,_,w,k,$){function C(){var e=!1;return function(t){e?t():c.$$postDigest(function(){e=!0,t()})}}function S(e,t){return f(e,t,{})}function M(e,t){var n=v(e),a=[],i=U[t];return i&&L(i,function(e){e.node.contains(n)&&a.push(e.callback)}),a}function x(e,n,l){function d(t,n,a,i){$(function(){var t=M(e,n);t.length&&s(function(){L(t,function(t){t(e,a,i)})})}),t.progress(n,a,i)}function u(t){b(e,l),Z(e,l),m(e,l),l.domOperation(),k.complete(!t)}var g,h;e=r(e),e&&(g=v(e),h=e.parent()),l=p(l);var k=new w,$=C();if(j(l.addClass)&&(l.addClass=l.addClass.join(" ")),l.addClass&&!q(l.addClass)&&(l.addClass=null),j(l.removeClass)&&(l.removeClass=l.removeClass.join(" ")),l.removeClass&&!q(l.removeClass)&&(l.removeClass=null),l.from&&!H(l.from)&&(l.from=null),l.to&&!H(l.to)&&(l.to=null),!g)return u(),k;var x=[g.className,l.addClass,l.removeClass].join(" ");if(!Y(x))return u(),k;var E=["enter","move","leave"].indexOf(n)>=0,N=!R||F.get(g),U=!N&&P.get(g)||{},O=!!U.state;if(N||O&&U.state==i||(N=!T(e,h,n)),N)return u(),k;E&&I(e);var B={structural:E,element:e,event:n,close:u,options:l,runner:k};if(O){var V=t("skip",e,B,U);if(V)return U.state===o?(u(),k):(f(e,U.options,l),U.runner);var z=t("cancel",e,B,U);if(z)if(U.state===o)U.runner.end();else{if(!U.structural)return f(e,U.options,B.options),U.runner;U.close()}else{var W=t("join",e,B,U);if(W){if(U.state!==o)return y(e,E?n:null,l),n=B.event=U.event,l=f(e,U.options,B.options),U.runner;
S(e,l)}}}else S(e,l);var G=B.structural;if(G||(G="animate"===B.event&&Object.keys(B.options.to||{}).length>0||a(B.options)),!G)return u(),A(e),k;var K=(U.counter||0)+1;return B.counter=K,D(e,i,B),c.$$postDigest(function(){var t=P.get(g),i=!t;t=t||{};var s=e.parent()||[],r=s.length>0&&("animate"===t.event||t.structural||a(t.options));if(i||t.counter!==K||!r)return i&&(Z(e,l),m(e,l)),(i||E&&t.event!==n)&&(l.domOperation(),k.end()),void(r||A(e));n=!t.structural&&a(t.options,!0)?"setClass":t.event,D(e,o);var c=_(e,n,t.options);c.done(function(t){u(!t);var a=P.get(g);a&&a.counter===K&&A(v(e)),d(k,n,"close",{})}),k.setHost(c),d(k,n,"start",{})}),k}function I(e){var t=v(e),n=t.querySelectorAll("["+St+"]");L(n,function(e){var t=parseInt(e.getAttribute(St)),n=P.get(e);switch(t){case o:n.runner.end();case i:n&&P.remove(e)}})}function A(e){var t=v(e);t.removeAttribute(St),P.remove(t)}function E(e,t){return v(e)===v(t)}function T(e,t){var n,a=B(g[0].body),i=E(e,a)||"HTML"===e[0].nodeName,o=E(e,d),s=!1,r=e.data(Mt);for(r&&(t=r);t&&t.length;){o||(o=E(t,d));var l=t[0];if(l.nodeType!==K)break;var c=P.get(l)||{};if(s||(s=c.structural||F.get(l)),V(n)||n===!0){var u=t.data(et);z(u)&&(n=u)}if(s&&n===!1)break;o||(o=E(t,d),o||(r=t.data(Mt),r&&(t=r))),i||(i=E(t,a)),t=t.parent()}var p=!s||n;return p&&o&&i}function D(e,t,n){n=n||{},n.state=t;var a=v(e);a.setAttribute(St,t);var i=P.get(a),o=i?O(i,n):n;P.put(a,o)}var P=new h,F=new h,R=null,N=c.$watch(function(){return 0===k.totalPendingRequests},function(e){e&&(N(),c.$$postDigest(function(){c.$$postDigest(function(){null===R&&(R=!0)})}))}),U={},W=e.classNameFilter(),Y=W?function(e){return W.test(e)}:function(){return!0},Z=u($);return{on:function(e,t,n){var a=l(t);U[e]=U[e]||[],U[e].push({node:a,callback:n})},off:function(e,t,n){function a(e,t,n){var a=l(t);return e.filter(function(e){var t=e.node===a&&(!n||e.callback===n);return!t})}var i=U[e];i&&(U[e]=1===arguments.length?null:a(i,t,n))},pin:function(e,t){n(G(e),"element","not an element"),n(G(t),"parentElement","not an element"),e.data(Mt,t)},push:function(e,t,n,a){return n=n||{},n.domOperation=a,x(e,t,n)},enabled:function(e,t){var n=arguments.length;if(0===n)t=!!R;else{var a=G(e);if(a){var i=v(e),o=F.get(i);1===n?t=!o:(t=!!t,t?o&&F.remove(i):F.put(i,!0))}else t=R=!!e}return t}}}]}],It=["$$rAF",function(e){function t(t){n.push(t),n.length>1||e(function(){for(var e=0;e<n.length;e++)n[e]();n=[]})}var n=[];return function(){var e=!1;return t(function(){e=!0}),function(n){e?n():t(n)}}}],At=["$q","$sniffer","$$animateAsyncRun",function(e,t,n){function a(e){this.setHost(e),this._doneCallbacks=[],this._runInAnimationFrame=n(),this._state=0}var i=0,o=1,s=2;return a.chain=function(e,t){function n(){return a===e.length?void t(!0):void e[a](function(e){return e===!1?void t(!1):(a++,void n())})}var a=0;n()},a.all=function(e,t){function n(n){i=i&&n,++a===e.length&&t(i)}var a=0,i=!0;L(e,function(e){e.done(n)})},a.prototype={setHost:function(e){this.host=e||{}},done:function(e){this._state===s?e():this._doneCallbacks.push(e)},progress:U,getPromise:function(){if(!this.promise){var t=this;this.promise=e(function(e,n){t.done(function(t){t===!1?n():e()})})}return this.promise},then:function(e,t){return this.getPromise().then(e,t)},"catch":function(e){return this.getPromise()["catch"](e)},"finally":function(e){return this.getPromise()["finally"](e)},pause:function(){this.host.pause&&this.host.pause()},resume:function(){this.host.resume&&this.host.resume()},end:function(){this.host.end&&this.host.end(),this._resolve(!0)},cancel:function(){this.host.cancel&&this.host.cancel(),this._resolve(!1)},complete:function(e){var t=this;t._state===i&&(t._state=o,t._runInAnimationFrame(function(){t._resolve(e)}))},_resolve:function(e){this._state!==s&&(L(this._doneCallbacks,function(t){t(e)}),this._doneCallbacks.length=0,this._state=s)}},a}],Et=["$animateProvider",function(){function e(e,t){e.data(s,t)}function t(e){e.removeData(s)}function n(e){return e.data(s)}var i="ng-animate-ref",o=this.drivers=[],s="$$animationRunner";this.$get=["$$jqLite","$rootScope","$injector","$$AnimateRunner","$$HashMap","$$rAFScheduler",function(s,r,l,c,d,g){function h(e){function t(e){if(e.processed)return e;e.processed=!0;var n=e.domNode,a=n.parentNode;o.put(n,e);for(var s;a;){if(s=o.get(a)){s.processed||(s=t(s));break}a=a.parentNode}return(s||i).children.push(e),e}function n(e){var t,n=[],a=[];for(t=0;t<e.children.length;t++)a.push(e.children[t]);var i=a.length,o=0,s=[];for(t=0;t<a.length;t++){var r=a[t];0>=i&&(i=o,o=0,n.push(s),s=[]),s.push(r.fn),r.children.forEach(function(e){o++,a.push(e)}),i--}return s.length&&n.push(s),n}var a,i={children:[]},o=new d;for(a=0;a<e.length;a++){var s=e[a];o.put(s.domNode,e[a]={domNode:s.domNode,fn:s.fn,children:[]})}for(a=0;a<e.length;a++)t(e[a]);return n(i)}var f=[],_=u(s);return function(d,u,y){function b(e){var t="["+i+"]",n=e.hasAttribute(i)?[e]:e.querySelectorAll(t),a=[];return L(n,function(e){var t=e.getAttribute(i);t&&t.length&&a.push(e)}),a}function w(e){var t=[],n={};L(e,function(e,a){var o=e.element,s=v(o),r=e.event,l=["enter","move"].indexOf(r)>=0,c=e.structural?b(s):[];if(c.length){var d=l?"to":"from";L(c,function(e){var t=e.getAttribute(i);n[t]=n[t]||{},n[t][d]={animationID:a,element:B(e)}})}else t.push(e)});var a={},o={};return L(n,function(n){var i=n.from,s=n.to;if(!i||!s){var r=i?i.animationID:s.animationID,l=r.toString();return void(a[l]||(a[l]=!0,t.push(e[r])))}var c=e[i.animationID],d=e[s.animationID],u=i.animationID.toString();if(!o[u]){var p=o[u]={structural:!0,beforeStart:function(){c.beforeStart(),d.beforeStart()},close:function(){c.close(),d.close()},classes:k(c.classes,d.classes),from:c,to:d,anchors:[]};p.classes.length?t.push(p):(t.push(c),t.push(d))}o[u].anchors.push({out:i.element,"in":s.element})}),t}function k(e,t){e=e.split(" "),t=t.split(" ");for(var n=[],a=0;a<e.length;a++){var i=e[a];if("ng-"!==i.substring(0,3))for(var o=0;o<t.length;o++)if(i===t[o]){n.push(i);break}}return n.join(" ")}function $(e){for(var t=o.length-1;t>=0;t--){var n=o[t];if(l.has(n)){var a=l.get(n),i=a(e);if(i)return i}}}function C(){d.addClass(Q),T&&s.addClass(d,T)}function S(e,t){function a(e){n(e).setHost(t)}e.from&&e.to?(a(e.from.element),a(e.to.element)):a(e.element)}function M(){var e=n(d);!e||"leave"===u&&y.$$domOperationFired||e.end()}function x(e){d.off("$destroy",M),t(d),_(d,y),m(d,y),y.domOperation(),T&&s.removeClass(d,T),d.removeClass(Q),A.complete(!e)}y=p(y);var I=["enter","move","leave"].indexOf(u)>=0,A=new c({end:function(){x()},cancel:function(){x(!0)}});if(!o.length)return x(),A;e(d,A);var E=a(d.attr("class"),a(y.addClass,y.removeClass)),T=y.tempClasses;return T&&(E+=" "+T,y.tempClasses=null),f.push({element:d,classes:E,event:u,structural:I,options:y,beforeStart:C,close:x}),d.on("$destroy",M),f.length>1?A:(r.$$postDigest(function(){var e=[];L(f,function(t){n(t.element)?e.push(t):t.close()}),f.length=0;var t=w(e),a=[];L(t,function(e){a.push({domNode:v(e.from?e.from.element:e.element),fn:function(){e.beforeStart();var t,a=e.close,i=e.anchors?e.from.element||e.to.element:e.element;if(n(i)){var o=$(e);o&&(t=o.start)}if(t){var s=t();s.done(function(e){a(!e)}),S(e,s)}else a()}})}),g(h(a))}),A)}}]}];t.module("ngAnimate",[]).directive("ngAnimateChildren",gt).factory("$$rAFScheduler",mt).factory("$$AnimateRunner",At).factory("$$animateAsyncRun",It).provider("$$animateQueue",xt).provider("$$animation",Et).provider("$animateCss",wt).provider("$$animateCssDriver",kt).provider("$$animateJs",$t).provider("$$animateJsDriver",Ct)}(window,window.angular),function(e,t){"use strict";function n(){this.$get=["$$sanitizeUri",function(e){return function(t){var n=[];return o(t,l(n,function(t,n){return!/^unsafe/.test(e(t,n))})),n.join("")}}]}function a(e){var n=[],a=l(n,t.noop);return a.chars(e),n.join("")}function i(e,n){var a,i={},o=e.split(",");for(a=0;a<o.length;a++)i[n?t.lowercase(o[a]):o[a]]=!0;return i}function o(e,n){function a(e,a,o,r){if(a=t.lowercase(a),C[a])for(;y.last()&&S[y.last()];)i("",y.last());$[a]&&y.last()==a&&i("",a),r=b[a]||!!r,r||y.push(a);var l={};o.replace(p,function(e,t,n,a,i){var o=n||a||i||"";l[t]=s(o)}),n.start&&n.start(a,l,r)}function i(e,a){var i,o=0;if(a=t.lowercase(a))for(o=y.length-1;o>=0&&y[o]!=a;o--);if(o>=0){for(i=y.length-1;i>=o;i--)n.end&&n.end(y[i]);y.length=o}}"string"!=typeof e&&(e=null===e||"undefined"==typeof e?"":""+e);var o,r,l,v,y=[],w=e;for(y.last=function(){return y[y.length-1]};e;){if(v="",r=!0,y.last()&&x[y.last()]?(e=e.replace(new RegExp("([\\W\\w]*)<\\s*\\/\\s*"+y.last()+"[^>]*>","i"),function(e,t){return t=t.replace(h,"$1").replace(_,"$1"),n.chars&&n.chars(s(t)),""}),i("",y.last())):(0===e.indexOf("<!--")?(o=e.indexOf("--",4),o>=0&&e.lastIndexOf("-->",o)===o&&(n.comment&&n.comment(e.substring(4,o)),e=e.substring(o+3),r=!1)):f.test(e)?(l=e.match(f),l&&(e=e.replace(l[0],""),r=!1)):g.test(e)?(l=e.match(u),l&&(e=e.substring(l[0].length),l[0].replace(u,i),r=!1)):m.test(e)&&(l=e.match(d),l?(l[4]&&(e=e.substring(l[0].length),l[0].replace(d,a)),r=!1):(v+="<",e=e.substring(1))),r&&(o=e.indexOf("<"),v+=0>o?e:e.substring(0,o),e=0>o?"":e.substring(o),n.chars&&n.chars(s(v)))),e==w)throw c("badparse","The sanitizer was unable to parse the following block of html: {0}",e);w=e}i()}function s(e){return e?(P.innerHTML=e.replace(/</g,"&lt;"),P.textContent):""}function r(e){return e.replace(/&/g,"&amp;").replace(v,function(e){var t=e.charCodeAt(0),n=e.charCodeAt(1);return"&#"+(1024*(t-55296)+(n-56320)+65536)+";"}).replace(y,function(e){return"&#"+e.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}function l(e,n){var a=!1,i=t.bind(e,e.push);return{start:function(e,o,s){e=t.lowercase(e),!a&&x[e]&&(a=e),a||I[e]!==!0||(i("<"),i(e),t.forEach(o,function(a,o){var s=t.lowercase(o),l="img"===e&&"src"===s||"background"===s;D[s]!==!0||A[s]===!0&&!n(a,l)||(i(" "),i(o),i('="'),i(r(a)),i('"'))}),i(s?"/>":">"))},end:function(e){e=t.lowercase(e),a||I[e]!==!0||(i("</"),i(e),i(">")),e==a&&(a=!1)},chars:function(e){a||i(r(e))}}}var c=t.$$minErr("$sanitize"),d=/^<((?:[a-zA-Z])[\w:-]*)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*(>?)/,u=/^<\/\s*([\w:-]+)[^>]*>/,p=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,m=/^</,g=/^<\//,h=/<!--(.*?)-->/g,f=/<!DOCTYPE([^>]*?)>/i,_=/<!\[CDATA\[(.*?)]]>/g,v=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,y=/([^\#-~| |!])/g,b=i("area,br,col,hr,img,wbr"),w=i("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),k=i("rp,rt"),$=t.extend({},k,w),C=t.extend({},w,i("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")),S=t.extend({},k,i("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),M=i("circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,radialGradient,rect,stop,svg,switch,text,title,tspan,use"),x=i("script,style"),I=t.extend({},b,C,S,$,M),A=i("background,cite,href,longdesc,src,usemap,xlink:href"),E=i("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,valign,value,vspace,width"),T=i("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan",!0),D=t.extend({},A,T,E),P=document.createElement("pre");t.module("ngSanitize",[]).provider("$sanitize",n),t.module("ngSanitize").filter("linky",["$sanitize",function(e){var n=/((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,i=/^mailto:/i;return function(o,s){function r(e){e&&m.push(a(e))}function l(e,n){m.push("<a "),t.isDefined(s)&&m.push('target="',s,'" '),m.push('href="',e.replace(/"/g,"&quot;"),'">'),r(n),m.push("</a>")}if(!o)return o;for(var c,d,u,p=o,m=[];c=p.match(n);)d=c[0],c[2]||c[4]||(d=(c[3]?"http://":"mailto:")+d),u=c.index,r(p.substr(0,u)),l(d,c[0].replace(i,"")),p=p.substring(u+c[0].length);return r(p),e(m.join(""))}}])}(window,window.angular),function(e,t){"use strict";function n(e,n,i){a.directive(e,["$parse","$swipe",function(a,o){var s=75,r=.3,l=30;return function(c,d,u){function p(e){if(!m)return!1;var t=Math.abs(e.y-m.y),a=(e.x-m.x)*n;return g&&s>t&&a>0&&a>l&&r>t/a}var m,g,h=a(u[e]),f=["touch"];t.isDefined(u.ngSwipeDisableMouse)||f.push("mouse"),o.bind(d,{start:function(e){m=e,g=!0},cancel:function(){g=!1},end:function(e,t){p(e)&&c.$apply(function(){d.triggerHandler(i),h(c,{$event:t})})}},f)}}])}var a=t.module("ngTouch",[]);a.factory("$swipe",[function(){function e(e){var t=e.touches&&e.touches.length?e.touches:[e],n=e.changedTouches&&e.changedTouches[0]||e.originalEvent&&e.originalEvent.changedTouches&&e.originalEvent.changedTouches[0]||t[0].originalEvent||t[0];return{x:n.clientX,y:n.clientY}}function n(e,n){var a=[];return t.forEach(e,function(e){var t=i[e][n];t&&a.push(t)}),a.join(" ")}var a=10,i={mouse:{start:"mousedown",move:"mousemove",end:"mouseup"},touch:{start:"touchstart",move:"touchmove",end:"touchend",cancel:"touchcancel"}};return{bind:function(t,i,o){var s,r,l,c,d=!1;o=o||["mouse","touch"],t.on(n(o,"start"),function(t){l=e(t),d=!0,s=0,r=0,c=l,i.start&&i.start(l,t)});var u=n(o,"cancel");u&&t.on(u,function(e){d=!1,i.cancel&&i.cancel(e)}),t.on(n(o,"move"),function(t){if(d&&l){var n=e(t);if(s+=Math.abs(n.x-c.x),r+=Math.abs(n.y-c.y),c=n,!(a>s&&a>r))return r>s?(d=!1,void(i.cancel&&i.cancel(t))):(t.preventDefault(),void(i.move&&i.move(n,t)))}}),t.on(n(o,"end"),function(t){d&&(d=!1,i.end&&i.end(e(t),t))})}}}]),a.config(["$provide",function(e){e.decorator("ngClickDirective",["$delegate",function(e){return e.shift(),e}])}]),a.directive("ngClick",["$parse","$timeout","$rootElement",function(e,n,a){function i(e,t,n,a){return Math.abs(e-n)<h&&Math.abs(t-a)<h}function o(e,t,n){for(var a=0;a<e.length;a+=2)if(i(e[a],e[a+1],t,n))return e.splice(a,a+2),!0;return!1}function s(e){if(!(Date.now()-c>g)){var t=e.touches&&e.touches.length?e.touches:[e],n=t[0].clientX,a=t[0].clientY;1>n&&1>a||u&&u[0]===n&&u[1]===a||(u&&(u=null),"label"===e.target.tagName.toLowerCase()&&(u=[n,a]),o(d,n,a)||(e.stopPropagation(),e.preventDefault(),e.target&&e.target.blur()))}}function r(e){var t=e.touches&&e.touches.length?e.touches:[e],a=t[0].clientX,i=t[0].clientY;d.push(a,i),n(function(){for(var e=0;e<d.length;e+=2)if(d[e]==a&&d[e+1]==i)return void d.splice(e,e+2)},g,!1)}function l(e,t){d||(a[0].addEventListener("click",s,!0),a[0].addEventListener("touchstart",r,!0),d=[]),c=Date.now(),o(d,e,t)}var c,d,u,p=750,m=12,g=2500,h=25,f="ng-click-active";return function(n,a,i){function o(){g=!1,a.removeClass(f)}var s,r,c,d,u=e(i.ngClick),g=!1;a.on("touchstart",function(e){g=!0,s=e.target?e.target:e.srcElement,3==s.nodeType&&(s=s.parentNode),a.addClass(f),r=Date.now();var t=e.touches&&e.touches.length?e.touches:[e],n=t[0].originalEvent||t[0];c=n.clientX,d=n.clientY}),a.on("touchmove",function(){o()}),a.on("touchcancel",function(){o()}),a.on("touchend",function(e){var n=Date.now()-r,u=e.changedTouches&&e.changedTouches.length?e.changedTouches:e.touches&&e.touches.length?e.touches:[e],h=u[0].originalEvent||u[0],f=h.clientX,_=h.clientY,v=Math.sqrt(Math.pow(f-c,2)+Math.pow(_-d,2));g&&p>n&&m>v&&(l(f,_),s&&s.blur(),t.isDefined(i.disabled)&&i.disabled!==!1||a.triggerHandler("click",[e])),o()}),a.onclick=function(){},a.on("click",function(e,t){n.$apply(function(){u(n,{$event:t||e})})}),a.on("mousedown",function(){a.addClass(f)}),a.on("mousemove mouseup",function(){a.removeClass(f)})}}]),n("ngSwipeLeft",-1,"swipeleft"),n("ngSwipeRight",1,"swiperight")}(window,window.angular),angular.module("ui.bootstrap",["ui.bootstrap.tpls","ui.bootstrap.dropdown","ui.bootstrap.tooltip","ui.bootstrap.position","ui.bootstrap.bindHtml","ui.bootstrap.modal","ui.bootstrap.transition"]),angular.module("ui.bootstrap.tpls",["template/tooltip/tooltip-html-unsafe-popup.html","template/tooltip/tooltip-popup.html","template/modal/backdrop.html","template/modal/window.html"]),angular.module("ui.bootstrap.dropdown",[]).constant("dropdownConfig",{openClass:"open"}).service("dropdownService",["$document",function(e){var t=null;this.open=function(i){t||(e.bind("click",n),e.bind("keydown",a)),t&&t!==i&&(t.isOpen=!1),t=i},this.close=function(i){t===i&&(t=null,e.unbind("click",n),e.unbind("keydown",a))};var n=function(e){if(t){var n=t.getToggleElement();e&&n&&n[0].contains(e.target)||t.$apply(function(){t.isOpen=!1})}},a=function(e){27===e.which&&(t.focusToggleElement(),n())}}]).controller("DropdownController",["$scope","$attrs","$parse","dropdownConfig","dropdownService","$animate",function(e,t,n,a,i,o){var s,r=this,l=e.$new(),c=a.openClass,d=angular.noop,u=t.onToggle?n(t.onToggle):angular.noop;this.init=function(a){r.$element=a,t.isOpen&&(s=n(t.isOpen),d=s.assign,e.$watch(s,function(e){l.isOpen=!!e}))},this.toggle=function(e){return l.isOpen=arguments.length?!!e:!l.isOpen},this.isOpen=function(){return l.isOpen},l.getToggleElement=function(){return r.toggleElement},l.focusToggleElement=function(){r.toggleElement&&r.toggleElement[0].focus()},l.$watch("isOpen",function(t,n){o[t?"addClass":"removeClass"](r.$element,c),t?(l.focusToggleElement(),i.open(l)):i.close(l),d(e,t),angular.isDefined(t)&&t!==n&&u(e,{open:!!t})}),e.$on("$locationChangeSuccess",function(){l.isOpen=!1}),e.$on("$destroy",function(){l.$destroy()})}]).directive("dropdown",function(){return{controller:"DropdownController",link:function(e,t,n,a){a.init(t)}}}).directive("dropdownToggle",function(){return{require:"?^dropdown",link:function(e,t,n,a){if(a){a.toggleElement=t;var i=function(i){i.preventDefault(),t.hasClass("disabled")||n.disabled||e.$apply(function(){a.toggle()})};t.bind("click",i),t.attr({"aria-haspopup":!0,"aria-expanded":!1}),e.$watch(a.isOpen,function(e){t.attr("aria-expanded",!!e)}),e.$on("$destroy",function(){t.unbind("click",i)})}}}}),angular.module("ui.bootstrap.tooltip",["ui.bootstrap.position","ui.bootstrap.bindHtml"]).provider("$tooltip",function(){function e(e){var t=/[A-Z]/g,n="-";return e.replace(t,function(e,t){return(t?n:"")+e.toLowerCase()})}var t={placement:"top",animation:!0,popupDelay:0},n={mouseenter:"mouseleave",click:"click",focus:"blur"},a={};this.options=function(e){angular.extend(a,e)},this.setTriggers=function(e){angular.extend(n,e)},this.$get=["$window","$compile","$timeout","$document","$position","$interpolate",function(i,o,s,r,l,c){return function(i,d,u){function p(e){var t=e||m.trigger||u,a=n[t]||t;return{show:t,hide:a}}var m=angular.extend({},t,a),g=e(i),h=c.startSymbol(),f=c.endSymbol(),_="<div "+g+'-popup title="'+h+"title"+f+'" content="'+h+"content"+f+'" placement="'+h+"placement"+f+'" animation="animation" is-open="isOpen"></div>';return{restrict:"EA",compile:function(){var e=o(_);return function(t,n,a){function o(){A.isOpen?u():c()}function c(){(!I||t.$eval(a[d+"Enable"]))&&(v(),A.popupDelay?S||(S=s(g,A.popupDelay,!1),S.then(function(e){e()})):g()())}function u(){t.$apply(function(){h()})}function g(){return S=null,C&&(s.cancel(C),C=null),A.content?(f(),k.css({top:0,left:0,display:"block"}),M?r.find("body").append(k):n.after(k),E(),A.isOpen=!0,A.$digest(),E):angular.noop}function h(){A.isOpen=!1,s.cancel(S),S=null,A.animation?C||(C=s(_,500)):_()}function f(){k&&_(),$=A.$new(),k=e($,angular.noop)}function _(){C=null,k&&(k.remove(),k=null),$&&($.$destroy(),$=null)}function v(){y(),b()}function y(){var e=a[d+"Placement"];A.placement=angular.isDefined(e)?e:m.placement}function b(){var e=a[d+"PopupDelay"],t=parseInt(e,10);A.popupDelay=isNaN(t)?m.popupDelay:t}function w(){var e=a[d+"Trigger"];T(),x=p(e),x.show===x.hide?n.bind(x.show,o):(n.bind(x.show,c),n.bind(x.hide,u))}var k,$,C,S,M=angular.isDefined(m.appendToBody)?m.appendToBody:!1,x=p(void 0),I=angular.isDefined(a[d+"Enable"]),A=t.$new(!0),E=function(){var e=l.positionElements(n,k,A.placement,M);e.top+="px",e.left+="px",k.css(e)};A.isOpen=!1,a.$observe(i,function(e){A.content=e,!e&&A.isOpen&&h()}),a.$observe(d+"Title",function(e){A.title=e});var T=function(){n.unbind(x.show,c),n.unbind(x.hide,u)};w();var D=t.$eval(a[d+"Animation"]);A.animation=angular.isDefined(D)?!!D:m.animation;var P=t.$eval(a[d+"AppendToBody"]);M=angular.isDefined(P)?P:M,M&&t.$on("$locationChangeSuccess",function(){A.isOpen&&h()}),t.$on("$destroy",function(){s.cancel(C),s.cancel(S),T(),_(),A=null})}}}}}]}).directive("tooltipPopup",function(){return{restrict:"EA",replace:!0,scope:{content:"@",placement:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-popup.html"}}).directive("tooltip",["$tooltip",function(e){return e("tooltip","tooltip","mouseenter")}]).directive("tooltipHtmlUnsafePopup",function(){return{restrict:"EA",replace:!0,scope:{content:"@",placement:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-html-unsafe-popup.html"}}).directive("tooltipHtmlUnsafe",["$tooltip",function(e){return e("tooltipHtmlUnsafe","tooltip","mouseenter")}]),angular.module("ui.bootstrap.position",[]).factory("$position",["$document","$window",function(e,t){function n(e,n){return e.currentStyle?e.currentStyle[n]:t.getComputedStyle?t.getComputedStyle(e)[n]:e.style[n]}function a(e){return"static"===(n(e,"position")||"static")}var i=function(t){for(var n=e[0],i=t.offsetParent||n;i&&i!==n&&a(i);)i=i.offsetParent;return i||n};return{position:function(t){var n=this.offset(t),a={top:0,left:0},o=i(t[0]);o!=e[0]&&(a=this.offset(angular.element(o)),a.top+=o.clientTop-o.scrollTop,a.left+=o.clientLeft-o.scrollLeft);var s=t[0].getBoundingClientRect();return{width:s.width||t.prop("offsetWidth"),height:s.height||t.prop("offsetHeight"),top:n.top-a.top,left:n.left-a.left}},offset:function(n){var a=n[0].getBoundingClientRect();return{width:a.width||n.prop("offsetWidth"),height:a.height||n.prop("offsetHeight"),top:a.top+(t.pageYOffset||e[0].documentElement.scrollTop),left:a.left+(t.pageXOffset||e[0].documentElement.scrollLeft)}},positionElements:function(e,t,n,a){var i,o,s,r,l=n.split("-"),c=l[0],d=l[1]||"center";i=a?this.offset(e):this.position(e),o=t.prop("offsetWidth"),s=t.prop("offsetHeight");var u={center:function(){return i.left+i.width/2-o/2},left:function(){return i.left},right:function(){return i.left+i.width}},p={center:function(){return i.top+i.height/2-s/2},top:function(){return i.top},bottom:function(){return i.top+i.height}};switch(c){case"right":r={top:p[d](),left:u[c]()};break;case"left":r={top:p[d](),left:i.left-o};break;case"bottom":r={top:p[c](),left:u[d]()};break;default:r={top:i.top-s,left:u[d]()}}return r}}}]),angular.module("ui.bootstrap.bindHtml",[]).directive("bindHtmlUnsafe",function(){return function(e,t,n){t.addClass("ng-binding").data("$binding",n.bindHtmlUnsafe),e.$watch(n.bindHtmlUnsafe,function(e){t.html(e||"")})}}),angular.module("ui.bootstrap.modal",["ui.bootstrap.transition"]).factory("$$stackedMap",function(){return{createNew:function(){var e=[];return{add:function(t,n){e.push({key:t,value:n})},get:function(t){for(var n=0;n<e.length;n++)if(t==e[n].key)return e[n]},keys:function(){for(var t=[],n=0;n<e.length;n++)t.push(e[n].key);return t},top:function(){return e[e.length-1]},remove:function(t){for(var n=-1,a=0;a<e.length;a++)if(t==e[a].key){n=a;break}return e.splice(n,1)[0]},removeTop:function(){return e.splice(e.length-1,1)[0]},length:function(){return e.length}}}}}).directive("modalBackdrop",["$timeout",function(e){return{restrict:"EA",replace:!0,templateUrl:"template/modal/backdrop.html",link:function(t,n,a){t.backdropClass=a.backdropClass||"",t.animate=!1,e(function(){t.animate=!0})}}}]).directive("modalWindow",["$modalStack","$timeout",function(e,t){return{restrict:"EA",scope:{index:"@",animate:"="},replace:!0,transclude:!0,templateUrl:function(e,t){return t.templateUrl||"template/modal/window.html"},link:function(n,a,i){a.addClass(i.windowClass||""),n.size=i.size,a.on("click",function(e){n.close(e)}),e.registerObserverCallback(function(e){n.hiddenBySingle=e||!1}),t(function(){n.animate=!0,a[0].querySelectorAll("[autofocus]").length||a[0].focus()}),n.close=function(t){var n=e.getTop();n&&n.value.backdrop&&"static"!=n.value.backdrop&&t.target===t.currentTarget&&(t.preventDefault(),t.stopPropagation(),e.dismiss(n.key,"backdrop click"))}}}}]).directive("modalTransclude",function(){return{link:function(e,t,n,a,i){i(e.$parent,function(e){t.empty(),t.append(e)})}}}).factory("$modalStack",["$transition","$timeout","$document","$compile","$rootScope","$$stackedMap",function(e,t,n,a,i,o){function s(){angular.forEach(f,function(e,t){for(var n=!1,a=g.keys(),i=0;i<a.length;i++){var o=g.get(a[i]).value;if("single"==o.backdrop&&o.index>t){n=!0;break}}e(n)})}function r(){for(var e=-1,t=g.keys(),n=0;n<t.length;n++)g.get(t[n]).value.backdrop&&(e=n);return e}function l(e){var t=n.find("body").eq(0),a=g.get(e).value;g.remove(e),f.splice(a.index,1),d(a.modalDomEl,a.modalScope,0,function(){a.modalScope.$destroy(),t.toggleClass(m,g.length()>0),c()})}function c(){if(u&&-1==r()){var e=p;d(u,p,0,function(){e.$destroy(),e=null}),u=void 0,p=void 0}else s()}function d(n,a,i,o){function s(){s.done||(s.done=!0,n.remove(),o&&o())}a.animate=!1;var r=e.transitionEndEventName;if(r){var l=t(s,i);n.bind(r,function(){t.cancel(l),s(),a.$apply()})}else t(s)}var u,p,m="modal-open",g=o.createNew(),h={},f=[];return i.$watch(r,function(e){p&&(p.index=e)}),n.bind("keydown",function(e){var t;27===e.which&&(t=g.top(),t&&t.value.keyboard&&(e.preventDefault(),i.$apply(function(){h.dismiss(t.key,"escape key press")})))}),h.registerObserverCallback=function(e){f.push(e)},h.open=function(e,t){g.add(e,{deferred:t.deferred,modalScope:t.scope,backdrop:t.backdrop,keyboard:t.keyboard});var o=n.find("body").eq(0),l=r();if(l>=0&&!u){p=i.$new(!0),p.index=l;var c=angular.element("<div modal-backdrop></div>");c.attr("backdrop-class",t.backdropClass),u=a(c)(p),o.append(u)}var d=angular.element("<div modal-window></div>"),h=g.length()-1;d.attr({"template-url":t.windowTemplateUrl,"window-class":t.windowClass,size:t.size,index:h,animate:"animate"}).html(t.content);var f=a(d)(t.scope);g.top().value.modalDomEl=f,g.top().value.index=h,o.append(f),o.addClass(m),s()},h.close=function(e,t){var n=g.get(e);n&&(n.value.deferred.resolve(t),l(e))},h.dismiss=function(e,t){var n=g.get(e);n&&(n.value.deferred.reject(t),l(e))},h.dismissAll=function(e){for(var t=this.getTop();t;)this.dismiss(t.key,e),t=this.getTop()},h.getTop=function(){return g.top()},h}]).provider("$modal",function(){var e={options:{backdrop:!0,keyboard:!0},$get:["$injector","$rootScope","$q","$http","$templateCache","$controller","$modalStack",function(t,n,a,i,o,s,r){function l(e){return e.template?a.when(e.template):i.get(angular.isFunction(e.templateUrl)?e.templateUrl():e.templateUrl,{cache:o}).then(function(e){return e.data})}function c(e){var n=[];return angular.forEach(e,function(e){(angular.isFunction(e)||angular.isArray(e))&&n.push(a.when(t.invoke(e)))}),n}var d={};return d.open=function(t){var i=a.defer(),o=a.defer(),d={result:i.promise,opened:o.promise,close:function(e){r.close(d,e)},dismiss:function(e){r.dismiss(d,e)}};if(t=angular.extend({},e.options,t),t.resolve=t.resolve||{},!t.template&&!t.templateUrl)throw new Error("One of template or templateUrl options is required.");var u=a.all([l(t)].concat(c(t.resolve)));return u.then(function(e){var a=(t.scope||n).$new();a.$close=d.close,a.$dismiss=d.dismiss;var o,l={},c=1;t.controller&&(l.$scope=a,l.$modalInstance=d,angular.forEach(t.resolve,function(t,n){l[n]=e[c++]}),o=s(t.controller,l),t.controllerAs&&(a[t.controllerAs]=o)),r.open(d,{scope:a,deferred:i,content:e[0],backdrop:t.backdrop,keyboard:t.keyboard,backdropClass:t.backdropClass,windowClass:t.windowClass,windowTemplateUrl:t.windowTemplateUrl,size:t.size})},function(e){i.reject(e)}),u.then(function(){o.resolve(!0)},function(){o.reject(!1)}),d},d}]};return e}),angular.module("ui.bootstrap.transition",[]).factory("$transition",["$q","$timeout","$rootScope",function(e,t,n){function a(e){for(var t in e)if(void 0!==o.style[t])return e[t]}var i=function(a,o,s){s=s||{};var r=e.defer(),l=i[s.animation?"animationEndEventName":"transitionEndEventName"],c=function(){n.$apply(function(){a.unbind(l,c),r.resolve(a)})};return l&&a.bind(l,c),t(function(){angular.isString(o)?a.addClass(o):angular.isFunction(o)?o(a):angular.isObject(o)&&a.css(o),l||r.resolve(a)}),r.promise.cancel=function(){l&&a.unbind(l,c),r.reject("Transition cancelled")},r.promise},o=document.createElement("trans"),s={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",transition:"transitionend"},r={WebkitTransition:"webkitAnimationEnd",MozTransition:"animationend",OTransition:"oAnimationEnd",transition:"animationend"};return i.transitionEndEventName=a(s),i.animationEndEventName=a(r),i}]),angular.module("template/tooltip/tooltip-html-unsafe-popup.html",[]).run(["$templateCache",function(e){e.put("template/tooltip/tooltip-html-unsafe-popup.html",'<div class="tooltip {{placement}}" ng-class="{ in: isOpen(), fade: animation() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner" bind-html-unsafe="content"></div>\n</div>\n')}]),angular.module("template/tooltip/tooltip-popup.html",[]).run(["$templateCache",function(e){e.put("template/tooltip/tooltip-popup.html",'<div class="tooltip {{placement}}" ng-class="{ in: isOpen(), fade: animation() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner" ng-bind="content"></div>\n</div>\n')}]),angular.module("template/modal/backdrop.html",[]).run(["$templateCache",function(e){e.put("template/modal/backdrop.html",'<div class="modal-backdrop fade {{ backdropClass }}"\n ng-class="{in: animate}"\n ng-style="{\'z-index\': 1040 + (index && 1 || 0) + index*10}"\n></div>\n')}]),angular.module("template/modal/window.html",[]).run(["$templateCache",function(e){e.put("template/modal/window.html",'<div tabindex="-1" role="dialog" class="modal fade" ng-class="{in: animate}" ng-style="{\'z-index\': 1050 + index*10, display: hiddenBySingle ? \'none\' : \'block\'}">\n <div class="modal_close_wrap" ng-click="close($event)">\n <div class="modal_close"></div>\n </div>\n <div class="modal-dialog" ng-class="{\'modal-sm\': size == \'sm\', \'modal-lg\': size == \'lg\'}"><div class="modal-content" modal-transclude></div></div>\n</div>')}]),angular.module("mediaPlayer",["mediaPlayer.helpers"]).constant("mp.playerDefaults",{currentTrack:0,ended:void 0,network:void 0,playing:!1,seeking:!1,tracks:0,volume:1,formatDuration:"00:00",formatTime:"00:00",loadPercent:0}).directive("mediaPlayer",["$rootScope","$interpolate","$timeout","mp.throttle","mp.playerDefaults",function(e,t,n,a,i){function o(e){return function(t,a){var i,o=null;
if(e.$attachPlaylist(t),void 0===t&&void 0!==a)return e.pause();if(e.currentTrack){i=a?a[e.currentTrack-1]:-1;for(var s=0;s<t.length;s++)if(angular.equals(t[s],i)){o=s;break}null!==o?(e.currentTrack=o+1,e.tracks=t.length):(e.pause(),t.length?n(function(){e.$clearSourceList(),e.$addSourceList(t[0]),e.load(),e.tracks=t.length}):e.reset())}else t.length?(e.$clearSourceList(),e.$addSourceList(t[0]),e.load(),e.tracks=t.length):e.reset()}}var s={load:function(e,t){"boolean"==typeof e?(t=e,e=null):"object"==typeof e&&(this.$clearSourceList(),this.$addSourceList(e)),this.$domEl.load(),this.ended=void 0,t&&this.$element.one("canplay",this.play.bind(this))},reset:function(e){angular.extend(this,i),this.$clearSourceList(),this.load(this.$playlist,e)},play:function(e,t){return"boolean"==typeof e&&(t=e,e=void 0),t&&(this.$selective=!0),this.$playlist.length>e?(this.currentTrack=e+1,this.load(this.$playlist[e],!0)):(!this.currentTrack&&this.$domEl.readyState&&this.currentTrack++,void(this.ended?this.load(!0):this.$domEl.play()))},playPause:function(e,t){"boolean"==typeof e&&(t=e,e=void 0),t&&(this.$selective=!0),"number"==typeof e&&e+1!==this.currentTrack?this.play(e):this.playing?this.pause():this.play()},pause:function(){this.$domEl.pause()},stop:function(){this.reset()},toggleMute:function(){this.muted=this.$domEl.muted=!this.$domEl.muted},next:function(e){var t=this;if(t.currentTrack&&t.currentTrack<t.tracks){var a=e||t.playing;t.pause(),n(function(){t.$clearSourceList(),t.$addSourceList(t.$playlist[t.currentTrack]),t.load(a),t.currentTrack++})}},prev:function(e){var t=this;if(t.currentTrack&&t.currentTrack-1){var a=e||t.playing;t.pause(),n(function(){t.$clearSourceList(),t.$addSourceList(t.$playlist[t.currentTrack-2]),t.load(a),t.currentTrack--})}},setPlaybackRate:function(e){this.$domEl.playbackRate=e},setVolume:function(e){this.$domEl.volume=e},seek:function(e){var t,n=0;return"string"!=typeof e?this.$domEl.currentTime=e:(t=e.split(":"),n+=parseInt(t.pop(),10),t.length&&(n+=60*parseInt(t.pop(),10)),t.length&&(n+=3600*parseInt(t.pop(),10)),isNaN(n)?void 0:this.$domEl.currentTime=n)},on:function(e,t){return this.$element.on(e,t)},off:function(e,t){return this.$element.off(e,t)},one:function(e,t){return this.$element.one(e,t)},$addSourceList:function(e){var t=this;if(angular.isArray(e))angular.forEach(e,function(e){var n=document.createElement("SOURCE");["src","type","media"].forEach(function(t){void 0!==e[t]&&n.setAttribute(t,e[t])}),t.$element.append(n)});else if(angular.isObject(e)){var n=document.createElement("SOURCE");["src","type","media"].forEach(function(t){void 0!==e[t]&&n.setAttribute(t,e[t])}),t.$element.append(n)}},$clearSourceList:function(){this.$element.contents().remove()},$formatTime:function(e){if(1/0===e)return"∞";var t,n=parseInt(e/3600,10)%24,a=parseInt(e/60,10)%60,i=parseInt(e%60,10),o=(10>a?"0"+a:a)+":"+(10>i?"0"+i:i);return t=n>0?(10>n?"0"+n:n)+":"+o:o},$attachPlaylist:function(e){void 0===e||null===e?this.playlist=[]:this.$playlist=e}},r=function(e,t,n){var i={playing:function(){e.$apply(function(e){e.playing=!0,e.ended=!1})},pause:function(){e.$apply(function(e){e.playing=!1})},ended:function(){!e.$selective&&e.currentTrack<e.tracks?e.next(!0):e.$apply(function(e){e.ended=!0,e.playing=!1})},timeupdate:a(1e3,!1,function(){e.$apply(function(e){e.currentTime=t.currentTime,e.formatTime=e.$formatTime(e.currentTime)})}),loadedmetadata:function(){e.$apply(function(e){e.currentTrack||e.currentTrack++,e.duration=t.duration,e.formatDuration=e.$formatTime(e.duration),t.buffered.length&&(e.loadPercent=Math.round(t.buffered.end(t.buffered.length-1)/e.duration*100))})},progress:function(){e.$domEl.buffered.length&&e.$apply(function(e){e.loadPercent=Math.round(t.buffered.end(t.buffered.length-1)/e.duration*100),e.network="progress"})},volumechange:function(){e.$apply(function(e){e.volume=t.volume,e.muted=t.muted})},seeked:function(){e.$apply(function(e){e.seeking=!1})},seeking:function(){e.$apply(function(e){e.seeking=!0})},ratechange:function(){e.$apply(function(e){e.playbackRate=t.playbackRate})},stalled:function(){e.$apply(function(e){e.network="stalled"})},suspend:function(){e.$apply(function(e){e.network="suspend"})}};angular.forEach(i,function(e,t){n.on(t,e)})},l=function(t){var n=angular.extend(e.$new(!0),{$element:t,$domEl:t[0],$playlist:void 0,buffered:t[0].buffered,played:t[0].played,seekable:t[0].seekable},i,s);return r(n,t[0],t),n};return{scope:!1,link:function(e,t,n){var a=n.playlist,i=n.mediaPlayer||n.playerControl,s=new l(t),r=e[a];if(r=void 0===a?[]:void 0===e[a]?e[a]=[]:e[a],void 0!==i&&e.$eval(i+" = player",{player:s}),"AUDIO"!==t[0].tagName&&"VIDEO"!==t[0].tagName)return new Error("player directive works only when attached to an <audio>/<video> type tag");var c=[],d=t.find("source");1===d.length?r.unshift({src:d[0].src,type:d[0].type,media:d[0].media}):d.length>1&&(angular.forEach(d,function(e){c.push({src:e.src,type:e.type,media:e.media})}),r.unshift(c)),void 0===a?s.$attachPlaylist(r):r.length?(o(s)(r,void 0,e),e.$watch(a,o(s),!0)):e.$watch(a,o(s),!0)}}}]),angular.module("mediaPlayer.helpers",[]).factory("mp.throttle",["$timeout",function(e){return function(t,n,a,i){var o,s=0;"boolean"!=typeof n&&(i=a,a=n,n=void 0);var r=function(){var r=this,l=+new Date-s,c=arguments,d=function(){s=+new Date,a.apply(r,c)},u=function(){o=void 0};i&&!o&&d(),o&&e.cancel(o),void 0===i&&l>t?d():n!==!0&&(o=e(i?u:d,void 0===i?t-l:t))};return r}}]);var dbits,canary=0xdeadbeefcafe,j_lm=15715070==(16777215&canary);j_lm&&"Microsoft Internet Explorer"==navigator.appName?(BigInteger.prototype.am=am2,dbits=30):j_lm&&"Netscape"!=navigator.appName?(BigInteger.prototype.am=am1,dbits=26):(BigInteger.prototype.am=am3,dbits=28),BigInteger.prototype.DB=dbits,BigInteger.prototype.DM=(1<<dbits)-1,BigInteger.prototype.DV=1<<dbits;var BI_FP=52;BigInteger.prototype.FV=Math.pow(2,BI_FP),BigInteger.prototype.F1=BI_FP-dbits,BigInteger.prototype.F2=2*dbits-BI_FP;var BI_RM="0123456789abcdefghijklmnopqrstuvwxyz",BI_RC=new Array,rr,vv;for(rr="0".charCodeAt(0),vv=0;9>=vv;++vv)BI_RC[rr++]=vv;for(rr="a".charCodeAt(0),vv=10;36>vv;++vv)BI_RC[rr++]=vv;for(rr="A".charCodeAt(0),vv=10;36>vv;++vv)BI_RC[rr++]=vv;Classic.prototype.convert=cConvert,Classic.prototype.revert=cRevert,Classic.prototype.reduce=cReduce,Classic.prototype.mulTo=cMulTo,Classic.prototype.sqrTo=cSqrTo,Montgomery.prototype.convert=montConvert,Montgomery.prototype.revert=montRevert,Montgomery.prototype.reduce=montReduce,Montgomery.prototype.mulTo=montMulTo,Montgomery.prototype.sqrTo=montSqrTo,BigInteger.prototype.copyTo=bnpCopyTo,BigInteger.prototype.fromInt=bnpFromInt,BigInteger.prototype.fromString=bnpFromString,BigInteger.prototype.clamp=bnpClamp,BigInteger.prototype.dlShiftTo=bnpDLShiftTo,BigInteger.prototype.drShiftTo=bnpDRShiftTo,BigInteger.prototype.lShiftTo=bnpLShiftTo,BigInteger.prototype.rShiftTo=bnpRShiftTo,BigInteger.prototype.subTo=bnpSubTo,BigInteger.prototype.multiplyTo=bnpMultiplyTo,BigInteger.prototype.squareTo=bnpSquareTo,BigInteger.prototype.divRemTo=bnpDivRemTo,BigInteger.prototype.invDigit=bnpInvDigit,BigInteger.prototype.isEven=bnpIsEven,BigInteger.prototype.exp=bnpExp,BigInteger.prototype.toString=bnToString,BigInteger.prototype.negate=bnNegate,BigInteger.prototype.abs=bnAbs,BigInteger.prototype.compareTo=bnCompareTo,BigInteger.prototype.bitLength=bnBitLength,BigInteger.prototype.mod=bnMod,BigInteger.prototype.modPowInt=bnModPowInt,BigInteger.ZERO=nbv(0),BigInteger.ONE=nbv(1),NullExp.prototype.convert=nNop,NullExp.prototype.revert=nNop,NullExp.prototype.mulTo=nMulTo,NullExp.prototype.sqrTo=nSqrTo,Barrett.prototype.convert=barrettConvert,Barrett.prototype.revert=barrettRevert,Barrett.prototype.reduce=barrettReduce,Barrett.prototype.mulTo=barrettMulTo,Barrett.prototype.sqrTo=barrettSqrTo;var lowprimes=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],lplim=(1<<26)/lowprimes[lowprimes.length-1];BigInteger.prototype.chunkSize=bnpChunkSize,BigInteger.prototype.toRadix=bnpToRadix,BigInteger.prototype.fromRadix=bnpFromRadix,BigInteger.prototype.fromNumber=bnpFromNumber,BigInteger.prototype.bitwiseTo=bnpBitwiseTo,BigInteger.prototype.changeBit=bnpChangeBit,BigInteger.prototype.addTo=bnpAddTo,BigInteger.prototype.dMultiply=bnpDMultiply,BigInteger.prototype.dAddOffset=bnpDAddOffset,BigInteger.prototype.multiplyLowerTo=bnpMultiplyLowerTo,BigInteger.prototype.multiplyUpperTo=bnpMultiplyUpperTo,BigInteger.prototype.modInt=bnpModInt,BigInteger.prototype.millerRabin=bnpMillerRabin,BigInteger.prototype.clone=bnClone,BigInteger.prototype.intValue=bnIntValue,BigInteger.prototype.byteValue=bnByteValue,BigInteger.prototype.shortValue=bnShortValue,BigInteger.prototype.signum=bnSigNum,BigInteger.prototype.toByteArray=bnToByteArray,BigInteger.prototype.equals=bnEquals,BigInteger.prototype.min=bnMin,BigInteger.prototype.max=bnMax,BigInteger.prototype.and=bnAnd,BigInteger.prototype.or=bnOr,BigInteger.prototype.xor=bnXor,BigInteger.prototype.andNot=bnAndNot,BigInteger.prototype.not=bnNot,BigInteger.prototype.shiftLeft=bnShiftLeft,BigInteger.prototype.shiftRight=bnShiftRight,BigInteger.prototype.getLowestSetBit=bnGetLowestSetBit,BigInteger.prototype.bitCount=bnBitCount,BigInteger.prototype.testBit=bnTestBit,BigInteger.prototype.setBit=bnSetBit,BigInteger.prototype.clearBit=bnClearBit,BigInteger.prototype.flipBit=bnFlipBit,BigInteger.prototype.add=bnAdd,BigInteger.prototype.subtract=bnSubtract,BigInteger.prototype.multiply=bnMultiply,BigInteger.prototype.divide=bnDivide,BigInteger.prototype.remainder=bnRemainder,BigInteger.prototype.divideAndRemainder=bnDivideAndRemainder,BigInteger.prototype.modPow=bnModPow,BigInteger.prototype.modInverse=bnModInverse,BigInteger.prototype.pow=bnPow,BigInteger.prototype.gcd=bnGCD,BigInteger.prototype.isProbablePrime=bnIsProbablePrime,BigInteger.prototype.square=bnSquare;var rng_state,rng_pool,rng_pptr;if(null==rng_pool){rng_pool=new Array,rng_pptr=0;var global="undefined"!=typeof window?window:this,t;if(global&&global.crypto&&global.crypto.getRandomValues){var ua=new Uint8Array(32);for(global.crypto.getRandomValues(ua),t=0;32>t;++t)rng_pool[rng_pptr++]=ua[t]}if("Netscape"==navigator.appName&&navigator.appVersion<"5"&&global&&global.crypto){var z=global.crypto.random(32);for(t=0;t<z.length;++t)rng_pool[rng_pptr++]=255&z.charCodeAt(t)}for(;rng_psize>rng_pptr;)t=Math.floor(65536*Math.random()),rng_pool[rng_pptr++]=t>>>8,rng_pool[rng_pptr++]=255&t;rng_pptr=0,rng_seed_time()}SecureRandom.prototype.nextBytes=rng_get_bytes,Arcfour.prototype.init=ARC4init,Arcfour.prototype.next=ARC4next;var rng_psize=256,CryptoJS=CryptoJS||function(e,t){var n={},a=n.lib={},i=a.Base=function(){function e(){}return{extend:function(t){e.prototype=this;var n=new e;return t&&n.mixIn(t),n.hasOwnProperty("init")||(n.init=function(){n.$super.init.apply(this,arguments)}),n.init.prototype=n,n.$super=this,n},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),o=a.WordArray=i.extend({init:function(e,n){e=this.words=e||[],this.sigBytes=n!=t?n:4*e.length},toString:function(e){return(e||r).stringify(this)},concat:function(e){var t=this.words,n=e.words,a=this.sigBytes,i=e.sigBytes;if(this.clamp(),a%4)for(var o=0;i>o;o++){var s=n[o>>>2]>>>24-o%4*8&255;t[a+o>>>2]|=s<<24-(a+o)%4*8}else if(n.length>65535)for(var o=0;i>o;o+=4)t[a+o>>>2]=n[o>>>2];else for(var o=0;o<n.length;o++)t.push(n[o]);return this.sigBytes+=i,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=i.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n=[],a=0;t>a;a+=4)n.push(4294967296*e.random()|0);return new o.init(n,t)}}),s=n.enc={},r=s.Hex={stringify:function(e){for(var t=e.words,n=e.sigBytes,a=[],i=0;n>i;i++){var o=t[i>>>2]>>>24-i%4*8&255;a.push((o>>>4).toString(16)),a.push((15&o).toString(16))}return a.join("")},parse:function(e){for(var t=e.length,n=[],a=0;t>a;a+=2)n[a>>>3]|=parseInt(e.substr(a,2),16)<<24-a%8*4;return new o.init(n,t/2)}},l=s.Latin1={stringify:function(e){for(var t=e.words,n=e.sigBytes,a=[],i=0;n>i;i++){var o=t[i>>>2]>>>24-i%4*8&255;a.push(String.fromCharCode(o))}return a.join("")},parse:function(e){for(var t=e.length,n=[],a=0;t>a;a++)n[a>>>2]|=(255&e.charCodeAt(a))<<24-a%4*8;return new o.init(n,t)}},c=s.Utf8={stringify:function(e){try{return decodeURIComponent(escape(l.stringify(e)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:function(e){return l.parse(unescape(encodeURIComponent(e)))}},d=a.BufferedBlockAlgorithm=i.extend({reset:function(){this._data=new o.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=c.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,a=n.words,i=n.sigBytes,s=this.blockSize,r=4*s,l=i/r;l=t?e.ceil(l):e.max((0|l)-this._minBufferSize,0);var c=l*s,d=e.min(4*c,i);if(c){for(var u=0;c>u;u+=s)this._doProcessBlock(a,u);var p=a.splice(0,c);n.sigBytes-=d}return new o.init(p,d)},clone:function(){var e=i.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0}),u=(a.Hasher=d.extend({cfg:i.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){d.reset.call(this),this._doReset()},update:function(e){return this._append(e),this._process(),this},finalize:function(e){e&&this._append(e);var t=this._doFinalize();return t},blockSize:16,_createHelper:function(e){return function(t,n){return new e.init(n).finalize(t)}},_createHmacHelper:function(e){return function(t,n){return new u.HMAC.init(e,n).finalize(t)}}}),n.algo={});return n}(Math);CryptoJS.lib.Cipher||function(e){var t=CryptoJS,n=t.lib,a=n.Base,i=n.WordArray,o=n.BufferedBlockAlgorithm,s=t.enc,r=(s.Utf8,s.Base64),l=t.algo,c=l.EvpKDF,d=n.Cipher=o.extend({cfg:a.extend(),createEncryptor:function(e,t){return this.create(this._ENC_XFORM_MODE,e,t)},createDecryptor:function(e,t){return this.create(this._DEC_XFORM_MODE,e,t)},init:function(e,t,n){this.cfg=this.cfg.extend(n),this._xformMode=e,this._key=t,this.reset()},reset:function(){o.reset.call(this),this._doReset()},process:function(e){return this._append(e),this._process()},finalize:function(e){e&&this._append(e);var t=this._doFinalize();return t},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function e(e){return"string"==typeof e?k:y}return function(t){return{encrypt:function(n,a,i){return e(a).encrypt(t,n,a,i)},decrypt:function(n,a,i){return e(a).decrypt(t,n,a,i)}}}}()}),u=(n.StreamCipher=d.extend({_doFinalize:function(){var e=this._process(!0);return e},blockSize:1}),t.mode={}),p=n.BlockCipherMode=a.extend({createEncryptor:function(e,t){return this.Encryptor.create(e,t)},createDecryptor:function(e,t){return this.Decryptor.create(e,t)},init:function(e,t){this._cipher=e,this._iv=t}}),m=u.CBC=function(){function t(t,n,a){var i=this._iv;if(i){var o=i;this._iv=e}else var o=this._prevBlock;for(var s=0;a>s;s++)t[n+s]^=o[s]}var n=p.extend();return n.Encryptor=n.extend({processBlock:function(e,n){var a=this._cipher,i=a.blockSize;t.call(this,e,n,i),a.encryptBlock(e,n),this._prevBlock=e.slice(n,n+i)}}),n.Decryptor=n.extend({processBlock:function(e,n){var a=this._cipher,i=a.blockSize,o=e.slice(n,n+i);a.decryptBlock(e,n),t.call(this,e,n,i),this._prevBlock=o}}),n}(),g=(u.IGE=function(){function t(e,t,n,a){for(var i=0;a>i;i++)e[n+i]^=t[i]}var n=p.extend();return n.Encryptor=n.extend({processBlock:function(n,a){var i=this._cipher,o=i.blockSize;this._ivp===e&&(this._ivp=this._iv.slice(0,o),this._iv2p=this._iv.slice(o,o+o));var s=n.slice(a,a+o);t(n,this._ivp,a,o),i.encryptBlock(n,a),t(n,this._iv2p,a,o),this._ivp=n.slice(a,a+o),this._iv2p=s}}),n.Decryptor=n.extend({processBlock:function(n,a){var i=this._cipher,o=i.blockSize;this._ivp===e&&(this._ivp=this._iv.slice(0,o),this._iv2p=this._iv.slice(o,2*o));var s=n.slice(a,a+o);t(n,this._iv2p,a,o),i.decryptBlock(n,a),t(n,this._ivp,a,o),this._ivp=s,this._iv2p=n.slice(a,a+o)}}),n}(),t.pad={}),h=g.Pkcs7={pad:function(e,t){for(var n=4*t,a=n-e.sigBytes%n,o=a<<24|a<<16|a<<8|a,s=[],r=0;a>r;r+=4)s.push(o);var l=i.create(s,a);e.concat(l)},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},f=(g.NoPadding={pad:function(){},unpad:function(){}},n.BlockCipher=d.extend({cfg:d.cfg.extend({mode:m,padding:h}),reset:function(){d.reset.call(this);var e=this.cfg,t=e.iv,n=e.mode;if(this._xformMode==this._ENC_XFORM_MODE)var a=n.createEncryptor;else{var a=n.createDecryptor;this._minBufferSize=1}this._mode=a.call(n,this,t&&t.words)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){e.pad(this._data,this.blockSize);var t=this._process(!0)}else{var t=this._process(!0);e.unpad(t)}return t},blockSize:4}),n.CipherParams=a.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}})),_=t.format={},v=_.OpenSSL={stringify:function(e){var t=e.ciphertext,n=e.salt;if(n)var a=i.create([1398893684,1701076831]).concat(n).concat(t);else var a=t;return a.toString(r)},parse:function(e){var t=r.parse(e),n=t.words;if(1398893684==n[0]&&1701076831==n[1]){var a=i.create(n.slice(2,4));n.splice(0,4),t.sigBytes-=16}return f.create({ciphertext:t,salt:a})}},y=n.SerializableCipher=a.extend({cfg:a.extend({format:v}),encrypt:function(e,t,n,a){a=this.cfg.extend(a);var i=e.createEncryptor(n,a),o=i.finalize(t),s=i.cfg;return f.create({ciphertext:o,key:n,iv:s.iv,algorithm:e,mode:s.mode,padding:s.padding,blockSize:e.blockSize,formatter:a.format})},decrypt:function(e,t,n,a){a=this.cfg.extend(a),t=this._parse(t,a.format);var i=e.createDecryptor(n,a).finalize(t.ciphertext);return i},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),b=t.kdf={},w=b.OpenSSL={execute:function(e,t,n,a){a||(a=i.random(8));var o=c.create({keySize:t+n}).compute(e,a),s=i.create(o.words.slice(t),4*n);return o.sigBytes=4*t,f.create({key:o,iv:s,salt:a})}},k=n.PasswordBasedCipher=y.extend({cfg:y.cfg.extend({kdf:w}),encrypt:function(e,t,n,a){a=this.cfg.extend(a);var i=a.kdf.execute(n,e.keySize,e.ivSize);a.iv=i.iv;var o=y.encrypt.call(this,e,t,i.key,a);return o.mixIn(i),o},decrypt:function(e,t,n,a){a=this.cfg.extend(a),t=this._parse(t,a.format);var i=a.kdf.execute(n,e.keySize,e.ivSize,t.salt);a.iv=i.iv;var o=y.decrypt.call(this,e,t,i.key,a);return o}})}(),function(){var e=CryptoJS,t=e.lib,n=t.BlockCipher,a=e.algo,i=[],o=[],s=[],r=[],l=[],c=[],d=[],u=[],p=[],m=[];!function(){for(var e=[],t=0;256>t;t++)e[t]=128>t?t<<1:t<<1^283;for(var n=0,a=0,t=0;256>t;t++){var g=a^a<<1^a<<2^a<<3^a<<4;g=g>>>8^255&g^99,i[n]=g,o[g]=n;var h=e[n],f=e[h],_=e[f],v=257*e[g]^16843008*g;s[n]=v<<24|v>>>8,r[n]=v<<16|v>>>16,l[n]=v<<8|v>>>24,c[n]=v;var v=16843009*_^65537*f^257*h^16843008*n;d[g]=v<<24|v>>>8,u[g]=v<<16|v>>>16,p[g]=v<<8|v>>>24,m[g]=v,n?(n=h^e[e[e[_^h]]],a^=e[e[a]]):n=a=1}}();var g=[0,1,2,4,8,16,32,64,128,27,54],h=a.AES=n.extend({_doReset:function(){for(var e=this._key,t=e.words,n=e.sigBytes/4,a=this._nRounds=n+6,o=4*(a+1),s=this._keySchedule=[],r=0;o>r;r++)if(n>r)s[r]=t[r];else{var l=s[r-1];r%n?n>6&&r%n==4&&(l=i[l>>>24]<<24|i[l>>>16&255]<<16|i[l>>>8&255]<<8|i[255&l]):(l=l<<8|l>>>24,l=i[l>>>24]<<24|i[l>>>16&255]<<16|i[l>>>8&255]<<8|i[255&l],l^=g[r/n|0]<<24),s[r]=s[r-n]^l}for(var c=this._invKeySchedule=[],h=0;o>h;h++){var r=o-h;if(h%4)var l=s[r];else var l=s[r-4];c[h]=4>h||4>=r?l:d[i[l>>>24]]^u[i[l>>>16&255]]^p[i[l>>>8&255]]^m[i[255&l]]}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,s,r,l,c,i)},decryptBlock:function(e,t){var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n,this._doCryptBlock(e,t,this._invKeySchedule,d,u,p,m,o);var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n},_doCryptBlock:function(e,t,n,a,i,o,s,r){for(var l=this._nRounds,c=e[t]^n[0],d=e[t+1]^n[1],u=e[t+2]^n[2],p=e[t+3]^n[3],m=4,g=1;l>g;g++){var h=a[c>>>24]^i[d>>>16&255]^o[u>>>8&255]^s[255&p]^n[m++],f=a[d>>>24]^i[u>>>16&255]^o[p>>>8&255]^s[255&c]^n[m++],_=a[u>>>24]^i[p>>>16&255]^o[c>>>8&255]^s[255&d]^n[m++],v=a[p>>>24]^i[c>>>16&255]^o[d>>>8&255]^s[255&u]^n[m++];c=h,d=f,u=_,p=v}var h=(r[c>>>24]<<24|r[d>>>16&255]<<16|r[u>>>8&255]<<8|r[255&p])^n[m++],f=(r[d>>>24]<<24|r[u>>>16&255]<<16|r[p>>>8&255]<<8|r[255&c])^n[m++],_=(r[u>>>24]<<24|r[p>>>16&255]<<16|r[c>>>8&255]<<8|r[255&d])^n[m++],v=(r[p>>>24]<<24|r[c>>>16&255]<<16|r[d>>>8&255]<<8|r[255&u])^n[m++];e[t]=h,e[t+1]=f,e[t+2]=_,e[t+3]=v},keySize:8});e.AES=n._createHelper(h)}(),function(e){var t=CryptoJS,n=t.lib,a=n.WordArray,i=n.Hasher,o=t.algo,s=[],r=[];!function(){function t(t){for(var n=e.sqrt(t),a=2;n>=a;a++)if(!(t%a))return!1;return!0}function n(e){return 4294967296*(e-(0|e))|0}for(var a=2,i=0;64>i;)t(a)&&(8>i&&(s[i]=n(e.pow(a,.5))),r[i]=n(e.pow(a,1/3)),i++),a++}();var l=[],c=o.SHA256=i.extend({_doReset:function(){this._hash=new a.init(s.slice(0))},_doProcessBlock:function(e,t){for(var n=this._hash.words,a=n[0],i=n[1],o=n[2],s=n[3],c=n[4],d=n[5],u=n[6],p=n[7],m=0;64>m;m++){if(16>m)l[m]=0|e[t+m];else{var g=l[m-15],h=(g<<25|g>>>7)^(g<<14|g>>>18)^g>>>3,f=l[m-2],_=(f<<15|f>>>17)^(f<<13|f>>>19)^f>>>10;l[m]=h+l[m-7]+_+l[m-16]}var v=c&d^~c&u,y=a&i^a&o^i&o,b=(a<<30|a>>>2)^(a<<19|a>>>13)^(a<<10|a>>>22),w=(c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25),k=p+w+v+r[m]+l[m],$=b+y;p=u,u=d,d=c,c=s+k|0,s=o,o=i,i=a,a=k+$|0}n[0]=n[0]+a|0,n[1]=n[1]+i|0,n[2]=n[2]+o|0,n[3]=n[3]+s|0,n[4]=n[4]+c|0,n[5]=n[5]+d|0,n[6]=n[6]+u|0,n[7]=n[7]+p|0},_doFinalize:function(){var t=this._data,n=t.words,a=8*this._nDataBytes,i=8*t.sigBytes;return n[i>>>5]|=128<<24-i%32,n[(i+64>>>9<<4)+14]=e.floor(a/4294967296),n[(i+64>>>9<<4)+15]=a,t.sigBytes=4*n.length,this._process(),this._hash},clone:function(){var e=i.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=i._createHelper(c),t.HmacSHA256=i._createHmacHelper(c)}(Math),function(e){function t(e){"use strict";var t={fill:0},a=function(e){for(e+=9;e%64>0;e+=1);return e},i=function(e,t){for(var n=t>>2;n<e.length;n++)e[n]=0},s=function(e,t,n){e[t>>2]|=128<<24-(t%4<<3),e[((t>>2)+2&-16)+15]=n<<3},r=function(e,t,n,a,i){var o,s=this,r=i%4,l=a%4,c=a-l;if(c>0)switch(r){case 0:e[i+3|0]=s.charCodeAt(n);case 1:e[i+2|0]=s.charCodeAt(n+1);case 2:e[i+1|0]=s.charCodeAt(n+2);case 3:e[0|i]=s.charCodeAt(n+3)}for(o=r;c>o;o=o+4|0)t[i+o>>2]=s.charCodeAt(n+o)<<24|s.charCodeAt(n+o+1)<<16|s.charCodeAt(n+o+2)<<8|s.charCodeAt(n+o+3);switch(l){case 3:e[i+c+1|0]=s.charCodeAt(n+c+2);case 2:e[i+c+2|0]=s.charCodeAt(n+c+1);case 1:e[i+c+3|0]=s.charCodeAt(n+c)}},l=function(e,t,n,a,i){var o,s=this,r=i%4,l=a%4,c=a-l;if(c>0)switch(r){case 0:e[i+3|0]=s[n];case 1:e[i+2|0]=s[n+1];case 2:e[i+1|0]=s[n+2];case 3:e[0|i]=s[n+3]}for(o=4-r;c>o;o=o+=4)t[i+o>>2]=s[n+o]<<24|s[n+o+1]<<16|s[n+o+2]<<8|s[n+o+3];switch(l){case 3:e[i+c+1|0]=s[n+c+2];case 2:e[i+c+2|0]=s[n+c+1];case 1:e[i+c+3|0]=s[n+c]}},c=function(e){switch(o.getDataType(e)){case"string":return r.bind(e);case"array":return l.bind(e);case"buffer":return l.bind(e);case"arraybuffer":return l.bind(new Uint8Array(e));case"view":return l.bind(new Uint8Array(e.buffer))}},d=function(e){var t,n,a="0123456789abcdef",i=[],o=new Uint8Array(e);for(t=0;t<o.length;t++)n=o[t],i[t]=a.charAt(n>>4&15)+a.charAt(n>>0&15);return i.join("")},u=function(e){var t;if(65536>=e)return 65536;if(16777216>e)for(t=1;e>t;t<<=1);else for(t=16777216;e>t;t+=16777216);return t},p=function(e){if(e%64>0)throw new Error("Chunk size must be a multiple of 128 bit");t.maxChunkLen=e,t.padMaxChunkLen=a(e),t.heap=new ArrayBuffer(u(t.padMaxChunkLen+320+20)),t.h32=new Int32Array(t.heap),t.h8=new Int8Array(t.heap),t.core=n({Int32Array:Int32Array,DataView:DataView},{},t.heap),t.buffer=null};p(e||65536);var m=function(e,t){var n=new Int32Array(e,t+320,5);n[0]=1732584193,n[1]=-271733879,n[2]=-1732584194,n[3]=271733878,n[4]=-1009589776},g=function(e,n){var o=a(e),r=new Int32Array(t.heap,0,o>>2);return i(r,e),s(r,e,n),o},h=function(e,n,a){c(e)(t.h8,t.h32,n,a,0)},f=function(e,n,a,i,o){var s=a;o&&(s=g(a,i)),h(e,n,a),t.core.hash(s,t.padMaxChunkLen)},_=function(e,t){var n=new Int32Array(e,t+320,5),a=new Int32Array(5),i=new DataView(a.buffer);return i.setInt32(0,n[0],!1),i.setInt32(4,n[1],!1),i.setInt32(8,n[2],!1),i.setInt32(12,n[3],!1),i.setInt32(16,n[4],!1),a},v=this.rawDigest=function(e){var n=e.byteLength||e.length;m(t.heap,t.padMaxChunkLen);var a=0,i=t.maxChunkLen;for(a=0;n>a+i;a+=i)f(e,a,i,n,!1);return f(e,a,n-a,n,!0),_(t.heap,t.padMaxChunkLen)};this.digest=this.digestFromString=this.digestFromBuffer=this.digestFromArrayBuffer=function(e){return d(v(e).buffer)}}function n(e,t,n){"use asm";function a(e,t){e|=0,t|=0;var n=0,a=0,o=0,s=0,r=0,l=0,c=0,d=0,u=0,p=0,m=0,g=0,h=0,f=0;for(o=i[t+320>>2]|0,r=i[t+324>>2]|0,c=i[t+328>>2]|0,u=i[t+332>>2]|0,m=i[t+336>>2]|0,n=0;(n|0)<(e|0);n=n+64|0){for(s=o,l=r,d=c,p=u,g=m,a=0;(a|0)<64;a=a+4|0)f=i[n+a>>2]|0,h=((o<<5|o>>>27)+(r&c|~r&u)|0)+((f+m|0)+1518500249|0)|0,m=u,u=c,c=r<<30|r>>>2,r=o,o=h,i[e+a>>2]=f;for(a=e+64|0;(a|0)<(e+80|0);a=a+4|0)f=(i[a-12>>2]^i[a-32>>2]^i[a-56>>2]^i[a-64>>2])<<1|(i[a-12>>2]^i[a-32>>2]^i[a-56>>2]^i[a-64>>2])>>>31,h=((o<<5|o>>>27)+(r&c|~r&u)|0)+((f+m|0)+1518500249|0)|0,m=u,u=c,c=r<<30|r>>>2,r=o,o=h,i[a>>2]=f;for(a=e+80|0;(a|0)<(e+160|0);a=a+4|0)f=(i[a-12>>2]^i[a-32>>2]^i[a-56>>2]^i[a-64>>2])<<1|(i[a-12>>2]^i[a-32>>2]^i[a-56>>2]^i[a-64>>2])>>>31,h=((o<<5|o>>>27)+(r^c^u)|0)+((f+m|0)+1859775393|0)|0,m=u,u=c,c=r<<30|r>>>2,r=o,o=h,i[a>>2]=f;for(a=e+160|0;(a|0)<(e+240|0);a=a+4|0)f=(i[a-12>>2]^i[a-32>>2]^i[a-56>>2]^i[a-64>>2])<<1|(i[a-12>>2]^i[a-32>>2]^i[a-56>>2]^i[a-64>>2])>>>31,h=((o<<5|o>>>27)+(r&c|r&u|c&u)|0)+((f+m|0)-1894007588|0)|0,m=u,u=c,c=r<<30|r>>>2,r=o,o=h,i[a>>2]=f;for(a=e+240|0;(a|0)<(e+320|0);a=a+4|0)f=(i[a-12>>2]^i[a-32>>2]^i[a-56>>2]^i[a-64>>2])<<1|(i[a-12>>2]^i[a-32>>2]^i[a-56>>2]^i[a-64>>2])>>>31,h=((o<<5|o>>>27)+(r^c^u)|0)+((f+m|0)-899497514|0)|0,m=u,u=c,c=r<<30|r>>>2,r=o,o=h,i[a>>2]=f;o=o+s|0,r=r+l|0,c=c+d|0,u=u+p|0,m=m+g|0}i[t+320>>2]=o,i[t+324>>2]=r,i[t+328>>2]=c,i[t+332>>2]=u,i[t+336>>2]=m}var i=new e.Int32Array(n);return{hash:a}}if("undefined"!=typeof module&&(module.exports=t),"undefined"!=typeof e&&(e.Rusha=t),"undefined"!=typeof FileReaderSync){var a=new FileReaderSync,i=new t(4194304);self.onmessage=function(e){var t,n=e.data.data;if(n instanceof Blob)try{n=a.readAsBinaryString(n)}catch(o){return void self.postMessage({id:e.data.id,error:o.name})}t=i.digest(n),self.postMessage({id:e.data.id,hash:t})}}var o={getDataType:function(t){if("string"==typeof t)return"string";if(t instanceof Array)return"array";if("undefined"!=typeof e&&e.Buffer&&e.Buffer.isBuffer(t))return"buffer";if(t instanceof ArrayBuffer)return"arraybuffer";if(t.buffer instanceof ArrayBuffer)return"view";throw new Error("Unsupported data type.")}}}(this),function(){"use strict";function e(e){throw e}function t(e,t){var n=e.split("."),a=u;!(n[0]in a)&&a.execScript&&a.execScript("var "+n[0]);for(var i;n.length&&(i=n.shift());)n.length||t===d?a=a[i]?a[i]:a[i]={}:a[i]=t}function n(e,t,n){var a,i="number"==typeof t?t:t=0,o="number"==typeof n?n:e.length;for(a=-1,i=7&o;i--;++t)a=a>>>8^_[255&(a^e[t])];for(i=o>>3;i--;t+=8)a=a>>>8^_[255&(a^e[t])],a=a>>>8^_[255&(a^e[t+1])],a=a>>>8^_[255&(a^e[t+2])],a=a>>>8^_[255&(a^e[t+3])],a=a>>>8^_[255&(a^e[t+4])],a=a>>>8^_[255&(a^e[t+5])],a=a>>>8^_[255&(a^e[t+6])],a=a>>>8^_[255&(a^e[t+7])];return(4294967295^a)>>>0}function a(){}function i(e){var t,n,a,i,o,s,r,l,c,d=e.length,u=0,m=Number.POSITIVE_INFINITY;for(l=0;d>l;++l)e[l]>u&&(u=e[l]),e[l]<m&&(m=e[l]);for(t=1<<u,n=new(p?Uint32Array:Array)(t),a=1,i=0,o=2;u>=a;){for(l=0;d>l;++l)if(e[l]===a){for(s=0,r=i,c=0;a>c;++c)s=s<<1|1&r,r>>=1;for(c=s;t>c;c+=o)n[c]=a<<16|l;++i}++a,i<<=1,o<<=1}return[n,u,m]}function o(t,n){switch(this.i=[],this.j=32768,this.d=this.f=this.c=this.n=0,this.input=p?new Uint8Array(t):t,this.o=!1,this.k=k,this.w=!1,(n||!(n={}))&&(n.index&&(this.c=n.index),n.bufferSize&&(this.j=n.bufferSize),n.bufferType&&(this.k=n.bufferType),n.resize&&(this.w=n.resize)),this.k){case w:this.a=32768,this.b=new(p?Uint8Array:Array)(32768+this.j+258);break;case k:this.a=0,this.b=new(p?Uint8Array:Array)(this.j),this.e=this.D,this.q=this.A,this.l=this.C;break;default:e(Error("invalid inflate mode"))}}function s(t,n){for(var a,i=t.f,o=t.d,s=t.input,r=t.c;n>o;)a=s[r++],a===d&&e(Error("input buffer is broken")),i|=a<<o,o+=8;return a=i&(1<<n)-1,t.f=i>>>n,t.d=o-n,t.c=r,a}function r(e,t){for(var n,a,i,o=e.f,s=e.d,r=e.input,l=e.c,c=t[0],u=t[1];u>s&&(n=r[l++],n!==d);)o|=n<<s,s+=8;return a=c[o&(1<<u)-1],i=a>>>16,e.f=o>>i,e.d=s-i,e.c=l,65535&a}function l(e){function t(e,t,n){var a,i,o,l;for(l=0;e>l;)switch(a=r(this,t)){case 16:for(o=3+s(this,2);o--;)n[l++]=i;break;case 17:for(o=3+s(this,3);o--;)n[l++]=0;i=0;break;case 18:for(o=11+s(this,7);o--;)n[l++]=0;i=0;break;default:i=n[l++]=a}return n}var n,a,o,l,c=s(e,5)+257,d=s(e,5)+1,u=s(e,4)+4,m=new(p?Uint8Array:Array)(M.length);for(l=0;u>l;++l)m[M[l]]=s(e,3);n=i(m),a=new(p?Uint8Array:Array)(c),o=new(p?Uint8Array:Array)(d),e.l(i(t.call(e,c,n,a)),i(t.call(e,d,n,o)))}function c(e){this.input=e,this.c=0,this.m=[],this.s=!1}var d=void 0,u=this,p="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array;new(p?Uint8Array:Array)(256);var m;for(m=0;256>m;++m)for(var g=m,h=7,g=g>>>1;g;g>>>=1)--h;var f=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],_=p?new Uint32Array(f):f;
a.prototype.getName=function(){return this.name},a.prototype.getData=function(){return this.data},a.prototype.G=function(){return this.H},t("Zlib.GunzipMember",a),t("Zlib.GunzipMember.prototype.getName",a.prototype.getName),t("Zlib.GunzipMember.prototype.getData",a.prototype.getData),t("Zlib.GunzipMember.prototype.getMtime",a.prototype.G);var v,y=[];for(v=0;288>v;v++)switch(!0){case 143>=v:y.push([v+48,8]);break;case 255>=v:y.push([v-144+400,9]);break;case 279>=v:y.push([v-256+0,7]);break;case 287>=v:y.push([v-280+192,8]);break;default:e("invalid literal: "+v)}var b=function(){function t(t){switch(!0){case 3===t:return[257,t-3,0];case 4===t:return[258,t-4,0];case 5===t:return[259,t-5,0];case 6===t:return[260,t-6,0];case 7===t:return[261,t-7,0];case 8===t:return[262,t-8,0];case 9===t:return[263,t-9,0];case 10===t:return[264,t-10,0];case 12>=t:return[265,t-11,1];case 14>=t:return[266,t-13,1];case 16>=t:return[267,t-15,1];case 18>=t:return[268,t-17,1];case 22>=t:return[269,t-19,2];case 26>=t:return[270,t-23,2];case 30>=t:return[271,t-27,2];case 34>=t:return[272,t-31,2];case 42>=t:return[273,t-35,3];case 50>=t:return[274,t-43,3];case 58>=t:return[275,t-51,3];case 66>=t:return[276,t-59,3];case 82>=t:return[277,t-67,4];case 98>=t:return[278,t-83,4];case 114>=t:return[279,t-99,4];case 130>=t:return[280,t-115,4];case 162>=t:return[281,t-131,5];case 194>=t:return[282,t-163,5];case 226>=t:return[283,t-195,5];case 257>=t:return[284,t-227,5];case 258===t:return[285,t-258,0];default:e("invalid length: "+t)}}var n,a,i=[];for(n=3;258>=n;n++)a=t(n),i[n]=a[2]<<24|a[1]<<16|a[0];return i}();p&&new Uint32Array(b);var w=0,k=1;o.prototype.g=function(){for(;!this.o;){var t=s(this,3);switch(1&t&&(this.o=!0),t>>>=1){case 0:var n=this.input,a=this.c,i=this.b,o=this.a,r=d,c=d,u=d,m=i.length,g=d;switch(this.d=this.f=0,r=n[a++],r===d&&e(Error("invalid uncompressed block header: LEN (first byte)")),c=r,r=n[a++],r===d&&e(Error("invalid uncompressed block header: LEN (second byte)")),c|=r<<8,r=n[a++],r===d&&e(Error("invalid uncompressed block header: NLEN (first byte)")),u=r,r=n[a++],r===d&&e(Error("invalid uncompressed block header: NLEN (second byte)")),u|=r<<8,c===~u&&e(Error("invalid uncompressed block header: length verify")),a+c>n.length&&e(Error("input buffer is broken")),this.k){case w:for(;o+c>i.length;){if(g=m-o,c-=g,p)i.set(n.subarray(a,a+g),o),o+=g,a+=g;else for(;g--;)i[o++]=n[a++];this.a=o,i=this.e(),o=this.a}break;case k:for(;o+c>i.length;)i=this.e({t:2});break;default:e(Error("invalid inflate mode"))}if(p)i.set(n.subarray(a,a+c),o),o+=c,a+=c;else for(;c--;)i[o++]=n[a++];this.c=a,this.a=o,this.b=i;break;case 1:this.l(O,L);break;case 2:l(this);break;default:e(Error("unknown BTYPE: "+t))}}return this.q()};var $,C,S=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],M=p?new Uint16Array(S):S,x=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,258,258],I=p?new Uint16Array(x):x,A=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0],E=p?new Uint8Array(A):A,T=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],D=p?new Uint16Array(T):T,P=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],F=p?new Uint8Array(P):P,R=new(p?Uint8Array:Array)(288);for($=0,C=R.length;C>$;++$)R[$]=143>=$?8:255>=$?9:279>=$?7:8;var N,U,O=i(R),B=new(p?Uint8Array:Array)(30);for(N=0,U=B.length;U>N;++N)B[N]=5;var L=i(B);o.prototype.l=function(e,t){var n=this.b,a=this.a;this.r=e;for(var i,o,l,c,d=n.length-258;256!==(i=r(this,e));)if(256>i)a>=d&&(this.a=a,n=this.e(),a=this.a),n[a++]=i;else for(o=i-257,c=I[o],0<E[o]&&(c+=s(this,E[o])),i=r(this,t),l=D[i],0<F[i]&&(l+=s(this,F[i])),a>=d&&(this.a=a,n=this.e(),a=this.a);c--;)n[a]=n[a++-l];for(;8<=this.d;)this.d-=8,this.c--;this.a=a},o.prototype.C=function(e,t){var n=this.b,a=this.a;this.r=e;for(var i,o,l,c,d=n.length;256!==(i=r(this,e));)if(256>i)a>=d&&(n=this.e(),d=n.length),n[a++]=i;else for(o=i-257,c=I[o],0<E[o]&&(c+=s(this,E[o])),i=r(this,t),l=D[i],0<F[i]&&(l+=s(this,F[i])),a+c>d&&(n=this.e(),d=n.length);c--;)n[a]=n[a++-l];for(;8<=this.d;)this.d-=8,this.c--;this.a=a},o.prototype.e=function(){var e,t,n=new(p?Uint8Array:Array)(this.a-32768),a=this.a-32768,i=this.b;if(p)n.set(i.subarray(32768,n.length));else for(e=0,t=n.length;t>e;++e)n[e]=i[e+32768];if(this.i.push(n),this.n+=n.length,p)i.set(i.subarray(a,a+32768));else for(e=0;32768>e;++e)i[e]=i[a+e];return this.a=32768,i},o.prototype.D=function(e){var t,n,a,i,o=this.input.length/this.c+1|0,s=this.input,r=this.b;return e&&("number"==typeof e.t&&(o=e.t),"number"==typeof e.z&&(o+=e.z)),2>o?(n=(s.length-this.c)/this.r[2],i=258*(n/2)|0,a=i<r.length?r.length+i:r.length<<1):a=r.length*o,p?(t=new Uint8Array(a),t.set(r)):t=r,this.b=t},o.prototype.q=function(){var e,t,n,a,i,o=0,s=this.b,r=this.i,l=new(p?Uint8Array:Array)(this.n+(this.a-32768));if(0===r.length)return p?this.b.subarray(32768,this.a):this.b.slice(32768,this.a);for(t=0,n=r.length;n>t;++t)for(e=r[t],a=0,i=e.length;i>a;++a)l[o++]=e[a];for(t=32768,n=this.a;n>t;++t)l[o++]=s[t];return this.i=[],this.buffer=l},o.prototype.A=function(){var e,t=this.a;return p?this.w?(e=new Uint8Array(t),e.set(this.b.subarray(0,t))):e=this.b.subarray(0,t):(this.b.length>t&&(this.b.length=t),e=this.b),this.buffer=e},c.prototype.F=function(){return this.s||this.g(),this.m.slice()},c.prototype.g=function(){for(var t=this.input.length;this.c<t;){var i=new a,s=d,r=d,l=d,c=d,u=d,m=d,g=d,h=d,f=d,_=this.input,v=this.c;switch(i.u=_[v++],i.v=_[v++],(31!==i.u||139!==i.v)&&e(Error("invalid file signature:"+i.u+","+i.v)),i.p=_[v++],i.p){case 8:break;default:e(Error("unknown compression method: "+i.p))}if(i.h=_[v++],h=_[v++]|_[v++]<<8|_[v++]<<16|_[v++]<<24,i.H=new Date(1e3*h),i.N=_[v++],i.M=_[v++],0<(4&i.h)&&(i.I=_[v++]|_[v++]<<8,v+=i.I),0<(8&i.h)){for(g=[],m=0;0<(u=_[v++]);)g[m++]=String.fromCharCode(u);i.name=g.join("")}if(0<(16&i.h)){for(g=[],m=0;0<(u=_[v++]);)g[m++]=String.fromCharCode(u);i.J=g.join("")}0<(2&i.h)&&(i.B=65535&n(_,0,v),i.B!==(_[v++]|_[v++]<<8)&&e(Error("invalid header crc16"))),s=_[_.length-4]|_[_.length-3]<<8|_[_.length-2]<<16|_[_.length-1]<<24,_.length-v-4-4<512*s&&(c=s),r=new o(_,{index:v,bufferSize:c}),i.data=l=r.g(),v=r.c,i.K=f=(_[v++]|_[v++]<<8|_[v++]<<16|_[v++]<<24)>>>0,n(l,d,d)!==f&&e(Error("invalid CRC-32 checksum: 0x"+n(l,d,d).toString(16)+" / 0x"+f.toString(16))),i.L=s=(_[v++]|_[v++]<<8|_[v++]<<16|_[v++]<<24)>>>0,(4294967295&l.length)!==s&&e(Error("invalid input size: "+(4294967295&l.length)+" / "+s)),this.m.push(i),this.c=v}this.s=!0;var y,b,w,k=this.m,$=0,C=0;for(y=0,b=k.length;b>y;++y)C+=k[y].data.length;if(p)for(w=new Uint8Array(C),y=0;b>y;++y)w.set(k[y].data,$),$+=k[y].data.length;else{for(w=[],y=0;b>y;++y)w[y]=k[y].data;w=Array.prototype.concat.apply([],w)}return w},t("Zlib.Gunzip",c),t("Zlib.Gunzip.prototype.decompress",c.prototype.g),t("Zlib.Gunzip.prototype.getMembers",c.prototype.F)}.call(this),this.goog={provide:function(){},math:{}},goog.provide("goog.math.Long"),goog.math.Long=function(e,t){this.low_=0|e,this.high_=0|t},goog.math.Long.IntCache_={},goog.math.Long.fromInt=function(e){if(e>=-128&&128>e){var t=goog.math.Long.IntCache_[e];if(t)return t}var n=new goog.math.Long(0|e,0>e?-1:0);return e>=-128&&128>e&&(goog.math.Long.IntCache_[e]=n),n},goog.math.Long.fromNumber=function(e){return isNaN(e)||!isFinite(e)?goog.math.Long.ZERO:e<=-goog.math.Long.TWO_PWR_63_DBL_?goog.math.Long.MIN_VALUE:e+1>=goog.math.Long.TWO_PWR_63_DBL_?goog.math.Long.MAX_VALUE:0>e?goog.math.Long.fromNumber(-e).negate():new goog.math.Long(e%goog.math.Long.TWO_PWR_32_DBL_|0,e/goog.math.Long.TWO_PWR_32_DBL_|0)},goog.math.Long.fromBits=function(e,t){return new goog.math.Long(e,t)},goog.math.Long.fromString=function(e,t){if(0==e.length)throw Error("number format error: empty string");var n=t||10;if(2>n||n>36)throw Error("radix out of range: "+n);if("-"==e.charAt(0))return goog.math.Long.fromString(e.substring(1),n).negate();if(e.indexOf("-")>=0)throw Error('number format error: interior "-" character: '+e);for(var a=goog.math.Long.fromNumber(Math.pow(n,8)),i=goog.math.Long.ZERO,o=0;o<e.length;o+=8){var s=Math.min(8,e.length-o),r=parseInt(e.substring(o,o+s),n);if(8>s){var l=goog.math.Long.fromNumber(Math.pow(n,s));i=i.multiply(l).add(goog.math.Long.fromNumber(r))}else i=i.multiply(a),i=i.add(goog.math.Long.fromNumber(r))}return i},goog.math.Long.TWO_PWR_16_DBL_=65536,goog.math.Long.TWO_PWR_24_DBL_=1<<24,goog.math.Long.TWO_PWR_32_DBL_=goog.math.Long.TWO_PWR_16_DBL_*goog.math.Long.TWO_PWR_16_DBL_,goog.math.Long.TWO_PWR_31_DBL_=goog.math.Long.TWO_PWR_32_DBL_/2,goog.math.Long.TWO_PWR_48_DBL_=goog.math.Long.TWO_PWR_32_DBL_*goog.math.Long.TWO_PWR_16_DBL_,goog.math.Long.TWO_PWR_64_DBL_=goog.math.Long.TWO_PWR_32_DBL_*goog.math.Long.TWO_PWR_32_DBL_,goog.math.Long.TWO_PWR_63_DBL_=goog.math.Long.TWO_PWR_64_DBL_/2,goog.math.Long.ZERO=goog.math.Long.fromInt(0),goog.math.Long.ONE=goog.math.Long.fromInt(1),goog.math.Long.NEG_ONE=goog.math.Long.fromInt(-1),goog.math.Long.MAX_VALUE=goog.math.Long.fromBits(-1,2147483647),goog.math.Long.MIN_VALUE=goog.math.Long.fromBits(0,-2147483648),goog.math.Long.TWO_PWR_24_=goog.math.Long.fromInt(1<<24),goog.math.Long.prototype.toInt=function(){return this.low_},goog.math.Long.prototype.toNumber=function(){return this.high_*goog.math.Long.TWO_PWR_32_DBL_+this.getLowBitsUnsigned()},goog.math.Long.prototype.toString=function(e){var t=e||10;if(2>t||t>36)throw Error("radix out of range: "+t);if(this.isZero())return"0";if(this.isNegative()){if(this.equals(goog.math.Long.MIN_VALUE)){var n=goog.math.Long.fromNumber(t),a=this.div(n),i=a.multiply(n).subtract(this);return a.toString(t)+i.toInt().toString(t)}return"-"+this.negate().toString(t)}for(var o=goog.math.Long.fromNumber(Math.pow(t,6)),i=this,s="";;){var r=i.div(o),l=i.subtract(r.multiply(o)).toInt(),c=l.toString(t);if(i=r,i.isZero())return c+s;for(;c.length<6;)c="0"+c;s=""+c+s}},goog.math.Long.prototype.getHighBits=function(){return this.high_},goog.math.Long.prototype.getLowBits=function(){return this.low_},goog.math.Long.prototype.getLowBitsUnsigned=function(){return this.low_>=0?this.low_:goog.math.Long.TWO_PWR_32_DBL_+this.low_},goog.math.Long.prototype.getNumBitsAbs=function(){if(this.isNegative())return this.equals(goog.math.Long.MIN_VALUE)?64:this.negate().getNumBitsAbs();for(var e=0!=this.high_?this.high_:this.low_,t=31;t>0&&0==(e&1<<t);t--);return 0!=this.high_?t+33:t+1},goog.math.Long.prototype.isZero=function(){return 0==this.high_&&0==this.low_},goog.math.Long.prototype.isNegative=function(){return this.high_<0},goog.math.Long.prototype.isOdd=function(){return 1==(1&this.low_)},goog.math.Long.prototype.equals=function(e){return this.high_==e.high_&&this.low_==e.low_},goog.math.Long.prototype.notEquals=function(e){return this.high_!=e.high_||this.low_!=e.low_},goog.math.Long.prototype.lessThan=function(e){return this.compare(e)<0},goog.math.Long.prototype.lessThanOrEqual=function(e){return this.compare(e)<=0},goog.math.Long.prototype.greaterThan=function(e){return this.compare(e)>0},goog.math.Long.prototype.greaterThanOrEqual=function(e){return this.compare(e)>=0},goog.math.Long.prototype.compare=function(e){if(this.equals(e))return 0;var t=this.isNegative(),n=e.isNegative();return t&&!n?-1:!t&&n?1:this.subtract(e).isNegative()?-1:1},goog.math.Long.prototype.negate=function(){return this.equals(goog.math.Long.MIN_VALUE)?goog.math.Long.MIN_VALUE:this.not().add(goog.math.Long.ONE)},goog.math.Long.prototype.add=function(e){var t=this.high_>>>16,n=65535&this.high_,a=this.low_>>>16,i=65535&this.low_,o=e.high_>>>16,s=65535&e.high_,r=e.low_>>>16,l=65535&e.low_,c=0,d=0,u=0,p=0;return p+=i+l,u+=p>>>16,p&=65535,u+=a+r,d+=u>>>16,u&=65535,d+=n+s,c+=d>>>16,d&=65535,c+=t+o,c&=65535,goog.math.Long.fromBits(u<<16|p,c<<16|d)},goog.math.Long.prototype.subtract=function(e){return this.add(e.negate())},goog.math.Long.prototype.multiply=function(e){if(this.isZero())return goog.math.Long.ZERO;if(e.isZero())return goog.math.Long.ZERO;if(this.equals(goog.math.Long.MIN_VALUE))return e.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO;if(e.equals(goog.math.Long.MIN_VALUE))return this.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO;if(this.isNegative())return e.isNegative()?this.negate().multiply(e.negate()):this.negate().multiply(e).negate();if(e.isNegative())return this.multiply(e.negate()).negate();if(this.lessThan(goog.math.Long.TWO_PWR_24_)&&e.lessThan(goog.math.Long.TWO_PWR_24_))return goog.math.Long.fromNumber(this.toNumber()*e.toNumber());var t=this.high_>>>16,n=65535&this.high_,a=this.low_>>>16,i=65535&this.low_,o=e.high_>>>16,s=65535&e.high_,r=e.low_>>>16,l=65535&e.low_,c=0,d=0,u=0,p=0;return p+=i*l,u+=p>>>16,p&=65535,u+=a*l,d+=u>>>16,u&=65535,u+=i*r,d+=u>>>16,u&=65535,d+=n*l,c+=d>>>16,d&=65535,d+=a*r,c+=d>>>16,d&=65535,d+=i*s,c+=d>>>16,d&=65535,c+=t*l+n*r+a*s+i*o,c&=65535,goog.math.Long.fromBits(u<<16|p,c<<16|d)},goog.math.Long.prototype.div=function(e){if(e.isZero())throw Error("division by zero");if(this.isZero())return goog.math.Long.ZERO;if(this.equals(goog.math.Long.MIN_VALUE)){if(e.equals(goog.math.Long.ONE)||e.equals(goog.math.Long.NEG_ONE))return goog.math.Long.MIN_VALUE;if(e.equals(goog.math.Long.MIN_VALUE))return goog.math.Long.ONE;var t=this.shiftRight(1),n=t.div(e).shiftLeft(1);if(n.equals(goog.math.Long.ZERO))return e.isNegative()?goog.math.Long.ONE:goog.math.Long.NEG_ONE;var a=this.subtract(e.multiply(n)),i=n.add(a.div(e));return i}if(e.equals(goog.math.Long.MIN_VALUE))return goog.math.Long.ZERO;if(this.isNegative())return e.isNegative()?this.negate().div(e.negate()):this.negate().div(e).negate();if(e.isNegative())return this.div(e.negate()).negate();for(var o=goog.math.Long.ZERO,a=this;a.greaterThanOrEqual(e);){for(var n=Math.max(1,Math.floor(a.toNumber()/e.toNumber())),s=Math.ceil(Math.log(n)/Math.LN2),r=48>=s?1:Math.pow(2,s-48),l=goog.math.Long.fromNumber(n),c=l.multiply(e);c.isNegative()||c.greaterThan(a);)n-=r,l=goog.math.Long.fromNumber(n),c=l.multiply(e);l.isZero()&&(l=goog.math.Long.ONE),o=o.add(l),a=a.subtract(c)}return o},goog.math.Long.prototype.modulo=function(e){return this.subtract(this.div(e).multiply(e))},goog.math.Long.prototype.not=function(){return goog.math.Long.fromBits(~this.low_,~this.high_)},goog.math.Long.prototype.and=function(e){return goog.math.Long.fromBits(this.low_&e.low_,this.high_&e.high_)},goog.math.Long.prototype.or=function(e){return goog.math.Long.fromBits(this.low_|e.low_,this.high_|e.high_)},goog.math.Long.prototype.xor=function(e){return goog.math.Long.fromBits(this.low_^e.low_,this.high_^e.high_)},goog.math.Long.prototype.shiftLeft=function(e){if(e&=63,0==e)return this;var t=this.low_;if(32>e){var n=this.high_;return goog.math.Long.fromBits(t<<e,n<<e|t>>>32-e)}return goog.math.Long.fromBits(0,t<<e-32)},goog.math.Long.prototype.shiftRight=function(e){if(e&=63,0==e)return this;var t=this.high_;if(32>e){var n=this.low_;return goog.math.Long.fromBits(n>>>e|t<<32-e,t>>e)}return goog.math.Long.fromBits(t>>e-32,t>=0?0:-1)},goog.math.Long.prototype.shiftRightUnsigned=function(e){if(e&=63,0==e)return this;var t=this.high_;if(32>e){var n=this.low_;return goog.math.Long.fromBits(n>>>e|t<<32-e,t>>>e)}return 32==e?goog.math.Long.fromBits(t,0):goog.math.Long.fromBits(t>>>e-32,0)},bpe=0,mask=0,radix=mask+1,digitsStr="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_=!@#$%^&*()[]{}|;:,.<>/?`~ \\'\"+-";for(bpe=0;1<<bpe+1>1<<bpe;bpe++);bpe>>=1,mask=(1<<bpe)-1,radix=mask+1,one=int2bigInt(1,1,1),t=new Array(0),ss=t,s0=t,s1=t,s2=t,s3=t,s4=t,s5=t,s6=t,s7=t,T=t,sa=t,mr_x1=t,mr_r=t,mr_a=t,eg_v=t,eg_u=t,eg_A=t,eg_B=t,eg_C=t,eg_D=t,md_q1=t,md_q2=t,md_q3=t,md_r=t,md_r1=t,md_r2=t,md_tt=t,primes=t,pows=t,s_i=t,s_i2=t,s_R=t,s_rm=t,s_q=t,s_n1=t,s_a=t,s_r2=t,s_n=t,s_b=t,s_d=t,s_x1=t,s_x2=t,s_aa=t,rpprb=t,function(){function e(e){return JSON.parse(JSON.stringify(e))}function t(e,t,n,a,o){for(i=0;o>i;++i)e[t+i]=n[a+i]}function n(e){var t,n=[],a=e.length;for(t=0;a>t;++t)n.push(e[t]);return n}function a(t,n){var a=[];a.push(e(t));var i;for(i=0;n>i;++i)a.push(e(t));return a.push(0),a}function o(e,t){var n,a=[];for(n=0;t>n;++n)a.push(e);return a.push(0),a}function s(e,t,n,a,i){var o;for(o=0;i>o;o++)e[t+o]=n[a+o]}function r(e,t,n,a){var i;for(i=0;a>i;++i)e[t+i]=n}function l(e,t,n,a){var i,o="";for(i=0;a>i;++i)o+=String.fromCharCode(e[t+i]);return n==o?0:1}function c(e,t){var n,a=[];for(n=0;e>n;++n)a.push(t);return a}function d(t,n){var a,i=[];for(a=0;t>a;++a)i.push(e(n));return i}function u(t,n){var a;for(a=t.length-1;a>=0;--a)n=e(c(t[a],n));return n}function p(e){if(!e)throw Error("assert :P")}var m=void 0,g=null,h=0,f=0,_=h,v=h,y=0,b=0;window.WebPDecoder=function(){function w(e){return e==Wn||e==Gn||e==Kn||e==Yn}function k(e){return S(e,1)}function $(e,t){var n=1+((e.la-1)*t>>8),a=n<<8,i=h;for(e.Z>=a?(i=1,e.la-=n,e.Z-=a):(i=0,e.la=n);128>e.la;)e.Z<<=1,e.la<<=1,8==++e.gc&&(e.gc=0,e.bc&&(e.Z+=e.qa[e.Ia++],e.bc--));return i}function C(e,t,n,a){a-=n,a>=2?(e.Z=t[n+0]<<8|t[n+1],e.qa=t,e.Ia=n+2,e.bc=a-2):(e.Z=0,e.qa=g,e.bc=0),e.la=255,e.gc=0}function S(e,t){for(var n=0,a=h,a=t-1;a>=0;a--)n|=$(e,128)<<a;return n}function M(e,t){var n=S(e,t);return k(e)?-n:n}function x(e,t,n,a){var i=b;for(p(e!=g),p(t!=g),p(4294967288>a),e.qa=t,e.Ia=n,e.ya=a,e.T=0,e.Q=0,e.g=0,e.L=0,i=e.fa=0;4>i&&i<e.ya;++i)e.T|=e.qa[e.Ia+e.Q]<<8*i,++e.Q}function I(e){for(;8<=e.g&&e.Q<e.ya;)e.T>>>=8,e.T+=e.qa[e.Ia+e.Q]<<24>>>0,++e.Q,e.g-=8}function A(e){8<=e.g&&I(e),e.Q==e.ya&&32==e.g&&(e.L=1)}function E(e,t){var n=0;if(p(t>=0),!e.L&&ha>t){if(e.Q==e.ya&&32<=e.g+t&&(e.L=1,32<e.g+t))return n;n=e.T>>e.g&fa[t],e.g+=t,8<=e.g&&8<=e.g&&I(e)}else e.fa=1;return n}function T(e){return e.Pa==e.gb}function D(e,t){return p(e!=g),0==t?0:(e.gb=2*t-1,e.Y=d(e.gb,za),e.Y==g?0:(e.Y[0].s=-1,e.Pa=1))}function P(e){e!=g&&(e.Y=g,e.Y=g,e.gb=0,e.Pa=0)}function F(e,t,n,a){for(var i=e.Y,o=0,s=+e.gb;0<a--;){if(o>=s)return 0;if(0>i[o].s){if(T(e))return 0;var r=e,l=r.Y,c=+r.Pa;i[o].s=c-o,r.Pa+=2,l[c+0].s=-1,l[c+1].s=-1}else if(0==i[o].s)return 0;o+=i[o].s+(n>>a&1)}if(0>i[o].s)i[o].s=0;else if(0!=i[o].s)return 0;return i[o].kc=t,1}function R(e,t,n){var a=h,i=0,o=0;for(p(e!=g),p(t!=g),a=0;n>a;++a)0<t[a]&&(++i,o=a);if(!D(e,i))return 0;if(1==i)return 0>o||o>=n?(P(e),0):F(e,o,0,0);if(i=0,o=c(n,h),o==g)return(i=i&&T(e))||P(e),i;var s=h,s=h,a=c(Ma+1,0),r=h,l=c(Ma+1,0),d=0;for(p(t!=g),p(n>0),p(o!=g),s=0;n>s;++s)t[s]>d&&(d=t[s]);if(d>Ma)a=0;else{for(s=0;n>s;++s)++a[t[s]];for(r=a[0]=0,l[0]=-1,s=1;d>=s;++s)r=r+a[s-1]<<1,l[s]=r;for(s=0;n>s;++s)o[s]=0<t[s]?l[t[s]]++:Ga;a=1}if(!a)return(i=i&&T(e))||P(e),i;for(a=0;n>a;++a)if(0<t[a]&&!F(e,a,o[a],t[a]))return(i=i&&T(e))||P(e),i;return(i=T(e))||P(e),i}function N(e,t,n,a,i,o,s){for(var r=h,r=0;s>r;++r)i[o+r]=e[t+r]+n[a+r]&255}function U(n,a,i){var o=n.P.l;if(!(i=0>a||0>i||a+i>n.P.v)&&(i=0==a)){e:{var s=n.Ga,r=n.G,l=n.ub;i=n.P.l;var d=n.P.v,u=n.Xb,m=[g],f=g,_=d*i,v=g,y=g,y="WEBP_FILTER_TYPE",b=h,m=h,w=0,k=h;if(p(i>0&&d>0&&o>=i),p(s!=g&&u!=g),Fa>=l)i=0;else if(k=s[r+0]>>0&3,y=s[r+0]>>2&3,b=s[r+0]>>4&3,m=s[r+0]>>6&3,Ra>k||k>Na||y>=Ri||b>Ua||0!=m)i=0;else{if(k==Ra)w=l>=_,m=s,f=r+Fa;else{if(m=c(_,0),f=0,m==g){i=0;break e}var w=r+Fa,l=l-Fa,r=m,v=e(da),$=0,C=Jt();C==g?w=0:(C.l=i,C.v=d,C.N=v,vt(On),v.put=In,v.Mb=xn,v.Pb=An,v.ka=g,v.ka=r,v.fd=0,v.width=i,v.height=d,C.a=ea,x(C.o,s,w,l),C.Wa=Ai,en(i,d,1,C,g)&&tn(C,i)&&(C.Wa=Ii,$=Zt(C,C.V,C.Ha,C.l,C.v,nn)),C!=g&&Qt(C),w=$)}if(w){for(s=Ni[y],s!=g?(v=c(_,0),y=0,v==g&&(w=0,k!=Ra&&(f=m=g)),s(m,f,i,d,1,i,v,y),_=v,k=y):(_=m,k=f),s=0;0<d--;)t(u,s,_,k,i),k+=i,s+=o;b==Ua&&(w=m==g||0>=f||0>=i?0:1)}i=w}}i=!i}return i?g:0==a?n.Xb:+a*o}function O(e){var t=e.width,n=e.height,a=e.J;if(0>=t||0>=n||!(a>=Bn&&Jn>a))return na;if(!e.Fc&&e.Jb==g){var i=g,o=0,s=0,r=0,l=0,i=y,d=t*Ui[a],u=d*n;if(Zn>a||(o=parseInt((t+1)/2,10),r=o*parseInt((n+1)/2,10),a==Xn&&(s=t,l=s*n)),i=u+2*r+l,i!=i)return na;if(i=c(i,205),i==g)return ta;e.Jb=i,e.jc=g,Zn>a?(t=e.c.RGBA,t.ma=i,t.Sa=g,t.f=d,t.size=u):(t=e.c.Va,t.y=i,t.D=g,t.F=d,t.Wc=u,t.c=i,t.B=g+u,t.nb=o,t.Rc=r,t.S=i,t.C=g+u+r,t.rb=o,t.Uc=r,a==Xn&&(t.p=i,t.q=g+u+2*r),t.Wb=l,t.Fa=s)}return a=1,o=e.J,s=e.width,r=e.height,o>=Bn&&Jn>o?Zn>o?(e=e.c.RGBA,a&=e.f*r<=e.size,a&=e.f>=s*Ui[o],a&=e.ma!=g):(e=e.c.Va,l=e.nb*parseInt((r+1)/2,10),d=e.rb*parseInt((r+1)/2,10),u=e.Fa*r,a&=e.F*r<=e.Wc,a&=l<=e.Rc,a&=d<=e.Uc,a&=u<=e.Wb,a&=e.F>=s,a&=e.nb>=parseInt((s+1)/2,10),a&=e.rb>=parseInt((s+1)/2,10),a&=e.y!=g,a&=e.c!=g,a&=e.S!=g,o==Xn&&(a&=e.Fa>=s,a&=u<=e.Wb,a&=e.p!=g)):a=0,a?ea:na}function B(e,t,n,a){if(a==g||0>=e||0>=t)return na;if(n!=g){if(n.Ua){var i=n.wc,o=n.vc,s=-2&n.t,r=-2&n.k;if(0>s||0>r||0>=i||0>=o||s+i>e||r+o>t)return na;e=i,t=o}if(n.I){if(0>=n.Ba||0>=n.Aa)return na;e=n.Ba,t=n.Aa}}return a.width=e,a.height=t,O(a)}function L(e){return-256&e?0>e?0:255:e}function q(e,t,n,a){var i,o=c(16,0);i=0;var s;for(s=0;4>s;++s){var r=e[t+0]+e[t+8],l=e[t+0]-e[t+8],d=(e[t+4]*ro>>16)-(e[t+12]*so>>16),u=(e[t+4]*so>>16)+(e[t+12]*ro>>16);o[i+0]=r+u,o[i+1]=l+d,o[i+2]=l-d,o[i+3]=r-u,i+=4,t++}for(s=i=0;4>s;++s)e=o[i+0]+4,r=e+o[i+8],l=e-o[i+8],d=(o[i+4]*ro>>16)-(o[i+12]*so>>16),u=(o[i+4]*so>>16)+(o[i+12]*ro>>16),n[a+0+0*pi]=L(n[a+0+0*pi]+(r+u>>3)),n[a+1+0*pi]=L(n[a+1+0*pi]+(l+d>>3)),n[a+2+0*pi]=L(n[a+2+0*pi]+(l-d>>3)),n[a+3+0*pi]=L(n[a+3+0*pi]+(r-u>>3)),i++,a+=pi}function H(e,t,n,a,i){q(e,t,n,a),i&&q(e,t+16,n,a+4)}function V(e,t,n,a){Oi(e,t+0,n,a+0,1),Oi(e,t+32,n,a+4*pi,1)}function z(e,t,n,a){e=e[t+0]+4;var i;for(i=0;4>i;++i)for(t=0;4>t;++t)n[a+t+i*pi]=L(n[a+t+i*pi]+(e>>3))}function W(e,t,n,a){e[t+0]&&z(e,t+0,n,a+0),e[t+16]&&z(e,t+16,n,a+4),e[t+32]&&z(e,t+32,n,a+4*pi),e[t+48]&&z(e,t+48,n,a+4*pi+4)}function G(e,t,n){var a,i=t-pi,o=io,s=255-e[i-1];for(a=0;n>a;++a){var r,l=o,c=s+e[t-1];for(r=0;n>r;++r)e[t+r]=l[c+e[i+r]];t+=pi}}function K(e,t,n){var a;for(a=0;16>a;++a)for(i=0;16>i;++i)t[n+a*pi+i]=e}function Y(e,t,n){return e+2*t+n+2>>2}function Z(e,t,n){var a,i;for(a=0;8>a;++a)for(i=0;8>i;++i)t[n+i+a*pi]=e}function X(e,t,n){var a=e[t-n],i=e[t+0],o=3*(i-a)+no[1020+e[t-2*n]-e[t+n]],s=ao[112+(o+4>>3)];e[t-n]=io[255+a+ao[112+(o+3>>3)]],e[t+0]=io[255+i-s]}function J(e,t,n,a){var i=e[t+0],o=e[t+n];return eo[255+e[t-2*n]-e[t-n]]>a||eo[255+o-i]>a}function Q(e,t,n,a,i){var o=e[t-3*n],s=e[t-2*n],r=e[t-n],l=e[t+0],c=e[t+n],d=e[t+2*n],u=e[t+3*n];return 2*eo[255+r-l]+to[255+s-c]>a?0:eo[255+e[t-4*n]-o]<=i&&eo[255+o-s]<=i&&eo[255+s-r]<=i&&eo[255+u-d]<=i&&eo[255+d-c]<=i&&eo[255+c-l]<=i}function et(e,t,n,a){var i;for(i=0;16>i;++i)2*eo[255+e[t+i-n]-e[t+i+0]]+to[255+e[t+i-2*n]-e[t+i+n]]<=a&&X(e,t+i,n)}function tt(e,t,n,a){var i;for(i=0;16>i;++i)2*eo[255+e[t+i*n-1]-e[t+i*n+0]]+to[255+e[t+i*n-2]-e[t+i*n+1]]<=a&&X(e,t+i*n,1)}function nt(e,t,n,a){var i;for(i=3;i>0;--i)t+=4*n,et(e,t+0,n,a)}function at(e,t,n,a){var i;for(i=3;i>0;--i)t+=4,tt(e,t+0,n,a)}function it(e,t,n,a,i,o,s,r){for(;0<i--;){if(Q(e,t+0,n,o,s))if(J(e,t+0,n,r))X(e,t+0,n);else{var l=e,c=t+0,d=n,u=l[c-2*d],p=l[c-d],m=l[c+0],g=l[c+d],h=l[c+2*d],f=no[1020+3*(m-p)+no[1020+u-g]],_=27*f+63>>7,v=18*f+63>>7,f=9*f+63>>7;l[c-3*d]=io[255+l[c-3*d]+f],l[c-2*d]=io[255+u+v],l[c-d]=io[255+p+_],l[c+0]=io[255+m-_],l[c+d]=io[255+g-v],l[c+2*d]=io[255+h-f]}t+=a}}function ot(e,t,n,a,i,o,s,r){for(;0<i--;){if(Q(e,t+0,n,o,s))if(J(e,t+0,n,r))X(e,t+0,n);else{var l=e,c=t+0,d=n,u=l[c-d],p=l[c+0],m=l[c+d],g=3*(p-u),h=ao[112+(g+4>>3)],g=ao[112+(g+3>>3)],f=h+1>>1;l[c-2*d]=io[255+l[c-2*d]+f],l[c-d]=io[255+u+g],l[c+0]=io[255+p-h],l[c+d]=io[255+m-f]}t+=a}}function st(e,t,n,a,i,o){it(e,t+0,n,1,16,a,i,o)}function rt(e,t,n,a,i,o){it(e,t+0,1,n,16,a,i,o)}function lt(e,t,n,a,i,o){var s;for(s=3;s>0;--s)t+=4*n,ot(e,t+0,n,1,16,a,i,o)}function ct(e,t,n,a,i,o){var s;for(s=3;s>0;--s)t+=4,ot(e,t+0,1,n,16,a,i,o)}function dt(e,t,n,a,i,o,s,r){it(e,t,i,1,8,o,s,r),it(n,a,i,1,8,o,s,r)}function ut(e,t,n,a,i,o,s,r){it(e,t,1,i,8,o,s,r),it(n,a,1,i,8,o,s,r)}function pt(e,t,n,a,i,o,s,r){ot(e,t+4*i,i,1,8,o,s,r),ot(n,a+4*i,i,1,8,o,s,r)}function mt(e,t,n,a,i,o,s,r){ot(e,t+4,1,i,8,o,s,r),ot(n,a+4,1,i,8,o,s,r)}function gt(e,t){return t==Za?0==e.i?0==e.d?ai:ni:0==e.d?ti:Za:t}function ht(e,t,n,a){for(i=0;4>i;++i)e[t+i]=n[a+i]}function ft(e,t){return 0>e?0:e>t?t:e}function _t(e){e.a="VP8_STATUS_OK",e.xc="OK"}function vt(e){e>>>8!=On>>>8&&alert("mismatch error")}function yt(e,t,n){return e.a==ea&&(e.a=t,e.xc=n,e.za=0),alert(t+": "+n),0}function bt(t,n){var a=[0],o=f,s=[b],r=e(_i),l=e(vi),c=e(ma),s="VP8StatusCode",r=e(pa);if(t==g)return alert("(dec == null)"),0;if(_t(t),n==g)return yt(t,"VP8_STATUS_INVALID_PARAM","null VP8Io passed to VP8GetHeaders()");if(r.data=n.data,r.b=n.b,r.e=n.e,r.b=[r.b],r.e=[r.e],r=[r],s=Pn(r),s!=ea)return yt(t,s,"Incorrect/incomplete header.");if(r=r[0],r.b=r.b[0],r.e=r.e[0],r.ia)return yt(t,aa,"Unexpected lossless format encountered.");if(t.Ga==g&&(p(0==t.ub),t.Ga=r.$,t.G=r.G,t.ub=r.pa),o=r.data,a=r.b+r.offset,s=r.e-r.offset,p(r.e>=r.offset),4>s[0])return yt(t,ra,"Truncated header.");if(c=o[a+0]|o[a+1]<<8|o[a+2]<<16,r=t.Ac,r.fb=!(1&c)+0,r.Jc=c>>1&7,r.Nc=c>>4&1,r.Ra=c>>5,3<r.Jc)return yt(t,"VP8_STATUS_BITSTREAM_ERROR","Incorrect keyframe parameters.");if(!r.Nc)return yt(t,"VP8_STATUS_UNSUPPORTED_FEATURE","Frame not displayable.");if(a+=3,s-=3,l=t.P,r.fb){if(7>s)return yt(t,"VP8_STATUS_NOT_ENOUGH_DATA","cannot parse picture header");if(!(s>=3&&157==o[a+0]&&1==o[a+1]&&42==o[a+2]))return yt(t,"VP8_STATUS_BITSTREAM_ERROR","Bad code word");for(l.l=16383&(o[a+4]<<8|o[a+3]),l.gd=o[a+4]>>6,l.v=16383&(o[a+6]<<8|o[a+5]),l.hd=o[a+6]>>6,a+=7,s-=7,t.Ma=l.l+15>>4,t.hb=l.v+15>>4,n.width=l.l,n.height=l.v,n.I=0,n.Ua=0,n.k=0,n.t=0,n.Ka=n.width,n.K=n.height,n.m=n.width,n.h=n.height,c=t.R,i=0;i<c.Ta.length;++i)c.Ta[i]=255;for(c.z=e(bo),c=t.Ca,p(c!=g),c.pb=0,c.ob=0,c.tb=1,i=0;i<c.Kb.length;++i)c.Kb[i]=0;for(i=0;i<c.Cb.length;++i)c.Cb[i]=0;t.Lb=0}if(r.Ra>s)return yt(t,"VP8_STATUS_NOT_ENOUGH_DATA","bad partition length");c=t.o,C(c,o,a,a+r.Ra),a+=r.Ra,s-=r.Ra,r.fb&&(l.uc=k(c),l.$c=k(c));var l=c,d=t.Ca,u=t.R;if(p(l!=g),p(d!=g),d.pb=k(l),d.pb){if(d.ob=k(l),k(l)){var m;for(d.tb=k(l),m=0;oi>m;++m)d.Kb[m]=k(l)?M(l,7):0;for(m=0;oi>m;++m)d.Cb[m]=k(l)?M(l,6):0}if(d.ob)for(m=0;ii>m;++m)u.Ta[m]=k(l)?S(l,8):255}else d.ob=0;if(l.Ab)return yt(t,"VP8_STATUS_BITSTREAM_ERROR","cannot parse segment header");if(l=c,d=t.ga,d.Oc=k(l),d.Fb=S(l,6),d.kb=S(l,3),d.oc=k(l),d.oc&&k(l)){for(u=0;si>u;++u)k(l)&&(d.Lc[u]=M(l,6));for(u=0;ri>u;++u)k(l)&&(d.Gc[u]=M(l,6))}if(t.A=0==d.Fb?0:d.Oc?1:2,0<t.A)if(t.Ca.pb)for(u=0;oi>u;++u)m=t.Ca.Cb[u],t.Ca.tb||(m+=d.Fb),t.Zb[u]=m;else t.Zb[0]=d.Fb;if(l.Ab)return yt(t,"VP8_STATUS_BITSTREAM_ERROR","cannot parse filter header");var l=o,_=a,d=_,s=_+s;m=0;var v=h,y=h;if(t.Hb=1<<S(t.o,2),v=t.Hb-1,u=l,m=_+3*v,m>s)s="VP8_STATUS_NOT_ENOUGH_DATA";else{for(y=0;v>y;++y){var _=u,w=m+(l[d+0]|l[d+1]<<8|l[d+2]<<16);w>s&&(_=l),C(t.ic[+y],u,m,w),u=_,m=w,d+=3}C(t.ic[+v],u,m,s),s=s>m?"VP8_STATUS_OK":"VP8_STATUS_SUSPENDED"}if("VP8_STATUS_OK"!=s)return yt(t,"VP8_STATUS_BITSTREAM_ERROR","cannot parse partitions");for(v=t.o,s=S(v,7),l=k(v)?M(v,4):0,d=k(v)?M(v,4):0,u=k(v)?M(v,4):0,m=k(v)?M(v,4):0,v=k(v)?M(v,4):0,y=t.Ca,_=h,_=0;oi>_;++_){if(w=h,y.pb)w=y.Kb[_],y.tb||(w+=s);else{if(_>0){t.yb[_]=t.yb[0];continue}w=s}var x=t.yb[_];x.sc[0]=_o[ft(w+l,127)],x.sc[1]=vo[ft(w+0,127)],x.sb[0]=2*_o[ft(w+d,127)],x.sb[1]=101581*vo[ft(w+u,127)]>>16,8>x.sb[1]&&(x.sb[1]=8),x.qc[0]=_o[ft(w+m,117)],x.qc[1]=vo[ft(w+v,127)]}if(!r.fb)return yt(t,ia,"Not a key frame.");for(t.Zc=259,k(c),s=t.R,l=0;li>l;++l)for(d=0;ci>d;++d)for(u=0;di>u;++u)for(m=0;ui>m;++m)$(c,ko[l][d][u][m])&&(s.z[l][d][u][m]=S(c,8));if(t.pc=k(c),t.pc&&(t.Pc=S(c,8)),t.P.uc){if(a-=8,c=b,8>r.Ra||1!=o[a+8-1])return yt(t,aa,"RIFF: Inconsistent extra information.");c=o[a+0]<<0|o[a+1]<<8|o[a+2]<<16,t.fc=c,t.dd=g,t.cd=o[a+3]}return t.za=1}function wt(e,t,n,a,i,o){var s=t[i][n];if(!$(e,s[0]))return 0;for(;;){if(++i,$(e,s[1])){var r;if($(e,s[2])){if($(e,s[3]))if($(e,s[6])){r=f,n=$(e,s[8]),s=$(e,s[9+n]),s=2*n+s,n=0,r=Co[s];var l;for(l=0;l<r.length-1;++l)n+=n+$(e,r[l]);n+=3+(8<<s)}else $(e,s[7])?(n=7+2*$(e,165),n+=$(e,145)):n=5+$(e,159);else n=$(e,s[4])?3+$(e,s[5]):2;s=t[$o[i]][2]}else s=t[$o[i]][1],n=1;if(r=So[i-1],o[o[o.length-1]+r]=($(e,128)?-n:n)*a[(r>0)+0],16==i||!$(e,s[0]))return i}else s=t[$o[i]][0];if(16==i)return 16}}function kt(e,t){return((16777216*e[0]+65536*e[1]+256*e[2]+1*e[3])*Io&4278190080)>>t}function $t(e,s){var l=0;if(e==g)return 0;if(s==g)return yt(e,"VP8_STATUS_INVALID_PARAM","NULL VP8Io parameter in VP8Decode().");if(!e.za&&!bt(e,s))return 0;p(e.za);var d;if(s.Mb&&!s.Mb(s))yt(e,sa,"Frame setup failed"),d=e.a;else{s.Za&&(e.A=0);var u=mo[e.A];2==e.A?(e.lb=0,e.mb=0):(e.lb=s.t-u>>4,e.mb=s.k-u>>4,0>e.lb&&(e.lb=0),0>e.mb&&(e.mb=0)),e.Ya=s.K+15+u>>4,e.wb=s.Ka+15+u>>4,e.wb>e.Ma&&(e.wb=e.Ma),e.Ya>e.hb&&(e.Ya=e.hb),d=ea}if(l=d==ea){if(l){var _;e:{if(e.Ja=0,e.qb){var v=e.rc;if(!WebPWorkerReset(v)){_=yt(e,ta,"thread initialization failed.");break e}v.Qd=e,v.Rd=e.oa.N,v.Ud=FinishRow,e.jb=0<e.A?go:go-1}else e.jb=ho;_=1}var y;if(!(y=!_)){var b;e:{var w=e.jb,k=e.Ma,C=4*k,S=32*k,M=k+1,x=0<e.A?k*(e.qb?2:1):0,I=mi,A=S*(16*w+parseInt(3*mo[e.A]/2,10)),E=e.Ga!=g?e.P.l*e.P.v:0,T=C+S+M+x+I+384+A+E+po;if(T!=T)b=0;else{if(T>e.Gb){if(e.ib=0,e.Gb=0,e.ib==g){b=yt(e,"VP8_STATUS_OUT_OF_MEMORY","no memory during frame initialization.");break e}e.Gb=T}e.dc=205,e.Xc=o(205,16*k),e.Sc=o(205,8*k),e.Vc=o(205,8*k),e.M=x?a(ki,x):g,e.Sd=x?0:g,e.oa.ha=0,e.oa.M=e.M,p(0==(I&po)),e.Ea=o(205,1*I),e.z=-12851,e.H=16*k,e.r=8*k;var D=mo[e.A],P=D*e.H,F=D/2*e.r;e.ca=c(A,205),e.da=+P,e.aa=e.ca,e.ba=e.da+16*w*e.H+F,e.ra=e.aa,e.sa=e.ba+8*w*e.r+F,e.Xb=E?c(E,f):g,e.La=a($i,M),e.dc=o(Za,C),b=1}}y=!b}if(y)l=0;else{if(s.width=e.P.l,s.height=e.P.v,s.w=0,s.y=e.ca,s.D=e.da,s.c=e.aa,s.B=e.ba,s.S=e.ra,s.C=e.sa,s.F=e.H,s.Da=e.r,s.p=g,s.q=g,!oo){var R;for(R=-255;255>=R;++R)eo[255+R]=0>R?-R:R,to[255+R]=eo[255+R]>>1;for(R=-1020;1020>=R;++R)no[1020+R]=-128>R?-128:R>127?127:R;for(R=-112;112>=R;++R)ao[112+R]=-16>R?-16:R>15?15:R;for(R=-255;510>=R;++R)io[255+R]=0>R?0:R>255?255:R;oo=1}Oi=H,Bi=V,Li=z,ji=W,qi=st,Hi=rt,Vi=dt,zi=ut,Wi=lt,Gi=ct,Ki=pt,Yi=mt,Zi=et,Xi=tt,Ji=nt,Qi=at,l=1}}if(l)e:{for(e.d=0;e.d<e.Ya;++e.d){var N=e.ic[e.d&e.Hb-1],O=e,B=O.La[0];for(B.X=0,B.ua=0,r(O.cc,0,Za,O.cc.length),O.W=(0<O.A&&O.d>=O.mb&&O.d<=O.Ya)+0,e.i=0;e.i<e.Ma;e.i++){var L,j=e,q=N,G=j.o,K=j.La[0],Y=j.La[1+j.i];j.Ca.ob&&(j.Lb=$(G,j.R.Ta[0])?2+$(G,j.R.Ta[2]):0+$(G,j.R.Ta[1])),Y.Nb=j.pc?$(G,j.Pc):0;var Z=j.dc;Z[Z.length-1]=0+4*j.i;var X=j.cc;if(j.wa=!$(G,145),j.wa)for(var J=j.Eb,Q=0,it=m,it=0;4>it;++it){var ot,ft=X[it];for(ot=0;4>ot;++ot){var _t=wo[Z[Z[Z.length-1]+ot]][ft],vt=0;do vt=yo[2*vt+$(G,_t[vt])];while(vt>0);ft=-vt,Z[Z[Z.length-1]+ot]=ft,J[Q]=ft,Q++}X[it]=ft}else{var ft=$(G,156)?$(G,128)?ei:Qa:$(G,163)?Ja:Xa;for(j.Eb[0]=ft,vt=0;4>vt;++vt)Z[vt+Z[Z.length-1]]=ft;for(vt=0;4>vt;++vt)X[vt]=ft}if(j.Tc=$(G,142)?$(G,114)?$(G,183)?ei:Qa:Ja:Xa,G.Ab)L=0;else{if(Y.Nb)K.X=Y.X=0,j.wa||(K.ua=Y.ua=0),j.ja=0,j.Oa=0;else{var $t=m,St=m,Mt=m,xt=Mo,It=j.yb[j.Lb],At=j.z,Et=j.La[0],Tt=c(4,0),Dt=c(4,0),Pt=c(4,0),Ft=c(4,0),Rt=0,Nt=0,Ut=m,Ot=m,Bt=m,At=o(0,384);if(j.wa)Mt=0,xt=j.R.z[3];else{var Lt=c(16,0),jt=Y.ua+Et.ua;Y.ua=Et.ua=(0<wt(q,j.R.z[1],jt,It.sb,0,Lt))+0;for(var Mt=1,xt=j.R.z[0],qt=Lt,Ht=At,Vt=c(16,h),zt=h,zt=0;4>zt;++zt){var Wt=qt[0+zt]+qt[12+zt],Gt=qt[4+zt]+qt[8+zt],Kt=qt[4+zt]-qt[8+zt],Yt=qt[0+zt]-qt[12+zt];Vt[0+zt]=Wt+Gt,Vt[8+zt]=Wt-Gt,Vt[4+zt]=Yt+Kt,Vt[12+zt]=Yt-Kt}for(zt=0;4>zt;++zt){var Zt=Ht[Ht.length-1],Xt=Vt[0+4*zt]+3,Wt=Xt+Vt[3+4*zt],Gt=Vt[1+4*zt]+Vt[2+4*zt],Kt=Vt[1+4*zt]-Vt[2+4*zt],Yt=Xt-Vt[3+4*zt];Ht[Zt+0]=Wt+Gt>>3,Ht[Zt+16]=Yt+Kt>>3,Ht[Zt+32]=Wt-Gt>>3,Ht[Zt+48]=Yt-Kt>>3,Ht[Ht.length-1]+=64}At[At.length-1]=0}for(Pt=n(xo[15&Y.X]),Ft=n(xo[15&Et.X]),Ot=0;4>Ot;++Ot){for(var Jt=Ft[Ot],Ut=0;4>Ut;++Ut){var jt=Jt+Pt[Ut],Qt=wt(q,xt,jt,It.sc,Mt,At);Pt[Ut]=Jt=(Qt>0)+0,Dt[Ut]=(0!=At[At[At.length-1]+0])+0,Tt[Ut]=(Qt>1)+0,At[At.length-1]+=16}Ft[Ot]=Jt,Nt|=kt(Dt,24-4*Ot),Rt|=kt(Tt,24-4*Ot)}for($t=kt(Pt,24),St=kt(Ft,24),Pt=n(xo[Y.X>>4]),Ft=n(xo[Et.X>>4]),Bt=0;4>Bt;Bt+=2){for(Ot=0;2>Ot;++Ot){for(Jt=Ft[Bt+Ot],Ut=0;2>Ut;++Ut)jt=Jt+Pt[Bt+Ut],Qt=wt(q,j.R.z[2],jt,It.qc,0,At),Pt[Bt+Ut]=Jt=(Qt>0)+0,Dt[2*Ot+Ut]=(0!=At[At[At.length-1]+0])+0,Tt[2*Ot+Ut]=(Qt>1)+0,At[At.length-1]+=16;
Ft[Bt+Ot]=Jt}Nt|=kt(Dt,8-2*Bt),Rt|=kt(Tt,8-2*Bt)}$t|=kt(Pt,20),St|=kt(Ft,20),Y.X=$t,Et.X=St,j.z=At,j.Oa=Rt+0,j.ja=Rt|Nt,Y.Nb=!j.ja+0}L=!q.Ab}if(!L){l=yt(e,"VP8_STATUS_NOT_ENOUGH_DATA","Premature end-of-file encountered."+e.i+" "+e.d);break e}var en=e,tn=en.Ea,nn=gi,an=en.Ea,on=hi,sn=en.Ea,rn=fi;if(0<en.i){for(var ln=m,ln=-1;16>ln;++ln)ht(tn,nn+ln*pi-4,tn,nn+ln*pi+12);for(ln=-1;8>ln;++ln)ht(an,on+ln*pi-4,an,on+ln*pi+4),ht(sn,rn+ln*pi-4,sn,rn+ln*pi+4)}else{for(ln=0;16>ln;++ln)tn[nn+ln*pi-1]=129;for(ln=0;8>ln;++ln)an[on+ln*pi-1]=129,sn[rn+ln*pi-1]=129;0<en.d&&(tn[nn-1-pi]=an[on-1-pi]=sn[rn-1-pi]=129)}var cn=en.Xc,dn=16*+en.i,un=en.Sc,pn=8*+en.i,mn=en.Vc,gn=8*+en.i,hn=en.z,fn=m;if(0<en.d)t(tn,nn-pi,cn,dn,16),t(an,on-pi,un,pn,8),t(sn,rn-pi,mn,gn,8);else if(0==en.i){for(i=0;21>i;++i)tn[nn-pi-1+i]=127;for(i=0;9>i;++i)an[on-pi-1+i]=127;for(i=0;9>i;++i)sn[rn-pi-1+i]=127}if(en.wa){var _n=nn-pi+16;0<en.d&&(en.i>=en.Ma-1?tn[_n+0]=tn[_n+1]=tn[_n+2]=tn[_n+3]=cn[dn+15]:t(tn,_n+0,cn,dn+16,4));for(var vn=0;4>vn;++vn)tn[vn+_n+4*pi]=tn[vn+_n+4*pi]=tn[vn+_n+8*pi]=tn[vn+_n+12*pi]=tn[vn+_n+0];for(fn=0;16>fn;fn++){var yn=tn,bn=nn+fo[fn];lo[en.Eb[fn]](yn,bn),en.Oa&1<<fn?Oi(hn,16*+fn,yn,bn,0):en.ja&1<<fn&&Li(hn,16*+fn,yn,bn)}}else{var wn=gt(en,en.Eb[0]);if(co[wn](tn,nn),en.ja)for(fn=0;16>fn;fn++)yn=tn,bn=nn+fo[fn],en.Oa&1<<fn?Oi(hn,16*+fn,yn,bn,0):en.ja&1<<fn&&Li(hn,16*+fn,yn,bn)}if(wn=gt(en,en.Tc),uo[wn](an,on),uo[wn](sn,rn),983040&en.ja){var kn=en.z,$n=256;983040&en.Oa?Bi(kn,$n,an,on):ji(kn,$n,an,on)}if(15728640&en.ja){var Cn=en.z,$n=320;15728640&en.Oa?Bi(Cn,$n,sn,rn):ji(Cn,$n,sn,rn)}en.d<en.hb-1&&(t(cn,dn,tn,nn+15*pi,16),t(un,pn,an,on+7*pi,8),t(mn,gn,sn,rn+7*pi,8));var Sn=e;if(0<Sn.A){var Mn=Sn.M[1+Sn.i],xn=Sn.La[1+Sn.i].Nb,In=Sn.Zb[Sn.Lb];Sn.ga.oc&&(In+=Sn.ga.Lc[0],Sn.wa&&(In+=Sn.ga.Gc[0])),In=0>In?0:In>63?63:In,Mn.zc=In,0<Sn.ga.kb&&(In=4<Sn.ga.kb?In>>2:In>>1,In>9-Sn.ga.kb&&(In=9-Sn.ga.kb)),Mn.yc=1>In?1:In,Mn.ab=(!xn||Sn.wa)+0}for(var An=m,En=8*Sn.Ja*Sn.r,Tn=Sn.ca,Dn=Sn.da+16*Sn.i+16*Sn.Ja*Sn.H,Pn=Sn.aa,Fn=Sn.ba+8*Sn.i+En,Rn=Sn.ra,Nn=Sn.sa+8*Sn.i+En,An=0;16>An;++An)t(Tn,Dn+An*Sn.H,Sn.Ea,+gi+An*pi,16);for(An=0;8>An;++An)t(Pn,Fn+An*Sn.r,Sn.Ea,+hi+An*pi,8),t(Rn,Nn+An*Sn.r,Sn.Ea,+fi+An*pi,8)}var Un=e,On=s,Bn=1,Ln=Un.oa;if(Un.qb){var jn=Un.rc,Bn=Bn&WebPWorkerSync(jn);if(p(jn.a==OK),Bn){if(Ln.N=On,Ln.ha=Un.Ja,Ln.d=Un.d,Ln.W=Un.W,Ln.W){var qn=Ln.M;Ln.M=Un.M,Un.M=qn}WebPWorkerLaunch(jn),++Un.Ja==Un.jb&&(Un.Ja=0)}}else{Ln.d=Un.d,Ln.W=Un.W;t:{var Hn=1,Vn=Un.oa,zn=mo[Un.A],Wn=zn*Un.H,Gn=parseInt(zn/2)*Un.r,Kn=16*Vn.ha*Un.H,Yn=8*Vn.ha*Un.r,Zn=Un.ca,Xn=Un.da-Wn+Kn,Jn=Un.aa,Qn=Un.ba-Gn+Yn,na=Un.ra,ia=Un.sa-Gn+Yn,oa=0==Vn.d,ra=(Vn.d>=Un.hb-1)+0,la=16*Vn.d,ca=16*(Vn.d+1);if(Vn.W){var da=Un,ua=h,pa=da.oa.d;for(p(da.oa.W),ua=da.lb;ua<da.wb;++ua){var ma=da,ga=ua,ha=pa,fa=ma.oa,_a=ma.H,va=fa.M[1+ga],ya=ma.ca,ba=ma.da+16*fa.ha*_a+16*ga,wa=va.zc,ka=va.yc,$a=2*wa+ka;if(0!=wa)if(1==ma.A)ga>0&&Xi(ya,ba,_a,$a+4),va.ab&&Qi(ya,ba,_a,$a),ha>0&&Zi(ya,ba,_a,$a+4),va.ab&&Ji(ya,ba,_a,$a);else{var Ca=ma.r,Sa=ma.aa,Ma=ma.ba+8*fa.ha*Ca+8*ga,xa=ma.ra,Ia=ma.sa+8*fa.ha*Ca+8*ga,Aa=ma.Ac.fb?wa>=40?2:wa>=15?1:0:wa>=40?3:wa>=20?2:wa>=15?1:0;ga>0&&(Hi(ya,ba,_a,$a+4,ka,Aa),zi(Sa,Ma,xa,Ia,Ca,$a+4,ka,Aa)),va.ab&&(Gi(ya,ba,_a,$a,ka,Aa),Yi(Sa,Ma,xa,Ia,Ca,$a,ka,Aa)),ha>0&&(qi(ya,ba,_a,$a+4,ka,Aa),Vi(Sa,Ma,xa,Ia,Ca,$a+4,ka,Aa)),va.ab&&(Wi(ya,ba,_a,$a,ka,Aa),Ki(Sa,Ma,xa,Ia,Ca,$a,ka,Aa))}}}if(On.put){if(oa?(On.y=Un.ca,On.D=Un.da+Kn,On.c=Un.aa,On.B=Un.ba+Yn,On.S=Un.ra,On.C=Un.sa+Yn):(la-=zn,On.y=Zn,On.D=Xn,On.c=Jn,On.B=Qn,On.S=na,On.C=ia),ra||(ca-=zn),ca>On.K&&(ca=On.K),Un.Ga!=g&&ca>la&&(0==la?(On.p=U(Un,la,ca-la),On.q=0):On.q=U(Un,la,ca-la),On.p==g)){Bn=yt(Un,aa,"Could not decode alpha data.");break t}if(la<On.k){var Ea=On.k-la,la=On.k;p(!(1&Ea)),On.D+=Un.H*Ea,On.B+=Un.r*(Ea>>1),On.C+=Un.r*(Ea>>1),On.p!=g&&(On.q+=On.width*Ea)}ca>la&&(On.D+=On.t,On.B+=On.t>>1,On.C+=On.t>>1,On.p!=g&&(On.q+=On.t),On.w=la-On.k,On.m=On.Ka-On.t,On.h=ca-la,Hn=On.put(On))}Vn.ha+1==Un.jb&&!ra&&(t(Un.ca,Un.da-Wn,Zn,Xn+16*Un.H,Wn),t(Un.aa,Un.ba-Gn,Jn,Qn+8*Un.r,Gn),t(Un.ra,Un.sa-Gn,na,ia+8*Un.r,Gn)),Bn=Hn}}if(!Bn){l=yt(e,"VP8_STATUS_USER_ABORT","Output aborted.");break e}}var Ta;if(!(Ta=e.qb&&!WebPWorkerSync(e.rc))){var Da;(Da=0<e.fc)&&(p(e),p(0<e.fc),Da=!1),Ta=Da}l=Ta?0:1}var Pa=l;s.Pb&&s.Pb(s),l=1&Pa}return l?(e.za=0,l):(Ct(e),0)}function Ct(e){e!=g&&(e.ib&&(e.ib=0),e.ib=g,e.Gb=0,e.za=0)}function St(e,t){return e+(1<<t)-1>>t}function Mt(e,t,n,a,i){var o=Jo[n]+Qo[t]>>Ao;t=Xo[t],a[i+0]=es[e+Zo[n]-Eo],a[i+1]=es[e+o-Eo],a[i+2]=es[e+t-Eo]}function xt(e,t,n,a,i){var o=Jo[n]+Qo[t]>>Ao;t=Xo[t],a[i+0]=248&es[e+Zo[n]-Eo]|es[e+o-Eo]>>5,a[i+1]=es[e+o-Eo]<<3&224|es[e+t-Eo]>>3}function It(e,t,n,a,i){a[i+0]=255,Mt(e,t,n,a,i+1)}function At(e,t,n,a,i){var o=Xo[t];a[i+0]=ts[e+Zo[n]-Eo]<<4|ts[e+(Jo[n]+Qo[t]>>Ao)-Eo],a[i+1]=15|ts[e+o-Eo]<<4}function Et(e,t,n,a,i){var o=Zo[n];n=Jo[n]+Qo[t]>>Ao,a[i+0]=es[e+Xo[t]-Eo],a[i+1]=es[e+n-Eo],a[i+2]=es[e+o-Eo]}function Tt(e,t,n,a,i){Et(e,t,n,a,i),a[i+3]=255}function Dt(e,t,n,a,i){Mt(e,t,n,a,i),a[i+3]=255}function Pt(e,t,n){e[t]=((((4278255360&e[t])>>>0)+((4278255360&n)>>>0)&4278255360)>>>0|(16711935&e[t])+(16711935&n)&16711935)>>>0}function Ft(e,t){return((4278124286&(e^t))>>>1)+((e&t)>>>0)>>>0}function Rt(e){return 256>e&&e>0?e:0>=e?0:~e>>24&255}function Nt(e,t){return Rt(e+parseInt((e-t)/2,10))}function Ut(){return Ca}function Ot(e,t){return e&=255,t&=255,e>127&&(e-=256),t>127&&(t-=256),e*t>>>5}function Bt(e,t,n,a,i,o,s){var r=h,l=8>>e.n,c=e.U,d=e.u;if(8>l){e=(1<<e.n)-1;for(var u=(1<<l)-1,r=t;n>r;++r){t=0;for(var p=h,p=0;c>p;++p)0==(p&e)&&(t=a[i++]>>8&255),o[s++]=d[t&u],t>>=l}}else for(r=t;n>r;++r)for(p=0;c>p;++p)o[s++]=d[a[i++]>>8&255]}function Lt(e,t,n,a,i){for(n=t+n;n>t;){var o=e[t++];a[i++]=o>>16&255,a[i++]=o>>8&255,a[i++]=o>>0&255,a[i++]=o>>24&255}}function jt(e,t,n,a,i){for(n=t+n;n>t;){var o=e[t++];a[i++]=o>>16&240|o>>12&15,a[i++]=o>>0&240|o>>28&15}}function qt(e,t,n,a,i){for(n=t+n;n>t;){var o=e[t++];a[i++]=o>>24&255,a[i++]=o>>16&255,a[i++]=o>>8&255,a[i++]=o>>0&255}}function Ht(e,t,n,a){return E(e,8)!=va?0:(t[0]=E(e,ya)+1,n[0]=E(e,ya)+1,a[0]=E(e,1),E(e,ba),1)}function Vt(e,t){var n=h;return 4>e?e+1:(n=e-2>>1,(2+(1&e)<<n)+E(t,n)+1)}function zt(e,t){if(t.Q+8>t.ya){var n=e.Y,a=0;for(p(n!=g);0!=n[a].s;){var i=n,o=t,s=o.T>>o.g&1;o.L?o.fa=1:(++o.g,8<=o.g&&I(o),o.Q==o.ya&&32==o.g&&(o.L=1)),a=a+i[a].s+s}return n[a].kc}for(n=e.Y,a=0,p(n!=g);0!=n[a].s;)i=n,o=t.T>>t.g&1,++t.g,a=a+i[a].s+o;return n[a].kc}function Wt(e,t){if(e!=g)for(var n=h,a=h,n=0;t>n;++n)for(var i=e[n].va,a=0;$a>a;++a)P(i[a])}function Gt(e,t,n){return t=0==e.eb?0:e.ac[e.bd+e.Ec*(n>>e.eb)+(t>>e.eb)],p(t<e.hc),e.Db[+t]}function Kt(n,a,i,o){var r=n.Na,l=n.O,c=l+a,d=i,u=o;for(o=n.Xa,i=n.vb,t(o,i,d,u,n.l*a);0<r--;){a=n.nc[r];var m=l,f=c,_=d,y=u,u=o,d=i;switch(p(f>m),p(f<=a.Vb),a.Qc){case Da:for(_=0,a=d+(f-m)*a.U;a>d;){var f=u,y=d,b=f[y]>>8&255,w=(16711935&f[y])>>>0,w=w+(b<<16|b),w=16711935&w;u[d++]=((4278255360&f[y])>>>0|w)>>>0,32==m&&_++}break;case Ea:var k=a,$=m,_=f,y=u,b=d,w=k.U;if(0==$){var C=h;for(Pt(y,b,Ca),C=1;w>C;++C)Pt(y,b+C,y[b+C-1]);b+=w,++$}for(var S=(1<<k.n)-1,M=St(w,k.n),x=k.u,k=+($>>k.n)*M;_>$;){var I=x,A=k,E=g;for(Pt(y,b,y[b-w+0]),E=Do[I[A++]>>8&15],C=1;w>C;++C){var T=v;0==(C&S)&&(E=Do[I[A++]>>8&15]),T=E(y[b+C-1],y,b+C-w),Pt(y,b+C,T)}b+=w,++$,0==($&S)&&(k+=M)}f!=a.Vb&&(a=a.U,t(u,d-a,u,d+(f-m-1)*a,a));break;case Ta:for(_=a.U,y=(1<<a.n)-1,b=St(_,a.n),w=a.u,a=+(m>>a.n)*b;f>m;){for(C=w,$=a,S=e(Po),M=h,M=0;_>M;++M)0==(M&y)&&(x=C[$++],k=S,k.Cc=x>>0&255,k.Bc=x>>8&255,k.Kc=x>>16&255),x=u[d+M],k=x>>>8,I=x>>>16,A=x,I+=Ot(S.Cc,k),I&=255,A+=Ot(S.Bc,k),A+=Ot(S.Kc,I),A&=255,u[d+M]=(4278255360&x|I<<16|A)>>>0;d+=_,++m,0==(m&y)&&(a+=b)}break;case Pa:_==u&&0<a.n?(_=(f-m)*St(a.U,a.n),y=d+(f-m)*a.U-_,s(u,y,u,d,_),Bt(a,m,f,u,y,u,d)):Bt(a,m,f,_,y,u,d)}d=o,u=i}}function Yt(e,t){var n=e.V,a=e.Ha+e.l*e.O,i=t-e.O;if(!(0>=i)){Kt(e,i,n,a);var o=e.N,n=e.Xa,s=[e.vb],a=e.O,i=t,r=s,l=o.width;if(p(i>a),p(o.t<o.Ka),i>o.K&&(i=o.K),a<o.k){var c=o.k-a,a=o.k;r[0]+=l*c}if(a>=i?a=0:(r[0]+=o.t,o.w=a-o.k,o.m=o.Ka-o.t,o.h=i-a,a=1),a){if(s=s[0],a=e.Ib,i=o.width,a.J<Zn){var d=a.c.RGBA,r=d.ma,u=d.Sa+e.xa*d.f;if(o.I)n=EmitRescaledRows(e,n,s,i,o.h,r,u,d.f);else{for(var l=a.J,c=o.m,o=o.h,d=d.f,m=o;0<m--;){var g=n,h=s,f=c,_=r,v=u;switch(l){case Bn:for(f=h+f;f>h;){var y=g[h++];_[v++]=y>>16&255,_[v++]=y>>8&255,_[v++]=y>>0&255}break;case Ln:Lt(g,h,f,_,v);break;case Wn:Lt(g,h,f,_,v),WebPApplyAlphaMultiply(_,0,f,1,0);break;case jn:for(f=h+f;f>h;)y=g[h++],_[v++]=y>>0&255,_[v++]=y>>8&255,_[v++]=y>>16&255;break;case qn:qt(g,h,f,_,v);break;case Gn:qt(g,h,f,_,v),WebPApplyAlphaMultiply(_,0,f,1,0);break;case Hn:qt(g,h,f,_,v);break;case Kn:qt(g,h,f,_,v),WebPApplyAlphaMultiply(_,1,f,1,0);break;case Vn:jt(g,h,f,_,v);break;case Yn:jt(g,h,f,_,v),WebPApplyAlphaMultiply4444(_,f,1,0);break;case zn:for(f=h+f;f>h;)y=g[h++],_[v++]=y>>16&248|y>>13&7,_[v++]=y>>5&224|y>>3&31;break;default:p(0)}s+=i,u+=d}n=o}e.xa+=n}else e.xa=o.I?EmitRescaledRowsYUVA(e,n,s,i,o.h):EmitRowsYUVA(e,n,s,i,o.m,o.h);p(e.xa<=a.height)}e.O=t,p(e.O<=e.v)}}function Zt(e,t,n,a,i,o){var s=1,r=0,l=0,c=e.o,d=e.cb,u=d.Db,m=n,f=n;n+=a*i,i=xa+Ia;var _=i+d.xb,v=0<d.xb?d.Yb:g,y=d.Dc,b=!1;p(u!=g);e:for(;!c.L&&n>m;){var w=h;if(b||(0==(r&y)&&(u=Gt(d,r,l)),A(c),w=zt(u.va[Bo],c)),xa>w||b){if(!b){var k=s=b=h,$=h;A(c),b=zt(u.va[Lo],c),s=w,A(c),k=zt(u.va[jo],c),A(c),$=zt(u.va[qo],c),t[m]=($<<24>>>0)+(b<<16)+(s<<8)+k}if(b=!1,++m,++r,r>=a&&(r=0,++l,o!=g&&0==l%Fo&&o(e,l),v!=g))for(;m>f;)s=t[f++],v.ea[Ya*s>>>v.bb]=s}else if(i>w){for(k=k=h,s=Vt(w-xa,c),w=zt(u.va[Ho],c),A(c),k=Vt(w,c),k>Go?k-=Go:(w=Ko[k-1],w=(w>>4)*a+(8-(15&w)),k=w>=1?w:1),w=h,w=0;s>w;++w)t[m+w]=t[m+w-k];for(m+=s,r+=s;r>=a;)r-=a,++l,o!=g&&0==l%Fo&&o(e,l);if(n>m&&(u=Gt(d,r,l),v!=g))for(;m>f;)s=t[f++],v.ea[Ya*s>>>v.bb]=s}else if(_>w){for(b=w-i,p(v!=g);m>f;)w=t[f++],v.ea[Ya*w>>>v.bb]=w;w=t,k=m,$=v,p(b<=-1>>>$.bb),w[k]=$.ea[b],b=!0;continue e}(s=!c.fa)||End}return o!=g&&o(e,l),c.fa||!s||c.L&&n>m?(s=0,e.a=c.L?oa:aa):m==n&&(e.Ob=Ii),s}function Xt(e){p(e),e.ac=g,Wt(e.Db,e.hc);var t=e.Yb;t!=g&&(t.ea=g,t.ea=g),p(e)}function Jt(){var t=e(Fi);return t==g?g:(t.a=ea,t.Wa=Ei,t.Ob=Ei,t)}function Qt(e){var t=h;if(e!=g){for(Xt(e.cb),e.V=g,e.V=g,t=0;t<e.Na;++t){var n=e.nc[t];n.u=g,n.u=g}e.Na=0,e.Ub=0,e.Mc=g,e.Mc=g,e.Ib=g}}function en(t,n,a,i,o){var s=1;t=[t],n=[n];for(var r=i.o,l=i.cb,u=g,m=g,m=0;;){if(a)for(;s&&E(r,1);){var f=t,_=n,v=i,y=1,b=v.o,s=v.nc[v.Na],w=E(b,2);if(v.Ub&1<<w)s=0;else{switch(v.Ub|=1<<w,s.Qc=w,s.U=f[0],s.Vb=_[0],s.u=[g],s.b=0,++v.Na,p(v.Na<=Aa),w){case Ea:case Ta:s.n=E(b,3)+2,y=en(St(s.U,s.n),St(s.Vb,s.n),0,v,s.u);break;case Pa:if(_=E(b,8)+1,y=_>16?0:_>4?1:_>2?2:3,f[0]=St(s.U,y),s.n=y,f=y=en(_,1,0,v,s.u))if(f=_,v=s,y=h,_=1<<(8>>>v.n)>>>0,b=Array(_),b==g)f=0;else{var w=v.u[0],k=v.b;for(b[0]=v.u[0][v.b+0],y=1;f>y;++y)b[y]=((((4278255360&w[k+y])>>>0)+((4278255360&b[y-1])>>>0)&4278255360)>>>0|(16711935&w[k+y])+(16711935&b[y-1])&16711935)>>>0;for(;_>y;++y)b[y]=0;v.u[0]=g,v.b=g,v.u[0]=b,v.b=0,f=1}y=f;break;case Da:break;default:p(0)}s.u=s.u[0],s=y}}if(s&&E(r,1)&&(m=E(r,4),s=m>=1&&ka>=m,!s)){i.a=aa;break}if(s)e:{var s=i,$=t[0],C=n[0],f=m,k=w=h,k=s.o,v=s.cb,y=[g],_=g,b=1;if(a&&E(k,1)){var w=E(k,3)+2,$=St($,w),S=St(C,w),C=$*S;if(!en($,S,0,s,y)){s.a=aa,Wt(_,b),s=0;break e}for(y=y[0],v.eb=w,w=0;C>w;++w)$=y[w]>>>8&65535,y[w]=$,$>=b&&(b=$+1)}if(k.fa)Wt(_,b),s=0;else if(p(65536>=b),_=d(b,Di),_==g)s.a=ta,Wt(_,b),s=0;else{for(w=0;b>w;++w)for(C=_[w].va,k=0;$a>k;++k){$=Vo[k],0==k&&f>0&&($+=1<<f);t:{var M=$,$=s,x=C[+k],I=0,S=$.o;if(E(S,1)){var N=Array(2),U=Array(2),O=Array(2),I=E(S,1)+1,B=E(S,1);N[0]=E(S,0==B?1:8),U[0]=0,O[0]=I-1,2==I&&(N[1]=E(S,8),U[1]=1,O[1]=I-1);n:{var B=0,L=h;if(p(x!=g),p(O!=g),p(U!=g),p(N!=g),D(x,I)){for(L=0;I>L;++L)if(U[L]!=Ga){if(0>N[L]||N[L]>=M){(B=B&&T(x))||P(x),I=B;break n}if(!F(x,N[L],U[L],O[L])){(B=B&&T(x))||P(x),I=B;break n}}(B=(B=1)&&T(x))||P(x),I=B}else I=0}}else{if(I=h,U=[],N=E(S,4)+4,N>zo){$.a=aa,$=0;break t}if(O=Array(M),O==g){$.a=ta,$=0;break t}for(I=0;N>I;++I)U[Wo[I]]=E(S,3);n:{var I=$,j=U,U=M,N=O,B=0,L=I.o,q=h,H=h,V=Sa,z=e(Wa);if(R(z,j,zo)){if(E(L,1)){if(q=2+2*E(L,3),H=2+E(L,q),H>U){I.a=aa,P(z),I=B;break n}}else H=U;for(q=0;U>q;){var W=h;if(0==H--)break;if(A(L),W=zt(z,L),Ro>W)N[q++]=W,0!=W&&(V=W);else{var j=W==No,W=W-Ro,G=Oo[W],W=E(L,Uo[W])+G;if(q+W>U){I.a=aa,P(z),I=B;break n}for(j=j?V:0;0<W--;)N[q++]=j}}B=1,P(z),I=B}else I.a=aa,I=0}I&&(I=R(x,O,M))}(I=I&&!S.fa)?$=1:($.a=aa,$=0)}if(!$){Wt(_,b),s=0;break e}}v.ac=y,v.hc=b,v.Db=_,s=1}}if(!s){i.a=aa;break}if(m>0){if(l.xb=1<<m,f=l.Yb,v=1<<m,p(f!=g),p(m>0),f.ea=c(v,0),f.ea==g?m=0:(f.bb=32-m,m=1),!m){i.a=ta,s=0;break}}else l.xb=0;if(m=i,f=t[0],v=n[0],y=m.cb,_=y.eb,m.l=f,m.v=v,y.Ec=St(f,_),y.Dc=0==_?-1:(1<<_)-1,a){i.Ob=Ai;break}if(u=Array(t*n),m=0,u==g){i.a=ta,s=0;break}s=(s=Zt(i,u,m,t,n,g))&&!r.fa;break}return s?(o!=g?o[0]=u:(p(u==g),p(a)),a||Xt(l)):(Xt(l),i.a==aa&&i.o.L&&(i.a=oa)),s}function tn(e,t){var n=e.l*e.v,a=n+t+t*Fo;return p(e.l<=t),e.V=Array(a),e.Ha=0,e.V==g?(e.Xa=g,e.a=ta,0):(e.Xa=e.V,e.vb=e.Ha+n+t,1)}function nn(e,t){var n=t-e.O,a=e.V,i=e.Ha+e.l*e.O;if(!(0>=n)){Kt(e,n,a,i);for(var i=e.N.width,n=i*n,a=e.N.ka,i=e.N.fd+i*e.O,o=e.Xa,s=e.vb,r=h,r=0;n>r;++r)a[i+r]=o[s+r]>>>8&255;e.O=e.xa=t}}function an(e,t){var n=[h],a=[h],i=[h];return e==g?0:t==g?(e.a=na,0):(e.N=t,e.a=ea,x(e.o,t.data,t.b,t.e),Ht(e.o,n,a,i)?(e.Ob=Ei,t.width=n[0],t.height=a[0],e.Wa=Ai,en(n[0],a[0],1,e,g)?1:(Qt(e),p(e.a!=ea),0)):(e.a=aa,Qt(e),p(e.a!=ea),0))}function on(e){var t=g,n=g;return e==g?0:(t=e.N,p(t!=g),n=t.ka,p(n!=g),e.Ib=n.j,e.Hc=n.Hc,p(e.Ib!=g),Un(n.Qa,t,qn)?!tn(e,t.width)||t.I&&!AllocateAndInitRescaler(e,t)?(Qt(e),p(e.a!=ea),0):(e.Wa=Ii,Zt(e,e.V,e.Ha,e.l,e.v,Yt)?(n.ec=e.xa,Qt(e),1):(Qt(e),p(e.a!=ea),0)):(e.a=na,Qt(e),p(e.a!=ea),0))}function ft(e,t){return 0>e?0:e>t?t:e}function sn(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g,h,f,_,v){var y,b=f-1>>1,w=i[o+0]|s[r+0]<<16,k=l[c+0]|d[u+0]<<16;if(e){var $=3*w+k+131074>>2;_(e[t+0],255&$,$>>16,p,m)}for(n&&($=3*k+w+131074>>2,_(n[a+0],255&$,$>>16,g,h)),y=1;b>=y;++y){var C=i[o+y]|s[r+y]<<16,S=l[c+y]|d[u+y]<<16,$=w+C+k+S+524296,M=$+2*(C+k)>>3,x=$+2*(w+S)>>3;e&&($=M+w>>1,w=x+C>>1,_(e[t+2*y-1],255&$,$>>16,p,m+(2*y-1)*v),_(e[t+2*y-0],255&w,w>>16,p,m+(2*y-0)*v)),n&&($=x+k>>1,w=M+S>>1,_(n[a+2*y-1],255&$,$>>16,g,h+(2*y-1)*v),_(n[a+2*y+0],255&w,w>>16,g,h+(2*y+0)*v)),w=C,k=S}1&f||(e&&($=3*w+k+131074>>2,_(e[t+f-1],255&$,$>>16,p,m+(f-1)*v)),n&&($=3*k+w+131074>>2,_(n[a+f-1],255&$,$>>16,g,h+(f-1)*v)))}function rn(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g,h,f){sn(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g,h,f,Mt,3)}function ln(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g,h,f){sn(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g,h,f,Et,3)}function cn(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g,h,f){sn(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g,h,f,Dt,4)}function dn(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g,h,f){sn(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g,h,f,Tt,4)}function un(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g,h,f){sn(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g,h,f,It,4)}function pn(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g,h,f){sn(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g,h,f,At,2)}function mn(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g,h,f){sn(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g,h,f,xt,2)}function gn(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g){var h;for(h=0;p-1>h;h+=2)m(e[t+0],i[o+0],s[r+0],l,c),m(e[t+1],i[o+0],s[r+0],l,c+g),m(n[a+0],i[o+0],s[r+0],d,u),m(n[a+1],i[o+0],s[r+0],d,u+g),t+=2,a+=2,o++,r++,c+=2*g,u+=2*g;h==p-1&&(m(e[t+0],i[o+0],s[r+0],l,c),m(n[a+0],i[o+0],s[r+0],d,u))}function hn(e,t,n,a,i,o,s,r,l,c,d,u,p){gn(e,t,n,a,i,o,s,r,l,c,d,u,p,Dt,4)}function fn(e,t,n,a,i,o,s,r,l,c,d,u,p){gn(e,t,n,a,i,o,s,r,l,c,d,u,p,Tt,4)}function _n(e,t,n,a,i,o,s,r,l,c,d,u,p){gn(e,t,n,a,i,o,s,r,l,c,d,u,p,It,4)}function vn(e,t,n,a,i,o,s,r,l,c,d,u,p){gn(e,t,n,a,i,o,s,r,l,c,d,u,p,At,2)}function yn(e,t,n,a,i,o){for(;0<i--;){for(var s=e,r=t+(n?1:0),l=e,c=t+(n?0:3),d=h,d=0;a>d;++d){var u=l[c+4*d];if(255!=u){var u=32897*u,p=s,g=r+4*d+0;s[r+4*d+0]*u>>>23,p[g]=m,p=s,g=r+4*d+1,s[r+4*d+1]*u>>>23,p[g]=m,p=s,g=r+4*d+2,s[r+4*d+2]*u>>>23,p[g]=m}}t+=o}}function bn(e,n){var a,i=n.j.c.Va,o=i.y,s=i.D+e.w*i.F,r=i.c,l=i.B+(e.w>>1)*i.nb,c=i.S,d=i.C+(e.w>>1)*i.rb,u=e.m,p=e.h,m=parseInt((u+1)/2,10),g=parseInt((p+1)/2,10);for(a=0;p>a;++a)t(o,s+a*i.F,e.y,e.D+a*e.F,u);for(a=0;g>a;++a)t(r,l+a*i.nb,e.c,e.B+a*e.Da,m),t(c,d+a*i.rb,e.S,e.C+a*e.Da,m);return e.h}function wn(e,t){var n,a=t.j,i=a.c.RGBA,o=i.ma,s=i.Sa+e.w*i.f,r=e.y,l=e.D,c=e.c,d=e.B,u=e.S,p=e.C,a=is[a.J],m=e.m,g=e.h-1;for(n=0;g>n;n+=2)a(r,l,r,l+e.F,c,d,u,p,o,s,o,s+i.f,m),l+=2*e.F,d+=e.Da,p+=e.Da,s+=2*i.f;return n==g&&a(r,l,r,l,c,d,u,p,o,s,o,s,m),e.h}function kn(e,n){var a=e.h,i=n.j.c.RGBA,o=i.ma,s=i.Sa+e.w*i.f,r=as[n.j.J],l=e.y,c=e.D,d=e.c,u=e.B,p=e.S,m=e.C,h=n.Qb,f=n.Rb,_=n.lc,v=n.mc,y=e.w,b=e.w+e.h,w=e.m,k=parseInt((w+1)/2,10);for(0==y?r(g,g,l,c,d,u,p,m,d,u,p,m,g,g,o,s,w):(r(n.Sb,n.Tb,l,c,h,f,_,v,d,u,p,m,o,s-i.f,o,s,w),++a);b>y+2;y+=2)h=d,f=u,_=p,v=m,u+=e.Da,m+=e.Da,s+=2*i.f,c+=2*e.F,r(l,c-e.F,l,c,h,f,_,v,d,u,p,m,o,s-i.f,o,s,w);return c+=e.F,e.k+b<e.K?(t(n.Sb,n.Tb,l,c,1*w),t(n.Qb,n.Rb,d,u,1*k),t(n.lc,n.mc,p,m,1*k),a--):1&b||r(l,c,g,g,d,u,p,m,d,u,p,m,o,s+i.f,g,g,w),a}function $n(e,n){var a=e.p,i=e.q,o=n.j.c.Va,s=e.m,l=e.h,c=o.p,d=o.q+e.w*o.Fa,a=e.p,i=e.q,u=h;if(a!=g)for(u=0;l>u;++u)t(c,d,a,i,1*s),i+=e.width,d+=o.Fa;else if(o.p!=g)for(u=0;l>u;++u)r(c,d,255,s),d+=o.Fa;return 0}function Cn(e,t,n){var a=e.w;return n[0]=e.h,e.Bb&&(0==a?--n[0]:(--a,t[0]-=e.width),e.k+e.w+e.h==e.K&&(n[0]=e.K-e.k-a)),a}function Sn(e,t){var n=e.p,a=[e.q];if(n!=g){for(var i=e.m,o=t.j.J,s=o==Hn||o==Kn,r=t.j.c.RGBA,l=[h],c=Cn(e,a,l),a=a[0],d=r.ma,c=r.Sa+c*r.f,u=c+(s?0:3),p=255,m=h,f=h,f=0;f<l[0];++f){for(m=0;i>m;++m){var _=n[a+m];d[u+4*m]=_,p&=_}a+=e.width,u+=r.f}255!=p&&w(o)&&WebPApplyAlphaMultiply(d,c,s,i,l,r.f)}return 0}function Mn(e,t){var n=e.p,a=[e.q];if(n!=g){var i=e.m,o=t.j.J,s=t.j.c.RGBA,r=[h],l=Cn(e,a,r),a=a[0],c=s.ma,l=s.Sa+l*s.f,d=l+1,u=15,p=h;for(j=0;j<r[0];++j){for(p=0;i>p;++p){var m=n[a+p]>>4;c[d+2*p]=240&c[d+2*p]|m,u&=m}a+=e.width,d+=s.f}15!=u&&w(o)&&WebPApplyAlphaMultiply4444(c,l,i,r,s.f)}return 0}function xn(e){var t=e.ka,n=t.j.J,a=Zn>n,i=n==Ln||n==qn||n==Hn||n==Vn||n==Xn||w(n);if(t.memory=g,t.$a=g,t.zb=g,t.ad=g,!Un(t.Qa,e,i?Zn:Xn))return 0;if(e.I){if(!(a?InitRGBRescaler(e,t):InitYUVRescaler(e,t)))return alert("memory error #1"),0}else{if(a){if(t.$a=wn,e.Bb){var o,s=e.m+1>>1,r=e.m+2*s,l=[];for(o=0;r>o;++o)l.push(205);if(l.push(0),t.memory=l,t.memory==g)return alert("memory error #2"),0;t.Sb=t.memory,t.Tb=0,t.Qb=t.Sb,t.Rb=t.Tb+e.m,t.lc=t.Qb,t.mc=t.Rb+s,t.$a=kn,as[Bn]=rn,as[Ln]=cn,as[jn]=ln,as[qn]=dn,as[Hn]=un,as[Vn]=pn,as[zn]=mn}}else t.$a=bn;i&&(w(n)&&(WebPApplyAlphaMultiply=yn,as[Wn]=cn,as[Gn]=dn,as[Kn]=un,as[Yn]=pn),t.zb=n==Vn||n==Yn?Mn:a?Sn:$n)}if(a&&!ns){for(e=0;256>e;++e)Zo[e]=89858*(e-128)+Yo>>Ao,Qo[e]=-22014*(e-128)+Yo,Jo[e]=-45773*(e-128),Xo[e]=113618*(e-128)+Yo>>Ao;for(e=Eo;To>e;++e)t=76283*(e-16)+Yo>>Ao,es[e-Eo]=ft(t,255),ts[e-Eo]=ft(t+8>>4,15);ns=1}return 1}function In(e){var t=e.ka,n=e.m,a=e.h;return p(!(1&e.w)),0>=n||0>=a?0:(n=t.$a(e,t),t.ec+=n,t.zb&&t.zb(e,t),1)}function An(e){e=e.ka,e.memory="",e.memory=g}function En(e,t){return e[t+0]|e[t+1]<<8|e[t+2]<<16}function Tn(e,t){return(En(e,t)|e[t+3]<<24)>>>0}function Dn(t,n,a,i,o,s,r){var c=0,d=[0],u="VP8StatusCode",_=e(pa);if(t==g||a[0]<La)return ra;_.data=t,_.b=[n[0]],_.e=[a[0]],_.na=[_.na];e:{if(c=_.na,p(t!=g),p(a!=g),p(c!=g),c[0]=0,a[0]>=La&&!l(t,n[0],"RIFF",Oa)){if(l(t,n[0]+8,"WEBP",Oa)){u=aa;break e}var y=Tn(t,n[0]+Oa);if(Oa+Ba>y){u=aa;break e}c[0]=y,n[0]+=La,a[0]-=La}else c[0]=0;u=ea}if(_.na=_.na[0],u!=ea)return u;c=0<_.na,y=[0];e:if(u=Ba+ja,p(t!=g),p(a!=g),p(d!=g),d[0]=0,a[0]<Ba)u=ra;else{if(!l(t,n[0],"VP8X",Oa)){var w=h,k=h,$=v;if(Tn(t,n[0]+Oa)!=ja){u=aa;break e}if(a[0]<u){u=ra;break e}if($=Tn(t,n[0]+8),w=1+En(t,n[0]+12),k=1+En(t,n[0]+15),w*k>=Ha){u=aa;break e}y!=g&&(y[0]=$),i!=g&&(i[0]=w),o!=g&&(o[0]=k),n[0]+=u,a[0]-=u,d[0]=1}u=ea}if(u!=ea)return u;if(!c&&d[0])return aa;if(s!=g&&(s[0]=!!(y[0]&qa)),d&&r==g)return ea;if(Oa>a)return ra;if(c&&d[0]||!c&&!d[0]&&!l(t,n[0],"ALPH",Oa)){_.$=[_.$],_.G=[_.G],_.pa=[_.pa];e:{var d=_.na,c=_.$,y=_.G,u=_.pa,w=f,k=0,$=b,C=Oa+Ba+ja;for(p(t!=g),p(a!=g),w=t,k=n[0],$=a[0],p(c!=g),p(u!=g),c[0]=g,y[0]=g,u[0]=0;;){var S=v,M=v;if(n[0]=k,a[0]=$,Ba>$){u=ra;break e}if(S=Tn(w,k+Oa),M=Ba+S+1&-2,C+=M,d>0&&C>d){u=aa;break e}if(M>$){u=ra;break e}if(l(w,k,"ALPH",Oa)){if(!l(w,k,"VP8 ",Oa)||!l(w,"VP8L",Oa)){u=ea;break e}}else c[0]=w,y[0]=k+Ba,u[0]=S;k+=M,$-=M}u=m}if(_.$=_.$[0],_.G=_.G[0],_.pa=_.pa[0],u!=ea)return u}_.ta=[_.ta],_.ia=[_.ia];e:if(d=_.na,c=_.ta,y=_.ia,k=!l(t,n[0],"VP8 ",Oa),u=!l(t,n[0],"VP8L",Oa),w=Oa+Ba,p(t!=g),p(a!=g),p(c!=g),p(y!=g),a[0]<Ba)u=ra;else{if(k||u){if(k=Tn(t,n[0]+Oa),d>=w&&k>d-w){u=aa;break e}c[0]=k,n[0]+=Ba,a[0]-=Ba,y[0]=u}else y[0]=a>=1&&t[n+0]==va,c[0]=a[0];u=ea}if(_.ta=_.ta[0],_.ia=_.ia[0],u!=ea)return u;if(_.ta>Va)return aa;if(_.ia){if(a[0]<wa)return ra;d=n[0],c=a[0],i=i?i[0]:g,o=o?o[0]:g,y=s?s[0]:g,t==g||wa>c?t=0:(u=[h],w=[h],k=[h],$=e(ga),x($,t,d,c),Ht($,u,w,k)?(i!=g&&(i[0]=u[0]),o!=g&&(o[0]=w[0]),y!=g&&(y[0]=k[0]),t=1):t=0)}else{if(_a>a)return ra;d=n[0],c=a[0],i=i?i[0]:g,o=o?o[0]:g,!(t==g||_a>c)&&c-3>=3&&157==t[d+3+0]&&1==t[d+3+1]&&42==t[d+3+2]?(c=t[d+0]|t[d+1]<<8|t[d+2]<<16,y=16383&(t[d+7]<<8|t[d+6]),t=16383&(t[d+9]<<8|t[d+8]),!(!(1&c)+0)||(c>>1&7)>3||!(c>>4&1)||c>>5>=_.ta?t=0:(i&&(i[0]=y),o&&(o[0]=t),t=1)):t=0}return t?(s!=g&&(s[0]|=_.$!=g),r!=g&&(r[0]=_,r[0].offset=n[0]-r[0].b,p(n[0]-r[0].b<Va),p(r[0].offset==r[0].e-a[0])),ea):aa}function Pn(e){return p(e!=g),Dn(e[0].data,e[0].b,e[0].e,g,g,g,e)}function Fn(t,n,a,i){var o="VP8StatusCode",s=e(da),r=e(pa);if(r.data=t,r.b=n,r.e=a,r.b=[r.b],r.e=[r.e],r=[r],o=Pn(r),o!=ea)return o;if(r=r[0],r.b=r.b[0],r.e=r.e[0],p(i!=g),vt(On),s.data=r.data,s.b=n+r.offset,s.e=r.e-r.offset,s.put=In,s.Mb=xn,s.Pb=An,s.ka=i,r.ia){if(t=Jt(),t==g)return ta;an(t,s)?(o=B(s.width,s.height,i.Qa,i.j),o==ea&&!on(t)&&(o=t.a)):o=t.a,t!=g&&Qt(t)}else{if(o=e(xi),o!=g&&(_t(o),o.za=0,o.Hb=1),t=o,t==g)return ta;t.qb=0,t.Ga=r.$,t.G=r.G,t.ub=r.pa,bt(t,s)?(o=B(s.width,s.height,i.Qa,i.j),o==ea&&!$t(t,s)&&(o=t.a)):o=t.a,t!=g&&Ct(t)}return o!=ea&&this.Yc(i.j),o}function Rn(t,n,a,i,o){var s={value:0};a={value:a};var r=e(ua),l=e(Qn);r.j=l,l.J=t;var c,d={value:l.width},u={value:l.height};c=a;var p=e(la);return Nn(n,s,c,p)!=ea?c=0:(d!=g&&(d.value=p.width),u!=g&&(u.value=p.height),c=1),c?(l.width=d.value,l.height=u.value,i!=g&&(i.value=l.width.value),o!=g&&(o.value=l.height.value),Fn(n,s.value,a.value,r)!=ea?g:Zn>t?l.c.RGBA.ma:l.c.Va.y):g}function Nn(e,t,n,a){return a==g||e==g?na:(p(a!=g),a.tc=0,a.width=[a.width],a.height=[a.height],a.$b=[a.$b],Dn(e,t,n,a.width,a.height,a.$b,g))}function Un(e,t,n){var a=t.width,i=t.height,o=0,s=0,r=a,l=i;if(t.Ua=e!=g&&0<e.Ua,t.Ua&&(r=e.wc,l=e.vc,o=e.t,s=e.k,Zn>n||(o&=-2,s&=-2),0>o||0>s||0>=r||0>=l||o+r>a||s+l>i))return 0;if(t.t=o,t.k=s,t.Ka=o+r,t.K=s+l,t.m=r,t.h=l,t.I=e!=g&&0<e.I,t.I){if(0>=e.Ba||0>=e.Aa)return 0;t.Ba=e.Ba,t.Aa=e.Aa}return t.Za=e&&e.Za,t.Bb=e==g||!e.ed,t.I&&(t.Za=t.Ba<3*a/4&&t.Aa<3*i/4,t.Bb=0),1}var On=512,Bn=0,Ln=1,jn=2,qn=3,Hn=4,Vn=5,zn=6,Wn=7,Gn=8,Kn=9,Yn=10,Zn=11,Xn=12,Jn=13;this.WEBP_CSP_MODE=this.Cd={nd:0,od:1,kd:2,ld:3,jd:4,pd:5,qd:6,rd:7,sd:8,md:9};var Qn={J:"WEBP_CSP_MODE",width:h,height:h,Fc:h,c:{RGBA:{ma:f,Sa:0,f:h,size:b},Va:{y:f,c:f,S:f,p:f,D:f,B:f,C:f,q:f,F:h,nb:h,rb:h,Fa:h,Wc:b,Rc:b,Uc:b,Wb:b}},Ic:c(4,v),Jb:g,jc:f},ea=0,ta=1,na=2,aa=3,ia=4,oa=5,sa=6,ra=7;this.VP8StatusCode=this.td={xd:0,yd:1,vd:2,ud:3,Ad:4,zd:5,Bd:6,wd:7};var la={width:{value:h},height:{value:h},$b:{value:h},tc:h,Yd:h,rotate:h,be:h,Ic:c(3,v)};this.WebPGetFeatures=this.Md=function(e,t,n){var a="VP8StatusCode";return On>>>8!=On>>>8||n==g?e=na:(t=[t],a=Nn(e,[0],t,n),e=a==ra?aa:a),e};var ca={Za:h,ed:h,Ua:h,t:h,k:h,wc:h,vc:h,I:h,Ba:h,Aa:h,ae:h,Td:h,Xd:h,Ic:c(6,v)};this.WebPDecoderConfig=this.Kd={input:e(la),j:e(Qn),options:e(ca)},this.WebPInitDecoderConfig=this.Nd=function(e){return On>>>8!=On>>>8||e==g?e=0:(e=e.input,p(e!=g),e.tc=0,e=1),e};var da={width:h,height:h,w:h,m:h,h:h,y:f,c:f,S:f,D:0,B:0,C:0,F:h,Da:h,ka:0,put:0,Mb:0,Pb:0,Bb:h,e:b,data:f,b:0,Za:h,Ua:h,t:h,Ka:h,k:h,K:h,I:h,Ba:h,Aa:h,p:f,q:0},ua={j:e(Qn),Sb:f,Qb:f,lc:f,Tb:0,Rb:0,mc:0,ec:h,Qa:e(ca),memory:0,$a:"(OutputFunc)",zb:"(OutputFunc)",ad:"(OutputRowFunc)"},pa={data:f,b:f,e:b,offset:b,$:g,G:f,pa:b,ta:b,na:b,ia:h},ma={qa:f,Ia:g,Pd:f,Ab:h,la:v,Z:v,gc:h},ga={T:y,qa:f,Ia:f,ya:b,Q:b,g:h,L:h,fa:h},ha=25,fa=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215],_a=10,va=47,ya=14,ba=3,wa=5,ka=11,$a=5,Ca=4278190080,Sa=8,Ma=15,xa=256,Ia=24,Aa=4,Ea=0,Ta=1,Da=2,Pa=3,Fa=1,Ra=0,Na=1,Ua=1,Oa=4,Ba=8,La=12,ja=10,qa=16,Ha=1*Math.pow(2,32),Va=-1-Ba-1>>>0,za={kc:h,s:h},Wa={Y:"HuffmanTreeNode*",gb:h,Pa:h},Ga=-1,Ka={ea:v,bb:h},Ya=506832829,Za=0,Xa=Za,Ja=2,Qa=3,ei=1,ti=4,ni=5,ai=6,ii=3,oi=4,si=4,ri=4,li=4,ci=8,di=3,ui=11,pi=32,mi=17*pi+9*pi,gi=1*pi+8,hi=gi+16*pi+pi,fi=hi+16,_i={fb:f,Jc:f,Nc:f,Ra:v},vi={l:0,v:0,gd:f,hd:f,uc:f,$c:f},yi={pb:h,ob:h,tb:h,Kb:c(oi,0),Cb:c(oi,0)},bi={Ta:c(ii,f),z:u([li,ci,di,ui],f)},wi={Oc:h,Fb:h,kb:h,oc:h,Lc:c(si,h),Gc:c(si,h)},ki={zc:h,yc:h,ab:h},$i={X:h,ua:h,Nb:h},Ci=c(2,h),Si={sc:e(Ci),sb:e(Ci),qc:e(Ci)},Mi={ha:h,d:h,W:h,M:ki,N:da},xi={a:"VP8StatusCode",za:h,xc:0,o:e(ma),Ac:e(_i),P:e(vi),ga:e(wi),Ca:e(yi),rc:"WebPWorker",qb:h,Ja:h,jb:h,oa:Mi,Ma:h,hb:h,lb:h,mb:h,wb:h,Ya:h,Hb:h,ic:d(8,ma),Zc:v,yb:d(oi,Si),R:e(bi),pc:h,Pc:f,dc:f,cc:c(4,f),Xc:f,Sc:f,Vc:f,La:e($i),M:e(ki),Ea:f,z:0,ca:f,aa:f,ra:f,da:h,ba:h,sa:h,H:h,r:h,ib:0,Gb:b,i:h,d:h,wa:f,Eb:c(16,f),Vd:0,Tc:f,Lb:f,ja:v,Oa:v,A:h,W:h,Zb:c(oi,f),Ga:g,G:0,ub:b,Xb:f,Od:0,cd:h,dd:f,Wd:0,fc:b},Ii=0,Ai=1,Ei=2,Ti={Qc:"VP8LImageTransformType",n:h,U:h,Vb:h,u:v,b:v},Di={va:d($a,Wa)},Pi={xb:h,Yb:e(Ka),Dc:h,eb:h,Ec:h,ac:v,bd:v,hc:h,Db:"HTreeGroup"},Fi={a:"VP8StatusCode",Wa:"VP8LDecodeState",Ob:"VP8LDecodeState",N:"VP8Io",Ib:"WebPDecBuffer",Hc:"WebPDecBuffer",V:v,Ha:v,Xa:v,vb:v,o:e(ga),l:h,v:h,O:h,xa:h,cb:e(Pi),Na:h,nc:d(Aa,Ti),Ub:v,Mc:f,$d:f,Zd:"*WebPRescaler"},Ri=4,Ni=[g,function(e,n,a,i,o,s,r,l){var c=h,d=l;for(p(e!=g),p(r!=g),p(a>0),p(i>0),p(o>0),p(s>=a*o),c=0;i>c;++c)0==c?t(r,l,e,n,o):N(e,n,r,d-s,r,l,o),N(e,n+o,r,d,r,l+o,o*(a-1)),d+=s,n+=s,l+=s},function(e,n,a,i,o,s,r,l){var c=h,d=l;for(p(e!=g),p(r!=g),p(a>0),p(i>0),p(o>0),p(s>=a*o),t(r,l,e,n,o),N(e,n+o,r,d,r,l+o,o*(a-1)),c=1;i>c;++c)n+=s,l+=s,N(e,n,r,d,r,l,o*a),d+=s},function(e,n,a,i,o,s,r,l){var c=l,d=h;for(p(e!=g),p(r!=g),p(a>0),p(i>0),p(o>0),p(s>=a*o),t(r,l,e,n,o),N(e,n+o,r,c,r,l+o,o*(a-1)),d=1;i>d;++d){var u=h,c=c+s;for(n+=s,l+=s,N(e,n,r,c-s,r,l,o),u=o;a*o>u;++u){var m=r[c+u-o]+r[c+u-s]-r[c+u-s-o];r[l+u]=e[n+u]+(0>m?0:m>255?255:m)&255}}}],Ui=[3,4,3,4,4,2,2,4,4,4,2,1,1];this.WebPFreeDecBuffer=this.Yc=function(e){e!=g&&(e.Fc||(e.Jb=""),e.jc=0,e.Jb=e.jc=g)};var Oi,Bi,Li,ji,qi,Hi,Vi,zi,Wi,Gi,Ki,Yi,Zi,Xi,Ji,Qi,eo=c(511,f),to=c(511,f),no=c(2041,0),ao=c(225,0),io=c(766,f),oo=0,so=85627,ro=35468,lo=[function(e,t){var n,a=4;for(n=0;4>n;++n)a+=e[t+n-pi]+e[t-1+n*pi];for(a>>=3,n=0;4>n;++n)r(e,t+n*pi,a,4)},function(e,t){G(e,t,4)},function(e,n){var a=n-pi,i=[];for(i.push(Y(e[a-1],e[a+0],e[a+1])),i.push(Y(e[a+0],e[a+1],e[a+2])),i.push(Y(e[a+1],e[a+2],e[a+3])),i.push(Y(e[a+2],e[a+3],e[a+4])),a=0;4>a;++a)t(e,n+a*pi,i,0,4)},function(e,t){var n=e[t-1],a=e[t-1+pi],i=e[t-1+2*pi],o=e[t-1+3*pi];e[t+0+0*pi]=e[t+1+0*pi]=e[t+2+0*pi]=e[t+3+0*pi]=Y(e[t-1-pi],n,a),e[t+0+1*pi]=e[t+1+1*pi]=e[t+2+1*pi]=e[t+3+1*pi]=Y(n,a,i),e[t+0+2*pi]=e[t+1+2*pi]=e[t+2+2*pi]=e[t+3+2*pi]=Y(a,i,o),e[t+0+3*pi]=e[t+1+3*pi]=e[t+2+3*pi]=e[t+3+3*pi]=Y(i,o,o)},function(e,t){var n=e[t-1+0*pi],a=e[t-1+1*pi],i=e[t-1+2*pi],o=e[t-1-pi],s=e[t+0-pi],r=e[t+1-pi],l=e[t+2-pi],c=e[t+3-pi];e[t+0+3*pi]=Y(a,i,e[t-1+3*pi]),e[t+0+2*pi]=e[t+1+3*pi]=Y(n,a,i),e[t+0+1*pi]=e[t+1+2*pi]=e[t+2+3*pi]=Y(o,n,a),e[t+0+0*pi]=e[t+1+1*pi]=e[t+2+2*pi]=e[t+3+3*pi]=Y(s,o,n),e[t+1+0*pi]=e[t+2+1*pi]=e[t+3+2*pi]=Y(r,s,o),e[t+2+0*pi]=e[t+3+1*pi]=Y(l,r,s),e[t+3+0*pi]=Y(c,l,r)},function(e,t){var n=e[t-1+0*pi],a=e[t-1+1*pi],i=e[t-1+2*pi],o=e[t-1-pi],s=e[t+0-pi],r=e[t+1-pi],l=e[t+2-pi],c=e[t+3-pi];e[t+0+0*pi]=e[t+1+2*pi]=o+s+1>>1,e[t+1+0*pi]=e[t+2+2*pi]=s+r+1>>1,e[t+2+0*pi]=e[t+3+2*pi]=r+l+1>>1,e[t+3+0*pi]=l+c+1>>1,e[t+0+3*pi]=Y(i,a,n),e[t+0+2*pi]=Y(a,n,o),e[t+0+1*pi]=e[t+1+3*pi]=Y(n,o,s),e[t+1+1*pi]=e[t+2+3*pi]=Y(o,s,r),e[t+2+1*pi]=e[t+3+3*pi]=Y(s,r,l),e[t+3+1*pi]=Y(r,l,c)},function(e,t){var n=e[t+1-pi],a=e[t+2-pi],i=e[t+3-pi],o=e[t+4-pi],s=e[t+5-pi],r=e[t+6-pi],l=e[t+7-pi];e[t+0+0*pi]=Y(e[t+0-pi],n,a),e[t+1+0*pi]=e[t+0+1*pi]=Y(n,a,i),e[t+2+0*pi]=e[t+1+1*pi]=e[t+0+2*pi]=Y(a,i,o),e[t+3+0*pi]=e[t+2+1*pi]=e[t+1+2*pi]=e[t+0+3*pi]=Y(i,o,s),e[t+3+1*pi]=e[t+2+2*pi]=e[t+1+3*pi]=Y(o,s,r),e[t+3+2*pi]=e[t+2+3*pi]=Y(s,r,l),e[t+3+3*pi]=Y(r,l,l)},function(e,t){var n=e[t+0-pi],a=e[t+1-pi],i=e[t+2-pi],o=e[t+3-pi],s=e[t+4-pi],r=e[t+5-pi],l=e[t+6-pi],c=e[t+7-pi];e[t+0+0*pi]=n+a+1>>1,e[t+1+0*pi]=e[t+0+2*pi]=a+i+1>>1,e[t+2+0*pi]=e[t+1+2*pi]=i+o+1>>1,e[t+3+0*pi]=e[t+2+2*pi]=o+s+1>>1,e[t+0+1*pi]=Y(n,a,i),e[t+1+1*pi]=e[t+0+3*pi]=Y(a,i,o),e[t+2+1*pi]=e[t+1+3*pi]=Y(i,o,s),e[t+3+1*pi]=e[t+2+3*pi]=Y(o,s,r),e[t+3+2*pi]=Y(s,r,l),e[t+3+3*pi]=Y(r,l,c)},function(e,t){var n=e[t-1+0*pi],a=e[t-1+1*pi],i=e[t-1+2*pi],o=e[t-1+3*pi],s=e[t-1-pi],r=e[t+0-pi],l=e[t+1-pi],c=e[t+2-pi];e[t+0+0*pi]=e[t+2+1*pi]=n+s+1>>1,e[t+0+1*pi]=e[t+2+2*pi]=a+n+1>>1,e[t+0+2*pi]=e[t+2+3*pi]=i+a+1>>1,e[t+0+3*pi]=o+i+1>>1,e[t+3+0*pi]=Y(r,l,c),e[t+2+0*pi]=Y(s,r,l),e[t+1+0*pi]=e[t+3+1*pi]=Y(n,s,r),e[t+1+1*pi]=e[t+3+2*pi]=Y(a,n,s),e[t+1+2*pi]=e[t+3+3*pi]=Y(i,a,n),e[t+1+3*pi]=Y(o,i,a)},function(e,t){var n=e[t-1+0*pi],a=e[t-1+1*pi],i=e[t-1+2*pi],o=e[t-1+3*pi];e[t+0+0*pi]=n+a+1>>1,e[t+2+0*pi]=e[t+0+1*pi]=a+i+1>>1,e[t+2+1*pi]=e[t+0+2*pi]=i+o+1>>1,e[t+1+0*pi]=Y(n,a,i),e[t+3+0*pi]=e[t+1+1*pi]=Y(a,i,o),e[t+3+1*pi]=e[t+1+2*pi]=Y(i,o,o),e[t+3+2*pi]=e[t+2+2*pi]=e[t+0+3*pi]=e[t+1+3*pi]=e[t+2+3*pi]=e[t+3+3*pi]=o}],co=[function(e,t){var n,a=16;for(n=0;16>n;++n)a+=e[t-1+n*pi]+e[t+n-pi];K(a>>5,e,t)},function(e,t){G(e,t,16)},function(e,n){var a;for(a=0;16>a;++a)t(e,n+a*pi,e,n-pi,16)},function(e,t){var n;for(n=16;n>0;--n)r(e,t+0,e[t-1],16),t+=pi},function(e,t){var n,a=8;for(n=0;16>n;++n)a+=e[t-1+n*pi];K(a>>4,e,t)},function(e,t){var n,a=8;for(n=0;16>n;++n)a+=e[t+n-pi];K(a>>4,e,t)},function(e,t){K(128,e,t)}],uo=[function(e,t){var n,a=8;for(n=0;8>n;++n)a+=e[t+n-pi]+e[t-1+n*pi];Z(1*(a>>4),e,t)},function(e,t){G(e,t,8)},function(e,n){var a;for(a=0;8>a;++a)t(e,n+a*pi,e,n-pi,8)},function(e,t){var n;for(n=0;8>n;++n)r(e,t+0,e[t-1],8),t+=pi},function(e,t){var n,a=4;for(n=0;8>n;++n)a+=e[t-1+n*pi];Z(1*(a>>3),e,t)},function(e,t){var n,a=4;for(n=0;8>n;++n)a+=e[t+n-pi];Z(1*(a>>3),e,t)},function(e,t){Z(128,e,t)}],po=31,mo=[0,2,8],go=3,ho=1,fo=[0+0*pi,4+0*pi,8+0*pi,12+0*pi,0+4*pi,4+4*pi,8+4*pi,12+4*pi,0+8*pi,4+8*pi,8+8*pi,12+8*pi,0+12*pi,4+12*pi,8+12*pi,12+12*pi],_o=[4,5,6,7,8,9,10,10,11,12,13,14,15,16,17,17,18,19,20,20,21,21,22,22,23,23,24,25,25,26,27,28,29,30,31,32,33,34,35,36,37,37,38,39,40,41,42,43,44,45,46,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,76,77,78,79,80,81,82,83,84,85,86,87,88,89,91,93,95,96,98,100,101,102,104,106,108,110,112,114,116,118,122,124,126,128,130,132,134,136,138,140,143,145,148,151,154,157],vo=[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,119,122,125,128,131,134,137,140,143,146,149,152,155,158,161,164,167,170,173,177,181,185,189,193,197,201,205,209,213,217,221,225,229,234,239,245,249,254,259,264,269,274,279,284],yo=[-Za,1,-1,2,-2,3,4,6,-3,5,-4,-5,-6,7,-7,8,-8,-9],bo=[[[[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128]],[[253,136,254,255,228,219,128,128,128,128,128],[189,129,242,255,227,213,255,219,128,128,128],[106,126,227,252,214,209,255,255,128,128,128]],[[1,98,248,255,236,226,255,255,128,128,128],[181,133,238,254,221,234,255,154,128,128,128],[78,134,202,247,198,180,255,219,128,128,128]],[[1,185,249,255,243,255,128,128,128,128,128],[184,150,247,255,236,224,128,128,128,128,128],[77,110,216,255,236,230,128,128,128,128,128]],[[1,101,251,255,241,255,128,128,128,128,128],[170,139,241,252,236,209,255,255,128,128,128],[37,116,196,243,228,255,255,255,128,128,128]],[[1,204,254,255,245,255,128,128,128,128,128],[207,160,250,255,238,128,128,128,128,128,128],[102,103,231,255,211,171,128,128,128,128,128]],[[1,152,252,255,240,255,128,128,128,128,128],[177,135,243,255,234,225,128,128,128,128,128],[80,129,211,255,194,224,128,128,128,128,128]],[[1,1,255,128,128,128,128,128,128,128,128],[246,1,255,128,128,128,128,128,128,128,128],[255,128,128,128,128,128,128,128,128,128,128]]],[[[198,35,237,223,193,187,162,160,145,155,62],[131,45,198,221,172,176,220,157,252,221,1],[68,47,146,208,149,167,221,162,255,223,128]],[[1,149,241,255,221,224,255,255,128,128,128],[184,141,234,253,222,220,255,199,128,128,128],[81,99,181,242,176,190,249,202,255,255,128]],[[1,129,232,253,214,197,242,196,255,255,128],[99,121,210,250,201,198,255,202,128,128,128],[23,91,163,242,170,187,247,210,255,255,128]],[[1,200,246,255,234,255,128,128,128,128,128],[109,178,241,255,231,245,255,255,128,128,128],[44,130,201,253,205,192,255,255,128,128,128]],[[1,132,239,251,219,209,255,165,128,128,128],[94,136,225,251,218,190,255,255,128,128,128],[22,100,174,245,186,161,255,199,128,128,128]],[[1,182,249,255,232,235,128,128,128,128,128],[124,143,241,255,227,234,128,128,128,128,128],[35,77,181,251,193,211,255,205,128,128,128]],[[1,157,247,255,236,231,255,255,128,128,128],[121,141,235,255,225,227,255,255,128,128,128],[45,99,188,251,195,217,255,224,128,128,128]],[[1,1,251,255,213,255,128,128,128,128,128],[203,1,248,255,255,128,128,128,128,128,128],[137,1,177,255,224,255,128,128,128,128,128]]],[[[253,9,248,251,207,208,255,192,128,128,128],[175,13,224,243,193,185,249,198,255,255,128],[73,17,171,221,161,179,236,167,255,234,128]],[[1,95,247,253,212,183,255,255,128,128,128],[239,90,244,250,211,209,255,255,128,128,128],[155,77,195,248,188,195,255,255,128,128,128]],[[1,24,239,251,218,219,255,205,128,128,128],[201,51,219,255,196,186,128,128,128,128,128],[69,46,190,239,201,218,255,228,128,128,128]],[[1,191,251,255,255,128,128,128,128,128,128],[223,165,249,255,213,255,128,128,128,128,128],[141,124,248,255,255,128,128,128,128,128,128]],[[1,16,248,255,255,128,128,128,128,128,128],[190,36,230,255,236,255,128,128,128,128,128],[149,1,255,128,128,128,128,128,128,128,128]],[[1,226,255,128,128,128,128,128,128,128,128],[247,192,255,128,128,128,128,128,128,128,128],[240,128,255,128,128,128,128,128,128,128,128]],[[1,134,252,255,255,128,128,128,128,128,128],[213,62,250,255,255,128,128,128,128,128,128],[55,93,255,128,128,128,128,128,128,128,128]],[[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128]]],[[[202,24,213,235,186,191,220,160,240,175,255],[126,38,182,232,169,184,228,174,255,187,128],[61,46,138,219,151,178,240,170,255,216,128]],[[1,112,230,250,199,191,247,159,255,255,128],[166,109,228,252,211,215,255,174,128,128,128],[39,77,162,232,172,180,245,178,255,255,128]],[[1,52,220,246,198,199,249,220,255,255,128],[124,74,191,243,183,193,250,221,255,255,128],[24,71,130,219,154,170,243,182,255,255,128]],[[1,182,225,249,219,240,255,224,128,128,128],[149,150,226,252,216,205,255,171,128,128,128],[28,108,170,242,183,194,254,223,255,255,128]],[[1,81,230,252,204,203,255,192,128,128,128],[123,102,209,247,188,196,255,233,128,128,128],[20,95,153,243,164,173,255,203,128,128,128]],[[1,222,248,255,216,213,128,128,128,128,128],[168,175,246,252,235,205,255,255,128,128,128],[47,116,215,255,211,212,255,255,128,128,128]],[[1,121,236,253,212,214,255,255,128,128,128],[141,84,213,252,201,202,255,219,128,128,128],[42,80,160,240,162,185,255,205,128,128,128]],[[1,1,255,128,128,128,128,128,128,128,128],[244,1,255,128,128,128,128,128,128,128,128],[238,1,255,128,128,128,128,128,128,128,128]]]],wo=[[[231,120,48,89,115,113,120,152,112],[152,179,64,126,170,118,46,70,95],[175,69,143,80,85,82,72,155,103],[56,58,10,171,218,189,17,13,152],[114,26,17,163,44,195,21,10,173],[121,24,80,195,26,62,44,64,85],[144,71,10,38,171,213,144,34,26],[170,46,55,19,136,160,33,206,71],[63,20,8,114,114,208,12,9,226],[81,40,11,96,182,84,29,16,36]],[[134,183,89,137,98,101,106,165,148],[72,187,100,130,157,111,32,75,80],[66,102,167,99,74,62,40,234,128],[41,53,9,178,241,141,26,8,107],[74,43,26,146,73,166,49,23,157],[65,38,105,160,51,52,31,115,128],[104,79,12,27,217,255,87,17,7],[87,68,71,44,114,51,15,186,23],[47,41,14,110,182,183,21,17,194],[66,45,25,102,197,189,23,18,22]],[[88,88,147,150,42,46,45,196,205],[43,97,183,117,85,38,35,179,61],[39,53,200,87,26,21,43,232,171],[56,34,51,104,114,102,29,93,77],[39,28,85,171,58,165,90,98,64],[34,22,116,206,23,34,43,166,73],[107,54,32,26,51,1,81,43,31],[68,25,106,22,64,171,36,225,114],[34,19,21,102,132,188,16,76,124],[62,18,78,95,85,57,50,48,51]],[[193,101,35,159,215,111,89,46,111],[60,148,31,172,219,228,21,18,111],[112,113,77,85,179,255,38,120,114],[40,42,1,196,245,209,10,25,109],[88,43,29,140,166,213,37,43,154],[61,63,30,155,67,45,68,1,209],[100,80,8,43,154,1,51,26,71],[142,78,78,16,255,128,34,197,171],[41,40,5,102,211,183,4,1,221],[51,50,17,168,209,192,23,25,82]],[[138,31,36,171,27,166,38,44,229],[67,87,58,169,82,115,26,59,179],[63,59,90,180,59,166,93,73,154],[40,40,21,116,143,209,34,39,175],[47,15,16,183,34,223,49,45,183],[46,17,33,183,6,98,15,32,183],[57,46,22,24,128,1,54,17,37],[65,32,73,115,28,128,23,128,205],[40,3,9,115,51,192,18,6,223],[87,37,9,115,59,77,64,21,47]],[[104,55,44,218,9,54,53,130,226],[64,90,70,205,40,41,23,26,57],[54,57,112,184,5,41,38,166,213],[30,34,26,133,152,116,10,32,134],[39,19,53,221,26,114,32,73,255],[31,9,65,234,2,15,1,118,73],[75,32,12,51,192,255,160,43,51],[88,31,35,67,102,85,55,186,85],[56,21,23,111,59,205,45,37,192],[55,38,70,124,73,102,1,34,98]],[[125,98,42,88,104,85,117,175,82],[95,84,53,89,128,100,113,101,45],[75,79,123,47,51,128,81,171,1],[57,17,5,71,102,57,53,41,49],[38,33,13,121,57,73,26,1,85],[41,10,67,138,77,110,90,47,114],[115,21,2,10,102,255,166,23,6],[101,29,16,10,85,128,101,196,26],[57,18,10,102,102,213,34,20,43],[117,20,15,36,163,128,68,1,26]],[[102,61,71,37,34,53,31,243,192],[69,60,71,38,73,119,28,222,37],[68,45,128,34,1,47,11,245,171],[62,17,19,70,146,85,55,62,70],[37,43,37,154,100,163,85,160,1],[63,9,92,136,28,64,32,201,85],[75,15,9,9,64,255,184,119,16],[86,6,28,5,64,255,25,248,1],[56,8,17,132,137,255,55,116,128],[58,15,20,82,135,57,26,121,40]],[[164,50,31,137,154,133,25,35,218],[51,103,44,131,131,123,31,6,158],[86,40,64,135,148,224,45,183,128],[22,26,17,131,240,154,14,1,209],[45,16,21,91,64,222,7,1,197],[56,21,39,155,60,138,23,102,213],[83,12,13,54,192,255,68,47,28],[85,26,85,85,128,128,32,146,171],[18,11,7,63,144,171,4,4,246],[35,27,10,146,174,171,12,26,128]],[[190,80,35,99,180,80,126,54,45],[85,126,47,87,176,51,41,20,32],[101,75,128,139,118,146,116,128,85],[56,41,15,176,236,85,37,9,62],[71,30,17,119,118,255,17,18,138],[101,38,60,138,55,70,43,26,142],[146,36,19,30,171,255,97,27,20],[138,45,61,62,219,1,81,188,64],[32,41,20,117,151,142,20,21,163],[112,19,12,61,195,128,48,4,24]]],ko=[[[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[176,246,255,255,255,255,255,255,255,255,255],[223,241,252,255,255,255,255,255,255,255,255],[249,253,253,255,255,255,255,255,255,255,255]],[[255,244,252,255,255,255,255,255,255,255,255],[234,254,254,255,255,255,255,255,255,255,255],[253,255,255,255,255,255,255,255,255,255,255]],[[255,246,254,255,255,255,255,255,255,255,255],[239,253,254,255,255,255,255,255,255,255,255],[254,255,254,255,255,255,255,255,255,255,255]],[[255,248,254,255,255,255,255,255,255,255,255],[251,255,254,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,253,254,255,255,255,255,255,255,255,255],[251,254,254,255,255,255,255,255,255,255,255],[254,255,254,255,255,255,255,255,255,255,255]],[[255,254,253,255,254,255,255,255,255,255,255],[250,255,254,255,254,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]]],[[[217,255,255,255,255,255,255,255,255,255,255],[225,252,241,253,255,255,254,255,255,255,255],[234,250,241,250,253,255,253,254,255,255,255]],[[255,254,255,255,255,255,255,255,255,255,255],[223,254,254,255,255,255,255,255,255,255,255],[238,253,254,254,255,255,255,255,255,255,255]],[[255,248,254,255,255,255,255,255,255,255,255],[249,254,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,253,255,255,255,255,255,255,255,255,255],[247,254,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,253,254,255,255,255,255,255,255,255,255],[252,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,254,254,255,255,255,255,255,255,255,255],[253,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,254,253,255,255,255,255,255,255,255,255],[250,255,255,255,255,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]]],[[[186,251,250,255,255,255,255,255,255,255,255],[234,251,244,254,255,255,255,255,255,255,255],[251,251,243,253,254,255,254,255,255,255,255]],[[255,253,254,255,255,255,255,255,255,255,255],[236,253,254,255,255,255,255,255,255,255,255],[251,253,253,254,254,255,255,255,255,255,255]],[[255,254,254,255,255,255,255,255,255,255,255],[254,254,254,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,254,255,255,255,255,255,255,255,255,255],[254,254,255,255,255,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]]],[[[248,255,255,255,255,255,255,255,255,255,255],[250,254,252,254,255,255,255,255,255,255,255],[248,254,249,253,255,255,255,255,255,255,255]],[[255,253,253,255,255,255,255,255,255,255,255],[246,253,253,255,255,255,255,255,255,255,255],[252,254,251,254,254,255,255,255,255,255,255]],[[255,254,252,255,255,255,255,255,255,255,255],[248,254,253,255,255,255,255,255,255,255,255],[253,255,254,254,255,255,255,255,255,255,255]],[[255,251,254,255,255,255,255,255,255,255,255],[245,251,254,255,255,255,255,255,255,255,255],[253,253,254,255,255,255,255,255,255,255,255]],[[255,251,253,255,255,255,255,255,255,255,255],[252,253,254,255,255,255,255,255,255,255,255],[255,254,255,255,255,255,255,255,255,255,255]],[[255,252,255,255,255,255,255,255,255,255,255],[249,255,254,255,255,255,255,255,255,255,255],[255,255,254,255,255,255,255,255,255,255,255]],[[255,255,253,255,255,255,255,255,255,255,255],[250,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]]]];
this.WebPGetDecoderVersion=this.Ld=function(){return 512};var $o=[0,1,2,3,6,4,5,6,6,6,6,6,6,6,6,7,0],Co=[[173,148,140,0],[176,155,140,135,0],[180,157,141,134,130,0],[254,254,243,230,196,177,153,140,133,130,129,0]],So=[0,1,4,8,5,2,3,6,9,12,13,10,7,11,14,15],Mo=u([di,ui],"");c(4,f);var xo=[[0,0,0,0],[1,0,0,0],[0,1,0,0],[1,1,0,0],[0,0,1,0],[1,0,1,0],[0,1,1,0],[1,1,1,0],[0,0,0,1],[1,0,0,1],[0,1,0,1],[1,1,0,1],[0,0,1,1],[1,0,1,1],[0,1,1,1],[1,1,1,1]],Io=134480385,Ao=16,Eo=-227,To=482,Do=[Ut,function(e){return e},function(e,t,n){return t[n+0]},function(e,t,n){return t[n+1]},function(e,t,n){return t[n-1]},function(e,t,n){return Ft(Ft(e,t[n+1]),t[n+0])},function(e,t,n){return Ft(e,t[n-1])},function(e,t,n){return Ft(e,t[n+0])},function(e,t,n){return Ft(t[n-1],t[n+0])},function(e,t,n){return Ft(t[n+0],t[n+1])},function(e,t,n){return Ft(Ft(e,t[n-1]),Ft(t[n+0],t[n+1]))},function(e,t,n){return 0>=Math.abs((e>>24&255)-(t[n-1]>>24&255))-Math.abs((t[n+0]>>24&255)-(t[n-1]>>24&255))+(Math.abs((e>>16&255)-(t[n-1]>>16&255))-Math.abs((t[n+0]>>16&255)-(t[n-1]>>16&255)))+(Math.abs((e>>8&255)-(t[n-1]>>8&255))-Math.abs((t[n+0]>>8&255)-(t[n-1]>>8&255)))+(Math.abs((255&e)-(255&t[n-1]))-Math.abs((255&t[n+0])-(255&t[n-1])))?t[n+0]:e},function(e,t,n){return(Rt((e>>24&255)+(t[n+0]>>24&255)-(t[n-1]>>24&255))<<24|Rt((e>>16&255)+(t[n+0]>>16&255)-(t[n-1]>>16&255))<<16|Rt((e>>8&255)+(t[n+0]>>8&255)-(t[n-1]>>8&255))<<8|Rt((255&e)+(255&t[n+0])-(255&t[n-1])))>>>0},function(e,t,n){var a=t[n-1];return e=Ft(e,t[n+0]),(Nt(e>>24&255,a>>24&255)<<24|Nt(e>>16&255,a>>16&255)<<16|Nt(e>>8&255,a>>8&255)<<8|Nt(e>>0&255,a>>0&255))>>>0},Ut,Ut],Po={Cc:f,Bc:f,Kc:f},Fo=16,Ro=16,No=16,Uo=[2,3,7],Oo=[3,3,11],Bo=0,Lo=1,jo=2,qo=3,Ho=4,Vo=[xa+Ia,xa,xa,xa,40],zo=19,Wo=[17,18,0,1,2,3,4,5,16,6,7,8,9,10,11,12,13,14,15],Go=120,Ko=[24,7,23,25,40,6,39,41,22,26,38,42,56,5,55,57,21,27,54,58,37,43,72,4,71,73,20,28,53,59,70,74,36,44,88,69,75,52,60,3,87,89,19,29,86,90,35,45,68,76,85,91,51,61,104,2,103,105,18,30,102,106,34,46,84,92,67,77,101,107,50,62,120,1,119,121,83,93,17,31,100,108,66,78,118,122,33,47,117,123,49,63,99,109,82,94,0,116,124,65,79,16,32,98,110,48,115,125,81,95,64,114,126,97,111,80,113,127,96,112],Yo=1<<Ao-1,Zo=c(256,0),Xo=c(256,0),Jo=c(256,_),Qo=c(256,_),es=c(To-Eo,f),ts=c(To-Eo,f),ns=0,as=Array(Jn),is=[function(e,t,n,a,i,o,s,r,l,c,d,u,p){gn(e,t,n,a,i,o,s,r,l,c,d,u,p,Mt,3)},hn,function(e,t,n,a,i,o,s,r,l,c,d,u,p){gn(e,t,n,a,i,o,s,r,l,c,d,u,p,Et,3)},fn,_n,vn,function(e,t,n,a,i,o,s,r,l,c,d,u,p){gn(e,t,n,a,i,o,s,r,l,c,d,u,p,xt,2)},hn,fn,_n,vn];this.Hd=function(e,t,n,a){return Rn(Bn,e,t,n,a)},this.Id=function(e,t,n,a){return Rn(Ln,e,t,n,a)},this.Jd=function(e,t,n,a){return Rn(Vn,e,t,n,a)},this.Ed=function(e,t,n,a){return Rn(Hn,e,t,n,a)},this.Fd=function(e,t,n,a){return Rn(jn,e,t,n,a)},this.Gd=function(e,t,n,a){return Rn(qn,e,t,n,a)},this.WebPDecode=this.Dd=function(t,n,a){var i=e(ua),o="VP8StatusCode";return a==g?na:(o=Nn(t,[0],[n],a.input),o!=ea?o==ra?aa:o:(i.j=a.j,i.Qa=a.Qa,o=Fn(t,0,[n],i)))}}}(),function(){"use strict";angular.module("toaster",[]).constant("toasterConfig",{limit:0,"tap-to-dismiss":!0,"close-button":!1,"close-html":'<button class="toast-close-button" type="button">&times;</button>',"newest-on-top":!0,"time-out":5e3,"icon-classes":{error:"toast-error",info:"toast-info",wait:"toast-wait",success:"toast-success",warning:"toast-warning"},"body-output-type":"","body-template":"toasterBodyTmpl.html","icon-class":"toast-info","position-class":"toast-top-right","title-class":"toast-title","message-class":"toast-message","prevent-duplicates":!1,"mouseover-timer-stop":!0}).service("toaster",["$rootScope","toasterConfig",function(e,t){function n(e){return function(t,n,a,i,o,s,r,l,c){return angular.isString(t)?this.pop(e,t,n,a,i,o,s,r,l,c):this.pop(angular.extend(t,{type:e}))}}var a=function(){var e={};return e.newGuid=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0,n="x"==e?t:3&t|8;return n.toString(16)})},e}();this.pop=function(t,n,i,o,s,r,l,c,d,u){if(angular.isObject(t)){var p=t;this.toast={type:p.type,title:p.title,body:p.body,timeout:p.timeout,bodyOutputType:p.bodyOutputType,clickHandler:p.clickHandler,showCloseButton:p.showCloseButton,closeHtml:p.closeHtml,toastId:p.toastId,onShowCallback:p.onShowCallback,onHideCallback:p.onHideCallback,directiveData:p.directiveData},l=p.toasterId}else this.toast={type:t,title:n,body:i,timeout:o,bodyOutputType:s,clickHandler:r,showCloseButton:c,toastId:d,onHideCallback:u};return this.toast.toastId&&this.toast.toastId.length||(this.toast.toastId=a.newGuid()),e.$emit("toaster-newToast",l,this.toast.toastId),{toasterId:l,toastId:this.toast.toastId}},this.clear=function(t,n){angular.isObject(t)?e.$emit("toaster-clearToasts",t.toasterId,t.toastId):e.$emit("toaster-clearToasts",t,n)};for(var i in t["icon-classes"])this[i]=n(i)}]).factory("toasterEventRegistry",["$rootScope",function(e){var t,n=null,a=null,i=[],o=[];return t={setup:function(){n||(n=e.$on("toaster-newToast",function(e,t,n){for(var a=0,o=i.length;o>a;a++)i[a](e,t,n)})),a||(a=e.$on("toaster-clearToasts",function(e,t,n){for(var a=0,i=o.length;i>a;a++)o[a](e,t,n)}))},subscribeToNewToastEvent:function(e){i.push(e)},subscribeToClearToastsEvent:function(e){o.push(e)},unsubscribeToNewToastEvent:function(e){var t=i.indexOf(e);t>=0&&i.splice(t,1),0===i.length&&(n(),n=null)},unsubscribeToClearToastsEvent:function(e){var t=o.indexOf(e);t>=0&&o.splice(t,1),0===o.length&&(a(),a=null)}},{setup:t.setup,subscribeToNewToastEvent:t.subscribeToNewToastEvent,subscribeToClearToastsEvent:t.subscribeToClearToastsEvent,unsubscribeToNewToastEvent:t.unsubscribeToNewToastEvent,unsubscribeToClearToastsEvent:t.unsubscribeToClearToastsEvent}}]).directive("directiveTemplate",["$compile","$injector",function(e,t){return{restrict:"A",scope:{directiveName:"@directiveName",directiveData:"@directiveData"},replace:!0,link:function(n,a,i){n.$watch("directiveName",function(o){if(angular.isUndefined(o)||o.length<=0)throw new Error("A valid directive name must be provided via the toast body argument when using bodyOutputType: directive");var s;try{s=t.get(i.$normalize(o)+"Directive")}catch(r){throw new Error(o+" could not be found. The name should appear as it exists in the markup, not camelCased as it would appear in the directive declaration, e.g. directive-name not directiveName.")}var l=s[0];if(l.scope!==!0&&l.scope)throw new Error("Cannot use a directive with an isolated scope. The scope must be either true or falsy (e.g. false/null/undefined). Occurred for directive "+o+".");if(l.restrict.indexOf("A")<0)throw new Error('Directives must be usable as attributes. Add "A" to the restrict option (or remove the option entirely). Occurred for directive '+o+".");n.directiveData&&(n.directiveData=angular.fromJson(n.directiveData));var c=e("<div "+o+"></div>")(n);a.append(c)})}}}]).directive("toasterContainer",["$parse","$rootScope","$interval","$sce","toasterConfig","toaster","toasterEventRegistry",function(e,t,n,a,i,o,s){return{replace:!0,restrict:"EA",scope:!0,link:function(t,r,l){function c(e,a){e.timeoutPromise=n(function(){t.removeToast(e.toastId)},a,1)}function d(n,i){if(n.type=g["icon-classes"][n.type],n.type||(n.type=g["icon-class"]),g["prevent-duplicates"]===!0&&t.toasters.length){if(t.toasters[t.toasters.length-1].body===n.body)return;var o,s,r=!1;for(o=0,s=t.toasters.length;s>o;o++)if(t.toasters[o].toastId===i){r=!0;break}if(r)return}var l=g["close-button"];if("boolean"==typeof n.showCloseButton);else if("boolean"==typeof l)n.showCloseButton=l;else if("object"==typeof l){var c=l[n.type];"undefined"!=typeof c&&null!==c&&(n.showCloseButton=c)}else n.showCloseButton=!1;switch(n.showCloseButton&&(n.closeHtml=a.trustAsHtml(n.closeHtml||t.config.closeHtml)),n.bodyOutputType=n.bodyOutputType||g["body-output-type"],n.bodyOutputType){case"trustedHtml":n.html=a.trustAsHtml(n.body);break;case"template":n.bodyTemplate=n.body||g["body-template"];break;case"templateWithData":var d=e(n.body||g["body-template"]),u=d(t);n.bodyTemplate=u.template,n.data=u.data;break;case"directive":n.html=n.body}t.configureTimer(n),g["newest-on-top"]===!0?(t.toasters.unshift(n),g.limit>0&&t.toasters.length>g.limit&&t.toasters.pop()):(t.toasters.push(n),g.limit>0&&t.toasters.length>g.limit&&t.toasters.shift()),angular.isFunction(n.onShowCallback)&&n.onShowCallback()}function u(e){var a=t.toasters[e];a.timeoutPromise&&n.cancel(a.timeoutPromise),t.toasters.splice(e,1),angular.isFunction(a.onHideCallback)&&a.onHideCallback()}function p(e){for(var n=t.toasters.length-1;n>=0;n--)m(e)?u(n):t.toasters[n].toastId==e&&u(n)}function m(e){return angular.isUndefined(e)||null===e}var g;g=angular.extend({},i,t.$eval(l.toasterOptions)),t.config={toasterId:g["toaster-id"],position:g["position-class"],title:g["title-class"],message:g["message-class"],tap:g["tap-to-dismiss"],closeButton:g["close-button"],closeHtml:g["close-html"],animation:g["animation-class"],mouseoverTimer:g["mouseover-timer-stop"]},t.$on("$destroy",function(){s.unsubscribeToNewToastEvent(t._onNewToast),s.unsubscribeToClearToastsEvent(t._onClearToasts)}),t.configureTimer=function(e){var t=angular.isNumber(e.timeout)?e.timeout:g["time-out"];"object"==typeof t&&(t=t[e.type]),t>0&&c(e,t)},t.removeToast=function(e){var n,a;for(n=0,a=t.toasters.length;a>n;n++)if(t.toasters[n].toastId===e){u(n);break}},t.toasters=[],t._onNewToast=function(e,n,a){(m(t.config.toasterId)&&m(n)||!m(t.config.toasterId)&&!m(n)&&t.config.toasterId==n)&&d(o.toast,a)},t._onClearToasts=function(e,n,a){("*"==n||m(t.config.toasterId)&&m(n)||!m(t.config.toasterId)&&!m(n)&&t.config.toasterId==n)&&p(a)},s.setup(),s.subscribeToNewToastEvent(t._onNewToast),s.subscribeToClearToastsEvent(t._onClearToasts)},controller:["$scope","$element","$attrs",function(e){e.stopTimer=function(t){e.config.mouseoverTimer===!0&&t.timeoutPromise&&(n.cancel(t.timeoutPromise),t.timeoutPromise=null)},e.restartTimer=function(t){e.config.mouseoverTimer===!0?t.timeoutPromise||e.configureTimer(t):null===t.timeoutPromise&&e.removeToast(t.toastId)},e.click=function(t,n){if(e.config.tap===!0||t.showCloseButton===!0&&n===!0){var a=!0;t.clickHandler&&(angular.isFunction(t.clickHandler)?a=t.clickHandler(t,n):angular.isFunction(e.$parent.$eval(t.clickHandler))?a=e.$parent.$eval(t.clickHandler)(t,n):console.log("TOAST-NOTE: Your click handler is not inside a parent scope of toaster-container.")),a&&e.removeToast(t.toastId)}}}],template:'<div id="toast-container" ng-class="[config.position, config.animation]"><div ng-repeat="toaster in toasters" class="toast" ng-class="toaster.type" ng-click="click(toaster)" ng-mouseover="stopTimer(toaster)" ng-mouseout="restartTimer(toaster)"><div ng-if="toaster.showCloseButton" ng-click="click(toaster, true)" ng-bind-html="toaster.closeHtml"></div><div ng-class="config.title">{{toaster.title}}</div><div ng-class="config.message" ng-switch on="toaster.bodyOutputType"><div ng-switch-when="trustedHtml" ng-bind-html="toaster.html"></div><div ng-switch-when="template"><div ng-include="toaster.bodyTemplate"></div></div><div ng-switch-when="templateWithData"><div ng-include="toaster.bodyTemplate"></div></div><div ng-switch-when="directive"><div directive-template directive-name="{{toaster.html}}" directive-data="{{toaster.directiveData}}"></div></div><div ng-switch-default >{{toaster.body}}</div></div></div></div>'}}])}(window,document);var _logTimer=(new Date).getTime();window.onAnimationFrameCallback=Config.Modes.animations&&"function"==typeof window.requestAnimationFrame?function(e){return function(){window.requestAnimationFrame(e)}}:function(e){return e},function(e){function t(){return{shortIndexes:{},fullTexts:{}}}function n(e){var t="%"==e.charAt(0);return e=e.replace(s," ").replace(r,""),e=e.replace(/[^A-Za-z0-9]/g,function(e){return Config.LatinizeMap[e]||e}),e=e.toLowerCase(),t&&(e="%"+e),e}function a(e){return e&&e.toLowerCase()||""}function i(e,t,a){if(void 0!==a.fullTexts[e])return!1;if(t=n(t),!t.length)return!1;var i=a.shortIndexes;a.fullTexts[e]=t,angular.forEach(t.split(" "),function(t){var n,a,o=Math.min(t.length,3);for(a=1;o>=a;a++)n=t.substr(0,a),void 0===i[n]?i[n]=[e]:i[n].push(e)})}function o(e,t){var a=t.shortIndexes,i=t.fullTexts;e=n(e);var o,s,r,l,c,d=e.split(" "),u=!1;for(s=0;s<d.length;s++){if(o=a[d[s].substr(0,3)],!o){u=[];break}(u===!1||u.length>o.length)&&(u=o)}for(o={},r=0;r<u.length;r++){for(c=!0,l=i[u[r]],s=0;s<d.length;s++)if(-1==l.indexOf(d[s])){c=!1;break}c&&(o[u[r]]=!0)}return o}var s=/[`~!@#$%^&*()\-_=+\[\]\\|{}'";:\/?.>,<\s]+/g,r=/^\s+|\s$/g;e.SearchIndexManager={createIndex:t,indexObject:i,cleanSearchText:n,cleanUsername:a,search:o}}(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 a=[],i=0;i<this.offset;i++)a.push(this.byteView[i]);return a},TLSerialization.prototype.checkLength=function(e){if(!(this.offset+e<this.maxLength)){console.trace("Increase buffer",this.offset,e,this.maxLength),this.maxLength=4*Math.ceil(Math.max(2*this.maxLength,this.offset+e+16)/4);var t=this.buffer,n=new Int32Array(t);this.createBuffer(),new Int32Array(this.buffer).set(n)}},TLSerialization.prototype.writeInt=function(e,t){this.debug&&console.log(">>>",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),a=new Int32Array(n),i=new Float64Array(n);i[0]=e,this.writeInt(a[0],(t||"")+":double[low]"),this.writeInt(a[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 a=n.length;253>=a?this.byteView[this.offset++]=a:(this.byteView[this.offset++]=254,this.byteView[this.offset++]=255&a,this.byteView[this.offset++]=(65280&a)>>8,this.byteView[this.offset++]=(16711680&a)>>16);for(var i=0;a>i;i++)this.byteView[this.offset++]=n.charCodeAt(i);for(;this.offset%4;)this.byteView[this.offset++]=0},TLSerialization.prototype.storeBytes=function(e,t){e instanceof ArrayBuffer?e=new Uint8Array(e):void 0===e&&(e=[]),this.debug&&console.log(">>>",bytesToHex(e),(t||"")+":bytes");var n=e.byteLength||e.length;for(this.checkLength(n+8),253>=n?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 a=e.length;if(t%32||8*a!=t)throw new Error("Invalid bits: "+t+", "+e.length);this.debug&&console.log(">>>",bytesToHex(e),(n||"")+":int"+t),this.checkLength(a),this.byteView.set(e,this.offset),this.offset+=a},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,a=this.mtproto?Config.Schema.MTProto:Config.Schema.API,i=!1;for(n=0;n<a.methods.length;n++)if(a.methods[n].method==e){i=a.methods[n];break}if(!i)throw new Error("No method "+e+" found");this.storeInt(intToUint(i.id),e+"[id]");var o,s,n,r,l,c=i.params.length;for(n=0;c>n;n++){if(o=i.params[n],s=o.type,-1!==s.indexOf("?")){if(r=s.split("?"),l=r[0].split("."),!(t[l[0]]&1<<l[1]))continue;s=r[1]}this.storeObject(t[o.name],s,e+"["+o.name+"]")}return i.type},TLSerialization.prototype.storeObject=function(e,t,n){switch(t){case"#":case"int":return this.storeInt(e,n);case"long":return this.storeLong(e,n);case"int128":return this.storeIntBytes(e,128,n);case"int256":return this.storeIntBytes(e,256,n);case"int512":return this.storeIntBytes(e,512,n);case"string":return this.storeString(e,n);case"bytes":return this.storeBytes(e,n);case"double":return this.storeDouble(e,n);case"Bool":return this.storeBool(e,n);case"true":return}if(angular.isArray(e)){if("Vector"==t.substr(0,6))this.writeInt(481674261,n+"[id]");else if("vector"!=t.substr(0,6))throw new Error("Invalid vector type "+t);var a=t.substr(7,t.length-8);this.writeInt(e.length,n+"[count]");for(var i=0;i<e.length;i++)this.storeObject(e[i],a,n+"["+i+"]");return!0}if("vector"==t.substr(0,6).toLowerCase())throw new Error("Invalid vector object");if(!angular.isObject(e))throw new Error("Invalid object for type "+t);var i,o=this.mtproto?Config.Schema.MTProto:Config.Schema.API,s=e._,r=!1,l=!1;for((r="%"==t.charAt(0))&&(t=t.substr(1)),i=0;i<o.constructors.length;i++)if(o.constructors[i].predicate==s){l=o.constructors[i];break}if(!l)throw new Error("No predicate "+s+" found");s==t&&(r=!0),r||this.writeInt(intToUint(l.id),n+"["+s+"][id]");var c,t,i,d,u,p=l.params.length;for(i=0;p>i;i++){if(c=l.params[i],t=c.type,-1!==t.indexOf("?")){if(d=t.split("?"),u=d[0].split("."),!(e[u[0]]&1<<u[1]))continue;t=d[1]}this.storeObject(e[c.name],t,n+"["+s+"]["+c.name+"]")}return l.type},TLDeserialization.prototype.readInt=function(e){if(this.offset>=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),a=new Float64Array(t);return n[0]=this.readInt((e||"")+":double[low]"),n[1]=this.readInt((e||"")+":double[high]"),a[0]},TLDeserialization.prototype.fetchLong=function(e){var t=this.readInt((e||"")+":long[low]"),n=this.readInt((e||"")+":long[high]"),a=bigint(n).shiftLeft(32).add(bigint(t)).toString();return a},TLDeserialization.prototype.fetchBool=function(e){var t=this.readInt((e||"")+":bool");return 2574415285==t?!0:3162085175==t?!1:(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="",a=0;t>a;a++)n+=String.fromCharCode(this.byteView[this.offset++]);for(;this.offset%4;)this.offset++;try{var i=decodeURIComponent(escape(n))}catch(o){var i=n}return this.debug&&console.log("<<<",i,(e||"")+":string"),i},TLDeserialization.prototype.fetchBytes=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;var n=this.byteView.subarray(this.offset,this.offset+t);for(this.offset+=t;this.offset%4;)this.offset++;return this.debug&&console.log("<<<",bytesToHex(n),(e||"")+":bytes"),n},TLDeserialization.prototype.fetchIntBytes=function(e,t,n){if(e%32)throw new Error("Invalid bits: "+e);var a=e/8;if(t){var i=this.byteView.subarray(this.offset,this.offset+a);return this.offset+=a,i}for(var o=[],s=0;a>s;s++)o.push(this.byteView[this.offset++]);return this.debug&&console.log("<<<",bytesToHex(o),(n||"")+":int"+e),o},TLDeserialization.prototype.fetchRawBytes=function(e,t,n){if(e===!1&&(e=this.readInt((n||"")+"_length")),t){var a=new Uint8Array(e);return a.set(this.byteView.subarray(this.offset,this.offset+e)),this.offset+=e,a}for(var a=[],i=0;e>i;i++)a.push(this.byteView[this.offset++]);return this.debug&&console.log("<<<",bytesToHex(a),n||""),a},TLDeserialization.prototype.fetchObject=function(e,t){switch(e){case"#":case"int":return this.fetchInt(t);case"long":return this.fetchLong(t);case"int128":return this.fetchIntBytes(128,!1,t);case"int256":return this.fetchIntBytes(256,!1,t);case"int512":return this.fetchIntBytes(512,!1,t);case"string":return this.fetchString(t);case"bytes":return this.fetchBytes(t);case"double":return this.fetchDouble(t);case"Bool":return this.fetchBool(t);case"true":return!0}if(t=t||e||"Object","Vector"==e.substr(0,6)||"vector"==e.substr(0,6)){if("V"==e.charAt(0)){var n=this.readInt(t+"[id]"),a=uintToInt(n);if(812830625==a){var i=this.fetchBytes(t+"[packed_string]"),o=gzipUncompress(i),s=bytesToArrayBuffer(o),r=new TLDeserialization(s);return r.fetchObject(e,t)}if(481674261!=a)throw new Error("Invalid vector constructor "+n)}var l=this.readInt(t+"[count]"),c=[];if(l>0)for(var d=e.substr(7,e.length-8),u=0;l>u;u++)c.push(this.fetchObject(d,t+"["+u+"]"));return c}var p=this.mtproto?Config.Schema.MTProto:Config.Schema.API,m=!1,g=!1;if("%"==e.charAt(0)){for(var h=e.substr(1),u=0;u<p.constructors.length;u++)if(p.constructors[u].type==h){g=p.constructors[u];break}if(!g)throw new Error("Constructor not found for type: "+e)}else if(e.charAt(0)>=97&&e.charAt(0)<=122){for(var u=0;u<p.constructors.length;u++)if(p.constructors[u].predicate==e){g=p.constructors[u];break}if(!g)throw new Error("Constructor not found for predicate: "+e)}else{var n=this.readInt(t+"[id]"),a=uintToInt(n);if(812830625==a){var i=this.fetchBytes(t+"[packed_string]"),o=gzipUncompress(i),s=bytesToArrayBuffer(o),r=new TLDeserialization(s);return r.fetchObject(e,t)}var f=p.constructorsIndex;if(!f){p.constructorsIndex=f={};for(var u=0;u<p.constructors.length;u++)f[p.constructors[u].id]=u}var u=f[a];u&&(g=p.constructors[u]);var _=!1;if(!g&&this.mtproto){var v=Config.Schema.API;for(u=0;u<v.constructors.length;u++)if(v.constructors[u].id==a){g=v.constructors[u],delete this.mtproto,_=!0;break}}if(!g)throw new Error("Constructor not found: "+n+" "+this.fetchInt()+" "+this.fetchInt())}m=g.predicate;var c={_:m},y=(this.mtproto?"mt_":"")+m,b=this;if(this.override[y])this.override[y].apply(this,[c,t+"["+m+"]"]);else{var u,w,e,k,$,C,S,l=g.params.length;for(u=0;l>u;u++){if(w=g.params[u],e=w.type,"#"==e&&void 0===c.pFlags&&(c.pFlags={}),k=-1!==e.indexOf("?")){if($=e.split("?"),C=$[0].split("."),!(c[C[0]]&1<<C[1]))continue;e=$[1]}S=b.fetchObject(e,t+"["+m+"]["+w.name+"]"),k&&"true"===e?c.pFlags[w.name]=S:c[w.name]=S}}return _&&(this.mtproto=!0),c},TLDeserialization.prototype.getOffset=function(){return this.offset},TLDeserialization.prototype.fetchEnd=function(){if(this.offset!=this.byteView.length)throw new Error("Fetch end with non-empty buffer");return!0},angular.module("izhukov.utils",[]).provider("Storage",function(){this.setPrefix=function(e){ConfigStorage.prefix(e)},this.$get=["$q",function(e){var t={};return angular.forEach(["get","set","remove"],function(n){t[n]=function(){var t=e.defer(),a=Array.prototype.slice.call(arguments);return a.push(function(e){t.resolve(e)}),ConfigStorage[n].apply(ConfigStorage,a),t.promise}}),t}]}).service("qSync",function(){return{when:function(e){return{then:function(t){return t(e)}}},reject:function(e){return{then:function(t,n){return n?n(e):void 0}}}}}).service("FileManager",["$window","$q","$timeout","qSync",function(e,t,n,a){function i(){return f}function o(e,n){return l(n).then(function(n){return s(n,e).then(function(){return n},function(e){return t.reject(e)})})}function s(e,n){var a=t.defer();if(e.onwriteend=function(){a.resolve()},e.onerror=function(e){a.reject(e)},n.file)n.file(function(t){e.write(t)},function(e){a.reject(e)});else if(n instanceof Blob)e.write(n);else try{var i=blobConstruct([bytesToArrayBuffer(n)]);e.write(i)}catch(o){a.reject(o)}return a.promise}function r(n,i,o){if(!e.chrome||!chrome.fileSystem||!chrome.fileSystem.chooseEntry)return a.reject();var s=t.defer();return chrome.fileSystem.chooseEntry({type:"saveFile",suggestedName:n,accepts:[{mimeTypes:[o],extensions:[i]}]},function(e){s.resolve(e)}),s.promise}function l(e){var n=t.defer();return e.createWriter(function(e){n.resolve(e)},function(e){n.reject(e)}),n.promise}function c(e,t){var n=[],a={write:function(e){return f?(n.push(e),void setZeroTimeout(function(){a.onwriteend&&a.onwriteend()})):(a.onerror&&a.onerror(new Error("Blob not supported by browser")),!1)},truncate:function(){n=[]},finalize:function(){var a=blobConstruct(n,e);return t&&t(a),a}};return a}function d(e,t){return void 0!==e.toURL?e.toURL(t):e instanceof Blob?URL.createObjectURL(e):"data:"+t+";base64,"+bytesToBase64(e)}function u(e){if(e instanceof Blob){var n=t.defer();try{var a=new FileReader;return a.onloadend=function(e){n.resolve(new Uint8Array(e.target.result))},a.onerror=function(e){n.reject(e)},a.readAsArrayBuffer(e),n.promise}catch(i){return t.reject(i)}}else if(e.file){var n=t.defer();return e.file(function(e){u(e).then(function(e){n.resolve(e)},function(e){n.reject(e)})},function(e){n.reject(e)}),n.promise}return t.when(e)}function p(e){var n;try{var a=new FileReader;a.onloadend=function(){n.resolve(a.result)},a.readAsDataURL(e)}catch(i){return t.reject(i)}return n=t.defer(),n.promise}function m(e,t){if(h&&e instanceof Blob){var t=e.type||e.mimeType||t||"";if(!t.match(/image\/(jpeg|gif|png|bmp)|video\/quicktime/))return p(e)}return a.when(d(e,t))}function g(e,t,a){if(window.navigator&&void 0!==navigator.msSaveBlob)return window.navigator.msSaveBlob(e,a),!1;if(window.navigator&&navigator.getDeviceStorage){var i="sdcard",o="telegram/";switch(t.split("/")[0]){case"video":i="videos";break;case"audio":i="music";break;case"image":i="pictures"}var s=navigator.getDeviceStorage(i),r=s.addNamed(e,o+a);return r.onsuccess=function(){console.log("Device storage save result",this.result)},void(r.onerror=function(){})}var l=!1;window.safari&&(l=window.open()),m(e,t).then(function(e){if(l)try{return void(l.location.href=e)}catch(t){}var i=document.createElementNS("http://www.w3.org/1999/xhtml","a");i.href=e,i.target="_blank",i.download=a,i.dataset&&(i.dataset.downloadurl=["video/quicktime",a,e].join(":")),$(i).css({position:"absolute",top:1,left:1}).appendTo("body");try{var o=document.createEvent("MouseEvents");o.initMouseEvent("click",!0,!1,window,0,0,0,0,0,!1,!1,!1,!1,0,null),i.dispatchEvent(o)}catch(t){console.error("Download click error",t);try{i[0].click()}catch(t){window.open(e,"_blank")}}n(function(){$(i).remove()},100)})}e.URL=e.URL||e.webkitURL,e.BlobBuilder=e.BlobBuilder||e.WebKitBlobBuilder||e.MozBlobBuilder;var h=-1!=navigator.userAgent.indexOf("Safari")&&-1==navigator.userAgent.indexOf("Chrome"),f=!0;try{blobConstruct([],"")}catch(_){f=!1}return{isAvailable:i,copy:o,write:s,getFileWriter:l,getFakeFileWriter:c,chooseSave:r,getUrl:d,getDataUrl:p,getByteArray:u,getFileCorrectUrl:m,download:g}}]).service("IdbFileStorage",["$q","$window","FileManager",function(e,t,n){function a(){return h}function i(){if(u)return u;try{var t=indexedDB.open(p,g),n=e.defer(),a=function(e){e.createObjectStore(m)};if(!t)throw new Exception}catch(i){return console.error("error opening db",i.message),h=!1,e.reject(i)}var o=!1;return setTimeout(function(){o||t.onerror({type:"IDB_CREATE_TIMEOUT"})},3e3),t.onsuccess=function(){o=!0,db=t.result,db.onerror=function(e){h=!1,console.error("Error creating/accessing IndexedDB database",e),n.reject(e)},n.resolve(db)},t.onerror=function(e){o=!0,h=!1,console.error("Error creating/accessing IndexedDB database",e),n.reject(e)},t.onupgradeneeded=function(e){o=!0,console.warn("performing idb upgrade from",e.oldVersion,"to",e.newVersion);var t=e.target.result;1==e.oldVersion&&t.deleteObjectStore(m),a(t)},u=n.promise}function o(t,n){return i().then(function(a){if(!f)return s(a,t,n);n instanceof Blob||(n=blobConstruct([n]));try{var i=a.transaction([m],IDBTransaction.READ_WRITE||"readwrite").objectStore(m),o=i.put(n,t)}catch(r){return f?(f=!1,s(a,t,n)):(h=!1,e.reject(r))}var l=e.defer();return o.onsuccess=function(){l.resolve(n)},o.onerror=function(e){l.reject(e)},l.promise})}function s(t,n,a){if(l(a)>10485760)return e.reject();if(!(a instanceof Blob)){var i=a.type||"image/jpeg",o="data:"+i+";base64,"+bytesToBase64(a);return r(t,n,o).then(function(){return a})}try{var s=new FileReader}catch(c){return h=!1,e.reject()}var d=e.defer();s.onloadend=function(){r(t,n,s.result).then(function(){d.resolve(a)},function(e){d.reject(e)})},s.onerror=function(e){d.reject(e)};try{s.readAsDataURL(a)}catch(c){return h=!1,e.reject()}return d.promise}function r(t,n,a){try{var i=t.transaction([m],IDBTransaction.READ_WRITE||"readwrite").objectStore(m),o=i.put(a,n)}catch(s){return h=!1,e.reject(s)}var r=e.defer();return o.onsuccess=function(){r.resolve()},o.onerror=function(e){r.reject(e)},r.promise}function l(e){return e.size||e.byteLength||e.length}function c(t){return i().then(function(n){var a=e.defer(),i=n.transaction([m],IDBTransaction.READ||"readonly").objectStore(m),o=i.get(t);return o.onsuccess=function(e){var t=e.target.result;void 0===t?a.reject():a.resolve("string"==typeof t&&"data:"===t.substr(0,5)?dataUrlToBlob(t):t)},o.onerror=function(e){a.reject(e)},a.promise})}function d(t,a){var i=n.getFakeFileWriter(a,function(e){o(t,e)});return e.when(i)}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",m="files",g=2,h=void 0!==t.indexedDB&&void 0!==t.IDBTransaction;h&&-1!=navigator.userAgent.indexOf("Safari")&&-1==navigator.userAgent.indexOf("Chrome")&&navigator.userAgent.match(/Version\/[678]/)&&(h=!1);var f=h||!1;return i(),{name:"IndexedDB",isAvailable:a,saveFile:o,getFile:c,getFileWriter:d}}]).service("TmpfsFileStorage",["$q","$window","FileManager",function(e,t,n){function a(){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 i(){return c}function o(t,n){return n=n||1,a().then(function(){var a=e.defer();return cachedFs.root.getFile(t,{create:!1},function(e){e.file(function(t){t.size>=n?a.resolve(e):a.reject(new Error("FILE_NOT_FOUND"))},function(e){console.log(dT(),"error",e),a.reject(e)})},function(){a.reject(new Error("FILE_NOT_FOUND"))}),a.promise})}function s(e,t){return r(e).then(function(e){return n.write(e,t).then(function(){return e.finalize()})})}function r(t){return a().then(function(){var a=e.defer();return cachedFs.root.getFile(t,{create:!0},function(e){n.getFileWriter(e).then(function(t){t.finalize=function(){return e},a.resolve(t)},function(e){c=!1,a.reject(e)})},function(e){c=!1,a.reject(e)}),a.promise})}t.requestFileSystem=t.requestFileSystem||t.webkitRequestFileSystem;var l,c=void 0!==t.requestFileSystem;return a(),{name:"TmpFS",isAvailable:i,saveFile:s,getFile:o,getFileWriter:r}}]).service("MemoryFileStorage",["$q","FileManager",function(e,t){function n(){return!0}function a(t){return s[t]?e.when(s[t]):e.reject(new Error("FILE_NOT_FOUND"))}function i(t,n){return e.when(s[t]=n)}function o(n,a){var o=t.getFakeFileWriter(a,function(e){i(n,e)});return e.when(o)}var s={};return{name:"Memory",isAvailable:n,saveFile:i,getFile:a,getFileWriter:o}
}]).service("WebpManager",["qSync","$q",function(e,t){function n(e){var t=(tsNow(),new WebPDecoder),n=t.WebPDecoderConfig,a=n.j||n.output,i=n.input;if(!t.WebPInitDecoderConfig(n))return console.error("[webpjs] Library version mismatch!"),!1;var o=t.VP8StatusCode;status=t.WebPGetFeatures(e,e.length,i),status!=(o.VP8_STATUS_OK||0)&&console.error("[webpjs] status error",status,o);var l=t.WEBP_CSP_MODE;a.colorspace=l.MODE_RGBA,a.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,o),!1;var d=a.c.RGBA.ma;if(!d)return!1;var u=a.height,p=a.width;s&&r?r.clearRect(0,0,s.width,s.height):(s=document.createElement("canvas"),r=s.getContext("2d")),s.height=u,s.width=p;for(var m=r.createImageData(s.width,s.height),g=m.data,h=0;u>h;h++)for(var f=0;p>f;f++)g[0+4*f+4*p*h]=d[1+4*f+4*p*h],g[1+4*f+4*p*h]=d[2+4*f+4*p*h],g[2+4*f+4*p*h]=d[3+4*f+4*p*h],g[3+4*f+4*p*h]=d[0+4*f+4*p*h];return r.putImageData(m,0,0),!0}function a(a){if(!n(a))return t.reject({type:"WEBP_PROCESS_FAILED"});if(void 0===s.toBlob)return e.when(dataUrlToBlob(s.toDataURL("image/png")));var i=t.defer();return s.toBlob(function(e){i.resolve(e)},"image/png"),i.promise}var i=!1,o=new Image;o.onload=function(){i=2===this.width&&1===this.height},o.onerror=function(){i=!1},o.src="data:image/webp;base64,UklGRjIAAABXRUJQVlA4ICYAAACyAgCdASoCAAEALmk0mk0iIiIiIgBoSygABc6zbAAA/v56QAAAAA==";var s,r;return{isWebpSupported:function(){return i},getPngBlobFromWebp:a}}]).service("CryptoWorker",["$timeout","$q",function(e,t){function n(e,n,i){var r=t.defer();return s[o]=r,n.task=e,n.taskID=o,(i||a).postMessage(n),o++,r.promise}var a=!1,i=!1,o=0,s={},r=Config.Modes.webcrypto&&window.crypto&&(window.crypto.subtle||window.crypto.webkitSubtle),l=r&&void 0!==r.digest,c=r&&void 0!==r.digest,d=function(e,t){var n=s[e];void 0!==n&&(n.resolve(t),delete s[e])};if(Config.Modes.nacl&&navigator.mimeTypes&&void 0!==navigator.mimeTypes["application/x-pnacl"]){var u=$('<div id="nacl_listener"><embed id="mtproto_crypto" width="0" height="0" src="nacl/mtproto_crypto.nmf" type="application/x-pnacl" /></div>').appendTo($("body"))[0];u.addEventListener("load",function(){i=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){a?d(e.data.taskID,e.data.result):a=p},p.onerror=function(e){console.error("CW error",e,e.stack),a=!1}}return{sha1Hash:function(n){if(l){var a=t.defer(),i=Array.isArray(n)?convertToUint8Array(n):n;return r.digest({name:"SHA-1"},i).then(function(e){a.resolve(e)},function(e){console.error("Crypto digest error",e),l=!1,a.resolve(sha1HashSync(n))}),a.promise}return e(function(){return sha1HashSync(n)})},sha256Hash:function(n){if(c){var a=t.defer(),i=Array.isArray(n)?convertToUint8Array(n):n;return r.digest({name:"SHA-256"},i).then(function(e){a.resolve(e)},function(e){console.error("Crypto digest error",e),c=!1,a.resolve(sha256HashSync(n))}),a.promise}return e(function(){return sha256HashSync(n)})},aesEncrypt:function(t,a,o){return i?n("aes-encrypt",{bytes:addPadding(convertToArrayBuffer(t)),keyBytes:convertToArrayBuffer(a),ivBytes:convertToArrayBuffer(o)},i):e(function(){return convertToArrayBuffer(aesEncryptSync(t,a,o))})},aesDecrypt:function(t,a,o){return i?n("aes-decrypt",{encryptedBytes:addPadding(convertToArrayBuffer(t)),keyBytes:convertToArrayBuffer(a),ivBytes:convertToArrayBuffer(o)},i):e(function(){return convertToArrayBuffer(aesDecryptSync(t,a,o))})},factorize:function(t){return t=convertToByteArray(t),i&&t.length<=8?n("factorize",{bytes:t},i):a?n("factorize",{bytes:t}):e(function(){return pqPrimeFactorization(t)})},modPow:function(t,i,o){return a?n("mod-pow",{x:t,y:i,m:o}):e(function(){return bytesModPow(t,i,o)})}}}]).service("ExternalResourcesManager",["$q","$http","$sce",function(e,t,n){function a(a){return void 0!==i[a]?i[a]:i[a]=t.get(a,{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(a))})}var i={};return{downloadByURL:a}}]).service("IdleManager",["$rootScope","$window","$timeout",function(e,t,n){function a(){s||(s=!0,$(t).on(l+" blur focus keydown mousedown touchstart",i),setTimeout(function(){i({type:"blur"})},0))}function i(a){if("mousemove"==a.type){var a=a.originalEvent||a;if(a&&0===a.movementX&&0===a.movementY)return;$(t).off("mousemove",i)}var s="blur"==a.type||"timeout"==a.type?!0:!1;r&&document[r]&&(s=!0),n.cancel(o),s||(o=n(function(){i({type:"timeout"})},3e4)),"focus"!=a.type||e.idle.afterFocus||(e.idle.afterFocus=!0,setTimeout(function(){delete e.idle.afterFocus},10)),e.idle.isIDLE!=s&&(e.$apply(function(){e.idle.isIDLE=s}),s&&"timeout"==a.type&&$(t).on("mousemove",i))}e.idle={isIDLE:!1};var o,s=!1,r="hidden",l="visibilitychange";return"undefined"!=typeof document.hidden||("undefined"!=typeof document.mozHidden?(r="mozHidden",l="mozvisibilitychange"):"undefined"!=typeof document.msHidden?(r="msHidden",l="msvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(r="webkitHidden",l="webkitvisibilitychange")),{start:a}}]).service("GeoLocationManager",["$q",function(e){function t(){return void 0!==navigator.geolocation}function n(n){if(!n&&a)return e.when(a);if(!t())return e.reject();var i=e.defer();return navigator.geolocation.getCurrentPosition(function(e){a={lat:e.coords.latitude,"long":e.coords.longitude},i.resolve(a)},function(e){i.reject(e)}),i.promise}var a=!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,a,i,o=0;o<Config.EmojiCategories.length;o++)if(i=Config.EmojiCategorySpritesheetDimens[o][1],t=Config.EmojiCategories[o].indexOf(e),t>-1)return n=Math.floor(t/i),a=t%i,{category:o,row:n,column:a};return console.error("emoji not found in spritesheet",e),null}function a(e,t){t=t||{};for(var a,i,o,s,r,l=e,d=[],u=0;a=l.match(C);){if(r=u+a.index,a[3])d.push({_:"messageEntityMention",offset:r+a[1].length,length:a[2].length+a[3].length});else if(a[4])if(S.test(a[4]))d.push({_:"messageEntityEmail",offset:r,length:a[4].length});else{var i=!1,p=a[5],h=a[6],f="";if(h){if(p||"xn--"!==h.substr(0,4)&&-1===Config.TLD.indexOf(h.toLowerCase())||(p="http://"),p){var _=c(a[4]);_.length!==a[4].length&&(f=a[4].substring(_.length),a[4]=_),i=(a[5]?"":p)+a[4]}}else i=(a[5]?"":"http://")+a[4];i&&d.push({_:"messageEntityUrl",offset:r,length:a[4].length})}else a[7]?d.push({_:"messageEntityLinebreak",offset:r,length:1}):a[8]?(o=m[a[8]])&&(s=n(o))&&d.push({_:"messageEntityEmoji",offset:r,length:a[0].length,coords:s,title:g[o][1][0]}):a[10]?d.push({_:"messageEntityHashtag",offset:r+a[9].length,length:a[10].length}):a[12]&&d.push({_:"messageEntityBotCommand",offset:r+a[11].length,length:1+a[12].length+(a[13]?1+a[13].length:0)});l=l.substr(a.index+a[0].length),u+=a.index+a[0].length}return d}function i(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 o(e,t){if(-1==e.indexOf("`"))return e;for(var n,a,i=e,o=[],s=0;n=i.match(M);){a=s+n.index,o.push(i.substr(0,n.index));var e=n[3]||n[7];s-=e.length,e=e.replace(/^\s+|\s+$/g,""),s+=e.length,e.match(/^`*$/)?o.push(n[0]):n[3]?("\n"==n[5]&&(n[5]="",s-=1),o.push(n[1]+e+n[5]),t.push({_:"messageEntityPre",language:"",offset:a+n[1].length,length:e.length}),s-=n[2].length+n[4].length):(o.push(n[6]+e+n[8]),t.push({_:"messageEntityCode",offset:a+n[6].length,length:e.length}),s-=2),i=i.substr(n.index+n[0].length),s+=n.index+n[0].length}return o.push(i),o=o.join(""),o.replace(/\s+/g,"").length||(o=e,t.splice(0,t.length)),o}function s(e,t,n){var a,i,o,s,r,l,c,d,u,p=t.slice(),m=e.length,g=t.length,h=0;for(a=0;m>a;a++)if(o=e[a],!n||"messageEntityLinebreak"==o._||"messageEntityEmoji"==o._){for(r=o.offset,l=r+o.length,u=!1,i=h;g>i;i++){if(s=t[i],c=s.offset,d=c+s.length,r>=c&&(h=i),r>=c&&d>r||l>c&&d>=l){n&&r>=c&&d>=l&&(void 0===s.nested&&(s.nested=[]),o.offset-=c,s.nested.push(angular.copy(o))),u=!0;break}if(c>=l)break}u||p.push(o)}return p.sort(function(e,t){return e.offset-t.offset}),p}function r(e,t,n){return void 0===t?encodeEntities(e):(n.hasNested=!0,l(e,{entities:t,nested:!0}))}function l(n,i){if(!n||!n.length)return"";i=i||{};var o=i.entities,s=i.contextSite||"Telegram",l="Telegram"!=s,c=!1;void 0===o&&(o=a(n,i));var d,p,m,g,f=0,_=o.length,v=[],y=0,b=i.emojiIconSize||h;for(f=0;_>f;f++){if(d=o[f],d.offset>y)v.push(encodeEntities(n.substr(y,d.offset-y)));else if(d.offset<y)continue;switch(m=!1,p=n.substr(d.offset,d.length),d._){case"messageEntityMention":var w=!i.noLinks&&I[s];if(!w){m=!0;break}var k=p.substr(1),$="";i.highlightUsername&&i.highlightUsername.toLowerCase()==k.toLowerCase()&&($='class="im_message_mymention"'),v.push("<a ",$,l?' target="_blank" ':"",' href="',w.replace("{1}",encodeURIComponent(k)),'">',encodeEntities(p),"</a>");break;case"messageEntityHashtag":var w=!i.noLinks&&x[s];if(!w){m=!0;break}var C=p.substr(1);v.push("<a ",l?' target="_blank" ':"",'href="',w.replace("{1}",encodeURIComponent(C)),'">',encodeEntities(p),"</a>");break;case"messageEntityEmail":if(i.noLinks){m=!0;break}v.push('<a href="',encodeEntities("mailto:"+p),'" target="_blank">',encodeEntities(p),"</a>");break;case"messageEntityUrl":case"messageEntityTextUrl":if(i.noLinks){m=!0;break}var g=d.url||p;g=u(g,"messageEntityTextUrl"==d._),v.push('<a href="',encodeEntities(g),'" target="_blank">',r(p,d.nested,i),"</a>");break;case"messageEntityLinebreak":v.push(i.noLinebreaks?" ":"<br/>");break;case"messageEntityEmoji":v.push('<span class="emoji emoji-',d.coords.category,"-",b*d.coords.column,"-",b*d.coords.row,'" ','title="',d.title,'">',":",d.title,":</span>"),c=!0;break;case"messageEntityBotCommand":if(i.noLinks||i.noCommands||l){m=!0;break}var S,M,A=p.substr(1);-1!=(M=A.indexOf("@"))?(S=A.substr(M+1),A=A.substr(0,M)):S=i.fromBot,v.push('<a href="',encodeEntities("tg://bot_command?command="+encodeURIComponent(A)+(S?"&bot="+encodeURIComponent(S):"")),'">',encodeEntities(p),"</a>");break;case"messageEntityBold":v.push("<strong>",r(p,d.nested,i),"</strong>");break;case"messageEntityItalic":v.push("<em>",r(p,d.nested,i),"</em>");break;case"messageEntityCode":v.push("<code>",encodeEntities(p),"</code>");break;case"messageEntityPre":v.push("<pre><code",d.language?' class="language-'+encodeEntities(d.language)+'"':"",">",encodeEntities(p),"</code></pre>");break;default:m=!0}y=d.offset+(m?0:d.length)}if(v.push(encodeEntities(n.substr(y))),n=t(v.join("")),!i.nested&&(c||i.hasNested)){n=n.replace(/\ufe0f|&#65039;|&#65533;|&#8205;/g,"",n);var E=18==b?"":" emoji-w"+b;n=n.replace(/<span class="emoji emoji-(\d)-(\d+)-(\d+)"(.+?)<\/span>/g,'<span class="emoji '+E+' emoji-spritesheet-$1" style="background-position: -$2px -$3px;" $4</span>')}return e.trustAs("html",n)}function c(e){for(var t=e.length,n=e.split("(").length-1,a=e.split(")").length-1;a>n&&")"===e.charAt(t-1);)e=e.substr(0,t-1),a--,t--;return n>a&&(e=e.replace(/\)+$/,"")),e}function d(e,t){if(f)return e;if(!e||!e.length)return"";t=t||{},e=e.replace(/\ufe0f/g,"",e);for(var n,a,i=e,e=[];n=i.match(C);)e.push(i.substr(0,n.index)),e.push(n[8]?(p=m[n[8]])&&(a=g[p][1][0])?":"+a+":":n[0]:n[0]),i=i.substr(n.index+n[0].length);return e.push(i),e.join("")}function u(e,t){e.match(/^https?:\/\//i)||(e="http://"+e);var n;if(t)e="tg://unsafe_url?url="+encodeURIComponent(e);else if(n=e.match(/^https?:\/\/telegram\.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 i=a[0].split("?");e="tg://resolve?domain="+i[0]+(i[1]?"&"+i[1]:"")}}}return e}var p,m={},g=Config.Emoji,h=18,f=-1!=navigator.userAgent.search(/OS X|iPhone|iPad|iOS|Android/i),_="\\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<EFBFBD>]\\uD83C[\\uDDEA-\\uDDFA<EFBFBD>]|[0-9]\\u20e3|\\uD83C[\\uDC00-\\uDFFF]";for(p in g)m[g[p][0]]=p;var v="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",y="0-9_"+v,b="·",w="((?: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}|["+v+"0-9]["+v+b+"0-9-]{0,64}(?:\\.["+v+"0-9]["+v+b+"0-9-]{0,64}){0,10}(?:\\.(xn--[0-9a-z]{2,16}|["+v+"]{2,24})))(?::\\d{2,5})?(?:/(?:\\S{0,255}[^\\s.;,(\\[\\]{}<>\"'])?)?",k="[a-zA-Z\\d_]{5,32}",$="\\/([a-zA-Z\\d_]{1,32})(?:@("+k+"))?(\\b|$)",C=new RegExp("(^| )(@)("+k+")|("+w+")|(\\n)|("+_+")|(^|[\\s\\(\\]])(#["+y+"]{2,64})|(^|\\s)"+$,"i"),S=/^(([^<>()[\]\\.,;:\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,}))$/,M=/(^|\s)(````?)([\s\S]+?)(````?)([\s\n\.,:?!;]|$)|(^|\s)`([^\n]+?)`([\s\.,:?!;]|$)/,x={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}"};return{wrapRichText:l,wrapPlainText:d,wrapUrl:u,parseEntities:a,parseMarkdown:o,parseEmojis:i,mergeEntities:s}}]),angular.module("myApp.i18n",["izhukov.utils"]).factory("_",["$rootScope","$locale",function(e,t){function n(e,t){return e.replace(l,function(a,i,o){var s=t[i];return void 0===s?(console.warn("[i18n] missing param "+i+' for message "'+e+'"'),""):(void 0!==o&&(s=n(s,o.split("|"))),s.toString().trim())})}function a(e){return e=e.replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>").replace(/\n|&#10;/g,"<br/>")}function i(e,t){var i=!1,l=e;if("_raw"===e.substr(-4)&&(i=!0,e=e.substr(0,e.length-4)),s.hasOwnProperty(e))l=s[e];else{if(!r.hasOwnProperty(e))return console.warn("[i18n] missing key "+e),e;l=r[e],console.warn("[i18n] missing locale key "+o+" / "+e)}return i||(l=encodeEntities(l)),"_md"==e.substr(-3)&&(l=a(l)),arguments.length>1&&("string"==typeof t?(Array.prototype.shift.apply(arguments),l=n(l,arguments)):l=n(l,t)),l}var o=Config.I18n.locale,s=Config.I18n.messages,r=Config.I18n.fallback_messages,l=/\{\s*([a-zA-Z\d\-_]+)(?:\s*:\s*(.*?))?\s*\}/g;return i.locale=function(){return o},i.pluralize=function(n){var a=e.$eval(i(n+"_raw"));return function(e){return(a[t.pluralCat(e)]||"").replace("{}",e)}},i}]).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"),a=e(n+"_raw");t.attr("when",a)}}}]).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 a=t.attr("my-i18n")||t.attr("msgid")?t:t.children("my-i18n-format, [my-i18n-format]");a.each(function(t,a){var i=angular.element(a),o=i.attr("my-i18n")||i.attr("msgid")||i.attr("my-i18n-format")||i.html().replace(/\s+/g," ").trim();if(i.hasClass("nocopy")){var s=e(o+"_raw",n);i.attr("data-content",s)}else{var s=e(o,n);i.html(s)}})}}}]),angular.module("izhukov.mtproto",["izhukov.utils"]).factory("MtpDcConfigurator",function(){function e(e,i){if(void 0===a[e]){var o,s,r=!1;if(Config.Modes.ssl||!Config.Modes.http){var l=t[e-1]+(i?"-1":""),c=Config.Modes.test?"apiw_test1":"apiw1";return r="https://"+l+".web.telegram.org/"+c}for(o=0;o<n.length;o++)if(s=n[o],s.id==e){r="http://"+s.host+(80!=s.port?":"+s.port:"")+"/apiw1";break}a[e]=r}return a[e]}var t=["pluto","venus","aurora","vesta","flora"],n=Config.Modes.test?[{id:1,host:"149.154.175.10",port:80},{id:2,host:"149.154.167.40",port:80},{id:3,host:"149.154.175.117",port:80}]:[{id:1,host:"149.154.175.50",port:80},{id:2,host:"149.154.167.51",port:80},{id:3,host:"149.154.175.100",port:80},{id:4,host:"149.154.167.91",port:80},{id:5,host:"149.154.171.5",port:80}],a={};return{chooseServer:e}}).factory("MtpRsaKeysManager",function(){function e(){if(!i){for(var e=0;e<n.length;e++){var t=n[e],o=new TLSerialization;o.storeBytes(bytesFromHex(t.modulus),"n"),o.storeBytes(bytesFromHex(t.exponent),"e");var s=o.getBuffer(),r=sha1BytesSync(s).slice(-8);r.reverse(),a[bytesToHex(r)]={modulus:t.modulus,exponent:t.exponent}}i=!0}}function t(t){e();var n,i,o;for(o=0;o<t.length;o++)if(n=bigStringInt(t[o]).toString(16),i=a[n])return angular.extend({fingerprint:t[o]},i);return!1}var n=[{modulus:"c150023e2f70db7985ded064759cfecf0af328e69a41daf4d6f01b538135a6f91f8f8b2a0ec9ba9720ce352efcf6c5680ffc424bd634864902de0b4bd6d49f4e580230e3ae97d95c8b19442b3c0a10d8f5633fecedd6926a7f6dab0ddb7d457f9ea81b8465fcd6fffeed114011df91c059caedaf97625f6c96ecc74725556934ef781d866b34f011fce4d835a090196e9a5f0e4449af7eb697ddb9076494ca5f81104a305b6dd27665722c46b60e5df680fb16b210607ef217652e60236c255f6a28315f4083a96791d7214bf64c1df4fd0db1944fb26a2a57031b32eee64ad15a8ba68885cde74a5bfc920f6abf59ba5c75506373e7130f9042da922179251f",exponent:"010001"}],a={},i=!1;return{prepare:e,select:t}}).service("MtpSecureRandom",["$window",function(e){return $(e).on("click keydown",rng_seed_time),new SecureRandom}]).factory("MtpTimeManager",["Storage",function(e){function t(){var e=tsNow(),t=Math.floor(e/1e3)+i,n=e%1e3,o=nextRandomInt(65535),s=[t,n<<21|o<<3|4];return(a[0]>s[0]||a[0]==s[0]&&a[1]>=s[1])&&(s=[a[0],a[1]+4]),a=s,longFromInts(s[0],s[1])}function n(t,n){var o=t-Math.floor((n||tsNow())/1e3),s=Math.abs(i-o)>10;return e.set({server_time_offset:o}),a=[0,0],i=o,console.log(dT(),"Apply server time",t,n,o,s),s}var a=[0,0],i=0;return e.get("server_time_offset").then(function(e){e&&(i=e)}),{generateID:t,applyServerTime:n}}]).factory("MtpAuthorizer",["MtpDcConfigurator","MtpRsaKeysManager","MtpSecureRandom","MtpTimeManager","CryptoWorker","$http","$q","$timeout",function(e,t,n,a,i,o,s,r){function l(t,n){var i=n.byteLength,r=new Int32Array(n),l=new TLSerialization;l.storeLongP(0,0,"auth_key_id"),l.storeLong(a.generateID(),"msg_id"),l.storeInt(i,"request_length");var c=l.getBuffer(),d=new Int32Array(c),u=c.byteLength,p=new ArrayBuffer(u+i),m=new Int32Array(p);m.set(d),m.set(r,d.length);var g,h=f?p:m,_=e.chooseServer(t),v={code:406,type:"NETWORK_BAD_RESPONSE",url:_};try{g=o.post(_,h,{responseType:"arraybuffer",transformRequest:null})}catch(y){g=s.reject(angular.extend(v,{originalError:y}))}return g.then(function(e){if(!e.data||!e.data.byteLength)return s.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 s.reject(angular.extend(v,{originalError:n}))}return t},function(e){return e.message||e.type||(e=angular.extend(v,{originalError:e})),s.reject(e)})}function c(e){var n=e.deferred,a=new TLSerialization({mtproto:!0});a.storeMethod("req_pq",{nonce:e.nonce}),console.log(dT(),"Send req_pq",bytesToHex(e.nonce)),l(e.dcID,a.getBuffer()).then(function(a){var o=a.fetchObject("ResPQ");if("resPQ"!=o._)throw new Error("resPQ response invalid: "+o._);if(!bytesCmp(e.nonce,o.nonce))throw new Error("resPQ nonce mismatch");if(e.serverNonce=o.server_nonce,e.pq=o.pq,e.fingerprints=o.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("No public key found");console.log(dT(),"PQ factorization start",e.pq),i.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)}),r(function(){t.prepare()})}function d(e){var t=e.deferred;e.newNonce=new Array(32),n.nextBytes(e.newNonce);var a=new TLSerialization({mtproto:!0});a.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 i=sha1BytesSync(a.getBuffer()).concat(a.getBytes()),o=new TLSerialization({mtproto:!0});o.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,i)}),console.log(dT(),"Send req_DH_params"),l(e.dcID,o.getBuffer()).then(function(n){var a=n.fetchObject("Server_DH_Params","RESPONSE");if("server_DH_params_fail"!=a._&&"server_DH_params_ok"!=a._)return t.reject(new Error("Server_DH_Params response invalid: "+a._)),!1;if(!bytesCmp(e.nonce,a.nonce))return t.reject(new Error("Server_DH_Params nonce mismatch")),!1;if(!bytesCmp(e.serverNonce,a.server_nonce))return t.reject(new Error("Server_DH_Params server_nonce mismatch")),!1;if("server_DH_params_fail"==a._){var i=sha1BytesSync(e.newNonce).slice(-16);return bytesCmp(i,a.new_nonce_hash)?(t.reject(new Error("server_DH_params_fail")),!1):(t.reject(new Error("server_DH_params_fail new_nonce_hash mismatch")),!1)}try{u(e,a.encrypted_answer)}catch(o){return t.reject(o),!1}p(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),i=n.slice(0,20),o=n.slice(20),s=bytesToArrayBuffer(o),r=new TLDeserialization(s,{mtproto:!0}),l=r.fetchObject("Server_DH_inner_data");if("server_DH_inner_data"!=l._)throw new Error("server_DH_inner_data response invalid: "+constructor);if(!bytesCmp(e.nonce,l.nonce))throw new Error("server_DH_inner_data nonce mismatch");if(!bytesCmp(e.serverNonce,l.server_nonce))throw new Error("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;var c=r.getOffset();if(!bytesCmp(i,sha1BytesSync(o.slice(0,c))))throw new Error("server_DH_inner_data SHA1-hash mismatch");a.applyServerTime(e.serverTime,e.localTime)}function p(e){var t=e.deferred,a=bytesFromHex(e.g.toString(16));e.b=new Array(256),n.nextBytes(e.b),i.modPow(a,e.b,e.dhPrime).then(function(n){var a=new TLSerialization({mtproto:!0});a.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 o=sha1BytesSync(a.getBuffer()).concat(a.getBytes()),s=aesEncryptSync(o,e.tmpAesKey,e.tmpAesIv),r=new TLSerialization({mtproto:!0});r.storeMethod("set_client_DH_params",{nonce:e.nonce,server_nonce:e.serverNonce,encrypted_data:s}),console.log(dT(),"Send set_client_DH_params"),l(e.dcID,r.getBuffer()).then(function(n){var a=n.fetchObject("Set_client_DH_params_answer");return"dh_gen_ok"!=a._&&"dh_gen_retry"!=a._&&"dh_gen_fail"!=a._?(t.reject(new Error("Set_client_DH_params_answer response invalid: "+a._)),!1):bytesCmp(e.nonce,a.nonce)?bytesCmp(e.serverNonce,a.server_nonce)?void i.modPow(e.gA,e.b,e.dhPrime).then(function(n){var i=sha1BytesSync(n),o=i.slice(0,8),s=i.slice(-8);switch(console.log(dT(),"Got Set_client_DH_params_answer",a._),a._){case"dh_gen_ok":var r=sha1BytesSync(e.newNonce.concat([1],o)).slice(-16);if(!bytesCmp(r,a.new_nonce_hash1))return t.reject(new Error("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=s,e.authKey=n,e.serverSalt=l,t.resolve(e);break;case"dh_gen_retry":var c=sha1BytesSync(e.newNonce.concat([2],o)).slice(-16);return bytesCmp(c,a.new_nonce_hash2)?p(e):(t.reject(new Error("Set_client_DH_params_answer new_nonce_hash2 mismatch")),!1);case"dh_gen_fail":var d=sha1BytesSync(e.newNonce.concat([3],o)).slice(-16);return bytesCmp(d,a.new_nonce_hash3)?(t.reject(new Error("Set_client_DH_params_answer fail")),!1):(t.reject(new Error("Set_client_DH_params_answer new_nonce_hash3 mismatch")),!1)}},function(e){t.reject(e)}):(t.reject(new Error("Set_client_DH_params_answer server_nonce mismatch")),!1):(t.reject(new Error("Set_client_DH_params_answer nonce mismatch")),!1)},function(e){t.reject(e)})},function(e){t.reject(e)})}function m(t){if(void 0!==_[t])return _[t];for(var n=[],a=0;16>a;a++)n.push(nextRandomInt(255));if(!e.chooseServer(t))return s.reject(new Error("No server found for dc "+t));var i={dcID:t,nonce:n,deferred:s.defer()};return r(function(){c(i)}),_[t]=i.deferred.promise,_[t]["catch"](function(){delete _[t]}),_[t]}var g=navigator.userAgent.match(/Chrome\/(\d+(\.\d+)?)/),h=g&&parseFloat(g[1])||!1,f=!("ArrayBufferView"in window)&&(!h||30>h);delete o.defaults.headers.post["Content-Type"],delete o.defaults.headers.common.Accept;var _={};return{auth:m}}]).factory("MtpNetworkerFactory",["MtpDcConfigurator","MtpTimeManager","MtpSecureRandom","Storage","CryptoWorker","AppRuntimeManager","$http","$q","$timeout","$interval","$rootScope",function(e,t,n,a,i,o,s,r,l,c,d){function u(e,t,n,a){a=a||{},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=a.fileUpload||a.fileDownload||!1,this.updateSession(),this.currentRequests=0,this.checkConnectionPeriod=0,this.sentMessages={},this.serverMessages=[],this.clientMessages=[],this.pendingMessages={},this.pendingAcks=[],this.pendingResends=[],this.connectionInited=!1,this.pendingTimeouts=[],this.longPollInt=c(this.checkLongPoll.bind(this),1e4),this.checkLongPoll(),f||(f=!0,d.offline=!0,d.offlineConnecting=!0),Config.Navigator.mobile&&this.setupMobileSleep()}function p(){_&&(_=!1,g({_:"new_session_created"}))}function m(){_=!0}var g,h=0,f=!1,_=!1,v=navigator.userAgent.match(/Chrome\/(\d+(\.\d+)?)/),y=v&&parseFloat(v[1])||!1,b=!("ArrayBufferView"in window)&&(!y||30>y);return delete s.defaults.headers.post["Content-Type"],delete s.defaults.headers.common.Accept,d.retryOnline=function(){$(document.body).trigger("online")},u.prototype.updateSession=function(){this.seqNo=0,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 a=this;if(n.container){var i=[];angular.forEach(n.inner,function(e){var t=a.updateSentMessage(e);t&&i.push(t.msg_id)}),n.inner=i}return n.msg_id=t.generateID(),n.seq_no=this.generateSeqNo(n.notContentRelated||n.container),this.sentMessages[n.msg_id]=n,delete a.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,a){var i=new TLSerialization({mtproto:!0});i.storeMethod(e,n);var o=t.generateID(),s=this.generateSeqNo(),r={msg_id:o,seq_no:s,body:i.getBytes()};return Config.Modes.debug&&console.log(dT(),"MT call",e,n,o,s),this.pushMessage(r,a)},u.prototype.wrapMtpMessage=function(e,n){n=n||{};var a=new TLSerialization({mtproto:!0});a.storeObject(e,"Object");var i=t.generateID(),o=this.generateSeqNo(n.notContentRelated),s={msg_id:i,seq_no:o,body:a.getBytes()};return Config.Modes.debug&&console.log(dT(),"MT message",e,i,o),this.pushMessage(s,n)},u.prototype.wrapApiCall=function(e,n,a){var i=new TLSerialization(a);this.connectionInited||(i.storeInt(3667594509,"invokeWithLayer"),i.storeInt(Config.Schema.API.layer,"layer"),i.storeInt(1769565673,"initConnection"),i.storeInt(Config.App.id,"api_id"),i.storeString(navigator.userAgent||"Unknown UserAgent","device_model"),i.storeString(navigator.platform||"Unknown Platform","system_version"),i.storeString(Config.App.version,"app_version"),i.storeString(navigator.language||"en","lang_code")),a.afterMessageID&&(i.storeInt(3416209197,"invokeAfterMsg"),i.storeLong(a.afterMessageID,"msg_id")),a.resultType=i.storeMethod(e,n);var o=t.generateID(),s=this.generateSeqNo(),r={msg_id:o,seq_no:s,body:i.getBytes(!0),isAPI:!0};return Config.Modes.debug?console.log(dT(),"Api call",e,n,o,s,a):console.log(dT(),"Api call",e),this.pushMessage(r,a)},u.prototype.checkLongPoll=function(){var e=this.cleanupSent();if(this.longPollPending&&tsNow()<this.longPollPending||this.offline||_)return!1;var t=this;a.get("dc").then(function(n){e&&(n!=t.dcID||t.upload||t.sleepAfter&&tsNow()>t.sleepAfter)||t.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=r.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,a=this.sentMessages[e];if(a.container)for(var i=0;i<a.inner.length;i++)this.pendingMessages[a.inner[i]]=n;else this.pendingMessages[e]=n;this.sheduleRequest(t)},u.prototype.getMsgKeyIv=function(e,t){var n=this.authKeyUint8,a=t?0:8,o=new Uint8Array(48),s=new Uint8Array(48),l=new Uint8Array(48),c=new Uint8Array(48),d={};return o.set(e,0),o.set(n.subarray(a,a+32),16),d.sha1a=i.sha1Hash(o),s.set(n.subarray(a+32,a+48),0),s.set(e,16),s.set(n.subarray(a+48,a+64),32),d.sha1b=i.sha1Hash(s),l.set(n.subarray(a+64,a+96),0),l.set(e,32),d.sha1c=i.sha1Hash(l),c.set(e,0),c.set(n.subarray(a+96,a+128),16),d.sha1d=i.sha1Hash(c),r.all(d).then(function(e){var t=new Uint8Array(32),n=new Uint8Array(32);
return sha1a=new Uint8Array(e.sha1a),sha1b=new Uint8Array(e.sha1b),sha1c=new Uint8Array(e.sha1c),sha1d=new Uint8Array(e.sha1d),t.set(sha1a.subarray(0,8)),t.set(sha1b.subarray(8,20),8),t.set(sha1c.subarray(4,16),20),n.set(sha1a.subarray(8,20)),n.set(sha1b.subarray(0,8),12),n.set(sha1c.subarray(16,20),20),n.set(sha1d.subarray(0,8),24),[t,n]})},u.prototype.checkConnection=function(e){d.offlineConnecting=!0,console.log(dT(),"Check connection",e),l.cancel(this.checkConnectionPromise);var n=new TLSerialization({mtproto:!0}),a=[nextRandomInt(4294967295),nextRandomInt(4294967295)];n.storeMethod("ping",{ping_id:a});var i={msg_id:t.generateID(),seq_no:this.generateSeqNo(!0),body:n.getBytes()},o=this;this.sendEncryptedRequest(i,{timeout:15e3}).then(function(){delete d.offlineConnecting,o.toggleOffline(!1)},function(){console.log(dT(),"Delay ",1e3*o.checkConnectionPeriod),o.checkConnectionPromise=l(o.checkConnection.bind(o),parseInt(1e3*o.checkConnectionPeriod)),o.checkConnectionPeriod=Math.min(60,1.5*o.checkConnectionPeriod),l(function(){delete d.offlineConnecting},1e3)})},u.prototype.toggleOffline=function(e){return void 0!==this.offline&&this.offline==e?!1:(this.offline=e,d.offline=e,d.offlineConnecting=!1,void(this.offline?(l.cancel(this.nextReqPromise),delete this.nextReq,this.checkConnectionPeriod<1.5&&(this.checkConnectionPeriod=0),this.checkConnectionPromise=l(this.checkConnection.bind(this),parseInt(1e3*this.checkConnectionPeriod)),this.checkConnectionPeriod=Math.min(30,1.5*(1+this.checkConnectionPeriod)),this.onOnlineCb=this.checkConnection.bind(this),$(document.body).on("online focus",this.onOnlineCb)):(delete this.longPollPending,this.checkLongPoll(),this.sheduleRequest(),this.onOnlineCb&&$(document.body).off("online focus",this.onOnlineCb),l.cancel(this.checkConnectionPromise))))},u.prototype.performSheduledRequest=function(){if(this.offline||_)return console.log(dT(),"Cancel sheduled"),!1;if(delete this.nextReq,this.pendingAcks.length){for(var e=[],n=0;n<this.pendingAcks.length;n++)e.push(this.pendingAcks[n]);this.wrapMtpMessage({_:"msgs_ack",msg_ids:e},{notContentRelated:!0,noShedule:!0})}if(this.pendingResends.length){for(var a=[],i={noShedule:!0,notContentRelated:!0},n=0;n<this.pendingResends.length;n++)a.push(this.pendingResends[n]);this.wrapMtpMessage({_:"msg_resend_req",msg_ids:a},i),this.lastResendReq={req_msg_id:i.messageID,resend_msg_ids:a}}var o,s=[],r=0,l=tsNow(),c=!1,d=!1,u=!1,p=0,m=this;if(angular.forEach(this.pendingMessages,function(e,t){if(!e||e>=l){if(o=m.sentMessages[t]){var n=(o.body.byteLength||o.body.length)+32;if(!o.notContentRelated&&u)return;if(!o.notContentRelated&&r&&r+n>655360)return void(u=!0);if(o.singleInRequest&&(p++,p>1))return;s.push(o),r+=n,o.isAPI?c=!0:o.longPoll&&(d=!0)}delete m.pendingMessages[t]}}),c&&!d){var g=new TLSerialization({mtproto:!0});g.storeMethod("http_wait",{max_delay:500,wait_after:150,max_wait:3e3}),s.push({msg_id:t.generateID(),seq_no:this.generateSeqNo(),body:g.getBytes()})}if(s.length){var h=[];if(s.length>1){var f=new TLSerialization({mtproto:!0,startMaxLength:r+64});f.storeInt(1945237724,"CONTAINER[id]"),f.storeInt(s.length,"CONTAINER[count]");for(var v=[],n=0;n<s.length;n++)f.storeLong(s[n].msg_id,"CONTAINER["+n+"][msg_id]"),v.push(s[n].msg_id),f.storeInt(s[n].seq_no,"CONTAINER["+n+"][seq_no]"),f.storeInt(s[n].body.length,"CONTAINER["+n+"][bytes]"),f.storeRawBytes(s[n].body,"CONTAINER["+n+"][body]"),s[n].noResponse&&h.push(s[n].msg_id);var y={msg_id:t.generateID(),seq_no:this.generateSeqNo(!0),container:!0,inner:v};o=angular.extend({body:f.getBytes(!0)},y),this.sentMessages[o.msg_id]=y,Config.Modes.debug&&console.log(dT(),"Container",v,o.msg_id,o.seq_no)}else o.noResponse&&h.push(o.msg_id),this.sentMessages[o.msg_id]=o;this.pendingAcks=[];var m=this;this.sendEncryptedRequest(o).then(function(e){m.toggleOffline(!1),m.parseResponse(e.data).then(function(e){Config.Modes.debug&&console.log(dT(),"Server response",m.dcID,e),m.processMessage(e.response,e.messageID,e.sessionID),angular.forEach(h,function(e){if(m.sentMessages[e]){var t=m.sentMessages[e].deferred;delete m.sentMessages[e],t.resolve()}}),m.checkLongPoll(),this.checkConnectionPeriod=Math.max(1.1,Math.sqrt(this.checkConnectionPeriod))})},function(e){console.log("Encrypted request failed",e),o.container?(angular.forEach(o.inner,function(e){m.pendingMessages[e]=0}),delete m.sentMessages[o.msg_id]):m.pendingMessages[o.msg_id]=0,angular.forEach(h,function(e){if(m.sentMessages[e]){var t=m.sentMessages[e].deferred;delete m.sentMessages[e],delete m.pendingMessages[e],t.reject()}}),m.toggleOffline(!0)}),(u||p>1)&&this.sheduleRequest()}},u.prototype.getEncryptedMessage=function(e){var t=this;return i.sha1Hash(e).then(function(n){var a=new Uint8Array(n).subarray(4,20);return t.getMsgKeyIv(a,!0).then(function(t){return i.aesEncrypt(e,t[0],t[1]).then(function(e){return{bytes:e,msgKey:a}})})})},u.prototype.getDecryptedMessage=function(e,t){return this.getMsgKeyIv(e,!1).then(function(e){return i.aesDecrypt(t,e[0],e[1])})},u.prototype.sendEncryptedRequest=function(t,n){var i=this;n=n||{};var l=new TLSerialization({startMaxLength:t.body.length+64});return l.storeIntBytes(this.serverSalt,64,"salt"),l.storeIntBytes(this.sessionID,64,"session_id"),l.storeLong(t.msg_id,"message_id"),l.storeInt(t.seq_no,"seq_no"),l.storeInt(t.body.length,"message_data_length"),l.storeRawBytes(t.body,"message_data"),this.getEncryptedMessage(l.getBuffer()).then(function(t){var l=new TLSerialization({startMaxLength:t.bytes.byteLength+256});l.storeIntBytes(i.authKeyID,64,"auth_key_id"),l.storeIntBytes(t.msgKey,128,"msg_key"),l.storeRawBytes(t.bytes,"encrypted_data");var c,d=b?l.getBuffer():l.getArray(),u=e.chooseServer(i.dcID,i.upload),p={code:406,type:"NETWORK_BAD_RESPONSE",url:u};try{n=angular.extend(n||{},{responseType:"arraybuffer",transformRequest:null}),c=s.post(u,d,n)}catch(m){c=r.reject(m)}return c.then(function(e){return e.data&&e.data.byteLength?e:r.reject(p)},function(e){return 404==e.status&&-1!=(e.data||"").indexOf("nginx/0.3.33")&&a.remove("dc"+i.dcID+"_server_salt","dc"+i.dcID+"_auth_key").then(function(){o.reload()}),e.message||e.type||(e=angular.extend(p,{type:"NETWORK_BAD_REQUEST",originalError:e})),r.reject(e)})})},u.prototype.parseResponse=function(e){var t=this,n=new TLDeserialization(e),a=n.fetchIntBytes(64,!1,"auth_key_id");if(!bytesCmp(a,this.authKeyID))throw new Error("Invalid server auth_key_id: "+bytesToHex(a));var o=n.fetchIntBytes(128,!0,"msg_key"),s=n.fetchRawBytes(e.byteLength-n.getOffset(),!0,"encrypted_data");return this.getDecryptedMessage(o,s).then(function(e){var n=new TLDeserialization(e,{mtproto:!0}),a=(n.fetchIntBytes(64,!1,"salt"),n.fetchIntBytes(64,!1,"session_id")),s=n.fetchLong("message_id"),r=n.fetchInt("seq_no"),l=n.fetchRawBytes(!1,!0,"message_data"),c=convertToUint8Array(e).subarray(0,n.getOffset());return i.sha1Hash(c).then(function(e){if(!bytesCmp(o,bytesFromArrayBuffer(e).slice(-16)))throw console.warn(o,bytesFromArrayBuffer(e)),new Error("server msgKey mismatch");var n=bytesToArrayBuffer(l),i={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(a){console.error(dT(),"parse error",a.message,a.stack),e.body={_:"parse_error",error:a}}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 a=t.sentMessages[e.req_msg_id],i=a&&a.resultType||"Object";(!e.req_msg_id||a)&&(e.result=this.fetchObject(i,n+"[result]"))}}},c=new TLDeserialization(n,i),d=c.fetchObject("","INPUT");return{response:d,messageID:s,sessionID:a,seqNo:r}})})},u.prototype.applyServerSalt=function(e){var t=longToBytes(e),n={};return n["dc"+this.dcID+"_server_salt"]=bytesToHex(t),a.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?!1:(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,a){if(n.notContentRelated&&void 0===e.pendingMessages[a])delete e.sentMessages[a];else if(n.container){for(var i=0;i<n.inner.length;i++)if(void 0!==e.sentMessages[n.inner[i]])return void(t=!0);delete e.sentMessages[a]}else t=!0}),!t},u.prototype.processMessageAck=function(e){var t=this.sentMessages[e];return t&&!t.acked?(delete t.body,t.acked=!0,!0):!1},u.prototype.processError=function(e){var t=(e.error_message||"").match(/^([A-Z_0-9]+\b)(: (.+))?/)||[];return e.error_code=uintToInt(e.error_code),{code:!e.error_code||e.error_code<=0?500:e.error_code,type:t[1]||"UNKNOWN",description:t[3]||"CODE#"+e.error_code+" "+e.error_message,originalError:e}},u.prototype.processMessage=function(e,n,i){switch(e._){case"msg_container":for(var o=e.messages.length,s=0;o>s;s++)this.processMessage(e.messages[s],n,i);break;case"bad_server_salt":console.log(dT(),"Bad server salt",e);var r=this.sentMessages[e.bad_msg_id];if(!r||r.seq_no!=e.bad_msg_seqno)throw console.log(e.bad_msg_id,e.bad_msg_seqno),new Error("Bad server salt for invalid message");this.applyServerSalt(e.new_server_salt),this.pushResend(e.bad_msg_id),this.ackMessage(n);break;case"bad_msg_notification":console.log(dT(),"Bad msg notification",e);var r=this.sentMessages[e.bad_msg_id];if(!r||r.seq_no!=e.bad_msg_seqno)throw console.log(e.bad_msg_id,e.bad_msg_seqno),new Error("Bad msg notification for invalid message");if(16==e.error_code||17==e.error_code){t.applyServerTime(bigStringInt(n).shiftRight(32).toString(10))&&(console.log(dT(),"Update session"),this.updateSession());var l=this.updateSentMessage(e.bad_msg_id);this.pushResend(l.msg_id),this.ackMessage(n)}break;case"message":this.serverMessages.push(e.msg_id),this.processMessage(e.body,e.msg_id,i);break;case"new_session_created":this.ackMessage(n),this.processMessageAck(e.first_msg_id),this.applyServerSalt(e.server_salt);var c=this;a.get("dc").then(function(t){t==c.dcID&&!c.upload&&g&&g(e)});break;case"msgs_ack":for(var s=0;s<e.msg_ids.length;s++)this.processMessageAck(e.msg_ids[s]);break;case"msg_detailed_info":if(!this.sentMessages[e.msg_id]){this.ackMessage(e.answer_msg_id);break}case"msg_new_detailed_info":this.reqResendMessage(e.answer_msg_id);break;case"msgs_state_info":if(this.ackMessage(e.answer_msg_id),this.lastResendReq&&this.lastResendReq.req_msg_id==e.req_msg_id&&this.pendingResends.length){var s,d,u;for(s=0;s<this.lastResendReq.resend_msg_ids.length;s++)d=this.lastResendReq.resend_msg_ids[s],u=this.pendingResends.indexOf(d),-1!=u&&this.pendingResends.splice(u,1)}break;case"rpc_result":this.ackMessage(n);var p=e.req_msg_id,r=this.sentMessages[p];if(this.processMessageAck(p),r){var m=r.deferred;if("rpc_error"==e.result._){var h=this.processError(e.result);console.log(dT(),"Rpc error",h),m&&m.reject(h)}else{if(m){if(Config.Modes.debug)console.log(dT(),"Rpc response",e.result);else{var f=e.result._;f||(f=e.result.length>5?"[.."+e.result.length+"..]":e.result),console.log(dT(),"Rpc response",f)}r.deferred.resolve(e.result)}r.isAPI&&(this.connectionInited=!0)}delete this.sentMessages[p]}break;default:this.ackMessage(n),g&&g(e)}},{getNetworker:function(e,t,n,a){return new u(e,t,n,a)},setUpdatesProcessor:function(e){g=e},stopAll:m,startAll:p}}]),angular.module("izhukov.mtproto.wrapper",["izhukov.utils","izhukov.mtproto"]).factory("MtpApiManager",["Storage","MtpAuthorizer","MtpNetworkerFactory","MtpSingleInstanceService","AppRuntimeManager","ErrorService","qSync","$rootScope","$q","TelegramMeWebService",function(e,t,n,a,i,o,s,r,l,c){function d(e){_!==e&&(_=e,c.setAuthorized(_))}function u(t,n){var a=angular.extend({dcID:t},n);e.set({dc:t,user_auth:a}),d(!0),r.$broadcast("user_auth",a),w=t}function p(){for(var t=[],n=1;5>=n;n++)t.push("dc"+n+"_auth_key");return e.get.apply(e,t).then(function(n){for(var a=[],i=0;i<n.length;i++)n[i]&&a.push(g("auth.logOut",{},{dcID:i+1}));return l.all(a).then(function(){e.remove("dc","user_auth"),w=!1,d(!1)},function(n){e.remove.apply(t),e.remove("dc","user_auth"),w=!1,n.handled=!0,d(!1)})})}function m(a,i){i=i||{};var o=i.fileUpload||i.fileDownload?y:v;if(!a)throw new Exception("get Networker without dcID");if(void 0!==o[a])return s.when(o[a]);var r="dc"+a+"_auth_key",c="dc"+a+"_server_salt";return e.get(r,c).then(function(s){if(void 0!==o[a])return o[a];var d=s[0],u=s[1];if(d&&512==d.length){var p=bytesFromHex(d),m=bytesFromHex(u);return o[a]=n.getNetworker(a,p,m,i)}return i.createNetworker?t.auth(a).then(function(t){var s={};return s[r]=bytesToHex(t.authKey),s[c]=bytesToHex(t.serverSalt),e.set(s),o[a]=n.getNetworker(a,t.authKey,t.serverSalt,i)},function(e){return console.log("Get networker error",e,e.stack),l.reject(e)}):l.reject({type:"AUTH_KEY_EMPTY",code:401})})}function g(t,n,a){a=a||{};var s,r,c=l.defer(),u=function(e){e?angular.isObject(e)||(e={message:e}):e={type:"ERROR_EMPTY"},c.reject(e),a.noErrorBox||(e.input=t,e.stack=h||e.originalError&&e.originalError.stack||e.stack||(new Error).stack,setTimeout(function(){e.handled||(401==e.code?p()["finally"](function(){"http:"!=location.protocol||Config.Modes.http||-1==Config.App.domains.indexOf(location.hostname)?(location.hash="/login",i.reload()):location.href=location.href.replace(/^http:/,"https:")}):o.show({error:e}),e.handled=!0)},100))},h=(new Error).stack;if(!h)try{window.unexistingFunction()}catch(f){h=f.stack||""}var _=function(i){return(r=i).wrapApiCall(t,n,a).then(function(e){c.resolve(e)},function(o){if(console.error(dT(),"Error",o.code,o.type,w,s),401==o.code&&w==s)e.remove("dc","user_auth"),d(!1),u(o);else if(401==o.code&&w&&s!=w){if(void 0===b[s]){var p=l.defer();g("auth.exportAuthorization",{dc_id:s},{noErrorBox:!0}).then(function(e){g("auth.importAuthorization",{id:e.id,bytes:e.bytes},{dcID:s,noErrorBox:!0}).then(function(){p.resolve()},function(e){p.reject(e)})},function(e){p.reject(e)}),b[s]=p.promise}b[s].then(function(){(r=i).wrapApiCall(t,n,a).then(function(e){c.resolve(e)},u)},u)}else if(303==o.code){var h=o.type.match(/^(PHONE_MIGRATE_|NETWORK_MIGRATE_|USER_MIGRATE_)(\d+)/)[2];h!=s&&(a.dcID?a.dcID=h:e.set({dc:w=h}),m(h,a).then(function(e){e.wrapApiCall(t,n,a).then(function(e){c.resolve(e)},u)},u))}else if(a.rawError||420!=o.code)if(a.rawError||500!=o.code&&"MSG_WAIT_FAILED"!=o.type)u(o);else{var f=tsNow();if(a.stopTime){if(f>=a.stopTime)return u(o)}else a.stopTime=f+1e3*(void 0!==a.timeout?a.timeout:10);a.waitTime=a.waitTime?Math.min(60,1.5*a.waitTime):1,setTimeout(function(){_(r)},1e3*a.waitTime)}else{var v=o.type.match(/^FLOOD_WAIT_(\d+)/)[1]||10;if(v>(a.timeout||60))return u(o);setTimeout(function(){_(r)},1e3*v)}})};return(s=a.dcID||w)?m(s,a).then(_,u):e.get("dc").then(function(e){m(s=e||2,a).then(_,u)}),c.promise}function h(){return e.get("user_auth").then(function(e){return d(e&&e.id>0||!1),e.id||0})}function f(){return w||!1}var _,v={},y={},b={},w=!1;return a.start(),e.get("dc").then(function(e){e&&(w=e)}),{getBaseDcID:f,getUserID:h,invokeApi:g,getNetworker:m,setUserAuth:u,logOut:p}}]).factory("MtpApiFileManager",["MtpApiManager","$q","qSync","FileManager","IdbFileStorage","TmpfsFileStorage","MemoryFileStorage","WebpManager",function(e,t,n,a,i,o,s,r){function l(e,n,a){void 0===w[e]&&(w[e]=[],k[e]=0);var i=w[e],o=t.defer();return i.push({cb:n,deferred:o,activeDelta:a}),setZeroTimeout(function(){c(e)}),o.promise}function c(e){var t=w[e],n="upload"==e?11:5;if(k[e]>=n||!t||!t.length)return!1;var a=t.shift(),i=a.activeDelta||1;k[e]+=i;$++;a.cb().then(function(t){k[e]-=i,c(e),a.deferred.resolve(t)},function(t){k[e]-=i,c(e),a.deferred.reject(t)})}function d(e){switch(e._){case"inputDocumentFileLocation":var t=(e.file_name||"").split(".",2),n=t[1]||"";return e.sticker&&!r.isWebpSupported()&&(n+=".png"),t[0]+"_"+e.id+"."+n;default:e.volume_id||console.trace("Empty location",e);var n="jpg";return e.sticker&&(n=r.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(o.isAvailable())return o;if(i.isAvailable())return i}return s}function m(e,t){var n=d(e);return v[n]||(v[n]=p().saveFile(n,t).then(function(e){return b[n]=e},function(){delete v[n]})),v[n]}function g(i){if(!a.isAvailable())return t.reject({type:"BROWSER_BLOB_NOT_SUPPORTED"});var o=d(i),s=i.sticker?"image/webp":"image/jpeg",c=v[o]||y[o];if(c)return c;var u=p();return y[o]=u.getFile(o).then(function(e){return b[o]=e},function(){var t=l(i.dc_id,function(){var t=i;return t._&&"fileLocation"!=t._||(t=angular.extend({},i,{_:"inputFileLocation"})),e.invokeApi("upload.getFile",{location:t,offset:0,limit:1048576},{dcID:i.dc_id,fileDownload:!0,createNetworker:!0,noErrorBox:!0})}),c=function(e){return!i.sticker||r.isWebpSupported()?n.when(e):r.getPngBlobFromWebp(e)};return u.getFileWriter(o,s).then(function(e){return t.then(function(t){return c(t.bytes).then(function(t){return a.write(e,t).then(function(){return b[o]=e.finalize()})})})})})}function h(e,t){var n=p(),a=d(e);return n.getFile(a,t)}function f(i,o,s,c){if(!a.isAvailable())return t.reject({type:"BROWSER_BLOB_NOT_SUPPORTED"});c=c||{};var u=!1;o.sticker&&!r.isWebpSupported()&&(c.toFileEntry||s>524288?delete o.sticker:(u=!0,c.mime="image/png"));var m=d(o),g=c.toFileEntry||null,h=v[m]||y[m],f=p();if(h)return g?h.then(function(e){return a.copy(e,g)}):h;var _,w=t.defer(),k=!1,$=!1,C=c.mime||"image/jpeg",S=function(e){w.reject(e),S=angular.noop,!_||e&&"DOWNLOAD_CANCELED"==e.type||_.truncate(0)};return f.getFile(m,s).then(function(e){g?a.copy(e,g).then(function(){w.resolve()},S):w.resolve(b[m]=e)},function(){var c=g?a.getFileWriter(g):f.getFileWriter(m,C),d=function(e){return u?r.getPngBlobFromWebp(e):n.when(e)};c.then(function(n){_=n;var r,c,u=524288,p=0,h=t.when();if(n.length){if(p=n.length,p>=s)return void(g?w.resolve():w.resolve(b[m]=n.finalize()));n.seek(p),w.notify({done:p,total:s})}for(r=p;s>r;r+=u)c=t.defer(),function(r,c,p,h){return l(i,function(){return k?t.when():e.invokeApi("upload.getFile",{location:o,offset:c,limit:u},{dcID:i,fileDownload:!0,singleInRequest:void 0!==window.safari,createNetworker:!0})},2).then(function(e){h.then(function(){return k?t.when():d(e.bytes).then(function(e){return a.write(n,e).then(function(){p.resolve()},S).then(function(){r?($=!0,g?w.resolve():w.resolve(b[m]=n.finalize())):w.notify({done:c+u,total:s})})})})})}(r+u>=s,r,c,h),h=c.promise})}),w.promise.cancel=function(){k||$||(k=!0,delete y[m],S({type:"DOWNLOAD_CANCELED"}))},g||(y[m]=w.promise),w.promise}function _(n){var a=n.size,i=a>=10485760,o=!1,s=!1,r=0,c=262144,d=2;a>67108864?(c=524288,d=4):102400>a&&(c=32768,d=1);var u=Math.ceil(a/c);if(u>3e3)return t.reject({type:"FILE_TOO_BIG"});var p,m=[nextRandomInt(4294967295),nextRandomInt(4294967295)],g=t.defer(),h=function(e){g.reject(e),o=!0,h=angular.noop},f=0,_={_:i?"inputFileBig":"inputFile",id:m,parts:u,name:n.name,md5_checksum:""};for(p=0;a>p;p+=c)!function(p,f){l("upload",function(){var l=t.defer(),d=new FileReader,v=n.slice(p,p+c);return d.onloadend=function(t){return o?void l.reject():void(t.target.readyState==FileReader.DONE&&e.invokeApi(i?"upload.saveBigFilePart":"upload.saveFilePart",{file_id:m,file_part:f,file_total_parts:u,bytes:t.target.result},{startMaxLength:c+256,fileUpload:!0,singleInRequest:!0}).then(function(){r++,l.resolve(),r>=u?(g.resolve(_),s=!0):(console.log(dT(),"Progress",r*c/a),g.notify({done:r*c,total:a}))},h))},d.readAsArrayBuffer(v),l.promise},d)}(p,f++);return g.promise.cancel=function(){console.log("cancel upload",o,s),o||s||(o=!0,h({type:"UPLOAD_CANCELED"}))},g.promise}var v={},y={},b={},w={},k={},$=0;return{getCachedFile:u,getDownloadedFile:h,downloadFile:f,downloadSmallFile:g,saveSmallFile:m,uploadFile:_}}]).service("MtpSingleInstanceService",["_","$rootScope","$compile","$timeout","$interval","$modalStack","Storage","AppRuntimeManager","IdleManager","ErrorService","MtpNetworkerFactory",function(e,t,n,a,i,o,s,r,l,c,d){function u(){if(!f&&!Config.Navigator.mobile&&!Config.Modes.packed){f=!0,l.start(),t.$watch("idle.isIDLE",g),i(g,5e3),g();try{$($window).on("beforeunload",p)}catch(e){}}}function p(){s.remove(_?"xt_instance":"xt_idle_instance")}function m(){if(_||y)return!1;console.log(dT(),"deactivate"),v=!1,y=!0,p(),o.dismissAll(),document.title=e("inactive_tab_title_raw");var a=n("<ng-include src=\"'partials/desktop/inactive.html'\"></ng-include>"),i=t.$new(!0);i.close=function(){r.close()},i.reload=function(){r.reload()},a(i,function(e){$(".page_wrap").hide(),$(e).appendTo($("body"))}),t.idle.deactivated=!0}function g(){if(y)return!1;var e=tsNow(),n=t.idle&&t.idle.isIDLE,i={id:h,idle:n,time:e};s.get("xt_instance","xt_idle_instance").then(function(t){var o=t[0],r=t[1];!n||!o||o.id==h||o.time<e-6e4?(r&&r.id==h&&s.remove("xt_idle_instance"),s.set({xt_instance:i}),_||(d.startAll(),console.warn(dT(),"now master instance",i)),_=!0,v&&(a.cancel(v),v=!1)):(s.set({xt_idle_instance:i}),_&&(d.stopAll(),console.warn(dT(),"now idle instance",i),v||(v=a(m,3e4))),_=!1)})}var h=nextRandomInt(4294967295),f=!1,_=!1,v=!1,y=!1;return{start:u}}]);var extraModules=[];Config.Modes.animations&&extraModules.push("ngAnimate"),angular.module("myApp",["ngRoute","ngSanitize","ngTouch","ui.bootstrap","mediaPlayer","toaster","izhukov.utils","izhukov.mtproto","izhukov.mtproto.wrapper","myApp.filters","myApp.services","myApp.templates","myApp.directives","myApp.controllers"].concat(extraModules)).config(["$locationProvider","$routeProvider","$compileProvider","StorageProvider",function(e,t,n,a){n.imgSrcSanitizationWhitelist(/^\s*(https?|ftp|file|blob|filesystem|chrome-extension|app):|data:image\//),n.aHrefSanitizationWhitelist(/^\s*(https?|ftp|file|tg|mailto|blob|filesystem|chrome-extension|app):|data:/),n.debugInfoEnabled(!1),Config.Modes.test&&a.setPrefix("t_"),t.when("/",{templateUrl:templateUrl("welcome"),controller:"AppWelcomeController"}),t.when("/login",{templateUrl:templateUrl("login"),controller:"AppLoginController"}),t.when("/im",{templateUrl:templateUrl("im"),controller:"AppIMController",reloadOnSearch:!1}),t.otherwise({redirectTo:"/"})}]),angular.module("myApp.services",["myApp.i18n","izhukov.utils"]).service("AppUsersManager",["$rootScope","$modal","$modalStack","$filter","$q","qSync","MtpApiManager","RichTextProcessor","Storage","_",function(e,t,n,a,i,o,s,r,l,c){function d(){return R?R:R=s.invokeApi("contacts.getContacts",{hash:""}).then(function(e){var t,n;N=[],g(e.users);for(var n=0;n<e.contacts.length;n++)t=e.contacts[n].user_id,N.push(t),SearchIndexManager.indexObject(t,u(t),q);return N})}function u(e){var t=O[e];return t?(t.first_name||"")+" "+(t.last_name||"")+" "+(t.phone||"")+" "+(t.username||""):!1}function p(e){return d().then(function(t){if(angular.isString(e)&&e.length){for(var n=SearchIndexManager.search(e,q),a=[],i=0;i<t.length;i++)n[t[i]]&&a.push(t[i]);t=a}return t})}function m(e){return B[e]||0}function g(e){angular.forEach(e,h)}function h(t,n){if(angular.isObject(t)&&!(n&&angular.isObject(O[t.id])&&O[t.id].first_name)){var i=t.id,o=O[i];if(void 0===t.pFlags&&(t.pFlags={}),!t.pFlags.min||void 0===o){if(t.phone&&(t.rPhone=a("phoneNumber")(t.phone)),t.num=Math.abs(i)%8+1,t.first_name?(t.rFirstName=r.wrapRichText(t.first_name,{noLinks:!0,noLinebreaks:!0}),t.rFullName=t.last_name?r.wrapRichText(t.first_name+" "+(t.last_name||""),{noLinks:!0,noLinebreaks:!0}):t.rFirstName):(t.rFirstName=r.wrapRichText(t.last_name,{noLinks:!0,noLinebreaks:!0})||t.rPhone||c("user_first_name_deleted"),t.rFullName=r.wrapRichText(t.last_name,{noLinks:!0,noLinebreaks:!0})||t.rPhone||c("user_name_deleted")),t.username){var s=SearchIndexManager.cleanUsername(t.username);B[s]=i}t.sortName=t.pFlags.deleted?"":SearchIndexManager.cleanSearchText(t.first_name+" "+(t.last_name||""));var l=t.sortName.split(" "),d=l.shift(),u=l.pop();t.initials=d.charAt(0)+(u?u.charAt(0):d.charAt(1)),t.status&&(t.status.expires&&(t.status.expires-=H),t.status.was_online&&(t.status.was_online-=H)),t.sortStatus=t.pFlags.bot?-1:_(t.status);var o=O[i];void 0===o?o=O[i]=t:safeReplaceObject(o,t),e.$broadcast("user_update",i),void 0!==j[i]&&safeReplaceObject(j[i],t&&t.photo&&t.photo.photo_small||{empty:!0})}}}function f(e,t){L[e]=t}function _(e){if(e){var t=e.expires||e.was_online;if(t)return t;var n=tsNow(!0);switch(e._){case"userStatusRecently":return n-259200;case"userStatusLastWeek":return n-604800;case"userStatusLastMonth":return n-2592e3}}return 0}function v(e){return angular.isObject(e)?e:O[e]||{id:e,deleted:!0,num:1,access_hash:L[e]}}function y(){return v(U)}function b(e){return O[e]&&O[e].pFlags.bot}function w(e,t){var n=O[e];return angular.isObject(n)&&(t||!n.pFlags.min)}function k(e){var t=v(e);return 333e3==e?{placeholder:"img/placeholders/DialogListAvatarSystem@2x.png"}:(void 0===j[e]&&(j[e]=t&&t.photo&&t.photo.photo_small||{empty:!0}),{num:t.num,placeholder:"img/placeholders/UserAvatar"+t.num+"@2x.png",location:j[e]})}function $(e){var t=v(e);return"u"+e+(t.access_hash?"_"+t.access_hash:"")}function C(e){var t=v(e);return t.pFlags.self?{_:"inputUserSelf"}:{_:"inputUser",user_id:e,access_hash:t.access_hash||0}}function S(){var t=tsNow(!0);angular.forEach(O,function(n){n.status&&"userStatusOnline"==n.status._&&n.status.expires<t&&(n.status=n.status.wasStatus||{_:"userStatusOffline",was_online:n.status.expires},delete n.status.wasStatus,e.$broadcast("user_update",n.id))})}function M(t){if(!b(t)){var n=v(t);if(n&&n.status&&"userStatusOnline"!=n.status._&&"userStatusEmpty"!=n.status._){var a;"userStatusOffline"!=n.status._&&(delete n.status.wasStatus,a=angular.copy(n.status)),n.status={_:"userStatusOnline",expires:tsNow(!0)+60,wasStatus:a},n.sortStatus=_(n.status),e.$broadcast("user_update",t)}}}function x(e){var t=v(e);return t}function I(n,a){var i=e.$new();i.userID=n,i.override=a||{};t.open({templateUrl:templateUrl("user_modal"),controller:"UserModalController",scope:i,windowClass:"user_modal_window mobile_modal",backdrop:"single"})}function A(e,t,n){return s.invokeApi("contacts.importContacts",{contacts:[{_:"inputPhoneContact",client_id:"1",phone:e,first_name:t,last_name:n}],replace:!1}).then(function(e){g(e.users);var t=!1;return angular.forEach(e.imported,function(e){D(t=e.user_id,!0)}),t||!1})}function E(e){var t,n,a=[];for(t=0;t<e.length;t++)for(n=0;n<e[t].phones.length;n++)a.push({_:"inputPhoneContact",client_id:(t<<16|n).toString(10),phone:e[t].phones[n],first_name:e[t].first_name,last_name:e[t].last_name});return s.invokeApi("contacts.importContacts",{contacts:a,replace:!1}).then(function(e){g(e.users);var t=[];return angular.forEach(e.imported,function(e){D(e.user_id,!0),t.push(e.user_id)}),t})}function T(e){var t=[];return angular.forEach(e,function(e){t.push(C(e))}),s.invokeApi("contacts.deleteContacts",{id:t}).then(function(){angular.forEach(e,function(e){D(e,!1)})})}function D(t,n){if(angular.isArray(N)){var a=i=N.indexOf(parseInt(t)),i=-1!=a;n!=i&&(n?(N.push(t),SearchIndexManager.indexObject(t,u(t),q)):N.splice(a,1),e.$broadcast("contacts_update",t))}}function P(){return t.open({templateUrl:templateUrl("import_contact_modal"),controller:"ImportContactModalController",windowClass:"md_simple_modal_window mobile_modal"}).result.then(function(e){return e?e:i.reject()})}function F(t,n){if(!b(t)){var a=O[t];if(a){var i=n?{_:"userStatusOffline",was_online:tsNow(!0)}:{_:"userStatusOnline",expires:tsNow(!0)+500};a.status=i,a.sortStatus=_(a.status),e.$broadcast("user_update",t)}}}var R,N,U,O={},B={},L={},j={},q=SearchIndexManager.createIndex(),H=0;return l.get("server_time_offset").then(function(e){e&&(H=e)}),s.getUserID().then(function(e){U=e}),e.$on("apiUpdate",function(t,n){switch(n._){case"updateUserStatus":var a=n.user_id,i=O[a];i&&(i.status=n.status,i.status&&(i.status.expires&&(i.status.expires-=H),i.status.was_online&&(i.status.was_online-=H)),i.sortStatus=_(i.status),e.$broadcast("user_update",a));break;case"updateUserPhoto":var a=n.user_id,i=O[a];i&&(M(a),i.photo?safeReplaceObject(i.photo,n.photo):i.photo=n.photo,void 0!==j[a]&&safeReplaceObject(j[a],n.photo&&n.photo.photo_small||{empty:!0}),e.$broadcast("user_update",a));break;case"updateContactLink":D(n.user_id,"contactLinkContact"==n.my_link._)}}),e.$on("user_auth",function(e,t){U=t&&t.id||0}),setInterval(S,6e4),e.$on("stateSynchronized",S),{getContacts:p,saveApiUsers:g,saveApiUser:h,saveUserAccess:f,getUser:v,getSelf:y,getUserInput:C,setUserStatus:F,forceUserOnline:M,getUserPhoto:k,getUserString:$,getUserSearchText:u,hasUser:w,isBot:b,importContact:A,importContacts:E,deleteContacts:T,wrapForFull:x,openUser:I,resolveUsername:m,openImportContact:P}}]).service("PhonebookContactsService",["$q","$modal","$sce","FileManager",function(e,t,n,a){function i(){if(Config.Mobile&&Config.Navigator.ffos&&Config.Modes.packed)try{return navigator.mozContacts&&navigator.mozContacts.getAll}catch(e){return console.error(dT(),"phonebook n/a",e),!1}return!1}function o(){return t.open({templateUrl:templateUrl("phonebook_modal"),controller:"PhonebookModalController",windowClass:"phonebook_modal_window mobile_modal"})}function s(){try{var t=window.navigator.mozContacts.getAll({})}catch(i){return e.reject(i)}var o=e.defer(),s=[],r=0;return t.onsuccess=function(){if(this.result){var e={id:r,first_name:(this.result.givenName||[]).join(" "),last_name:(this.result.familyName||[]).join(" "),phones:[]};if(void 0!=this.result.tel)for(var t=0;t<this.result.tel.length;t++)e.phones.push(this.result.tel[t].value);if(this.result.photo&&this.result.photo[0])try{e.photo=a.getUrl(this.result.photo[0])}catch(i){}e.photo||(e.photo="img/placeholders/UserAvatar"+(Math.abs(r)%8+1)+"@2x.png"),e.photo=n.trustAsResourceUrl(e.photo),r++,s.push(e)}return!this.result||r>=1e3?void o.resolve(s):void this["continue"]()},t.onerror=function(e){console.log("phonebook error",e,e.type,e.message),o.reject(e)},o.promise}return{isAvailable:i,openPhonebookImport:o,getPhonebookContacts:s}}]).service("AppChatsManager",["$q","$rootScope","$modal","_","MtpApiManager","AppUsersManager","AppPhotosManager","RichTextProcessor",function(e,t,n,a,i,o,s,r){function l(e){angular.forEach(e,c)}function c(e){if(angular.isObject(e)){e.rTitle=r.wrapRichText(e.title,{noLinks:!0,noLinebreaks:!0})||a("chat_title_deleted");var n=C[e.id],i=SearchIndexManager.cleanSearchText(e.title||"").split(" "),o=i.shift(),s=i.pop();if(e.initials=o.charAt(0)+(s?s.charAt(0):o.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);S[l]=e.id}void 0===n?n=C[e.id]=e:(safeReplaceObject(n,e),t.$broadcast("chat_update",e.id)),void 0!==I[e.id]&&safeReplaceObject(I[e.id],e&&e.photo&&e.photo.photo_small||{empty:!0})}}}function d(e){return C[e]||{id:e,deleted:!0,access_hash:M[e]}}function u(e,t){if(void 0===C[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 S[e]||0}function m(e,t){M[e]=t}function g(e){x[e]=!0}function h(e){var t=C[e];return t&&("channel"==t._||"channelForbidden"==t._)||M[e]?!0:!1}function f(e){if(x[e])return!0;var t=C[e];return t&&"channel"==t._&&t.pFlags.megagroup?!0:!1}function _(e){return e||0}function v(e){return e?{_:"inputChannel",channel_id:e,access_hash:d(e).access_hash||M[e]||0}:{_:"inputChannelEmpty"}
}function y(e,t){var n=C[e];return angular.isObject(n)&&(t||!n.pFlags.min)}function b(e){var t=d(e);return void 0===I[e]&&(I[e]=t&&t.photo&&t.photo.photo_small||{empty:!0}),{placeholder:"img/placeholders/GroupAvatar"+Math.ceil(t.num/2)+"@2x.png",location:I[e]}}function w(e){var t=d(e);return h(e)?(f(e)?"s":"c")+e+"_"+t.access_hash:"g"+e}function k(e,t){var n=angular.copy(t),a=d(e);if(n.participants&&"chatParticipants"==n.participants._&&i.getUserID().then(function(e){var t=a.pFlags.creator||a.pFlags.admins_enabled&&a.pFlags.admin;angular.forEach(n.participants.participants,function(n){n.canLeave=e==n.user_id,n.canKick=!n.canLeave&&(a.pFlags.creator||"chatParticipant"==n._&&(t||e==n.inviter_id)),n.user=o.getUser(n.user_id)})}),n.participants&&"channelParticipants"==n.participants._){var s=a.pFlags.creator||a.pFlags.editor||a.pFlags.moderator;angular.forEach(n.participants.participants,function(e){e.canLeave=!a.pFlags.creator&&"channelParticipantSelf"==e._,e.canKick=s&&"channelParticipant"==e._,e.user=o.getUser(e.user_id)})}return n.about&&(n.rAbout=r.wrapRichText(n.about,{noLinebreaks:!0})),n.peerString=w(e),n.chat=a,n}function $(e){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 C={},S={},M={},x={},I={};return t.$on("apiUpdate",function(e,n){switch(n._){case"updateChannel":var a=n.channel_id;t.$broadcast("channel_settings",{channelID:a})}}),{saveApiChats:l,saveApiChat:c,getChat:d,isChannel:h,isMegagroup:f,hasRights:u,saveChannelAccess:m,saveIsMegagroup:g,getChatInput:_,getChannelInput:v,getChatPhoto:b,getChatString:w,resolveUsername:p,hasChat:y,wrapForFull:k,openChat:$}}]).service("AppPeersManager",["$q","qSync","AppUsersManager","AppChatsManager","MtpApiManager",function(e,t,n,a,i){function o(e){var t=e.charAt(0),i=e.substr(1).split("_");return"u"==t?(n.saveUserAccess(i[0],i[1]),{_:"inputPeerUser",user_id:i[0],access_hash:i[1]}):"c"==t||"s"==t?(a.saveChannelAccess(i[0],i[1]),"s"==t&&a.saveIsMegagroup(i[0]),{_:"inputPeerChannel",channel_id:i[0],access_hash:i[1]||0}):{_:"inputPeerChat",chat_id:i[0]}}function s(e){if(!e)return{_:"inputPeerEmpty"};if(0>e){var t=-e;return a.isChannel(t)?{_:"inputPeerChannel",channel_id:t,access_hash:a.getChat(t).access_hash||0}:{_:"inputPeerChat",chat_id:t}}return{_:"inputPeerUser",user_id:e,access_hash:n.getUser(e).access_hash||0}}function r(e){var t;if(e>0)t="%pu "+n.getUserSearchText(e);else if(0>e){var i=a.getChat(-e);t="%pg "+(i.title||"")}return t}function l(e){return e>0?n.getUserString(e):a.getChatString(-e)}function c(e){if(e>0)return{_:"peerUser",user_id:e};var t=-e;return a.isChannel(t)?{_:"peerChannel",channel_id:t}:{_:"peerChat",chat_id:t}}function d(e){var o,s,r,l=SearchIndexManager.cleanUsername(e);return(o=n.resolveUsername(l))&&(r=n.getUser(o).username,SearchIndexManager.cleanUsername(r)==l)?t.when(o):(s=a.resolveUsername(l))&&(r=a.getChat(s).username,SearchIndexManager.cleanUsername(r)==l)?t.when(-s):i.invokeApi("contacts.resolveUsername",{username:e}).then(function(e){return n.saveApiUsers(e.users),a.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):a.getChat(-e)}function m(e){return e>0?n.getUserPhoto(e):a.getChatPhoto(-e)}function g(e){return 0>e&&a.isChannel(-e)}function h(e){return 0>e&&a.isMegagroup(-e)}function f(e){return e>0&&n.isBot(e)}return{getInputPeer:o,getInputPeerByID:s,getPeerSearchText:r,getPeerString:l,getOutputPeer:c,getPeerID:u,getPeer:p,getPeerPhoto:m,resolveUsername:d,isChannel:g,isMegagroup:h,isBot:f}}]).service("AppProfileManager",["$q","$rootScope","AppUsersManager","AppChatsManager","AppPeersManager","AppPhotosManager","NotificationsManager","MtpApiManager","ApiUpdatesManager","RichTextProcessor",function(e,t,n,a,i,o,s,r,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 r.invokeApi("users.getFullUser",{id:n.getUserInput(e)}).then(function(a){return t&&t.phone_number?(a.user.phone=t.phone_number,(t.first_name||t.last_name)&&(a.user.first_name=t.first_name,a.user.last_name=t.last_name),n.saveApiUser(a.user)):n.saveApiUser(a.user,!0),a.profile_photo&&o.savePhoto(a.profile_photo,{user_id:e}),void 0!==a.about&&(a.rAbout=c.wrapRichText(a.about,{noLinebreaks:!0})),s.savePeerSettings(e,a.notify_settings),a.bot_info&&(a.bot_info=d(a.bot_info)),a})}function p(t){var a=[];return t>=0&&!n.isBot(t)||i.isChannel(t)&&!i.isMegagroup(t)?e.when(a):t>=0?u(t).then(function(e){var t=e.bot_info;return t&&"botInfoEmpty"!=t._&&a.push(t),a}):m(-t).then(function(e){return angular.forEach(e.bot_info,function(e){a.push(d(e))}),a})}function m(i){if(a.isChannel(i))return f(i);if(void 0!==v[i]){var l=a.getChat(i);if(l.version==v[i].participants.version||l.pFlags.left)return e.when(v[i])}return void 0!==y[i]?y[i]:(console.trace(dT(),"Get chat full",i,a.getChat(i)),y[i]=r.invokeApi("messages.getFullChat",{chat_id:a.getChatInput(i)}).then(function(e){a.saveApiChats(e.chats),n.saveApiUsers(e.users);var r=e.full_chat;return r&&r.chat_photo.id&&o.savePhoto(r.chat_photo),s.savePeerSettings(-i,r.notify_settings),delete y[i],v[i]=r,t.$broadcast("chat_full_update",i),r}))}function g(e,t){return m(e).then(function(n){if(!t&&n.exported_invite&&"chatInviteExported"==n.exported_invite._)return n.exported_invite.link;var i;return i=a.isChannel(e)?r.invokeApi("channels.exportInvite",{channel:a.getChannelInput(e)}):r.invokeApi("messages.exportChatInvite",{chat_id:a.getChatInput(e)}),i.then(function(t){return void 0!==v[e]&&(v[e].exported_invite=t),t.link})})}function h(e){return r.invokeApi("channels.getParticipants",{channel:a.getChannelInput(e),filter:{_:"channelParticipantsRecent"},offset:0,limit:a.isMegagroup(e)?50:200}).then(function(t){n.saveApiUsers(t.users);var i=t.participants,o=a.getChat(e);if(!o.pFlags.kicked&&!o.pFlags.left){for(var s,r=n.getSelf().id,l=!1,c=0,d=i.length;d>c;c++)if(i[c].user_id==r){l=c;break}l!==!1?(s=i[c],i.splice(c,1)):s={_:"channelParticipantSelf",user_id:r},i.unshift(s)}return i})}function f(i,c){return void 0===v[i]||c?void 0!==y[i]?y[i]:y[i]=r.invokeApi("channels.getFullChannel",{channel:a.getChannelInput(i)}).then(function(r){a.saveApiChats(r.chats),n.saveApiUsers(r.users);{var l=r.full_chat;a.getChat(i)}l&&l.chat_photo.id&&o.savePhoto(l.chat_photo),s.savePeerSettings(-i,l.notify_settings);var c;return c=8&l.flags?h(i).then(function(e){delete y[i],l.participants={_:"channelParticipants",participants:e}},function(e){e.handled=!0}):e.when(),c.then(function(){return delete y[i],v[i]=l,t.$broadcast("chat_full_update",i),l})},function(t){switch(t.type){case"CHANNEL_PRIVATE":var n=a.getChat(i);n={_:"channelForbidden",access_hash:n.access_hash,title:n.title},l.processUpdateMessage({_:"updates",updates:[{_:"updateChannel",channel_id:i}],chats:[n],users:[]})}return e.reject(t)}):e.when(v[i])}var _={},v={},y={};return t.$on("apiUpdate",function(e,n){switch(n._){case"updateChatParticipants":var a=n.participants,i=v[a.id];void 0!==i&&(i.participants=n.participants,t.$broadcast("chat_full_update",chatID));break;case"updateChatParticipantAdd":var i=v[n.chat_id];if(void 0!==i){for(var a=i.participants.participants||[],o=0,s=a.length;s>o;o++)if(a[o].user_id==n.user_id)return;a.push({_:"chatParticipant",user_id:n.user_id,inviter_id:n.inviter_id,date:tsNow(!0)}),i.participants.version=n.version,t.$broadcast("chat_full_update",n.chat_id)}break;case"updateChatParticipantDelete":var i=v[n.chat_id];if(void 0!==i)for(var a=i.participants.participants||[],o=0,s=a.length;s>o;o++)if(a[o].user_id==n.user_id)return a.splice(o,1),i.participants.version=n.version,void t.$broadcast("chat_full_update",n.chat_id)}}),t.$on("chat_update",function(e,n){var i=v[n],s=a.getChat(n);if(s.photo&&i){var r="chatPhotoEmpty"==s.photo._;if(r!=("photoEmpty"==i.chat_photo._))return delete v[n],void t.$broadcast("chat_full_update",n);if(!r){var l=s.photo.photo_small,c=o.choosePhotoSize(i.chat_photo,0,0);angular.equals(l,c.location)||(delete v[n],t.$broadcast("chat_full_update",n))}}}),{getPeerBots:p,getProfile:u,getChatInviteLink:g,getChatFull:m,getChannelFull:f}}]).service("AppPhotosManager",["$modal","$window","$rootScope","MtpApiManager","MtpApiFileManager","AppUsersManager","FileManager",function(e,t,n,a,i,o,s){function r(e,t){t&&angular.extend(e,t),f[e.id]=e,angular.forEach(e.sizes,function(e){"photoCachedSize"==e._&&(i.saveSmallFile(e.location,e.bytes),e.size=e.bytes.length,delete e.bytes,e._="photoSize")})}function l(e,t,n){Config.Navigator.retina&&(t*=2,n*=2);var a={_:"photoSizeEmpty"},i=16777215;return angular.forEach(e.sizes,function(e){var o=Math.abs(e.w*e.h-t*n);i>o&&(a=e,i=o)}),a}function c(e,t,n){var i=o.getUserInput(e);return a.invokeApi("photos.getUserPhotos",{user_id:i,offset:0,limit:n||20,max_id:t||0}).then(function(t){o.saveApiUsers(t.users);for(var n=[],a={user_id:e},i=0;i<t.photos.length;i++)r(t.photos[i],a),n.push(t.photos[i].id);return{count:t.count||t.photos.length,photos:n}})}function d(e){if(f[e]){var n=f[e],a=$(window).width()-(Config.Mobile?20:32),o=$(t).height()-(Config.Mobile?150:116);a>800&&(a-=208);var s=l(n,a,o);s&&!s.preloaded&&(s.preloaded=!0,s.size?i.downloadFile(s.location.dc_id,{_:"inputFileLocation",volume_id:s.location.volume_id,local_id:s.location.local_id,secret:s.location.secret},s.size):i.downloadSmallFile(s.location))}}function u(e){return f[e]||{_:"photoEmpty"}}function p(e,t){t=t||{};var n=angular.copy(f[e])||{_:"photoEmpty"},a=t.website?64:Math.min(_-80,Config.Mobile?210:260),i=t.website?64:Math.min(v-100,Config.Mobile?210:260),o=l(n,a,i),s={placeholder:"img/placeholders/PhotoThumbConversation.gif",width:a,height:i};if(t.website&&Config.Mobile&&(a=50,i=50),o&&"photoSizeEmpty"!=o._){var r=calcImageInBox(o.w,o.h,a,i);s.width=r.w,s.height=r.h,s.location=o.location,s.size=o.size}else s.width=100,s.height=100;return n.thumb=s,n}function m(e){var n=p(e),a=$(window).width()-(Config.Mobile?0:32),i=$(t).height()-(Config.Mobile?0:116);!Config.Mobile&&a>800&&(a-=208);var o=l(n,a,i),s={placeholder:"img/placeholders/PhotoThumbModal.gif"};if(s.width=a,s.height=i,o&&"photoSizeEmpty"!=o._){var r=calcImageInBox(o.w,o.h,a,i,!0);s.width=r.w,s.height=r.h,s.modalWidth=Math.max(s.width,Math.min(400,a)),s.location=o.location,s.size=o.size}return n.full=s,n}function g(t,a){if(!t||"0"===t)return!1;var i=n.$new(!0);i.photoID=t;var o="PhotoModalController";a&&a.p>0?(o="UserpicModalController",i.userID=a.p):a&&a.p<0?(o="ChatpicModalController",i.chatID=-a.p):a&&a.m>0&&(i.messageID=a.m,a.w&&(i.webpageID=a.w));e.open({templateUrl:templateUrl("photo_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:o,scope:i,windowClass:"photo_modal_window"})}function h(e){var n=f[e],a="jpg",o="image/jpeg",r="photo"+e+"."+a,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};s.chooseSave(r,a,o).then(function(e){e&&i.downloadFile(u.location.dc_id,p,u.size,{mime:o,toFileEntry:e}).then(function(){},function(e){console.log("photo download failed",e)})},function(){var e=i.getCachedFile(p);return e?s.download(e,o,r):void i.downloadFile(u.location.dc_id,p,u.size,{mime:o}).then(function(e){s.download(e,o,r)},function(e){console.log("photo download failed",e)})})}var f={},_=$(window).width(),v=$(window).height();return n.preloadPhoto=d,n.openPhoto=g,{savePhoto:r,preloadPhoto:d,getUserPhotos:c,getPhoto:u,choosePhotoSize:l,wrapForHistory:p,wrapForFull:m,openPhoto:g,downloadPhoto:h}}]).service("AppWebPagesManager",["$modal","$sce","$window","$rootScope","MtpApiManager","AppPhotosManager","AppDocsManager","RichTextProcessor",function(e,t,n,a,i,o,s,r){function l(e,t,n){e.photo&&"photo"===e.photo._?o.savePhoto(e.photo,n):delete e.photo,e.document&&"document"===e.document._?s.saveDoc(e.document,n):("document"==e.type&&delete e.type,delete e.document);var i=e.site_name,l=e.title||e.author||i;i&&l==i&&delete e.site_name,e.rTitle=r.wrapRichText(l,{noLinks:!0,noLinebreaks:!0});var c="";if("GitHub"==i){var d=e.url.match(/(https?:\/\/github\.com\/[^\/]+\/[^\/]+)/);d&&(c=d[0]+"/issues/{1}")}if(e.rDescription=r.wrapRichText(e.description,{contextSite:i||"external",contextHashtag:c}),"photo"!=e.type&&"video"!=e.type&&"gif"!=e.type&&"document"!=e.type&&"gif"!=e.type&&!e.description&&e.photo&&(e.type="photo"),t&&(void 0===m[e.id]&&(m[e.id]={}),m[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!==m[e.id]){var u=[];angular.forEach(m[e.id],function(e,t){u.push(t)}),a.$broadcast("webpage_updated",{id:e.id,msgs:u})}}function c(t,n){var i=a.$new(!0);i.webpageID=t,i.messageID=n,e.open({templateUrl:templateUrl("embed_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:"EmbedModalController",scope:i,windowClass:"photo_modal_window"})}function d(e){var t=angular.copy(p[e])||{_:"webPageEmpty"};return t.photo&&t.photo.id&&(t.photo=o.wrapForHistory(t.photo.id,{website:"photo"!=t.type&&"video"!=t.type})),t.document&&t.document.id&&(t.document=s.wrapForHistory(t.document.id)),t}function u(e){var a=d(e);if(!a.embed_url)return a;var i=$(window).width()-(Config.Mobile?0:10),o=$(n).height()-(Config.Mobile?92:150);!Config.Mobile&&i>800&&(i-=208);var s={width:i,height:o};if(a.embed_width&&a.embed_height){var r=calcImageInBox(a.embed_width,a.embed_height,i,o);s.width=r.w,s.height=r.h}else s.height=s.width=Math.min(i,o);var l=Config.Modes.chrome_packed?"webview":"iframe",c="iframe"!=a.embed_type?a.embed_type||"text/html":"text/html",u="<"+l+' src="'+encodeEntities(a.embed_url)+'" type="'+encodeEntities(c)+'" frameborder="0" border="0" webkitallowfullscreen mozallowfullscreen allowfullscreen width="'+s.width+'" height="'+s.height+'" style="width: '+s.width+"px; height: "+s.height+'px;"></'+l+">";return s.html=t.trustAs("html",u),a.full=s,a}var p={},m={};return a.$on("apiUpdate",function(e,t){switch(t._){case"updateWebPage":l(t.webpage)}}),{saveWebPage:l,openEmbed:c,wrapForFull:u,wrapForHistory:d}}]).service("AppDocsManager",["$sce","$rootScope","$modal","$window","$q","$timeout","RichTextProcessor","MtpApiFileManager","FileManager","qSync",function(e,t,n,a,i,o,s,r,l,c){function d(e,t){if(w[e.id]=e,t&&angular.extend(e,t),e.thumb&&"photoCachedSize"==e.thumb._&&(r.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&&(e.type="video");break;case"documentAttributeSticker":e.sticker=!0,void 0!==t.alt&&(e.stickerEmojiRaw=t.alt,e.stickerEmoji=s.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":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 m(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 g(e){if(void 0!==k[e])return k[e];var t,n,a,i,o=angular.copy(w[e]),s=o.thumb,r=!1;switch(o.type){case"video":t=Math.min(C-80,Config.Mobile?210:150),n=Math.min(S-100,Config.Mobile?210:150);break;case"sticker":r=!0,t=Math.min(C-80,Config.Mobile?128:192),n=Math.min(S-100,Config.Mobile?128:192);break;case"gif":r=!0,t=Math.min(C-80,Config.Mobile?210:260),n=Math.min(S-100,Config.Mobile?210:260);break;default:t=n=100}return r&&o.w&&o.h?i=calcImageInBox(o.w,o.h,t,n):s&&(i=calcImageInBox(s.w,s.h,t,n)),i?(a={width:i.w,height:i.h},s&&(a.location=s.location,a.size=s.size)):a=!1,o.thumb=a,o.withPreview=!Config.Mobile&&o.mime_type.match(/^image\/(gif|png|jpeg|jpg|bmp|tiff)/)?1:0,k[e]=o}function h(e){var t=w[e],n=k[e]||t||{},a={_:"inputDocumentFileLocation",id:e,access_hash:t.access_hash,file_name:m(t)};void 0===n.downloaded&&r.getDownloadedFile(a,t.size).then(function(){n.downloaded=!0},function(){n.downloaded=!1})}function f(n,a){var s=w[n],d=k[n]||s||{},u={_:"inputDocumentFileLocation",id:n,access_hash:s.access_hash,file_name:m(s)};if("documentEmpty"==s._)return i.reject();if(d.downloaded&&!a){var p=r.getCachedFile(u);if(p)return c.when(p)}d.progress={enabled:!d.downloaded,percent:1,total:s.size};var g=r.downloadFile(s.dc_id,u,s.size,{mime:s.mime_type||"application/octet-stream",toFileEntry:a});return g.then(function(t){t&&(l.getFileCorrectUrl(t,s.mime_type).then(function(t){var n=e.trustAsResourceUrl(t);d.url=n,s.url=n}),d.downloaded=!0),d.progress.percent=100,o(function(){delete d.progress}),console.log("file save done")},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=g.cancel,g}function _(e,a){var i=t.$new(!0);i.docID=e,i.messageID=a;n.open({templateUrl:templateUrl("document_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:"DocumentModalController",scope:i,windowClass:"document_modal_window"})}function v(e){var t=w[e],n=(k[e]||t||{},t.mime_type,m(t)),a=(n.split(".",2)||[])[1]||"";l.chooseSave(m(t),a,t.mime_type).then(function(t){t&&f(e,t)},function(){f(e).then(function(e){l.download(e,t.mime_type,n)})})}function y(e){var t=g(e),n=Math.min($(window).width()-(Config.Mobile?0:60),542),a=$(window).height()-(Config.Mobile?92:150),i={placeholder:"img/placeholders/docThumbModal.gif",width:n,height:a};if(t.w&&t.h){var o=calcImageInBox(t.w,t.h,n,a);i.width=o.w,i.height=o.h}else i.height=i.width=Math.min(n,a);return t.full=i,t.fullThumb=angular.copy(t.thumb),t.fullThumb.width=i.width,t.fullThumb.height=i.height,t}function b(e,a){var i=t.$new(!0);return i.docID=e,i.messageID=a,n.open({templateUrl:templateUrl("video_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:"VideoModalController",scope:i,windowClass:"video_modal_window"})}var w={},k={},C=$(window).width(),S=$(window).height();return{saveDoc:d,getDoc:u,hasDoc:p,wrapForHistory:g,wrapVideoForFull:y,updateDocDownloaded:h,downloadDoc:f,openDoc:_,openVideo:b,saveDocFile:v}}]).service("AppStickersManager",["$q","$rootScope","$modal","_","FileManager","MtpApiManager","AppDocsManager","Storage","ApiUpdatesManager",function(e,t,n,a,i,o,s,r,l){function c(){b||(b=!0,setTimeout(d,1e3))}function d(e){return r.get("all_stickers").then(function(t){var n=Config.Schema.API.layer;return t.layer!=n&&(t=!1),t&&t.date>tsNow(!0)&&!e?u(t):o.invokeApi("messages.getAllStickers",{hash:t&&t.hash||""}).then(function(e){var a="messages.allStickersNotModified"==e._;return a&&(e=t),e.date=tsNow(!0)+3600,e.layer=n,delete e._,a?(r.set({all_stickers:e}),u(e)):p(e,t&&t.fullSets).then(function(){return r.set({all_stickers:e}),u(e)})})})}function u(e){if(w!==e.hash){w=e.hash;var t,n,i,o,r,l,c,d;for(k=[],i=e.sets.length,t=0;i>t;t++)if(l=e.sets[t],!l.pFlags.disabled){for(d=e.fullSets[l.id].documents,o=d.length,c=[],n=0;o>n;n++)r=d[n],s.saveDoc(r),c.push(r.id);l.docIDs=c,k.push(l)}}return m().then(function(e){var t=k;if(e.length){t=k.slice();var n,i,o=[];for(n=0,i=e.length;i>n;n++)o.push(e[n].id);t.unshift({id:0,title:a("im_stickers_tab_recent_raw"),short_name:"",docIDs:o})}return t})}function p(t,n){var a=[],i=n||t.fullSets||{};return t.fullSets={},angular.forEach(t.sets,function(e){var n=i[e.id];if(n&&n.set.hash==e.hash)t.fullSets[e.id]=n;else{var s=o.invokeApi("messages.getStickerSet",{stickerset:{_:"inputStickerSetID",id:e.id,access_hash:e.access_hash}}).then(function(n){t.fullSets[e.id]=n});a.push(s)}}),e.all(a)}function m(){return r.get("stickers_popular").then(function(e){var t,n,a,i=[];if(e&&e.length)for(t=0,n=e.length;n>t;t++)a=e[t][0],s.hasDoc(a)&&i.push({id:a,rate:e[t][1]});return i})}function g(e){m().then(function(t){for(var n=!1,a=t.length,i=[],o=0;a>o;o++)t[o].id==e&&(n=!0,t[o].rate++),i.push([t[o].id,t[o].rate]);n?i.sort(function(e,t){return t[1]-e[1]}):(i.length>15&&(i=i.slice(0,15)),i.push([e,1])),ConfigStorage.set({stickers_popular:i})})}function h(e){return o.invokeApi("messages.getStickerSet",{stickerset:e}).then(function(e){for(var t=0;t<e.documents.length;t++)s.saveDoc(e.documents[t]);return e})}function f(e,t){var n=t?"messages.uninstallStickerSet":"messages.installStickerSet",a={_:"inputStickerSetID",id:e.set.id,access_hash:e.set.access_hash};return o.invokeApi(n,{stickerset:a,disabled:!1}).then(function(){var n;n=t?{_:"updateDelStickerSet",id:e.set.id}:{_:"updateNewStickerSet",stickerset:e},l.processUpdateMessage({_:"updateShort",update:n})})}function _(e){return v({_:"inputStickerSetShortName",short_name:e})}function v(e){var a=t.$new(!0);a.inputStickerset=e;n.open({templateUrl:templateUrl("stickerset_modal"),controller:"StickersetModalController",scope:a,windowClass:"stickerset_modal_window mobile_modal"})}function y(e){for(var t,n=0,a=0;a<e.length;a++)t=e[a],!t.pFlags.disabled&&t.pFlags.installed&&(n=(20261*n+2147483648+t.hash)%2147483648);return n}var b=!1,w=!1,k=[];return t.$on("apiUpdate",function(e,n){return"updateStickerSets"!=n._&&"updateNewStickerSet"!=n._&&"updateDelStickerSet"!=n._&&"updateStickerSetsOrder"!=n._?!1:r.get("all_stickers").then(function(e){switch(e&&e.layer==Config.Schema.API.layer||t.$broadcast("stickers_changed"),n._){case"updateNewStickerSet":for(var a=n.stickerset,i=a.set,o=!1,s=0,l=e.sets.length;l>s;s++)if(e.sets[s].id==i.id){o=s;break}o!==!1&&e.sets.splice(o,1),i.pFlags.installed=!0,e.sets.unshift(i),e.fullSets[i.id]=a;break;case"updateDelStickerSet":for(var i,s=0,l=e.sets.length;l>s;s++)if(i=e.sets[s],i.id==n.id){i.pFlags.installed=!1,e.sets.splice(s,1);break}delete e.fullSets[n.id];break;case"updateStickerSetsOrder":var c=n.order;e.sets.sort(function(e,t){return c.indexOf(e.id)-c.indexOf(t.id)})}e.hash=y(e.sets),e.date=0,r.set({all_stickers:e}).then(function(){t.$broadcast("stickers_changed")})})}),{start:c,getStickers:d,openStickersetLink:_,openStickerset:v,installStickerset:f,pushPopularSticker:g,getStickerset:h}}]).service("AppInlineBotsManager",["qSync","$q","$rootScope","toaster","Storage","ErrorService","MtpApiManager","AppMessagesManager","AppDocsManager","AppPhotosManager","RichTextProcessor","AppUsersManager","AppPeersManager","PeersSelectService","GeoLocationManager",function(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g){function h(){return i.get("inline_bots_popular").then(function(e){var t,n,a,i=[];if(e&&e.length){var o=tsNow(!0);for(t=0,n=e.length;n>t;t++)o-e[t][3]>1209600||(a=e[t][0],u.hasUser(a)||u.saveApiUser(e[t][1]),i.push({id:a,rate:e[t][2],date:e[t][3]}))}return i})}function f(e){h().then(function(t){for(var a=!1,i=t.length,o=[],s=0;i>s;s++){t[s].id==e&&(a=!0,t[s].rate++,t[s].date=tsNow(!0));var r=u.getUser(t[s].id);o.push([t[s].id,r,t[s].rate,t[s].date])}a?o.sort(function(e,t){return t[2]-e[2]}):(o.length>15&&(o=o.slice(0,15)),o.push([e,u.getUser(e),1,tsNow(!0)])),ConfigStorage.set({inline_bots_popular:o}),n.$broadcast("inline_bots_popular")})}function _(n){return p.resolveUsername(n).then(function(a){if(a>0){var i=u.getUser(a);if(i.pFlags.bot&&void 0!==i.bot_inline_placeholder){var o={username:n,id:a,placeholder:i.bot_inline_placeholder};return i.pFlags.bot_inline_geo&&g.isAvailable()?M(a).then(function(){return g.getPosition().then(function(t){return o.geo=t,e.when(o)})})["catch"](function(){return e.when(o)}):e.when(o)}}return t.reject()},function(e){return e.handled=!0,t.reject(e)})}function v(e,t,n,a,i){return s.invokeApi("messages.getInlineBotResults",{flags:0|(a?1:0),bot:u.getUserInput(t),peer:p.getInputPeerByID(e),query:n,geo_point:a&&{_:"inputGeoPoint",lat:a.lat,"long":a["long"]},offset:i},{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=d.wrapRichText(e.switch_pm.text,{noLinebreaks:!0,noLinks:!0})),angular.forEach(e.results,function(e){var a=n+"_"+e.id;e.qID=a,e.botID=t,e.rTitle=d.wrapRichText(e.title,{noLinebreaks:!0,noLinks:!0}),e.rDescription=d.wrapRichText(e.description,{noLinebreaks:!0,noLinks:!0}),e.initials=(e.url||e.title||e.type||"").substr(0,1),e.document&&l.saveDoc(e.document),e.photo&&c.savePhoto(e.photo),x[a]=e}),e})}function y(e,t,n){if(e&&e[0]&&("photo"==e[0].type||"gif"==e[0].type||"sticker"==e[0].type)){var a=[];angular.forEach(e,function(e){var t,n,i,o;if("botInlineMediaResult"==e._){if(i=e.document)t=e.document.w,n=e.document.h;else if(o=e.photo){var s=(o.sizes||[])[0];t=s&&s.w,n=s&&s.h}}else t=e.w,n=e.h;t&&n||(t=n=1),a.push(t/n)});var i=[],o=0,s=0;angular.forEach(a,function(e){var a=e*n;s+=a,!o||4>o&&1.1*t>s?o++:(i.push(o),o=1,s=a)}),o&&i.push(o);var r=0,l=i.length-1;angular.forEach(i,function(i,o){var s=o==l,c=a.slice(r,r+i),d=0;angular.forEach(c,function(e){d+=e}),angular.forEach(c,function(a,i){var o=n,l=t*a/d,c=o*a;s&&l>c&&(l=c);var u=e[r+i];u.thumbW=Math.floor(l)-2,u.thumbH=Math.floor(o)-2}),r+=i})}}function b(e,t,a){var o=p.getPeerString(e),s={};s["inline_switch_pm"+t]={peer:o,time:tsNow()},i.set(s),n.$broadcast("history_focus",{peerString:p.getPeerString(t)}),r.startBot(t,0,a)}function w(t){var n=u.getUser(t);if(!n||!n.pFlags.bot||!n.bot_inline_placeholder)return e.when(!1);var a="inline_switch_pm"+t;return i.get(a).then(function(e){return e&&(i.remove(a),tsNow()-e.time<36e5)?e.peer:!1})}function k(e,t,a){n.$broadcast("history_focus",{peerString:t,attachment:{_:"inline_query",mention:"@"+u.getUser(e).username,query:a}})}function $(e,t){var n=r.getMessage(e),a=n.fromID;return w(a).then(function(e){return e?k(a,e,t.query):void m.selectPeer({canSend:!0}).then(function(e){return k(a,e,t.query)})})}function C(e,t){var n=r.getMessage(e),i=(n.fromID,r.getMessagePeer(n));return s.invokeApi("messages.getBotCallbackAnswer",{peer:p.getInputPeerByID(i),msg_id:r.getMessageLocalID(e),data:t.data}).then(function(e){if("string"==typeof e.message&&e.message.length)if(e.pFlags.alert)o.alert(e.message);else{var t=d.wrapRichText(e.message,{noLinks:!0,noLinebreaks:!0}).valueOf();a.pop({type:"info",body:t,bodyOutputType:"trustedHtml",showCloseButton:!1})}})}function S(e,t,n){var a=x[t];if(void 0===a)return!1;f(a.botID);var i=t.split("_"),o=i.shift(),s=i.join("_");if(n=n||{},n.viaBotID=a.botID,n.queryID=o,n.resultID=s,a.send_message.reply_markup&&(n.reply_markup=a.send_message.reply_markup),"botInlineMessageText"==a.send_message._)n.entities=a.send_message.entities,r.sendText(e,a.send_message.message,n);else{var l="",c=!1;switch(a.send_message._){case"botInlineMessageMediaAuto":if(l=a.send_message.caption,"botInlineMediaResult"==a._){var d=a.document,u=a.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:a.send_message.geo.lat,"long":a.send_message.geo["long"]}};break;case"botInlineMessageMediaVenue":c={_:"inputMediaVenue",geo_point:{_:"inputGeoPoint",lat:a.send_message.geo.lat,"long":a.send_message.geo["long"]},title:a.send_message.title,address:a.send_message.address,provider:a.send_message.provider,venue_id:a.send_message.venue_id};break;case"botInlineMessageMediaContact":c={_:"inputMediaContact",phone_number:a.send_message.phone_number,first_name:a.send_message.first_name,last_name:a.send_message.last_name}}c||(c={_:"messageMediaPending",type:a.type,file_name:a.title||a.content_url||a.url,size:0,progress:{percent:30,total:0}}),r.sendOther(e,c,n)}}function M(e){var n="bot_access_geo"+e;return i.get(n).then(function(e){return e&&e.granted?!0:o.confirm({type:"BOT_ACCESS_GEO_INLINE"}).then(function(){var e={};return e[n]={granted:!0,time:tsNow()},i.set(e),!0},function(){var e={};return e[n]={denied:!0,time:tsNow()},i.set(e),t.reject()})})}var x={};return{resolveInlineMention:_,getPopularBots:h,sendInlineResult:S,getInlineResults:v,regroupWrappedResults:y,switchToPM:b,checkSwitchReturn:w,switchInlineButtonClick:$,callbackButtonClick:C}}]).service("ApiUpdatesManager",["$rootScope","MtpNetworkerFactory","AppUsersManager","AppChatsManager","AppPeersManager","MtpApiManager",function(e,t,n,a,i,o){function s(){var e=_.seq+1,t=_.pendingSeqUpdates[e];if(!t)return!1;for(var n,a,i=t.updates,n=0,a=i.length;a>n;n++)h(i[n]);return _.seq=t.seq,t.date&&_.date<t.date&&(_.date=t.date),delete _.pendingSeqUpdates[e],!s()&&_.syncPending&&_.syncPending.seqAwaiting&&_.seq>=_.syncPending.seqAwaiting&&(_.syncPending.ptsAwaiting?delete _.syncPending.seqAwaiting:(clearTimeout(_.syncPending.timeout),_.syncPending=!1)),!0}function r(e){var t=e?m(e):_;if(!t.pendingPtsUpdates.length)return!1;t.pendingPtsUpdates.sort(function(e,t){return e.pts-t.pts});for(var n,a=t.pts,i=!1,o=!1,s=0,r=t.pendingPtsUpdates.length;r>s;s++)n=t.pendingPtsUpdates[s],a+=n.pts_count,a>=n.pts&&(i=n.pts,o=s);if(!i)return!1;for(console.log(dT(),"pop pending pts updates",i,t.pendingPtsUpdates.slice(0,o+1)),t.pts=i,s=0;o>=s;s++)n=t.pendingPtsUpdates[s],h(n);return t.pendingPtsUpdates.splice(0,o+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){var t={date:e.date,seq:e.seq,seqStart:e.seq_start};switch(e._){case"updatesTooLong":case"new_session_created":l();break;case"updateShort":g(e.update,t);break;case"updateShortMessage":case"updateShortChatMessage":var o=2&e.flags,s=e.from_id||(o?y:e.user_id),r=e.chat_id?-e.chat_id:o?e.user_id:y;g({_:"updateNewMessage",message:{_:"message",flags:e.flags,pFlags:e.pFlags,id:e.id,from_id:s,to_id:i.getOutputPeer(r),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},t);break;case"updatesCombined":case"updates":n.saveApiUsers(e.users),a.saveApiChats(e.chats),angular.forEach(e.updates,function(e){g(e,t)});break;default:console.warn(dT(),"Unknown update message",e)}}function d(){_.syncLoading||(_.syncLoading=!0,_.pendingSeqUpdates={},_.pendingPtsUpdates=[]),_.syncPending&&(clearTimeout(_.syncPending.timeout),_.syncPending=!1),o.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),a.saveApiChats(t.chats);angular.forEach(t.other_updates,function(e){switch(e._){case"updateChannelTooLong":case"updateNewChannelMessage":case"updateEditChannelMessage":return void g(e)
}h(e)}),angular.forEach(t.new_messages,function(e){h({_:"updateNewMessage",message:e,pts:_.pts,pts_count:0})});var i=t.intermediate_state||t.state;_.seq=i.seq,_.pts=i.pts,_.date=i.date,"updates.differenceSlice"==t._?d():(e.$broadcast("stateSynchronized"),_.syncLoading=!1)})}function u(t){var i=m(t);i.syncLoading||(i.syncLoading=!0,i.pendingPtsUpdates=[]),i.syncPending&&(clearTimeout(i.syncPending.timeout),i.syncPending=!1),o.invokeApi("updates.getChannelDifference",{channel:a.getChannelInput(t),filter:{_:"channelMessagesFilterEmpty"},pts:i.pts,limit:30}).then(function(o){return i.pts=o.pts,"updates.channelDifferenceEmpty"==o._?(console.log(dT(),"apply channel empty diff",o),i.syncLoading=!1,e.$broadcast("stateSynchronized"),!1):"updates.channelDifferenceTooLong"==o._?(console.log(dT(),"channel diff too long",o),i.syncLoading=!1,delete v[t],h({_:"updateChannelReload",channel_id:t}),!1):(n.saveApiUsers(o.users),a.saveApiChats(o.chats),console.log(dT(),"applying",o.other_updates.length,"channel other updates"),angular.forEach(o.other_updates,function(e){h(e)}),console.log(dT(),"applying",o.new_messages.length,"channel new messages"),angular.forEach(o.new_messages,function(e){h({_:"updateNewChannelMessage",message:e,pts:i.pts,pts_count:0})}),console.log(dT(),"apply channel diff",i.pts),void("updates.channelDifference"!=o._||o.pFlags["final"]?(console.log(dT(),"finished channel get diff"),e.$broadcast("stateSynchronized"),i.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):!1}function m(e,t){return void 0===v[e]&&p(e,t),v[e]}function g(e,t){t=t||{};var o=!1;switch(e._){case"updateNewChannelMessage":case"updateEditChannelMessage":o=-i.getPeerID(e.message.to_id);break;case"updateDeleteChannelMessages":o=e.channel_id;break;case"updateChannelTooLong":if(o=e.channel_id,void 0===v[o])return!1}var c=o?m(o,e.pts):_;if(c.syncLoading)return!1;if("updateChannelTooLong"==e._)return u(o),!1;if("updateNewMessage"==e._||"updateEditMessage"==e._||"updateNewChannelMessage"==e._||"updateEditChannelMessage"==e._){var p=e.message,g=i.getPeerID(p.to_id),f=p.fwdHeader||{};if(p.from_id&&!n.hasUser(p.from_id,p.pFlags.post)||f.from_id&&!n.hasUser(f.from_id,!!f.channel_id)||f.channel_id&&!a.hasChat(f.channel_id)||g>0&&!n.hasUser(g)||0>g&&!a.hasChat(-g))return console.warn(dT(),"Not enough data for message update",p),o&&a.hasChat(o)?u(o):l(),!1}else if(o&&!a.hasChat(o))return!1;var y,b;if(e.pts){var w=c.pts+(e.pts_count||0);if(w<e.pts)return console.warn(dT(),"Pts hole",c,e,o&&a.getChat(o)),c.pendingPtsUpdates.push(e),c.syncPending||(c.syncPending={timeout:setTimeout(function(){o?u(o):d()},5e3)}),c.syncPending.ptsAwaiting=!0,!1;if(e.pts>c.pts)c.pts=e.pts,y=!0;else if(e.pts_count)return!1;o&&t.date&&_.date<t.date&&(_.date=t.date)}else if(!o&&t.seq>0){var k=t.seq,$=t.seqStart||k;if($!=c.seq+1&&$>c.seq)return console.warn(dT(),"Seq hole",c,c.syncPending&&c.syncPending.seqAwaiting),void 0===c.pendingSeqUpdates[$]&&(c.pendingSeqUpdates[$]={seq:k,date:t.date,updates:[]}),c.pendingSeqUpdates[$].updates.push(e),c.syncPending||(c.syncPending={timeout:setTimeout(function(){d()},5e3)}),(!c.syncPending.seqAwaiting||c.syncPending.seqAwaiting<$)&&(c.syncPending.seqAwaiting=$),!1;c.seq!=k&&(c.seq=k,t.date&&c.date<t.date&&(c.date=t.date),b=!0)}h(e),y?r(o):b&&s()}function h(t){e.$broadcast("apiUpdate",t)}function f(){t.setUpdatesProcessor(c),o.invokeApi("updates.getState",{},{noErrorBox:!0}).then(function(e){_.seq=e.seq,_.pts=e.pts,_.date=e.date,setTimeout(function(){_.syncLoading=!1},1e3)})}var _={pendingPtsUpdates:[],pendingSeqUpdates:{},syncPending:!1,syncLoading:!0},v={},y=0;return o.getUserID().then(function(e){y=e}),{processUpdateMessage:c,addChannelState:p,attach:f}}]).service("StatusManager",["$timeout","$rootScope","MtpApiManager","AppUsersManager","IdleManager",function(e,t,n,a){function i(){d||(d=!0,t.$watch("idle.isIDLE",s),t.$watch("offline",s))}function o(e){var i=tsNow();if(!(e&&!c||!e&&5e4>i-c||t.offline))return c=e?0:i,a.setUserStatus(u,e),n.invokeApi("account.updateStatus",{offline:e},{noErrorBox:!0})}function s(){l&&e.cancel(l),t.idle.isIDLE?l=e(function(){o(!0)},5e3):(o(!1),l=e(s,6e4))}function r(){return p?tsNow()>p?(p=!1,!1):!0:!1}var l,c=0,d=!1,u=0,p=!1;return n.getUserID().then(function(e){u=e}),t.$on("apiUpdate",function(e,t){"updateUserStatus"==t._&&t.user_id==u&&(p=tsNow()+("userStatusOnline"==t.status._?3e5:0))}),{start:i,isOtherDeviceActive:r}}]).service("NotificationsManager",["$rootScope","$window","$interval","$q","_","MtpApiManager","AppPeersManager","IdleManager","Storage","AppRuntimeManager","FileManager",function(e,t,n,a,i,o,s,r,l,c,d){function u(){l.get("notify_nodesktop","notify_volume","notify_novibrate","notify_nopreview").then(function(e){K.nodesktop=e[0],K.volume=e[1]===!1?.5:e[1],K.novibrate=e[2],K.nopreview=e[3]})}function p(){return K}function m(e){return void 0!==q[e]?q[e]:q[e]=o.invokeApi("account.getNotifySettings",{peer:{_:"inputNotifyPeer",peer:s.getInputPeerByID(e)}})}function g(e){if(e=e||"favicon.ico",P!==e){var t=document.createElement("link");t.rel="shortcut icon",t.type="image/x-icon",t.href=e,H.parentNode.replaceChild(t,H),H=t,P=e}}function h(t,n){q[t]=a.when(n),e.$broadcast("notify_settings",{peerID:t})}function f(e,t){h(e,t);var n=angular.copy(t);return n._="inputPeerNotifySettings",o.invokeApi("account.updateNotifySettings",{peer:{_:"inputNotifyPeer",peer:s.getInputPeerByID(e)},settings:n})}function _(e){return m(e).then(function(e){return"peerNotifySettings"==e._&&1e3*e.mute_until>tsNow()})}function v(){if(u(),e.$on("settings_changed",u),I(),!F)return!1;"Notification"in window&&"granted"!==Notification.permission&&"denied"!==Notification.permission&&$(t).on("click",b);try{"onbeforeunload"in window&&$(t).on("beforeunload",x)}catch(n){}}function y(){x(),n.cancel(D),g(),G=!0}function b(){Notification.requestPermission(),$(t).off("click",b)}function w(e){if(!G){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 d.getDataUrl(e.image,"image/jpeg").then(function(t){e.image=t,w(e)}),!1;e.image=d.getUrl(e.image,"image/jpeg")}else e.image||(e.image="img/icons/icon60.png");U++;var t=tsNow();if(K.volume>0&&(!e.tag||!O[e.tag]||t>O[e.tag]+6e4)&&(k(K.volume),O[e.tag]=t),!F||"Notification"in window&&"granted"!==Notification.permission)return!1;if(K.nodesktop){if(B&&!K.novibrate)return void navigator.vibrate([200,100,200])}else{var n,a=++N,i=e.key||"k"+a;if("Notification"in window)n=new Notification(e.title,{icon:e.image||"",body:e.message||"",tag:e.tag||""});else if("mozNotification"in navigator)n=navigator.mozNotification.createNotification(e.title,e.message||"",e.image||"");else{if(!E)return;window.external.msSiteModeClearIconOverlay(),window.external.msSiteModeSetIconOverlay("img/icons/icon16.png",e.title),window.external.msSiteModeActivate(),n={index:a}}n.onclick=function(){n.close(),c.focus(),x(),e.onclick&&e.onclick()},n.onclose=function(){n.hidden||(delete R[i],x())},n.show&&n.show(),R[i]=n,Config.Navigator.mobile||setTimeout(function(){S(i)},8e3)}}}function k(e){var t=tsNow();if(!(L&&L>t&&j==e)){L=t+1e3,j=e;var n="img/sound_a.mp3",a=$("#notify_sound").html('<audio autoplay="autoplay" mozaudiochannel="notification"><source src="'+n+'" type="audio/mpeg" /><embed hidden="true" autostart="true" loop="false" volume="'+100*e+'" src="'+n+'" /></audio>');a.find("audio")[0].volume=e}}function C(e){var t=R[e];if(t){U>0&&U--;try{t.close?t.close():E&&t.index==N&&window.external.msSiteModeClearIconOverlay()}catch(n){}delete U[e]}}function S(e){var t=R[e];if(t){try{t.close&&(t.hidden=!0,t.close())}catch(n){}delete U[e]}}function M(e){delete O[e]}function x(){E?window.external.msSiteModeClearIconOverlay():angular.forEach(R,function(e){try{e.close&&e.close()}catch(t){}}),R={},U=0}function I(){if(Y)return!1;if(navigator.push&&Config.Navigator.ffos&&Config.Modes.packed){var e=navigator.push.register();e.onsuccess=function(){clearTimeout(X),console.log(dT(),"Push registered",e.result),Y=e.result,o.invokeApi("account.registerDevice",{token_type:4,token:Y,device_model:navigator.userAgent||"Unknown UserAgent",system_version:navigator.platform||"Unknown Platform",app_version:Config.App.version,app_sandbox:!1,lang_code:navigator.language||"en"})},e.onerror=function(e){console.error("Push register error",e,e.toString()),X=setTimeout(I,Z),Z=Math.min(3e4,1.5*Z)}}}function A(){return B}navigator.vibrate=navigator.vibrate||navigator.mozVibrate||navigator.webkitVibrate;var E=!1;try{window.external&&window.external.msIsSiteMode()&&(E=!0)}catch(T){}var D,P,F=E||"Notification"in window||"mozNotification"in navigator,R={},N=0,U=0,O={},B=!!navigator.vibrate,L=!1,j=!1,q={},H=$('link[rel="icon"]:first')[0],V=i.pluralize("page_title_pluralize_notifications"),z=document.title,W=!1,G=!1,K={};e.$watch("idle.deactivated",function(e){e&&y()}),e.$watch("idle.isIDLE",function(e){G||(e||x(),Config.Navigator.mobile||(n.cancel(D),e?(z=document.title,D=n(function(){W||!U?(W=!1,document.title=z,g()):(W=!0,document.title=V(U),g("favicon_unread.ico"))},1e3)):(W=!1,document.title=z,g())))}),e.$on("apiUpdate",function(e,t){switch(t._){case"updateNotifySettings":if("notifyPeer"==t.peer._){var n=s.getPeerID(t.peer.peer);h(n,t.notify_settings)}}});var Y=!1;return window.navigator.mozSetMessageHandler&&(window.navigator.mozSetMessageHandler("push",function(t){console.log(dT(),"received push",t),e.$broadcast("push_received")}),window.navigator.mozSetMessageHandler("push-register",function(e){console.log(dT(),"received push",e),Y=!1,I()})),{start:v,notify:w,cancel:C,clear:x,soundReset:M,getPeerSettings:m,getPeerMuted:_,savePeerSettings:h,updatePeerSettings:f,updateNotifySettings:u,getNotifySettings:p,getVibrateSupport:A,testSound:k};var Z,X}]).service("PasswordManager",["$timeout","$q","$rootScope","MtpApiManager","CryptoWorker","MtpSecureRandom",function(e,t,n,a,i,o){function s(e){return a.invokeApi("account.getPassword",{},e).then(function(e){return e})}function r(e,n){var i,s,r={new_settings:{_:"account.passwordInputSettings",flags:0,hint:n.hint||""}};if(i="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);o.nextBytes(l),s=u(c,n.new_password),r.new_settings.new_salt=c,r.new_settings.flags|=1}else"string"==typeof n.new_password&&(r.new_settings.flags|=1,r.new_settings.new_salt=[]),s=t.when([]);return"string"==typeof n.email&&(r.new_settings.flags|=2,r.new_settings.email=n.email||""),t.all([i,s]).then(function(e){return r.current_password_hash=e[0],r.new_settings.new_password_hash=e[1],a.invokeApi("account.updatePasswordSettings",r)})}function l(e,t,n){return u(e.current_salt,t).then(function(e){return a.invokeApi("auth.checkPassword",{password_hash:e},n)})}function c(e,t){return a.invokeApi("auth.requestPasswordRecovery",{},t)}function d(e,t){return a.invokeApi("auth.recoverPassword",{code:e},t)}function u(e,t){for(var n=unescape(encodeURIComponent(t)),a=new ArrayBuffer(n.length),o=new Uint8Array(a),s=0,r=n.length;r>s;s++)o[s]=n.charCodeAt(s);return a=bufferConcat(bufferConcat(e,o),e),i.sha256Hash(a)}return{check:l,getState:s,requestRecovery:c,recover:d,updateSettings:r}}]).service("ErrorService",["$rootScope","$modal","$window",function(e,t,n){function a(n,a){if(s>=1)return console.log("Skip error box, too many open",s,n,a),!1;a=a||{};var i=e.$new();angular.extend(i,n),s++;var o=t.open({templateUrl:templateUrl("error_modal"),scope:i,windowClass:a.windowClass||"error_modal_window"});return o.result["finally"](function(){s--}),o}function i(e,t){return a({title:e,description:t})}function o(n,a){a=a||{};var i=e.$new();angular.extend(i,n);var o=t.open({templateUrl:templateUrl("confirm_modal"),scope:i,windowClass:a.windowClass||"confirm_modal_window"});return o.result}var s=0;return n.safeConfirm=function(e,t){"string"==typeof e&&(e={message:e}),o(e).then(function(e){t(e||!0)},function(){t(!1)})},{show:a,alert:i,confirm:o}}]).service("PeersSelectService",["$rootScope","$modal",function(e,t){function n(n){var a=e.$new();return a.multiSelect=!1,a.noMessages=!0,n&&angular.extend(a,n),t.open({templateUrl:templateUrl("peer_select"),controller:"PeerSelectController",scope:a,windowClass:"peer_select_window mobile_modal",backdrop:"single"}).result}function a(a){if(Config.Mobile)return n(a).then(function(e){return[e]});var i=e.$new();return i.multiSelect=!0,i.noMessages=!0,a&&angular.extend(i,a),t.open({templateUrl:templateUrl("peer_select"),controller:"PeerSelectController",scope:i,windowClass:"peer_select_window mobile_modal",backdrop:"single"}).result}return{selectPeer:n,selectPeers:a}}]).service("ContactsSelectService",["$rootScope","$modal",function(e,t){function n(n,a){a=a||{};var i=e.$new();return i.multiSelect=n,angular.extend(i,a),!i.action&&n&&(i.action="select"),t.open({templateUrl:templateUrl("contacts_modal"),controller:"ContactsModalController",scope:i,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",function(e,t,n){function a(){e.get("last_version").then(function(t){t!=Config.App.version&&(t&&i(t),e.set({last_version:Config.App.version}))})}function i(e){var a=t.$new();a.lastVersion=e,n.open({controller:"ChangelogModalController",templateUrl:templateUrl("changelog_modal"),scope:a,windowClass:"changelog_modal_window mobile_modal"})}return{checkUpdate:a,showChangelog:i}}]).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 a(){i||"http:"!=location.protocol||Config.Modes.http||-1==Config.App.domains.indexOf(location.hostname)||(i=!0,setTimeout(n,12e4))}var i=!1;return{start:a,check:n}}]).service("LayoutSwitchService",["ErrorService","Storage","AppRuntimeManager","$window",function(e,t,n,a){function i(e){ConfigStorage.noPrefix(),t.set({layout_selected:e?"mobile":"desktop",layout_width:$(window).width()}).then(function(){n.reload()})}function o(n){if(!l){var a=$(window).width(),o=600>a;!a||!n&&(Config.Navigator.mobile?800>=a:o)||o!=Config.Mobile&&(ConfigStorage.noPrefix(),t.get("layout_width").then(function(n){return a==n?!1:(l=!0,void e.confirm({type:o?"SWITCH_MOBILE_VERSION":"SWITCH_DESKTOP_VERSION"}).then(function(){i(o)},function(){ConfigStorage.noPrefix(),t.set({layout_width:a}),l=!1}))}))}}function s(){r||Config.Navigator.mobile||(r=!0,o(),$(a).on("resize",o))}var r=!1,l=!1;return{start:s,switchLayout:i}}]).service("TelegramMeWebService",["Storage",function(e){function t(t){return n?!1:void e.get("tgme_sync").then(function(n){var a=tsNow(!0);if(t&&n&&n.canRedirect==t&&n.ts+86400>a)return!1;e.set({tgme_sync:{canRedirect:t,ts:a}});var i=$("<script>").appendTo("body").on("load error",function(){i.remove()}).attr("src","//telegram.me/_websync_?authed="+(t?"1":"0"))})}var n=Config.Modes.test||-1==Config.App.domains.indexOf(location.hostname)||"http:"!=location.protocol&&"https:"!=location.protocol||"https:"==location.protocol&&"web.telegram.org"!=location.hostname;return{setAuthorized:t}}]).service("LocationParamsService",["$rootScope","$routeParams","AppPeersManager","AppUsersManager","AppMessagesManager","PeersSelectService","AppStickersManager","ErrorService",function(e,t,n,a,i,o,s,r){function l(){var e=t.tgaddr;if(e){try{e=decodeURIComponent(e)}catch(n){}var a=e.match(m);a&&c(a[3])}}function c(t,l){var c;if(c=t.match(/^resolve\?domain=(.+?)(?:&(start|startgroup|post)=(.+))?$/))return n.resolveUsername(c[1]).then(function(t){if(t>0&&a.isBot(t)&&"startgroup"==c[2])return o.selectPeer({confirm_type:"INVITE_TO_GROUP",noUsers:!0}).then(function(a){var o=n.getPeerID(a),s=0>o?-o:0;i.startBot(t,s,c[3]).then(function(){e.$broadcast("history_focus",{peerString:a})})}),!0;var s={peerString:n.getPeerString(t)};"start"==c[2]?s.startParam=c[3]:s.messageID=i.getFullMessageID(parseInt(c[3]),-t),e.$broadcast("history_focus",s)}),!0;if(c=t.match(/^join\?invite=(.+)$/))return i.openChatInviteLink(c[1]),!0;if(c=t.match(/^addstickers\?set=(.+)$/))return s.openStickersetLink(c[1]),!0;if(c=t.match(/^msg_url\?url=([^&]+)(?:&text=(.*))?$/)){var t=decodeURIComponent(c[1]),d=c[2]?decodeURIComponent(c[2]):"";return p(t,d),!0}if(l&&(c=t.match(/^unsafe_url\?url=([^&]+)/))){var t=decodeURIComponent(c[1]);return r.confirm({type:"JUMP_EXT_URL",url:t}).then(function(){var e="_blank";0===t.search("https://telegram.me/")&&(e="_self"),window.open(t,e)}),!0}if(c=t.match(/^search_hashtag\?hashtag=(.+?)$/))return e.$broadcast("dialogs_search",{query:"#"+decodeURIComponent(c[1])}),Config.Mobile&&e.$broadcast("history_focus",{peerString:""}),!0;if(l&&(c=t.match(/^bot_command\?command=(.+?)(?:&bot=(.+))?$/))){var u=e.selectedPeerID,d="/"+c[1];return 0>u&&c[2]&&(d+="@"+c[2]),i.sendText(u,d),e.$broadcast("history_focus",{peerString:n.getPeerString(u)}),!0}return!1}function d(t,s){if(console.log(dT(),"Received activity",t,s),"share"==t&&s.url)p(s.url,"");else if("view"==t&&s.url){var l=s.url.match(m);l&&c(l[3])}else if("webrtc-call"==t&&s.contact){var d=s.contact,u=[];if(void 0!=d.tel)for(var g=0;g<d.tel.length;g++)u.push(d.tel[g].value);var h=(d.givenName||[]).join(" "),f=(d.familyName||[]).join(" ");u.length&&a.importContact(u[0],h,f).then(function(t){if(t){var a=n.getPeerString(t);e.$broadcast("history_focus",{peerString:a})}else r.show({error:{code:404,type:"USER_NOT_USING_TELEGRAM"}})})}else"share"===t&&s.blobs&&s.blobs.length>0&&o.selectPeers({confirm_type:"EXT_SHARE_PEER",canSend:!0}).then(function(t){angular.forEach(t,function(e){var t=n.getPeerID(e);angular.forEach(s.blobs,function(e){i.sendFile(t,e,{isMedia:!0})})}),1==t.length&&e.$broadcast("history_focus",{peerString:t[0]})})}function u(){if(!g){if(g=!0,"registerProtocolHandler"in navigator){try{navigator.registerProtocolHandler("tg","#im?tgaddr=%s","Telegram Web")}catch(t){}try{navigator.registerProtocolHandler("web+tg","#im?tgaddr=%s","Telegram Web")}catch(t){}}window.navigator.mozSetMessageHandler&&(console.log(dT(),"Set activity message handler"),window.navigator.mozSetMessageHandler("activity",function(e){d(e.source.name,e.source.data)})),$(document).on("click",function(e){var t=e.target;if(t&&"A"==t.tagName&&!t.onclick&&!t.onmousedown){var n=$(t).attr("href")||t.href||"",a=n.match(m);if(a&&c(a[3],!0))return cancelEvent(e)}}),e.$on("$routeUpdate",l),l()}}function p(t,n){o.selectPeer().then(function(a){e.$broadcast("history_focus",{peerString:a,attachment:{_:"share_url",url:t,text:n}})})}var m=/^(web\+)?tg:(\/\/)?(.+)/,g=!1;return{start:u,shareUrl:p}}]),angular.module("myApp.controllers",["myApp.i18n"]).controller("AppWelcomeController",["$scope","$location","MtpApiManager","ErrorService","ChangelogNotifyService","LayoutSwitchService",function(e,t,n,a,i,o){n.getUserID().then(function(e){return e?void t.url("/im"):"http:"!=location.protocol||Config.Modes.http||-1==Config.App.domains.indexOf(location.hostname)?void t.url("/login"):void(location.href=location.href.replace(/^http:/,"https:"))}),i.checkUpdate(),o.start()}]).controller("AppLoginController",["$scope","$rootScope","$location","$timeout","$modal","$modalStack","MtpApiManager","ErrorService","NotificationsManager","PasswordManager","ChangelogNotifyService","IdleManager","LayoutSwitchService","TelegramMeWebService","_",function(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g){function h(){var t=(navigator.language||"").toLowerCase(),n=Config.LangCountries[t],a=!Config.Navigator.mobile;if(f(-1==["en","en-us","en-uk"].indexOf(t)?void 0!==n?n:t.indexOf("-")>0?t.split("-")[1].toUpperCase():"US":"US"),a){var i=e.credentials.phone_country;s.invokeApi("help.getNearestDc",{},{dcID:2,createNetworker:!0}).then(function(t){i==e.credentials.phone_country&&f(t.country),t.nearest_dc!=t.this_dc&&s.getNetworker(t.nearest_dc,{createNetworker:!0})})}}function f(e){if(e){var t,n;for(t=0;t<Config.CountryCodes.length;t++)if(n=Config.CountryCodes[t],n[0]==e)return _({name:g(n[1]+"_raw"),code:n[2]})}return _({name:g("country_select_modal_country_us_raw"),code:"+1"})}function _(t){C=t,e.credentials.phone_country!=t.code?e.credentials.phone_country=t.code:v(),e.$broadcast("country_selected"),e.$broadcast("value_updated")}function v(){var t,n,a,i=((e.credentials.phone_country||"")+(e.credentials.phone_number||"")).replace(/\D+/g,""),o=0,s=!1;if(i.length)if(C&&!i.indexOf(C.code.replace(/\D+/g,"")))s=C.name;else for(t=0;t<Config.CountryCodes.length;t++)for(n=2;n<Config.CountryCodes[t].length;n++)a=Config.CountryCodes[t][n].replace(/\D+/g,""),a.length>o&&!i.indexOf(a)&&(o=a.length,s=g(Config.CountryCodes[t][1]+"_raw"));e.credentials.phone_full=i,e.credentials.phone_country_name=s||g("login_controller_unknown_country_raw")}function y(e){s.setUserAuth($.dcID,{id:e.user.id}),a.cancel(S),n.url("/im")}function b(t){e.credentials.type=t.type,e.nextPending.type=t.next_type||!1,e.nextPending.remaining=t.timeout||!1,w(),onContentLoaded(function(){e.$broadcast("ui_height")})}function w(){a.cancel(S),e.nextPending.type&&e.nextPending.remaining!==!1&&(--e.nextPending.remaining?S=a(w,1e3):(e.nextPending.success=!1,e.sendNext()))}function k(){return c.getState($).then(function(t){return e.password=t})}o.dismissAll(),u.start(),s.getUserID().then(function(e){return e?void n.url("/im"):"http:"!=location.protocol||Config.Modes.http||-1==Config.App.domains.indexOf(location.hostname)?void m.setAuthorized(!1):void(location.href=location.href.replace(/^http:/,"https:"))});var $={dcID:2,createNetworker:!0},C=!1;e.credentials={phone_country:"",phone_country_name:"",phone_number:"",phone_full:""},e.progress={},e.nextPending={},e.about={},e.chooseCountry=function(){var e=i.open({templateUrl:templateUrl("country_select_modal"),controller:"CountrySelectModalController",windowClass:"countries_modal_window mobile_modal",backdrop:"single"});e.result.then(_)},e.$watch("credentials.phone_country",v),e.$watch("credentials.phone_number",v),h();var S;e.sendCode=function(){a.cancel(S),r.confirm({type:"LOGIN_PHONE_CORRECT",country_code:e.credentials.phone_country,phone_number:e.credentials.phone_number}).then(function(){e.progress.enabled=!0,onContentLoaded(function(){e.$broadcast("ui_height")});var n=tsNow();s.invokeApi("auth.sendCode",{flags:0,phone_number:e.credentials.phone_full,api_id:Config.App.id,api_hash:Config.App.hash,lang_code:navigator.language||"en"},$).then(function(t){e.progress.enabled=!1,e.error={},e.about={},e.credentials.phone_code_hash=t.phone_code_hash,b(t)},function(t){switch(e.progress.enabled=!1,console.log("sendCode error",t),t.type){case"PHONE_NUMBER_INVALID":e.error={field:"phone"},t.handled=!0}})["finally"](function(){(t.idle.isIDLE||tsNow()-n>6e4)&&l.notify({title:"Telegram",message:"Your authorization key was successfully generated! Open the app to log in.",tag:"auth_key"})})})},e.sendNext=function(){!e.nextPending.type||e.nextPending.remaining>0||s.invokeApi("auth.resendCode",{phone_number:e.credentials.phone_full,phone_code_hash:e.credentials.phone_code_hash},$).then(b)},e.editPhone=function(){a.cancel(S),e.credentials.phone_full&&e.credentials.phone_code_hash&&s.invokeApi("auth.cancelCode",{phone_number:e.credentials.phone_full,phone_code_hash:e.credentials.phone_code_hash},$),delete e.credentials.phone_code_hash,delete e.credentials.phone_unoccupied,delete e.credentials.phone_code_valid,delete e.nextPending.remaining,delete e.nextPending.success},e.$watch("credentials.phone_code",function(t){t&&t.match(/^\d+$/)&&e.credentials.type&&e.credentials.type.length&&t.length==e.credentials.type.length&&e.logIn()}),e.logIn=function(t){var n="auth.signIn",a={phone_number:e.credentials.phone_full,phone_code_hash:e.credentials.phone_code_hash,phone_code:e.credentials.phone_code};t&&(n="auth.signUp",angular.extend(a,{first_name:e.credentials.first_name||"",last_name:e.credentials.last_name||""})),e.progress.enabled=!0,s.invokeApi(n,a,$).then(y,function(t){if(e.progress.enabled=!1,400==t.code&&"PHONE_NUMBER_UNOCCUPIED"==t.type)return t.handled=!0,e.credentials.phone_code_valid=!0,e.credentials.phone_unoccupied=!0,void(e.about={});if(400==t.code&&"PHONE_NUMBER_OCCUPIED"==t.type)return t.handled=!0,e.logIn(!1);if(401==t.code&&"SESSION_PASSWORD_NEEDED"==t.type)return e.progress.enabled=!0,k().then(function(){e.progress.enabled=!1,e.credentials.phone_code_valid=!0,e.credentials.password_needed=!0,e.about={}}),void(t.handled=!0);switch(t.type){case"FIRSTNAME_INVALID":e.error={field:"first_name"},t.handled=!0;break;case"LASTNAME_INVALID":e.error={field:"last_name"},t.handled=!0;break;case"PHONE_CODE_INVALID":e.error={field:"phone_code"},delete e.credentials.phone_code_valid,t.handled=!0;break;case"PHONE_CODE_EXPIRED":e.editPhone(),t.handled=!0}})},e.checkPassword=function(){return c.check(e.password,e.credentials.password,$).then(y,function(t){switch(t.type){case"PASSWORD_HASH_INVALID":e.error={field:"password"},t.handled=!0}})},e.forgotPassword=function(n){return c.requestRecovery(e.password,$).then(function(n){var a=t.$new();a.recovery=n,a.options=$;var o=i.open({scope:a,templateUrl:templateUrl("password_recovery_modal"),controller:"PasswordRecoveryModalController",windowClass:"md_simple_modal_window mobile_modal"});o.result.then(function(t){t&&t.user?y(t):e.canReset=!0})},function(t){switch(t.type){case"PASSWORD_EMPTY":e.logIn(),t.handled=!0;break;case"PASSWORD_RECOVERY_NA":a(function(){e.canReset=!0},1e3),t.handled=!0}}),cancelEvent(n)},e.resetAccount=function(){r.confirm({type:"RESET_ACCOUNT"}).then(function(){e.progress.enabled=!0,s.invokeApi("account.deleteAccount",{reason:"Forgot password"},$).then(function(){delete e.progress.enabled,delete e.credentials.password_needed,e.credentials.phone_unoccupied=!0},function(){delete e.progress.enabled})})},d.checkUpdate(),p.start()}]).controller("AppIMController",["$q","qSync","$scope","$location","$routeParams","$modal","$rootScope","$modalStack","MtpApiManager","AppUsersManager","AppChatsManager","AppMessagesManager","AppPeersManager","ContactsSelectService","ChangelogNotifyService","ErrorService","AppRuntimeManager","HttpsMigrateService","LayoutSwitchService","LocationParamsService","AppStickersManager",function(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g,h,f,_,v,y,b){function w(){var e=k||{};k=!1,e.messageID=parseInt(e.messageID)||!1,e.startParam=e.startParam;var a;i.p&&"@"==i.p.charAt(0)?(void 0===n.curDialog&&(n.curDialog={peer:"",peerID:0}),a=p.resolveUsername(i.p.substr(1)).then(function(e){return t.when(p.getPeerString(e))})):a=t.when(i.p),a.then(function(t){n.curDialog=angular.extend({peer:t,peerID:p.getPeerID(t||"")},e),$&&(n.$broadcast("peer_draft_attachment",$),$=!1)})}n.$on("$routeUpdate",w);var k=!1,$=!1;n.$on("history_focus",function(e,t){if(r.dismissAll(),t.peerString!=n.curDialog.peer||t.messageID!=n.curDialog.messageID||t.startParam){var o=p.getPeerID(t.peerString),s=p.getPeer(o).username,l=s?"@"+s:t.peerString;k=t.messageID||t.startParam?{messageID:t.messageID,startParam:t.startParam}:!1,t.attachment&&($=t.attachment),i.p!=l?a.url("/im?p="+l):w()}else n.$broadcast(t.messageID?"ui_history_change_scroll":"ui_history_focus")}),n.$on("esc_no_more",function(){s.$apply(function(){a.url("/im")})}),n.isLoggedIn=!0,n.isEmpty={},n.search={},n.historyFilter={mediaType:!1},n.historyPeer={},n.historyState={selectActions:!1,botActions:!1,channelActions:!1,canReply:!1,canDelete:!1,actions:function(){return n.historyState.selectActions?"selected":n.historyState.botActions?"bot":n.historyState.channelActions?"channel":!1},typing:[],missedCount:0,skipped:!1},n.openSettings=function(){o.open({templateUrl:templateUrl("settings_modal"),controller:"SettingsModalController",windowClass:"settings_modal_window mobile_modal",backdrop:"single"})},n.openFaq=function(){var e="https://telegram.org/faq";switch(Config.I18n.locale){case"es-es":e+="/es";break;case"it-it":e+="/it";break;case"de-de":e+="/de";break;case"ko-ko":e+="/ko";break;case"pt-br":e+="/br"}window.open(e,"_blank")},n.openContacts=function(){m.selectContact().then(function(e){n.dialogSelect(c.getUserString(e))})},n.openGroup=function(){m.selectContacts({action:"new_group"}).then(function(e){if(1==e.length)n.dialogSelect(c.getUserString(e[0]));else if(e.length>1){var t=s.$new();t.userIDs=e,o.open({templateUrl:templateUrl("chat_create_modal"),controller:"ChatCreateModalController",scope:t,windowClass:"md_simple_modal_window mobile_modal",backdrop:"single"})}})},n.importContact=function(){c.openImportContact().then(function(e){e&&s.$broadcast("history_focus",{peerString:c.getUserString(e)})})},n.searchClear=function(){n.search.query="",n.$broadcast("search_clear")},n.dialogSelect=function(e,t){var a={peerString:e};t?a.messageID=t:n.search.query&&n.searchClear();var i=p.getPeerID(e),o=u.convertMigratedPeer(i);o&&(a.peerString=p.getPeerString(o)),s.$broadcast("history_focus",a)},n.logOut=function(){h.confirm({type:"LOGOUT"}).then(function(){l.logOut().then(function(){location.hash="/login",f.reload()})})},n.openChangelog=function(){g.showChangelog(!1)},n.showPeerInfo=function(){n.curDialog.peerID>0?c.openUser(n.curDialog.peerID):n.curDialog.peerID<0&&d.openChat(-n.curDialog.peerID)},n.toggleEdit=function(){n.$broadcast("history_edit_toggle")},n.selectedFlush=function(){n.$broadcast("history_edit_flush")},n.toggleMedia=function(e){n.$broadcast("history_media_toggle",e)},n.returnToRecent=function(){n.$broadcast("history_return_recent")},n.toggleSearch=function(){n.$broadcast("dialogs_search_toggle")},w(),g.checkUpdate(),_.start(),v.start(),y.start(),b.start()}]).controller("AppImDialogsController",["$scope","$location","$q","$timeout","$routeParams","MtpApiManager","AppUsersManager","AppChatsManager","AppMessagesManager","AppProfileManager","AppPeersManager","PhonebookContactsService","ErrorService","AppRuntimeManager",function(e,t,n,a,i,o,s,r,l,c,d,u){function p(t){for(var n=0;n<e.dialogs.length;n++)if(e.dialogs[n].peerID==t){e.dialogs.splice(n,1);break}}function m(t){var i=++k;if(a.cancel(M),v)return M=t||b?n.when():a(angular.noop,500),M.then(function(){return l.getSearch(!1,e.search.query,{_:"inputMessagesFilterEmpty"},b).then(function(e){if(i!=k)return n.reject();var t=[];return angular.forEach(e.history,function(e){var n=l.getMessage(e),a=l.getMessagePeer(n);t.push({peerID:a,top_message:e,unread_count:-1})}),{dialogs:t}})});var o=e.search.query||"";return e.noUsers&&(o="%pg "+o),l.getConversations(o,y).then(function(e){return i!=k?n.reject():e})}function g(t){y=0,b=0,w=!1,v||(C={},_=!1),m(t).then(function(t){v||(e.dialogs=[],e.contacts=[],e.foundPeers=[]),e.foundMessages=[];var n=v?e.foundMessages:e.dialogs;t.dialogs.length?(angular.forEach(t.dialogs,function(t){if(!e.canSend||!d.isChannel(t.peerID)||r.hasRights(-t.peerID,"send")){var a=v?void 0:t,i=l.wrapForDialog(t.top_message,a);v?i.unreadCount=-1:C[t.peerID]=!0,n.push(i)}}),v?b=t.dialogs[t.dialogs.length-1].top_message:(y=t.dialogs[t.dialogs.length-1].index,delete e.isEmpty.dialogs),w=!0):w=!1,e.$broadcast("ui_dialogs_change"),e.search.query?h():(l.getConversations("",y,100),t.dialogs.length||(e.isEmpty.dialogs=!0,h()))})}function h(){return!_||w&&(y||b)?w||v||e.noUsers||!e.search.query&&e.dialogs.length?void m().then(function(t){if(t.dialogs.length){var n=v?e.foundMessages:e.dialogs;angular.forEach(t.dialogs,function(t){if(!e.canSend||!d.isChannel(t.peerID)||r.hasRights(-t.peerID,"send")){var a=v?void 0:t,i=l.wrapForDialog(t.top_message,a);v?i.unreadCount=-1:C[t.peerID]=!0,n.push(i)}}),v?b=t.dialogs[t.dialogs.length-1].top_message:y=t.dialogs[t.dialogs.length-1].index,e.$broadcast("ui_dialogs_append"),w=!0
}else w=!1}):void f():void 0}function f(){_=!0;var t=++$;s.getContacts(e.search.query).then(function(n){t==$&&(e.contacts=[],angular.forEach(n,function(t){void 0===C[t]&&e.contacts.push({userID:t,user:s.getUser(t),peerString:s.getUserString(t)})}),n.length?delete e.isEmpty.contacts:e.search.query||(e.isEmpty.contacts=!0),e.$broadcast("ui_dialogs_append"))}),e.search.query&&e.search.query.length>=5&&a(function(){t==$&&o.invokeApi("contacts.search",{q:e.search.query,limit:10}).then(function(n){s.saveApiUsers(n.users),r.saveApiChats(n.chats),t==$&&(e.foundPeers=[],angular.forEach(n.results,function(t){var n=d.getPeerID(t);if(void 0===C[n]){if(e.canSend&&d.isChannel(n)&&!r.hasRights(-n,"send"))return;e.foundPeers.push({id:n,username:d.getPeer(n).username,peerString:s.getUserString(n)})}}))},function(e){400==e.code&&(e.handled=!0)})},500),e.search.query&&!e.noMessages&&(v=!0,g())}e.dialogs=[],e.contacts=[],e.foundPeers=[],e.foundMessages=[],void 0===e.search&&(e.search={}),void 0===e.isEmpty&&(e.isEmpty={}),e.phonebookAvailable=u.isAvailable();var _,v=!1,y=0,b=0,w=!1,k=0,$=0,C={},S={};e.$on("dialogs_need_more",function(){h()}),e.$on("dialog_unread",function(t,n){angular.forEach(e.dialogs,function(e){e.peerID==n.peerID&&(e.unreadCount=n.count)})}),e.$on("dialogs_multiupdate",function(t,n){if(void 0!==e.search.query&&e.search.query.length)return!1;var a=[],i={};angular.forEach(n,function(t,n){e.noUsers&&n>0||(i[t.index]=t,a.push(t.index))}),a.sort();var o,s,r=e.dialogs.length;for(o=0;r>o;o++)s=e.dialogs[o],n[s.peerID]&&(e.dialogs.splice(o,1),o--,r--,l.clearDialogCache(s.mid));for(r=a.length,o=0;r>o;o++)s=i[a[o]],e.dialogs.unshift(l.wrapForDialog(s.top_message,s));delete e.isEmpty.dialogs,C[s.peerID]||(C[s.peerID]=!0,_&&f())}),e.$on("dialog_flush",function(e,t){p(t.peerID)}),e.$on("dialog_drop",function(e,t){p(t.peerID)}),e.$on("history_delete",function(t,n){for(var a=0;a<e.dialogs.length;a++)if(e.dialogs[a].peerID==n.peerID){n.msgs[e.dialogs[a].mid]&&(e.dialogs[a].deleted=!0);break}}),e.$on("apiUpdate",function(t,n){switch(n._){case"updateUserTyping":case"updateChatUserTyping":if(!s.hasUser(n.user_id))return void(n.chat_id&&r.hasChat(n.chat_id)&&!r.isChannel(n.chat_id)&&c.getChatFull(n.chat_id));var i="updateUserTyping"==n._?n.user_id:-n.chat_id;s.forceUserOnline(n.user_id);for(var o=0;o<e.dialogs.length;o++)if(e.dialogs[o].peerID==i){e.dialogs[o].typing=n.user_id,a.cancel(S[i]),S[i]=a(function(){for(var t=0;t<e.dialogs.length;t++)e.dialogs[t].peerID==i&&e.dialogs[t].typing==n.user_id&&delete e.dialogs[t].typing},6e3);break}}}),e.$watchCollection("search",function(){e.dialogs=[],e.foundMessages=[],v=!1,$++,g()}),Config.Mobile&&e.$watch("curDialog.peer",function(){e.$broadcast("ui_dialogs_update")}),e.importPhonebook=function(){u.openPhonebookImport()},e.$on("contacts_update",function(){_&&f()}),e.$on("ui_dialogs_search_clear",e.searchClear),e.noMessages||e.$on("dialogs_search",function(t,n){e.search.query=n.query||"",e.toggleSearch()});var M}]).controller("AppImHistoryController",["$scope","$location","$timeout","$modal","$rootScope","MtpApiManager","AppUsersManager","AppChatsManager","AppMessagesManager","AppPeersManager","ApiUpdatesManager","PeersSelectService","IdleManager","StatusManager","NotificationsManager","ErrorService","GeoLocationManager",function(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g,h,f){function v(t,n){V=i.selectedPeerID=t.peerID,e.historyFilter.mediaType=!1,c.getInputPeer(t.peer||e.curDialog.peer||""),$(),N(!0),n.peer&&n.peer==t.peer&&t.messageID?S():t.peerID?(k(!0),I()):A()}function y(t){var n,a,i,o=-1,s=10;for(n=0;n<e.peerHistories.length;n++)if(e.peerHistories[n].peerID==t){o=n;break}return o>-1?a=e.peerHistories[o]:(a={peerID:t,messages:[],ids:[]},e.peerHistories.unshift(a),i=e.peerHistories.length-s,i>0&&e.peerHistories.splice(s-1,i),a)}function b(t){var n;for(n=0;n<e.peerHistories.length;n++)if(e.peerHistories[n].peerID==t)return e.peerHistories[n];return!1}function w(t){var n;for(n=0;n<e.peerHistories.length;n++)if(e.peerHistories[n].peerID==t)return e.peerHistories.splice(n,1),!0;return!1}function k(t){var n=c.getPeer(V);return!n||n.deleted?(safeReplaceObject(e.state,{loaded:!1}),!1):(W=y(V),safeReplaceObject(e.historyPeer,{id:V,data:n}),o.getUserID().then(function(t){e.ownID=t}),void(t&&(e.historyState.typing.splice(0,e.historyState.typing.length),e.$broadcast("ui_peer_change"),e.$broadcast("ui_history_change"),safeReplaceObject(e.state,{loaded:!0,empty:!W.messages.length,mayBeHasMore:!0}),$(),C())))}function $(){var t=e.historyState.botActions;e.historyState.botActions=!V||0>V||!s.isBot(V)||e.historyFilter.mediaType||e.curDialog.messageID?!1:e.state.empty||W&&1==W.messages.length&&W.messages[0].action&&"messageActionBotIntro"==W.messages[0].action._?"start":e.curDialog.startParam?"param":!1,t!=e.historyState.botActions&&e.$broadcast("ui_panel_update")}function C(){var t,n=e.historyState.channelActions;if(V&&c.isChannel(V)&&(t=r.getChat(-V))){var a=r.hasRights(-V,"send");a?e.historyState.channelActions=!1:t.pFlags.left?e.historyState.channelActions="join":(e.historyState.channelActions||(e.historyState.channelActions="mute"),g.getPeerMuted(V).then(function(t){e.historyState.channelActions=t?"unmute":"mute"})),e.historyState.canReply=a,e.historyState.canDelete=a||t.pFlags.moderator}else e.historyState.channelActions=!1,e.historyState.canReply=!0,e.historyState.canDelete=!0;n!=e.historyState.channelActions&&e.$broadcast("ui_panel_update")}function S(){var t=b(V);if(t&&-1!=t.ids.indexOf(e.curDialog.messageID)){e.historyUnread={};var a=e.curDialog.messageID||0;e.$broadcast("messages_focus",a),e.$broadcast("ui_history_change_scroll",!0),n.cancel(z),a&&(z=n(function(){e.curDialog.messageID==a&&e.$broadcast("messages_focus",0)},2800))}else I()}function M(){if(Y){if(nt)return void(st=!0);st=!1,e.state.lessActive=ot=!0;var t=et,n=++it,a=0,i=20;l.getHistory(e.curDialog.peerID,X,a,i).then(function(a){if(e.state.lessActive=ot=!1,t==et&&n==it){var o,s;for(o=a.history.length-1;o>=0;o--)s=a.history[o],s>X&&(W.messages.push(l.wrapForHistory(s)),W.ids.push(s));a.history.length?(X=a.history.length>=i?a.history[0]:0,l.regroupWrappedHistory(W.messages,-i)&&e.$broadcast("messages_regroup"),delete e.state.empty,e.$broadcast("ui_history_append")):X=0,e.historyState.skipped=Y=X>0,at&&x()}})}}function x(){if(K){if(ot)return void(at=!0);at=!1,e.state.moreActive=nt=!0;var t=et,n=++tt,a=e.historyFilter.mediaType&&{_:Q[e.historyFilter.mediaType]},i=Config.Mobile?20:0,o=a?l.getSearch(e.curDialog.peerID,"",a,Z,i):l.getHistory(e.curDialog.peerID,Z,i);o.then(function(a){e.state.moreActive=nt=!1,t==et&&n==tt&&(angular.forEach(a.history,function(e){W.messages.unshift(l.wrapForHistory(e)),W.ids.unshift(e)}),K=null===a.count||a.history.length&&W.messages.length<a.count,a.history.length&&(delete e.state.empty,Z=a.history[a.history.length-1],e.$broadcast("ui_history_prepend"),l.regroupWrappedHistory(W.messages,a.history.length+1)&&e.$broadcast("messages_regroup")),st&&M())})}}function I(t){e.historyState.missedCount=0,K=!1,e.historyState.skipped=Y=!1,Z=0,X=0,W=y(V);var a=0,o=0;e.curDialog.messageID?(Z=parseInt(e.curDialog.messageID),a=20,o=20):t&&(a=10),e.state.moreActive=nt=!1,at=!1,e.state.lessActive=ot=!1,st=!1;var s=W.messages.length;s&&(Z||o)&&(s=0,W.messages=[],W.ids=[],e.state.empty=!0);var r=++et,c=e.historyFilter.mediaType&&{_:Q[e.historyFilter.mediaType]},d=c?l.getSearch(e.curDialog.peerID,"",c,Z):l.getHistory(e.curDialog.peerID,Z,a,o,s);e.state.mayBeHasMore=!0,d.then(function(t){if(r==et){var a=t.history.length;X=t.unreadSkip||Z&&t.history.indexOf(Z)>=o-1?t.history[0]:0,Z=t.history[t.history.length-1],e.historyState.skipped=Y=X>0,K=null===t.count||a&&a<t.count,k(),safeReplaceObject(e.state,{loaded:!0,empty:!a}),W.messages=[],W.ids=[],angular.forEach(t.history,function(n){var a=l.wrapForHistory(n);e.historyState.skipped&&delete a.pFlags.unread,t.unreadOffset&&(a.unreadAfter=!0),W.messages.push(a),W.ids.push(n)}),W.messages.reverse(),W.ids.reverse(),l.regroupWrappedHistory(W.messages)&&e.$broadcast("messages_regroup"),t.unreadOffset?e.historyUnreadAfter=t.history[t.unreadOffset-1]:e.historyUnreadAfter&&delete e.historyUnreadAfter,e.$broadcast("messages_unread_after");var s=e.curDialog.messageID||0;onContentLoaded(function(){e.$broadcast("messages_focus",s)}),e.$broadcast("ui_history_change"),n.cancel(z),s&&(z=n(function(){e.curDialog.messageID==s&&e.$broadcast("messages_focus",0)},2800)),i.idle.isIDLE||l.readHistory(e.curDialog.peerID),$(),C()}},function(){safeReplaceObject(e.state,{error:!0,loaded:!0})})}function A(){et++,safeReplaceObject(e.historyPeer,{}),safeReplaceObject(e.state,{notSelected:!0}),W=!1,K=!1,e.$broadcast("ui_history_change")}function E(){l.startBot(V,0,e.curDialog.startParam),e.curDialog.startParam=!1}function T(){delete e.curDialog.startParam}function D(){o.invokeApi("channels.joinChannel",{channel:r.getChannelInput(-V)}).then(function(e){d.processUpdateMessage(e)})}function P(e){g.getPeerSettings(V).then(function(t){t.mute_until=e?2e9:0,g.updatePeerSettings(V,t)})}function F(t,n){if(e.historyState.botActions||i.idle.afterFocus)return!1;var o=l.getMessage(t);if("messageService"==o._)return!1;if(!e.historyState.selectActions){if(getSelectedText())return!1;for(var s=n.target;s;)if(s instanceof SVGElement)s=s.parentNode;else{if(s.className&&-1!=s.className.indexOf("im_message_outer_wrap")){if(Config.Mobile)return!1;break}if(s.className&&-1!=s.className.indexOf("im_message_date"))return e.historyState.canReply?L(t):B(t),!1;if(Config.Mobile&&s.className&&-1!=s.className.indexOf("im_message_body"))break;if("A"==s.tagName||hasOnlick(s))return!1;s=s.parentNode}if(Config.Mobile)return a.open({templateUrl:templateUrl("message_actions_modal"),windowClass:"message_actions_modal_window",scope:e.$new()}).result.then(function(n){switch(n){case"reply":L(t);break;case"delete":O(t);break;case"forward":B(t);break;case"select":e.historyState.selectActions="selected",e.$broadcast("ui_panel_update"),F(t)}}),!1}var r=n&&n.shiftKey;if(r&&e.$broadcast("ui_selection_clear"),e.selectedMsgs[t])J=!1,delete e.selectedMsgs[t],e.selectedCount--,e.selectedCount||(e.historyState.selectActions=!1,e.$broadcast("ui_panel_update"));else{if(r){if(J!=t){var c,d,u,p=J>t;for(c=0;c<W.messages.length;c++)if(W.messages[c].mid==J){d=c;break}for(c=d;W.messages[c]&&(u=W.messages[c].mid)!=t;)e.selectedMsgs[u]||(e.selectedMsgs[u]=!0,e.selectedCount++),c+=p?-1:1}}else J=t;e.selectedMsgs[t]=!0,e.selectedCount++,e.historyState.selectActions||(e.historyState.selectActions="selected",e.$broadcast("ui_panel_update"))}e.$broadcast("messages_select")}function R(t,n){return e.historyState.canReply&&e.$broadcast("inline_bot_select",t),cancelEvent(n)}function N(t){e.selectedMsgs={},e.selectedCount=0,e.historyState.selectActions=!1,J=!1,t||e.$broadcast("ui_panel_update"),e.$broadcast("messages_select")}function U(){h.confirm({type:"HISTORY_FLUSH"}).then(function(){l.flushHistory(e.curDialog.peerID).then(function(){N()})})}function O(t){var n=[];t?n.push(t):e.selectedCount>0&&angular.forEach(e.selectedMsgs,function(e,t){n.push(t)}),n.length&&h.confirm({type:"MESSAGES_DELETE",count:n.length}).then(function(){l.deleteMessages(n).then(function(){N()})})}function B(t){var n=[];t?n.push(t):e.selectedCount>0&&angular.forEach(e.selectedMsgs,function(e,t){n.push(t)}),n.length&&u.selectPeer({canSend:!0}).then(function(e){N(),i.$broadcast("history_focus",{peerString:e,attachment:{_:"fwd_messages",id:n}})})}function L(t){t||1!=e.selectedCount||angular.forEach(e.selectedMsgs,function(e,n){t=n}),t&&(N(),e.$broadcast("reply_selected",t))}function j(){e.historyState.selectActions?N():(e.historyState.selectActions="selected",e.$broadcast("ui_panel_update"))}function q(t){e.historyFilter.mediaType=t||!1,e.curDialog.messageID=!1,W.messages=[],W.ids=[],e.state.empty=!0,I()}function H(){e.historyFilter.mediaType?q():e.curDialog.messageID?i.$broadcast("history_focus",{peerString:e.curDialog.peer}):I(!0)}e.$watchCollection("curDialog",v),d.attach(),p.start(),m.start(),e.peerHistories=[],e.selectedMsgs={},e.selectedCount=0,e.historyState.selectActions=!1,e.historyState.botActions=!1,e.historyState.channelActions=!1,e.historyState.canDelete=!1,e.historyState.canReply=!1,e.historyState.missedCount=0,e.historyState.skipped=!1,e.state={},e.toggleMessage=F,e.selectedDelete=O,e.selectedForward=B,e.selectedReply=L,e.selectedCancel=N,e.selectedFlush=U,e.selectInlineBot=R,e.startBot=E,e.cancelBot=T,e.joinChannel=D,e.togglePeerMuted=P,e.toggleEdit=j,e.toggleMedia=q,e.returnToRecent=H,e.$on("history_edit_toggle",j),e.$on("history_edit_flush",U),e.$on("history_media_toggle",function(e,t){q(t)}),e.$on("history_return_recent",H);var V,z,W=!1,G=!1,K=!1,Y=!1,Z=0,X=0,J=!1,Q={photos:"inputMessagesFilterPhotos",video:"inputMessagesFilterVideo",documents:"inputMessagesFilterDocument",audio:"inputMessagesFilterVoice"},et=0,tt=0,nt=!1,at=!1,it=0,ot=!1,st=!1;e.$on("history_update",angular.noop);var rt=!1;e.$on("stateSynchronized",function(){rt&&(rt==e.curDialog.peerID&&I(),rt=!1)}),e.$on("reply_button_press",function(t,n){var a=e.historyState.replyKeyboard;if(a){var i={replyToMsgID:0>V&&a.mid};switch(n._){case"keyboardButtonRequestPhone":h.confirm({type:"BOT_ACCESS_PHONE"}).then(function(){var e=s.getSelf();l.sendOther(V,{_:"inputMediaContact",phone_number:e.phone,first_name:e.first_name,last_name:e.last_name},i)});break;case"keyboardButtonRequestGeoLocation":h.confirm({type:"BOT_ACCESS_GEO"}).then(function(){return f.getPosition().then(function(e){l.sendOther(V,{_:"inputMediaGeoPoint",geo_point:{_:"inputGeoPoint",lat:e.lat,"long":e["long"]}},i)},function(){h.alert(_("error_modal_bad_request_title_raw"),_("error_modal_gelocation_na_raw"))})});break;default:l.sendText(V,n.text,i)}}}),e.$on("history_reload",function(t,n){n==e.curDialog.peerID&&I()}),e.$on("history_forbidden",function(n,a){a==e.curDialog.peerID&&t.url("/im"),w(a)}),e.$on("dialog_migrate",function(t,n){if(n.migrateFrom==e.curDialog.peerID){var a=c.getPeerString(n.migrateTo);i.$broadcast("history_focus",{peerString:a})}w(n.migrateFrom)}),e.$on("notify_settings",function(t,n){n.peerID==e.curDialog.peerID&&C()}),e.$on("channel_settings",function(t,n){n.channelID==-e.curDialog.peerID&&C()});var lt={};e.$on("history_append",function(t,a){var o=b(a.peerID);if(o){var s=a.peerID==e.curDialog.peerID;if(s){if(e.historyFilter.mediaType||e.historyState.skipped)return void(a.my?H():e.historyState.missedCount++);e.curDialog.messageID&&a.my&&H(),delete e.state.empty}var r=l.wrapForHistory(a.messageID);o.messages.push(r),o.ids.push(a.messageID),l.regroupWrappedHistory(o.messages,-3)&&e.$broadcast("messages_regroup"),s&&(e.historyState.typing.splice(0,e.historyState.typing.length),e.$broadcast("ui_history_append_new",{my:a.my,idleScroll:G&&!r.pFlags.out&&i.idle.isIDLE}),a.my&&e.historyUnreadAfter&&(delete e.historyUnreadAfter,e.$broadcast("messages_unread_after")),i.idle.isIDLE?!r.pFlags.unread||r.pFlags.out||(o.messages[o.messages.length-2]||{}).pFlags.unread||(e.historyUnreadAfter=r.mid,G=!0,e.$broadcast("messages_unread_after")):n(function(){l.readHistory(e.curDialog.peerID)}),$(),C())}}),e.$on("history_multiappend",function(t,a){var o=!1,s=!1,r=i.idle.isIDLE;angular.forEach(a,function(t,a){var i=b(a);if(i){var c=a==e.curDialog.peerID,d=i.messages.length,u=t.length;if(c){if(e.historyFilter.mediaType||e.historyState.skipped)return void(e.historyState.missedCount+=u);delete e.state.empty}if((!c||r)&&d>(u>10?10:100))return console.warn(dT(),"Drop too many messages",u,d,r,c,a),void(c?(X=i.messages[d-1].mid,e.historyState.skipped=Y=X>0,Y&&(rt=a,e.$broadcast("ui_history_append"))):w(a));var p,m,g,h=!1,f=!1,m=i.messages[i.messages.length-1],_=!m||!m.pFlags.unread;for(g=0;u>g;g++)p=t[g],Z>p||-1!==i.ids.indexOf(p)||(m=l.wrapForHistory(p),i.messages.push(m),i.ids.push(p),!f&&r&&(m.pFlags.unread&&!m.pFlags.out&&_?f=p:_=!m.pFlags.unread),!h&&m.pFlags.out&&(h=!0));l.regroupWrappedHistory(i.messages,-u-2)&&(o=!0),c&&(e.historyState.typing.length&&e.historyState.typing.splice(0,e.historyState.typing.length),e.$broadcast("ui_history_append_new",{idleScroll:G&&!h&&r}),r?f&&(e.historyUnreadAfter=f,G=!0,s=!0):n(function(){l.readHistory(e.curDialog.peerID)}),$(),C())}}),o&&e.$broadcast("messages_regroup"),s&&e.$broadcast("messages_unread_after")}),e.$on("history_delete",function(t,n){var a=b(n.peerID);if(a){var i,o=[];for(i=0;i<a.messages.length;i++)n.msgs[a.messages[i].mid]||o.push(a.messages[i]);a.messages=o,l.regroupWrappedHistory(a.messages),e.$broadcast("messages_regroup"),n.peerID==e.curDialog.peerID&&(e.state.empty=!o.length,$())}}),e.$on("dialog_flush",function(t,n){var a=b(n.peerID);a&&(a.messages=[],a.ids=[],n.peerID==e.curDialog.peerID&&(e.state.empty=!0,$()))}),e.$on("history_focus",function(){e.historyFilter.mediaType&&q()}),e.$on("apiUpdate",function(t,a){switch(a._){case"updateUserTyping":case"updateChatUserTyping":s.forceUserOnline(a.user_id),s.hasUser(a.user_id)&&e.curDialog.peerID==("updateUserTyping"==a._?a.user_id:-a.chat_id)&&(-1==e.historyState.typing.indexOf(a.user_id)&&e.historyState.typing.push(a.user_id),n.cancel(lt[a.user_id]),lt[a.user_id]=n(function(){var t=e.historyState.typing.indexOf(a.user_id);-1!==t&&e.historyState.typing.splice(t,1)},6e3))}}),e.$on("history_need_less",M),e.$on("history_need_more",x),i.$watch("idle.isIDLE",function(t){t||!e.curDialog||!e.curDialog.peerID||e.historyFilter.mediaType||e.historyState.skipped||l.readHistory(e.curDialog.peerID),t||(G=!1,rt&&rt==e.curDialog.peerID&&(I(),rt=!1))})}]).controller("AppImPanelController",["$scope",function(e){e.$on("user_update",angular.noop)}]).controller("AppImSendController",["$q","$scope","$timeout","MtpApiManager","Storage","AppProfileManager","AppChatsManager","AppUsersManager","AppPeersManager","AppDocsManager","AppMessagesManager","AppInlineBotsManager","MtpApiFileManager","RichTextProcessor",function(e,t,n,a,i,o,s,r,l,c,d,u,p,m){function g(e){return t.$broadcast("ui_message_before_send"),n(function(){var e=t.draftMessage.text;if(angular.isString(e)&&e.length>0){e=m.parseEmojis(e);var n={replyToMsgID:t.draftMessage.replyToMessage&&t.draftMessage.replyToMessage.mid};do d.sendText(t.curDialog.peerID,e.substr(0,4096),n),e=e.substr(4096);while(e.length)}k(),F==t.curDialog.peer&&(F=!1),_(),t.$broadcast("ui_message_send")}),cancelEvent(e)}function h(){var n=t.curDialog.peerID;if(!n)return safeReplaceObject(t.mentions,{}),void t.$broadcast("mentions_update");var a,i=[],s=SearchIndexManager.createIndex(),l=u.getPopularBots().then(function(e){var t=[];return angular.forEach(e,function(e){t.push(e.id)}),t});a=0>n?o.getChatFull(-n).then(function(e){var t=(e.participants||{}).participants||[],n=[];return angular.forEach(t,function(e){n.push(e.user_id)}),n}):e.when([]),e.all({pop:l,chat:a}).then(function(e){var n={},a=e.pop.concat(e.chat);angular.forEach(a,function(e){if(!n[e]){n[e]=!0;var t=r.getUser(e);t.username&&(i.push(t),SearchIndexManager.indexObject(t.id,r.getUserSearchText(t.id),s))}}),safeReplaceObject(t.mentions,{users:i,index:s}),t.$broadcast("mentions_update")})}function f(){var e=t.curDialog.peerID;return e?void o.getPeerBots(e).then(function(n){if(!n.length)return safeReplaceObject(t.commands,{}),void t.$broadcast("mentions_update");var a=0>e,i=[],o=SearchIndexManager.createIndex();angular.forEach(n,function(e){var t="";if(a){var n=r.getUser(e.id);n&&n.username&&(t+="@"+n.username)}var s=r.getUserSearchText(e.id);angular.forEach(e.commands,function(n,a){var r="/"+a+t;i.push({botID:e.id,value:r,rDescription:m.wrapRichText(n,{noLinks:!0,noLineBreaks:!0})}),SearchIndexManager.indexObject(r,s+" "+a+" "+n,o)})}),safeReplaceObject(t.commands,{list:i,index:o}),t.$broadcast("mentions_update")}):(safeReplaceObject(t.commands,{}),void t.$broadcast("mentions_update"))}function _(e){if(h(),f(),b(),C(),delete t.draftMessage.inlineProgress,t.$broadcast("inline_results",!1),F){if(F==t.curDialog.peer)return t.draftMessage.isBroadcast=l.isChannel(t.curDialog.peerID)&&!l.isMegagroup(t.curDialog.peerID),void t.$broadcast("ui_peer_draft");F=!1}w(),e?i.get("draft"+t.curDialog.peerID).then(function(e){t.draftMessage.text=e||"",t.draftMessage.isBroadcast=l.isChannel(t.curDialog.peerID)&&!l.isMegagroup(t.curDialog.peerID),t.$broadcast("ui_peer_draft")}):(t.draftMessage.text="",t.$broadcast("ui_peer_draft"))}function v(e,a){if(a&&a._)if("share_url"==a._){var o=a.url,s=a.text||" ";F=t.curDialog.peer,n(function(){t.draftMessage.text=o+"\n"+s,t.$broadcast("ui_peer_draft",{customSelection:[o+"\n",s,""]})},1e3)}else if("fwd_messages"==a._){F=t.curDialog.peer,t.draftMessage.fwdMessages=a.id,t.$broadcast("ui_peer_reply");var r=l.getPeerID(t.curDialog.peer);i.get("draft"+r).then(function(e){t.draftMessage.text=e||"",t.$broadcast("ui_peer_draft")})}else if("inline_query"==a._){var c=a.mention,d=a.query;F=t.curDialog.peer,n(function(){t.draftMessage.text=c+" "+d,t.$broadcast("ui_peer_draft",{customSelection:[c+" "+d,"",""]})},1e3)}}function y(e){t.draftMessage.replyToMessage=d.wrapForDialog(e),t.$broadcast("ui_peer_reply"),P=!1}function b(){var e=t.draftMessage.replyToMessage;e&&t.historyState.replyKeyboard&&t.historyState.replyKeyboard.mid==e.mid&&!t.historyState.replyKeyboard.pFlags.hidden&&(t.historyState.replyKeyboard.pFlags.hidden=!0,t.$broadcast("ui_keyboard_update")),delete t.draftMessage.replyToMessage,t.$broadcast("ui_peer_reply")}function w(){t.draftMessage.fwdMessages&&t.draftMessage.fwdMessages.length&&(delete t.draftMessage.fwdMessages,t.$broadcast("ui_peer_reply"),F==t.curDialog.peer&&(F=!1))}function k(){if(t.draftMessage.fwdMessages&&t.draftMessage.fwdMessages.length){var e=t.draftMessage.fwdMessages.slice();w(),setZeroTimeout(function(){d.forwardMessages(t.curDialog.peerID,e)})}}function $(e){return t.draftMessage.text=t.draftMessage.text&&"/"==t.draftMessage.text.charAt(0)?"":"/",t.$broadcast("ui_peer_draft",{focus:!0}),cancelEvent(e)}function C(){var e=t.curDialog.peerID,n=d.getReplyKeyboard(e);n&&(n=d.wrapReplyMarkup(n)),t.historyState.replyKeyboard=n;var a=n&&!n.pFlags.hidden&&("replyKeyboardForceReply"==n._||"replyKeyboardMarkup"==n._&&0>e);a?(y(n.mid),P=!0):P&&b();var i=n&&!n.pFlags.hidden&&"replyKeyboardMarkup"==n._;t.$broadcast("ui_keyboard_update",{enabled:i}),t.$emit("ui_panel_update",{blur:i})}function S(e){var n=t.historyState.replyKeyboard;return n&&(n.pFlags.hidden=!n.pFlags.hidden,C()),cancelEvent(e)}function M(e){if(e&&e.length){t.historyFilter.mediaType||t.historyState.skipped||d.readHistory(t.curDialog.peerID);var n={};n["draft"+t.curDialog.peerID]=e,i.set(n)}else i.remove("draft"+t.curDialog.peerID);x(e)}function x(a){N&&n.cancel(N);var i=++O;if(!a||!a.length)return delete t.draftMessage.inlineProgress,void t.$broadcast("inline_results",!1);var o=a.match(R);if(!o)return delete t.draftMessage.inlineProgress,void t.$broadcast("inline_results",!1);var s,r=o[1];t.draftMessage.inlineProgress=!0,s=U&&U.username==r?e.when(U):u.resolveInlineMention(r),s.then(function(e){i==O&&(U=e,t.$broadcast("inline_placeholder",{prefix:"@"+r+o[2],placeholder:e.placeholder}),N&&n.cancel(N),N=n(function(){var n=m.parseEmojis(o[3]);u.getInlineResults(t.curDialog.peerID,e.id,n,e.geo,"").then(function(e){N=!1,i==O&&(e.text=a,t.$broadcast("inline_results",e),delete t.draftMessage.inlineProgress)},function(){t.$broadcast("inline_results",!1),delete t.draftMessage.inlineProgress})},500))},function(){t.$broadcast("inline_results",!1),delete t.draftMessage.inlineProgress})}function I(){return l.isChannel(t.curDialog.peerID)&&!l.isMegagroup(t.curDialog.peerID)?!1:void a.invokeApi("messages.setTyping",{peer:l.getInputPeerByID(t.curDialog.peerID),action:{_:"sendMessageTypingAction"}})}function A(e){if(angular.isArray(e)&&e.length){var n={replyToMsgID:t.draftMessage.replyToMessage&&t.draftMessage.replyToMessage.mid,isMedia:t.draftMessage.isMedia};delete t.draftMessage.replyToMessage,e[0].lastModified&&e.sort(function(e,t){return e.lastModified-t.lastModified});for(var a=0;a<e.length;a++)d.sendFile(t.curDialog.peerID,e[a],n),t.$broadcast("ui_message_send");k()}}function E(e){if(e){var n=c.getDoc(e);if(n.id&&n.access_hash){var a={_:"inputMediaDocument",id:{_:"inputDocument",id:n.id,access_hash:n.access_hash}},i={replyToMsgID:t.draftMessage.replyToMessage&&t.draftMessage.replyToMessage.mid};d.sendOther(t.curDialog.peerID,a,i),t.$broadcast("ui_message_send"),k()}delete t.draftMessage.sticker}}function T(e){e&&(d.sendText(t.curDialog.peerID,e),_(),delete t.draftMessage.sticker,delete t.draftMessage.text,delete t.draftMessage.command,delete t.draftMessage.inlineResultID,t.$broadcast("ui_message_send"),t.$broadcast("ui_peer_draft"))}function D(e){if(e){if("_switch_pm_"==e.substr(0,11)){var n=U.id,a=e.substr(11);return u.switchToPM(t.curDialog.peerID,n,a)}var i={replyToMsgID:t.draftMessage.replyToMessage&&t.draftMessage.replyToMessage.mid};u.sendInlineResult(t.curDialog.peerID,e,i),k(),_(),delete t.draftMessage.sticker,delete t.draftMessage.text,delete t.draftMessage.command,delete t.draftMessage.inlineResultID,t.$broadcast("ui_message_send"),t.$broadcast("ui_peer_draft")}}t.$watch("curDialog.peer",_),t.$on("user_update",angular.noop),t.$on("peer_draft_attachment",v),t.$on("reply_selected",function(e,t){y(t)}),t.$on("ui_typing",I),t.draftMessage={text:"",send:g,replyClear:b,fwdsClear:w},t.mentions={},t.commands={},t.$watch("draftMessage.text",M),t.$watch("draftMessage.files",A),t.$watch("draftMessage.sticker",E),t.$watch("draftMessage.command",T),t.$watch("draftMessage.inlineResultID",D),t.$on("history_reply_markup",function(e,n){n.peerID==t.curDialog.peerID&&C()}),t.$on("inline_bot_select",function(e,n){var a=r.getUser(n);t.draftMessage.text="@"+a.username+" ",t.$broadcast("ui_peer_draft",{focus:!0})}),t.$on("inline_bots_popular",h),t.replyKeyboardToggle=S,t.toggleSlash=$;var P=!1,F=!1,R=/^@([a-zA-Z\d_]{1,32})( | )([\s\S]*)$/,N=!1,U=!1,O=0}]).controller("AppLangSelectController",["$scope","_","Storage","ErrorService","AppRuntimeManager",function(e,t,n,a,i){e.supportedLocales=Config.I18n.supported,e.langNames=Config.I18n.languages,e.curLocale=Config.I18n.locale,e.form={locale:Config.I18n.locale},e.localeSelect=function(t){t=t||e.form.locale,e.curLocale!==t&&a.confirm({type:"APPLY_LANG_WITH_RELOAD"}).then(function(){n.set({i18n_locale:t}).then(function(){i.reload()})},function(){e.form.locale=e.curLocale})}}]).controller("AppFooterController",["$scope","LayoutSwitchService",function(e,t){e.switchLayout=function(e){t.switchLayout(e)}}]).controller("PhotoModalController",["$q","$scope","$rootScope","$modalInstance","AppPhotosManager","AppMessagesManager","AppPeersManager","AppWebPagesManager","PeersSelectService","ErrorService",function(e,t,n,a,i,o,s,r,l,c){function d(e){var n=0>e?[-1,-2]:[1,2],a=_.indexOf(t.messageID);angular.forEach(n,function(e){var t=_[a+e];if(void 0!==t&&void 0===v[t]){v[t]=!0;var n=o.getMessage(t),s=n.media.photo.id;i.preloadPhoto(s)}})}function u(e){var n=_.indexOf(t.messageID);b?e&&(t.count=Math.max(e,_.length)):t.count=_.length,t.pos=t.count-n,t.nav.hasNext=n>0,t.nav.hasPrev=b||n<_.length-1,t.canForward=t.canDelete=t.messageID>0}function p(n){var a=_.indexOf(t.messageID),s=a>=0?a+n:0,r=++w,l=s>=_.length?m():e.when();l.then(function(){if(r==w){var e=_[s],a=o.getMessage(e),l=a&&a.media&&(a.media.photo&&a.media.photo.id||a.media.webpage&&a.media.webpage.photo&&a.media.webpage.photo.id);if(!l)return void console.error("Invalid photo message",s,_,e,a);t.messageID=e,t.photoID=l,t.photo=i.wrapForFull(t.photoID),v[t.messageID]=!0,u(),n>0&&b&&_.indexOf(e)+1>=_.length?m():d(n)}})}function m(){return k?k:k=o.getSearch(g,h,f,y).then(function(t){return t.history.length?(y=t.history[t.history.length-1],_=_.concat(t.history),b=_.length<t.count):b=!1,u(t.count),k=!1,t.history.length?e.reject():void d(1)})}if(t.photo=i.wrapForFull(t.photoID),t.nav={},t.download=function(){i.downloadPhoto(t.photoID)},t.messageID){t.forward=function(){var e=t.messageID;l.selectPeer({canSend:!0}).then(function(t){n.$broadcast("history_focus",{peerString:t,attachment:{_:"fwd_messages",id:[e]}})})},t.goToMessage=function(){var e=t.messageID,i=o.getMessagePeer(o.getMessage(e)),r=s.getPeerString(i);a.dismiss(),n.$broadcast("history_focus",{peerString:r,messageID:e})},t["delete"]=function(){var e=t.messageID;c.confirm({type:"MESSAGE_DELETE"}).then(function(){o.deleteMessages([e])})};var g=o.getMessagePeer(o.getMessage(t.messageID)),h=(s.getInputPeerByID(g),""),f={_:"inputMessagesFilterPhotos"},_=[t.messageID],v={},y=t.messageID,b=!0;if(v[t.messageID]=!0,u(),t.nav.next=function(){return t.nav.hasNext?void p(-1):!1},t.nav.prev=function(){return t.nav.hasPrev?void p(1):!1},t.$on("history_delete",function(e,n){if(n.peerID==g){if(n.msgs[t.messageID])if(t.nav.hasNext)t.nav.next();else{if(!t.nav.hasPrev)return a.dismiss();t.nav.prev()}for(var i=[],o=0;o<_.length;o++)n.msgs[_[o]]||i.push(_[o]);_=i}}),t.webpageID)return void(t.webpage=r.wrapForHistory(t.webpageID));o.getSearch(g,h,f,0,1e3).then(function(e){e.history.indexOf(t.messageID)>=0&&(_=e.history,y=_[_.length-1],u(),d(1)),m()},m);var w=0,k=!1}}]).controller("UserpicModalController",["$q","$scope","$rootScope","$modalInstance","MtpApiManager","AppPhotosManager","AppUsersManager","AppPeersManager","AppMessagesManager","ApiUpdatesManager","PeersSelectService","ErrorService",function(e,t,n,a,i,o,s,r,l,c,d,u){function p(n,a){var i=f.indexOf(t.photoID),s=i>=0?i+n:0,r=++w,l=s>=f.length?g():e.when();l.then(function(){if(r==w){t.photoID=f[s],t.photo=o.wrapForFull(t.photoID),t.photo.thumb={location:o.choosePhotoSize(t.photo,0,0).location};var e;a&&(f.splice(i,1),e=t.count-1),h(e),v[t.photoID]=!0,h(),n>0&&b&&f.indexOf(t.photoID)+1>=f.length?g():m(n)}})}function m(e){var n=0>e?[-1,-2]:[1,2],a=f.indexOf(t.photoID);angular.forEach(n,function(e){var t=f[a+e];void 0!==t&&void 0===v[t]&&(v[t]=!0,o.preloadPhoto(t))})}function g(){return k?k:k=o.getUserPhotos(t.userID,_).then(function(t){return t.photos.length?(_=t.photos[t.photos.length-1],f=f.concat(t.photos),b=f.length<t.count):b=!1,h(t.count),k=!1,t.photos.length?e.reject():void m(1)})}function h(e){var n=f.indexOf(t.photoID);b?e&&(t.count=Math.max(e,f.length)):t.count=f.length,t.pos=t.count-n,t.nav.hasNext=n>0,t.nav.hasPrev=b||n<f.length-1,t.canDelete=t.photo.user_id==y}t.photo=o.wrapForFull(t.photoID),t.photo.thumb={location:o.choosePhotoSize(t.photo,0,0).location},t.nav={},t.canForward=!0;var f=[t.photoID],_=t.photoID,v={},y=0,b=!0;h(),o.getUserPhotos(t.userID,0,1e3).then(function(e){e.photos.indexOf(t.photoID)>=0&&(f=e.photos,_=f[f.length-1]),b=f.length<e.count,h()}),i.getUserID().then(function(e){y=e,t.canDelete=t.photo.user_id==y});var w=0,k=!1;t.nav.next=function(){return t.nav.hasNext?void p(-1):!1},t.nav.prev=function(){return t.nav.hasPrev?void p(1):!1},t.forward=function(){d.selectPeer({confirm_type:"FORWARD_PEER",canSend:!0}).then(function(e){var a=r.getPeerID(e);l.sendOther(a,{_:"inputMediaPhoto",id:{_:"inputPhoto",id:t.photoID,access_hash:t.photo.access_hash}}),n.$broadcast("history_focus",{peerString:e})})},t["delete"]=function(){var e=t.photoID,n=s.getUser(y),o=function(){return t.nav.hasNext||t.nav.hasPrev?void p(t.nav.hasNext?-1:1,!0):a.dismiss()};u.confirm({type:"PHOTO_DELETE"}).then(function(){n&&n.photo&&n.photo.photo_id==e?i.invokeApi("photos.updateProfilePhoto",{id:{_:"inputPhotoEmpty"},crop:{_:"inputPhotoCropAuto"}}).then(function(e){c.processUpdateMessage({_:"updateShort",update:{_:"updateUserPhoto",user_id:y,date:tsNow(!0),photo:e,previous:!0}}),o()}):i.invokeApi("photos.deletePhotos",{id:[{_:"inputPhoto",id:e,access_hash:0}]}).then(o)})},t.download=function(){o.downloadPhoto(t.photoID)}}]).controller("ChatpicModalController",["$q","$scope","$rootScope","$modalInstance","MtpApiManager","AppPhotosManager","AppChatsManager","AppPeersManager","AppMessagesManager","ApiUpdatesManager","PeersSelectService","ErrorService",function(e,t,n,a,i,o,s,r,l,c,d,u){t.photo=o.wrapForFull(t.photoID),t.photo.thumb={location:o.choosePhotoSize(t.photo,0,0).location};var p=s.getChat(t.chatID),m=s.isChannel(t.chatID);t.canForward=!0,t.canDelete=m?p.pFlags.creator:!0,t.forward=function(){d.selectPeer({confirm_type:"FORWARD_PEER",canSend:!0}).then(function(e){var a=r.getPeerID(e);
l.sendOther(a,{_:"inputMediaPhoto",id:{_:"inputPhoto",id:t.photoID,access_hash:t.photo.access_hash}}),n.$broadcast("history_focus",{peerString:e})})},t["delete"]=function(){u.confirm({type:"PHOTO_DELETE"}).then(function(){t.photo.updating=!0;var e;e=s.isChannel(t.chatID)?i.invokeApi("channels.editPhoto",{channel:s.getChannelInput(t.chatID),photo:{_:"inputChatPhotoEmpty"}}):i.invokeApi("messages.editChatPhoto",{chat_id:s.getChatInput(t.chatID),photo:{_:"inputChatPhotoEmpty"}}),e.then(function(e){c.processUpdateMessage(e),a.dismiss(),n.$broadcast("history_focus",{peerString:s.getChatString(t.chatID)})})["finally"](function(){t.photo.updating=!1})})},t.download=function(){o.downloadPhoto(t.photoID)}}]).controller("VideoModalController",["$scope","$rootScope","$modalInstance","PeersSelectService","AppMessagesManager","AppDocsManager","AppPeersManager","ErrorService",function(e,t,n,a,i,o,s,r){e.video=o.wrapVideoForFull(e.docID),e.progress={enabled:!1},e.player={},e.forward=function(){var n=e.messageID;a.selectPeer({canSend:!0}).then(function(e){t.$broadcast("history_focus",{peerString:e,attachment:{_:"fwd_messages",id:[n]}})})},e["delete"]=function(){var t=e.messageID;r.confirm({type:"MESSAGE_DELETE"}).then(function(){i.deleteMessages([t])})},e.download=function(){o.saveDocFile(e.docID)},e.$on("history_delete",function(t,a){a.msgs[e.messageID]&&n.dismiss()})}]).controller("DocumentModalController",["$scope","$rootScope","$modalInstance","PeersSelectService","AppMessagesManager","AppDocsManager","AppPeersManager","ErrorService",function(e,t,n,a,i,o,s,r){e.document=o.wrapForHistory(e.docID),e.forward=function(){var n=e.messageID;a.selectPeer({canSend:!0}).then(function(e){t.$broadcast("history_focus",{peerString:e,attachment:{_:"fwd_messages",id:[n]}})})},e["delete"]=function(){var t=e.messageID;r.confirm({type:"MESSAGE_DELETE"}).then(function(){i.deleteMessages([t])})},e.download=function(){o.saveDocFile(e.docID)},e.$on("history_delete",function(t,a){a.msgs[e.messageID]&&n.dismiss()})}]).controller("EmbedModalController",["$q","$scope","$rootScope","$modalInstance","AppPhotosManager","AppMessagesManager","AppPeersManager","AppWebPagesManager","PeersSelectService","ErrorService",function(e,t,n,a,i,o,s,r,l,c){t.webpage=r.wrapForFull(t.webpageID),t.nav={},t.forward=function(){var e=t.messageID;l.selectPeer({canSend:!0}).then(function(t){n.$broadcast("history_focus",{peerString:t,attachment:{_:"fwd_messages",id:[e]}})})},t["delete"]=function(){var e=t.messageID;c.confirm({type:"MESSAGE_DELETE"}).then(function(){o.deleteMessages([e])})}}]).controller("UserModalController",["$scope","$location","$rootScope","AppProfileManager","$modal","AppUsersManager","MtpApiManager","NotificationsManager","AppPhotosManager","AppMessagesManager","AppPeersManager","PeersSelectService","ErrorService",function(e,t,n,a,i,o,s,r,l,c,d,u,p){var m=o.getUserString(e.userID);e.user=o.getUser(e.userID),e.blocked=!1,e.settings={notifications:!0},a.getProfile(e.userID,e.override).then(function(t){e.blocked=t.pFlags.blocked,e.bot_info=t.bot_info,e.rAbout=t.rAbout,r.getPeerMuted(e.userID).then(function(t){e.settings.notifications=!t,e.$watch("settings.notifications",function(t,n){return t===n?!1:void r.getPeerSettings(e.userID).then(function(n){n.mute_until=t?0:2e9,r.updatePeerSettings(e.userID,n)})})})}),e.goToHistory=function(){n.$broadcast("history_focus",{peerString:m})},e.flushHistory=function(){p.confirm({type:"HISTORY_FLUSH"}).then(function(){c.flushHistory(e.userID).then(function(){e.goToHistory()})})},e.importContact=function(t){var a=n.$new();a.importContact={phone:e.user.phone,first_name:e.user.first_name,last_name:e.user.last_name},i.open({templateUrl:templateUrl(t?"edit_contact_modal":"import_contact_modal"),controller:"ImportContactModalController",windowClass:"md_simple_modal_window mobile_modal",scope:a}).result.then(function(t){e.userID==t&&(e.user=o.getUser(e.userID))})},e.deleteContact=function(){o.deleteContacts([e.userID]).then(function(){e.user=o.getUser(e.userID)})},e.inviteToGroup=function(){u.selectPeer({confirm_type:"INVITE_TO_GROUP",noUsers:!0}).then(function(t){var a=d.getPeerID(t),i=0>a?-a:0;c.startBot(e.user.id,i).then(function(){n.$broadcast("history_focus",{peerString:t})})})},e.sendCommand=function(t){c.sendText(e.userID,"/"+t),n.$broadcast("history_focus",{peerString:m})},e.toggleBlock=function(t){s.invokeApi(t?"contacts.block":"contacts.unblock",{id:o.getUserInput(e.userID)}).then(function(){e.blocked=t})},e.shareContact=function(){u.selectPeer({confirm_type:"SHARE_CONTACT_PEER",canSend:!0}).then(function(t){var a=d.getPeerID(t);c.sendOther(a,{_:"inputMediaContact",phone_number:e.user.phone,first_name:e.user.first_name,last_name:e.user.last_name,user_id:e.user.id}),n.$broadcast("history_focus",{peerString:t})})}}]).controller("ChatModalController",["$scope","$timeout","$rootScope","$modal","AppUsersManager","AppChatsManager","AppProfileManager","AppPhotosManager","MtpApiManager","MtpApiFileManager","NotificationsManager","AppMessagesManager","AppPeersManager","ApiUpdatesManager","ContactsSelectService","ErrorService",function(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g,h){function f(t){m.processUpdateMessage(t),n.$broadcast("history_focus",{peerString:e.chatFull.peerString})}function _(t){t&&t.type&&0===t.type.indexOf("image")&&(e.photo.updating=!0,c.uploadFile(t).then(function(t){return l.invokeApi("messages.editChatPhoto",{chat_id:o.getChatInput(e.chatID),photo:{_:"inputChatUploadedPhoto",file:t,crop:{_:"inputPhotoCropAuto"}}}).then(f)})["finally"](function(){e.photo.updating=!1}))}e.chatFull=o.wrapForFull(e.chatID,{}),e.settings={notifications:!0},e.maxParticipants=200,s.getChatFull(e.chatID).then(function(t){e.chatFull=o.wrapForFull(e.chatID,t),e.$broadcast("ui_height"),e.canMigrate=e.chatFull&&e.chatFull.participants&&e.chatFull.participants.participants&&e.chatFull.participants.participants.length>=200,(Config.Modes.test||Config.Modes.debug)&&(e.canMigrate=!0),d.savePeerSettings(-e.chatID,t.notify_settings),d.getPeerMuted(-e.chatID).then(function(t){e.settings.notifications=!t,e.$watch("settings.notifications",function(t,n){return t===n?!1:void d.getPeerSettings(-e.chatID).then(function(n){n.mute_until=t?0:2e9,d.updatePeerSettings(-e.chatID,n)})})})}),e.leaveGroup=function(){l.invokeApi("messages.deleteChatUser",{chat_id:o.getChatInput(e.chatID),user_id:{_:"inputUserSelf"}}).then(f)},e.returnToGroup=function(){l.invokeApi("messages.addChatUser",{chat_id:o.getChatInput(e.chatID),user_id:{_:"inputUserSelf"}}).then(f)},e.inviteToGroup=function(){var t=[];angular.forEach(e.chatFull.participants.participants,function(e){t.push(e.user_id)}),g.selectContacts({disabled:t}).then(function(t){angular.forEach(t,function(t){l.invokeApi("messages.addChatUser",{chat_id:o.getChatInput(e.chatID),user_id:i.getUserInput(t),fwd_limit:100}).then(function(e){m.processUpdateMessage(e)})}),n.$broadcast("history_focus",{peerString:e.chatFull.peerString})})},e.migrateToSuperGroup=function(){h.confirm({type:"SUPERGROUP_MIGRATE"}).then(function(){l.invokeApi("messages.migrateChat",{chat_id:o.getChatInput(e.chatID)}).then(f)})},e.kickFromGroup=function(t){l.invokeApi("messages.deleteChatUser",{chat_id:o.getChatInput(e.chatID),user_id:i.getUserInput(t)}).then(f)},e.flushHistory=function(){h.confirm({type:"HISTORY_FLUSH"}).then(function(){u.flushHistory(-e.chatID).then(function(){n.$broadcast("history_focus",{peerString:e.chatFull.peerString})})})},e.inviteViaLink=function(){var t=n.$new();t.chatID=e.chatID,a.open({templateUrl:templateUrl("chat_invite_link_modal"),controller:"ChatInviteLinkModalController",scope:t,windowClass:"md_simple_modal_window"})},e.photo={},e.$watch("photo.file",_),e.deletePhoto=function(){e.photo.updating=!0,l.invokeApi("messages.editChatPhoto",{chat_id:o.getChatInput(e.chatID),photo:{_:"inputChatPhotoEmpty"}}).then(f)["finally"](function(){e.photo.updating=!1})},e.editTitle=function(){var t=n.$new();t.chatID=e.chatID,a.open({templateUrl:templateUrl("chat_edit_modal"),controller:"ChatEditModalController",scope:t,windowClass:"md_simple_modal_window mobile_modal"})},e.hasRights=function(t){return o.hasRights(e.chatID,t)}}]).controller("ChannelModalController",["$scope","$timeout","$rootScope","$modal","AppUsersManager","AppChatsManager","AppProfileManager","AppPhotosManager","MtpApiManager","MtpApiFileManager","NotificationsManager","AppMessagesManager","AppPeersManager","ApiUpdatesManager","ContactsSelectService","ErrorService",function(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g,h){function f(t){m.processUpdateMessage(t),n.$broadcast("history_focus",{peerString:e.chatFull.peerString})}function _(t){t&&t.type&&0===t.type.indexOf("image")&&(e.photo.updating=!0,c.uploadFile(t).then(function(t){return l.invokeApi("channels.editPhoto",{channel:o.getChannelInput(e.chatID),photo:{_:"inputChatUploadedPhoto",file:t,crop:{_:"inputPhotoCropAuto"}}}).then(f)})["finally"](function(){e.photo.updating=!1}))}e.chatFull=o.wrapForFull(e.chatID,{}),e.settings={notifications:!0},e.isMegagroup=o.isMegagroup(e.chatID),s.getChannelFull(e.chatID,!0).then(function(t){e.chatFull=o.wrapForFull(e.chatID,t),e.$broadcast("ui_height"),d.savePeerSettings(-e.chatID,t.notify_settings),d.getPeerMuted(-e.chatID).then(function(t){e.settings.notifications=!t,e.$watch("settings.notifications",function(t,n){return t===n?!1:void d.getPeerSettings(-e.chatID).then(function(n){n.mute_until=t?0:2e9,d.updatePeerSettings(-e.chatID,n)})})}),e.chatFull.chat&&e.chatFull.chat.pFlags.creator&&e.chatFull.exported_invite&&"chatInviteEmpty"==e.chatFull.exported_invite._&&s.getChatInviteLink(e.chatID,!0).then(function(t){e.chatFull.exported_invite={_:"chatInviteExported",link:t}})}),e.leaveChannel=function(){l.invokeApi("channels.leaveChannel",{channel:o.getChannelInput(e.chatID)}).then(f)},e.deleteChannel=function(){return h.confirm({type:e.isMegagroup?"MEGAGROUP_DELETE":"CHANNEL_DELETE"}).then(function(){l.invokeApi("channels.deleteChannel",{channel:o.getChannelInput(e.chatID)}).then(f)})},e.joinChannel=function(){l.invokeApi("channels.joinChannel",{channel:o.getChannelInput(e.chatID)}).then(f)},e.inviteToChannel=function(){var t=[];angular.forEach((e.chatFull.participants||{}).participants||[],function(e){t.push(e.user_id)}),g.selectContacts({disabled:t}).then(function(t){var n=[];angular.forEach(t,function(e){n.push(i.getUserInput(e))}),l.invokeApi("channels.inviteToChannel",{channel:o.getChannelInput(e.chatID),users:n}).then(f)})},e.kickFromChannel=function(t){l.invokeApi("channels.kickFromChannel",{channel:o.getChannelInput(e.chatID),user_id:i.getUserInput(t),kicked:!0}).then(f)},e.shareLink=function(t){var i=n.$new();return i.chatID=e.chatID,a.open({templateUrl:templateUrl("chat_invite_link_modal"),controller:"ChatInviteLinkModalController",scope:i,windowClass:"md_simple_modal_window"}),cancelEvent(t)},e.photo={},e.$watch("photo.file",_),e.deletePhoto=function(){e.photo.updating=!0,l.invokeApi("channels.editPhoto",{channel:o.getChannelInput(e.chatID),photo:{_:"inputChatPhotoEmpty"}}).then(f)["finally"](function(){e.photo.updating=!1})},e.editChannel=function(){var t=n.$new();t.chatID=e.chatID,a.open({templateUrl:templateUrl(e.isMegagroup?"megagroup_edit_modal":"channel_edit_modal"),controller:"ChannelEditModalController",scope:t,windowClass:"md_simple_modal_window mobile_modal"})},e.goToHistory=function(){n.$broadcast("history_focus",{peerString:e.chatFull.peerString})},e.hasRights=function(t){return o.hasRights(e.chatID,t)}}]).controller("SettingsModalController",["$rootScope","$scope","$timeout","$modal","AppUsersManager","AppChatsManager","AppPhotosManager","MtpApiManager","Storage","NotificationsManager","MtpApiFileManager","PasswordManager","ApiUpdatesManager","ChangelogNotifyService","LayoutSwitchService","AppRuntimeManager","ErrorService","_",function(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g,h,f){function _(){n.cancel(y),y=!1,u.getState().then(function(e){t.password=e,"account.noPassword"==e._&&e.email_unconfirmed_pattern&&!b&&(y=n(_,5e3))})}function v(e){e&&e.type&&0===e.type.indexOf("image")&&(t.photo.updating=!0,d.uploadFile(e).then(function(e){r.invokeApi("photos.uploadProfilePhoto",{file:e,caption:"",geo_point:{_:"inputGeoPointEmpty"},crop:{_:"inputPhotoCropAuto"}}).then(function(e){i.saveApiUsers(e.users),r.getUserID().then(function(n){s.savePhoto(e.photo,{user_id:n}),p.processUpdateMessage({_:"updateShort",update:{_:"updateUserPhoto",user_id:n,date:tsNow(!0),photo:i.getUser(n).photo,previous:!0}}),t.photo={}})})})["finally"](function(){delete t.photo.updating}))}t.profile={},t.photo={},t.version=Config.App.version,r.getUserID().then(function(e){t.profile=i.getUser(e)}),r.invokeApi("users.getFullUser",{id:{_:"inputUserSelf"}}).then(function(e){i.saveApiUser(e.user),s.savePhoto(e.profile_photo,{user_id:e.user.id})}),t.notify={volume:.5},t.send={},t.$watch("photo.file",v),t.password={_:"account.noPassword"},_();var y=!1,b=!1;t.changePassword=function(n){if(n=n||{},"cancel_email"==n.action)return f.confirm({type:"PASSWORD_ABORT_SETUP"}).then(function(){u.updateSettings(t.password,{email:""}).then(_)});var i=e.$new();i.password=t.password,angular.extend(i,n);var o=a.open({scope:i,templateUrl:templateUrl("password_update_modal"),controller:"PasswordUpdateModalController",windowClass:"md_simple_modal_window mobile_modal"});o.result["finally"](_)},t.showSessions=function(){a.open({templateUrl:templateUrl("sessions_list_modal"),controller:"SessionsListModalController",windowClass:"md_simple_modal_window mobile_modal"})},t.$on("$destroy",function(){n.cancel(y),b=!0}),t.deletePhoto=function(){t.photo.updating=!0,r.invokeApi("photos.updateProfilePhoto",{id:{_:"inputPhotoEmpty"},crop:{_:"inputPhotoCropAuto"}}).then(function(e){r.getUserID().then(function(n){p.processUpdateMessage({_:"updateShort",update:{_:"updateUserPhoto",user_id:n,date:tsNow(!0),photo:e,previous:!0}}),t.photo={}})})["finally"](function(){delete t.photo.updating})},t.editProfile=function(){a.open({templateUrl:templateUrl("profile_edit_modal"),controller:"ProfileEditModalController",windowClass:"md_simple_modal_window mobile_modal"})},t.changeUsername=function(){a.open({templateUrl:templateUrl("username_edit_modal"),controller:"UsernameEditModalController",windowClass:"md_simple_modal_window mobile_modal"})},t.terminateSessions=function(){f.confirm({type:"TERMINATE_SESSIONS"}).then(function(){r.invokeApi("auth.resetAuthorizations",{})})},l.get("notify_nodesktop","send_ctrlenter","notify_volume","notify_novibrate","notify_nopreview").then(function(a){t.notify.desktop=!a[0],t.send.enter=a[1]?"":"1",t.notify.volume=a[2]!==!1?a[2]>0&&a[2]<=1?a[2]:0:.5,t.notify.canVibrate=c.getVibrateSupport(),t.notify.vibrate=!a[3],t.notify.preview=!a[4],t.notify.volumeOf4=function(){return 1+Math.ceil((t.notify.volume-.1)/.33)},t.toggleSound=function(){t.notify.volume=t.notify.volume?0:.5};var i;t.$watch("notify.volume",function(t,a){t!==a&&(l.set({notify_volume:t}),e.$broadcast("settings_changed"),c.clear(),i&&n.cancel(i),i=n(function(){c.testSound(t)},500))}),t.toggleDesktop=function(){t.notify.desktop=!t.notify.desktop,t.notify.desktop?l.remove("notify_nodesktop"):l.set({notify_nodesktop:!0}),e.$broadcast("settings_changed")},t.togglePreview=function(){t.notify.preview=!t.notify.preview,t.notify.preview?l.remove("notify_nopreview"):l.set({notify_nopreview:!0}),e.$broadcast("settings_changed")},t.toggleVibrate=function(){t.notify.vibrate=!t.notify.vibrate,t.notify.vibrate?l.remove("notify_novibrate"):l.set({notify_novibrate:!0}),e.$broadcast("settings_changed")},t.toggleCtrlEnter=function(n){t.send.enter=n,t.send.enter?l.remove("send_ctrlenter"):l.set({send_ctrlenter:!0}),e.$broadcast("settings_changed")}}),t.openChangelog=function(){m.showChangelog(!1)},t.logOut=function(){f.confirm({type:"LOGOUT"}).then(function(){r.logOut().then(function(){location.hash="/login",h.reload()})})},t.switchBackToDesktop=Config.Mobile&&!Config.Navigator.mobile,t.switchToDesktop=function(){g.switchLayout(!1)}}]).controller("ChangelogModalController",["$scope","$modal",function(e,t){if(e.currentVersion=Config.App.version,!e.lastVersion){var n=e.currentVersion.split(".");e.lastVersion=n[0]+"."+n[1]+"."+Math.max(0,n[2]-1)}e.changelogHidden=!1,e.changelogShown=!1,e.canShowVersion=function(t){if(e.changelogShown)return!0;var n=versionCompare(t,e.lastVersion)>=0;return n||(e.changelogHidden=!0),n},e.showAllVersions=function(){e.changelogShown=!0,e.changelogHidden=!1,e.$emit("ui_height"),e.$broadcast("ui_height")},e.changeUsername=function(){t.open({templateUrl:templateUrl("username_edit_modal"),controller:"UsernameEditModalController",windowClass:"md_simple_modal_window mobile_modal"})}}]).controller("ProfileEditModalController",["$scope","$modalInstance","AppUsersManager","MtpApiManager",function(e,t,n,a){e.profile={},e.error={},a.getUserID().then(function(t){e.profile=n.getUser(t)}),e.updateProfile=function(){e.profile.updating=!0,a.invokeApi("account.updateProfile",{first_name:e.profile.first_name||"",last_name:e.profile.last_name||""}).then(function(a){e.error={},n.saveApiUser(a),t.close()},function(n){switch(n.type){case"FIRSTNAME_INVALID":e.error={field:"first_name"},n.handled=!0;break;case"LASTNAME_INVALID":e.error={field:"last_name"},n.handled=!0;break;case"NAME_NOT_MODIFIED":n.handled=!0,t.close()}})["finally"](function(){delete e.profile.updating})}}]).controller("UsernameEditModalController",["$scope","$modalInstance","AppUsersManager","MtpApiManager",function(e,t,n,a){e.profile={},e.error={},a.getUserID().then(function(t){e.profile=angular.copy(n.getUser(t))}),e.updateUsername=function(){e.profile.updating=!0,a.invokeApi("account.updateUsername",{username:e.profile.username||""}).then(function(a){e.checked={},n.saveApiUser(a),t.close()},function(e){"USERNAME_NOT_MODIFIED"==e.type&&(e.handled=!0,t.close())})["finally"](function(){delete e.profile.updating})},e.$watch("profile.username",function(t){return t&&t.length?void a.invokeApi("account.checkUsername",{username:t||""}).then(function(n){e.profile.username==t&&(e.checked=n?{success:!0}:{error:!0})},function(n){if(e.profile.username==t)switch(n.type){case"USERNAME_INVALID":e.checked={error:!0},n.handled=!0}}):void(e.checked={})})}]).controller("SessionsListModalController",["$scope","$q","$timeout","_","MtpApiManager","ErrorService","$modalInstance",function(e,t,n,a,i,o){function s(){n.cancel(r),i.invokeApi("account.getAuthorizations").then(function(t){e.sessionsLoaded=!0,e.authorizations=t.authorizations;for(var a,i=0,o=e.authorizations.length;o>i;i++)a=e.authorizations[i],a.current=1==(1&a.flags);e.authorizations.sort(function(e,t){return e.current?-1:t.current?1:t.date_active-e.date_active}),l||(r=n(s,5e3))})}e.slice={limit:20,limitDelta:20};var r=!1,l=!1;e.terminateSession=function(e){o.confirm({type:"TERMINATE_SESSION"}).then(function(){i.invokeApi("account.resetAuthorization",{hash:e}).then(s)})},e.terminateAllSessions=function(){o.confirm({type:"TERMINATE_SESSIONS"}).then(function(){i.invokeApi("auth.resetAuthorizations",{})})},s(),e.$on("apiUpdate",function(e,t){"updateNewAuthorization"==t._&&s()}),e.$on("$destroy",function(){n.cancel(r),l=!0})}]).controller("PasswordUpdateModalController",["$scope","$q","_","PasswordManager","MtpApiManager","ErrorService","$modalInstance",function(e,t,n,a,i,o,s){switch(e.passwordSettings={},e.updatePassword=function(){delete e.passwordSettings.error_field;var i;if("disable"==e.action)i=t.when();else{if(!e.passwordSettings.new_password)return e.passwordSettings.error_field="new_password",e.$broadcast("new_password_focus"),!1;if(e.passwordSettings.new_password!=e.passwordSettings.confirm_password)return e.passwordSettings.error_field="confirm_password",e.$broadcast("confirm_password_focus"),!1;i=e.passwordSettings.email?t.when():o.confirm({type:"RECOVERY_EMAIL_EMPTY"})}e.passwordSettings.loading=!0,i.then(function(){a.updateSettings(e.password,{cur_password:e.passwordSettings.cur_password||"",new_password:e.passwordSettings.new_password,email:e.passwordSettings.email,hint:e.passwordSettings.hint}).then(function(){delete e.passwordSettings.loading,s.close(!0),"disable"==e.action?o.alert(n("error_modal_password_disabled_title_raw"),n("error_modal_password_disabled_descripion_raw")):o.alert(n("error_modal_password_success_title_raw"),n("error_modal_password_success_descripion_raw"))},function(t){switch(t.type){case"PASSWORD_HASH_INVALID":case"NEW_PASSWORD_BAD":e.passwordSettings.error_field="cur_password",t.handled=!0,e.$broadcast("cur_password_focus");break;case"NEW_PASSWORD_BAD":e.passwordSettings.error_field="new_password",t.handled=!0;break;case"EMAIL_INVALID":e.passwordSettings.error_field="email",t.handled=!0;break;case"EMAIL_UNCONFIRMED":o.alert(n("error_modal_email_unconfirmed_title_raw"),n("error_modal_email_unconfirmed_descripion_raw")),s.close(!0),t.handled=!0}delete e.passwordSettings.loading})})},e.action){case"disable":e.passwordSettings.new_password="";break;case"create":onContentLoaded(function(){e.$broadcast("new_password_focus")})}e.$watch("passwordSettings.new_password",function(t){var n=t&&t.length||0;e.passwordSettings.hint=n?3>=n?"***":t.charAt(0)+new Array(n-1).join("*")+t.charAt(n-1):"",e.$broadcast("value_updated")})}]).controller("PasswordRecoveryModalController",["$scope","$q","_","PasswordManager","MtpApiManager","ErrorService","$modalInstance",function(e,t,n,a,i,o,s){e.checkCode=function(){e.recovery.updating=!0,a.recover(e.recovery.code,e.options).then(function(e){o.alert(n("error_modal_password_disabled_title_raw"),n("error_modal_password_disabled_descripion_raw")),s.close(e)},function(t){switch(delete e.recovery.updating,t.type){case"CODE_EMPTY":case"CODE_INVALID":e.recovery.error_field="code",t.handled=!0;break;case"PASSWORD_EMPTY":case"PASSWORD_RECOVERY_NA":case"PASSWORD_RECOVERY_EXPIRED":s.dismiss(),t.handled=!0}})}}]).controller("ContactsModalController",["$scope","$timeout","$modal","$modalInstance","MtpApiManager","AppUsersManager","ErrorService",function(e,t,n,a,i,o){function s(){e.selectedContacts={},e.selectedCount=0}function r(n){var a=++l,s=[];o.getContacts(n).then(function(t){a==l&&(e.contacts=[],e.slice.limit=20,angular.forEach(t,function(t){var n={userID:t,user:o.getUser(t)};s.push(t),e.contacts.push(n)}),e.contactsEmpty=n?!1:!e.contacts.length,e.$broadcast("contacts_change"))}),n&&n.length>=5&&t(function(){a==l&&i.invokeApi("contacts.search",{q:n,limit:10}).then(function(t){o.saveApiUsers(t.users),a==l&&angular.forEach(t.results,function(t){var n=t.user_id;-1==s.indexOf(n)&&e.contacts.push({userID:n,user:o.getUser(n),peerString:o.getUserString(n),found:!0})})},function(e){400==e.code&&(e.handled=!0)})},500)}e.contacts=[],e.foundPeers=[],e.search={},e.slice={limit:20,limitDelta:20};var l=0;if(s(),e.disabledContacts={},e.disabled)for(var c=0;c<e.disabled.length;c++)e.disabledContacts[e.disabled[c]]=!0;if(e.selected)for(var c=0;c<e.selected.length;c++)e.selectedContacts[e.selected[c]]||(e.selectedContacts[e.selected[c]]=!0,e.selectedCount++);e.$watch("search.query",r),e.$on("contacts_update",function(){r(e.search&&e.search.query||"")}),e.toggleEdit=function(t){e.action=t?"edit":"",e.multiSelect=t,s()},e.contactSelect=function(t){return e.disabledContacts[t]?!1:e.multiSelect?void(e.selectedContacts[t]?(delete e.selectedContacts[t],e.selectedCount--):(e.selectedContacts[t]=!0,e.selectedCount++)):a.close(t)},e.submitSelected=function(){if(e.selectedCount>0){var t=[];return angular.forEach(e.selectedContacts,function(e,n){t.push(n)}),a.close(t)}},e.deleteSelected=function(){if(e.selectedCount>0){var t=[];angular.forEach(e.selectedContacts,function(e,n){t.push(n)}),o.deleteContacts(t).then(function(){e.toggleEdit(!1)})}},e.importContact=function(){o.openImportContact()}}]).controller("PeerSelectController",["$scope","$modalInstance","$q","AppPeersManager","ErrorService",function(e,t,n,a,i){e.selectedPeers={},e.selectedPeerIDs=[],e.selectedCount=0,e.dialogSelect=function(o){if(!e.multiSelect){var s;if(e.confirm_type){var r=a.getPeerID(o),l=a.getPeer(r);s=i.confirm({type:e.confirm_type,peer_id:r,peer_data:l})}else s=n.when();return void s.then(function(){t.close(o)})}var r=a.getPeerID(o);if(e.selectedPeers[r]){delete e.selectedPeers[r],e.selectedCount--;var c=e.selectedPeerIDs.indexOf(r);c>=0&&e.selectedPeerIDs.splice(c,1)}else e.selectedPeers[r]=a.getPeer(r),e.selectedCount++,e.selectedPeerIDs.unshift(r)},e.submitSelected=function(){if(e.selectedCount>0){var n=[];return angular.forEach(e.selectedPeers,function(e,t){n.push(a.getPeerString(t))}),t.close(n)}},e.toggleSearch=function(){e.$broadcast("dialogs_search_toggle")}}]).controller("ChatCreateModalController",["$scope","$modalInstance","$rootScope","MtpApiManager","AppUsersManager","AppChatsManager","ApiUpdatesManager",function(e,t,n,a,i,o,s){e.group={name:""},e.createGroup=function(){if(e.group.name){e.group.creating=!0;var r=[];return angular.forEach(e.userIDs,function(e){r.push(i.getUserInput(e))}),a.invokeApi("messages.createChat",{title:e.group.name,users:r}).then(function(e){if(s.processUpdateMessage(e),e.updates&&e.updates.length){for(var a,i=0,r=e.updates.length;r>i;i++)if(a=e.updates[i],"updateNewMessage"==a._){n.$broadcast("history_focus",{peerString:o.getChatString(a.message.to_id.chat_id)});break}t.close()}})["finally"](function(){delete e.group.creating})}}}]).controller("ChatEditModalController",["$scope","$modalInstance","$rootScope","MtpApiManager","AppUsersManager","AppChatsManager","ApiUpdatesManager",function(e,t,n,a,i,o,s){var r=o.getChat(e.chatID);e.group={name:r.title},e.updateGroup=function(){if(e.group.name){if(e.group.name==r.title)return t.close();e.group.updating=!0;var i;return i=o.isChannel(e.chatID)?a.invokeApi("channels.editTitle",{channel:o.getChannelInput(e.chatID),title:e.group.name}):a.invokeApi("messages.editChatTitle",{chat_id:o.getChatInput(e.chatID),title:e.group.name}),i.then(function(t){s.processUpdateMessage(t);var a=o.getChatString(e.chatID);n.$broadcast("history_focus",{peerString:a})})["finally"](function(){delete e.group.updating})}}}]).controller("ChannelEditModalController",["$q","$scope","$modalInstance","$rootScope","MtpApiManager","AppUsersManager","AppChatsManager","AppProfileManager","ApiUpdatesManager",function(e,t,n,a,i,o,s,r,l){function c(){return i.invokeApi("channels.editTitle",{channel:s.getChannelInput(t.chatID),title:t.channel.title}).then(function(e){l.processUpdateMessage(e)})}function d(){return i.invokeApi("channels.editAbout",{channel:s.getChannelInput(t.chatID),about:t.channel.about})}var u=s.getChat(t.chatID),p={title:u.title};t.channel={title:u.title},r.getChannelFull(t.chatID).then(function(e){p.about=e.about,t.channel.about=e.about}),t.updateChannel=function(){if(t.channel.title.length){var n=[];return t.channel.title!=p.title&&n.push(c()),t.channel.about!=p.about&&n.push(d()),t.channel.updating=!0,e.all(n).then(function(){var e=s.getChatString(t.chatID);a.$broadcast("history_focus",{peerString:e})})["finally"](function(){delete t.channel.updating})}}}]).controller("ChatInviteLinkModalController",["_","$scope","$timeout","$modalInstance","AppChatsManager","AppProfileManager","ErrorService",function(e,t,n,a,i,o,s){function r(){n(function(){t.$broadcast("ui_invite_select")},100)}function l(e){var n=i.getChat(t.chatID);return n.username?(t.exportedInvite={link:"https://telegram.me/"+n.username,"short":!0},void r()):(e&&(t.exportedInvite.revoking=!0),void o.getChatInviteLink(t.chatID,e).then(function(e){t.exportedInvite={link:e,canRevoke:!0},r()})["finally"](function(){delete t.exportedInvite.revoking}))}t.exportedInvite={link:e("group_invite_link_loading_raw")};var c=i.isChannel(t.chatID),d=i.isMegagroup(t.chatID);t.revokeLink=function(){s.confirm({type:c&&!d?"REVOKE_CHANNEL_INVITE_LINK":"REVOKE_GROUP_INVITE_LINK"}).then(function(){l(!0)})},l()}]).controller("ImportContactModalController",["$scope","$modalInstance","$rootScope","AppUsersManager","ErrorService","PhonebookContactsService",function(e,t,n,a,i,o){void 0===e.importContact&&(e.importContact={}),e.phonebookAvailable=o.isAvailable(),e.doImport=function(){e.importContact&&e.importContact.phone&&(e.progress={enabled:!0},a.importContact(e.importContact.phone,e.importContact.first_name||"",e.importContact.last_name||"").then(function(e){e||i.show({error:{code:404,type:"USER_NOT_USING_TELEGRAM"}}),t.close(e)})["finally"](function(){delete e.progress.enabled}))},e.importPhonebook=function(){o.openPhonebookImport().result.then(function(e){e?t.close(e[0]):t.dismiss()})}}]).controller("CountrySelectModalController",["$scope","$modalInstance","$rootScope","_",function(e,t,n,a){e.search={},e.slice={limit:20,limitDelta:20};for(var i=SearchIndexManager.createIndex(),o=0;o<Config.CountryCodes.length;o++){var s=Config.CountryCodes[o][0];s+=" "+a(Config.CountryCodes[o][1]+"_raw"),s+=" "+Config.CountryCodes[o].slice(2).join(" "),SearchIndexManager.indexObject(o,s,i)}e.$watch("search.query",function(t){var n=!1,o={};angular.isString(t)&&t.length&&(n=!0,o=SearchIndexManager.search(t,i)),e.countries=[],e.slice.limit=20;for(var s,r=0;r<Config.CountryCodes.length;r++)if(!n||o[r])for(s=2;s<Config.CountryCodes[r].length;s++)e.countries.push({name:a(Config.CountryCodes[r][1]+"_raw"),code:Config.CountryCodes[r][s]});String.prototype.localeCompare&&e.countries.sort(function(e,t){return e.name.localeCompare(t.name)})})}]).controller("PhonebookModalController",["$scope","$modalInstance","$rootScope","AppUsersManager","PhonebookContactsService","ErrorService",function(e,t,n,a,i,o){function s(){var t=!1,n={};if(angular.isString(e.search.query)&&e.search.query.length){t=!0,n=SearchIndexManager.search(e.search.query,r),e.contacts=[],delete e.contactsEmpty;for(var a=0;a<e.phonebook.length;a++)(!t||n[a])&&e.contacts.push(e.phonebook[a])}else e.contacts=e.phonebook,e.contactsEmpty=!e.contacts.length;e.slice.limit=20}e.search={},e.phonebook=[],e.selectedContacts={},e.selectedCount=0,e.slice={limit:20,limitDelta:20},e.progress={enabled:!1},e.multiSelect=!0;var r=SearchIndexManager.createIndex(),l=!1;i.getPhonebookContacts().then(function(t){for(var n=0;n<t.length;n++)SearchIndexManager.indexObject(n,t[n].first_name+" "+t[n].last_name+" "+t[n].phones.join(" "),r);e.phonebook=t,e.toggleSelection(!0),l=!0,s()},function(e){o.show({error:{code:403,type:"PHONEBOOK_GET_CONTACTS_FAILED",originalError:e}})}),e.$watch("search.query",function(){l&&s()}),e.contactSelect=function(n){return e.multiSelect?void(e.selectedContacts[n]?(delete e.selectedContacts[n],e.selectedCount--):(e.selectedContacts[n]=!0,e.selectedCount++)):t.close(e.phonebook[n])},e.toggleSelection=function(t){if(!e.selectedCount||t){e.selectedCount=e.phonebook.length;for(var n=0;n<e.phonebook.length;n++)e.selectedContacts[n]=!0}else e.selectedCount=0,e.selectedContacts={}},e.submitSelected=function(){e.selectedCount<=0&&t.dismiss();var n=[];angular.forEach(e.selectedContacts,function(t,a){n.push(e.phonebook[a])}),o.confirm({type:"CONTACTS_IMPORT_PERFORM"}).then(function(){e.progress.enabled=!0,a.importContacts(n).then(function(e){e.length||o.show({error:{code:404,type:"USERS_NOT_USING_TELEGRAM"}}),t.close(e)})["finally"](function(){e.progress.enabled=!1})})}}]).controller("StickersetModalController",["$scope","$rootScope","$modalInstance","MtpApiManager","RichTextProcessor","AppStickersManager","AppDocsManager","AppMessagesManager","LocationParamsService",function(e,t,n,a,i,o,s,r,l){e.slice={limit:20,limitDelta:20};var c;o.getStickerset(e.inputStickerset).then(function(t){e.$broadcast("ui_height"),e.stickersetLoaded=!0,c=t,e.stickerset=t.set,e.stickersetInstalled=1==t.set.pFlags.installed,e.documents=t.documents,e.stickerEmojis={},e.stickerDimensions={},angular.forEach(e.documents,function(t){e.stickerEmojis[t.id]=i.wrapRichText(t.stickerEmojiRaw,{noLinks:!0,noLinebreaks:!0,emojiIconSize:26});var n=calcImageInBox(t.w,t.h,192,192);e.stickerDimensions[t.id]={width:n.w,height:n.h}})}),e.toggleInstalled=function(t){o.installStickerset(c,!t).then(function(){e.stickersetInstalled=t})},e.chooseSticker=function(e){var a=s.getDoc(e);
if(a.id&&a.access_hash&&t.selectedPeerID){var i={_:"inputMediaDocument",id:{_:"inputDocument",id:a.id,access_hash:a.access_hash}};r.sendOther(t.selectedPeerID,i),n.close(a.id)}},e.share=function(){l.shareUrl("https://telegram.me/addstickers/"+e.stickerset.short_name,e.stickerset.title)}}]),angular.module("myApp.filters",["myApp.i18n"]).filter("userName",["_",function(e){return function(t){return t&&(t.first_name||t.last_name)?t.first_name+(t.last_name?" "+t.last_name:""):e("user_name_deleted")}}]).filter("userFirstName",["_",function(e){return function(t){return t&&(t.first_name||t.last_name)?t.first_name||t.last_name:e("user_first_name_deleted")}}]).filter("userStatus",["$filter","_",function(e,t){var n=e("relativeTime");return function(e,a){var i=e&&e.status&&e.status._;switch(i||(i=e&&e.pFlags&&e.pFlags.bot?"userStatusBot":"userStatusEmpty"),i){case"userStatusOnline":return t("user_status_online");case"userStatusOffline":return t("user_status_last_seen",n(e.status.was_online));case"userStatusRecently":return t("user_status_recently");case"userStatusLastWeek":return t("user_status_last_week");case"userStatusLastMonth":return t("user_status_last_month");case"userStatusBot":return t(a?e.pFlags.bot_chat_history?"user_status_bot_noprivacy":"user_status_bot_privacy":"user_status_bot");case"userStatusEmpty":default:return t("user_status_long_ago")}}}]).filter("chatTitle",["_",function(e){return function(t){return t&&t.title?t.title:e("chat_title_deleted")}}]).filter("dateOrTime",["$filter",function(e){var t=e("date");return function(e,n){if(!e)return"";var a=1e3*e,i=Math.abs(tsNow()-a),o="shortTime";return i>5184e5?o=n?"mediumDate":"shortDate":i>432e5&&(o=n?"EEEE":"EEE"),t(a,o)}}]).filter("time",["$filter",function(e){var t={},n=e("date"),a=Config.Mobile?"shortTime":"mediumTime";return function(e){return t[e]?t[e]:t[e]=n(1e3*e,a)}}]).filter("myDate",["$filter",function(e){var t={},n=e("date");return function(e){return t[e]?t[e]:t[e]=n(1e3*e,"fullDate")}}]).filter("duration",[function(){return function(e){e=parseInt(e),isNaN(e)&&(e=0);var t=e%60,n=Math.floor((e-t)/60);return 10>t&&(t="0"+t),n+":"+t}}]).filter("durationRemains",["$filter",function(e){var t=e("duration");return function(e,n){return"-"+t(n-e)}}]).filter("phoneNumber",[function(){return function(e){var t=" ";return e=(e||"").replace(/\D/g,""),"7"==e.charAt(0)&&11==e.length?"+"+e.charAt(0)+t+"("+e.substr(1,3)+")"+t+e.substr(4,3)+"-"+e.substr(7,2)+"-"+e.substr(9,2):"+"+e}}]).filter("formatSize",[function(){return function(e,t){if(!e)return"0";if(1024>e)return e+" b";if(1048576>e)return Math.round(e/1024)+" KB";var n=e/1048576;return n=t?n.toFixed(1):Math.round(10*n)/10,n+" MB"}}]).filter("formatSizeProgress",["$filter","_",function(e,t){var n=e("formatSize");return function(e){if(!e.total)return"";var a=n(e.done,!0),i=a.split(" "),o=n(e.total),s=o.split(" ");return s[1]===i[1]?t("format_size_progress_mulitple",{done:i[0],total:s[0],parts:i[1]||""}):t("format_size_progress",{done:a,total:o})}}]).filter("formatShortNumber",[function(){return function(e){if(!e)return"0";if(1e3>e)return e.toString();if(9e5>e){var t=e>1e4?1:10;return Math.round(e/1e3*t)/t+"K"}var t=e>1e7?1:10;return Math.round(e/1e6*t)/t+"M"}}]).filter("nl2br",[function(){return function(e){return e.replace(/\n/g,"<br/>")}}]).filter("richText",["$filter",function(e){var t=e("linky");return function(e){return t(e,"_blank").replace(/\n|&#10;/g,"<br/>")}}]).filter("relativeTime",["$filter","_",function(e,t){var n=t.pluralize("relative_time_pluralize_minutes_ago"),a=t.pluralize("relative_time_pluralize_hours_ago"),i=e("dateOrTime");return function(e){var o=Math.abs(tsNow(!0)-e);if(60>o)return t("relative_time_just_now");if(3600>o){var s=Math.floor(o/60);return n(s)}if(86400>o){var r=Math.floor(o/3600);return a(r)}return i(e,!0)}}]),angular.module("myApp.services").service("AppMessagesManager",["$q","$rootScope","$location","$filter","$timeout","$sce","ApiUpdatesManager","AppUsersManager","AppChatsManager","AppPeersManager","AppPhotosManager","AppDocsManager","AppStickersManager","AppWebPagesManager","MtpApiManager","MtpApiFileManager","RichTextProcessor","NotificationsManager","Storage","AppProfileManager","TelegramMeWebService","ErrorService","StatusManager","_",function(e,t,n,a,i,o,s,r,l,c,d,u,p,m,g,h,f,_,v,y,b,w,k,$){function C(t,n,a){var i=Ct,o=angular.isString(t)&&t.length;if(o){if(!a||Tt.query!==t){Tt.query=t;var s=SearchIndexManager.search(t,Et);Tt.dialogs=[],angular.forEach(Ct.dialogs,function(e){s[e.peerID]&&Tt.dialogs.push(e)}),Tt.count=Tt.dialogs.length}i=Tt}else Tt.query=!1;var r=0;if(n>0)for(r=0;r<i.dialogs.length&&!(n>i.dialogs[r].index);r++);return a=a||20,o||Wt||i.dialogs.length>=r+a?e.when({dialogs:i.dialogs.slice(r,r+a)}):x(a).then(function(){if(r=0,n>0)for(r=0;r<i.dialogs.length&&!(n>i.dialogs[r].index);r++);return{dialogs:i.dialogs.slice(r,r+a)}})}function S(e){for(var t=0;t<Ct.dialogs.length;t++)if(Ct.dialogs[t].peerID==e)return[Ct.dialogs[t],t];return[]}function M(e,t){var n=-e,a=c.getPeerSearchText(n);SearchIndexManager.indexObject(n,a,Et);var i=l.isMegagroup(e),o=T(t.top_message,e),r=H(o),d=r.date;i||(o=T(t.top_important_message,e),r=H(o),t.unread_count=t.unread_important_count),t.top_message=o,t.read_inbox_max_id=T(t.read_inbox_max_id,e);var u=r.date,p=l.getChat(e);if((!u||p.date&&p.date>u)&&(u=p.date),t.index=I(u),t.peerID=n,A(t,d),r.mid&&r.mid>t.read_inbox_max_id&&(r.pFlags.unread=!0),void 0===$t[n]){var m={count:null,history:[o],pending:[]};$t[n]=m}_.savePeerSettings(n,t.notify_settings),t.pts&&s.addChannelState(e,t.pts)}function x(e){var n=Ct.dialogs,a=0,i=0,o=0;return Gt&&(a=Gt+Bt),g.invokeApi("messages.getDialogs",{offset_date:a,offset_id:P(i),offset_peer:c.getInputPeerByID(o),limit:e},{timeout:300}).then(function(e){a||b.setAuthorized(!0),r.saveApiUsers(e.users),l.saveApiChats(e.chats),Y(e.messages);var i=a?!0:!1;angular.forEach(e.dialogs,function(e){var n=c.getPeerID(e.peer);if("dialogChannel"==e._){var a=-n;M(a,e),s.addChannelState(a,e.pts)}else{if(0>n){var o=l.getChat(-n);if(o&&o.migrated_to&&o.pFlags.deactivated){var r=c.getPeerID(o.migrated_to);return Yt[n]=r,void(Zt[r]=n)}}var d=c.getPeerSearchText(n);SearchIndexManager.indexObject(n,d,Et);var u=H(e.top_message);if(e.index=I(u.date),e.peerID=n,A(e,u.date),i||(mt(e.top_message),i=!0),void 0===$t[n]){var p={count:null,history:[e.top_message],pending:[]};$t[n]=p,j(p,u)&&t.$broadcast("history_reply_markup",{peerID:n})}if(_.savePeerSettings(n,e.notify_settings),e.unread_count>0&&Ht&&e.top_message>Ht){var m=16&u.flags?u.from_id:n;!u.pFlags.unread||u.pFlags.out||u.pFlags.silent||_.getPeerMuted(m).then(function(e){e||gt(u)})}}}),(!e.dialogs.length||!e.count||n.length>=e.count)&&(Wt=!0)})}function I(e){return void 0===e&&(e=tsNow(!0)+Bt),65536*e+(65535&++Kt)}function A(e,t){t&&(!Gt||Gt>t)&&(Gt=t);var n=Ct.dialogs,a=S(e.peerID)[1];void 0!==a&&n.splice(a,1);var i,o=e.index,s=n.length;if(!s||o<n[s-1].index)n.push(e);else if(o>=n[0].index)n.unshift(e);else for(i=0;s>i;i++)if(o>n[i].index){n.splice(i,0,e);break}}function E(t,n,a,i){var o,d=c.isChannel(t),u=d&&c.isMegagroup(t);return o=d&&!u?g.invokeApi("channels.getImportantHistory",{channel:l.getChannelInput(-t),offset_id:n?P(n):0,add_offset:i||0,limit:a||0},{timeout:300,noErrorBox:!0}):g.invokeApi("messages.getHistory",{peer:c.getInputPeerByID(t),offset_id:n?P(n):0,add_offset:i||0,limit:a||0},{timeout:300,noErrorBox:!0}),o.then(function(e){return r.saveApiUsers(e.users),l.saveApiChats(e.chats),Y(e.messages),d&&s.addChannelState(-t,e.pts),0>t||!r.isBot(t)||e.messages.length==a&&a<e.count?e:y.getProfile(t).then(function(n){var a=n.bot_info&&n.bot_info.description;if(a){var i=At--,o={_:"messageService",id:i,from_id:t,to_id:c.getOutputPeer(t),flags:0,pFlags:{},date:tsNow(!0)+Bt,action:{_:"messageActionBotIntro",description:a}};Y([o]),e.messages.push(o),e.count&&e.count++}return e})},function(n){switch(n.type){case"CHANNEL_PRIVATE":var a=l.getChat(-t);a={_:"channelForbidden",access_hash:a.access_hash,title:a.title},s.processUpdateMessage({_:"updates",updates:[{_:"updateChannel",channel_id:-t}],chats:[a],users:[]})}return e.reject(n)})}function T(e,t){if(!t||0>=e)return e;e=P(e);var n=Xt[t];return n||(n=++Qt*en,Jt[n]=t,Xt[t]=n),n+e}function D(e){if(en>e)return[e,0];var t=e%en,n=Jt[e-t];return[t,n]}function P(e){return e?e%en:0}function F(e){var t,n,a,i,o={},s={};for(t=0;t<e.length;t++)n=e[t],a=D(n),i=a[1],void 0===o[i]&&(o[i]=[],s[i]=[]),o[i].push(a[0]),s[i].push(n);return{msgIDs:o,mids:s}}function R(e,n,a,i){var o=Yt[e]&&!n?1:0;return E(e,n,a,o).then(function(o){i.count=o.count||o.messages.length;var s=0;if(!n&&o.messages.length&&(n=o.messages[0].mid+1),n>0)for(s=0;s<i.history.length&&!(n>i.history[s]);s++);var r=i.history.length;i.history.splice(s,i.history.length-s),angular.forEach(o.messages,function(n){j(i,n)&&t.$broadcast("history_reply_markup",{peerID:e}),i.history.push(n.mid)});var l=i.history.length;a-=l-r;var c=Yt[e],d=Zt[e],u=void 0!==c||void 0!==d;if(u&&(i.count=Math.max(i.count,l)+1),a>0){if(n=i.history[l-1],u){if(!o.messages.length){if(!d)return i.count=l,!0;n=0,e=d}return R(e,n,a,i)}if(l<i.count)return R(e,n,a,i)}return!0})}function N(t,n){var a=n.unreadOffset;if(a){var i,o;for(i=n.history.length-1;i>=0;i--)if(o=bt[n.history[i]],o&&!o.pFlags.out&&o.pFlags.unread){n.unreadOffset=i+1;break}}return e.when(n)}function U(e,n){if(!Yt[e]&&!Zt[n]&&l.hasChat(-n)){var a=l.getChat(-e);a&&a.migrated_to&&a.migrated_to.channel_id==-n&&(Yt[e]=n,Zt[n]=e,i(function(){var a=S(e);a.length&&(Ct.dialogs.splice(a[1],1),t.$broadcast("dialog_drop",{peerID:e})),t.$broadcast("dialog_migrate",{migrateFrom:e,migrateTo:n})},100))}}function O(e){return Yt[e]?Yt[e]:void 0}function B(e,t,n,a,i){Yt[e]&&(e=Yt[e]);var o=$t[e],s=0,r=!1,l=!1,c=!1;i=i?Math.min(50,i):0,void 0===o&&(o=$t[e]={count:null,history:[],pending:[]});var d=!1,u=e;if(Zt[e]&&(d=!0,t&&en>t&&(u=Zt[e])),!n&&!t){var p=S(e)[0];if(p&&p.unread_count>1){var m=p.unread_count;(c=m>50)?p.read_inbox_max_id?(t=p.read_inbox_max_id,a=16,l=16,n=4):(n=20,l=16,s=m-l):(n=Math.max(10,i,m+2),l=m)}else Config.Mobile&&(n=20)}if(t>0)for(r=!0,s=0;s<o.history.length;s++)if(t>o.history[s]){r=!1;break}if(!r&&(null!==o.count&&o.history.length==o.count||o.history.length>=s+(n||1))){a?(a=Math.min(s,a),s=Math.max(0,s-a),n+=a):n=n||(s?20:i||5);var g=o.history.slice(s,s+n);return!t&&o.pending.length&&(g=o.pending.slice().concat(g)),N(e,{count:o.count,history:g,unreadOffset:l,unreadSkip:c})}return a||n||(n=i||20),r&&(s=0),a||c||t&&-1==o.history.indexOf(t)?(a&&(s=-a,n+=a),E(u,t,n,s).then(function(n){o.count=n.count||n.messages.length,d&&o.count++;var a=[];return angular.forEach(n.messages,function(e){a.push(e.mid)}),!t&&o.pending.length&&(a=o.pending.slice().concat(a)),N(e,{count:o.count,history:a,unreadOffset:l,unreadSkip:c})})):R(e,t,n,o).then(function(){if(s=0,t>0)for(s=0;s<o.history.length&&!(t>o.history[s]);s++);var a=o.history.slice(s,s+n);return!t&&o.pending.length&&(a=o.pending.slice().concat(a)),N(e,{count:o.count,history:a,unreadOffset:l,unreadSkip:c})})}function L(e){return($t[e]||{}).reply_markup||!1}function j(e,t){if(!t.reply_markup&&!t.pFlags.out&&!t.action)return!1;if(t.reply_markup&&"replyInlineMarkup"==t.reply_markup._)return!1;var n=t.reply_markup,a=e.reply_markup;if(n)return a&&a.mid>=t.mid?!1:!n.pFlags.selective||16&t.flags?(e.maxOutID&&t.mid<e.maxOutID&&n.pFlags.single_use&&(n.pFlags.hidden=!0),n=angular.extend({mid:t.mid},n),"replyKeyboardHide"!=n._&&(n.fromID=t.from_id),e.reply_markup=n,!0):!1;if(t.pFlags.out)if(a){if(a.pFlags.single_use&&!a.pFlags.hidden&&(t.mid>a.mid||t.mid<0)&&t.message)return a.pFlags.hidden=!0,!0}else(!e.maxOutID||t.mid>e.maxOutID)&&(e.maxOutID=t.mid);return t.action&&"messageActionChatDeleteUser"==t.action._&&(a?t.action.user_id==a.fromID:r.isBot(t.action.user_id))?(e.reply_markup={_:"replyKeyboardHide",mid:t.mid,flags:0,pFlags:{}},!0):!1}function q(t,n,a,i,o){var s=[],d=!n,u={peer:t,filter:a},p=d&&angular.equals(Dt,u);if(d&&!p&&(Dt=u,Pt=[]),t&&!i&&!n){var m=$t[t];if(void 0!==m&&m.history.length){var h,f,_,v={},y=o||20;switch(a._){case"inputMessagesFilterPhotos":v.messageMediaPhoto=!0;break;case"inputMessagesFilterPhotoVideo":v.messageMediaPhoto=!0,v.messageMediaDocument=!0,h="video";break;case"inputMessagesFilterVideo":v.messageMediaDocument=!0,h="video";break;case"inputMessagesFilterDocument":v.messageMediaDocument=!0,h=!1;break;case"inputMessagesFilterVoice":v.messageMediaDocument=!0,h="voice"}for(f=0;f<m.history.length;f++)if(_=bt[m.history[f]],_.media&&v[_.media._]){if(void 0!==h&&"messageMediaDocument"==_.media._&&_.media.document.type!=h)continue;if(s.push(_.mid),s.length>=y)break}}if(s.length<y&&Pt.length&&p)for(var b=s.length?s[s.length-1]:4294967295,f=0;f<Pt.length&&!(Pt[f]<b&&(s.push(Pt[f]),s.length>=y));f++);}if(s.length||1e3==o)return d&&(Pt=listMergeSorted(Pt,s)),e.when({count:null,history:s});var w;if(t||!n){var k=0;c.isChannel(t)&&!c.isMegagroup(t)&&(k|=1),w=g.invokeApi("messages.search",{flags:k,peer:c.getInputPeerByID(t),q:n||"",filter:a||{_:"inputMessagesFilterEmpty"},min_date:0,max_date:0,limit:o||20,max_id:i||0},{timeout:300,noErrorBox:!0})}else{var $=0,C=0,S=0,M=i&&H(i);M&&M.date&&($=M.date+Bt,S=M.id,C=it(M)),w=g.invokeApi("messages.searchGlobal",{q:n,offset_date:$,offset_peer:c.getInputPeerByID(C),offset_id:P(S),limit:o||20},{timeout:300,noErrorBox:!0})}return w.then(function(e){r.saveApiUsers(e.users),l.saveApiChats(e.chats),Y(e.messages);var t=e.count||e.messages.length;return s=[],angular.forEach(e.messages,function(e){var t=it(e);if(0>t){var n=l.getChat(-t);n.migrated_to&&U(t,-n.migrated_to.channel_id)}s.push(e.mid)}),d&&(Pt=listMergeSorted(Pt,s)),{count:t,history:s}},function(t){return 400==t.code&&(t.handled=!0),e.reject(t)})}function H(e){return bt[e]||{deleted:!0}}function V(t){var n=F(t),a=[];return angular.forEach(n.msgIDs,function(e,t){var i;if(t>0){var o=l.getChat(t);if(!(o.pFlags.creator||o.pFlags.editor&&o.pFlags.megagroup)){var r=[];if((o.pFlags.editor||o.pFlags.megagroup)&&angular.forEach(e,function(e,a){var i=H(n.mids[t][a]);i.pFlags.out&&r.push(e)}),!r.length)return;e=r}i=g.invokeApi("channels.deleteMessages",{channel:l.getChannelInput(t),id:e}).then(function(n){s.processUpdateMessage({_:"updateShort",update:{_:"updateDeleteChannelMessages",channel_id:t,messages:e,pts:n.pts,pts_count:n.pts_count}})})}else i=g.invokeApi("messages.deleteMessages",{id:e}).then(function(t){s.processUpdateMessage({_:"updateShort",update:{_:"updateDeleteMessages",messages:e,pts:t.pts,pts_count:t.pts_count}})});a.push(i)}),e.all(a)}function z(e){var n=c.isChannel(e),a=$t[e],i=S(e)[0];if(!i||!i.unread_count){if(!a||!a.history.length)return!1;var o,r,d=!1;for(p=a.history.length;p>=0;p--)if(o=a.history[p],r=bt[o],r&&!r.pFlags.out&&r.pFlags.unread){d=!0;break}if(!d)return!1}if(a.readPromise)return a.readPromise;var u;if(u=n?g.invokeApi("channels.readHistory",{channel:l.getChannelInput(-e),max_id:0}):g.invokeApi("messages.readHistory",{peer:c.getInputPeerByID(e),max_id:0}).then(function(e){s.processUpdateMessage({_:"updateShort",update:{_:"updatePts",pts:e.pts,pts_count:e.pts_count}})}),a.readPromise=u.then(function(){i&&(i.unread_count=0,t.$broadcast("dialog_unread",{peerID:e,count:0}),t.$broadcast("messages_read"),a&&a.history.length&&(i.read_inbox_max_id=a.history[0]))})["finally"](function(){delete a.readPromise}),a&&a.history.length){var o,r,p,e,i;for(p=0;p<a.history.length;p++)o=a.history[p],r=bt[o],r&&!r.pFlags.out&&(r.pFlags.unread=!1,wt[o]&&(wt[o].pFlags.unread=!1),kt[o]&&(kt[o].pFlags.unread=!1),_.cancel("msg"+o))}return _.soundReset(c.getPeerString(e)),a.readPromise}function W(e){g.invokeApi("messages.readMessageContents",{id:e}).then(function(t){s.processUpdateMessage({_:"updateShort",update:{_:"updateReadMessagesContents",messages:e,pts:t.pts,pts_count:t.pts_count}})})}function G(e){return g.invokeApi("messages.deleteHistory",{peer:e,max_id:0}).then(function(t){return s.processUpdateMessage({_:"updateShort",update:{_:"updatePts",pts:t.pts,pts_count:t.pts_count}}),t.offset?G(e):!0})}function K(e){return G(c.getInputPeerByID(e)).then(function(){var n=S(e);n[0]&&Ct.dialogs.splice(n[1],1),delete $t[e],t.$broadcast("dialog_flush",{peerID:e})})}function Y(e,t){angular.forEach(e,function(e){if(void 0===e.pFlags&&(e.pFlags={}),e.pFlags.out||(e.pFlags.out=!1),e.pFlags.unread||(e.pFlags.unread=!1),"messageEmpty"!=e._){var n=c.getPeerID(e.to_id),a="peerChannel"==e.to_id._,i=a?-n:0,o=a&&!l.isMegagroup(i),s=T(e.id,i);if(e.mid=s,i&&!e.pFlags.out){var r=S(n)[0];e.pFlags.unread=r?s>r.read_inbox_max_id:!0}e.reply_to_msg_id&&(e.reply_to_mid=T(e.reply_to_msg_id,i)),e.date-=Bt;var p=e.fwd_from;p&&(e.fwdFromID=p.from_id?p.from_id:-p.channel_id,p.date-=Bt),e.toID=n,e.fromID=e.from_id||n,e.via_bot_id>0&&(e.viaBotID=e.via_bot_id);var g={user_id:e.fromID,date:e.date};if(e.media)switch(e.media._){case"messageMediaEmpty":delete e.media;break;case"messageMediaPhoto":d.savePhoto(e.media.photo,g);break;case"messageMediaDocument":u.saveDoc(e.media.document,g);break;case"messageMediaWebPage":m.saveWebPage(e.media.webpage,e.mid,g)}if(e.action){var h,_;switch(e.action._){case"messageActionChatEditPhoto":d.savePhoto(e.action.photo,g),o&&(e.action._="messageActionChannelEditPhoto");break;case"messageActionChatEditTitle":o&&(e.action._="messageActionChannelEditTitle");break;case"messageActionChatDeletePhoto":o&&(e.action._="messageActionChannelDeletePhoto");break;case"messageActionChatAddUser":1==e.action.users.length?(e.action.user_id=e.action.users[0],e.fromID==e.action.user_id&&(e.action._=a?"messageActionChatJoined":"messageActionChatReturn")):e.action.users.length>1&&(e.action._="messageActionChatAddUsers");break;case"messageActionChatDeleteUser":e.fromID==e.action.user_id&&(e.action._="messageActionChatLeave");break;case"messageActionChannelMigrateFrom":h=-e.action.chat_id,_=-i;break;case"messageActionChatMigrateTo":h=-i,_=-e.action.channel_id}h&&_&&!Yt[h]&&!Zt[_]&&U(h,_)}if(e.message&&e.message.length){var v=f.parseEntities(e.message),y=e.entities||[];e.totalEntities=f.mergeEntities(v,y,!e.pending)}t||(bt[s]=e)}})}function Z(e,n,a){if(angular.isString(n)&&n.length){a=a||{};var i,o=At--,l=[nextRandomInt(4294967295),nextRandomInt(4294967295)],d=bigint(l[0]).shiftLeft(32).add(bigint(l[1])).toString(),u=$t[e],p=0,m={},h=a.replyToMsgID,_=c.isChannel(e),v=_&&c.isMegagroup(e),y=_&&!v?!0:!1,b=a.entities||[];a.viaBotID||(n=f.parseMarkdown(n,b)),void 0===u&&(u=$t[e]={count:null,history:[],pending:[]});var w=r.getSelf().id;e!=w&&(p|=2,m.out=!0,_||r.isBot(e)||(p|=1,m.unread=!0)),h&&(p|=8),y?w=0:p|=256,i={_:"message",id:o,from_id:w,to_id:c.getOutputPeer(e),flags:p,pFlags:m,date:tsNow(!0)+Bt,message:n,random_id:d,reply_to_msg_id:h,via_bot_id:a.viaBotID,reply_markup:a.reply_markup,entities:b,views:y&&1,pending:!0};var k=function(e){var n=wt[o];e?(i.error=!0,n&&(n.error=!0)):(delete i.error,n&&delete n.error),t.$broadcast("messages_pending")};i.send=function(){k(!1);var t={};xt[e]&&(t.afterMessageID=xt[e].messageID);var o=0;h&&(o|=1),y&&(o|=16);var r;a.viaBotID?r=g.invokeApi("messages.sendInlineBotResult",{flags:o,peer:c.getInputPeerByID(e),random_id:l,reply_to_msg_id:P(h),query_id:a.queryID,id:a.resultID},t):(b.length&&(o|=8),r=g.invokeApi("messages.sendMessage",{flags:o,peer:c.getInputPeerByID(e),message:n,random_id:l,reply_to_msg_id:P(h),entities:b},t)),r.then(function(e){"updateShortSentMessage"==e._&&(i.flags=e.flags,i.date=e.date,i.id=e.id,i.media=e.media,i.entities=e.entities,e={_:"updates",users:[],chats:[],seq:0,updates:[{_:"updateMessageID",random_id:d,id:e.id},{_:_?"updateNewChannelMessage":"updateNewMessage",message:i,pts:e.pts,pts_count:e.pts_count}]}),s.processUpdateMessage(e)},function(){k(!0)})["finally"](function(){xt[e]===t&&delete xt[e]}),xt[e]=t},Y([i]),u.pending.unshift(o),t.$broadcast("history_append",{peerID:e,messageID:o,my:!0}),setZeroTimeout(i.send),St[d]=[e,o]}}function X(n,a,i){i=i||{};var o,l,d=At--,u=[nextRandomInt(4294967295),nextRandomInt(4294967295)],p=bigint(u[0]).shiftLeft(32).add(bigint(u[1])).toString(),m=$t[n],f=0,_={},v=i.replyToMsgID,y=c.isChannel(n),b=y&&c.isMegagroup(n),w=y&&!b?!0:!1;i.isMedia?["image/jpeg","image/png","image/bmp"].indexOf(a.type)>=0?(o="photo",l="photo."+a.type.split("/")[1]):"audio/"==a.type.substr(0,6)||["video/ogg"].indexOf(a.type)>=0?(o="audio",l="audio."+("ogg"==a.type.split("/")[1]?"ogg":"mp3")):"video/"==a.type.substr(0,6)?(o="video",l="video.mp4"):(o="document",l="document."+a.type.split("/")[1]):(o="document",l="document."+a.type.split("/")[1]),console.log(o,l,a.type),void 0===m&&(m=$t[n]={count:null,history:[],pending:[]});var k=r.getSelf().id;n!=k&&(f|=2,_.out=!0,y||r.isBot(n)||(f|=1,_.unread=!0)),v&&(f|=8),w?k=0:f|=256;var $,C={_:"messageMediaPending",type:o,file_name:a.name||l,size:a.size,progress:{percent:1,total:a.size}},S={_:"message",id:d,from_id:k,to_id:c.getOutputPeer(n),flags:f,pFlags:_,date:tsNow(!0)+Bt,message:"",media:C,random_id:p,reply_to_msg_id:v,views:w&&1,pending:!0},M=function(e){var n=wt[d];e?(S.error=!0,n&&(n.error=!0)):(delete S.error,n&&delete n.error),t.$broadcast("messages_pending")},x=!1;S.send=function(){var i=e.defer();It.then(function(){(!x||S.error)&&(x=!1,$=h.uploadFile(a)),$.then(function(e){e.name=l,x=!0;var t;switch(o){case"photo":t={_:"inputMediaUploadedPhoto",file:e};break;case"document":default:t={_:"inputMediaUploadedDocument",file:e,mime_type:a.type,caption:"",attributes:[{_:"documentAttributeFilename",file_name:a.name}]}}var i=0;v&&(i|=1),w&&(i|=16),g.invokeApi("messages.sendMedia",{flags:i,peer:c.getInputPeerByID(n),media:t,random_id:u,reply_to_msg_id:P(v)}).then(function(e){s.processUpdateMessage(e)},function(e){return"photo"!=o||400!=e.code||"PHOTO_INVALID_DIMENSIONS"!=e.type&&"PHOTO_SAVE_FILE_INVALID"!=e.type?void M(!0):(e.handled=!0,o="document",void S.send())})},function(){M(!0)},function(e){C.progress.done=e.done,C.progress.percent=Math.max(1,Math.floor(100*e.done/e.total)),t.$broadcast("history_update",{peerID:n})}),C.progress.cancel=function(){x||(i.resolve(),$.cancel(),tt(p))},$["finally"](function(){i.resolve()})}),It=i.promise},Y([S]),m.pending.unshift(d),t.$broadcast("history_append",{peerID:n,messageID:d,my:!0}),setZeroTimeout(S.send),St[p]=[n,d]}function J(e,n,a){a=a||{};var i=At--,o=[nextRandomInt(4294967295),nextRandomInt(4294967295)],l=bigint(o[0]).shiftLeft(32).add(bigint(o[1])).toString(),m=$t[e],h=a.replyToMsgID,f=c.isChannel(e),_=f&&c.isMegagroup(e),v=f&&!_?!0:!1;void 0===m&&(m=$t[e]={count:null,history:[],pending:[]});var y,b=r.getSelf().id;switch(n._){case"inputMediaPhoto":y={_:"messageMediaPhoto",photo:d.getPhoto(n.id.id),caption:n.caption||""};break;case"inputMediaDocument":var w=u.getDoc(n.id.id);w.sticker&&w.stickerSetInput&&p.pushPopularSticker(w.id),y={_:"messageMediaDocument",document:w,caption:n.caption||""};break;case"inputMediaContact":y={_:"messageMediaContact",phone_number:n.phone_number,first_name:n.first_name,last_name:n.last_name,user_id:0};break;case"inputMediaGeoPoint":y={_:"messageMediaGeo",geo:{_:"geoPoint",lat:n.geo_point.lat,"long":n.geo_point["long"]}};break;case"inputMediaVenue":y={_:"messageMediaVenue",geo:{_:"geoPoint",lat:n.geo_point.lat,"long":n.geo_point["long"]},title:n.title,address:n.address,provider:n.provider,venue_id:n.venue_id};break;case"messageMediaPending":y=n}var k=0,$={};e!=b&&(k|=2,$.out=!0,r.isBot(e)||(k|=1,$.unread=!0)),h&&(k|=8),v?b=0:k|=256;var C={_:"message",id:i,from_id:b,to_id:c.getOutputPeer(e),flags:k,pFlags:$,date:tsNow(!0)+Bt,message:"",media:y,random_id:l,reply_to_msg_id:h,via_bot_id:a.viaBotID,reply_markup:a.reply_markup,views:v&&1,pending:!0},S=function(e){var n=wt[i];e?(C.error=!0,n&&(n.error=!0)):(delete C.error,n&&delete n.error),t.$broadcast("messages_pending")};C.send=function(){var t=0;h&&(t|=1),v&&(t|=16);var i={};xt[e]&&(i.afterMessageID=xt[e].messageID);var r;r=a.viaBotID?g.invokeApi("messages.sendInlineBotResult",{flags:t,peer:c.getInputPeerByID(e),random_id:o,reply_to_msg_id:P(h),query_id:a.queryID,id:a.resultID},i):g.invokeApi("messages.sendMedia",{flags:t,peer:c.getInputPeerByID(e),media:n,random_id:o,reply_to_msg_id:P(h)},i),r.then(function(e){s.processUpdateMessage(e)},function(){S(!0)})["finally"](function(){xt[e]===i&&delete xt[e]}),xt[e]=i},Y([C]),m.pending.unshift(i),t.$broadcast("history_append",{peerID:e,messageID:i,my:!0}),setZeroTimeout(C.send),St[l]=[e,i]}function Q(t,n){n=n.sort();var a=0,i=c.isChannel(t),o=i&&c.isMegagroup(t),r=i&&!o?!0:!1;r&&(a|=16);var l=F(n),d=[];return angular.forEach(l.msgIDs,function(e,n){for(var i=e.length,o=[],r=0;i>r;r++)o.push([nextRandomInt(4294967295),nextRandomInt(4294967295)]);var l={};xt[t]&&(l.afterMessageID=xt[t].messageID);var u=g.invokeApi("messages.forwardMessages",{flags:a,from_peer:c.getInputPeerByID(-n),id:e,random_id:o,to_peer:c.getInputPeerByID(t)},l).then(function(e){s.processUpdateMessage(e)})["finally"](function(){xt[t]===l&&delete xt[t]});xt[t]=l,d.push(u)}),e.all(d)}function et(e,t,n){var a=t?-t:e;if(n){var i=bigint(nextRandomInt(4294967295)).shiftLeft(32).add(bigint(nextRandomInt(4294967295))).toString();return g.invokeApi("messages.startBot",{bot:r.getUserInput(e),peer:c.getInputPeerByID(a),random_id:i,start_param:n}).then(function(e){s.processUpdateMessage(e)})}return t?l.isChannel(t)?g.invokeApi("channels.inviteToChannel",{channel:l.getChannelInput(t),users:[r.getUserInput(e)]}).then(function(e){s.processUpdateMessage(e),Z(a,"/start@"+bot.username)},function(t){if(t&&"USER_ALREADY_PARTICIPANT"==t.type){var n=r.getUser(e);Z(a,"/start@"+n.username),t.handled=!0}}):g.invokeApi("messages.addChatUser",{chat_id:l.getChatInput(t),user_id:r.getUserInput(e)}).then(function(e){s.processUpdateMessage(e),Z(a,"/start@"+bot.username)},function(t){if(t&&"USER_ALREADY_PARTICIPANT"==t.type){var n=r.getUser(e);Z(a,"/start@"+n.username),t.handled=!0}}):Z(a,"/start")}function tt(e){var t=St[e];if(console.log("pending",e,t),t){var n=t[0],a=t[1],i=$t[n],o=i.pending.indexOf(a);return s.processUpdateMessage({_:"updateShort",update:{_:"updateDeleteMessages",messages:[a]}}),-1!=o&&i.pending.splice(o,1),delete wt[a],delete bt[a],!0}return!1}function nt(e,n){var a=St[e];if(a){var i,o,s=a[0],r=a[1],l=$t[s],c=l.pending.indexOf(r);return-1!=c&&l.pending.splice(c,1),(i=bt[r])&&(delete i.pending,delete i.error,delete i.random_id,delete i.send),(o=wt[r])&&(wt[n.mid]=angular.extend(o,rt(n.mid)),delete o.pending,delete o.error,delete o.random_id,delete o.send,t.$broadcast("messages_pending")),delete wt[r],delete bt[r],i}return!1}function at(e){return g.invokeApi("messages.checkChatInvite",{hash:e}).then(function(n){var a;if("chatInviteAlready"==n._){if(l.saveApiChat(n.chat),!n.chat.pFlags.left)return t.$broadcast("history_focus",{peerString:l.getChatString(n.chat.id)});a=n.chat.title}else a=n.title;w.confirm({type:n.pFlags.channel&&!n.pFlags.megagroup?"JOIN_CHANNEL_BY_LINK":"JOIN_GROUP_BY_LINK",title:a}).then(function(){return g.invokeApi("messages.importChatInvite",{hash:e}).then(function(e){if(s.processUpdateMessage(e),e.chats&&1==e.chats.length)t.$broadcast("history_focus",{peerString:l.getChatString(e.chats[0].id)});else if(e.updates&&e.updates.length)for(var n,a=0,i=e.updates.length;i>a;a++)if(n=e.updates[a],"updateNewMessage"==n._){t.$broadcast("history_focus",{peerString:l.getChatString(n.message.to_id.chat_id)});break}})})})}function it(e){var t=e.to_id&&c.getPeerID(e.to_id)||0;return 0>t?t:e.pFlags&&e.pFlags.out||2&e.flags?t:e.from_id}function ot(e,t){var n=e&&void 0!==t,a=t&&t.unread_count;if(n&&void 0!==kt[e])return delete kt[e].typing,kt[e].unreadCount=a,kt[e];var i=angular.copy(bt[e]);if(!i||!i.to_id){if(!t||!t.peerID)return i;i={_:"message",to_id:c.getOutputPeer(t.peerID),deleted:!0,date:tsNow(!0),pFlags:{}},i.deleted=!0}return i.peerID=it(i),i.peerData=c.getPeer(i.peerID),i.peerString=c.getPeerString(i.peerID),i.unreadCount=a,"messageService"==i._&&i.action.user_id&&(i.action.user=r.getUser(i.action.user_id)),i.message&&i.message.length&&(i.richMessage=f.wrapRichText(i.message.substr(0,64),{noLinks:!0,noLinebreaks:!0})),i.dateText=Vt(i.date),n&&(kt[e]=i),i}function st(e){delete kt[e]}function rt(e){if(void 0!==wt[e])return wt[e];var t=angular.copy(bt[e])||{id:e};t.media&&void 0!==t.media.progress&&(t.media.progress=bt[e].media.progress);var n=t.from_id&&r.getUser(t.from_id),a=n&&n.pFlags.bot&&n.username||!1,i=a||t.to_id&&(t.to_id.chat_id||t.to_id.user_id&&r.isBot(t.to_id.user_id));if(t.media)switch(t.media.caption&&t.media.caption.length&&(t.media.rCaption=f.wrapRichText(t.media.caption,{noCommands:!i,fromBot:a})),t.media._){case"messageMediaPhoto":t.media.photo=d.wrapForHistory(t.media.photo.id);break;case"messageMediaDocument":t.media.document=u.wrapForHistory(t.media.document.id);break;case"messageMediaGeo":var s="https://maps.google.com/?q="+t.media.geo.lat+","+t.media.geo["long"];t.media.mapUrl=o.trustAsResourceUrl(s);break;case"messageMediaVenue":var s;s="foursquare"==t.media.provider&&t.media.venue_id?"https://foursquare.com/v/"+encodeURIComponent(t.media.venue_id):"https://maps.google.com/?q="+t.media.geo.lat+","+t.media.geo["long"],t.media.mapUrl=o.trustAsResourceUrl(s);break;case"messageMediaContact":t.media.rFullName=f.wrapRichText(t.media.first_name+" "+(t.media.last_name||""),{noLinks:!0,noLinebreaks:!0});break;case"messageMediaWebPage":if(!t.media.webpage||"webPageEmpty"==t.media.webpage._){delete t.media;break}t.media.webpage=m.wrapForHistory(t.media.webpage.id)}else if(t.action)switch(t.action._){case"messageActionChatEditPhoto":case"messageActionChannelEditPhoto":t.action.photo=d.wrapForHistory(t.action.photo.id);break;case"messageActionChatCreate":case"messageActionChatEditTitle":case"messageActionChannelCreate":case"messageActionChannelEditTitle":t.action.rTitle=f.wrapRichText(t.action.title,{noLinebreaks:!0})||$("chat_title_deleted");break;case"messageActionBotIntro":t.action.rDescription=f.wrapRichText(t.action.description,{noCommands:!i,fromBot:a})}var l=t.reply_to_mid;return l&&(bt[l]?t.reply_to_msg=ot(l):(t.reply_to_msg={mid:l,loading:!0},-1==Ft.indexOf(l)&&(Ft.push(l),Rt===!1&&(Rt=setTimeout(ct,100))))),wt[e]=t}function lt(e){if(!e||"replyKeyboardHide"==e._)return!1;if(e.wrapped)return e;var t="replyInlineMarkup"==e._,n=e.rows&&e.rows.length||0;return!(!t&&n>0&&4>=n)||e.pFlags&&e.pFlags.resize||(e.splitCount=n),e.wrapped=!0,angular.forEach(e.rows,function(e){angular.forEach(e.buttons,function(e){e.rText=f.wrapRichText(e.text,{noLinks:!0,noLinebreaks:!0}),"keyboardButtonUrl"==e._&&(e.pUrl=f.wrapUrl(e.url,!0))})}),e}function ct(){if(Rt!==!1&&(clearTimeout(Rt),Rt=!1),Ft.length){var e=Ft.slice();Ft=[];var n=F(e);angular.forEach(n.msgIDs,function(e,a){var i;i=a>0?g.invokeApi("channels.getMessages",{channel:l.getChannelInput(a),id:e}):g.invokeApi("messages.getMessages",{id:e}),i.then(function(e){r.saveApiUsers(e.users),l.saveApiChats(e.chats),Y(e.messages),t.$broadcast("messages_downloaded",n.mids[a])})})}}function dt(){if(Ot!==!1&&(clearTimeout(Ot),Ot=!1),Ut.length){var e=Ut.slice();Ut=[];var t=F(e);angular.forEach(t.msgIDs,function(e,n){g.invokeApi("messages.getMessagesViews",{peer:c.getInputPeerByID(-n),id:e,increment:!0}).then(function(e){if(n){for(var a=t.mids[n],i=[],o=0;o<a.length;o++)i.push({_:"updateChannelMessageViews",channel_id:n,id:a[o],views:e[o]});s.processUpdateMessage({_:"updates",updates:i,chats:[],users:[]})}})})}}function ut(e,t){if(!e||!e.length)return!1;var n,a,i,o,s,r,l,c=0,d=e.length,u=d,p=!1,m=!Config.Mobile;for(t>0?u=Math.min(t,d):0>t&&(c=Math.max(0,u+t)),n=c;u>n;n++){if(o=e[n],a=Math.floor((o.date+yt)/86400),l=s&&s.grouped,r=o.grouped,a===i?o.needDate&&(delete o.needDate,p=!0):(!n||s)&&(o.needDate||(o.needDate=!0,p=!0)),o.fwdFromID&&o.media&&o.media.document&&(o.media.document.sticker||o.media.document.audioTitle)&&(o.fromID!=(s||{}).fromID||!(s||{}).fwdFromID)&&(delete o.fwdFromID,o._="message"),o.views&&!Nt[o.mid]&&(Nt[o.mid]=!0,Ut.push(o.mid),Ot===!1&&(Ot=setTimeout(dt,1e4))),s&&s.fromID==o.fromID&&!s.fwdFromID==!o.fwdFromID&&s.viaBotID==o.viaBotID&&!s.action&&!o.action&&o.date<s.date+900){var g=o.message&&o.message.length<70&&-1==o.message.indexOf("\n")&&!o.reply_to_mid;
o.grouped=m&&o.fwdFromID&&o.fwdFromID==s.fwdFromID&&o.viaBotID==s.viaBotID?g?"im_grouped_fwd_short":"im_grouped_fwd":!o.fwdFromID&&g?"im_grouped_short":"im_grouped",m&&o.fwdFromID&&(s.grouped||(s.grouped="im_grouped_fwd_start"),o.grouped&&n==d-1&&(o.grouped+=" im_grouped_fwd_end"))}else(s||!n)&&(delete o.grouped,m&&s&&s.grouped&&s.fwdFromID&&(s.grouped+=" im_grouped_fwd_end"));p||l==(s&&s.grouped)||(p=!0),s=o,i=a}return p||r==(s&&s.grouped)||(p=!0),p}function pt(e,t,n){var a,i=!1;if(e.media)switch(e.media._){case"messageMediaPhoto":a=d.choosePhotoSize(e.media.photo,t,n);break;case"messageMediaDocument":a=e.media.document.thumb,e.media.document.sticker&&(i=!0)}if(a&&"photoSizeEmpty"!=a._){var o=calcImageInBox(a.w,a.h,t,n,!0),s={width:o.w,height:o.h,location:a.location,size:a.size};return i&&(s.location.sticker=!0),s}return!1}function mt(e){Ht!==!1&&e&&e>Ht&&v.set({max_seen_msg:e})}function gt(e,n){n=n||{};var a,i,o=it(e),s={},c=!1,d=_.getNotifySettings();if(e.fwdFromID&&n.fwd_count)c=zt(n.fwd_count);else if(e.message)c=d.nopreview?$("conversation_message_sent"):f.wrapPlainText(e.message);else if(e.media)switch(e.media._){case"messageMediaPhoto":c=$("conversation_media_photo_raw");break;case"messageMediaDocument":switch(e.media.document.type){case"gif":c=$("conversation_media_gif_raw");break;case"sticker":c=$("conversation_media_sticker");var u=e.media.document.stickerEmojiRaw;void 0!==u&&(c=f.wrapPlainText(u)+" "+c);break;case"video":c=$("conversation_media_video_raw");break;case"voice":case"audio":c=$("conversation_media_audio_raw");break;default:c=e.media.document.file_name||$("conversation_media_document_raw")}break;case"messageMediaGeo":case"messageMediaVenue":c=$("conversation_media_location_raw");break;case"messageMediaContact":c=$("conversation_media_contact_raw");break;default:c=$("conversation_media_attachment_raw")}else if("messageService"==e._)switch(e.action._){case"messageActionChatCreate":c=$("conversation_group_created_raw");break;case"messageActionChatEditTitle":c=$("conversation_group_renamed_raw");break;case"messageActionChatEditPhoto":c=$("conversation_group_photo_updated_raw");break;case"messageActionChatDeletePhoto":c=$("conversation_group_photo_removed_raw");break;case"messageActionChatAddUser":case"messageActionChatAddUsers":c=$("conversation_invited_user_message_raw_raw");break;case"messageActionChatReturn":c=$("conversation_returned_to_group_raw");break;case"messageActionChatJoined":c=$("conversation_joined_group_raw");break;case"messageActionChatDeleteUser":c=$("conversation_kicked_user_message_raw");break;case"messageActionChatLeave":c=$("conversation_left_group_raw");break;case"messageActionChatJoinedByLink":c=$("conversation_joined_by_link_raw");break;case"messageActionChannelCreate":c=$("conversation_created_channel_raw");break;case"messageActionChannelEditTitle":c=$("conversation_changed_channel_name_raw");break;case"messageActionChannelEditPhoto":c=$("conversation_changed_channel_photo_raw");break;case"messageActionChannelDeletePhoto":c=$("conversation_removed_channel_photo_raw")}if(o>0){var p=r.getUser(e.from_id),m=r.getUserPhoto(e.from_id);s.title=(p.first_name||"")+(p.first_name&&p.last_name?" ":"")+(p.last_name||""),s.title||(s.title=p.phone||$("conversation_unknown_user_raw")),i=m,a=r.getUserString(o)}else{if(s.title=l.getChat(-o).title||$("conversation_unknown_chat_raw"),e.from_id>0){var p=r.getUser(e.from_id);s.title=(p.first_name||p.last_name||$("conversation_unknown_user_raw"))+" @ "+s.title}i=l.getChatPhoto(-o),a=l.getChatString(-o)}s.title=f.wrapPlainText(s.title),s.onclick=function(){t.$broadcast("history_focus",{peerString:a,messageID:16&e.flags?e.mid:0})},s.message=c,s.key="msg"+e.mid,s.tag=a,i.location&&!i.location.empty?h.downloadSmallFile(i.location,i.size).then(function(t){e.pFlags.unread&&(s.image=t,_.notify(s))}):_.notify(s)}function ht(){i.cancel(tn),tn=!1,t.$broadcast("history_multiappend",nn),nn={}}function ft(){i.cancel(an),an=!1,angular.forEach(on,function(e){A(e)}),t.$broadcast("dialogs_multiupdate",on),on={}}function _t(){i.cancel(sn),sn=!1;var e=t.idle.isIDLE&&k.isOtherDeviceActive()?3e4:1e3;angular.forEach(rn,function(t){t.isMutedPromise.then(function(n){var a=t.top_message;!n&&a.pFlags.unread&&setTimeout(function(){a.pFlags.unread&&gt(a,{fwd_count:t.fwd_count})},e)})}),rn={}}function vt(n){var a=-n;return e.all([y.getChannelFull(n,!0),B(a,0)]).then(function(e){var i=e[0],o=e[1],s=o.history[0],r={_:"dialogChannel",peer:c.getOutputPeer(a),top_message:s,top_important_message:s,read_inbox_max_id:i.read_inbox_max_id,unread_count:i.unread_count,unread_important_count:i.unread_important_count,notify_settings:i.notify_settings};M(n,r);var l={};l[a]=r,t.$broadcast("dialogs_multiupdate",l)})}var yt,bt={},wt={},kt={},$t={},Ct={count:null,dialogs:[]},St={},Mt={},xt={},It=e.when(),At=-1,Et=SearchIndexManager.createIndex(),Tt={query:!1},Dt={},Pt=[],Ft=[],Rt=!1,Nt={},Ut=[],Ot=!1,Bt=0,Lt=tsNow(!0),jt=Lt-Lt%86400,qt=new Date;v.get("server_time_offset").then(function(e){e&&(Bt=e)});var Ht=!1;Config.Modes.packed&&v.get("max_seen_msg").then(function(e){Ht=e||0});var Vt=a("dateOrTime"),zt=$.pluralize("conversation_forwarded_X_messages");qt.setHours(0),qt.setMinutes(0),qt.setSeconds(0),yt=jt-Math.floor(+qt/1e3),_.start();var Wt=!1,Gt=0,Kt=0,Yt={},Zt={},Xt={},Jt={},Qt=0,en=4294967296,tn=!1,nn={},an=!1,on={},sn=!1,rn={};return t.$on("apiUpdate",function(e,n){switch(n._){case"updateMessageID":var a=n.random_id,o=St[a];if(o){var s=o[0],d=c.isChannel(s)?-s:0;Mt[T(n.id,d)]=a}break;case"updateNewMessage":case"updateNewChannelMessage":var u=n.message,s=it(u),p=$t[s];if("updateNewChannelMessage"==n._){if(!l.isMegagroup(-s)&&!(u.pFlags.out||u.pFlags.mention||u.pFlags.post))break;var m=l.getChat(-s);if(m.pFlags&&(m.pFlags.left||m.pFlags.kicked))break}if(Y([u]),void 0!==p){var g=p.history;if(-1!=g.indexOf(u.mid))return!1;var h=g[0];g.unshift(u.mid),u.mid>0&&u.mid<h&&g.sort(function(e,t){return t-e}),null!==p.count&&p.count++}else p=$t[s]={count:null,history:[u.mid],pending:[]};j(p,u)&&t.$broadcast("history_reply_markup",{peerID:s}),!u.pFlags.out&&u.from_id&&r.forceUserOnline(u.from_id);var f,a=Mt[u.mid];a&&((f=nt(a,u))&&t.$broadcast("history_update",{peerID:s}),delete Mt[u.mid]),f||(void 0===nn[s]&&(nn[s]=[]),nn[s].push(u.mid),tn||(tn=i(ht,0)));var v,y=S(s),b=!u.pFlags.out&&u.pFlags.unread;if(y.length?(v=y[0],v.top_message=u.mid,b&&v.unread_count++):(SearchIndexManager.indexObject(s,c.getPeerSearchText(s),Et),v={peerID:s,unread_count:b?1:0,top_message:u.mid}),v.index=I(u.date),on[s]=v,an||(an=i(ft,0)),b&&(t.selectedPeerID!=s||t.idle.isIDLE)&&!u.pFlags.silent){var w=16&u.flags?u.from_id:s,k=rn[w];void 0===k&&(k=rn[w]={isMutedPromise:_.getPeerMuted(w),fwd_count:0,from_id:0}),k.from_id!=u.from_id&&(k.from_id=u.from_id,k.fwd_count=0),u.fwdFromID&&k.fwd_count++,k.top_message=u,sn||(sn=i(_t,1e3))}mt(u.id);break;case"updateEditMessage":case"updateEditChannelMessage":var u=n.message,s=it(u),d="peerChannel"==u.to_id._?-s:0,$=T(u.id,d);if(void 0===bt[$])break;Y([u],!0),safeReplaceObject(bt[$],u);var C=wt[$];if(void 0!==C){delete wt[$];var M=rt($);safeReplaceObject(C,M),wt[$]=C}t.$broadcast("message_edit",{peerID:s,id:u.id,mid:$});break;case"updateReadHistoryInbox":case"updateReadHistoryOutbox":case"updateReadChannelInbox":var x,u,A,E="updateReadHistoryOutbox"==n._,d=n.channel_id,D=T(n.max_id,d),s=d?-d:c.getPeerID(n.peer),y=S(s),g=($t[s]||{}).history||[],P=!1,F=g.length,R=!1;for(s>0&&E&&r.forceUserOnline(s),A=0;F>A;A++)if(x=g[A],!(x>D)&&(u=bt[x],u.pFlags.out==E)){if(!u.pFlags.unread)break;u&&u.pFlags.unread&&(u.pFlags.unread=!1,wt[x]&&(wt[x].pFlags.unread=!1,R||(R=!0)),kt[x]&&(kt[x].pFlags.unread=!1),u.pFlags.out||(y&&(P=--y[0].unread_count),_.cancel("msg"+x)))}!E&&y&&(P&&y[0].top_message<=D&&(P=y[0].unread_count=0),y[0]||console.error("empty found dialog",y,n),y[0].read_inbox_max_id=D),P!==!1&&t.$broadcast("dialog_unread",{peerID:s,count:P}),R&&t.$broadcast("messages_read");break;case"updateReadMessagesContents":var A,x,u,N,U=n.messages,O=U.length;for(A=0;O>A;A++)x=U[A],(u=bt[x])&&delete u.pFlags.media_unread,(N=wt[x])&&delete N.pFlags.media_unread;break;case"updateDeleteMessages":case"updateDeleteChannelMessages":var x,u,A,s,y,g,B={},d=n.channel_id;for(A=0;A<n.messages.length;A++)x=T(n.messages[A],d),u=bt[x],u&&(s=it(u),g=B[s]||(B[s]={count:0,unread:0,msgs:{}}),!u.pFlags.out&&u.pFlags.unread&&(g.unread++,_.cancel("msg"+x)),g.count++,g.msgs[x]=!0,wt[x]&&(wt[x].deleted=!0,delete wt[x]),kt[x]&&(kt[x].deleted=!0,delete kt[x]),u.deleted=!0,bt[x]={deleted:!0,id:x,from_id:u.from_id,to_id:u.to_id,flags:u.flags,pFlags:u.pFlags,date:u.date});angular.forEach(B,function(e,n){var a=S(n);a&&e.unread&&(a[0].unread_count-=e.unread,t.$broadcast("dialog_unread",{peerID:n,count:a[0].unread_count}));var i=$t[n];if(void 0!==i){for(var o=[],s=[],r=0;r<i.history.length;r++)e.msgs[i.history[r]]||o.push(i.history[r]);i.history=o,e.count&&null!==i.count&&i.count>0&&(i.count-=e.count,i.count<0&&(i.count=0));for(var r=0;r<i.pending.length;r++)e.msgs[i.pending[r]]||s.push(i.pending[r]);i.pending=s,t.$broadcast("history_delete",{peerID:n,msgs:e.msgs})}});break;case"updateChannel":var d=n.channel_id,s=-d,L=l.getChat(d),q="channel"==L._&&!L.pFlags.left&&!L.pFlags.kicked,y=S(s),V=y.length>0,z="channel"==L._&&(L.username||!L.pFlags.left&&!L.pFlags.kicked)&&!0||!1,W=void 0!==$t[s];z!=W&&(delete $t[s],t.$broadcast("history_forbidden",s)),V!=q&&(q?vt(d):y[0]&&(Ct.dialogs.splice(y[1],1),t.$broadcast("dialog_drop",{peerID:s})));break;case"updateChannelReload":var d=n.channel_id,s=-d,y=S(s);y[0]&&Ct.dialogs.splice(y[1],1),delete $t[s],vt(d).then(function(){t.$broadcast("history_reload",s)});break;case"updateChannelMessageViews":var G=n.views,$=T(n.id,n.channel_id),u=H($);u&&u.views&&u.views<G&&(u.views=G,t.$broadcast("message_views",{mid:$,views:G}))}}),t.$on("webpage_updated",function(e,t){angular.forEach(t.msgs,function(e){var n=wt[e];n&&(n.media={_:"messageMediaWebPage",webpage:m.wrapForHistory(t.id)})})}),{getConversations:C,getHistory:B,getSearch:q,getMessage:H,getMessageLocalID:P,getReplyKeyboard:L,readHistory:z,readMessages:W,flushHistory:K,deleteMessages:V,saveMessages:Y,sendText:Z,sendFile:X,sendOther:J,forwardMessages:Q,startBot:et,openChatInviteLink:at,convertMigratedPeer:O,getMessagePeer:it,getFullMessageID:T,getMessageThumb:pt,clearDialogCache:st,wrapForDialog:ot,wrapForHistory:rt,wrapReplyMarkup:lt,regroupWrappedHistory:ut}}]),angular.module("myApp.templates",[]).run(["$templateCache",function(e){e.put("partials/desktop/audio_player.html",'<div class="audio_player_wrap clearfix">\n <a class="im_message_file_button" ng-click="togglePlay()" ng-class="{im_message_file_button_dl_audio: audio.downloaded}">\n <i class="im_message_file_button_icon" ng-class="{audio_player_btn_icon_pause: mediaPlayer.player.playing}"></i>\n </a>\n <div class="audio_player_title_wrap">\n <div class="audio_player_meta pull-right" ng-if="audio.downloaded &amp;&amp; (mediaPlayer.player.duration || audio.duration)" ng-switch="mediaPlayer.player.playing || mediaPlayer.player.currentTime > 0">\n <span ng-switch-when="true" class="audio_player_duration" ng-bind="mediaPlayer.player.currentTime | durationRemains : (mediaPlayer.player.duration || audio.duration)"></span>\n <span ng-switch-default class="audio_player_duration" ng-bind="mediaPlayer.player.duration || audio.duration | duration"></span>\n </div>\n <span class="copyonly">[ </span>\n <a ng-click="download()" class="audio_player_title" ng-switch="::audio.audioTitle.length > 0 ? 2 : (audio.file_name.length > 0 ? 1 : 0)">\n <span ng-switch-when="2">\n <strong ng-bind="::audio.audioPerformer"></strong>\n <span ng-bind="::(audio.audioPerformer ? \'– \' : \'\') + audio.audioTitle"></span>\n </span>\n <span ng-switch-when="1" ng-bind="::audio.file_name"></span>\n <span ng-switch-default my-i18n="message_attach_audio_message"></span>\n </a>\n <span class="copyonly">]</span>\n <i ng-if="::message.pFlags.media_unread || false" ng-show="message.pFlags.media_unread" class="icon icon-audio-unread"></i>\n <div class="audio_player_meta" ng-if="!audio.downloaded || !(mediaPlayer.player.duration || audio.duration)" ng-switch="audio.progress.enabled">\n <span ng-switch-when="true" class="audio_player_size" ng-bind="audio.progress | formatSizeProgress"></span>\n <span ng-switch-default class="audio_player_size" ng-bind="audio.size | formatSize"></span>\n </div>\n </div>\n <div class="audio_player_actions noselect" ng-if="!audio.progress.enabled &amp;&amp; !audio.downloaded">\n <a class="nocopy" ng-if="audio._ == \'document\'" ng-click="download()" my-i18n="message_attach_document_download"></a>\n <a class="nocopy" ng-click="togglePlay()" my-i18n="message_attach_audio_play"></a>\n </div>\n <div class="audio_player_progress_wrap" ng-if="audio.progress.enabled || audio.downloaded" ng-switch="audio.progress.enabled">\n <div ng-switch-when="true" class="clearfix im_message_cancelable_progress_wrap">\n <a class="im_message_media_progress_cancel pull-right nocopy" ng-click="audio.progress.cancel()" my-i18n="modal_cancel"></a>\n <div class="im_message_download_progress_wrap">\n <div class="progress tg_down_progress">\n <div class="progress-bar progress-bar-success" ng-style="{width: audio.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n <div ng-switch-default class="im_message_playback_progress_wrap">\n <div class="audio_player_seek_slider" my-slider slider-model="mediaPlayer.player.currentTime" slider-max="mediaPlayer.player.duration || audio.duration" slider-onchange="seek(value)"></div>\n <div class="audio_player_volume_slider" my-slider slider-model="mediaPlayer.player.volume" slider-min="0" slider-max="1" slider-onchange="setVolume(value)"></div>\n </div>\n </div>\n <audio ng-if="audio.url" media-player="mediaPlayer.player">\n <source ng-src="{{::audio.url}}" type="{{audio.mime_type || \'audio/ogg\'}}" volume="{{::volume}}" />\n </audio>\n</div>'),e.put("partials/desktop/changelog_modal.html",'<div class="changelog_modal_wrap md_modal_wrap" my-modal-position>\n\n <div class="md_modal_head">\n <div class="md_modal_title_wrap">\n <div class="md_modal_actions_wrap clearfix">\n <a class="md_modal_action md_modal_action_close" ng-click="$close()" my-i18n="modal_close"></a>\n </div>\n <div class="md_modal_title" my-i18n="head_about"></div>\n </div>\n\n <div class="peer_modal_profile_wrap clearfix">\n <div class="peer_modal_photo_wrap pull-left">\n <div class="peer_modal_photo telegram_modal_logo"></div>\n </div>\n <div class="peer_modal_profile">\n <div class="peer_modal_profile_name">Telegram Web</div>\n <div class="peer_modal_profile_description">Version {{currentVersion}}</div>\n </div>\n </div>\n </div>\n\n <div class="md_modal_split_actions_wrap">\n <div class="md_modal_split_actions">\n <a href="https://twitter.com/telegram_web" target="_blank" class="md_modal_split_action">\n <i class="md_modal_split_action_twitter"></i>\n </a>\n </div>\n </div>\n\n <div class="md_modal_body">\n\n <div class="md_modal_sections">\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.5.3\')">\n <div class="md_modal_section_version">0.5.3</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Inline bots: A new way to add bot content to any chat. Type a bot\'s username and your query in the text field to get instant results and send them to your chat partner. Try typing <code>@gif dog</code> in your next chat. Sample bots: @gif, @wiki, @bing, @vid, @bold.</li>\n <li>Check out the <a href="https://telegram.org/blog/inline-bots" target="_blank">Telegram Blog</a> for more info.</li>\n <li>Improved GIFs: 20x faster sending and downloading, nice animated progress</li>\n <li>Click on message date to reply (or to forward from channels).</li>\n <li>Preview images before sending when pasting from clipboard.</li>\n <li>Improved formatting for copy-pasted history fragments (date, time and sender names inserted automatically).</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.5.2\')">\n <div class="md_modal_section_version">0.5.2</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Unread counters for muted chats now colored in gray.</li>\n <li>Improved previews for sticker sets: Click on a sticker to view the whole set, click on stickers in a set to send right away, added a \'Share\' button.</li>\n <li>Improved performance.</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.5.1\')">\n <div class="md_modal_section_version">0.5.1</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Groups that have reached their capacity of 200 users can be upgraded to supergroups of up to 1,000 members.</li>\n <li>Check out the <a href="https://telegram.org/blog/supergroups" target="_blank">Telegram Blog</a> for more info</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.5.0\')">\n <div class="md_modal_section_version">0.5.0</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Removed annoying "multiple tabs open" error.</li>\n <li>Improved message forwarding.</li>\n <li>Added view counter to messages from channels.</li>\n <li>Improved image loading in Safari and Firefox.</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.4.9\')">\n <div class="md_modal_section_version">0.4.9</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>New emoji and sticker menu, tabs for sticker packs.</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.4.8\')">\n <div class="md_modal_section_version">0.4.8</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Introducing Channels – a great new way to broadcast your messages to unlimited audiences.</li>\n <li>Check out the <a href="https://telegram.org/blog/channels" target="_blank">Telegram Blog</a> for more info</li>\n <li>Improved performance in Safari on OS X El Capitan.</li>\n <li>Added formatting for fixed-width code, surround text with `single backticks` for inline text and ```triple backticks``` for blocks of pre-formatted text.</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.4.7\')">\n <div class="md_modal_section_version">0.4.7</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>New bot API, free for everyone. If you\'re an engineer, create your own bots for games, services or integrations.\n </li>\n <li>Check out <a href="https://telegram.org/blog/bot-revolution" target="_blank">Telegram Blog</a> for more info</li>\n <li>Improved Stickers support: now stickers are loading much faster.</li>\n <li>Click on any custom stickers in chats to view and add sticker sets.</li>\n <li>[Mobile] Reply to a message easily: tap on any message and select "Reply".</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.4.6\')">\n <div class="md_modal_section_version">0.4.6</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Install and share custom sticker sets like this one: <a href="tg://addstickers?set=Animals">telegram.me/addstickers/Animals</a></li>\n <li>If you\'re an artist, create custom sticker sets using our <a href="tg://resolve?domain=stickers">@Stickers</a> bot.</li>\n <li>Check out <a href="https://telegram.org/blog/stickers-revolution" target="_blank">Telegram Blog</a> for more info</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.4.5\')">\n <div class="md_modal_section_version">0.4.5</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>\n Invite links for group chats:<br/>\n Check out <a href="https://telegram.org/blog/invite-links" target="_blank">Telegram Blog</a> for more info\n </li>\n <li>Smart notifications</li>\n <li>\'Listened\' status for voice messages</li>\n <li>Places in locations (venues, landmarks)</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.4.4\')">\n <div class="md_modal_section_version">0.4.4</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Link Previews:<br/>\n Get rich link summaries for tweets, YouTube videos, Instagram photos and other content.</li>\n\n <li>Check out <a href="https://telegram.org/blog/link-preview" target="_blank">Telegram Blog</a> for more info.</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.4.3\')">\n <div class="md_modal_section_version">0.4.3</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Sessions List:<br/>\n View your active Telegram sessions (on desktop, tablet and mobile devices) and close specific sessions remotely.</li>\n\n <li>Two-step verification:<br/>\n Set up an additional password that will be required to log into your Telegram account.</li>\n\n <li>Check out <a href="https://telegram.org/blog/sessions-and-2-step-verification" target="_blank">Telegram Blog</a> for more info.</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.4.2\')">\n <div class="md_modal_section_version">0.4.2</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Optimization for screens with smaller Y-resolutions.</li>\n <li>Supported Spotify URL embeds.</li>\n <li>Mentions of the current user in group chats are now highlighted.</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.4.1\')">\n <div class="md_modal_section_version">0.4.1</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Reply to specific messages in groups.</li>\n <li>Mention @usernames in groups to notify multiple users.</li>\n <li>Revised notifications in groups: mentioned users and people you reply to will be notified (private chat notification settings apply in this case instead of group settings). Check out <a href="https://telegram.org/blog/replies-mentions-hashtags" target="_blank">Telegram Blog</a> for more info.</li>\n <li>Setting to disable message preview</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.4.0\')">\n <div class="md_modal_section_version">0.4.0</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Full stickers support</li>\n <li>Multisearch box: instantly find chats, usernames and messages</li>\n <li>Emoji autocomplete: e.g., type <strong>:kiss</strong> in the message field to see the list. <a href="http://www.emoji-cheat-sheet.com/" target="_blank">Full cheat sheet &raquo;</a></li>\n <li>Added \'typing\' notification in chats list</li>\n <li>Online members counter in group headers</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.3.9\')">\n <div class="md_modal_section_version">0.3.9</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>[Desktop] Material design completed</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.3.8\')">\n <div class="md_modal_section_version">0.3.8</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Telegram.me links open right in Telegram Web when authorized</li>\n <li>@username mentions in messages are clickable and open a conversation with the user</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.3.7\')">\n <div class="md_modal_section_version">0.3.7</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>[Desktop] New material design for modal windows</li>\n <li>[Desktop] Forward messages to multiple recipients</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.3.6\')">\n <div class="md_modal_section_version">0.3.6</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>New viewer for photos, videos, documents.</li>\n <li>[FirefoxOS] Improved media downloads.</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.3.5\')">\n <div class="md_modal_section_version">0.3.5</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added embedded Soundcloud tracks and playlists.</li>\n <li>Added global user search to contacts list.</li>\n <li>Added switch to mobile version on window resize.</li>\n <li>Migrate to HTTPS notification</li>\n <li>Bugfixes.</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.3.4\')">\n <div class="md_modal_section_version">0.3.4</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added embedded Facebook posts and Vimeo videos.</li>\n <li>Improved IE10+ support: downloading files and style fixes.</li>\n <li>Added unsupported media playback warning.</li>\n <li>Bugfixes.</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.3.3\')">\n <div class="md_modal_section_version">0.3.3</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added Native Client module: dramatically improved encryption speed; Download and upload speed is now as high as in native applications.</li>\n <li>HTTPS. We recommend you to use <a href="https://web.telegram.org" target="_blank">https://web.telegram.org</a>.</li>\n <li>Added multiple open tabs warning. Please note, that only one tab with Telegram Web will work.</li>\n <li>Added embedded Instagram, Twitter, Vine, YouTube links.</li>\n <li>Jump to selected spot when playing back audio.</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.3.2\')">\n <div class="md_modal_section_version">0.3.2</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Usernames support: <a href="" ng-click="changeUsername()">Choose a username right now!</a></li>\n <li>Search can now find public users by username.</li>\n <li>Most popular emoticons shown in \'recent\' when empty</li>\n <li>[ChromeApp] Added saving window position and size</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.3.1\')">\n <div class="md_modal_section_version">0.3.1</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>New languages: Spanish, German and Italian are now available </li>\n <li>New custom-made audio player</li>\n <li>Bad browser page for IE 6-9</li>\n <li>Perfomance improvements and bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.3.0\')">\n <div class="md_modal_section_version">0.3.0</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Log in codes may be received in other Telegram apps</li>\n <li>Partner\'s online status updates automatically</li>\n <li>Added support for non-english hashtags in messages</li>\n <li>Fixed invalid scrollbar width bug</li>\n <li>[Desktop] Added automatic country code detection</li>\n <li>[FirefoxOS] Improved PUSH-notifications for &lt;= 1.1</li>\n <li>[FirefoxOS] Fixed emoji in notifications</li>\n <li>[FirefoxOS] Fixed attachment bug for &lt;= 1.1</li>\n <li>[FirefoxOS] Added phonebook permissions handling</li>\n <li>[FirefoxOS] Added ability to share Gallery photos in Telegram</li>\n </ul>\n </div>\n </div>\n\n </div>\n\n\n <div class="changelog_footer_wrap clearfix">\n <a class="changelog_github_link" href="https://github.com/zhukov/webogram" target="_blank">GitHub</a>\n <a ng-show="changelogHidden" class="changelog_more_link" href="" ng-click="showAllVersions()">View Previous Updates</a>\n </div>\n\n </div>\n\n</div>'),e.put("partials/desktop/channel_edit_modal.html",'<div class="md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <form class="modal_simple_form" ng-submit="updateChannel()">\n\n <h4 my-i18n="channel_edit_modal_title"></h4>\n\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="channel_edit_name"></label>\n <input class="md-input" my-focused type="text" ng-model="channel.title" />\n </div>\n\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="channel_edit_about"></label>\n <input class="md-input" type="text" ng-model="channel.about" />\n </div>\n\n </form>\n\n </div>\n\n <div class="md_simple_modal_footer">\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: channel.updating}" ng-click="updateChannel()" ng-bind="channel.updating ? \'channel_edit_submit_active\' : \'channel_edit_submit\' | i18n" ng-disabled="channel.updating"></button>\n </div>\n\n</div>'),e.put("partials/desktop/channel_modal.html",'<div class="chat_modal_wrap md_modal_wrap" my-modal-position>\n\n <div class="md_modal_head">\n <div class="md_modal_title_wrap">\n <div class="md_modal_actions_wrap clearfix">\n <a class="md_modal_action md_modal_action_close" ng-click="$close()" my-i18n="modal_close"></a>\n <a class="md_modal_action" ng-if="hasRights(\'edit_title\')" ng-click="editChannel()" my-i18n="modal_edit"></a>\n </div>\n <div class="md_modal_title" ng-switch="isMegagroup">\n <span ng-switch-when="true" my-i18n="group_modal_info"></span>\n <span ng-switch-default my-i18n="channel_modal_info"></span>\n </div>\n </div>\n\n <div class="peer_modal_profile_wrap clearfix">\n <div class="peer_modal_photo_wrap pull-left" ng-switch="photo.updating">\n <div ng-switch-when="true" class="peer_modal_photo md_photo_loading loading_dots">\n <i></i><i></i><i></i>\n </div>\n <a ng-switch-default ng-click="openPhoto(chatFull.chat_photo.id, {p: -chatFull.chat.id})" class="peer_modal_photo" my-peer-photolink="::-chatFull.chat.id" img-class="peer_modal_photo" no-open="true" watch="true" ng-class="{disabled: !chatFull.chat.photo.photo_small}" ng-disabled="!chatFull.chat.photo.photo_small"></a>\n </div>\n <div class="peer_modal_profile">\n <div class="peer_modal_profile_name" my-peer-link="-chatFull.chat.id" verified="true"></div>\n <div class="peer_modal_profile_description" ng-if="chatFull.participants_count > 0">\n <ng-pluralize count="chatFull.participants_count"\n when="group_modal_pluralize_participants">\n </ng-pluralize>\n </div>\n </div>\n </div>\n </div>\n\n <div class="md_modal_split_actions_wrap">\n <div class="md_modal_split_actions" ng-switch="hasRights(\'edit_photo\')">\n <div ng-switch-when="true" class="md_modal_split_action">\n <input my-file-upload type="file" multiple="false" class="im_attach_input" size="120" multiple="false" accept="image/x-png, image/png, image/gif, image/jpeg" title="{{\'group_modal_update_photo\' | i18n}}" />\n <i class="md_modal_split_action_camera"></i>\n </div>\n <a ng-switch-default class="md_modal_split_action" href="" ng-click="goToHistory()" title="{{\'user_modal_send_message\' | i18n}}">\n <i class="md_modal_split_action_msg"></i>\n </a>\n </div>\n </div>\n\n <div class="md_modal_body">\n\n <div class="md_modal_sections clearfix">\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_number" ng-if="chatFull.rAbout || chatFull.chat.username || chatFull.chat.pFlags.creator">\n <i class="md_modal_section_icon md_modal_section_icon_about"></i>\n\n <div class="md_modal_section_param_wrap" ng-if="chatFull.about.length > 0">\n <div class="md_modal_section_param_value">\n <span ng-bind-html="chatFull.rAbout"></span>\n </div>\n <div class="md_modal_section_param_name" my-i18n="channel_modal_description"></div>\n </div>\n\n <div class="md_modal_section_param_wrap" ng-if="chatFull.chat.username">\n <div class="md_modal_section_param_value">\n <a class="settings_modal_username_link" ng-click="shareLink($event)" ng-bind="\'https://telegram.me/\' + chatFull.chat.username" ng-href="https://telegram.me/{{chatFull.chat.username}}" target="_blank"></a>\n </div>\n <div class="md_modal_section_param_name" my-i18n="channel_modal_share_link"></div>\n </div>\n\n <div class="md_modal_section_param_wrap" ng-if="!chatFull.chat.username &amp;&amp; chatFull.chat.pFlags.creator">\n <div class="md_modal_section_param_value" ng-switch="chatFull.exported_invite._">\n <a ng-switch-when="chatInviteExported" class="settings_modal_username_link" ng-click="shareLink($event)" ng-bind="chatFull.exported_invite.link" ng-href="{{chatFull.exported_invite.link}}" target="_blank"></a>\n <span ng-switch-default my-i18n="channel_modal_share_loading">\n <my-i18n-param name="dots"><span my-loading-dots></span></my-i18n-param>\n </span>\n </div>\n <div class="md_modal_section_param_name" my-i18n="channel_modal_share_link"></div>\n </div>\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_link" ng-if="hasRights(\'invite\') || chatFull.chat.pFlags.left">\n <i class="md_modal_section_icon md_modal_section_icon_person"></i>\n\n <div class="md_modal_section_link_wrap" ng-switch="chatFull.chat.pFlags.left">\n <a ng-switch-when="true" class="md_modal_section_link" ng-click="joinChannel()" my-i18n="channel_modal_join"></a>\n <a ng-switch-default class="md_modal_section_link" ng-click="inviteToChannel()" my-i18n="channel_modal_add_member"></a>\n </div>\n\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_toggle">\n <i class="md_modal_section_icon md_modal_section_icon_notification"></i>\n\n <a class="md_modal_section_toggle_wrap tg_checkbox" ng-click="settings.notifications = !settings.notifications" ng-class="settings.notifications ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="group_modal_notifications"></span>\n </a>\n\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_link" ng-if="chatFull.chat.pFlags.creator || !chatFull.chat.pFlags.left && !chatFull.chat.pFlags.kicked && !isMegagroup">\n <i class="md_modal_section_icon md_modal_section_icon_more"></i>\n\n <div class="md_modal_section_link_wrap" ng-if="!chatFull.chat.pFlags.creator && !chatFull.chat.pFlags.left && !chatFull.chat.pFlags.kicked && !isMegagroup">\n <a class="md_modal_section_link" ng-click="leaveChannel()" my-i18n="channel_modal_leave_channel"></a>\n </div>\n\n <div class="md_modal_section_link_wrap" ng-if="chatFull.chat.pFlags.creator">\n <a class="md_modal_section_link md_modal_section_link_danger" ng-click="deleteChannel()" ng-switch="isMegagroup">\n <span ng-switch-when="true" my-i18n="group_modal_delete_group"></span>\n <span ng-switch-default my-i18n="channel_modal_delete_channel"></span>\n </a>\n </div>\n\n </div>\n\n </div>\n\n <div ng-if="chatFull.participants.participants.length > 0">\n\n <div class="md_modal_section_splitter"></div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_peers">\n <i class="md_modal_section_icon md_modal_section_icon_people"></i>\n\n <div class="md_modal_section_peers_wrap">\n\n <div class="md_modal_list_peer_wrap clearfix" ng-repeat="participant in chatFull.participants.participants">\n\n <a ng-if="participant.canLeave" ng-click="leaveChannel()" class="md_modal_list_peer_action pull-right" my-i18n="group_modal_menu_leave"></a>\n <a ng-if="participant.canKick" ng-click="kickFromChannel(participant.user_id)" class="md_modal_list_peer_action pull-right" my-i18n="group_modal_members_kick"></a>\n\n <a class="md_modal_list_peer_photo pull-left" my-peer-photolink="::participant.user_id" img-class="md_modal_list_peer_photo"></a>\n\n <div class="md_modal_list_peer_name">\n <a class="md_modal_list_peer_name" my-peer-link="participant.user_id"></a>\n </div>\n <div class="md_modal_list_peer_description" my-user-status="::participant.user_id" bot-chat-privacy="true"></div>\n </div>\n\n </div>\n\n </div>\n\n </div>\n </div>\n\n\n</div>\n'),e.put("partials/desktop/chat_create_modal.html",'<div class="md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <form class="modal_simple_form" ng-submit="updateGroup()">\n\n <h4 my-i18n="group_create_modal_title"></h4>\n\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="group_create_name"></label>\n <input class="md-input" my-focused type="text" ng-model="group.name" />\n </div>\n\n </form>\n\n </div>\n\n <div class="md_simple_modal_footer">\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: group.creating}" ng-click="createGroup()" ng-bind="group.creating ? \'group_create_submit_active\' : \'group_create_submit\' | i18n" ng-disabled="group.creating"></button>\n </div>\n\n</div>'),e.put("partials/desktop/chat_edit_modal.html",'<div class="md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <form class="modal_simple_form" ng-submit="updateGroup()">\n\n <h4 my-i18n="group_edit_modal_title"></h4>\n\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="group_edit_name"></label>\n <input class="md-input" my-focused type="text" ng-model="group.name" />\n </div>\n\n </form>\n\n </div>\n\n <div class="md_simple_modal_footer">\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: group.updating}" ng-click="updateGroup()" ng-bind="group.updating ? \'group_edit_submit_active\' : \'group_edit_submit\' | i18n" ng-disabled="group.updating"></button>\n </div>\n\n</div>'),e.put("partials/desktop/chat_invite_link_modal.html",'<div class="md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <div class="modal_simple_form">\n\n <h4 my-i18n="group_invite_link_modal_title"></h4>\n\n <div ng-switch="exportedInvite.canRevoke">\n <div ng-switch-when="true">\n <div class="md-input-group md-textarea-group" my-labeled-input>\n <label class="md-input-label" my-i18n="group_invite_link_link_label"></label>\n <textarea class="md-input" ng-model="exportedInvite.link" rows="2" my-copy-field="\'ui_invite_select\'"></textarea>\n </div>\n </div>\n\n <div ng-switch-default>\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="group_invite_link_link_label"></label>\n <input class="md-input" type="text" ng-model="exportedInvite.link" my-copy-field="\'ui_invite_select\'" />\n </div>\n </div>\n\n </div>\n\n </div>\n\n </div>\n\n <div class="md_simple_modal_footer" ng-switch="exportedInvite.canRevoke">\n <div ng-switch-when="true">\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: exportedInvite.revoking}" ng-click="revokeLink()" ng-bind="exportedInvite.revoking ? \'group_invite_revoke_active\' : \'group_invite_revoke\' | i18n" ng-disabled="exportedInvite.revoking"></button>\n </div>\n </div>\n\n</div>'),e.put("partials/desktop/chat_modal.html",'<div class="chat_modal_wrap md_modal_wrap" my-modal-position>\n\n <div class="md_modal_head">\n <div class="md_modal_title_wrap">\n <div class="md_modal_actions_wrap clearfix">\n <a class="md_modal_action md_modal_action_close" ng-click="$close()" my-i18n="modal_close"></a>\n <a class="md_modal_action" ng-if="hasRights(\'edit_title\')" ng-click="editTitle()" my-i18n="modal_edit"></a>\n </div>\n <div class="md_modal_title" my-i18n="group_modal_info"></div>\n </div>\n\n <div class="peer_modal_profile_wrap clearfix">\n <div class="peer_modal_photo_wrap pull-left" ng-switch="photo.updating">\n <div ng-switch-when="true" class="peer_modal_photo md_photo_loading loading_dots">\n <i></i><i></i><i></i>\n </div>\n <a ng-switch-default ng-click="openPhoto(chatFull.chat_photo.id, {p: -chatFull.chat.id})" class="peer_modal_photo" my-peer-photolink="::-chatFull.chat.id" img-class="peer_modal_photo" no-open="true" watch="true" ng-class="{disabled: !chatFull.chat.photo.photo_small}" ng-disabled="!chatFull.chat.photo.photo_small"></a>\n </div>\n <div class="peer_modal_profile">\n <div class="peer_modal_profile_name" my-peer-link="-chatFull.chat.id"></div>\n <div class="peer_modal_profile_description" ng-if="chatFull.chat.participants_count > 0">\n <ng-pluralize count="chatFull.chat.participants_count"\n when="group_modal_pluralize_participants">\n </ng-pluralize>\n </div>\n </div>\n </div>\n </div>\n\n <div class="md_modal_split_actions_wrap">\n <div class="md_modal_split_actions">\n <div class="md_modal_split_action">\n <input my-file-upload type="file" multiple="false" class="im_attach_input" size="120" multiple="false" accept="image/x-png, image/png, image/gif, image/jpeg" title="{{\'group_modal_update_photo\' | i18n}}" />\n <i class="md_modal_split_action_camera"></i>\n </div>\n </div>\n </div>\n\n <div class="md_modal_body">\n\n <div class="md_modal_sections clearfix">\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_link" ng-if="hasRights(\'invite\') && chatFull.participants.participants.length < maxParticipants || chatFull.chat.pFlags.left">\n <i class="md_modal_section_icon md_modal_section_icon_person"></i>\n\n <div class="md_modal_section_link_wrap" ng-switch="chatFull.chat.pFlags.left">\n\n <a ng-switch-when="true" class="md_modal_section_link" ng-click="returnToGroup()" my-i18n="group_modal_return"></a>\n <a ng-switch-default class="md_modal_section_link" ng-click="inviteToGroup()" my-i18n="group_modal_add_member"></a>\n </div>\n\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_link" ng-if="chatFull.chat._ != \'chatForbidden\' && !chatFull.chat.pFlags.left && chatFull.chat.pFlags.creator">\n\n <div class="md_modal_section_link_wrap">\n <a class="md_modal_section_link" ng-click="inviteViaLink()" my-i18n="group_modal_menu_share_link"></a>\n </div>\n\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_toggle">\n <i class="md_modal_section_icon md_modal_section_icon_notification"></i>\n\n <a class="md_modal_section_toggle_wrap tg_checkbox" ng-click="settings.notifications = !settings.notifications" ng-class="settings.notifications ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="group_modal_notifications"></span>\n </a>\n\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_link">\n <i class="md_modal_section_icon md_modal_section_icon_more"></i>\n\n <div class="md_modal_section_link_wrap">\n <a class="md_modal_section_link" ng-click="flushHistory()" my-i18n="group_modal_menu_delete_chat"></a>\n </div>\n\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_link" ng-if="chatFull.chat.pFlags.creator && canMigrate">\n\n <div class="md_modal_section_link_wrap">\n <a class="md_modal_section_link" ng-click="migrateToSuperGroup()" my-i18n="group_modal_migrate_to_supergroup"></a>\n </div>\n\n </div>\n\n </div>\n\n <div ng-if="chatFull.chat._ != \'chatForbidden\' &amp;&amp; !chatFull.chat.pFlags.left &amp;&amp; chatFull.participants.participants.length > 0">\n\n <div ng-switch="chatFull.chat.pFlags.creator && canMigrate">\n <div ng-switch-when="true" class="md_modal_section_splitter md_modal_section_splitter_content">\n <h4 class="chat_modal_migrate_header" my-i18n="group_modal_migrate_header"></h4>\n <p class="chat_modal_migrate_description" my-i18n="group_modal_migrate_desc"></p>\n <ul class="chat_modal_migrate_list">\n <li my-i18n="group_modal_migrate_item1"></li>\n <li my-i18n="group_modal_migrate_item2"></li>\n <li my-i18n="group_modal_migrate_item3"></li>\n <li my-i18n="group_modal_migrate_item4"></li>\n </ul>\n </div>\n <div ng-switch-default class="md_modal_section_splitter"></div>\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_peers">\n <i class="md_modal_section_icon md_modal_section_icon_people"></i>\n\n <div class="md_modal_section_peers_wrap">\n\n <div class="md_modal_list_peer_wrap clearfix" ng-repeat="participant in chatFull.participants.participants | orderBy:\'-user.sortStatus\'">\n\n <a ng-if="participant.canLeave" ng-click="leaveGroup()" class="md_modal_list_peer_action pull-right" my-i18n="group_modal_menu_leave"></a>\n <a ng-if="participant.canKick" ng-click="kickFromGroup(participant.user_id)" class="md_modal_list_peer_action pull-right" my-i18n="group_modal_members_kick"></a>\n\n <a class="md_modal_list_peer_photo pull-left" my-peer-photolink="::participant.user_id" img-class="md_modal_list_peer_photo"></a>\n\n <div class="md_modal_list_peer_name">\n <a class="md_modal_list_peer_name" my-peer-link="participant.user_id"></a>\n </div>\n <div class="md_modal_list_peer_description" my-user-status="::participant.user_id" bot-chat-privacy="true"></div>\n </div>\n\n </div>\n\n </div>\n\n </div>\n </div>\n\n\n</div>\n'),e.put("partials/desktop/composer_dropdown.html",'<div ng-switch="type">\n\n <ul ng-switch-when="mentions" class="composer_dropdown">\n <li ng-repeat="user in mentionUsers">\n <a class="composer_mention_option" data-mention="{{user.username}}">\n <span class="composer_user_photo" my-peer-photolink="user.id" img-class="composer_user_photo"></span>\n <span class="composer_user_name" ng-bind-html="user.rFullName"></span>\n <span class="composer_user_mention" ng-bind="\'@\' + user.username"></span>\n </a>\n </li>\n </ul>\n\n <ul ng-switch-when="commands" class="composer_dropdown">\n <li ng-repeat="command in commands track by (command.botID + command.value)">\n <a class="composer_command_option" data-command="{{command.value}}">\n <span class="composer_user_photo" my-peer-photolink="command.botID" img-class="composer_user_photo"></span>\n <span class="composer_command_value" ng-bind="command.value"></span>\n <span class="composer_command_desc" ng-bind-html="command.rDescription"></span>\n </a>\n </li>\n </ul>\n\n <ul ng-switch-when="emoji" my-emoji-suggestions="emojiCodes" class="composer_dropdown"></ul>\n\n <div ng-switch-when="inline" my-inline-results="botResults"></div>\n\n</div>'),e.put("partials/desktop/confirm_modal.html",'<div class="confirm_modal_wrap md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <div class="confirm_modal_description" ng-switch="type">\n <span ng-switch-when="LOGOUT" my-i18n="confirm_modal_logout"></span>\n <span ng-switch-when="WEBOGRAM_UPDATED_RELOAD" my-i18n="confirm_modal_update_reload"></span>\n <span ng-switch-when="HISTORY_FLUSH" my-i18n="confirm_modal_history_flush"></span>\n <span ng-switch-when="TERMINATE_SESSIONS" my-i18n="confirm_modal_terminate_sessions"></span>\n <span ng-switch-when="TERMINATE_SESSION" my-i18n="confirm_modal_terminate_session"></span>\n\n <span ng-switch-when="FILES_CLIPBOARD_PASTE">\n <ng-pluralize count="files.length"\n when="confirm_modal_clipboard_X_files_send">\n </ng-pluralize>\n </span>\n <div ng-switch-when="FILE_CLIPBOARD_PASTE">\n <span my-i18n="confirm_modal_clipboard_file_send"></span>\n <div class="confirm_modal_paste_image" ng-if="fileUrl !== false" ng-style="{backgroundImage: \'url(\' + fileUrl + \')\'}"></div>\n </div>\n <span ng-switch-when="MESSAGE_DELETE" my-i18n="confirm_modal_message_delete"></span>\n <span ng-switch-when="MESSAGES_DELETE">\n <ng-pluralize count="count"\n when="confirm_modal_X_messages_delete">\n </ng-pluralize>\n </span>\n <span ng-switch-when="PHOTO_DELETE" my-i18n="confirm_modal_photo_delete"></span>\n <span ng-switch-when="CONTACTS_IMPORT_PERFORM" my-i18n="confirm_modal_contacts_import"></span>\n <div ng-switch-when="LOGIN_PHONE_CORRECT">\n <my-i18n msgid="confirm_modal_login_phone_correct"></my-i18n>\n <div class="confirm_phone_number">\n <span ng-bind="country_code"></span> <span ng-bind="phone_number"></span>\n </div>\n </div>\n <my-i18n>\n <span ng-switch-when="FORWARD_PEER" my-i18n-format="confirm_modal_forward_to_peer"></span>\n <span ng-switch-when="SHARE_CONTACT_PEER" my-i18n-format="confirm_modal_send_to_peer"></span>\n <span ng-switch-when="SHARE_URL" my-i18n-format="confirm_modal_send_to_peer"></span>\n <span ng-switch-when="EXT_SHARE_PEER" my-i18n-format="confirm_modal_share_file_peer"></span>\n <span ng-switch-when="INVITE_TO_GROUP" my-i18n-format="confirm_modal_invite_peer"></span>\n <my-i18n-param name="peer">\n <strong my-peer-link="peer_id"></strong>\n </my-i18n-param>\n </my-i18n>\n <div ng-switch-when="APPLY_LANG_WITH_RELOAD" my-i18n="confirm_modal_apply_lang_with_reload_md"></div>\n <div ng-switch-when="MIGRATE_TO_HTTPS" my-i18n="confirm_modal_migrate_to_https_md"></div>\n <div ng-switch-when="SWITCH_DESKTOP_VERSION" my-i18n="confirm_modal_resize_desktop_md"></div>\n <div ng-switch-when="SWITCH_MOBILE_VERSION" my-i18n="confirm_modal_resize_mobile_md"></div>\n <div ng-switch-when="RECOVERY_EMAIL_EMPTY" my-i18n="confirm_modal_recovery_email_empty_md"></div>\n <div ng-switch-when="PASSWORD_ABORT_SETUP" my-i18n="confirm_modal_abort_password_setup"></div>\n <div ng-switch-when="RESET_ACCOUNT" my-i18n="confirm_modal_reset_account_md"></div>\n <div ng-switch-when="JOIN_GROUP_BY_LINK" my-i18n="confirm_modal_join_group_link">\n <my-i18n-param name="title"><strong ng-bind="title"></strong></my-i18n-param>\n </div>\n <div ng-switch-when="JOIN_CHANNEL_BY_LINK" my-i18n="confirm_modal_join_channel_link">\n <my-i18n-param name="title"><strong ng-bind="title"></strong></my-i18n-param>\n </div>\n <div ng-switch-when="REVOKE_GROUP_INVITE_LINK" my-i18n="confirm_modal_revoke_group_link"></div>\n <div ng-switch-when="REVOKE_CHANNEL_INVITE_LINK" my-i18n="confirm_modal_revoke_channel_link"></div>\n <div ng-switch-when="CHANNEL_DELETE" my-i18n="confirm_modal_delete_channel_md"></div>\n <div ng-switch-when="MEGAGROUP_DELETE" my-i18n="confirm_modal_delete_group_md"></div>\n <div ng-switch-when="JUMP_EXT_URL" my-i18n="confirm_modal_jump_ext_url_md" class="confirm_modal_extlink_jump">\n <my-i18n-param name="url"><strong ng-bind="url"></strong></my-i18n-param>\n </div>\n <div ng-switch-when="SUPERGROUP_MIGRATE" my-i18n="confirm_modal_migrate_supergroup_md"></div>\n <div ng-switch-when="BOT_ACCESS_PHONE" my-i18n="confirm_modal_bot_access_phone"></div>\n <div ng-switch-when="BOT_ACCESS_GEO" my-i18n="confirm_modal_bot_access_geo"></div>\n <div ng-switch-when="BOT_ACCESS_GEO_INLINE" my-i18n="confirm_modal_bot_access_geo_inline"></div>\n\n\n\n <span ng-switch-default ng-switch="message.length > 0">\n <span ng-switch-when="true" ng-bind="message"></span>\n <span ng-switch-default my-i18n="confirm_modal_are_u_sure"></span>\n </span>\n </div>\n\n </div>\n\n <div class="md_simple_modal_footer">\n <button class="btn btn-md" ng-click="$dismiss()">\n <span my-i18n="modal_cancel"></span>\n </button>\n <button class="btn btn-md btn-md-primary" ng-switch="type" ng-click="$close()" ng-class="{\'btn-md-danger\': type == \'RESET_ACCOUNT\'}" my-focused >\n <span ng-switch-when="LOGOUT" my-i18n="confirm_modal_logout_submit"></span>\n <span ng-switch-when="HISTORY_FLUSH" my-i18n="confirm_modal_history_flush_submit"></span>\n <span ng-switch-when="FILES_CLIPBOARD_PASTE" my-i18n="confirm_modal_clipboard_files_send_submit"></span>\n <span ng-switch-when="FILE_CLIPBOARD_PASTE" my-i18n="confirm_modal_clipboard_file_send_submit"></span>\n <span ng-switch-when="MESSAGE_DELETE" my-i18n="confirm_modal_message_delete_submit"></span>\n <span ng-switch-when="MESSAGES_DELETE" my-i18n="confirm_modal_messages_delete_submit"></span>\n <span ng-switch-when="PHOTO_DELETE" my-i18n="confirm_modal_photo_delete_submit"></span>\n <span ng-switch-when="FORWARD_PEER" my-i18n="confirm_modal_forward_message_submit"></span>\n <span ng-switch-when="PHOTO_SHARE_PEER" my-i18n="confirm_modal_share_photo_submit"></span>\n <span ng-switch-when="VIDEO_SHARE_PEER" my-i18n="confirm_modal_share_video_submit"></span>\n <span ng-switch-when="SHARE_CONTACT_PEER" my-i18n="confirm_modal_share_contact_submit"></span>\n <span ng-switch-when="EXT_SHARE_PEER" my-i18n="confirm_modal_share_file_submit"></span>\n <span ng-switch-when="RESET_ACCOUNT" my-i18n="confirm_modal_reset_account_submit"></span>\n <span ng-switch-default my-i18n="modal_ok"></span>\n </button>\n </div>\n\n</div>\n'),e.put("partials/desktop/contacts_modal.html",'<div class="contacts_modal_wrap md_modal_wrap" my-modal-position>\n\n <div class="md_modal_head md_modal_head_simple">\n <div class="md_modal_title_wrap">\n <div class="md_modal_actions_wrap clearfix">\n <a class="md_modal_action md_modal_action_close" ng-if="action != \'edit\'" ng-click="$dismiss()" my-i18n="modal_close"></a>\n <a class="md_modal_action" ng-if="action == \'edit\'" class="contacts_modal_edit_link" ng-click="toggleEdit(false)" my-i18n="contacts_modal_edit_cancel"></a>\n <a class="md_modal_action" ng-if="!action" ng-click="toggleEdit(true)" my-i18n="contacts_modal_edit_list"></a>\n </div>\n </div>\n <div class="md_modal_title" ng-switch="action">\n <div ng-switch-when="new_group" ng-switch="selectedCount > 0">\n <span ng-switch-when="true">\n <ng-pluralize count="selectedCount" when="contacts_modal_pluralize_new_group_members">\n </ng-pluralize>\n </span>\n <span ng-switch-default my-i18n="group_create_contacts_modal_title"></span>\n </div>\n <span ng-switch-default my-i18n="contacts_modal_title"></span>\n </div>\n </div>\n\n <div class="md_modal_body">\n\n <div class="contacts_modal_search">\n <input class="form-control contacts_modal_search_field no_outline" my-focused type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query" autocomplete="off" />\n <a class="im_dialogs_search_clear tg_search_clear" ng-click="search.query = \'\'" ng-show="search.query.length">\n <i class="icon icon-search-clear"></i>\n </a>\n </div>\n\n <div my-contacts-list class="contacts_modal_col">\n\n <div class="contacts_wrap nano" my-infinite-scroller>\n <div class="contacts_scrollable_wrap nano-content" ng-switch="contactsEmpty">\n\n <div ng-switch-when="true" class="contacts_modal_contacts_empty" my-vertical-position="0.2" padding="true" my-i18n="contacts_modal_empty_list">\n <my-i18n-param name="import-link"><a href="" ng-click="importContact()">{0}</a></my-i18n-param>\n </div>\n\n <ul ng-switch-default class="contacts_modal_members_list nav nav-pills nav-stacked">\n\n <li class="contacts_modal_contact_wrap clearfix" ng-repeat="contact in contacts | orderBy:\'user.sortName\' | limitTo: slice.limit track by contact.userID" ng-class="{active: selectedContacts[contact.userID], disabled: disabledContacts[contact.userID]}">\n <a class="contacts_modal_contact" ng-click="contactSelect(contact.userID)">\n\n <div class="md_modal_list_peer_photo pull-left" my-peer-photolink="::contact.userID" img-class="md_modal_list_peer_photo"></div>\n <div class="md_modal_list_peer_name" my-peer-link="contact.userID"></div>\n <div class="md_modal_list_peer_description" ng-switch="contact.found">\n <span ng-switch-when="true" ng-bind="\'@\' + contact.user.username"></span>\n <span ng-switch-default my-user-status="::contact.userID"></span>\n </div>\n\n </a>\n </li>\n\n </ul>\n\n </div>\n </div>\n\n </div>\n\n </div>\n\n <div class="md_modal_footer clearfix" ng-switch="action">\n\n <div ng-switch-when="new_group" class="pull-right">\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" ng-click="submitSelected()" type="submit" my-i18n="modal_next"></button>\n </div>\n\n <button ng-switch-when="select" class="btn btn-md btn-md-primary pull-right" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" ng-click="submitSelected()" type="submit" my-i18n="modal_next"></button>\n\n <button ng-switch-when="edit" class="btn btn-md btn-md-danger pull-right" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" ng-click="deleteSelected()">\n <my-i18n msgid="contacts_modal_edit_delete"></my-i18n>\n <strong ng-bind="selectedCount"></strong>\n </button>\n\n <div ng-switch-default class="text-center">\n <button class="btn btn-md btn-md-primary" ng-click="importContact()" my-i18n="contacts_modal_new_contact"></button>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/desktop/country_select_modal.html",'<div class="countries_modal_wrap md_modal_wrap" my-modal-position>\n\n <div class="md_modal_head md_modal_head_simple">\n <div class="md_modal_title_wrap">\n <div class="md_modal_actions_wrap clearfix">\n <a class="md_modal_action md_modal_action_close" ng-click="$dismiss()" my-i18n="modal_close"></a>\n </div>\n </div>\n <div class="md_modal_title" my-i18n="country_select_modal_title"></div>\n </div>\n\n <div class="md_modal_body">\n\n <div class="countries_modal_search">\n <input class="form-control countries_modal_search_field no_outline" my-focused type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query" autocomplete="off" />\n <a class="countries_modal_search_clear tg_search_clear" ng-click="search.query = \'\'" ng-show="search.query.length">\n <i class="icon icon-search-clear"></i>\n </a>\n\n </div>\n\n <div class="countries_modal_col" my-countries-list>\n\n <div class="countries_wrap nano" my-infinite-scroller>\n <div class="countries_scrollable_wrap nano-content">\n\n <ul class="countries_modal_members_list nav nav-pills nav-stacked">\n\n <li class="countries_modal_country_wrap clearfix" ng-repeat="country in countries | limitTo : slice.limit track by $index">\n <a class="countries_modal_country" ng-click="$close(country)">\n <span class="countries_modal_country_code pull-right" ng-bind="country.code"></span>\n <span class="countries_modal_country_name" ng-bind="country.name"></span>\n </a>\n </li>\n\n </ul>\n\n </div>\n </div>\n\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/desktop/dialog.html",'<a class="im_dialog" ng-mousedown="dialogSelect(dialogMessage.peerString, dialogMessage.unreadCount == -1 && dialogMessage.mid)">\n\n <div class="im_dialog_meta pull-right text-right">\n <div class="im_dialog_date" ng-bind="dialogMessage.dateText"></div>\n <span\n class="im_dialog_badge badge"\n ng-show="dialogMessage.unreadCount > 0 && !dialogMessage.pFlags.out"\n ng-bind="dialogMessage.unreadCount"\n my-peer-muted="dialogMessage.peerID" muted-class="im_dialog_badge_muted"\n ></span>\n <i\n class="im_dialog_unread"\n ng-show="dialogMessage.pFlags.out && dialogMessage.pFlags.unread"\n ></i>\n </div>\n\n <div class="im_dialog_photo pull-left" my-peer-photolink="::dialogMessage.peerID" img-class="im_dialog_photo" watch="true"></div>\n\n <div class="im_dialog_message_wrap">\n\n <div class="im_dialog_peer">\n <span my-peer-link="dialogMessage.peerID" verified="true"></span>\n </div>\n\n <div ng-if="dialogMessage.typing > 0" class="im_dialog_message">\n <span class="im_short_message_service" my-i18n="im_conversation_group_typing">\n <my-i18n-param name="name"><span my-peer-link="dialogMessage.typing" short="true" class="im_dialog_chat_from_wrap"></span></my-i18n-param><my-i18n-param name="dots"><span my-loading-dots></span></my-i18n-param>\n </span>\n </div>\n\n <div ng-show="!dialogMessage.typing" ng-switch="dialogMessage.deleted">\n <div ng-switch-when="true" class="im_dialog_message">\n <span class="im_dialog_message_text" my-i18n="conversation_message_deleted"></span>\n </div>\n <div ng-switch-default class="im_dialog_message">\n <span ng-switch="dialogMessage.peerID > 0 || dialogMessage.fromID < 0">\n <span ng-switch-when="true">\n <span class="im_dialog_chat_from_wrap" ng-if="dialogMessage.pFlags.out && dialogMessage.fromID > 0">\n <span\n class="im_dialog_chat_from"\n my-i18n="conversation_you"\n ></span><span ng-if="dialogMessage.message.length > 0 || !!dialogMessage.media">:</span>\n </span>\n </span>\n <span ng-switch-default>\n <span class="im_dialog_chat_from_wrap" ng-switch="dialogMessage.pFlags.out && dialogMessage._ != \'messageService\'">\n <span\n ng-switch-when="false"\n class="im_dialog_chat_from"\n my-peer-link="dialogMessage.from_id" short="true" peer-watch="true"\n ></span><span\n ng-switch-when="true"\n class="im_dialog_chat_from"\n my-i18n="conversation_you"\n ></span><span ng-if="dialogMessage.message.length || dialogMessage.media">:</span>\n </span>\n </span>\n </span>\n\n <span my-short-message="dialogMessage"></span>\n </div>\n </div>\n\n </div>\n</a>\n'),e.put("partials/desktop/document_modal.html",'<div class="modal_close_wrap" ng-click="$close()">\n <div class="modal_close"></div>\n</div>\n\n<div class="media_modal_bottom_panel_wrap">\n <div class="media_modal_bottom_panel">\n <div class="media_modal_bottom_actions pull-right">\n <a class="media_modal_action_btn" ng-click="download()" title="{{\'media_modal_download\' | i18n}}">\n <i class="media_modal_action_btn_download"></i>\n </a>\n <a class="media_modal_action_btn" ng-if="messageID" ng-click="forward()" title="{{\'media_modal_forward\' | i18n}}">\n <i class="media_modal_action_btn_forward"></i>\n </a>\n <a class="media_modal_action_btn" ng-if="messageID" ng-click="delete()" title="{{\'media_modal_delete\' | i18n}}">\n <i class="media_modal_action_btn_delete"></i>\n </a>\n </div>\n\n <div class="media_modal_info_wrap pull-left" ng-if="document.user_id > 0" ng-switch="messageID > 0">\n <a class="media_modal_author_photo pull-left" my-peer-photolink="document.user_id" img-class="media_modal_author_photo" watch="true"></a>\n <div class="media_modal_author_name">\n <a class="media_modal_author" my-peer-link="document.user_id" peer-watch="true"></a>\n </div>\n <div class="media_modal_date" ng-if="document.date > 0">\n <a ng-switch-when="true" class="media_modal_date" ng-click="goToMessage()" ng-bind="document.date | dateOrTime :true"></a>\n <span ng-switch-default ng-bind="document.date | dateOrTime :true"></span>\n </div>\n </div>\n\n <div class="media_modal_title_wrap" ng-bind="document.file_name"></div>\n\n </div>\n</div>\n\n<div class="modal-dialog">\n <div class="modal-content">\n <div my-modal-width="{{photo.full.modalWidth}}" class="media_modal_wrap photo_modal_wrap" my-modal-position animation="no">\n\n <div class="modal-body">\n\n <div my-load-document="document"></div>\n\n </div>\n\n </div>\n </div>\n</div>'),e.put("partials/desktop/edit_contact_modal.html",'<div class="md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <form class="modal_simple_form" ng-submit="doImport()">\n\n <h4 my-i18n="contact_edit_modal_title"></h4>\n\n <div class="md-input-group md-input-disabled" my-labeled-input>\n <label class="md-input-label" my-i18n="contact_import_modal_phone"></label>\n <span class="md-input" ng-bind="importContact.phone | phoneNumber"></span>\n </div>\n\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="contact_edit_modal_first_name"></label>\n <input class="md-input" my-focused type="text" ng-model="importContact.first_name" my-submit-on-enter />\n </div>\n\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="contact_edit_modal_last_name"></label>\n <input class="md-input" type="text" ng-model="importContact.last_name" my-submit-on-enter />\n </div>\n\n </form>\n\n </div>\n\n <div class="md_simple_modal_footer">\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: progress.enabled}" ng-click="doImport()" ng-bind="progress.enabled ? \'contact_edit_modal_submit_active\' : \'contact_edit_modal_submit\'| i18n" ng-disabled="progress.enabled"></button>\n </div>\n\n</div>'),e.put("partials/desktop/embed_modal.html",'<div class="modal_close_wrap" ng-click="$close()">\n <div class="modal_close"></div>\n</div>\n\n<div class="media_modal_bottom_panel_wrap">\n <div class="media_modal_bottom_panel">\n <div class="media_modal_bottom_actions pull-right">\n <a class="media_modal_action_btn" ng-click="forward()" title="{{\'media_modal_forward\' | i18n}}">\n <i class="media_modal_action_btn_forward"></i>\n </a>\n <a class="media_modal_action_btn" ng-click="delete()" title="{{\'media_modal_delete\' | i18n}}">\n <i class="media_modal_action_btn_delete"></i>\n </a>\n </div>\n\n <div class="media_modal_info_wrap pull-left" ng-if="webpageID">\n <div class="media_modal_author_name">\n <a class="media_modal_author" href="{{webpage.url}}" target="_blank" ng-bind-html="webpage.rTitle"></a>\n </div>\n <div class="media_modal_date" ng-bind="webpage.site_name || webpage.display_url"></div>\n </div>\n\n <div class="media_modal_title_wrap" my-i18n="media_modal_video"></div>\n </div>\n</div>\n\n<div class="modal-dialog">\n <div class="modal-content">\n <div my-modal-width="{{webpage.full.width - 32}}" class="media_modal_wrap embed_modal_wrap" my-modal-position animation="no">\n\n <div class="modal-body" ng-bind-html="webpage.full.html">\n\n\n </div>\n\n </div>\n </div>\n</div>'),e.put("partials/desktop/emoji_btn_tooltip.html",'<div class="composer_emoji_btn_wrap">\n\n <div class="composer_emoji_tooltip_wrap">\n <div class="composer_emoji_tooltip">\n\n <div class="composer_emoji_tooltip_tabs">\n <a ng-repeat="tab in ::tabs" href="" class="composer_emoji_tooltip_tab" ng-class="[\'composer_emoji_tooltip_tab_\' + tab, curTab == tab ? \'active\' : \'\']" ng-click="tabSelect(tab)"></a>\n </div>\n\n <div class="composer_emoji_content" ng-switch="curTab == \'stickers\'">\n <div ng-switch-when="true" class="composer_emoji_content_emoticons">\n <a class="composer_emoticon_option" href="" ng-repeat="emoji in emojis" ng-click="emojiSelect(emoji)"></a>\n </div>\n <div ng-switch-default class="composer_emoji_content_stickers">\n <a class="composer_sticker_option" href="" ng-repeat="sticker in stickers" ng-click="stickerSelect(sticker)"></a>\n </div>\n </div>\n\n </div>\n </div>\n\n <a class="composer_emoji_btn">\n <i class="icon icon-emoji"></i>\n </a>\n\n</div>'),e.put("partials/desktop/error_modal.html",'<div class="error_modal_wrap md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <h4 ng-if="error" class="md_simple_header" ng-switch="error.type">\n <span ng-switch-when="MEDIA_TYPE_NOT_SUPPORTED" my-i18n="error_modal_media_not_supported_title"></span>\n <span ng-switch-when="USERNAME_NOT_OCCUPIED" my-i18n="error_modal_not_found_title"></span>\n <span ng-switch-when="PASSWORD_RECOVERY_NA" my-i18n="error_modal_recovery_na_title"></span>\n <span ng-switch-default ng-switch="error.code">\n <span ng-switch-when="400" my-i18n="error_modal_bad_request_title"></span>\n <span ng-switch-when="401" my-i18n="error_modal_unauthorized_title"></span>\n <span ng-switch-when="403" my-i18n="error_modal_forbidden_title"></span>\n <span ng-switch-when="404" my-i18n="error_modal_not_found_title"></span>\n <span ng-switch-when="406" my-i18n="error_modal_network_title"></span>\n <span ng-switch-when="420" my-i18n="error_modal_flood_title"></span>\n <span ng-switch-default my-i18n="error_modal_internal_title"></span>\n </span>\n </h4>\n <h4 ng-if="!error" class="md_simple_header" ng-switch="title.length > 0">\n <span ng-switch-when="true" ng-bind="title"></span>\n <span ng-switch-default my-i18n="error_modal_alert"></span>\n </h4>\n\n <div ng-if="error" class="error_modal_description" ng-switch="error.type">\n <span ng-switch-when="NETWORK_BAD_REQUEST" my-i18n="error_modal_network_description"></span>\n <span ng-switch-when="NETWORK_BAD_RESPONSE" my-i18n="error_modal_network_description"></span>\n <span ng-switch-when="FIRSTNAME_INVALID" my-i18n="error_modal_firstname_invali_description"></span>\n <span ng-switch-when="LASTNAME_INVALID" my-i18n="error_modal_lastname_invalid_description"></span>\n <span ng-switch-when="PHONE_NUMBER_INVALID" my-i18n="error_modal_phone_invalid_description"></span>\n <span ng-switch-when="USERS_TOO_MUCH" my-i18n="error_modal_users_too_much_description"></span>\n <span ng-switch-when="PHOTO_INVALID_DIMENSIONS" my-i18n="error_modal_photo_dimensions_invalid_description"></span>\n <span ng-switch-when="VIDEO_EXT_INVALID" my-i18n="error_modal_video_file_invalid_description"></span>\n <span ng-switch-when="PHOTO_CROP_SIZE_SMALL" my-i18n="error_modal_photo_too_small_description"></span>\n <span ng-switch-when="USER_NOT_USING_TELEGRAM" my-i18n="error_modal_no_phone_user_description_md"></span>\n <span ng-switch-when="USERS_NOT_USING_TELEGRAM" my-i18n="error_modal_no_phone_users_description_md"></span>\n <span ng-switch-when="PHONEBOOK_GET_CONTACTS_FAILED" my-i18n="error_modal_phonebook_required_description"></span>\n <span ng-switch-when="USERNAME_INVALID" my-i18n="error_modal_username_invalid_description"></span>\n <span ng-switch-when="USERNAME_OCCUPIED" my-i18n="error_modal_username_occupied_description"></span>\n <span ng-switch-when="MEDIA_TYPE_NOT_SUPPORTED" my-i18n="error_modal_media_not_supported_description"></span>\n <span ng-switch-when="USERNAME_NOT_OCCUPIED" my-i18n="error_modal_username_not_found_description"></span>\n <span ng-switch-when="USER_NOT_MUTUAL_CONTACT" my-i18n="error_modal_user_not_mutual_contact"></span>\n <span ng-switch-when="INVITE_HASH_INVALID" my-i18n="error_modal_invite_link_invalid"></span>\n <span ng-switch-when="INVITE_HASH_EXPIRED" my-i18n="error_modal_invite_link_invalid"></span>\n <span ng-switch-when="INVITE_HASH_EMPTY" my-i18n="error_modal_invite_link_invalid"></span>\n <span ng-switch-when="CHANNEL_PRIVATE" my-i18n="error_modal_channel_not_accessible"></span>\n <span ng-switch-when="PEER_FLOOD" my-i18n="error_modal_not_contact_flood">\n <my-i18n-param name="more-info-link"><a href="https://telegram.org/faq#can-39t-send-messages-to-non-contacts" target="_blank">{0}</a></my-i18n-param>\n </span>\n\n\n <div ng-switch-default ng-switch="error.code">\n <span ng-switch-when="400" my-i18n="error_modal_bad_request_description"></span>\n <span ng-switch-when="401" my-i18n="error_modal_unauthorized_description">\n <my-i18n-param name="login-link"><a href="#/login">{0}</a></my-i18n-param>\n </span>\n <span ng-switch-when="403" my-i18n="error_modal_forbidden_description"></span>\n <span ng-switch-when="404" my-i18n="error_modal_not_found_description"></span>\n <span ng-switch-when="420" my-i18n="error_modal_flood_description"></span>\n <span ng-switch-default my-i18n="error_modal_internal_description"></span>\n </div>\n\n </div>\n\n <div ng-if="error" class="error_modal_details" ng-switch="error.detailsShown">\n <textarea ng-switch-when="true" rows="3" onclick="this.select()">Method: {{error.input || \'N/A\'}}\nUrl: {{error.url || \'N/A\'}}\nResult: {{error.originalError ? error.originalError : (error.stack ? (error.name || \'\') + \' \' + (error.description || error.message) : error)}}\nStack: {{error.originalError.stack || error.stack}}</textarea>\n <div ng-switch-default>\n <a class="error_modal_details_link" href="" ng-click="error.detailsShown = true" my-i18n="error_modal_tech_details"></a>\n </div>\n </div>\n\n <div ng-if="!error" class="error_modal_description" ng-bind="description"></div>\n\n </div>\n\n <div class="md_simple_modal_footer">\n <button class="btn btn-md btn-md-primary" ng-click="$dismiss()" my-focused>\n <span my-i18n="modal_ok"></span>\n </button>\n </div>\n\n</div>\n'),e.put("partials/desktop/footer.html",'<div class="footer_wrap" ng-controller="AppFooterController">\n <a class="footer_link" href="https://telegram.org" target="_blank" my-i18n="head_about"></a>\n <a class="footer_link" ng-click="openSettings()" my-i18n="im_settings"></a>\n <a class="footer_link" href="https://twitter.com/telegram_web" target="_blank" my-i18n="footer_twitter"></a>\n</div>'),e.put("partials/desktop/forwarded_messages.html",'<div class="im_message_reply clearfix" ng-class="{im_message_reply_thumbed: thumb !== false}">\n <div class="im_message_reply_border"></div>\n <div class="im_message_reply_thumb_wrap pull-left" ng-if="thumb !== false">\n <img\n class="im_message_reply_thumb"\n my-load-thumb\n thumb="thumb"\n watch="true"\n />\n </div>\n <div class="im_message_reply_author">\n <span my-peer-link="fromID" peer-watch="true"></span>\n </div>\n <div class="im_message_reply_body" ng-switch="singleMessage !== false">\n <div ng-switch-when="true">\n <span my-short-message="singleMessage"></span>\n </div>\n <div ng-switch-default>\n <span class="im_reply_message_service">\n <ng-pluralize count="count"\n when="im_X_forwarded_messages">\n </ng-pluralize>\n </span>\n </div>\n </div>\n</div>'),e.put("partials/desktop/full_document.html",'<div class="document_modal_image_wrap">\n <div class="img_fullsize_with_progress_wrap document_fullsize_with_progress_wrap" ng-style="{width: frameWidth + \'px\', height: frameHeight + \'px\'}">\n <div class="img_fullsize_progress_overlay">\n <div class="img_fullsize_progress_wrap" ng-style="{width: frameWidth + \'px\', height: frameHeight + \'px\'}">\n <div class="img_fullsize_progress progress tg_progress">\n <div class="progress-bar progress-bar-success" style="width: {{document.progress.percent}}%"></div>\n </div>\n </div>\n </div>\n <div class="img_fullsize_wrap" ng-if="thumbSrc.length > 0">\n <img\n class="img_fullsize"\n ng-src="{{thumbSrc}}"\n ng-style="{width: imageWidth + \'px\', height: imageHeight + \'px\'}"\n />\n </div>\n </div>\n <div class="document_fullsize_wrap" ng-click="toggleZoom(!zoomed)">\n <img class="document_fullsize_img" />\n </div>\n</div>'),e.put("partials/desktop/full_gif.html",'<a class="img_gif_with_progress_wrap" ng-click="toggle($event)">\n\n <div class="img_gif_image_wrap">\n\n <div class="img_gif_meta" ng-show="!isActive" ng-switch="document.progress.enabled">\n <div ng-switch-when="true" class="img_gif_meta_contents">\n <i class="icon icon-cancel">\n <i class="icon icon-bar"></i>\n <i class="icon icon-bar"></i>\n </i>\n <div my-arc-progress="document.progress.percent"></div>\n </div>\n <div ng-switch-default class="img_gif_label noselect img_gif_meta_contents"><span class="copyonly">[</span>GIF<span class="copyonly">]</span></div>\n </div>\n\n <div ng-if="document.url" ng-show="document.downloaded &amp;&amp; isActive" ng-switch="document.mime_type == \'video/mp4\'">\n <video ng-switch-when="true" width="{{document.thumb.width}}" height="{{document.thumb.height}}" loop autoplay class="img_gif_video">\n <source ng-src="{{document.url}}" type="video/mp4">\n </video>\n <img ng-switch-default class="img_gif_image" ng-src="{{document.url}}" width="{{document.thumb.width}}" height="{{document.thumb.height}}" />\n </div>\n <img ng-hide="document.downloaded &amp;&amp; isActive" class="img_gif_thumb" my-load-thumb thumb="document.thumb" />\n\n </div>\n\n</a>'),e.put("partials/desktop/full_photo.html",'<div class="img_fullsize_with_progress_wrap">\n <div class="img_fullsize_progress_overlay" ng-show="progress.enabled">\n <div class="img_fullsize_progress_wrap">\n <div class="img_fullsize_progress progress tg_progress" ng-show="progress.percent > 0">\n <div class="progress-bar progress-bar-success" ng-style="{width: progress.percent + \'%\'}">\n </div>\n </div>\n </div>\n </div>\n <div class="photo_full_wrap">\n <a class="photo_modal_image">\n <img class="photo_modal_image"/>\n </a>\n </div>\n <div class="photo_modal_error_wrap" ng-if="error">\n <div class="photo_modal_error" ng-if="error.html" ng-bind-html="error.html"></div>\n <div class="photo_modal_error" ng-if="error.text" ng-bind="error.text"></div>\n </div>\n</div>'),e.put("partials/desktop/full_video.html",'<div class="img_fullsize_with_progress_wrap" ng-style="{width: video.full.width + \'px\', height: video.full.height + \'px\'}">\n <div class="img_fullsize_progress_overlay" ng-show="video.progress.enabled">\n <div class="img_fullsize_progress_wrap" ng-style="{width: video.full.width + \'px\', height: video.full.height + \'px\'}">\n <div class="img_fullsize_progress progress tg_progress">\n <div class="progress-bar progress-bar-success" style="width: {{video.progress.percent}}%"></div>\n </div>\n </div>\n </div>\n <div class="img_fullsize_wrap" ng-if="!video.url">\n <img\n class="img_fullsize"\n my-load-thumb\n thumb="video.fullThumb"\n />\n </div>\n <div class="video_full_player" ng-if="video.url" ng-switch="player.quicktime">\n <embed ng-switch-when="true" ng-src="{{video.url}}" width="{{video.full.width}}" height="{{video.full.height}}" autoplay="true" CONTROLLER="TRUE" SHOWCONTROLS="TRUE" controller="true" loop="false" pluginspace="http://www.apple.com/quicktime/" />\n <video ng-switch-default width="{{video.full.width}}" height="{{video.full.height}}" controls autoplay >\n <source ng-src="{{video.url}}" type="video/mp4">\n </video>\n </div>\n <div class="video_full_error_wrap" ng-if="error">\n <div class="video_full_error" ng-if="error.html" ng-bind-html="error.html"></div>\n <div class="video_full_error" ng-if="error.text" ng-bind="error.text"></div>\n </div>\n</div>'),e.put("partials/desktop/head.html",'<div class="tg_page_head tg_head_wrap noselect clearfix">\n <div class="tg_head_split">\n\n <div class="tg_head_logo_wrap">\n <div class="tg_head_logo_dropdown dropdown" dropdown>\n <a class="tg_head_btn dropdown-toggle" dropdown-toggle>\n <div class="icon-hamburger-wrap">\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </div><i class="icon icon-tg-title"></i>\n </a>\n\n <ul class="dropdown-menu">\n <li><a ng-click="openGroup()">\n <i class="icon icon-new-group"></i><span my-i18n="im_new_group"></span>\n </a></li>\n <li ng-if="!isEmpty.contacts"><a ng-click="openContacts()">\n <i class="icon icon-contacts"></i><span my-i18n="im_contacts"></span>\n </a></li>\n <li><a ng-click="openSettings()">\n <i class="icon icon-settings"></i><span my-i18n="im_settings"></span>\n </a></li>\n <li><a ng-click="openFaq()">\n <i class="icon icon-faq"></i><span my-i18n="head_telegram_faq"></span>\n </a></li>\n <li><a href="" ng-click="openChangelog()">\n <i class="icon icon-about"></i><span my-i18n="head_about"></span>\n </a></li>\n </ul>\n </div>\n </div>\n\n <div class="tg_head_main_wrap" ng-switch="offline">\n <div ng-switch-when="true" class="tg_head_connecting_wrap" ng-switch="offlineConnecting">\n <span ng-switch-default class="tg_head_connecting_text"><my-i18n msgid="head_waiting_for_network"></my-i18n><span my-loading-dots></span></span>\n <a ng-switch-default class="tg_head_btn" ng-click="retryOnline()" my-i18n="head_retry"></a>\n <span ng-switch-when="true" class="tg_head_connecting_text"><my-i18n msgid="head_connecting"></my-i18n><span my-loading-dots></span></span>\n </div>\n\n <div ng-switch-default ng-if="!!historyPeer.id" class="tg_head_main_peer_wrap">\n\n <a class="tg_head_btn tg_head_msgs_edit_btn" my-i18n="im_edit" ng-click="toggleEdit()"></a>\n\n <div class="tg_head_peer_dropdown tg_head_peer_media_dropdown dropdown" dropdown>\n <a class="tg_head_btn dropdown-toggle" dropdown-toggle my-i18n="im_media"></a>\n <ul class="dropdown-menu">\n <li><a ng-click="toggleMedia(\'photos\')" my-i18n="head_media_photos"></a></li>\n <li><a ng-click="toggleMedia(\'video\')" my-i18n="head_media_video"></a></li>\n <li><a ng-click="toggleMedia(\'documents\')" my-i18n="head_media_documents"></a></li>\n <li><a ng-click="toggleMedia(\'audio\')" my-i18n="head_media_audio"></a></li>\n </ul>\n </div>\n\n <a class="tg_head_btn tg_head_peer_return_btn" ng-show="historyFilter.mediaType.length || historyState.skipped" ng-click="returnToRecent()" ng-switch="historyState.skipped">\n <span ng-switch-when="true" my-i18n="im_show_recent_messages"></span>\n <span ng-switch-default my-i18n="im_show_all_messages"></span>\n <strong class="tg_head_peer_return_count" ng-show="historyState.missedCount > 0" ng-bind="\'+\' + historyState.missedCount"></strong>\n </a>\n\n <div class="tg_head_peer_title_wrap" ng-switch="historyFilter.mediaType">\n <div class="tg_head_peer_media" ng-switch-when="photos">\n <i class="icon icon-filter-photos"></i><span my-i18n="im_media_photos"></span>\n </div>\n <div class="tg_head_peer_media" ng-switch-when="video">\n <i class="icon icon-filter-video"></i><span my-i18n="im_media_video"></span>\n </div>\n <div class="tg_head_peer_media" ng-switch-when="documents">\n <i class="icon icon-filter-documents"></i><span my-i18n="im_media_documents"></span>\n </div>\n <div class="tg_head_peer_media" ng-switch-when="audio">\n <i class="icon icon-filter-audio"></i><span my-i18n="im_media_audio"></span>\n </div>\n\n <a class="tg_head_btn" ng-switch-default ng-click="showPeerInfo()">\n <div class="tg_head_peer_info">\n <span class="tg_head_peer_title" my-peer-link="historyPeer.id" peer-watch="true" dir="auto"></span>\n <span class="tg_head_peer_status" ng-switch="historyPeer.id > 0">\n <span ng-switch-when="true" my-user-status="historyPeer.id"></span>\n <span ng-switch-default my-chat-status="-historyPeer.id"></span>\n </span>\n </div>\n </a>\n\n </div>\n\n </div>\n </div>\n </div>\n</div>'),e.put("partials/desktop/im.html",'<div my-head></div>\n\n<div class="im_page_wrap clearfix" ng-class="{im_page_peer_not_selected: !curDialog.peer}">\n\n <div class="im_page_split clearfix">\n\n <div class="im_dialogs_col_wrap noselect" ng-controller="AppImDialogsController" my-dialogs ng-class="search.query.length > 0 ? \'im_dialogs_col_search\' : \'\'">\n <div class="im_dialogs_panel">\n <div class="im_dialogs_search">\n <input class="form-control im_dialogs_search_field no_outline" type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query" autocomplete="off" />\n <a class="im_dialogs_search_clear tg_search_clear" ng-click="searchClear()" ng-show="search.query.length">\n <i class="icon icon-search-clear"></i>\n </a>\n </div>\n </div>\n\n <div my-dialogs-list class="im_dialogs_col">\n <div class="im_dialogs_wrap nano">\n <div class="im_dialogs_scrollable_wrap nano-content">\n\n <div class="im_dialogs_empty_wrap" ng-if="isEmpty.dialogs && isEmpty.contacts">\n <h3 class="im_dialogs_empty_header" my-i18n="im_no_contacts"></h3>\n <p class="im_dialogs_empty_lead" my-i18n="im_get_started_long"></p>\n <button type="button" class="btn btn-primary btn-sm" ng-click="importContact()" my-i18n="im_add_contact"></button>\n <button ng-if="phonebookAvailable" type="button" class="btn btn-primary btn-sm im_dialogs_import_phonebook" ng-click="importPhonebook()" my-i18n="im_import_phonebook"></button>\n </div>\n\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in dialogs track by dialogMessage.peerID" ng-class="{active: curDialog.peerID == dialogMessage.peerID}"></li>\n </ul>\n\n <div class="im_dialogs_contacts_wrap" ng-show="contacts.length > 0">\n <h5 my-i18n="im_contacts_title"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" ng-repeat="contact in contacts | orderBy:\'user.sortName\' track by contact.userID" ng-class="{active: curDialog.peerID == contact.userID}">\n <a class="im_dialog" ng-mousedown="dialogSelect(contact.peerString)">\n <div class="im_dialog_photo pull-left" my-peer-photolink="contact.userID" img-class="im_dialog_photo" watch="true"></div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" my-peer-link="contact.userID" verified="true"></span>\n </div>\n <div class="im_dialog_message">\n <span class="im_dialog_message_text" my-user-status="::contact.userID"></span>\n </div>\n </div>\n </a>\n </li>\n </ul>\n </div>\n\n <div class="im_dialogs_contacts_wrap" ng-show="foundPeers.length > 0">\n <h5 my-i18n="im_found_title"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" ng-repeat="foundPeer in foundPeers track by foundPeer.id" ng-class="{active: curDialog.peerID == foundPeer.id}">\n <a class="im_dialog" ng-mousedown="dialogSelect(foundPeer.peerString)">\n <div class="im_dialog_photo pull-left" my-peer-photolink="foundPeer.id" img-class="im_dialog_photo" watch="true"></div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" my-peer-link="foundPeer.id" verified="true"></span>\n </div>\n <div class="im_dialog_message">\n <span class="im_dialog_message_text" ng-bind="::\'@\' + foundPeer.username"></span>\n </div>\n </div>\n </a>\n </li>\n </ul>\n </div>\n\n <div class="im_dialogs_messages_wrap" ng-show="foundMessages.length > 0">\n <h5 my-i18n="im_messages"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in foundMessages track by dialogMessage.mid" ng-class="{active: curDialog.peerID == dialogMessage.peerID &amp;&amp; curDialog.messageID == dialogMessage.id}"></li>\n </ul>\n </div>\n\n </div>\n </div>\n </div>\n </div>\n\n <div class="im_history_col_wrap noselect" ng-controller="AppImHistoryController" ng-class="{im_history_loaded: state.loaded}">\n\n <div class="im_history_not_selected_wrap" ng-switch="isEmpty.contacts &amp;&amp; isEmpty.dialogs">\n <div ng-switch-when="true" class="im_history_no_dialogs_wrap">\n <h3 class="im_dialogs_empty_header" my-i18n="im_get_started"></h3>\n <p class="im_dialogs_empty_lead" my-i18n="im_welcome_text"></p>\n <button type="button" class="btn btn-primary btn-sm" ng-click="openSettings()" my-i18n="im_open_settings"></button>\n </div>\n <div ng-switch-default class="im_history_not_selected" my-vertical-position="0.35" padding="true" my-i18n="im_select_a_chat"></div>\n </div>\n\n <div class="im_history_selected_loading_wrap im_history_loading" my-vertical-position="0.4" padding="true">\n <div my-arc-progress stroke="4" width="32"></div>\n </div>\n\n <div class="im_history_selected_wrap">\n <div my-history class="im_history_col">\n\n <div class="im_history_wrap nano">\n\n <div class="im_history_scrollable_wrap nano-content">\n\n <div class="im_history_scrollable">\n <div class="im_history" ng-class="{im_history_selectable: !historyState.botActions, im_history_select_active: historyState.selectActions}">\n\n <div class="im_history_empty_wrap" ng-show="state.empty" ng-switch="state.mayBeHasMore">\n <div ng-switch-when="true" class="im_history_loading" my-vertical-position="0.3" padding="true">\n <div my-arc-progress stroke="4" width="32"></div>\n </div>\n <div ng-switch-default class="im_history_empty" my-vertical-position="0.25" padding="true" my-i18n="im_no_messages"></div>\n </div>\n\n <div class="im_history_messages" ng-class="{im_history_messages_group: historyPeer.id < 0}">\n <div class="im_history_loading_more" ng-class="{im_history_loading_more_active: state.moreActive}">\n <div my-arc-progress stroke="3" width="26"></div>\n </div>\n <div class="im_history_messages_peer" ng-show="peerHistory.peerID == historyPeer.id" ng-repeat="peerHistory in peerHistories">\n <div class="im_history_message_wrap" my-message ng-repeat="historyMessage in peerHistory.messages"></div>\n </div>\n </div>\n\n </div>\n\n <div class="im_history_typing_wrap" ng-switch="historyState.skipped">\n\n <div ng-switch-when="true" class="im_history_loading_less" ng-class="{im_history_loading_less_active: state.lessActive}">\n <div my-arc-progress stroke="3" width="26"></div>\n </div>\n <div ng-switch-default class="im_history_typing" ng-show="historyState.typing.length > 0 &amp;&amp; !historyFilter.mediaType &amp;&amp; !state.empty" ng-switch="historyState.typing.length" my-i18n>\n <span ng-switch-when="1" my-i18n-format="im_one_typing"></span>\n <span ng-switch-when="2" my-i18n-format="im_two_typing"></span>\n <span ng-switch-default my-i18n-format="im_many_typing"></span>\n <my-i18n-param name="name1"><a class="im_history_typing_author" my-peer-link="historyState.typing[0]"></a></my-i18n-param>\n <my-i18n-param name="name2"><a class="im_history_typing_author" my-peer-link="historyState.typing[1]"></a></my-i18n-param>\n <my-i18n-param name="count">{{historyState.typing.length - 2}}</my-i18n-param>\n <my-i18n-param name="dots"><span my-loading-dots></span></my-i18n-param>\n </div>\n </div>\n\n </div>\n\n </div>\n\n </div>\n\n <div class="im_bottom_panel_wrap">\n\n <div class="im_edit_panel_wrap clearfix" ng-show="historyState.actions()" ng-switch="historyState.actions()" ng-class="historyState.channelActions !== false ? \'im_edit_small_panel_wrap\' : \'\'">\n <div class="im_edit_panel_border"></div>\n\n <div ng-switch-when="bot">\n <a ng-show="historyState.botActions == \'param\'" class="btn btn-md btn-md-primary im_edit_cancel_link" ng-click="cancelBot()" my-i18n="modal_cancel"></a>\n <div class="im_edit_start_actions">\n <a class="btn btn-primary im_start_btn" ng-click="startBot()" my-i18n="im_start"></a>\n </div>\n </div>\n <div ng-switch-when="channel">\n <div class="im_edit_start_actions" ng-switch="historyState.channelActions">\n <a ng-switch-when="join" class="btn btn-primary im_start_btn" ng-click="joinChannel()" my-i18n="im_channel_join"></a>\n <a ng-switch-when="mute" class="btn btn-link im_start_btn" ng-click="togglePeerMuted(true)" my-i18n="im_channel_mute"></a>\n <a ng-switch-when="unmute" class="btn btn-link im_start_btn" ng-click="togglePeerMuted(false)" my-i18n="im_channel_unmute"></a>\n </div>\n </div>\n <div ng-switch-when="selected" class="im_edit_selected_actions" my-i18n>\n <a class="btn btn-md btn-md-primary im_edit_cancel_link" ng-click="selectedCancel()" my-i18n="modal_cancel"></a>\n <a class="btn btn-primary im_edit_forward_btn" ng-click="selectedForward()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" my-i18n-format="im_forward"></a>\n <a class="btn btn-primary im_edit_delete_btn" ng-click="selectedDelete()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" my-i18n-format="im_delete" ng-show="historyState.canDelete"></a>\n <a class="btn btn-primary im_edit_reply_btn" ng-click="selectedReply()" ng-show="selectedCount == 1 &amp;&amp; historyState.canReply" my-i18n="im_reply"></a>\n <my-i18n-param name="count"><strong class="im_selected_count" ng-show="selectedCount > 0" ng-bind="selectedCount"></strong></my-i18n-param>\n </div>\n </div>\n\n <div class="im_send_panel_wrap noselect" ng-show="!historyState.actions()">\n\n <div class="im_send_form_wrap1">\n\n <div class="im_send_form_wrap clearfix" ng-controller="AppImSendController" ng-class="{im_send_reply_form_wrap: draftMessage.replyToMessage != null}">\n\n <a class="pull-right im_panel_peer_photo" my-peer-photolink="historyPeer.id" img-class="im_panel_peer_photo" watch="true" ng-show="!draftMessage.isBroadcast">\n <i class="icon im_panel_peer_online" ng-show="historyPeer.id > 0 &amp;&amp; historyPeer.data.status._ == \'userStatusOnline\'"></i>\n </a>\n <a class="pull-left im_panel_own_photo" my-peer-photolink="draftMessage.isBroadcast ? historyPeer.id : ownID" img-class="im_panel_own_photo" watch="true" ng-click="openSettings()" no-open="true"></a>\n\n <form my-send-form draft-message="draftMessage" mentions="mentions" commands="commands" class="im_send_form" ng-class="{im_send_form_empty: !draftMessage.text.length, composer_progress_enabled: draftMessage.inlineProgress}">\n\n <div class="im_send_form_inline_results" my-inline-results="inlineResults"></div>\n\n <div class="im_send_reply_wrap" ng-if="draftMessage.replyToMessage != null">\n <a class="im_send_reply_cancel" ng-mousedown="draftMessage.replyClear()"><i class="icon icon-reply-bar"></i><i class="icon icon-reply-bar"></i></a>\n <a class="im_message_reply_wrap" my-reply-message="draftMessage.replyToMessage" watch="true"></a>\n </div>\n\n <div class="im_send_reply_wrap im_send_fwds_wrap" ng-if="draftMessage.fwdMessages.length > 0">\n <a class="im_send_reply_cancel" ng-mousedown="draftMessage.fwdsClear()"><i class="icon icon-reply-bar"></i><i class="icon icon-reply-bar"></i></a>\n <div class="im_message_reply_wrap" my-forwarded-messages="draftMessage.fwdMessages"></div>\n </div>\n\n <div class="im_send_field_wrap hasselect" ng-class="historyState.replyKeyboard._ == \'replyKeyboardMarkup\' ? \'im_send_field_wrap_2ndbtn\' : \'\'">\n <a class="composer_emoji_insert_btn"><i class="icon icon-emoji"></i></a>\n <div class="composer_progress_icon_wrap">\n <div class="composer_progress_icon" my-arc-progress width="22" stroke="2.5"></div>\n </div>\n <a class="composer_command_btn" ng-show="!historyState.replyKeyboard && commands.list.length > 0 && (!draftMessage.text.length || draftMessage.text[0] == \'/\')" ng-mousedown="toggleSlash($event)" ng-class="draftMessage.text[0] == \'/\' ? \'active\' : \'\'"><i class="icon icon-slash"></i></a>\n <a class="composer_keyboard_btn" ng-show="historyState.replyKeyboard._ == \'replyKeyboardMarkup\'" ng-mousedown="replyKeyboardToggle($event)" ng-class="!historyState.replyKeyboard.pFlags.hidden ? \'active\' : \'\'"><i class="icon icon-keyboard"></i></a>\n\n <div class="im_send_dropbox_wrap" my-i18n="im_photos_drop_text"></div>\n <textarea ng-model="draftMessage.text" class="form-control im_message_field no_outline" dir="auto" ng-trim="false"></textarea>\n </div>\n\n <div class="im_send_buttons_wrap clearfix">\n <button type="submit" class="btn btn-md im_submit nocopy" my-i18n="im_submit_message"></button>\n\n <div class="im_attach pull-left">\n <input type="file" class="im_attach_input" size="28" multiple="multiple" title="{{\'im_attach_file_title\' | i18n}}" />\n <i class="icon icon-paperclip"></i>\n </div>\n\n <div class="im_media_attach pull-left">\n <input type="file" class="im_media_attach_input" size="28" multiple="multiple" accept="image/*, video/*, audio/*" title="{{\'im_media_attach_title\' | i18n}}"/>\n <i class="icon icon-camera"></i>\n </div>\n\n <div class="composer_emoji_panel"></div>\n </div>\n\n <div class="im_send_keyboard_wrap" ng-if="historyState.replyKeyboard._ == \'replyKeyboardMarkup\'" ng-show="!historyState.replyKeyboard.pFlags.hidden">\n <div my-reply-markup="historyState.replyKeyboard"></div>\n </div>\n\n </form>\n </div>\n\n </div>\n\n </div>\n\n </div>\n\n </div>\n </div>\n\n </div>\n\n </div>\n\n</div>\n\n<div class="footer_wrap footer_empty"></div>\n\n<toaster-container toaster-options="{\'position-class\': \'toast-bottom-center\'}"></toaster-container>\n'),e.put("partials/desktop/import_contact_modal.html",'<div class="md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <form class="modal_simple_form" ng-submit="doImport()">\n\n <h4 my-i18n="contact_import_modal_title"></h4>\n\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="contact_import_modal_phone"></label>\n <input class="md-input" my-focused type="text" ng-model="importContact.phone" my-submit-on-enter />\n </div>\n\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="contact_edit_modal_first_name"></label>\n <input class="md-input" type="text" ng-model="importContact.first_name" my-submit-on-enter />\n </div>\n\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="contact_edit_modal_last_name"></label>\n <input class="md-input" type="text" ng-model="importContact.last_name" my-submit-on-enter />\n </div>\n\n </form>\n\n </div>\n\n <div class="md_simple_modal_footer">\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: progress.enabled}" ng-click="doImport()" ng-bind="progress.enabled ? \'contact_import_modal_submit_active\' : \'contact_import_modal_submit\' | i18n" ng-disabled="progress.enabled"></button>\n </div>\n\n</div>'),e.put("partials/desktop/inactive.html",'<div class="inactive_page_wrap">\n <div class="tg_head_split inactive_head"></div>\n <div class="im_page_wrap">\n <div class="inactive_page_content" my-vertical-position="0.35">\n <a class="inactive_image" ng-click="reload()"></a>\n <h3 class="inactive_title" my-i18n="inactive_title"></h3>\n <div class="inactive_description" my-i18n="inactive_description_md"></div>\n <div class="inactive_actions">\n <button class="btn btn-lg btn-md btn-md-primary" ng-click="reload()" my-i18n="inactive_reload_btn" my-focused></button>\n </div>\n </div>\n </div>\n</div>'),e.put("partials/desktop/inline_results.html",'<a ng-if="botResults.switch_pm !== undefined" class="inline_switch_pm" ng-bind-html="botResults.switch_pm.rText" data-inlineid="_switch_pm_{{botResults.switch_pm.start_param}}"></a>\n\n<ul class="inline_results_wrap composer_dropdown">\n <li class="inline_result_wrap" ng-class="\'inline_result_\' + result.type" ng-repeat="result in botResults.results track by result.qID" ng-switch="result.type">\n\n <a ng-switch-when="gif" class="img_gif_with_progress_wrap" data-inlineid="{{result.qID}}" ng-style="::{width: result.thumbW, height: result.thumbH}" ng-switch="result._">\n <div class="inline_result_ind"></div>\n <div ng-switch-when="botInlineMediaResult" ng-switch="result.document.url !== undefined" class="inline_result_gif_mtproto">\n <div ng-switch-when="true" ng-switch="result.document.mime_type == \'video/mp4\'">\n <video ng-switch-when="true" width="{{result.thumbW}}" height="{{result.thumbH}}" loop autoplay class="img_gif_video">\n <source ng-src="{{result.document.url}}" type="video/mp4">\n </video>\n <img ng-switch-default class="img_gif_image" ng-src="{{result.document.url}}" width="{{result.thumbW}}" height="{{result.thumbH}}" />\n </div>\n <div ng-switch-default class="img_gif_image_wrap">\n <img class="img_gif_thumb" my-load-thumb thumb="result.document.thumb" width="{{result.thumbW}}" height="{{result.thumbH}}" />\n </div>\n </div>\n <div ng-switch-default ng-switch="result.contentUrl !== undefined" class="inline_result_gif_http">\n <div ng-switch-when="true" ng-switch="result.content_type == \'video/mp4\'">\n <video ng-switch-when="true" width="{{result.thumbW}}" height="{{result.thumbH}}" loop autoplay class="img_gif_video">\n <source ng-src="{{result.contentUrl}}" type="video/mp4">\n </video>\n <img ng-switch-default class="img_gif_image" ng-src="{{result.contentUrl}}" width="{{result.thumbW}}" height="{{result.thumbH}}" />\n </div>\n <img ng-switch-default ng-if="result.thumbUrl !== undefined" class="img_gif_thumb" width="{{result.thumbW}}" height="{{result.thumbH}}" ng-src="{{result.thumbUrl}}" />\n </div>\n </a>\n\n <a ng-switch-when="sticker" data-inlineid="{{result.qID}}" ng-style="::{width: result.thumbW, height: result.thumbH}">\n <div class="inline_result_ind"></div>\n <div class="inline_result_sticker_image" my-load-sticker document="result.document" dim="{width: result.thumbW, height: result.thumbH}"></div>\n </a>\n\n <a ng-switch-when="photo" data-inlineid="{{result.qID}}" ng-style="::{width: result.thumbW, height: result.thumbH}" ng-switch="result._">\n <div class="inline_result_ind"></div>\n <div ng-switch-when="botInlineMediaResult" class="inline_result_photo_mtproto">\n <img\n class="inline_result_photo_image"\n my-load-thumb\n thumb="result.thumb"\n ng-style="::{width: result.thumbW, height: result.thumbH}"\n />\n </div>\n <div ng-switch-default class="inline_result_photo_http">\n <img ng-switch-default ng-if="result.thumbUrl !== undefined" class="inline_result_photo_image" width="{{result.thumbW}}" height="{{result.thumbH}}" ng-src="{{result.thumbUrl}}" />\n </div>\n </a>\n\n <a ng-switch-default class="inline_result_article clearfix" data-inlineid="{{result.qID}}">\n <div class="inline_article_thumb_wrap pull-left" ng-switch="result.thumbUrl !== undefined ? \'thumb\' : (result.send_message.geo ? \'geo\' : false)">\n <img ng-switch-when="thumb" class="inline_article_thumb" ng-src="{{result.thumbUrl}}"/>\n <img\n ng-switch-when="geo"\n class="inline_article_thumb"\n my-geo-point-map="result.send_message.geo"\n width="50"\n height="50"\n />\n <div ng-switch-default class="inline_article_thumb_initials" ng-bind="result.initials"></div>\n </div>\n <div class="inline_article_content_wrap">\n <div class="inline_article_title" ng-if="::result.title.length > 0" ng-bind-html="::result.rTitle"></div>\n <div class="inline_article_description" ng-if="::result.description.length > 0" ng-bind-html="::result.rDescription"></div>\n <div class="inline_article_url" ng-if="::result.url.length > 0" ng-bind="::result.url"></div>\n </div>\n </a>\n\n </li>\n</ul>'),e.put("partials/desktop/lang_footer.html",'<div class="footer_wrap" ng-controller="AppLangSelectController">\n <span ng-repeat="locale in ::supportedLocales">\n <a class="footer_lang_link" ng-class="{active: curLocale == locale, disabled: curLocale == locale}" ng-disabled="curLocale == locale" ng-click="localeSelect(locale)" ng-bind="langNames[locale]"></a>\n <span ng-if="!$last" class="footer_link_divider"></span>\n </span>\n</div>'),e.put("partials/desktop/login.html",'<div class="login_page_wrap" my-custom-background="#e7ebf0">\n <div class="login_head_bg"></div>\n <div class="login_page">\n <div class="login_head_wrap clearfix" ng-switch="progress.enabled">\n <div ng-switch-when="true" class="login_head_submit_progress">\n <my-i18n ng-if="!credentials.phone_code_hash" msgid="login_generating_key"></my-i18n><my-i18n ng-if="credentials.phone_code_hash &amp;&amp; !credentials.phone_code_valid" msgid="login_checking_code"></my-i18n><my-i18n ng-if="credentials.phone_code_valid &amp;&amp; credentials.phone_unoccupied" msgid="login_signing_up"></my-i18n><my-i18n ng-if="credentials.phone_code_valid &amp;&amp; credentials.password_needed" msgid="login_checking_password"></my-i18n><span my-loading-dots></span>\n </div>\n <div ng-switch-default class="login_head_submit_wrap">\n <a class="login_head_submit_btn" ng-if="!credentials.phone_code_hash" ng-click="sendCode()">\n <my-i18n msgid="modal_next"></my-i18n><i class="icon icon-next-submit"></i>\n </a>\n <a class="login_head_submit_btn" ng-if="credentials.phone_code_hash &amp;&amp; !credentials.phone_code_valid" ng-click="logIn()">\n <my-i18n msgid="modal_next"></my-i18n><i class="icon icon-next-submit"></i>\n </a>\n <a class="login_head_submit_btn" ng-if="credentials.phone_code_valid &amp;&amp; credentials.phone_unoccupied" ng-click="logIn(true)">\n <my-i18n msgid="modal_next"></my-i18n><i class="icon icon-next-submit"></i>\n </a>\n <a class="login_head_submit_btn" ng-if="credentials.phone_code_valid &amp;&amp; credentials.password_needed" ng-click="checkPassword()">\n <my-i18n msgid="modal_next"></my-i18n><i class="icon icon-next-submit"></i>\n </a>\n </div>\n <a class="login_head_logo_link" href="https://telegram.org" target="_blank">\n <i class="icon icon-tg-logo"></i><i class="icon icon-tg-title"></i>\n </a>\n </div>\n\n <div class="login_form_wrap">\n <div class="error" ng-if="error.message" ng-bind="error.message"></div>\n\n <form name="mySendCodeForm" ng-if="!credentials.phone_code_hash" ng-submit="sendCode()">\n <h3 class="login_form_head" my-i18n="login_sign_in"></h3>\n <p class="login_form_lead" my-i18n="login_enter_number_description"></p>\n\n <div class="md-input-group md-input-has-value login_phone_country_input_group" ng-click="chooseCountry()">\n <label class="md-input-label" my-i18n="login_country_select_placeholder"></label>\n <div autocomplete="off" class="md-input"ng-bind="credentials.phone_country_name"></div>\n </div>\n\n <div class="login_phone_groups_wrap clearfix">\n\n <div class="md-input-group login_phone_code_input_group" ng-class="{\'md-input-error\': error.field == \'phone\'}" my-labeled-input>\n <label class="md-input-label" my-i18n="login_code_input_placeholder"></label>\n <input autocomplete="off" class="md-input" my-focused name="phone_country" type="tel" ng-model="credentials.phone_country" />\n </div>\n\n <div class="md-input-group login_phone_num_input_group" ng-class="{\'md-input-error\': error.field == \'phone\'}" my-labeled-input ng-switch="error.field == \'phone\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_number"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_tel_input_placeholder"></label>\n <input required autocomplete="off" my-submit-on-enter class="md-input" my-focus-on="country_selected" name="phone_number" type="tel" ng-model="credentials.phone_number" />\n </div>\n\n </div>\n <div class="login_form_messaging" ng-show="progress.enabled" my-i18n="login_generating_keys_info"></div>\n </form>\n\n <form name="myLoginForm" ng-if="credentials.phone_code_hash &amp;&amp; !credentials.phone_code_valid" ng-submit="logIn()">\n <h3 class="login_phone_head"><span ng-bind="credentials.phone_country"></span> <span ng-bind="credentials.phone_number"></span></h3>\n <div class="login_edit_phone"><a ng-click="editPhone()" my-i18n="login_edit_number"></a></div>\n\n <div ng-switch="credentials.type._">\n <p ng-switch-when="auth.sentCodeTypeApp" class="login_smscode_lead" my-i18n="login_enter_code_label_md"></p>\n <p ng-switch-default class="login_smscode_lead" my-i18n="login_enter_sms_code_label_md"></p>\n </div>\n\n <div ng-if="nextPending.type" ng-switch="nextPending.remaining === false">\n <p ng-switch-when="true" class="login_smscode_lead">\n <a ng-click="sendNext()" my-i18n="login_code_not_received"></a>\n </p>\n <p ng-switch-default class="login_smscode_lead">\n <span ng-show="nextPending.remaining > 0" my-i18n="login_call_remaining">\n <my-i18n-param name="remaining" ng-bind="nextPending.remaining | duration"></my-i18n-param>\n </span>\n <span ng-show="!nextPending.remaining" my-i18n="login_calling"></span>\n </p>\n </div>\n\n <div ng-if="credentials.type._ == \'auth.sentCodeTypeCall\'">\n <p class="login_smscode_lead">\n <span my-i18n="login_number_dialed"></span>\n </p>\n </div>\n\n\n\n <div class="md-input-group md-input-group-centered" ng-class="{\'md-input-error\': error.field == \'phone_code\'}" my-labeled-input ng-switch="error.field == \'phone_code\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_sms_code"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_number_input_placeholder"></label>\n <input autocomplete="off" class="md-input" my-focused name="phone_code" type="tel" ng-model="credentials.phone_code" required />\n </div>\n </form>\n\n <form name="myFullNameForm" ng-if="credentials.phone_code_valid &amp;&amp; credentials.phone_unoccupied" ng-submit="logIn(true)">\n <h3 class="login_form_head" my-i18n="login_your_info"></h3>\n <p class="login_form_lead" my-i18n="login_fulll_name_label"></p>\n\n <div class="md-input-group" ng-class="{\'md-input-error\': error.field == \'first_name\'}" my-labeled-input ng-switch="error.field == \'first_name\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_first_name"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_first_name"></label>\n <input autocomplete="off" class="md-input" my-focused name="first_name" type="text" ng-model="credentials.first_name" required />\n </div>\n\n <div class="md-input-group" ng-class="{\'md-input-error\': error.field == \'last_name\'}" my-labeled-input ng-switch="error.field == \'last_name\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_last_name"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_last_name"></label>\n <input autocomplete="off" class="md-input" name="last_name" type="text" ng-model="credentials.last_name" />\n </div>\n\n </form>\n\n <form name="myPasswordForm" ng-if="credentials.phone_code_valid &amp;&amp; credentials.password_needed" ng-submit="checkPassword()">\n <h3 class="login_form_head" my-i18n="login_password_title"></h3>\n <p class="login_form_lead" my-i18n="login_password_label"></p>\n\n <div class="md-input-group" ng-class="{\'md-input-error\': error.field == \'password\'}" my-labeled-input ng-switch="error.field == \'password\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_password"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_password"></label>\n <input autocomplete="off" class="md-input" my-focused name="password" type="password" ng-model="credentials.password" my-submit-on-enter required />\n </div>\n\n <p ng-if="password.hint.length > 0" class="login_form_hint" ng-bind="password.hint"></p>\n\n <div class="login_forgot_button">\n <button class="btn btn-md" ng-click="forgotPassword($event)" my-i18n="login_password_forgot_link"></button>\n </div>\n\n <div ng-if="canReset" class="login_reset_button">\n <button class="btn btn-md btn-md-danger" ng-click="resetAccount($event)" my-i18n="login_account_reset"></button>\n </div>\n\n </form>\n\n </div>\n\n <div ng-switch="about.shown">\n <div ng-switch-when="true" class="login_footer_about_wrap" my-scroll-to-on="$init">\n <h3 my-i18n="login_about_title"></h3>\n <p my-i18n="login_about_desc1_md"></p>\n <p my-i18n="login_about_desc2_md"></p>\n <p my-i18n="login_about_desc3_md">\n <my-i18n-param name="source-link">\n <a href="https://github.com/zhukov/webogram" target="_blank">{0}</a>\n </my-i18n-param>\n </p>\n </div>\n <div ng-switch-default class="login_footer_wrap">\n <p my-i18n="login_about_intro"></p>\n <a class="logo_footer_learn_more_link" href="" ng-click="about.shown = true" my-i18n="login_about_learn"></a>\n </div>\n\n </div>\n </div>\n\n</div>\n\n'),e.put("partials/desktop/media_modal_layout.html",'<div tabindex="-1" role="dialog" class="modal" ng-style="{\'z-index\': 1050 + index*10}" ng-click="close($event)" modal-transclude></div>'),e.put("partials/desktop/megagroup_edit_modal.html",'<div class="md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <form class="modal_simple_form" ng-submit="updateChannel()">\n\n <h4 my-i18n="channel_edit_modal_title"></h4>\n\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="group_edit_name"></label>\n <input class="md-input" my-focused type="text" ng-model="channel.title" />\n </div>\n\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="group_edit_about"></label>\n <input class="md-input" type="text" ng-model="channel.about" />\n </div>\n\n </form>\n\n </div>\n\n <div class="md_simple_modal_footer">\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: channel.updating}" ng-click="updateChannel()" ng-bind="channel.updating ? \'group_edit_submit_active\' : \'group_edit_submit\' | i18n" ng-disabled="channel.updating"></button>\n </div>\n\n</div>'),e.put("partials/desktop/message.html",'<div class="im_message_outer_wrap" ng-click="toggleMessage(historyMessage.mid, $event)">\n\n\n <div class="im_message_wrap clearfix" ng-switch="::historyMessage._ == \'messageService\'">\n\n <div class="im_service_message_wrap" ng-switch-when="true" ng-switch="historyMessage.action._ == \'messageActionBotIntro\'">\n <div ng-switch-when="true" class="im_bot_intro_message_wrap">\n <div class="im_bot_intro_message_header" my-i18n="message_service_bot_intro_header"></div>\n <div class="im_bot_intro_message" ng-bind-html="::historyMessage.action.rDescription"></div>\n </div>\n <div ng-switch-default class="im_service_message">\n <a class="im_message_author" ng-if="::historyMessage.fromID > 0" my-peer-link="historyMessage.fromID" short="historyMessage.toID > 0" color="historyMessage.toID < 0" no-watch="true"></a>\n <span class="im_message_service" my-service-message></span>\n </div>\n\n <a ng-if="::historyMessage.action._ == \'messageActionChatEditPhoto\' || historyMessage.action._ == \'messageActionChannelEditPhoto\'" class="im_service_message_photo_thumb" href="" ng-click="openPhoto(historyMessage.action.photo.id)">\n <img\n class="im_service_message_photo_thumb"\n my-load-thumb\n thumb="historyMessage.action.photo.thumb"\n />\n </a>\n\n </div>\n\n <div ng-switch-default class="im_content_message_wrap" ng-class="::[historyMessage.pFlags.out ? \'im_message_out\' : \'im_message_in\', historyMessage.fwdFromID ? \'im_message_fwd\' : \'\']">\n <i class="icon icon-select-tick"></i>\n\n <a class="im_message_error_btn" ng-if="::historyMessage.pending || historyMessage.error || false" ng-click="historyMessage.send()">\n <i class="icon-message-status" tooltip="{{\'message_action_retry\' | i18n}}"></i>\n </a>\n <i ng-if="::historyMessage.pFlags.unread &amp;&amp; historyMessage.pFlags.out || historyMessage.pending || false" class="icon-message-status" ng-show="!historyMessage.error"></i>\n\n <a class="im_message_from_photo pull-left" my-peer-photolink="::historyMessage.fromID" img-class="im_message_from_photo"></a>\n\n <div class="im_message_meta pull-right text-right noselect">\n <div class="im_message_views_wrap" ng-if="::!historyMessage.fwdFromID && historyMessage.views > 0">\n <div class="im_message_views">\n <i class="icon-message-views"></i><span class="im_message_views_cnt" my-message-views="historyMessage.mid"></span>\n </div>\n </div>\n <span class="im_message_date clickable nocopy" data-content="{{::historyMessage.date | time}}"></span>\n </div>\n\n <div class="im_message_body" ng-class="::{im_message_body_media: historyMessage._ == \'message\' &amp;&amp; historyMessage.media ? true : false}">\n\n <span class="im_message_author_wrap">\n <span class="copyonly">[<span ng-bind="::historyMessage.date | time"></span>] </span><a class="im_message_author" my-peer-link="historyMessage.fromID" short="historyMessage.toID > 0" color="historyMessage.toID < 0" no-watch="true"></a><a ng-if="::historyMessage.viaBotID && !historyMessage.fwdFromID" class="im_message_author_via" ng-click="selectInlineBot(historyMessage.viaBotID, $event)"><span class="copyonly">&nbsp;</span><span my-i18n="message_via_bot"><my-i18n-param name="bot"><span class="im_message_fwd_author" my-peer-link="historyMessage.viaBotID" username="true" no-watch="true"></span></my-i18n-param></span></a><span class="copyonly">:</span>\n </span>\n\n\n <a class="im_message_reply_wrap" my-reply-message="historyMessage.reply_to_msg" ng-if="::historyMessage.reply_to_mid"></a>\n\n <div ng-if="::historyMessage.fwdFromID || false" class="im_message_fwd_from">\n <span class="copyonly"><span my-i18n="message_forwarded_message"></span>:&nbsp;</span>\n <a class="im_message_fwd_photo pull-left" my-peer-photolink="::historyMessage.fwdFromID" img-class="im_message_fwd_photo"></a>\n <div class="im_message_fwd_author_wrap">\n <a class="im_message_fwd_author" my-peer-link="historyMessage.fwdFromID"></a><a ng-if="::historyMessage.viaBotID" class="im_message_fwd_via" ng-click="selectInlineBot(historyMessage.viaBotID, $event)"><span class="copyonly">&nbsp;</span><span my-i18n="message_via_bot"><my-i18n-param name="bot"><span class="im_message_fwd_author" my-peer-link="historyMessage.viaBotID" username="true" no-watch="true"></span></my-i18n-param></span></a><span class="copyonly">&nbsp;[</span><span class="im_message_fwd_date" ng-bind="::historyMessage.fwd_from.date | dateOrTime"></span><span class="copyonly">]&nbsp;</span>\n <span class="im_message_views_inline" ng-if="::historyMessage.views > 0">\n <i class="icon-message-views"></i><span class="im_message_views_cnt" my-message-views="historyMessage.mid"></span>\n </span>\n </div>\n </div>\n\n <div my-message-body="historyMessage">\n <div class="im_message_text" dir="auto"></div>\n <div class="im_message_media"></div>\n <div class="im_message_keyboard"></div>\n </div>\n\n\n </div>\n\n </div>\n </div>\n\n</div>\n\n'),e.put("partials/desktop/message_attach_contact.html",'<div class="im_message_contact">\n <a ng-if="::media.user_id > 0" class="im_message_contact_photo pull-left" my-peer-photolink="media.user_id" img-class="im_message_contact_photo" user-override="media"></a>\n <div class="im_message_contact_name" ng-switch="media.user_id > 0">\n <a ng-switch-when="true" my-peer-link="media.user_id" user-override="media"></a>\n <span ng-switch-default ng-bind-html="::media.rFullName"></span>\n </div>\n <div class="im_message_contact_phone" ng-bind="::media.phone_number | phoneNumber"></div>\n</div>'),e.put("partials/desktop/message_attach_document.html",'<div ng-switch="::media.document.type">\n\n <div ng-switch-when="gif" my-load-gif document="media.document"></div>\n\n <div ng-switch-when="sticker" my-load-sticker document="media.document" open="true"></div>\n\n <div ng-switch-when="voice" class="im_message_audio">\n <div my-audio-player audio="media.document"></div>\n </div>\n\n <div ng-switch-when="audio" class="im_message_audio">\n <div my-audio-player audio="media.document"></div>\n </div>\n\n <div ng-switch-when="video" class="im_message_video im_message_document_thumbed">\n <a class="im_message_video_thumb" ng-click="videoOpen()" ng-style="::{width: media.document.thumb.width + \'px\'}">\n <span class="im_message_video_duration nocopy" data-content="{{::media.document.duration | duration}}"></span>\n <i class="icon icon-videoplay"></i>\n <img\n class="im_message_video_thumb im_message_video_thumb_blurred"\n my-load-thumb\n thumb="media.document.thumb"\n />\n </a>\n\n <div class="im_message_document_info">\n <div class="im_message_document_name_wrap">\n <span class="copyonly">[</span><span class="im_message_document_name" my-i18n="message_attach_video_video"></span><span class="copyonly">&nbsp;<span ng-bind="::media.document.duration | duration"></span>]</span>\n <span class="im_message_document_size" ng-if="!media.document.progress.enabled" ng-bind="::media.document.size | formatSize"></span>\n <span class="im_message_document_size" ng-if="media.document.progress.enabled" ng-bind="media.document.progress | formatSizeProgress"></span>\n </div>\n <div class="im_message_document_actions noselect" ng-if="!media.document.progress.enabled">\n <a href="" ng-click="docSave()" ng-switch="media.document.downloaded">\n <span class="nocopy" ng-switch-when="true" my-i18n="message_attach_video_save"></span>\n <span class="nocopy" ng-switch-default my-i18n="message_attach_video_download"></span>\n </a>\n <a class="nocopy" href="" ng-click="videoOpen()" my-i18n="message_attach_video_play"></a>\n </div>\n <div class="clearfix im_message_cancelable_progress_wrap" ng-if="media.document.progress.enabled">\n <a class="im_message_media_progress_cancel pull-right nocopy" ng-click="media.document.progress.cancel()" my-i18n="modal_cancel"></a>\n <div class="im_message_download_progress_wrap">\n <div class="progress tg_down_progress">\n <div class="progress-bar progress-bar-success" ng-style="{width: media.document.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div ng-switch-default class="im_message_document clearfix" ng-class="{im_message_document_thumbed: !!media.document.thumb, im_message_document_progress: media.document.progress.enabled}">\n\n <a ng-if="::!media.document.thumb" class="im_message_file_button" ng-click="docOpen()" ng-class="{im_message_file_button_dl_doc: media.document.downloaded}">\n <i class="im_message_file_button_icon"></i>\n </a>\n <a ng-if="::media.document.thumb" ng-click="docOpen()">\n <div class="im_message_document_thumb_wrap">\n <img\n class="im_message_document_thumb"\n my-load-thumb\n thumb="media.document.thumb"\n />\n </div>\n </a>\n\n <div class="im_message_document_info">\n <div class="im_message_document_name_wrap">\n <span class="copyonly">[</span><a href="" ng-click="docOpen()" class="im_message_document_name" ng-bind="::media.document.file_name"></a><span class="copyonly">]</span>\n <span class="im_message_document_size" ng-if="!media.document.progress.enabled" ng-bind="::media.document.size | formatSize"></span>\n <span class="im_message_document_size" ng-if="media.document.progress.enabled" ng-bind="media.document.progress | formatSizeProgress"></span>\n </div>\n <div class="im_message_document_actions" ng-if="!media.document.progress.enabled" ng-switch="media.document.downloaded">\n <a class="nocopy" ng-switch-when="true" href="" ng-click="docSave()" my-i18n="message_attach_document_save"></a>\n <a class="nocopy" ng-switch-default href="" ng-click="docSave()" my-i18n="message_attach_document_download"></a>\n <a class="nocopy" ng-if="::media.document.withPreview" href="" ng-click="docOpen()" my-i18n="message_attach_document_open"></a>\n </div>\n <div class="clearfix im_message_cancelable_progress_wrap" ng-if="media.document.progress.enabled">\n <a class="im_message_media_progress_cancel pull-right nocopy" ng-click="media.document.progress.cancel()" my-i18n="modal_cancel"></a>\n <div class="im_message_download_progress_wrap">\n <div class="progress tg_down_progress">\n <div class="progress-bar progress-bar-success" ng-style="{width: media.document.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n</div>\n<div ng-if="::media.rCaption" class="im_message_document_caption" ng-bind-html="::media.rCaption"></div>\n'),e.put("partials/desktop/message_attach_geo.html",'<a ng-href="{{::media.mapUrl}}" target="_blank" class="im_message_geopoint">\n <i class="icon icon-geo-point"></i>\n <img\n class="im_message_venue_geopoint_image"\n my-geo-point-map="media.geo"\n width="300"\n height="150"\n alt="[{{::\'conversation_media_location\' | i18n}} {{::media.mapUrl}}]"\n />\n</a>'),e.put("partials/desktop/message_attach_pending.html",'<div class="im_message_document im_message_upload_file" ng-class="::\'im_message_upload_\' + media.type">\n <div class="im_message_file_button im_message_file_button_upload">\n <i class="im_message_file_button_icon"></i>\n </div>\n <div class="im_message_document_info">\n <div class="im_message_document_name_wrap">\n <span class="im_message_document_name" ng-bind="::media.file_name"></span>\n <span class="im_message_document_size" ng-if="media.progress" ng-bind="media.progress | formatSizeProgress"></span>\n </div>\n <div class="clearfix im_message_cancelable_progress_wrap">\n <a class="im_message_media_progress_cancel pull-right" ng-click="media.progress.cancel()" my-i18n="modal_cancel"></a>\n <div class="im_message_download_progress_wrap">\n <div class="progress tg_up_progress">\n <div class="progress-bar progress-bar-success" role="progressbar" ng-style="{width: media.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),e.put("partials/desktop/message_attach_photo.html",'<a class="im_message_photo_thumb" ng-click="openPhoto(media.photo.id, {m: messageId})" ng-style="::{width: media.photo.thumb.width + \'px\'}" ng-mouseover="preloadPhoto(media.photo.id)">\n <img\n class="im_message_photo_thumb"\n my-load-thumb\n thumb="media.photo.thumb"\n alt="[{{::\'conversation_media_photo\' | i18n}}]"\n />\n</a>\n<div ng-if="::media.rCaption" class="im_message_photo_caption" ng-bind-html="::media.rCaption"></div>'),e.put("partials/desktop/message_attach_venue.html",'<div class="im_message_venue clearfix">\n\n <a ng-href="{{::media.mapUrl}}" target="_blank" class="im_message_venue_geopoint_wrap">\n <i class="icon icon-geo-point"></i>\n <img\n class="im_message_venue_geopoint_image"\n my-geo-point-map="media.geo"\n width="100"\n height="100"\n alt="[{{::\'conversation_media_location\' | i18n}} {{::media.mapUrl}}]"\n />\n </a>\n\n <div class="im_message_venue_info">\n <div class="im_message_venue_title_wrap">\n <a ng-href="{{::media.mapUrl}}" target="_blank" class="im_message_document_name" ng-bind="::media.title"></a>\n </div>\n <div class="im_message_venue_address" ng-bind="::media.address"></div>\n </div>\n\n</div>\n'),e.put("partials/desktop/message_attach_webpage.html",'<div ng-show="media.webpage._ == \'webPage\'" class="im_message_webpage_wrap clearfix" ng-switch="media.webpage.type">\n <div ng-switch-when="photo" class="im_message_webpage_photo">\n <div class="im_message_webpage_title">\n <a href="{{media.webpage.url}}" target="_blank" ng-bind-html="media.webpage.rTitle"></a>\n </div>\n <div ng-if="media.webpage.description.length" class="im_message_webpage_description" ng-bind-html="media.webpage.rDescription"></div>\n <a class="im_message_photo_thumb" ng-click="openPhoto(media.webpage.photo.id, {w: media.webpage.id, m: messageId})" ng-style="::{width: media.webpage.photo.thumb.width + \'px\'}" ng-mouseover="preloadPhoto(media.webpage.photo.id)">\n <img\n class="im_message_photo_thumb"\n my-load-thumb\n thumb="media.webpage.photo.thumb"\n alt="[{{::\'conversation_media_photo\' | i18n}}]"\n />\n </a>\n </div>\n <div ng-switch-when="video" class="im_message_webpage_video">\n <div class="im_message_webpage_site" ng-bind="media.webpage.site_name || media.webpage.display_url"></div>\n <div class="im_message_webpage_title">\n <a ng-click="openEmbed($event)" href="{{media.webpage.url}}" target="_blank" ng-bind-html="media.webpage.rTitle"></a>\n </div>\n <div ng-if="media.webpage.description.length" class="im_message_webpage_description" ng-bind-html="media.webpage.rDescription"></div>\n <a class="im_message_video_thumb" ng-click="openEmbed($event)" ng-href="{{media.webpage.url}}" target="_blank" ng-style="::{width: video.thumb.width + \'px\'}">\n <span ng-if="media.webpage.duration > 0" class="im_message_video_duration nocopy" data-content="{{::media.webpage.duration | duration}}"></span>\n <i class="icon icon-videoplay"></i>\n <img\n class="im_message_video_thumb"\n my-load-thumb\n thumb="media.webpage.photo.thumb"\n alt="[{{::\'conversation_media_video\' | i18n}}]"\n />\n </a>\n </div>\n\n <div ng-switch-when="document" class="im_message_webpage_document">\n <div my-message-document="media.webpage" message-id="messageId"></div>\n </div>\n\n <div ng-switch-when="gif" class="im_message_webpage_gif">\n <div class="im_message_webpage_title">\n <a href="{{media.webpage.url}}" target="_blank" ng-bind-html="media.webpage.rTitle"></a>\n </div>\n <div my-message-document="media.webpage" message-id="messageId"></div>\n </div>\n\n <div ng-switch-default class="im_message_webpage_article">\n <a ng-if="media.webpage.photo" href="{{media.webpage.url}}" target="_blank" class="im_message_webpage_article_photo pull-right">\n <img\n class="im_message_article_thumb"\n my-load-thumb\n thumb="media.webpage.photo.thumb"\n />\n </a>\n <div ng-if="media.webpage.site_name" class="im_message_webpage_site" ng-bind="media.webpage.site_name"></div>\n <div class="im_message_webpage_title">\n <a ng-click="openEmbed($event)" href="{{media.webpage.url}}" target="_blank" ng-bind-html="media.webpage.rTitle"></a>\n </div>\n <div ng-if="media.webpage.description.length" class="im_message_webpage_description" ng-bind-html="media.webpage.rDescription"></div>\n </div>\n</div>\n'),e.put("partials/desktop/message_media.html",'<div ng-switch="::media._">\n <div ng-switch-when="messageMediaPhoto" my-message-photo="media" message-id="messageId"></div>\n <div ng-switch-when="messageMediaDocument" my-message-document="media" message-id="messageId"></div>\n <div ng-switch-when="messageMediaGeo" my-message-geo="media"></div>\n <div ng-switch-when="messageMediaVenue" my-message-venue="media"></div>\n <div ng-switch-when="messageMediaContact" my-message-contact="media"></div>\n <div ng-switch-when="messageMediaWebPage" my-message-webpage="media" message-id="messageId"></div>\n <div ng-switch-when="messageMediaPending" my-message-pending="media"></div>\n <div ng-switch-when="messageMediaUnsupported">\n <div class="im_message_text" my-i18n="message_attach_unsupported">\n <my-i18n-param name="link"><a href="https://web.telegram.org" target="_blank">web.telegram.org</a></my-i18n-param>\n </div>\n </div>\n</div>'),e.put("partials/desktop/message_service.html",'<span ng-switch="::historyMessage.action._">\n <my-i18n>\n <span ng-switch-when="messageActionChatCreate" my-i18n-format="message_service_created_group"></span>\n <span ng-switch-when="messageActionChatEditTitle" my-i18n-format="message_service_changed_group_name"></span>\n <my-i18n-param name="group-name">&laquo;<strong ng-bind-html="::historyMessage.action.rTitle"></strong>&raquo;</my-i18n-param>\n </my-i18n>\n <span ng-switch-when="messageActionChatEditPhoto" my-i18n="message_service_changed_group_photo"></span>\n <span ng-switch-when="messageActionChatDeletePhoto" my-i18n="message_service_removed_group_photo"></span>\n <span ng-switch-when="messageActionChatJoinedByLink" my-i18n="message_service_joined_by_link"></span>\n <span ng-switch-when="messageActionChatReturn" my-i18n="message_service_returned_to_group"></span>\n <span ng-switch-when="messageActionChatJoined" my-i18n="message_service_joined"></span>\n <span ng-switch-when="messageActionChatAddUser" my-i18n="message_service_invited_user">\n <my-i18n-param name="user"><a my-peer-link="historyMessage.action.user_id" color="true"></a></my-i18n-param>\n </span>\n <span ng-switch-when="messageActionChatAddUsers" my-i18n="message_service_invited_users">\n <my-i18n-param name="user"><a my-peer-link="historyMessage.action.user_id" color="true"></a></my-i18n-param>\n <my-i18n-param name="num-more"><span ng-bind="historyMessage.action.users.length - 1"></span></my-i18n-param>\n </span>\n <span ng-switch-when="messageActionChatLeave" my-i18n="message_service_left_group"></span>\n <span ng-switch-when="messageActionChatDeleteUser" my-i18n="message_service_kicked_user">\n <my-i18n-param name="user"><a my-peer-link="historyMessage.action.user_id" color="true"></a></my-i18n-param>\n </span>\n\n <span ng-switch-when="messageActionChatMigrateTo" my-i18n="message_service_converted_to_supergroup"></span>\n <span ng-switch-when="messageActionChannelMigrateFrom" my-i18n="message_service_converted_to_supergroup"></span>\n <span ng-switch-when="messageActionChannelCreate" my-i18n="message_service_created_channel"></span>\n <span ng-switch-when="messageActionChannelEditTitle" my-i18n="message_service_changed_channel_name">\n <my-i18n-param name="channel-name">&laquo;<strong ng-bind-html="::historyMessage.action.rTitle"></strong>&raquo;</my-i18n-param>\n </span>\n <span ng-switch-when="messageActionChannelEditPhoto" my-i18n="message_service_changed_channel_photo"></span>\n <span ng-switch-when="messageActionChannelDeletePhoto" my-i18n="message_service_removed_channel_photo"></span>\n\n <span ng-switch-when="messageActionPinMessage" my-i18n="message_service_pinned_message">\n <my-i18n-param name="message"><a class="im_service_message_pinned" my-pinned-message="historyMessage.reply_to_msg"></a></my-i18n-param>\n </span>\n\n\n <span ng-switch-default my-i18n="message_service_unsupported_action">\n <my-i18n-param name="action"><span ng-bind="historyMessage.action._"></span></my-i18n-param>\n </span>\n</span>\n'),e.put("partials/desktop/password_recovery_modal.html",'<div class="md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <form class="modal_simple_form" ng-submit="checkCode()">\n\n <h4 my-i18n="login_recovery_title"></h4>\n\n <div class="md_simple_form_description" my-i18n="login_recovery_description_md">\n <my-i18n-param name="email">\n <strong ng-bind="recovery.email_pattern"></strong>\n </my-i18n-param>\n </div>\n\n <div class="md-input-group" ng-class="{\'md-input-error\': recovery.error_field == \'code\'}" my-labeled-input ng-switch="recovery.error_field == \'code\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_code_incorrect"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_code_placeholder"></label>\n <input class="md-input" my-focused type="text" ng-model="recovery.code" name="code" my-focused />\n </div>\n\n </form>\n\n </div>\n\n <div class="md_simple_modal_footer">\n\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: recovery.updating}" ng-click="checkCode()" ng-disabled="recovery.updating" ng-bind="recovery.updating ? \'password_recover_active\' : \'password_recover_submit\' | i18n"></button>\n\n </div>\n\n</div>'),e.put("partials/desktop/password_update_modal.html",'<div class="md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <form class="modal_simple_form" ng-submit="updatePassword()">\n\n <h4 ng-switch="action">\n <my-i18n ng-switch-when="disable" msgid="password_delete_title"></my-i18n>\n <my-i18n ng-switch-default msgid="password_change_title"></my-i18n>\n </h4>\n\n <div ng-if="password._ != \'account.noPassword\'" class="md-input-group" ng-class="{\'md-input-error\': passwordSettings.error_field == \'cur_password\'}" my-labeled-input>\n <label class="md-input-label" my-i18n="password_current_placeholder"></label>\n <input class="md-input" my-focused type="password" ng-model="passwordSettings.cur_password" name="cur_password" my-focus-on="cur_password_focus" />\n </div>\n\n <div ng-if="action != \'disable\'" class="md-input-group md-input-grouped" ng-class="{\'md-input-error\': passwordSettings.error_field == \'new_password\'}" my-labeled-input>\n <label class="md-input-label" my-i18n="password_new_placeholder"></label>\n <input class="md-input" type="password" ng-model="passwordSettings.new_password" name="new_password" my-focus-on="new_password_focus" />\n </div>\n\n <div ng-if="action != \'disable\'" class="md-input-group" ng-class="{\'md-input-error\': passwordSettings.confirm_password && passwordSettings.new_password && passwordSettings.confirm_password != passwordSettings.new_password}" my-labeled-input>\n <label class="md-input-label" my-i18n="password_confirm_placeholder"></label>\n <input class="md-input" type="password" ng-model="passwordSettings.confirm_password" name="confirm_password" my-focus-on="confirm_password_focus" />\n </div>\n\n <div ng-if="action != \'disable\'" class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="password_hint_placeholder"></label>\n <input class="md-input" type="text" ng-model="passwordSettings.hint" name="hint" />\n </div>\n\n <div ng-if="action != \'disable\'" class="md_simple_form_description" my-i18n="password_create_description"></div>\n\n <div ng-if="action != \'disable\'" class="md-input-group" ng-class="{\'md-input-error\': passwordSettings.error_field == \'email\'}" my-labeled-input>\n <label class="md-input-label" my-i18n="password_email_placeholder"></label>\n <input class="md-input" type="text" ng-model="passwordSettings.email" name="email" />\n </div>\n\n\n </form>\n\n </div>\n\n <div class="md_simple_modal_footer">\n\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: passwordSettings.updating}" ng-click="updatePassword()" ng-disabled="passwordSettings.updating" ng-switch="action">\n <span ng-switch-when="disable" ng-bind="passwordSettings.updating ? \'password_delete_active\' : \'password_delete_submit\' | i18n"></span>\n <span ng-switch-default ng-bind="passwordSettings.updating ? \'password_create_active\' : \'password_create_submit\' | i18n"></span>\n </button>\n\n </div>\n\n</div>'),e.put("partials/desktop/peer_select.html",'<div class="peer_select_modal_wrap md_modal_wrap" my-modal-position>\n\n <div class="md_modal_head md_modal_head_simple">\n <div class="md_modal_title_wrap">\n <div class="md_modal_actions_wrap clearfix">\n <a class="md_modal_action md_modal_action_close" ng-click="$dismiss()" my-i18n="modal_close"></a>\n </div>\n </div>\n <div class="md_modal_title" my-i18n="conversations_modal_forward_title"></div>\n </div>\n\n <div class="md_modal_body">\n\n <div class="im_dialogs_modal_col_wrap" ng-controller="AppImDialogsController" my-dialogs ng-class="search.query.length > 0 ? \'im_dialogs_col_search\' : \'\'">\n <div class="im_dialogs_panel">\n <div class="im_dialogs_search">\n <input my-focused class="form-control im_dialogs_search_field no_outline" type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query" autocomplete="off" />\n <a class="im_dialogs_search_clear tg_search_clear" ng-click="search.query = \'\'" ng-show="search.query.length">\n <i class="icon icon-search-clear"></i>\n </a>\n </div>\n </div>\n <div my-dialogs-list modal="true" class="im_dialogs_modal_col">\n <div class="im_dialogs_wrap nano">\n <div class="im_dialogs_scrollable_wrap nano-content">\n <ul class="im_dialogs_modal_list nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in dialogs track by dialogMessage.peerID" ng-class="{active: selectedPeers[dialogMessage.peerID] !== undefined}"></li>\n </ul>\n <div class="im_dialogs_contacts_wrap" ng-show="contacts.length > 0">\n <h5 my-i18n="conversation_select_modal_contacts"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" ng-repeat="contact in contacts | orderBy:\'user.sortName\' track by contact.userID" ng-class="{active: selectedPeers[contact.userID] !== undefined}">\n <a class="im_dialog" ng-click="dialogSelect(contact.peerString)">\n <div class="im_dialog_photo pull-left" my-peer-photolink="::contact.userID" img-class="im_dialog_photo"></div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" my-peer-link="contact.userID"></span>\n </div>\n <div class="im_dialog_message">\n <span class="im_dialog_message_text" my-user-status="::contact.userID"></span>\n </div>\n </div>\n </a>\n </li>\n </ul>\n </div>\n\n <div class="im_dialogs_contacts_wrap" ng-show="foundPeers.length > 0">\n <h5 my-i18n="im_found_title"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" ng-repeat="foundPeer in foundPeers track by foundPeer.id" ng-class="{active: selectedPeers[foundPeer.id] !== undefined}">\n <a class="im_dialog" ng-click="dialogSelect(foundPeer.peerString)">\n <div class="im_dialog_photo pull-left" my-peer-photolink="foundPeer.id" img-class="im_dialog_photo" watch="true"></div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" my-peer-link="foundPeer.id"></span>\n </div>\n <div class="im_dialog_message">\n <span class="im_dialog_message_text" ng-bind="::\'@\' + foundPeer.username"></span>\n </div>\n </div>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n\n <div class="md_modal_footer peer_select_modal_footer clearfix" ng-if="multiSelect">\n <button class="btn btn-md btn-md-primary pull-right" ng-click="submitSelected()" my-i18n="conversations_modal_forward_submit"></button>\n\n <div class="peer_select_modal_recipients_wrap" ng-switch="!selectedCount">\n <span class="peer_select_modal_recipients_empty" ng-switch-when="true" my-i18n="conversations_modal_select_recipients"></span>\n <span ng-switch-default>\n <span class="peer_select_modal_recipients_name" my-i18n="conversations_modal_recipients"></span>\n <span class="peer_select_modal_recipients_list" ng-switch="selectedCount" my-i18n>\n <span ng-switch-when="1" my-i18n-format="conversation_one_selected"></span>\n <span ng-switch-when="2" my-i18n-format="conversation_two_selected"></span>\n <span ng-switch-default my-i18n-format="conversation_many_selected"></span>\n <my-i18n-param name="name1"><span class="peer_select_modal_recipient" ng-bind-html="selectedPeers[selectedPeerIDs[0]][selectedPeerIDs[0] > 0 ? \'rFullName\' : \'rTitle\']"></span></my-i18n-param>\n <my-i18n-param name="name2"><span class="peer_select_modal_recipient" ng-bind-html="selectedPeers[selectedPeerIDs[1]][selectedPeerIDs[1] > 0 ? \'rFullName\' : \'rTitle\']"></span></my-i18n-param>\n <my-i18n-param name="count">{{selectedCount - 2}}</my-i18n-param>\n </span>\n\n </span>\n </div>\n </div>\n\n <div class="md_modal_footer md_modal_footer_empty clearfix" ng-if="!multiSelect"></div>\n\n</div>\n'),e.put("partials/desktop/photo_modal.html",'<div class="modal_prev_wrap" ng-class="{modal_prev_active_wrap: nav.hasPrev}" ng-click="nav.prev($event)">\n <div class="modal_prev"></div>\n</div>\n<div class="modal_next_wrap" ng-class="{modal_next_active_wrap: nav.hasNext}" ng-click="nav.next($event)">\n <div class="modal_next"></div>\n</div>\n<div class="modal_close_wrap modal_close_wrap_wnext" ng-click="$close()">\n <div class="modal_close"></div>\n</div>\n\n<div class="media_modal_bottom_panel_wrap">\n <div class="media_modal_bottom_panel">\n <div class="media_modal_bottom_actions">\n <a class="media_modal_action_btn" ng-click="download()" title="{{\'media_modal_download\' | i18n}}">\n <i class="media_modal_action_btn_download"></i>\n </a>\n <a class="media_modal_action_btn" ng-if="canForward" ng-click="forward()" title="{{\'media_modal_forward\' | i18n}}">\n <i class="media_modal_action_btn_forward"></i>\n </a>\n <a class="media_modal_action_btn" ng-if="canDelete" ng-click="delete()" title="{{\'media_modal_delete\' | i18n}}">\n <i class="media_modal_action_btn_delete"></i>\n </a>\n </div>\n\n <div class="media_modal_info_wrap pull-left" ng-if="!webpageID && photo.user_id">\n <a class="media_modal_author_photo pull-left" my-peer-photolink="photo.user_id" img-class="media_modal_author_photo" watch="true"></a>\n <div class="media_modal_author_name">\n <a class="media_modal_author" my-peer-link="photo.user_id" peer-watch="true"></a>\n </div>\n <div class="media_modal_date" ng-if="photo.date > 0" ng-switch="messageID > 0">\n <a ng-switch-when="true" class="media_modal_date" ng-click="goToMessage()" ng-bind="photo.date | dateOrTime :true"></a>\n <span ng-switch-default ng-bind="photo.date | dateOrTime :true"></span>\n </div>\n </div>\n\n <div class="media_modal_info_wrap pull-left" ng-if="webpageID">\n <div class="media_modal_author_name">\n <a class="media_modal_author" href="{{webpage.url}}" target="_blank" ng-bind-html="webpage.rTitle"></a>\n </div>\n <div class="media_modal_date" ng-bind="webpage.site_name || webpage.display_url"></div>\n </div>\n\n <div class="media_modal_title_wrap" ng-switch="count > 1 &amp;&amp; pos > 0">\n <my-i18n ng-switch-when="true" msgid="media_modal_photo_index">\n <my-i18n-param name="pos" ng-bind="pos"></my-i18n-param>\n <my-i18n-param name="count" ng-bind="count"></my-i18n-param>\n </my-i18n>\n <my-i18n ng-switch-default msgid="media_modal_photo">\n </div>\n </div>\n</div>\n\n<div class="modal-dialog" my-modal-nav next="nav.next()" prev="nav.prev()">\n <div class="modal-content">\n <div my-modal-width="{{photo.full.modalWidth}}" class="media_modal_wrap photo_modal_wrap" my-modal-position animation="no">\n\n <div class="modal-body">\n\n <div class="photo_modal_image_wrap" my-load-full-photo full-photo="photo.full" thumb-location="photo.thumb.location" ng-click="nav.next()"></div>\n\n </div>\n\n </div>\n </div>\n</div>\n\n'),e.put("partials/desktop/pinned_message.html",'<span ng-switch="pinnedMessage.loading"><span ng-switch-when="true" my-i18n="im_reply_loading"><my-i18n-param name="dots"><span my-loading-dots></span></my-i18n-param></span><span ng-switch-default my-short-message="pinnedMessage"></span></span>'),e.put("partials/desktop/profile_edit_modal.html",'<div class="md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <form class="modal_simple_form" ng-submit="updateProfile()">\n\n <h4 my-i18n="profile_edit_modal_title"></h4>\n\n <div class="md-input-group" ng-class="{\'has-error\': error.field == \'first_name\'}" my-labeled-input>\n <label class="md-input-label" my-i18n="profile_edit_first_name"></label>\n <input class="md-input" my-focused type="text" ng-model="profile.first_name" />\n </div>\n\n <div class="md-input-group" ng-class="{\'has-error\': error.field == \'last_name\'}" my-labeled-input>\n <label class="md-input-label" my-i18n="profile_edit_last_name"></label>\n <input class="md-input" type="text" ng-model="profile.last_name" />\n </div>\n\n </form>\n\n </div>\n\n <div class="md_simple_modal_footer">\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: profile.updating}" ng-click="updateProfile()" ng-bind="profile.updating ? \'profile_edit_submit_active\' : \'profile_edit_submit\' | i18n" ng-disabled="profile.updating"></button>\n </div>\n\n</div>\n'),e.put("partials/desktop/reply_markup.html",'<div class="reply_markup_wrap">\n <div class="reply_markup" ng-class="replyMarkup.splitCount ? \'reply_markup_h\' + replyMarkup.splitCount : \'\'">\n <div class="reply_markup_row" ng-repeat="row in replyMarkup.rows">\n <div class="reply_markup_button_wrap" ng-class="\'reply_markup_button_w\' + row.buttons.length" ng-repeat="button in row.buttons" ng-switch="button._">\n <a ng-switch-when="keyboardButtonUrl" class="btn reply_markup_button" href="{{button.pUrl}}" ng-bind-html="::button.rText"></a>\n <button ng-switch-default class="btn reply_markup_button" ng-bind-html="::button.rText" ng-click="buttonClick(button)"></button>\n </div>\n </div>\n </div>\n</div>'),e.put("partials/desktop/reply_message.html",'<div class="im_message_reply clearfix" ng-class="{im_message_reply_thumbed: thumb !== false}" ng-switch="replyMessage.loading">\n <div class="im_message_reply_border"></div>\n <div class="im_message_reply_loading" ng-switch-when="true" my-i18n="im_reply_loading">\n <my-i18n-param name="dots"><span my-loading-dots></span></my-i18n-param>\n </div>\n <div class="im_message_reply_thumb_wrap pull-left" ng-if="thumb !== false">\n <img\n class="im_message_reply_thumb"\n my-load-thumb\n thumb="thumb"\n watch="true"\n />\n </div>\n <div class="im_message_reply_author" ng-switch-default>\n <span class="copyonly">&gt;&nbsp;</span>\n <span my-peer-link="replyMessage.fromID" peer-watch="true"></span>\n </div>\n <div class="im_message_reply_body" ng-switch-default>\n <span class="copyonly">&gt;&nbsp;</span>\n <span my-short-message="replyMessage"></span>\n </div>\n</div>'),e.put("partials/desktop/sessions_list_modal.html",'<div class="sessions_modal_wrap md_modal_wrap" my-modal-position>\n\n <div class="md_modal_head md_modal_head_simple">\n <div class="md_modal_title_wrap">\n <div class="md_modal_actions_wrap clearfix">\n <a class="md_modal_action md_modal_action_close" ng-click="$dismiss()" my-i18n="modal_close"></a>\n </div>\n </div>\n <div class="md_modal_title" my-i18n="sessions_modal_title"></div>\n </div>\n\n <div class="md_modal_body">\n\n <div my-sessions-list class="sessions_modal_col">\n\n <div class="sessions_wrap nano" my-infinite-scroller>\n <div class="sessions_scrollable_wrap nano-content" ng-switch="!sessionsLoaded">\n\n <div ng-switch-when="true" class="sessions_modal_loading" my-vertical-position="0.2" padding="true" my-i18n="sessions_modal_loading">\n <my-i18n-param name="dots">\n <span my-loading-dots></span>\n </my-i18n-param>\n </div>\n\n <ul ng-switch-default class="sessions_modal_sessions_list nav nav-pills nav-stacked">\n\n <li class="sessions_modal_session_wrap clearfix" ng-repeat="authorization in authorizations | limitTo: slice.limit track by authorization.hash">\n <div class="sessions_modal_session">\n <div class="session_meta_wrap pull-right">\n <div class="session_active_date" ng-switch="authorization.current">\n <span ng-switch-when="true" class="session_active_date_online" my-i18n="sessions_modal_current_session"></span>\n <span ng-switch-default ng-bind="authorization.date_active | dateOrTime"></span>\n </div>\n\n <a ng-if="!authorization.current" class="session_terminate_btn" ng-click="terminateSession(authorization.hash)" my-i18n="sessions_modal_terminate_one"></a>\n </div>\n\n <div class="sessions_modal_session_app" ng-bind="authorization.app_name + \' \' + authorization.app_version"></div>\n <div class="sessions_modal_session_device" ng-bind="authorization.device_model + \', \' + authorization.platform + \' \' + authorization.system_version"></div>\n <div class="sessions_modal_session_location" ng-bind="authorization.ip + \' - \' + authorization.country"></div>\n </div>\n <div ng-if="authorization.current && authorizations.length > 1">\n <div class="sessions_modal_terminate_all_wrap">\n <a ng-click="terminateAllSessions()" my-i18n="sessions_modal_terminate_all"></a>\n </div>\n\n <hr class="sessions_modal_other_splitter"></hr>\n </div>\n </li>\n\n </ul>\n\n </div>\n </div>\n\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/desktop/settings_modal.html",'<div class="settings_modal_wrap md_modal_wrap" my-modal-position>\n\n <div class="md_modal_head">\n <div class="md_modal_title_wrap">\n <div class="md_modal_actions_wrap clearfix">\n <a class="md_modal_action md_modal_action_close" ng-click="$close()" my-i18n="modal_close"></a>\n <a class="md_modal_action" ng-click="editProfile()" my-i18n="modal_edit"></a>\n </div>\n <div class="md_modal_title" my-i18n="settings_modal_title"></div>\n </div>\n\n <div class="peer_modal_profile_wrap clearfix">\n <div class="peer_modal_photo_wrap pull-left" ng-switch="photo.updating">\n <div ng-switch-when="true" class="peer_modal_photo md_photo_loading loading_dots">\n <i></i><i></i><i></i>\n </div>\n <a ng-switch-default ng-click="openPhoto(profile.photo.photo_id, {p: profile.id})" class="peer_modal_photo" my-peer-photolink="::profile.id" img-class="peer_modal_photo" watch="true" no-open="true" ng-class="{disabled: !profile.photo.photo_id}" ng-disabled="!profile.photo.photo_id"></a>\n </div>\n <div class="peer_modal_profile">\n <div class="peer_modal_profile_name" my-peer-link="profile.id"></div>\n <div class="peer_modal_profile_description" my-user-status="::profile.id"></div>\n </div>\n </div>\n </div>\n\n <div class="md_modal_split_actions_wrap">\n <div class="md_modal_split_actions">\n <div class="md_modal_split_action">\n <input my-file-upload type="file" multiple="false" class="im_attach_input" size="120" multiple="false" accept="image/x-png, image/png, image/gif, image/jpeg" title="{{\'settings_modal_set_photo\' | i18n}}" />\n <i class="md_modal_split_action_camera"></i>\n </div>\n </div>\n </div>\n\n <div class="md_modal_body">\n\n <div class="md_modal_sections clearfix">\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_number">\n <i class="md_modal_section_icon md_modal_section_icon_phone"></i>\n\n <div class="md_modal_section_param_wrap">\n <div class="md_modal_section_param_value" ng-bind="profile.phone | phoneNumber"></div>\n <div class="md_modal_section_param_name" my-i18n="user_modal_phone"></div>\n </div>\n\n <div class="md_modal_section_param_wrap">\n <div class="md_modal_section_param_value" ng-switch="profile.username.length > 0">\n <a ng-switch-when="true" class="settings_modal_username_link" ng-click="changeUsername()" ng-bind="\'@\' + profile.username"></a>\n <a ng-switch-default ng-click="changeUsername()" my-i18n="settings_modal_empty_username_set"></a>\n </div>\n <div class="md_modal_section_param_name" my-i18n="user_modal_username"></div>\n </div>\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_toggle">\n <i class="md_modal_section_icon md_modal_section_icon_notification"></i>\n\n <a class="md_modal_section_toggle_wrap tg_checkbox" ng-click="toggleDesktop()" ng-class="notify.desktop ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="settings_modal_notifications"></span>\n </a>\n\n <a class="md_modal_section_toggle_wrap tg_checkbox" ng-click="togglePreview()" ng-class="notify.preview ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="settings_modal_message_preview"></span>\n </a>\n\n <a class="md_modal_section_toggle_wrap tg_checkbox" ng-click="toggleSound()" ng-class="notify.volume ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="settings_modal_sound"></span>\n </a>\n\n <div class="md_modal_section_range_wrap tg_range_wrap" ng-show="notify.volume > 0">\n <div my-slider slider-model="notify.volume"></div>\n </div>\n\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_radio">\n <i class="md_modal_section_icon md_modal_section_icon_keyboard"></i>\n\n <div class="tg_radios_wrap">\n <a class="md_modal_section_radio_wrap tg_radio" ng-click="toggleCtrlEnter(1)" ng-class="send.enter == 1 ? \'tg_radio_on\' : \'\'">\n <span class="icon icon-radio-outer"><i class="icon-radio"></i></span>\n <span my-i18n="settings_modal_enter_send_description_md"></span>\n </a>\n\n <a class="md_modal_section_radio_wrap tg_radio" ng-click="toggleCtrlEnter(0)" ng-class="send.enter == 0 ? \'tg_radio_on\' : \'\'">\n <span class="icon icon-radio-outer"><i class="icon-radio"></i></span>\n <span my-i18n="settings_modal_ctrl_enter_send_description_md"></span>\n </a>\n </div>\n\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_link">\n <i class="md_modal_section_icon md_modal_section_icon_more"></i>\n\n <div class="md_modal_section_select_wrap" ng-controller="AppLangSelectController">\n <div class="dropdown md_modal_section_select" dropdown>\n <button class="btn btn-link dropdown-toggle" dropdown-toggle ng-bind="langNames[curLocale]"></button>\n <ul class="dropdown-menu dropdown-menu-to-up">\n <li ng-repeat="locale in ::supportedLocales">\n <a ng-click="localeSelect(locale)" ng-bind="langNames[locale]"></a>\n </li>\n </ul>\n </div>\n\n <div class="md_modal_section_param_name" my-i18n="settings_modal_language"></div>\n </div>\n\n <div class="md_modal_section_link_wrap">\n <a ng-if="password._ == \'account.noPassword\' && password.email_unconfirmed_pattern.length" class="md_modal_section_link pull-right" ng-click="changePassword({action: \'cancel_email\'})" my-i18n="settings_modal_password_email_pending_cancel">\n </a>\n <span class="md_modal_section_text" ng-if="password._ == \'account.noPassword\' && password.email_unconfirmed_pattern.length" class="md_modal_section_link" my-i18n="settings_modal_password_email_pending">\n <my-i18n-param name="email">\n <span ng-bind="password.email_unconfirmed_pattern"></span>\n </my-i18n-param>\n </span>\n <a ng-if="password._ == \'account.noPassword\' && !password.email_unconfirmed_pattern" class="md_modal_section_link" ng-click="changePassword({action: \'create\'})" my-i18n="settings_modal_set_password"></a>\n\n <a ng-if="password._ == \'account.password\'" class="md_modal_section_link pull-right" ng-click="changePassword({action: \'disable\'})" my-i18n="settings_modal_disable_password"></a>\n <a ng-if="password._ == \'account.password\'" class="md_modal_section_link" ng-click="changePassword({action: \'change\'})" my-i18n="settings_modal_change_password"></a>\n </div>\n\n <div class="md_modal_section_link_wrap">\n <a class="md_modal_section_link" ng-click="showSessions()" my-i18n="settings_modal_active_sessions"></a>\n </div>\n\n <div class="md_modal_section_link_wrap">\n <a class="md_modal_section_link" ng-click="logOut()" my-i18n="head_log_out"></a>\n </div>\n\n </div>\n\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/desktop/short_message.html",'<span class="im_short_message_media" ng-if="message.media" ng-switch="message.media._">\n <span ng-switch-when="messageMediaPhoto" my-i18n="conversation_media_photo"></span>\n <span ng-switch-when="messageMediaDocument" ng-switch="message.media.document.type || false">\n <span ng-switch-when="sticker">\n <span ng-bind-html="message.media.document.stickerEmoji"></span>\n <my-i18n msgid="conversation_media_sticker"></my-i18n>\n </span>\n <span ng-switch-when="gif" my-i18n="conversation_media_gif"></span>\n <span ng-switch-when="audio" my-i18n="conversation_media_audio"></span>\n <span ng-switch-when="voice" my-i18n="conversation_media_audio"></span>\n <span ng-switch-when="video" my-i18n="conversation_media_video"></span>\n <span ng-switch-default ng-bind="message.media.document.file_name"></span>\n </span>\n <span ng-switch-when="messageMediaGeo" my-i18n="conversation_media_location"></span>\n <span ng-switch-when="messageMediaVenue" my-i18n="conversation_media_location"></span>\n <span ng-switch-when="messageMediaContact" my-i18n="conversation_media_contact"></span>\n</span><span class="im_short_message_service" ng-if="message._ == \'messageService\'" ng-switch="message.action._">\n <span ng-switch-when="messageActionChatCreate" my-i18n="conversation_group_created"></span>\n <span ng-switch-when="messageActionChatEditTitle" my-i18n="conversation_group_renamed"></span>\n <span ng-switch-when="messageActionChatEditPhoto" my-i18n="conversation_group_photo_updated"></span>\n <span ng-switch-when="messageActionChatDeletePhoto" my-i18n="conversation_group_photo_removed"></span>\n <span ng-switch-when="messageActionChatJoinedByLink" my-i18n="conversation_joined_by_link"></span>\n <span ng-switch-when="messageActionChatReturn" my-i18n="conversation_returned_to_group"></span>\n <span ng-switch-when="messageActionChatJoined" my-i18n="conversation_joined_group"></span>\n <span ng-switch-when="messageActionChatAddUser" my-i18n="conversation_invited_user">\n <my-i18n-param name="user"><span my-peer-link="message.action.user_id"></span></my-i18n-param>\n </span>\n <span ng-switch-when="messageActionChatAddUsers" my-i18n="">\n <ng-pluralize count="message.action.users.length"\n when="conversation_invited_users">\n </ng-pluralize>\n </span>\n <span ng-switch-when="messageActionChatLeave" my-i18n="conversation_left_group"></span>\n <span ng-switch-when="messageActionChatDeleteUser" my-i18n="conversation_kicked_user">\n <my-i18n-param name="user"><span my-peer-link="message.action.user_id"></span></my-i18n-param>\n </span>\n <span ng-switch-when="messageActionChatMigrateTo" my-i18n="conversation_converted_to_supergroup"></span>\n <span ng-switch-when="messageActionChannelMigrateFrom" my-i18n="conversation_converted_to_supergroup"></span>\n <span ng-switch-when="messageActionChannelCreate" my-i18n="conversation_created_channel"></span>\n <span ng-switch-when="messageActionChannelEditTitle" my-i18n="conversation_changed_channel_name"></span>\n <span ng-switch-when="messageActionChannelEditPhoto" my-i18n="conversation_changed_channel_photo"></span>\n <span ng-switch-when="messageActionPinMessage" my-i18n="conversation_pinned_message"></span>\n</span><span class="im_short_message_text" ng-if="message.message.length" ng-bind-html="message.richMessage"></span>'),e.put("partials/desktop/slider.html",'<div class="tg_slider_wrap">\n <div class="tg_slider_thumb"></div>\n <div class="tg_slider_track">\n <div class="tg_slider_track_fill"></div>\n </div>\n</div>'),e.put("partials/desktop/stickerset_modal.html",'<div class="stickerset_modal_wrap md_modal_wrap" my-modal-position>\n\n <div class="md_modal_head md_modal_head_simple">\n <div class="md_modal_title_wrap">\n <div class="md_modal_actions_wrap clearfix">\n <a class="md_modal_action md_modal_action_close" ng-click="$dismiss()" my-i18n="modal_close"></a>\n </div>\n </div>\n <div class="md_modal_title" ng-switch="!stickersetLoaded">\n <span ng-switch-when="true" my-i18n="stickerset_modal_title_loading"></span>\n <span ng-switch-default ng-bind="stickerset.title"></span>\n </div>\n </div>\n\n <div class="md_modal_body">\n\n <div my-stickers-list class="stickerset_modal_col">\n\n <div class="stickerset_wrap nano" my-infinite-scroller>\n <div class="stickerset_scrollable_wrap nano-content" ng-switch="!stickersetLoaded">\n\n <div ng-switch-when="true" class="stickerset_modal_loading" my-vertical-position="0.2" padding="true" my-i18n="stickerset_modal_loading">\n <my-i18n-param name="dots">\n <span my-loading-dots></span>\n </my-i18n-param>\n </div>\n\n <div ng-switch-default class="stickerset_modal_stickers_list clearfix">\n <a class="stickerset_modal_sticker_wrap" ng-repeat="sticker in documents | limitTo: slice.limit" ng-click="chooseSticker(sticker.id)">\n <div class="stickerset_modal_sticker" my-load-sticker document="sticker" dim="stickerDimensions[sticker.id]"></div>\n <div class="stickerset_modal_sticker_alt" ng-bind-html="stickerEmojis[sticker.id]"></div>\n </a>\n </div>\n\n </div>\n </div>\n\n </div>\n\n <div class="stickerset_actions_wrap">\n <div class="stickerset_actions" ng-switch="stickersetInstalled">\n <button ng-if="stickersetLoaded" class="btn btn-md btn-md-primary pull-left" my-i18n="stickerset_modal_share" ng-click="share()"></button>\n <button ng-switch-when="true" class="btn btn-md btn-md-danger" my-i18n="stickerset_modal_uninstall" ng-click="toggleInstalled(false)"></button>\n <button ng-switch-when="false" class="btn btn-md btn-md-primary" my-i18n="stickerset_modal_install" ng-click="toggleInstalled(true)"></button>\n </div>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/desktop/user_modal.html",'<div class="user_modal_wrap md_modal_wrap" my-modal-position>\n\n <div class="md_modal_head">\n <div class="md_modal_title_wrap">\n <div class="md_modal_actions_wrap clearfix">\n <a class="md_modal_action md_modal_action_close" ng-click="$close()" my-i18n="modal_close"></a>\n <a class="md_modal_action" ng-if="user.pFlags.contact" ng-click="importContact(true)" my-i18n="modal_edit"></a>\n </div>\n <div class="md_modal_title" my-i18n="user_modal_contact_info"></div>\n </div>\n\n <div class="peer_modal_profile_wrap clearfix">\n <div class="peer_modal_photo_wrap pull-left">\n <a ng-click="openPhoto(user.photo.photo_id, {p: user.id})" class="peer_modal_photo" ng-class="{disabled: !user.photo.photo_id}" ng-disabled="!user.photo.photo_id" my-peer-photolink="::user.id" img-class="peer_modal_photo" no-open="true"></a>\n </div>\n <div class="peer_modal_profile">\n <div class="peer_modal_profile_name" my-peer-link="user.id" verified="true"></div>\n <div class="peer_modal_profile_description" my-user-status="::user.id"></div>\n </div>\n </div>\n </div>\n\n <div class="md_modal_split_actions_wrap">\n <div class="md_modal_split_actions">\n <a class="md_modal_split_action" href="" ng-click="goToHistory()" title="{{\'user_modal_send_message\' | i18n}}">\n <i class="md_modal_split_action_msg"></i>\n </a>\n </div>\n </div>\n\n\n <div class="md_modal_body">\n\n <div class="md_modal_sections clearfix">\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_number" ng-if="user.phone || user.username || rAbout">\n <i class="md_modal_section_icon md_modal_section_icon_phone"></i>\n\n <div class="md_modal_section_param_wrap" ng-if="user.phone">\n <div class="md_modal_section_param_value" ng-bind="user.phone | phoneNumber"></div>\n <div class="md_modal_section_param_name" my-i18n="user_modal_phone"></div>\n </div>\n\n <div class="md_modal_section_param_wrap" ng-if="user.username">\n <div class="md_modal_section_param_value">\n <span ng-bind="\'@\' + user.username"></span>\n </div>\n <div class="md_modal_section_param_name" my-i18n="user_modal_username"></div>\n </div>\n\n <div class="md_modal_section_param_wrap" ng-if="rAbout">\n <div class="md_modal_section_param_value">\n <span ng-bind-html="rAbout"></span>\n </div>\n <div class="md_modal_section_param_name" my-i18n="user_modal_about"></div>\n </div>\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_toggle">\n <i class="md_modal_section_icon md_modal_section_icon_notification"></i>\n\n <a class="md_modal_section_toggle_wrap tg_checkbox" ng-click="settings.notifications = !settings.notifications" ng-class="settings.notifications ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="user_modal_notifications"></span>\n </a>\n\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_link" ng-init="f.showMoreActions = !user.phone.length">\n <i class="md_modal_section_icon md_modal_section_icon_more"></i>\n\n <div class="md_modal_section_link_wrap" ng-if="user.pFlags.bot &amp;&amp; !user.pFlags.bot_nochats">\n <a class="md_modal_section_link" ng-click="inviteToGroup()" my-i18n="user_modal_add_to_group"></a>\n </div>\n\n <div class="md_modal_section_link_wrap" ng-if="bot_info.commands.settings != null">\n <a class="md_modal_section_link" ng-click="sendCommand(\'settings\')" my-i18n="user_modal_bot_settings"></a>\n </div>\n\n <div class="md_modal_section_link_wrap" ng-if="bot_info.commands.help != null">\n <a class="md_modal_section_link" ng-click="sendCommand(\'help\')" my-i18n="user_modal_bot_help"></a>\n </div>\n\n <div class="md_modal_section_link_wrap" ng-if="user.phone.length > 0 &amp;&amp; !user.pFlags.contact &amp;&amp; !user.pFlags.self">\n <a class="md_modal_section_link" ng-click="importContact()" my-i18n="user_modal_add_contact"></a>\n </div>\n\n <div class="md_modal_section_link_wrap" ng-if="user.phone.length > 0">\n <a class="md_modal_section_link" ng-click="shareContact()" my-i18n="user_modal_share_contact"></a>\n </div>\n\n <div class="md_modal_section_link_wrap" ng-if="f.showMoreActions &amp;&amp; user.pFlags.contact">\n <a class="md_modal_section_link" ng-click="deleteContact()" my-i18n="user_modal_delete_contact"></a>\n </div>\n\n\n <div class="md_modal_section_link_wrap" ng-if="f.showMoreActions &amp;&amp; !user.pFlags.self">\n <a class="md_modal_section_link" ng-click="toggleBlock(!blocked)" ng-switch="blocked">\n <my-i18n ng-switch-when="true" msgid="user_modal_unblock_user"></my-i18n>\n <my-i18n ng-switch-default msgid="user_modal_block_user"></my-i18n>\n </a>\n </div>\n\n <div class="md_modal_section_link_wrap" ng-if="f.showMoreActions">\n <a class="md_modal_section_link" ng-click="flushHistory()" my-i18n="user_modal_delete_chat"></a>\n </div>\n\n <div class="md_modal_section_link_wrap" ng-if="!f.showMoreActions">\n <a class="md_modal_section_link" ng-click="f.showMoreActions = true" my-i18n="modal_more"></a>\n </div>\n\n </div>\n\n </div>\n\n </div>\n\n</div>\n\n'),e.put("partials/desktop/username_edit_modal.html",'<div class="md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <form class="modal_simple_form" ng-submit="updateUsername()">\n\n <h4 my-i18n="username_edit_modal_title"></h4>\n\n <div class="md-input-group" ng-class="{\'md-input-error\': checked.error}" my-labeled-input>\n <label class="md-input-label" my-i18n="username_edit_placeholder"></label>\n <input class="md-input" my-focused type="text" ng-model="profile.username" name="username" ng-model-options="{updateOn: \'default blur\', debounce: {default: 600, blur: 0}}" />\n </div>\n\n <div class="md_simple_form_description" my-i18n="username_edit_description_md"></div>\n\n </form>\n\n </div>\n\n <div class="md_simple_modal_footer">\n\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: profile.updating}" ng-click="updateUsername()" ng-bind="profile.updating ? \'username_edit_submit_active\' : \'username_edit_submit\' | i18n" ng-disabled="profile.updating"></button>\n\n </div>\n\n</div>'),e.put("partials/desktop/video_modal.html",'<div class="modal_close_wrap" ng-class="{modal_close_wrap_wnext: nav.hasNext}" ng-click="$close()">\n <div class="modal_close"></div>\n</div>\n\n<div class="media_modal_bottom_panel_wrap">\n <div class="media_modal_bottom_panel">\n <div class="media_modal_bottom_actions pull-right">\n <a class="media_modal_action_btn" ng-click="download()" title="{{\'media_modal_download\' | i18n}}">\n <i class="media_modal_action_btn_download"></i>\n </a>\n <a class="media_modal_action_btn" ng-if="messageID" ng-click="forward()" title="{{\'media_modal_forward\' | i18n}}">\n <i class="media_modal_action_btn_forward"></i>\n </a>\n <a class="media_modal_action_btn" ng-if="messageID" ng-click="delete()" title="{{\'media_modal_delete\' | i18n}}">\n <i class="media_modal_action_btn_delete"></i>\n </a>\n </div>\n\n <div class="media_modal_info_wrap pull-left" ng-if="video.user_id > 0" ng-switch="messageID > 0">\n <a class="media_modal_author_photo pull-left" my-peer-photolink="video.user_id" img-class="media_modal_author_photo" watch="true"></a>\n <div class="media_modal_author_name">\n <a class="media_modal_author" my-peer-link="video.user_id" peer-watch="true"></a>\n </div>\n <div class="media_modal_date" ng-if="video.date > 0">\n <a ng-switch-when="true" class="media_modal_date" ng-click="goToMessage()" ng-bind="video.date | dateOrTime :true"></a>\n <span ng-switch-default ng-bind="video.date | dateOrTime :true"></span>\n </div>\n </div>\n\n <div class="media_modal_title_wrap" my-i18n="media_modal_video"></div>\n </div>\n</div>\n\n<div class="modal-dialog">\n <div class="modal-content">\n <div my-modal-width="{{video.full.width - 32}}" class="media_modal_wrap video_modal_wrap" my-modal-position animation="no">\n\n <div class="modal-body">\n <div class="video_modal_image_wrap" my-load-video video="video"></div>\n\n </div>\n\n </div>\n </div>\n</div>'),e.put("partials/desktop/welcome.html",""),e.put("partials/mobile/audio_player.html",'<div class="audio_player_wrap clearfix">\n <a class="im_message_file_button" ng-click="togglePlay()" ng-class="{im_message_file_button_dl_audio: audio.downloaded}">\n <i class="im_message_file_button_icon" ng-class="{audio_player_btn_icon_pause: mediaPlayer.player.playing}"></i>\n </a>\n <div class="audio_player_title_wrap">\n <div class="audio_player_meta pull-right" ng-if="audio.downloaded &amp;&amp; (mediaPlayer.player.duration || audio.duration)" ng-switch="mediaPlayer.player.playing || mediaPlayer.player.currentTime > 0">\n <span ng-switch-when="true" class="audio_player_duration" ng-bind="mediaPlayer.player.currentTime | durationRemains : (mediaPlayer.player.duration || audio.duration)"></span>\n <span ng-switch-default class="audio_player_duration" ng-bind="mediaPlayer.player.duration || audio.duration | duration"></span>\n </div>\n <a ng-click="download()" class="audio_player_title" ng-switch="::audio.audioTitle.length > 0 ? 2 : (audio.file_name.length > 0 ? 1 : 0)">\n <span ng-switch-when="2">\n <strong ng-bind="::audio.audioPerformer"></strong>\n <span ng-bind="::(audio.audioPerformer ? \'– \' : \'\') + audio.audioTitle"></span>\n </span>\n <span ng-switch-when="1" ng-bind="::audio.file_name"></span>\n <span ng-switch-default my-i18n="message_attach_audio_message"></span>\n </a>\n <i ng-if="::message.pFlags.media_unread || false" ng-show="message.pFlags.media_unread" class="icon icon-audio-unread"></i>\n <div class="audio_player_meta" ng-if="!audio.downloaded || !(mediaPlayer.player.duration || audio.duration)" ng-switch="audio.progress.enabled">\n <span ng-switch-when="true" class="audio_player_size" ng-bind="audio.progress | formatSizeProgress"></span>\n <span ng-switch-default class="audio_player_size" ng-bind="audio.size | formatSize"></span>\n </div>\n </div>\n <div class="audio_player_actions" ng-if="!audio.progress.enabled &amp;&amp; !audio.downloaded">\n <a ng-if="audio._ == \'document\'" ng-click="download()" my-i18n="message_attach_document_download"></a>\n <a ng-click="togglePlay()" my-i18n="message_attach_audio_play"></a>\n </div>\n <div class="audio_player_progress_wrap" ng-if="audio.progress.enabled || audio.downloaded" ng-switch="audio.progress.enabled">\n <div ng-switch-when="true" class="clearfix im_message_cancelable_progress_wrap">\n <a class="im_message_media_progress_cancel pull-right" ng-click="audio.progress.cancel()" my-i18n="modal_cancel"></a>\n <div class="im_message_download_progress_wrap">\n <div class="progress tg_down_progress">\n <div class="progress-bar progress-bar-success" ng-style="{width: audio.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n <div ng-switch-default class="im_message_playback_progress_wrap">\n <div class="audio_player_seek_slider" my-slider slider-model="mediaPlayer.player.currentTime" slider-max="mediaPlayer.player.duration || audio.duration" slider-onchange="seek(value)"></div>\n </div>\n </div>\n <audio ng-if="audio.url" media-player="mediaPlayer.player">\n <source ng-src="{{::audio.url}}" type="{{audio.mime_type || \'audio/ogg\'}}" volume="{{::volume}}" />\n </audio>\n</div>'),e.put("partials/mobile/changelog_modal.html",'<div class="changelog_modal_wrap">\n\n <a class="modal-close-button" ng-click="$close()"><i></i></a>\n\n <div class="modal-body">\n\n <div class="changelog_card_wrap" ng-switch="lastVersion === false">\n <div ng-switch-when="true">\n <div class="changelog_card"></div>\n <h2 class="changelog_header" my-i18n="changelog_modal_header_recent_updates_md"></h2>\n </div>\n <div ng-switch-default>\n <div class="changelog_card"></div>\n <h2 class="changelog_header" my-i18n="changelog_modal_header_new_updates_md"></h2>\n </div>\n </div>\n\n <div class="changelog_versions_wrap">\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.5.3\n <span class="pull-right" my-i18n="changelog_modal_title_current_version"></span>\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Inline bots: A new way to add bot content to any chat. Type a bot\'s username and your query in the text field to get instant results and send them to your chat partner. Try typing <code>@gif dog</code> in your next chat. Sample bots: @gif, @wiki, @bing, @vid, @bold.</li>\n <li>Check out the <a href="https://telegram.org/blog/inline-bots" target="_blank">Telegram Blog</a> for more info.</li>\n <li>Improved GIFs: 20x faster sending and downloading, nice animated progress</li>\n <li>Click on message date to reply (or to forward from channels).</li>\n <li>Preview images before sending when pasting from clipboard.</li>\n <li>Improved formatting for copy-pasted history fragments (date, time and sender names inserted automatically).</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.5.2\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Unread counters for muted chats now colored in gray.</li>\n <li>Improved previews for sticker sets: Click on a sticker to view the whole set, click on stickers in a set to send right away, added a \'Share\' button.</li>\n <li>Improved performance.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.5.1\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Groups that have reached their capacity of 200 users can be upgraded to supergroups of up to 1,000 members.</li>\n <li>[Mobile] Supported web page previews.</li>\n <li>[FirefoxOS] Added sender userpic to notifications.</li>\n <li>[FirefoxOS] Supported share url from Browser.</li>\n <li>Check out the <a href="https://telegram.org/blog/supergroups" target="_blank">Telegram Blog</a> for more info</li>\n </ul>\n </div>\n </div>\n\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.5.0\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Removed annoying "multiple tabs open" error.</li>\n <li>Improved message forwarding.</li>\n <li>Added view counter to messages from channels.</li>\n <li>Improved image loading in Safari and Firefox.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.4.9\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>New emoji and sticker menu, tabs for sticker packs.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.4.8\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Introducing Channels – a great new way to broadcast your messages to unlimited audiences.</li>\n <li>Check out the <a href="https://telegram.org/blog/channels" target="_blank">Telegram Blog</a> for more info</li>\n <li>Improved performance in Safari on OS X El Capitan.</li>\n <li>Added formatting for fixed-width code, surround text with `single backticks` for inline text and ```triple backticks``` for blocks of pre-formatted text.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.4.7\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>New bot API, free for everyone. If you\'re an engineer, create your own bots for games, services or integrations.\n </li>\n <li>Check out <a href="https://telegram.org/blog/bot-revolution" target="_blank">Telegram Blog</a> for more info</li>\n <li>Improved Stickers support: now stickers are loading much faster.</li>\n <li>Click on any custom stickers in chats to view and add sticker sets.</li>\n <li>[Mobile] Reply to a message easily: tap on any message and select "Reply".</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.4.6\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Install and share custom sticker sets like this one: <a href="tg://addstickers?set=Animals">telegram.me/addstickers/Animals</a></li>\n <li>If you\'re an artist, create custom sticker sets using our <a href="tg://resolve?domain=stickers">@Stickers</a> bot.</li>\n <li>Check out <a href="https://telegram.org/blog/stickers-revolution" target="_blank">Telegram Blog</a> for more info</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.4.5\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>\n Invite links for group chats:<br/>\n Check out <a href="https://telegram.org/blog/invite-links" target="_blank">Telegram Blog</a> for more info\n </li>\n <li>Smart notifications</li>\n <li>\'Listened\' status for voice messages</li>\n <li>Places in locations (venues, landmarks)</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.4.4\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Link Previews:<br/>\n Get rich link summaries for tweets, YouTube videos, Instagram photos and other content.</li>\n\n <li>Check out <a href="https://telegram.org/blog/link-preview" target="_blank">Telegram Blog</a> for more info.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.4.3\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Sessions List:<br/>\n View your active Telegram sessions (on desktop, tablet and mobile devices) and close specific sessions remotely.</li>\n\n <li>Two-step verification:<br/>\n Set up an additional password that will be required to log into your Telegram account.</li>\n\n <li>Check out <a href="https://telegram.org/blog/sessions-and-2-step-verification" target="_blank">Telegram Blog</a> for more info.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.4.2\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Optimization for screens with smaller Y-resolutions.</li>\n <li>Supported Spotify URL embeds.</li>\n <li>Mentions of the current user in group chats are now highlighted.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.4.1\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Reply to specific messages in groups.</li>\n <li>Mention @usernames in groups to notify multiple users.</li>\n <li>Revised notifications in groups: mentioned users and people you reply to will be notified (private chat notification settings apply in this case instead of group settings). Check out <a href="https://telegram.org/blog/replies-mentions-hashtags" target="_blank">Telegram Blog</a> for more info.</li>\n <li>Setting to disable message preview</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.4.0\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Full stickers support</li>\n <li>Multisearch box: instantly find chats, usernames and messages</li>\n <li>Emoji autocomplete: e.g., type <strong>:kiss</strong> in the message field to see the list. <a href="http://www.emoji-cheat-sheet.com/" target="_blank">Full cheat sheet &raquo;</a></li>\n <li>Added \'typing\' notification in chats list</li>\n <li>Online members counter in group headers</li>\n </ul>\n </div>\n </div>\n\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.9\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>[Desktop] Material design completed</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.8\n <span class="pull-right" my-i18n="changelog_modal_title_current_version"></span>\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Telegram.me links open right in Telegram Web when authorized</li>\n <li>@username mentions in messages are clickable and open a conversation with the user</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.7\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>[Desktop] [Beta] New material design for modal windows</li>\n <li>[Desktop] Forward messages to multiple recipients</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.6\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>New viewer for photos, videos, documents.</li>\n <li>[FirefoxOS] Improved media downloads.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.5\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added embedded Soundcloud tracks and playlists.</li>\n <li>Added global user search to contacts list.</li>\n <li>Added switch to mobile version on window resize.</li>\n <li>Migrate to HTTPS notification</li>\n <li>Bugfixes.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.4\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added embedded Facebook posts and Vimeo videos.</li>\n <li>Improved IE10+ support: downloading files and style fixes.</li>\n <li>Added unsupported media playback warning.</li>\n <li>Bugfixes.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.3\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added Native Client module: dramatically improved encryption speed; Download and upload speed is now as high as in native applications.</li>\n <li>HTTPS. We recommend you to use <a href="https://web.telegram.org" target="_blank">https://web.telegram.org</a>.</li>\n <li>Added multiple open tabs warning. Please note, that only one tab with Telegram Web will work.</li>\n <li>Added embedded Instagram, Twitter, Vine, YouTube links.</li>\n <li>Jump to selected spot when playing back audio.</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.2\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Usernames support: <a href="" ng-click="changeUsername()">Choose a username right now!</a></li>\n <li>Search can now find public users by username.</li>\n <li>Most popular emoticons shown in \'recent\' when empty</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.1\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>New languages: Spanish, German and Italian are now available </li>\n <li>New custom-made audio player</li>\n <li>Bad browser page for IE 6-9</li>\n <li>Perfomance improvements and bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.0\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Log in codes may be received in other Telegram apps</li>\n <li>Partner\'s online status updates automatically</li>\n <li>Added support for non-english hashtags in messages</li>\n <li>Fixed invalid scrollbar width bug</li>\n <li>[Desktop] Added automatic country code detection</li>\n <li>[FirefoxOS] Improved PUSH-notifications for &lt;= 1.1</li>\n <li>[FirefoxOS] Fixed emoji in notifications</li>\n <li>[FirefoxOS] Fixed attachment bug for &lt;= 1.1</li>\n <li>[FirefoxOS] Added phonebook permissions handling</li>\n <li>[FirefoxOS] Added ability to share Gallery photos in Telegram</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.2.9\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Updated mobile layout</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.2.5\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Updated mobile layout</li>\n <li>Improved performance</li>\n <li>Improved messages grouping</li>\n <li>[FirefoxOS] Fixed notifications for &lt;= 1.1</li>\n <li>[FirefoxOS] Fixed phonebook import</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.2.1\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Improved key generation performance on slow devices</li>\n <li>Added network sleep for mobile devices</li>\n <li>[FirefoxOS] Added support of PUSH notifications</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.2\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Updated contacts list, added edit mode</li>\n <li>First Firefox OS release. See <a href="https://marketplace.firefox.com/app/telegram" target="_blank">Firefox Marketplace</a></li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.9\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.9\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Improvements of performance</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.8\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.8\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Improved mobile layout</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.7\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.7\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Improved mobile layout</li>\n <li>Added file cache for Firefox and Android</li>\n <li>New design for forwarded messages</li>\n <li>Hash-tags support</li>\n <li>Messaging bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.6\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.6\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added search of messages</li>\n <li>Improved performance of chats with lots of unread messages</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.5\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.5\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added registration</li>\n <li>Improved experience for newly registered users</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.4\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.4\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Browse userpic history (click on the photo in user info)</li>\n <li>New <a href="https://github.com/zhukov/webogram" target="_blank" title="Source code on GitHub">GitHub</a>, <a href="https://twitter.com/telegram_web" target="_blank" title="Follow us on Twitter!">Twitter</a> buttons in Settings</li>\n <li>Updated keyboard shortcuts:</li>\n <ul>\n <li><strong>Alt+Home</strong> - switch to first (most recent) conversation</li>\n <li>Removed <strong>Alt+1, 2, 3..</strong> shortcuts due to conflicts in different browsers</li>\n </ul>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.3\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.3\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added version history to welcome screen</li>\n <li>Added keyboard shortcuts:</li>\n <ul>\n <li><strong>Tab</strong> - set focus to message field</li>\n <li><strong>Esc</strong> or <strong>Shift+Tab</strong> - set focus to search field</li>\n <li><strong>Up/Down</strong> (while in search field) - move between conversations</li>\n <li><strong>Enter</strong> (while in search field) - open selected or first conversation</li>\n <li><strong>Alt+Up/Down</strong> - move to previous/next conversation</li>\n </ul>\n <li>Improved grouping for messages</li>\n <li>Fixed video modal positioning bug</li>\n <li>Fixed focusing issues on mobile</li>\n </ul>\n </div>\n </div>\n\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/channel_modal.html",'<div class="chat_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-toggle-wrap dropdown" dropdown ng-if="chatFull.chat.pFlags.creator || !chatFull.chat.pFlags.left && !chatFull.chat.pFlags.kicked">\n <a class="dropdown-toggle navbar-toggle" dropdown-toggle>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </a>\n <ul class="dropdown-menu">\n <li ng-if="hasRights(\'edit_photo\')">\n <a ng-click="deletePhoto()" my-i18n="group_modal_menu_delete_photo"></a>\n </li>\n <li ng-if="hasRights(\'edit_title\')">\n <a ng-click="editChannel()" my-i18n="modal_edit"></a>\n </li>\n <li ng-if="chatFull.chat.pFlags.creator">\n <a ng-click="deleteChannel()" my-i18n="channel_modal_delete_channel"></a>\n </li>\n <li ng-if="!chatFull.chat.pFlags.creator && !chatFull.chat.pFlags.left && !chatFull.chat.pFlags.kicked">\n <a ng-click="leaveChannel()" my-i18n="group_modal_menu_leave"></a>\n </li>\n </ul>\n </div>\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li>\n <a ng-click="$close()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="channel_modal_info"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="mobile_user_modal_photo_profile_wrap">\n\n <a ng-click="openPhoto(chatFull.chat_photo.id, {p: -chatFull.chat.id})" class="mobile_user_modal_image_wrap pull-left" my-peer-photolink="::-chatFull.chat.id" img-class="mobile_user_modal_image mobile_chat_modal_image" no-open="true" watch="true" ng-class="{disabled: !chatFull.chat.photo.photo_small}" ng-disabled="!chatFull.chat.photo.photo_small"></a>\n\n <div class="mobile_user_modal_info_wrap clearfix">\n <h4 class="mobile_user_modal_header" my-peer-link="-chatFull.chat.id" verified="true"></h4>\n <p class="mobile_user_modal_status" ng-if="chatFull.participants_count > 0">\n <ng-pluralize count="chatFull.participants_count"\n when="group_modal_pluralize_participants">\n </ng-pluralize>\n </p>\n </div>\n\n </div>\n\n <div class="mobile_modal_section" ng-if="chatFull.rAbout">\n <h4 class="mobile_modal_section_header" my-i18n="channel_modal_description"></h4>\n <div class="mobile_modal_section_value" ng-bind-html="chatFull.rAbout"></div>\n </div>\n\n <div class="mobile_modal_section" ng-if="chatFull.chat.username || chatFull.chat.pFlags.creator">\n <h4 class="mobile_modal_section_header" my-i18n="channel_modal_share_link"></h4>\n <div class="mobile_modal_section_value" ng-switch="chatFull.chat.username.length > 0">\n <a ng-switch-when="true" class="settings_modal_username_link" ng-click="shareLink($event)" ng-bind="\'https://telegram.me/\' + chatFull.chat.username" ng-href="https://telegram.me/{{chatFull.chat.username}}" target="_blank"></a>\n <a ng-switch-default ng-click="shareLink($event)" ng-bind="chatFull.exported_invite.link" ng-href="{{chatFull.exported_invite.link}}" target="_blank"></a>\n </div>\n </div>\n\n <div class="mobile_modal_action_wrap" ng-if="hasRights(\'invite\')">\n <a class="mobile_modal_action" ng-click="inviteToChannel()" my-i18n="channel_modal_add_member"></a>\n </div>\n\n <div class="mobile_modal_action_wrap" ng-if="chatFull.chat.pFlags.left">\n <a class="mobile_modal_action" ng-click="joinChannel()" my-i18n="channel_modal_join"></a>\n </div>\n <div class="mobile_modal_action_wrap" ng-if="hasRights(\'edit_photo\') &amp;&amp; !photo.updating">\n <span class="mobile_modal_action mobile_modal_upload_action">\n <input my-file-upload type="file" multiple="false" class="im_attach_input" size="120" multiple="false" accept="image/x-png, image/png, image/gif, image/jpeg" />\n <my-i18n="group_modal_update_photo"></my-i18n>\n </span>\n </div>\n <div class="mobile_modal_action_wrap" ng-if="photo.updating">\n <span class="mobile_modal_action" my-i18n>\n <my-i18n="group_modal_update_active"></my-i18n>\n <span my-loading-dots></span>\n </span>\n </div>\n\n <div class="mobile_modal_action_wrap">\n <a class="mobile_modal_action tg_checkbox clearfix" ng-click="settings.notifications = !settings.notifications" ng-class="settings.notifications ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="group_modal_notifications"></span>\n </a>\n </div>\n\n <div class="mobile_modal_section" ng-if="chatFull.participants.participants.length > 0">\n <h4 class="mobile_modal_section_header" my-i18n="group_modal_members"></h4>\n <div class="mobile_modal_section_body">\n\n <div class="chat_modal_members_list">\n\n <div class="chat_modal_participant_wrap clearfix" ng-repeat="participant in chatFull.participants.participants">\n <a ng-if="participant.canKick" ng-click="kickFromChannel(participant.user_id)" class="chat_modal_participant_kick pull-right" my-i18n="group_modal_members_kick"></a>\n <a ng-if="participant.canLeave" ng-click="leaveChannel()" class="chat_modal_participant_kick pull-right" my-i18n="group_modal_menu_leave"></a>\n\n <a class="chat_modal_participant_photo pull-left" my-peer-photolink="participant.user_id" img-class="chat_modal_participant_photo" status="true"></a>\n\n <div class="chat_modal_participant_name">\n <a my-peer-link="participant.user_id"></a>\n </div>\n <div class="chat_modal_participant_status" my-user-status="::participant.user_id" bot-chat-privacy="true"></div>\n </div>\n\n </div>\n\n </div>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/chat_create_modal.html",'<div class="contacts_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: group.creating}" ng-click="createGroup()" ng-bind="group.creating ? \'group_create_submit_active\' : \'group_create_submit\' | i18n" ng-disabled="group.creating"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="group_create_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="createGroup()" my-vertical-position="0.25">\n\n <div class="form-group">\n <input class="form-control input-lg" my-focused type="text" placeholder="{{\'group_create_name\' | i18n}}" ng-model="group.name"/>\n </div>\n\n </form>\n\n </div>\n\n</div>'),e.put("partials/mobile/chat_edit_modal.html",'<div class="contacts_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: group.updating}" ng-click="updateGroup()" ng-bind="group.updating ? \'group_edit_submit_active\' : \'group_edit_submit\' | i18n" ng-disabled="group.updating"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="group_edit_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="updateGroup()" my-vertical-position="0.25">\n\n <div class="form-group">\n <input class="form-control input-lg" my-focused type="text" placeholder="{{\'group_edit_name\' | i18n}}" ng-model="group.name"/>\n </div>\n\n </form>\n\n </div>\n\n</div>'),e.put("partials/mobile/chat_modal.html",'<div class="chat_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-toggle-wrap dropdown" dropdown>\n <a class="dropdown-toggle navbar-toggle" dropdown-toggle>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </a>\n <ul class="dropdown-menu">\n <li ng-if="chatFull.thumb.location" ng-if="hasRights(\'edit_title\')">\n <a ng-click="deletePhoto()" my-i18n="group_modal_menu_delete_photo"></a>\n </li>\n <li ng-if="hasRights(\'edit_title\')">\n <a ng-click="editTitle()" my-i18n="group_modal_menu_edit_group"></a>\n </li>\n <li>\n <a ng-click="flushHistory()" my-i18n="group_modal_menu_delete_chat"></a>\n </li>\n </ul>\n </div>\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li>\n <a ng-click="$close()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="group_modal_info"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="mobile_user_modal_photo_profile_wrap">\n\n <a ng-click="openPhoto(chatFull.chat_photo.id, {p: -chatFull.chat.id})" class="mobile_user_modal_image_wrap pull-left" my-peer-photolink="::-chatFull.chat.id" img-class="mobile_user_modal_image mobile_chat_modal_image" no-open="true" watch="true" ng-class="{disabled: !chatFull.chat.photo.photo_small}" ng-disabled="!chatFull.chat.photo.photo_small"></a>\n\n <div class="mobile_user_modal_info_wrap clearfix">\n <h4 class="mobile_user_modal_header" my-peer-link="-chatFull.chat.id"></h4>\n <p class="mobile_user_modal_status" ng-if="chatFull.chat.participants_count > 0">\n <ng-pluralize count="chatFull.chat.participants_count"\n when="group_modal_pluralize_participants">\n </ng-pluralize>\n </p>\n </div>\n\n </div>\n\n <div class="mobile_modal_action_wrap" ng-if="hasRights(\'invite\') &amp;&amp; chatFull.participants.participants.length">\n <a class="mobile_modal_action" ng-click="inviteToGroup()" my-i18n="group_modal_add_member"></a>\n </div>\n <div class="mobile_modal_action_wrap" ng-if="chatFull.chat._ != \'chatForbidden\' && !chatFull.chat.pFlags.left && chatFull.chat.pFlags.creator">\n <a class="mobile_modal_action" ng-click="inviteViaLink()" my-i18n="group_modal_menu_share_link"></a>\n </div>\n\n <div class="mobile_modal_action_wrap" ng-if="chatFull.chat._ != \'chatForbidden\' &amp;&amp; chatFull.chat.pFlags.left">\n <a class="mobile_modal_action" ng-click="returnToGroup()" my-i18n="group_modal_return"></a>\n </div>\n <div class="mobile_modal_action_wrap" ng-if="chatFull.chat._ == \'chatForbidden\'">\n <a class="mobile_modal_action" ng-click="flushHistory()" my-i18n="group_modal_return"></a>\n </div>\n <div class="mobile_modal_action_wrap" ng-if="hasRights(\'edit_photo\') &amp;&amp; !photo.updating">\n <span class="mobile_modal_action mobile_modal_upload_action">\n <input my-file-upload type="file" multiple="false" class="im_attach_input" size="120" multiple="false" accept="image/x-png, image/png, image/gif, image/jpeg" />\n <my-i18n="group_modal_update_photo"></my-i18n>\n </span>\n </div>\n <div class="mobile_modal_action_wrap" ng-if="photo.updating">\n <span class="mobile_modal_action" my-i18n>\n <my-i18n="group_modal_update_active"></my-i18n>\n <span my-loading-dots></span>\n </span>\n </div>\n\n <div class="mobile_modal_action_wrap">\n <a class="mobile_modal_action tg_checkbox clearfix" ng-click="settings.notifications = !settings.notifications" ng-class="settings.notifications ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="group_modal_notifications"></span>\n </a>\n </div>\n\n <div class="mobile_modal_section">\n <h4 class="mobile_modal_section_header" my-i18n="group_modal_members"></h4>\n <div class="mobile_modal_section_body">\n\n <div class="chat_modal_members_list">\n\n <div class="chat_modal_participant_wrap clearfix" ng-repeat="participant in chatFull.participants.participants | orderBy:\'-user.sortStatus\'">\n <a ng-if="participant.canKick" ng-click="kickFromGroup(participant.user_id)" class="chat_modal_participant_kick pull-right" my-i18n="group_modal_members_kick"></a>\n <a ng-if="participant.canLeave" ng-click="leaveGroup()" class="chat_modal_participant_kick pull-right" my-i18n="group_modal_menu_leave"></a>\n\n <a class="chat_modal_participant_photo pull-left" my-peer-photolink="participant.user_id" img-class="chat_modal_participant_photo" status="true"></a>\n\n <div class="chat_modal_participant_name">\n <a my-peer-link="participant.user_id"></a>\n </div>\n <div class="chat_modal_participant_status" my-user-status="::participant.user_id" bot-chat-privacy="true"></div>\n </div>\n\n </div>\n\n </div>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/contacts_modal.html",'<div class="contacts_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header" ng-switch="action">\n\n <ul ng-switch-when="edit" class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-left">\n <a ng-click="toggleEdit(false)" my-i18n="contacts_modal_edit_cancel"></a>\n </li>\n <li class="navbar-quick-right">\n <a ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" ng-click="deleteSelected()">\n <my-i18n msgid="contacts_modal_edit_delete"></my-i18n>\n <strong ng-bind="selectedCount"></strong>\n </a>\n </li>\n </ul>\n\n <div ng-switch-default class="navbar-toggle-wrap dropdown" ng-show="!action" dropdown>\n <a class="dropdown-toggle navbar-toggle" dropdown-toggle>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </a>\n <ul class="dropdown-menu">\n <li>\n <a ng-click="toggleEdit(true)" my-i18n="contacts_modal_edit_list"></a>\n </li>\n <li>\n <a ng-click="importContact()" my-i18n="contacts_modal_new_contact"></a>\n </li>\n </ul>\n </div>\n\n <ul ng-switch-default class="nav navbar-nav navbar-quick-nav">\n <li ng-if="action == \'select\' || action == \'new_group\'" class="navbar-quick-right">\n <a ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" ng-click="submitSelected()" my-i18n="modal_next"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 ng-switch="action">\n <div ng-switch-when="new_group" ng-switch="selectedCount > 0">\n <span ng-switch-when="true">\n <ng-pluralize count="selectedCount" when="contacts_modal_pluralize_new_group_members">\n </ng-pluralize>\n </span>\n <span ng-switch-default my-i18n="group_create_contacts_modal_title"></span>\n </div>\n <span ng-switch-default my-i18n="contacts_modal_title"></span>\n </h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="contacts_modal_search">\n <input class="form-control contacts_modal_search_field no_outline" my-focused type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query"/>\n <a class="im_dialogs_search_clear tg_search_clear" ng-click="search.query = \'\'" ng-show="search.query.length">\n <i class="icon icon-search-clear"></i>\n </a>\n </div>\n\n\n <div class="contacts_modal_col contacts_wrap contacts_scrollable_wrap mobile_scrollable_wrap" my-contacts-list-mobile my-infinite-scroller-mobile>\n <ul class="contacts_modal_members_list nav nav-pills nav-stacked">\n\n <li class="contacts_modal_contact_wrap clearfix" ng-repeat="contact in contacts | orderBy:\'user.sortName\' | limitTo: slice.limit track by contact.userID" ng-class="{active: selectedContacts[contact.userID], disabled: disabledContacts[contact.userID]}">\n <a class="contacts_modal_contact" ng-click="contactSelect(contact.userID)">\n\n <i ng-if="multiSelect" class="icon icon-contact-tick"></i>\n\n <div class="contacts_modal_contact_photo pull-left" my-peer-photolink="contact.userID" status="true" img-class="contacts_modal_contact_photo"></div>\n <div class="contacts_modal_contact_name" my-peer-link="contact.userID"></div>\n <div class="contacts_modal_contact_status" ng-switch="contact.found">\n <span ng-switch-when="true" ng-bind="\'@\' + contact.user.username"></span>\n <span ng-switch-default my-user-status="::contact.userID"></span>\n </div>\n </a>\n </li>\n\n </ul>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/country_select_modal.html",'<div class="countries_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 class="modal_simple_header" my-i18n="country_select_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="countries_modal_search">\n <input class="form-control countries_modal_search_field no_outline" my-focused type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query"/>\n <a class="countries_modal_search_clear tg_search_clear" ng-click="search.query = \'\'" ng-show="search.query.length">\n <i class="icon icon-search-clear"></i>\n </a>\n </div>\n\n <div class="countries_modal_col countries_wrap countries_scrollable_wrap mobile_scrollable_wrap" my-countries-list-mobile my-infinite-scroller-mobile>\n <ul class="countries_modal_members_list nav nav-pills nav-stacked">\n\n <li class="countries_modal_country_wrap clearfix" ng-repeat="country in countries | limitTo : slice.limit track by $index">\n <a class="countries_modal_country" ng-click="$close(country)">\n <span class="countries_modal_country_code pull-right" ng-bind="country.code"></span>\n <span class="countries_modal_country_name" ng-bind="country.name"></span>\n </a>\n </li>\n\n </ul>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/dialog.html",'<a class="im_dialog" ng-mousedown="dialogSelect(dialogMessage.peerString, dialogMessage.unreadCount == -1 && dialogMessage.mid)">\n\n <div class="im_dialog_meta pull-right text-right">\n <div class="im_dialog_date" ng-bind="dialogMessage.dateText"></div>\n <span\n class="im_dialog_badge badge"\n ng-show="dialogMessage.unreadCount > 0 && !dialogMessage.pFlags.out"\n ng-bind="dialogMessage.unreadCount"\n my-peer-muted="dialogMessage.peerID" muted-class="im_dialog_badge_muted"\n ></span>\n <i\n class="im_dialog_unread"\n ng-show="dialogMessage.pFlags.out && dialogMessage.pFlags.unread"\n ></i>\n </div>\n\n <div class="im_dialog_photo pull-left" my-peer-photolink="::dialogMessage.peerID" img-class="im_dialog_photo" watch="true"></div>\n\n <div class="im_dialog_message_wrap">\n\n <div class="im_dialog_peer">\n <span my-peer-link="dialogMessage.peerID" verified="true"></span>\n </div>\n\n <div ng-if="dialogMessage.typing > 0" class="im_dialog_message">\n <span class="im_dialog_message_service" my-i18n="im_conversation_group_typing">\n <my-i18n-param name="name"><span my-peer-link="dialogMessage.typing" short="true" class="im_dialog_chat_from_wrap"></span></my-i18n-param><my-i18n-param name="dots"><span my-loading-dots></span></my-i18n-param>\n </span>\n </div>\n\n <div ng-show="!dialogMessage.typing" ng-switch="dialogMessage.deleted">\n <div ng-switch-when="true" class="im_dialog_message">\n <span class="im_dialog_message_text" my-i18n="conversation_message_deleted"></span>\n </div>\n <div ng-switch-default class="im_dialog_message">\n <span ng-switch="dialogMessage.peerID > 0 || dialogMessage.fromID < 0">\n <span ng-switch-when="true">\n <span class="im_dialog_chat_from_wrap" ng-if="dialogMessage.pFlags.out && dialogMessage.fromID > 0">\n <span\n class="im_dialog_chat_from"\n my-i18n="conversation_you"\n ></span><span ng-if="dialogMessage.message.length > 0 || !!dialogMessage.media">:</span>\n </span>\n </span>\n <span ng-switch-default>\n <span class="im_dialog_chat_from_wrap" ng-switch="dialogMessage.pFlags.out && dialogMessage._ != \'messageService\'">\n <span\n ng-switch-when="false"\n class="im_dialog_chat_from"\n my-peer-link="dialogMessage.from_id" short="true" peer-watch="true"\n ></span><span\n ng-switch-when="true"\n class="im_dialog_chat_from"\n my-i18n="conversation_you"\n ></span><span ng-if="dialogMessage.message.length || dialogMessage.media">:</span>\n </span>\n </span>\n </span>\n\n <span my-short-message="dialogMessage"></span>\n </div>\n </div>\n\n </div>\n</a>\n'),e.put("partials/mobile/edit_contact_modal.html",'<div class="import_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: progress.enabled}" ng-click="doImport()" ng-bind="progress.enabled ? \'contact_edit_modal_submit_active\' : \'contact_edit_modal_submit\'| i18n" ng-disabled="progress.enabled"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="contact_edit_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="doImport()" my-vertical-position="0.3">\n\n <div class="form-group">\n <span class="form-control uneditable_input input-lg disabled" disabled my-focused type="text" ng-bind="importContact.phone | phoneNumber"></span>\n </div>\n <div class="form-group">\n <input class="form-control input-lg" type="text" placeholder="{{\'contact_edit_modal_first_name\' | i18n}}" ng-model="importContact.first_name" my-submit-on-enter/>\n </div>\n <div class="form-group">\n <input class="form-control input-lg" type="text" placeholder="{{\'contact_edit_modal_last_name\' | i18n}}" ng-model="importContact.last_name" my-submit-on-enter/>\n </div>\n\n </form>\n\n </div>\n\n</div>'),e.put("partials/mobile/full_gif.html",'<a class="img_gif_with_progress_wrap" ng-click="toggle($event)">\n\n <div class="img_gif_image_wrap">\n\n <div class="img_gif_meta" ng-show="!isActive" ng-switch="document.progress.enabled">\n <div ng-switch-when="true" class="img_gif_meta_contents">\n <i class="icon icon-cancel">\n <i class="icon icon-bar"></i>\n <i class="icon icon-bar"></i>\n </i>\n <div my-arc-progress="document.progress.percent"></div>\n </div>\n <div ng-switch-default class="img_gif_label noselect img_gif_meta_contents">GIF</div>\n </div>\n\n <div ng-if="document.url" ng-show="document.downloaded &amp;&amp; isActive" ng-switch="document.mime_type == \'video/mp4\'">\n <video ng-switch-when="true" width="{{document.thumb.width}}" height="{{document.thumb.height}}" controls loop class="img_gif_video">\n <source ng-src="{{document.url}}" type="video/mp4">\n </video>\n <img ng-switch-default class="img_gif_image" ng-src="{{document.url}}" width="{{document.thumb.width}}" height="{{document.thumb.height}}" />\n </div>\n <img ng-hide="document.downloaded &amp;&amp; isActive" class="img_gif_thumb" my-load-thumb thumb="document.thumb" />\n\n </div>\n\n</a>'),e.put("partials/mobile/full_photo.html",'<div class="img_fullsize_with_progress_wrap">\n <div class="img_fullsize_progress_overlay" ng-show="progress.enabled">\n <div class="img_fullsize_progress_wrap">\n <div class="img_fullsize_progress progress tg_progress" ng-show="progress.percent > 0">\n <div class="progress-bar progress-bar-success" ng-style="{width: progress.percent + \'%\'}">\n </div>\n </div>\n </div>\n </div>\n <div class="photo_full_wrap">\n <a class="photo_modal_image">\n <img class="photo_modal_image"/>\n </a>\n </div>\n <div class="photo_modal_error_wrap" ng-if="error">\n <div class="photo_modal_error" ng-if="error.html" ng-bind-html="error.html"></div>\n <div class="photo_modal_error" ng-if="error.text" ng-bind="error.text"></div>\n </div>\n</div>'),e.put("partials/mobile/full_video.html",'<div class="img_fullsize_with_progress_wrap" ng-style="{width: video.full.width + \'px\', height: video.full.height + \'px\'}">\n <div class="img_fullsize_progress_overlay" ng-show="video.progress.enabled">\n <div class="img_fullsize_progress_wrap" ng-style="{width: video.full.width + \'px\', height: video.full.height + \'px\'}">\n <div class="img_fullsize_progress progress tg_progress">\n <div class="progress-bar progress-bar-success" style="width: {{video.progress.percent}}%"></div>\n </div>\n </div>\n </div>\n <div class="img_fullsize_wrap" ng-if="!video.url">\n <img\n class="img_fullsize"\n my-load-thumb\n thumb="video.fullThumb"\n />\n </div>\n <div class="video_full_player" ng-if="video.url" ng-switch="player.quicktime">\n <embed ng-switch-when="true" ng-src="{{video.url}}" width="{{video.full.width}}" height="{{video.full.height}}" autoplay="true" CONTROLLER="TRUE" SHOWCONTROLS="TRUE" controller="true" loop="false" pluginspace="http://www.apple.com/quicktime/" />\n <video ng-switch-default width="{{video.full.width}}" height="{{video.full.height}}" controls autoplay >\n <source ng-src="{{video.url}}" type="video/mp4">\n </video>\n </div>\n <div class="video_full_error_wrap" ng-if="error">\n <div class="video_full_error" ng-if="error.html" ng-bind-html="error.html"></div>\n <div class="video_full_error" ng-if="error.text" ng-bind="error.text"></div>\n </div>\n</div>'),e.put("partials/mobile/head.html",'<div class="tg_page_head">\n <div class="navbar navbar-static-top navbar-inverse" role="navigation" ng-class="{navbar_peer_not_selected: !curDialog.peer, navbar_offline: offline, navbar_history_select: historyState.selectActions}">\n <div class="container">\n\n\n <a class="navbar-peer-wrap" my-peer-photolink="historyPeer.id" peer-watch="true"></a>\n\n <div class="navbar-toggle-wrap dropdown" dropdown ng-switch="!curDialog.peer">\n <a class="dropdown-toggle navbar-toggle" dropdown-toggle>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </a>\n <ul ng-switch-when="true" class="dropdown-menu">\n <li><a ng-click="openGroup()" my-i18n="head_new_group"></a></li>\n <li><a ng-click="importContact()" my-i18n="head_new_contact"></a></li>\n <li ng-if="!isEmpty.contacts"><a ng-click="openContacts()" my-i18n="head_contacts"></a></li>\n <li><a ng-click="openSettings()" my-i18n="head_settings"></a></li>\n <li><a ng-click="logOut()" my-i18n="head_log_out"></a></li>\n </ul>\n <ul ng-switch-default class="dropdown-menu">\n <li><a ng-click="toggleEdit()" my-i18n="head_edit_messages"></a></li>\n <li ng-if="!historyFilter.mediaType" class="divider"></li>\n <li ng-if="!historyFilter.mediaType"><a ng-click="toggleMedia(\'photos\')" my-i18n="head_media_photos"></a></li>\n <li ng-if="!historyFilter.mediaType"><a ng-click="toggleMedia(\'video\')" my-i18n="head_media_video"></a></li>\n <li ng-if="!historyFilter.mediaType"><a ng-click="toggleMedia(\'documents\')" my-i18n="head_media_documents"></a></li>\n <li ng-if="!historyFilter.mediaType"><a ng-click="toggleMedia(\'audio\')" my-i18n="head_media_audio"></a></li>\n </ul>\n </div>\n\n <a class="navbar-search-wrap" ng-click="toggleSearch()">\n <i class="icon-search"></i>\n </a>\n\n <div class="navbar-header">\n\n <a class="navbar-brand tg_logo_wrap" href="#/im"><i class="icon icon-tg-logo"></i><i class="icon icon-tg-title"></i></a>\n\n <span class="tg_head_logo"></span></a>\n\n <div class="tg_head_peer_menu_wrap" ng-switch="curDialog.peer &amp;&amp; historyFilter.mediaType.length > 0">\n <ul ng-switch-when="true" class="nav navbar-nav navbar-quick-nav">\n <li>\n <a ng-click="toggleMedia()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title" ng-switch="historyFilter.mediaType">\n <h4 ng-switch-when="photos" my-i18n="head_media_photos"></h4>\n <h4 ng-switch-when="video" my-i18n="head_media_video"></h4>\n <h4 ng-switch-when="documents" my-i18n="head_media_documents"></h4>\n <h4 ng-switch-when="audio" my-i18n="head_media_audio"></h4>\n </div>\n </a>\n </li>\n </ul>\n <div ng-switch-default ng-switch="historyState.selectActions">\n <ul ng-switch-when="selected" class="nav navbar-navbar navbar-quick-nav navbar-history-edit">\n <li class="navbar-quick-right">\n <a ng-click="toggleEdit()" my-i18n="modal_cancel"></a>\n </li>\n <li class="navbar-quick-left">\n <a ng-click="selectedFlush()" my-i18n="head_clear_all"></a>\n </li>\n <li class="navbar-quick-title" my-i18n="head_edit"></li>\n </ul>\n <ul ng-switch-default class="nav navbar-nav navbar-quick-nav" ng-switch="historyPeer.id > 0">\n <li ng-switch-when="true">\n <a href="#/im" class="navbar-quick-profile-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-peer-link="historyPeer.id" peer-watch="true"></h4>\n <small ng-switch="historyState.typing.length">\n <span ng-switch-when="1" class="status_online">\n <my-i18n msgid="head_typing"></my-i18n><span my-loading-dots></span>\n </span>\n <span ng-switch-default my-user-status="historyPeer.id"></span>\n </small>\n </div>\n </a>\n </li>\n <li ng-switch-default>\n <a href="#/im" class="navbar-quick-group-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-peer-link="historyPeer.id" peer-watch="true"></h4>\n <small ng-switch="historyState.typing.length">\n <span ng-switch-when="0" class="tg_head_peer_status" my-chat-status="-historyPeer.id"></span>\n <my-i18n>\n <span ng-switch-when="1" class="status_online" my-i18n-format="head_one_typing"></span>\n <span ng-switch-when="2" class="status_online" my-i18n-format="head_two_typing"></span>\n <span ng-switch-default class="status_online" my-i18n-format="head_many_typing"></span>\n <my-i18n-param name="name1"><span my-peer-link="historyState.typing[0]" short="true"></span></my-i18n-param>\n <my-i18n-param name="name2"><span my-peer-link="historyState.typing[1]" short="true"></span></my-i18n-param>\n <my-i18n-param name="names" ng-bind="historyState.typing.length - 1"></my-i18n-param>\n <my-i18n-param name="dots"><span my-loading-dots></span></my-i18n-param>\n </my-i18n>\n </small>\n </div>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n\n <div class="navbar-menu" ng-if="offline">\n\n <ul class="nav navbar-nav navbar-offline">\n <li ng-show="!offlineConnecting"><span class="navbar-offline-text"><my-i18n msgid="head_waiting_for_network"></my-i18n><span my-loading-dots></span></span></li>\n <li ng-show="!offlineConnecting" class="hidden-xs"><a href="" ng-click="retryOnline()" my-i18n="head_retry"></a></li>\n <li ng-show="offlineConnecting"><span class="navbar-offline-text"><my-i18n msgid="head_connecting"></my-i18n><span my-loading-dots></span></span></li>\n </ul>\n </div>\n\n </div>\n </div>\n</div>\n'),e.put("partials/mobile/im.html",'<div my-head></div>\n\n<div class="im_page_wrap" ng-class="{im_page_peer_not_selected: !curDialog.peer}">\n\n <div class="im_page_split clearfix">\n\n <div ng-controller="AppImDialogsController" my-dialogs class="im_dialogs_col_wrap" ng-class="search.query.length > 0 ? \'im_dialogs_col_search\' : \'\'">\n <div class="im_dialogs_panel">\n <div class="im_dialogs_search">\n <input class="form-control im_dialogs_search_field no_outline" type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query" autocomplete="off" />\n <a class="im_dialogs_search_clear tg_search_clear" ng-click="searchClear()" ng-show="search.query.length">\n <i class="icon icon-search-clear"></i>\n </a>\n </div>\n </div>\n\n <div my-dialogs-list-mobile class="im_dialogs_col im_dialogs_scrollable_wrap mobile_scrollable_wrap">\n\n <div class="im_dialogs_empty_wrap" ng-if="isEmpty.contacts" my-vertical-position="0.4">\n <h3 class="im_dialogs_empty_header" my-i18n="im_no_contacts"></h3>\n <p class="im_dialogs_empty_lead" my-i18n="im_get_started_long"></p>\n <button type="button" class="btn btn-primary btn-block im_dialogs_add_contact" ng-click="importContact()" my-i18n="im_add_contact"></button>\n <button ng-if="phonebookAvailable" type="button" class="btn btn-primary btn-block im_dialogs_import_phonebook" ng-click="importPhonebook()" my-i18n="im_import_phonebook"></button>\n </div>\n\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in dialogs track by dialogMessage.peerID" ng-class="{active: curDialog.peerID == dialogMessage.peerID}"></li>\n </ul>\n\n <div class="im_dialogs_contacts_wrap" ng-show="contacts.length > 0">\n <h5 my-i18n="im_contacts_title"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" ng-repeat="contact in contacts | orderBy:\'user.sortName\' track by contact.userID" ng-class="{active: curDialog.peerID == contact.userID}">\n <a class="im_dialog" ng-mousedown="dialogSelect(contact.peerString)">\n <div class="im_dialog_photo pull-left" my-peer-photolink="contact.userID" img-class="im_dialog_photo" watch="true"></div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" my-peer-link="contact.userID" verified="true"></span>\n </div>\n <div class="im_dialog_message">\n <span class="im_dialog_message_text" my-user-status="::contact.userID"></span>\n </div>\n </div>\n </a>\n </li>\n </ul>\n </div>\n\n <div class="im_dialogs_contacts_wrap" ng-show="foundPeers.length > 0">\n <h5 my-i18n="im_found_title"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" ng-repeat="foundPeer in foundPeers track by foundPeer.id" ng-class="{active: curDialog.peerID == foundPeer.id}">\n <a class="im_dialog" ng-mousedown="dialogSelect(foundPeer.peerString)">\n <div class="im_dialog_photo pull-left" my-peer-photolink="foundPeer.id" img-class="im_dialog_photo" watch="true"></div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" my-peer-link="foundPeer.id" verified="true"></span>\n </div>\n <div class="im_dialog_message">\n <span class="im_dialog_message_text" ng-bind="::\'@\' + foundPeer.username"></span>\n </div>\n </div>\n </a>\n </li>\n </ul>\n </div>\n\n <div class="im_dialogs_messages_wrap" ng-show="foundMessages.length > 0">\n <h5 my-i18n="im_messages"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in foundMessages track by dialogMessage.mid" ng-class="{active: curDialog.peerID == dialogMessage.peerID &amp;&amp; curDialog.messageID == dialogMessage.mid}"></li>\n </ul>\n </div>\n\n </div>\n </div>\n\n <div class="im_history_col_wrap" ng-controller="AppImHistoryController" ng-class="{im_history_loaded: state.loaded}">\n\n <div class="im_history_not_selected_wrap im_history_not_selected" my-vertical-position="0.35" padding="true">\n <my-i18n msgid="im_loading_history"></my-i18n><span my-loading-dots></span>\n </div>\n\n <div class="im_history_selected_wrap">\n <div my-history-mobile class="im_history_col">\n\n <div class="im_history_wrap im_history_scrollable_wrap mobile_scrollable_wrap">\n\n <div class="im_history_scrollable">\n <div class="im_history" ng-class="{im_history_selectable: !historyState.botActions, im_history_select_active: historyState.selectActions}">\n <div ng-if="state.empty" class="im_history_empty" ng-switch="state.mayBeHasMore" my-vertical-position="0.25" padding="true">\n <span ng-switch-when="true">\n <my-i18n msgid="im_loading_history"></my-i18n><span my-loading-dots></span>\n </span>\n <span ng-switch-default my-i18n="im_no_messages"></span>\n </div>\n\n <div class="im_history_messages" ng-class="{im_history_messages_group: historyPeer.id < 0}">\n <div class="im_history_messages_peer" ng-show="peerHistory.peerID == historyPeer.id" ng-repeat="peerHistory in peerHistories">\n <div class="im_history_message_wrap" my-message ng-repeat="historyMessage in peerHistory.messages"></div>\n </div>\n </div>\n\n </div>\n\n </div>\n\n </div>\n\n <div class="im_bottom_panel_wrap">\n\n <div class="im_edit_panel_wrap clearfix" ng-show="historyState.actions()" ng-switch="historyState.actions()">\n <div class="im_edit_panel_border"></div>\n\n <div ng-switch-when="bot">\n <a ng-show="historyState.botActions == \'param\'" class="btn btn-md btn-md-primary im_edit_cancel_link" ng-click="cancelBot()" my-i18n="modal_cancel"></a>\n <div class="im_edit_start_actions">\n <a class="btn btn-primary im_start_btn" ng-click="startBot()" my-i18n="im_start"></a>\n </div>\n </div>\n <div ng-switch-when="channel">\n <div class="im_edit_start_actions" ng-switch="historyState.channelActions">\n <a ng-switch-when="join" class="btn btn-primary im_start_btn" ng-click="joinChannel()" my-i18n="im_channel_join"></a>\n <a ng-switch-when="mute" class="btn btn-link im_start_btn" ng-click="togglePeerMuted(true)" my-i18n="im_channel_mute"></a>\n <a ng-switch-when="unmute" class="btn btn-link im_start_btn" ng-click="togglePeerMuted(false)" my-i18n="im_channel_unmute"></a>\n </div>\n </div>\n <div ng-switch-when="selected" class="im_edit_selected_actions" my-i18n>\n <a class="btn btn-primary im_edit_forward_btn" ng-click="selectedForward()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" my-i18n-format="im_forward"></a><a class="btn btn-primary im_edit_delete_btn" ng-click="selectedDelete()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" my-i18n-format="im_delete" ng-show="historyState.canDelete"></a>\n <my-i18n-param name="count"><strong class="im_selected_count" ng-show="selectedCount > 0" ng-bind="selectedCount"></strong></my-i18n-param>\n </div>\n </div>\n\n <div class="im_send_panel_wrap" ng-show="!historyState.actions()">\n\n <div class="im_send_form_wrap1">\n\n <div class="im_send_form_wrap clearfix" ng-controller="AppImSendController">\n <form my-send-form draft-message="draftMessage" mentions="mentions" commands="commands" class="im_send_form" ng-class="{im_send_form_empty: !draftMessage.text.length, composer_progress_enabled: draftMessage.inlineProgress}">\n\n <div class="im_send_reply_wrap" ng-if="draftMessage.replyToMessage != null">\n <a class="im_send_reply_cancel" ng-mousedown="draftMessage.replyClear()"><i class="icon icon-reply-bar"></i><i class="icon icon-reply-bar"></i></a>\n <a class="im_message_reply_wrap" my-reply-message="draftMessage.replyToMessage" watch="true"></a>\n </div>\n\n <div class="im_send_reply_wrap im_send_fwds_wrap" ng-if="draftMessage.fwdMessages.length > 0">\n <a class="im_send_reply_cancel" ng-mousedown="draftMessage.fwdsClear()"><i class="icon icon-reply-bar"></i><i class="icon icon-reply-bar"></i></a>\n <div class="im_message_reply_wrap" my-forwarded-messages="draftMessage.fwdMessages"></div>\n </div>\n\n <div class="im_send_field_panel">\n <div class="im_send_field_wrap" ng-class="historyState.replyKeyboard._ == \'replyKeyboardMarkup\' ? \'im_send_field_wrap_2ndbtn\' : \'\'">\n <a class="composer_command_btn" ng-show="!historyState.replyKeyboard && commands.list.length > 0 && (!draftMessage.text.length || draftMessage.text[0] == \'/\')" ng-mousedown="toggleSlash($event)" ng-class="draftMessage.text[0] == \'/\' ? \'active\' : \'\'"><i class="icon icon-slash"></i></a>\n <a class="composer_keyboard_btn" ng-show="historyState.replyKeyboard._ == \'replyKeyboardMarkup\'" ng-mousedown="replyKeyboardToggle($event)" ng-class="!historyState.replyKeyboard.pFlags.hidden ? \'active\' : \'\'"><i class="icon icon-keyboard"></i></a>\n\n <div class="composer_progress_icon_wrap">\n <div class="composer_progress_icon" my-arc-progress width="22" stroke="2.5"></div>\n </div>\n\n <div class="im_send_dropbox_wrap" my-i18n="im_photos_drop_text"></div>\n <textarea ng-model="draftMessage.text" class="form-control im_message_field no_outline" dir="auto" ng-trim="false"></textarea>\n </div>\n\n <div class="im_attach pull-right">\n <input type="file" class="im_attach_input" size="28" multiple="true" title="{{\'im_media_attach_title\' | i18n}}" />\n <i class="icon icon-paperclip"></i>\n </div>\n\n <a class="composer_emoji_insert_btn pull-right"><i class="icon icon-emoji"></i></a>\n\n <button type="submit" class="btn btn-success im_submit"></button>\n </div>\n\n\n <div class="im_send_keyboard_wrap" ng-if="historyState.replyKeyboard._ == \'replyKeyboardMarkup\'" ng-show="!historyState.replyKeyboard.pFlags.hidden">\n <div my-reply-markup="historyState.replyKeyboard"></div>\n </div>\n\n </form>\n </div>\n\n </div>\n\n </div>\n\n </div>\n\n </div>\n </div>\n\n </div>\n\n </div>\n\n</div>\n\n<toaster-container toaster-options="{\'position-class\': \'toast-bottom-center\'}"></toaster-container>'),e.put("partials/mobile/import_contact_modal.html",'<div class="import_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: progress.enabled}" ng-click="doImport()" ng-bind="progress.enabled ? \'contact_import_modal_submit_active\' : \'contact_import_modal_submit\' | i18n" ng-disabled="progress.enabled"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="contact_import_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="doImport()" my-vertical-position="0.2">\n\n <div class="form-group">\n <input class="form-control input-lg" my-focused type="text" placeholder="{{\'contact_import_modal_phone\' | i18n}}" ng-model="importContact.phone" my-submit-on-enter/>\n </div>\n <div class="form-group">\n <input class="form-control input-lg" type="text" placeholder="{{\'contact_edit_modal_first_name\' | i18n}}" ng-model="importContact.first_name" my-submit-on-enter/>\n </div>\n <div class="form-group">\n <input class="form-control input-lg" type="text" placeholder="{{\'contact_edit_modal_last_name\' | i18n}}" ng-model="importContact.last_name" my-submit-on-enter/>\n </div>\n\n <div class="import_modal_phonebook_wrap" ng-if="phonebookAvailable">\n <a class="btn btn-link" ng-click="importPhonebook()" my-i18n="contact_import_modal_phonebook"></a>\n </div>\n\n </form>\n\n </div>\n</div>'),e.put("partials/mobile/login.html",'<div class="tg_page_head">\n <div class="navbar navbar-static-top navbar-inverse navbar_peer_not_selected">\n <div class="container">\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right login_head_submit_wrap">\n <a class="disabled" disabled="disabled" ng-if="progress.enabled" class="login_head_submit_progress">\n <my-i18n ng-if="!credentials.phone_code_hash" msgid="login_generating_key"></my-i18n><my-i18n ng-if="credentials.phone_code_hash &amp;&amp; !credentials.phone_code_valid" msgid="login_checking_code"></my-i18n><my-i18n ng-if="credentials.phone_code_valid &amp;&amp; credentials.phone_unoccupied" msgid="login_signing_up"></my-i18n><my-i18n ng-if="credentials.phone_code_valid &amp;&amp; credentials.password_needed" msgid="login_checking_password"></my-i18n><span my-loading-dots></span>\n </a>\n <a ng-if="!progress.enabled &amp;&amp; !credentials.phone_code_hash" ng-click="sendCode()">\n <my-i18n msgid="modal_next"></my-i18n><i class="icon icon-next-submit"></i>\n </a>\n <a ng-if="!progress.enabled &amp;&amp; credentials.phone_code_hash &amp;&amp; !credentials.phone_code_valid" ng-click="logIn()">\n <my-i18n msgid="modal_next"></my-i18n><i class="icon icon-next-submit"></i>\n </a>\n <a ng-if="!progress.enabled &amp;&amp; credentials.phone_code_valid &amp;&amp; credentials.phone_unoccupied" ng-click="logIn(true)">\n <my-i18n msgid="modal_next"></my-i18n><i class="icon icon-next-submit"></i>\n </a>\n <a ng-if="!progress.enabled &amp;&amp; credentials.phone_code_valid &amp;&amp; credentials.password_needed" ng-click="checkPassword()">\n <my-i18n msgid="modal_next"></my-i18n><i class="icon icon-next-submit"></i>\n </a>\n </li>\n <li>\n <a class="navbar-brand tg_logo_wrap" href="https://telegram.org" target="_blank"><i class="icon icon-tg-logo"></i><i class="icon icon-tg-title"></i></a>\n </li>\n </ul>\n </div>\n\n </div>\n </div>\n</div>\n\n\n<div class="login_page_wrap" my-custom-background="#e7ebf0">\n <div class="login_page">\n <div class="login_form_wrap" my-vertical-position="0.2" padding="true">\n <div class="error" ng-if="error.message" ng-bind="error.message"></div>\n\n <form name="mySendCodeForm" ng-if="!credentials.phone_code_hash" ng-submit="sendCode()">\n <h3 class="login_form_head" my-i18n="login_sign_in"></h3>\n <p class="login_form_lead" my-i18n="login_enter_number_description"></p>\n\n <div class="md-input-group md-input-has-value login_phone_country_input_group" ng-click="chooseCountry()">\n <label class="md-input-label" my-i18n="login_country_select_placeholder"></label>\n <div autocomplete="off" class="md-input"ng-bind="credentials.phone_country_name"></div>\n </div>\n\n <div class="login_phone_groups_wrap clearfix">\n\n <div class="md-input-group login_phone_code_input_group" ng-class="{\'md-input-error\': error.field == \'phone\'}" my-labeled-input>\n <label class="md-input-label" my-i18n="login_code_input_placeholder"></label>\n <input autocomplete="off" class="md-input" my-focused name="phone_country" type="tel" ng-model="credentials.phone_country" />\n </div>\n\n <div class="md-input-group login_phone_num_input_group" ng-class="{\'md-input-error\': error.field == \'phone\'}" my-labeled-input ng-switch="error.field == \'phone\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_number"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_tel_input_placeholder"></label>\n <input required autocomplete="off" class="md-input" my-focus-on="country_selected" name="phone_number" type="tel" ng-model="credentials.phone_number" />\n </div>\n\n </div>\n <div class="login_form_messaging" ng-show="progress.enabled" my-i18n="login_generating_keys_info"></div>\n </form>\n\n <form name="myLoginForm" ng-if="credentials.phone_code_hash &amp;&amp; !credentials.phone_code_valid" ng-submit="logIn()">\n <h3 class="login_phone_head"><span ng-bind="credentials.phone_country"></span> <span ng-bind="credentials.phone_number"></span></h3>\n <div class="login_edit_phone"><a ng-click="editPhone()" my-i18n="login_edit_number"></a></div>\n\n <div ng-switch="credentials.type._">\n <p ng-switch-when="auth.sentCodeTypeApp" class="login_smscode_lead" my-i18n="login_enter_code_label_md"></p>\n <p ng-switch-default class="login_smscode_lead" my-i18n="login_enter_sms_code_label_md"></p>\n </div>\n\n <div ng-if="nextPending.type" ng-switch="nextPending.remaining === false">\n <p ng-switch-when="true" class="login_smscode_lead">\n <a ng-click="sendNext()" my-i18n="login_code_not_received"></a>\n </p>\n <p ng-switch-default class="login_smscode_lead">\n <span ng-show="nextPending.remaining > 0" my-i18n="login_call_remaining">\n <my-i18n-param name="remaining" ng-bind="nextPending.remaining | duration"></my-i18n-param>\n </span>\n <span ng-show="!nextPending.remaining" my-i18n="login_calling"></span>\n </p>\n </div>\n\n <div ng-if="credentials.type._ == \'auth.sentCodeTypeCall\'">\n <p class="login_smscode_lead">\n <span my-i18n="login_number_dialed"></span>\n </p>\n </div>\n\n <div class="md-input-group md-input-group-centered" ng-class="{\'md-input-error\': error.field == \'phone_code\'}" my-labeled-input ng-switch="error.field == \'phone_code\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_sms_code"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_number_input_placeholder"></label>\n <input autocomplete="off" class="md-input" my-focused name="phone_code" type="tel" ng-model="credentials.phone_code" required />\n </div>\n </form>\n\n <form name="myFullNameForm" ng-if="credentials.phone_code_valid &amp;&amp; credentials.phone_unoccupied" ng-submit="logIn(true)">\n <h3 class="login_form_head" my-i18n="login_your_info"></h3>\n <p class="login_form_lead" my-i18n="login_fulll_name_label"></p>\n\n <div class="md-input-group" ng-class="{\'md-input-error\': error.field == \'first_name\'}" my-labeled-input ng-switch="error.field == \'first_name\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_first_name"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_first_name"></label>\n <input autocomplete="off" class="md-input" my-focused name="first_name" type="text" ng-model="credentials.first_name" required />\n </div>\n\n <div class="md-input-group" ng-class="{\'md-input-error\': error.field == \'last_name\'}" my-labeled-input ng-switch="error.field == \'last_name\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_last_name"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_last_name"></label>\n <input autocomplete="off" class="md-input" name="last_name" type="text" ng-model="credentials.last_name" />\n </div>\n\n </form>\n\n <form name="myPasswordForm" ng-if="credentials.phone_code_valid &amp;&amp; credentials.password_needed" ng-submit="checkPassword()">\n <h3 class="login_form_head" my-i18n="login_password_title"></h3>\n <p class="login_form_lead" my-i18n="login_password_label"></p>\n\n <div class="md-input-group" ng-class="{\'md-input-error\': error.field == \'password\'}" my-labeled-input ng-switch="error.field == \'password\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_password"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_password"></label>\n <input autocomplete="off" class="md-input" my-focused name="password" type="password" ng-model="credentials.password" my-submit-on-enter required />\n </div>\n\n <p ng-if="password.hint.length > 0" class="login_form_hint" ng-bind="password.hint"></p>\n\n <div class="login_forgot_button">\n <button class="btn btn-md" ng-click="forgotPassword($event)" my-i18n="login_password_forgot_link"></button>\n </div>\n\n <div ng-if="canReset" class="login_reset_button">\n <button class="btn btn-md btn-md-danger" ng-click="resetAccount($event)" my-i18n="login_account_reset"></button>\n </div>\n\n </form>\n\n </div>\n\n <div ng-switch="about.shown">\n <div ng-switch-when="true" class="login_footer_about_wrap" my-scroll-to-on="$init">\n <h3 my-i18n="login_about_title"></h3>\n <p my-i18n="login_about_desc1_md"></p>\n <p my-i18n="login_about_desc2_md"></p>\n <p my-i18n="login_about_desc3_md">\n <my-i18n-param name="source-link">\n <a href="https://github.com/zhukov/webogram" target="_blank">{0}</a>\n </my-i18n-param>\n </p>\n </div>\n <div ng-switch-default class="login_footer_wrap">\n <p my-i18n="login_about_intro"></p>\n <a class="logo_footer_learn_more_link" href="" ng-click="about.shown = true" my-i18n="login_about_learn"></a>\n </div>\n\n </div>\n </div>\n\n</div>\n\n'),e.put("partials/mobile/message.html",'<div class="im_message_outer_wrap" ng-click="toggleMessage(historyMessage.mid, $event)">\n\n\n <div class="im_message_wrap clearfix" ng-switch="::historyMessage._ == \'messageService\'">\n\n <div class="im_service_message_wrap" ng-switch-when="true" ng-switch="historyMessage.action._ == \'messageActionBotIntro\'">\n <div ng-switch-when="true" class="im_bot_intro_message_wrap">\n <div class="im_bot_intro_message_header" my-i18n="message_service_bot_intro_header"></div>\n <div class="im_bot_intro_message" ng-bind-html="::historyMessage.action.rDescription"></div>\n </div>\n <div ng-switch-default class="im_service_message">\n <a class="im_message_author" ng-if="::historyMessage.fromID > 0" my-peer-link="historyMessage.fromID" short="historyMessage.toID > 0" color="historyMessage.toID < 0" no-watch="true"></a>\n <span class="im_message_service" my-service-message></span>\n </div>\n\n <a ng-if="::historyMessage.action._ == \'messageActionChatEditPhoto\' || historyMessage.action._ == \'messageActionChannelEditPhoto\'" class="im_service_message_photo_thumb" href="" ng-click="openPhoto(historyMessage.action.photo.id)">\n <img\n class="im_service_message_photo_thumb"\n my-load-thumb\n thumb="historyMessage.action.photo.thumb"\n />\n </a>\n\n </div>\n\n <div ng-switch-default class="im_content_message_wrap" ng-class="::[historyMessage.pFlags.out ? \'im_message_out\' : \'im_message_in\', historyMessage.fwdFromID ? \'im_message_fwd\' : \'\']">\n\n <a class="im_message_from_photo pull-left" my-peer-photolink="::historyMessage.fromID" img-class="im_message_from_photo"></a>\n\n <div class="im_message_meta">\n <div class="im_message_views_wrap" ng-if="::historyMessage.views > 0">\n <div class="im_message_views">\n <i class="icon-message-views"></i><span class="im_message_views_cnt" my-message-views="historyMessage.mid"></span>\n </div>\n </div>\n <a class="im_message_error_btn" ng-if="::historyMessage.pending || historyMessage.error || false" ng-click="historyMessage.send()">\n <i class="icon-message-status" tooltip="{{\'message_action_retry\' | i18n}}"></i>\n </a>\n <i ng-if="::historyMessage.pFlags.unread &amp;&amp; historyMessage.pFlags.out || historyMessage.pending || false" class="icon-message-status" ng-show="!historyMessage.error"></i>\n <span class="im_message_date" ng-bind="::historyMessage.date | time"></span>\n </div>\n\n <div my-message-body="historyMessage">\n <div class="im_message_body" ng-class="::{im_message_body_media: historyMessage._ == \'message\' &amp;&amp; historyMessage.media && historyMessage.media._ != \'messageMediaWebPage\' && !historyMessage.media.rCaption && !historyMessage.viaBotID ? true : false}">\n\n <a class="im_message_author" my-peer-link="historyMessage.fromID" short="historyMessage.toID > 0" color="historyMessage.toID < 0" no-watch="true"></a>\n <a ng-if="::historyMessage.viaBotID && !historyMessage.fwdFromID" class="im_message_author_via" my-i18n="message_via_bot" ng-click="selectInlineBot(historyMessage.viaBotID, $event)"><my-i18n-param name="bot"><span class="im_message_fwd_author" my-peer-link="historyMessage.viaBotID" username="true" no-watch="true"></span></my-i18n-param></a>\n\n <a class="im_message_reply_wrap" my-reply-message="historyMessage.reply_to_msg" ng-if="::historyMessage.reply_to_mid"></a>\n\n <div ng-if="::!!historyMessage.fwdFromID &amp;&amp; !historyMessage.media" class="im_message_fwd_header" ng-switch="!!historyMessage.viaBotID" my-i18n>\n <span ng-switch-when="true" my-i18n-format="message_forwarded_via_message_mobile"></span>\n <span ng-switch-default my-i18n-format="message_forwarded_message_mobile"></span>\n <my-i18n-param name="from"><a class="im_message_fwd_author" my-peer-link="historyMessage.fwdFromID" no-watch="true"></a></my-i18n-param>\n <my-i18n-param name="bot"><a class="im_message_fwd_author" my-peer-link="historyMessage.viaBotID" username="true" no-watch="true"></a></my-i18n-param>\n </div>\n\n <div class="im_message_text" dir="auto"></div>\n <div class="im_message_media"></div>\n\n </div>\n\n <div class="im_message_keyboard"></div>\n\n </div>\n\n </div>\n </div>\n\n</div>\n\n'),e.put("partials/mobile/message_actions_modal.html",'<div class="message_actions_modal_wrap" my-modal-position>\n\n <div class="message_actions_wrap">\n <button ng-if="historyState.canReply" class="btn btn-md btn-md-primary btn-block" my-i18n="message_action_reply" ng-click="$close(\'reply\')"></button>\n <button class="btn btn-md btn-md-primary btn-block" my-i18n="message_action_forward" ng-click="$close(\'forward\')"></button>\n <button ng-if="historyState.canDelete" class="btn btn-md btn-md-primary btn-block" my-i18n="message_action_delete" ng-click="$close(\'delete\')"></button>\n <button class="btn btn-md btn-md-primary btn-block" my-i18n="message_action_select" ng-click="$close(\'select\')"></button>\n <button class="btn btn-md btn-block" my-i18n="message_action_cancel" ng-click="$dismiss()"></button>\n </div>\n\n</div>\n'),e.put("partials/mobile/message_attach_contact.html",'<div class="im_message_contact">\n <a ng-if="::media.user_id > 0" class="im_message_contact_photo pull-left" my-peer-photolink="media.user_id" img-class="im_message_contact_photo" user-override="media"></a>\n <div class="im_message_contact_name" ng-switch="media.user_id > 0">\n <a ng-switch-when="true" my-peer-link="media.user_id" user-override="media"></a>\n <span ng-switch-default ng-bind-html="::media.rFullName"></span>\n </div>\n <div class="im_message_contact_phone" ng-bind="::media.phone_number | phoneNumber"></div>\n</div>'),e.put("partials/mobile/message_attach_document.html",'<div ng-switch="::media.document.type">\n\n <div ng-switch-when="gif" my-load-gif document="media.document"></div>\n\n <div ng-switch-when="sticker" my-load-sticker document="media.document" open="true"></div>\n\n <div ng-switch-when="voice" class="im_message_audio">\n <div my-audio-player audio="media.document"></div>\n </div>\n\n <div ng-switch-when="audio" class="im_message_audio">\n <div my-audio-player audio="media.document"></div>\n </div>\n\n <div ng-switch-when="video" class="im_message_video im_message_document_thumbed">\n <a class="im_message_video_thumb" href="" ng-click="videoOpen()" ng-style="::{width: media.document.thumb.width + \'px\'}">\n <span class="im_message_video_duration" ng-bind="::media.document.duration | duration"></span>\n <i class="icon icon-videoplay"></i>\n <img\n class="im_message_video_thumb im_message_video_thumb_blurred"\n my-load-thumb\n thumb="media.document.thumb"\n />\n </a>\n </div>\n\n <div ng-switch-default class="im_message_document clearfix" ng-class="{im_message_document_thumbed: !!media.document.thumb, im_message_document_progress: media.document.progress.enabled}">\n\n <a ng-if="::!media.document.thumb" class="im_message_file_button" ng-click="docOpen()" ng-class="{im_message_file_button_dl_doc: media.document.downloaded}">\n <i class="im_message_file_button_icon"></i>\n </a>\n <a ng-if="::media.document.thumb" ng-click="docOpen()">\n <div class="im_message_document_thumb_wrap">\n <img\n class="im_message_document_thumb"\n my-load-thumb\n thumb="media.document.thumb"\n />\n </div>\n </a>\n\n <div class="im_message_document_info">\n <div class="im_message_document_name_wrap">\n <a href="" ng-click="docOpen()" class="im_message_document_name" ng-bind="::media.document.file_name"></a>\n <span class="im_message_document_size" ng-if="!media.document.progress.enabled" ng-bind="::media.document.size | formatSize"></span>\n <span class="im_message_document_size" ng-if="media.document.progress.enabled" ng-bind="media.document.progress | formatSizeProgress"></span>\n </div>\n <div class="im_message_document_actions" ng-if="!media.document.progress.enabled" ng-switch="media.document.downloaded">\n <a ng-switch-when="true" href="" ng-click="docSave()" my-i18n="message_attach_document_save"></a>\n <a ng-switch-default href="" ng-click="docSave()" my-i18n="message_attach_document_download"></a>\n <a ng-if="::media.document.withPreview" href="" ng-click="docOpen()" my-i18n="message_attach_document_open"></a>\n </div>\n <div class="clearfix im_message_cancelable_progress_wrap" ng-if="media.document.progress.enabled">\n <a class="im_message_media_progress_cancel pull-right" ng-click="media.document.progress.cancel()" my-i18n="modal_cancel"></a>\n <div class="im_message_download_progress_wrap">\n <div class="progress tg_down_progress">\n <div class="progress-bar progress-bar-success" ng-style="{width: media.document.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n</div>\n<div ng-if="::media.rCaption" class="im_message_document_caption" ng-bind-html="::media.rCaption"></div>\n'),e.put("partials/mobile/message_attach_geo.html",'<a ng-href="{{::media.mapUrl}}" target="_blank" class="im_message_geopoint">\n <i class="icon icon-geo-point"></i>\n <img\n class="im_message_venue_geopoint_image"\n my-geo-point-map="media.geo"\n width="200"\n height="100"\n />\n</a>'),e.put("partials/mobile/message_attach_pending.html",'<div class="im_message_document im_message_upload_file" ng-class="::\'im_message_upload_\' + media.type">\n <div class="im_message_file_button im_message_file_button_upload">\n <i class="im_message_file_button_icon"></i>\n </div>\n <div class="im_message_document_info">\n <div class="im_message_document_name_wrap">\n <span class="im_message_document_name" ng-bind="::media.file_name"></span>\n <span class="im_message_document_size" ng-if="media.progress" ng-bind="media.progress | formatSizeProgress"></span>\n </div>\n <div class="clearfix im_message_cancelable_progress_wrap">\n <a class="im_message_media_progress_cancel pull-right" ng-click="media.progress.cancel()" my-i18n="modal_cancel"></a>\n <div class="im_message_download_progress_wrap">\n <div class="progress tg_down_progress">\n <div class="progress-bar progress-bar-success" role="progressbar" ng-style="{width: media.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),e.put("partials/mobile/message_attach_photo.html",'<a class="im_message_photo_thumb" ng-click="openPhoto(media.photo.id, {m: messageId})" ng-style="::{width: media.photo.thumb.width + \'px\'}" ng-mouseover="preloadPhoto(media.photo.id)">\n <img\n class="im_message_photo_thumb"\n my-load-thumb\n thumb="media.photo.thumb"\n />\n</a>\n<div ng-if="::media.rCaption" class="im_message_photo_caption" ng-bind-html="::media.rCaption"></div>'),e.put("partials/mobile/message_attach_venue.html",'<div class="im_message_venue clearfix">\n\n <a ng-href="{{::media.mapUrl}}" target="_blank" class="im_message_venue_geopoint_wrap">\n <i class="icon icon-geo-point"></i>\n <img\n class="im_message_venue_geopoint_image"\n my-geo-point-map="media.geo"\n width="100"\n height="100"\n alt="[{{::\'conversation_media_location\' | i18n}} {{::media.mapUrl}}]"\n />\n </a>\n\n <div class="im_message_venue_info">\n <div class="im_message_venue_title_wrap">\n <a ng-href="{{::media.mapUrl}}" target="_blank" class="im_message_document_name" ng-bind="::media.title"></a>\n </div>\n <div class="im_message_venue_address" ng-bind="::media.address"></div>\n </div>\n\n</div>\n'),e.put("partials/mobile/message_attach_webpage.html",'<div ng-show="webpage._ == \'webPage\'" class="im_message_webpage_wrap clearfix" ng-switch="webpage.type">\n <div ng-switch-when="photo" class="im_message_webpage_photo">\n <div class="im_message_webpage_site" ng-bind="webpage.site_name || webpage.display_url"></div>\n <div class="im_message_webpage_title">\n <a href="{{webpage.url}}" target="_blank" ng-bind-html="webpage.rTitle"></a>\n </div>\n <div ng-if="webpage.description.length" class="im_message_webpage_description" ng-bind-html="webpage.rDescription"></div>\n <a class="im_message_photo_thumb" ng-click="openPhoto(webpage.photo.id, {w: webpage.id, m: messageId})" ng-style="::{width: webpage.photo.thumb.width + \'px\'}" ng-mouseover="preloadPhoto(webpage.photo.id)">\n <img\n class="im_message_photo_thumb"\n my-load-thumb\n thumb="webpage.photo.thumb"\n />\n </a>\n </div>\n <div ng-switch-when="video" class="im_message_webpage_video">\n <div class="im_message_webpage_site" ng-bind="webpage.site_name || webpage.display_url"></div>\n <div class="im_message_webpage_title">\n <a ng-click="openEmbed($event)" href="{{webpage.url}}" target="_blank" ng-bind-html="webpage.rTitle"></a>\n </div>\n <div ng-if="webpage.description.length" class="im_message_webpage_description" ng-bind-html="webpage.rDescription"></div>\n <a class="im_message_video_thumb" ng-click="openEmbed($event)" ng-href="{{webpage.url}}" target="_blank" ng-style="::{width: video.thumb.width + \'px\'}">\n <span ng-if="webpage.duration > 0" class="im_message_video_duration" ng-bind="::webpage.duration | duration"></span>\n <i class="icon icon-videoplay"></i>\n <img\n class="im_message_video_thumb"\n my-load-thumb\n thumb="webpage.photo.thumb"\n />\n </a>\n </div>\n\n <div ng-switch-default class="im_message_webpage_article">\n <div class="im_message_webpage_site" ng-bind="webpage.site_name"></div>\n <a ng-if="webpage.photo" href="{{webpage.url}}" target="_blank" class="im_message_webpage_article_photo pull-right">\n <img\n class="im_message_article_thumb"\n my-load-thumb\n thumb="webpage.photo.thumb"\n />\n </a>\n <div class="im_message_webpage_title">\n <a ng-click="openEmbed($event)" href="{{webpage.url}}" target="_blank" ng-bind-html="webpage.rTitle"></a>\n </div>\n <div ng-if="webpage.description.length" class="im_message_webpage_description" ng-bind-html="webpage.rDescription"></div>\n </div>\n</div>\n'),e.put("partials/mobile/message_service.html",'<span ng-switch="::historyMessage.action._">\n <my-i18n>\n <span ng-switch-when="messageActionChatCreate" my-i18n-format="message_service_created_group"></span>\n <span ng-switch-when="messageActionChatEditTitle" my-i18n-format="message_service_changed_group_name"></span>\n <my-i18n-param name="group-name">&laquo;<strong ng-bind-html="::historyMessage.action.rTitle"></strong>&raquo;</my-i18n-param>\n </my-i18n>\n <span ng-switch-when="messageActionChatEditPhoto" my-i18n="message_service_changed_group_photo"></span>\n <span ng-switch-when="messageActionChatDeletePhoto" my-i18n="message_service_removed_group_photo"></span>\n <span ng-switch-when="messageActionChatJoinedByLink" my-i18n="message_service_joined_by_link"></span>\n <span ng-switch-when="messageActionChatReturn" my-i18n="message_service_returned_to_group"></span>\n <span ng-switch-when="messageActionChatJoined" my-i18n="message_service_joined"></span>\n <span ng-switch-when="messageActionChatAddUser" my-i18n="message_service_invited_user">\n <my-i18n-param name="user"><a my-peer-link="historyMessage.action.user_id" color="true"></a></my-i18n-param>\n </span>\n <span ng-switch-when="messageActionChatAddUsers" my-i18n="message_service_invited_users">\n <my-i18n-param name="user"><a my-peer-link="historyMessage.action.user_id" color="true"></a></my-i18n-param>\n <my-i18n-param name="num-more"><span ng-bind="historyMessage.action.users.length - 1"></span></my-i18n-param>\n </span>\n <span ng-switch-when="messageActionChatLeave" my-i18n="message_service_left_group"></span>\n <span ng-switch-when="messageActionChatDeleteUser" my-i18n="message_service_kicked_user">\n <my-i18n-param name="user"><a my-peer-link="historyMessage.action.user_id" color="true"></a></my-i18n-param>\n </span>\n\n <span ng-switch-when="messageActionChatMigrateTo" my-i18n="message_service_converted_to_supergroup"></span>\n <span ng-switch-when="messageActionChannelMigrateFrom" my-i18n="message_service_converted_to_supergroup"></span>\n <span ng-switch-when="messageActionChannelCreate" my-i18n="message_service_created_channel"></span>\n <span ng-switch-when="messageActionChannelEditTitle" my-i18n="message_service_changed_channel_name">\n <my-i18n-param name="channel-name">&laquo;<strong ng-bind-html="::historyMessage.action.rTitle"></strong>&raquo;</my-i18n-param>\n </span>\n <span ng-switch-when="messageActionChannelEditPhoto" my-i18n="message_service_changed_channel_photo"></span>\n <span ng-switch-when="messageActionChannelDeletePhoto" my-i18n="message_service_removed_channel_photo"></span>\n\n <span ng-switch-when="messageActionPinMessage" my-i18n="message_service_pinned_message">\n <my-i18n-param name="message"><a my-pinned-message="historyMessage.reply_to_msg"></a></my-i18n-param>\n </span>\n\n <span ng-switch-default my-i18n="message_service_unsupported_action">\n <my-i18n-param name="action"><span ng-bind="historyMessage.action._"></span></my-i18n-param>\n </span>\n</span>\n'),e.put("partials/mobile/password_recovery_modal.html",'<div class="username_edit_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: recovery.updating}" ng-click="checkCode()" ng-bind="recovery.updating ? \'password_recover_active\' : \'password_recover_submit\' | i18n" ng-disabled="recovery.updating"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="login_recovery_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="checkCode()">\n\n <div class="md_simple_form_description" my-i18n="login_recovery_description_md">\n <my-i18n-param name="email">\n <strong ng-bind="recovery.email_pattern"></strong>\n </my-i18n-param>\n </div>\n\n <div class="md-input-group" ng-class="{\'md-input-error\': recovery.error_field == \'code\'}" my-labeled-input ng-switch="recovery.error_field == \'code\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_code_incorrect"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_code_placeholder"></label>\n <input class="md-input" my-focused type="text" ng-model="recovery.code" name="code" my-focused />\n </div>\n\n </form>\n\n </div>\n\n</div>'),e.put("partials/mobile/password_update_modal.html",'<div class="username_edit_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: passwordSettings.updating}" ng-click="updatePassword()" ng-disabled="passwordSettings.updating" ng-switch="action">\n <span ng-switch-when="disable" ng-bind="passwordSettings.updating ? \'password_delete_active\' : \'password_delete_submit\' | i18n"></span>\n <span ng-switch-default ng-bind="passwordSettings.updating ? \'password_create_active\' : \'password_create_submit\' | i18n"></span>\n </a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 ng-switch="action">\n <my-i18n ng-switch-when="disable" msgid="password_delete_title"></my-i18n>\n <my-i18n ng-switch-default msgid="password_change_title"></my-i18n>\n </h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="updatePassword()" my-vertical-position="0.3">\n\n <div ng-if="password._ != \'account.noPassword\'" class="md-input-group" ng-class="{\'md-input-error\': passwordSettings.error_field == \'cur_password\'}" my-labeled-input>\n <label class="md-input-label" my-i18n="password_current_placeholder"></label>\n <input class="md-input" my-focused type="password" ng-model="passwordSettings.cur_password" name="cur_password" my-focus-on="cur_password_focus" />\n </div>\n\n <div ng-if="action != \'disable\'" class="md-input-group md-input-grouped" ng-class="{\'md-input-error\': passwordSettings.error_field == \'new_password\'}" my-labeled-input>\n <label class="md-input-label" my-i18n="password_new_placeholder"></label>\n <input class="md-input" type="password" ng-model="passwordSettings.new_password" name="new_password" my-focus-on="new_password_focus" />\n </div>\n\n <div ng-if="action != \'disable\'" class="md-input-group" ng-class="{\'md-input-error\': passwordSettings.confirm_password && passwordSettings.new_password && passwordSettings.confirm_password != passwordSettings.new_password}" my-labeled-input>\n <label class="md-input-label" my-i18n="password_confirm_placeholder"></label>\n <input class="md-input" type="password" ng-model="passwordSettings.confirm_password" name="confirm_password" my-focus-on="confirm_password_focus" />\n </div>\n\n <div ng-if="action != \'disable\'" class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="password_hint_placeholder"></label>\n <input class="md-input" type="text" ng-model="passwordSettings.hint" name="hint" />\n </div>\n\n <div ng-if="action != \'disable\'" class="md_simple_form_description" my-i18n="password_create_description"></div>\n\n <div ng-if="action != \'disable\'" class="md-input-group" ng-class="{\'md-input-error\': passwordSettings.error_field == \'email\'}" my-labeled-input>\n <label class="md-input-label" my-i18n="password_email_placeholder"></label>\n <input class="md-input" type="text" ng-model="passwordSettings.email" name="email" />\n </div>\n\n </form>\n\n </div>\n\n</div>'),e.put("partials/mobile/peer_select.html",'<div class="peer_select_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <a class="navbar-search-wrap" ng-click="toggleSearch()">\n <i class="icon-search"></i>\n </a>\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="conversation_select_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="im_dialogs_modal_col_wrap" ng-controller="AppImDialogsController" my-dialogs ng-class="search.query.length > 0 ? \'im_dialogs_col_search\' : \'\'">\n <div class="im_dialogs_panel">\n <div class="im_dialogs_search">\n <input my-focused class="form-control im_dialogs_search_field no_outline" type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query" autocomplete="off" />\n <a class="im_dialogs_search_clear tg_search_clear" ng-click="search.query = \'\'" ng-show="search.query.length">\n <i class="icon icon-search-clear"></i>\n </a>\n </div>\n </div>\n <div my-dialogs-list-mobile modal="true" class="im_dialogs_modal_col im_dialogs_scrollable_wrap mobile_scrollable_wrap">\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in dialogs track by dialogMessage.peerID"></li>\n </ul>\n <div class="im_dialogs_contacts_wrap" ng-show="contacts.length > 0">\n <h5 my-i18n="conversation_select_modal_contacts"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" ng-repeat="contact in contacts | orderBy:\'user.sortName\' track by contact.userID" ng-class="{active: curDialog.peerID == contact.userID}">\n <a class="im_dialog" ng-click="dialogSelect(contact.peerString)">\n <div class="im_dialog_photo pull-left" my-peer-photolink="::contact.userID" img-class="im_dialog_photo" watch="true"></div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" my-peer-link="contact.userID"></span>\n </div>\n <div class="im_dialog_message">\n <span class="im_dialog_message_text" my-user-status="::contact.userID"></span>\n </div>\n </div>\n </a>\n </li>\n </ul>\n </div>\n <div class="im_dialogs_contacts_wrap" ng-show="foundPeers.length > 0">\n <h5 my-i18n="im_found_title"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" ng-repeat="foundPeer in foundPeers track by foundPeer.id" ng-class="{active: selectedPeers[foundPeer.id] !== undefined}">\n <a class="im_dialog" ng-click="dialogSelect(foundPeer.peerString)">\n <div class="im_dialog_photo pull-left" my-peer-photolink="foundPeer.id" img-class="im_dialog_photo" watch="true"></div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" my-peer-link="foundPeer.id"></span>\n </div>\n <div class="im_dialog_message">\n <span class="im_dialog_message_text" ng-bind="::\'@\' + foundPeer.username"></span>\n </div>\n </div>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/phonebook_modal.html",'<div class="contacts_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: !selectedCount || progress.enabled}" ng-click="submitSelected()" ng-switch="progress.enabled">\n <span ng-switch-when="true">\n <my-i18n msgid="phonebook_modal_submit_active"></my-i18n>\n <span my-loading-dots></span>\n </span>\n <span ng-switch-default my-i18n="phonebook_modal_submit"></span>\n </a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="phonebook_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="contacts_modal_search">\n <input class="form-control contacts_modal_search_field no_outline" my-focused type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query" autocomplete="off" />\n <a class="contacts_modal_search_clear tg_search_clear" ng-click="search.query = \'\'" ng-show="search.query.length">\n <i class="icon icon-search-clear"></i>\n </a>\n </div>\n\n\n <div class="contacts_modal_col contacts_wrap contacts_scrollable_wrap mobile_scrollable_wrap" my-contacts-list-mobile my-infinite-scroller-mobile>\n <div ng-switch="contactsEmpty">\n\n <div ng-switch-when="true" class="contacts_modal_contacts_empty" my-vertical-position="0.2" padding="true" my-i18n="phonebook_modal_empty"></div>\n\n <ul ng-switch-default class="contacts_modal_members_list nav nav-pills nav-stacked">\n\n <li class="contacts_modal_contact_wrap clearfix" ng-repeat="contact in contacts | limitTo: slice.limit track by contact.id" ng-class="{active: selectedContacts[contact.id]}">\n <a class="contacts_modal_contact" ng-click="contactSelect(contact.id)">\n\n <i ng-if="multiSelect" class="icon icon-contact-tick"></i>\n\n <div class="contacts_modal_contact_photo pull-left">\n <img\n class="contacts_modal_contact_photo"\n ng-src="{{contact.photo}}"\n />\n </div>\n\n <div class="contacts_modal_contact_name">\n <span ng-bind="contact.first_name"></span>\n <span ng-bind="contact.last_name"></span>\n </div>\n <div class="contacts_modal_contact_status" ng-repeat="phone in contact.phones">\n <span ng-bind="phone | phoneNumber"></span>\n </div>\n\n </a>\n </li>\n\n </ul>\n\n </div>\n </div>\n\n </div>\n\n <div class="modal-footer contacts_modal_panel" ng-show="multiSelect">\n <button class="btn btn-primary" ng-click="toggleSelection()" ng-switch="selectedCount > 0">\n <span ng-switch-when="true" my-i18n="phonebook_modal_deselect_all"></span>\n <span ng-switch-default my-i18n="phonebook_modal_select_all"></span>\n </button>\n </div>\n\n</div>\n'),e.put("partials/mobile/photo_modal.html",'<div class="media_modal_bottom_panel_wrap" ng-show="!hideToolbars">\n <div class="media_modal_bottom_panel">\n <div class="media_modal_bottom_actions pull-right">\n <a class="media_modal_action_btn" ng-if="canDelete" ng-click="delete()" title="{{\'media_modal_delete\' | i18n}}">\n <i class="media_modal_action_btn_delete"></i>\n </a>\n </div>\n\n <div class="media_modal_bottom_actions pull-left">\n <a class="media_modal_action_btn" ng-if="canForward" ng-click="forward()" title="{{\'media_modal_forward\' | i18n}}">\n <i class="media_modal_action_btn_forward"></i>\n </a>\n </div>\n\n <div class="media_modal_info_wrap" ng-if="photo.user_id > 0">\n <a class="media_modal_author" my-peer-link="photo.user_id" peer-watch="true"></a>\n <br/>\n <span class="media_modal_date" ng-bind="photo.date | dateOrTime :true"></span>\n </div>\n\n </div>\n</div>\n\n<div class="media_modal_top_panel_wrap" ng-show="!hideToolbars">\n <div class="media_modal_top_panel">\n <div class="media_modal_top_actions pull-right">\n <a class="media_modal_action_btn" ng-click="download()" title="{{\'media_modal_download\' | i18n}}">\n <i class="media_modal_action_btn_download"></i>\n </a>\n </div>\n <div class="media_modal_top_actions pull-left">\n <a ng-click="$close()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n\n <div class="navbar-quick-back-title">\n <h4 class="media_modal_title_wrap" ng-switch="count > 1 &amp;&amp; pos > 0">\n <my-i18n ng-switch-when="true" msgid="media_modal_photo_index">\n <my-i18n-param name="pos" ng-bind="pos"></my-i18n-param>\n <my-i18n-param name="count" ng-bind="count"></my-i18n-param>\n </my-i18n>\n <my-i18n ng-switch-default msgid="media_modal_photo">\n </h4>\n </div>\n </a>\n </div>\n </div>\n</div>\n\n<div class="modal-dialog" ng-swipe-right="nav.prev()" ng-swipe-left="nav.next()" ng-click="hideToolbars = !hideToolbars">\n <div class="modal-content">\n <div my-modal-width="{{photo.full.modalWidth}}" class="media_modal_wrap photo_modal_wrap" my-vertical-position="0.5">\n\n <div class="modal-body">\n\n <div class="photo_modal_image_wrap" my-load-full-photo full-photo="photo.full" thumb-location="photo.thumb.location"></div>\n\n </div>\n\n </div>\n </div>\n</div>\n\n'),e.put("partials/mobile/profile_edit_modal.html",'<div class="profile_edit_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: profile.updating}" ng-click="updateProfile()" ng-bind="profile.updating ? \'profile_edit_submit_active\' : \'profile_edit_submit\' | i18n" ng-disabled="profile.updating"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="profile_edit_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="updateProfile()" my-vertical-position="0.3">\n\n <div class="form-group" ng-class="{\'has-error\': error.field == \'first_name\'}">\n <input class="form-control input-lg" my-focused type="text" placeholder="{{\'profile_edit_first_name\' | i18n}}" ng-model="profile.first_name" name="first_name"/>\n </div>\n <div class="form-group" ng-class="{\'has-error\': error.field == \'last_name\'}">\n <input class="form-control input-lg" type="text" placeholder="{{\'profile_edit_last_name\' | i18n}}" ng-model="profile.last_name"/>\n </div>\n\n </form>\n\n </div>\n\n</div>'),e.put("partials/mobile/sessions_list_modal.html",'<div class="sessions_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n <ul class="nav navbar-nav navbar-quick-nav">\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="sessions_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div my-sessions-list class="sessions_modal_col">\n\n <div class="sessions_wrap nano" my-infinite-scroller>\n <div class="sessions_scrollable_wrap nano-content" ng-switch="!sessionsLoaded">\n\n <div ng-switch-when="true" class="sessions_modal_loading" my-vertical-position="0.2" padding="true" my-i18n="sessions_modal_loading">\n <my-i18n-param name="dots">\n <span my-loading-dots></span>\n </my-i18n-param>\n </div>\n\n <ul ng-switch-default class="sessions_modal_sessions_list nav nav-pills nav-stacked">\n\n <li class="sessions_modal_session_wrap clearfix" ng-repeat="authorization in authorizations | limitTo: slice.limit track by authorization.hash">\n <div class="sessions_modal_session">\n <div class="session_meta_wrap pull-right">\n <div class="session_active_date" ng-switch="authorization.current">\n <span ng-switch-when="true" class="session_active_date_online" my-i18n="sessions_modal_current_session"></span>\n <span ng-switch-default ng-bind="authorization.date_active | dateOrTime"></span>\n </div>\n\n <a ng-if="!authorization.current" class="session_terminate_btn" ng-click="terminateSession(authorization.hash)" my-i18n="sessions_modal_terminate_one"></a>\n </div>\n\n <div class="sessions_modal_session_app" ng-bind="authorization.app_name + \' \' + authorization.app_version"></div>\n <div class="sessions_modal_session_device" ng-bind="authorization.device_model + \', \' + authorization.platform + \' \' + authorization.system_version"></div>\n <div class="sessions_modal_session_location" ng-bind="authorization.ip + \' - \' + authorization.country"></div>\n </div>\n <div ng-if="authorization.current && authorizations.length > 1">\n <div class="sessions_modal_terminate_all_wrap">\n <a ng-click="terminateAllSessions()" my-i18n="sessions_modal_terminate_all"></a>\n </div>\n\n <hr class="sessions_modal_other_splitter"></hr>\n </div>\n </li>\n\n </ul>\n\n </div>\n </div>\n\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/settings_modal.html",'<div class="settings_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-toggle-wrap dropdown" dropdown>\n <a class="dropdown-toggle navbar-toggle" dropdown-toggle>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </a>\n <ul class="dropdown-menu">\n <li ng-if="photo.location">\n <a ng-click="deletePhoto()" my-i18n="settings_modal_delete_photo"></a>\n </li>\n <li>\n <a ng-click="editProfile()" my-i18n="settings_modal_edit_profile"></a>\n </li>\n <li>\n <a ng-click="changeUsername()" my-i18n="settings_modal_edit_username"></a>\n </li>\n <li>\n <a ng-if="password._ == \'account.noPassword\' && password.email_unconfirmed_pattern.length" ng-click="changePassword({action: \'cancel_email\'})" my-i18n="settings_modal_password_email_pending_cancel_mobile">\n </a>\n <a ng-if="password._ == \'account.noPassword\' && !password.email_unconfirmed_pattern" ng-click="changePassword({action: \'create\'})" my-i18n="settings_modal_set_password"></a>\n <a ng-if="password._ == \'account.password\'" ng-click="changePassword({action: \'change\'})" my-i18n="settings_modal_change_password"></a>\n </li>\n <li ng-if="password._ == \'account.password\'">\n <a ng-click="changePassword({action: \'disable\'})" my-i18n="settings_modal_disable_password_mobile"></a>\n </li>\n\n <li>\n <a ng-click="showSessions()" my-i18n="settings_modal_active_sessions"></a>\n </li>\n </ul>\n </div>\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li>\n <a ng-click="$close()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="settings_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="mobile_user_modal_photo_profile_wrap">\n\n <a ng-click="openPhoto(profile.photo.photo_id, {p: profile.id})" class="mobile_user_modal_image_wrap pull-left" my-peer-photolink="::profile.id" img-class="mobile_user_modal_image" no-open="true" watch="true" ng-class="{disabled: !profile.photo.photo_id}" ng-disabled="!profile.photo.photo_id"></a>\n\n <div class="mobile_user_modal_info_wrap clearfix">\n <h4 class="mobile_user_modal_header" my-peer-link="profile.id"></h4>\n <p class="mobile_user_modal_status" my-user-status="::profile.id"></p>\n </div>\n\n </div>\n\n <div class="mobile_modal_action_wrap" ng-switch="photo.updating">\n <span ng-switch-when="true" class="mobile_modal_action" my-i18n>\n <my-i18n msgid="settings_modal_photo_updating"></my-i18n>\n <span my-loading-dots></span>\n </span>\n <span ng-switch-default class="mobile_modal_action mobile_modal_upload_action">\n <input my-file-upload type="file" multiple="false" class="im_attach_input" size="120" multiple="false" accept="image/x-png, image/png, image/gif, image/jpeg" />\n <my-i18n msgid="settings_modal_set_photo"></my-i18n>\n </span>\n </div>\n\n <div class="mobile_modal_action_wrap">\n <a class="mobile_modal_action tg_checkbox clearfix" ng-click="toggleDesktop()" ng-class="notify.desktop ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="settings_modal_notification_alert"></span>\n </a>\n </div>\n\n <div class="mobile_modal_action_wrap">\n <a class="mobile_modal_action tg_checkbox clearfix" ng-click="togglePreview()" ng-class="notify.preview ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="settings_modal_message_preview"></span>\n </a>\n </div>\n\n <div class="mobile_modal_action_wrap" ng-if="!notify.desktop &amp;&amp; notify.canVibrate">\n <a class="mobile_modal_action tg_checkbox clearfix" ng-click="toggleVibrate()" ng-class="notify.vibrate ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="settings_modal_vibrate"></span>\n </a>\n </div>\n\n <div class="mobile_modal_action_wrap">\n <a class="mobile_modal_action tg_checkbox clearfix" ng-click="toggleSound()" ng-class="notify.volume ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="settings_modal_sounds"></span>\n </a>\n </div>\n\n <div class="mobile_modal_action_wrap">\n <a class="mobile_modal_action tg_checkbox clearfix" ng-click="toggleCtrlEnter(send.enter == 1 ? 0 : 1)" ng-class="send.enter == 1 ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="settings_modal_send_on_enter"></span>\n </a>\n </div>\n\n\n <div class="mobile_modal_action_wrap" ng-controller="AppLangSelectController">\n <div class="mobile_modal_select_wrap pull-right">\n <select class="form-control" ng-change="localeSelect()" ng-model="form.locale">\n <option ng-repeat="locale in ::supportedLocales" value="{{locale}}" ng-bind="langNames[locale]" ng-selected="locale == curLocale"></option>\n </select>\n </div>\n <span class="mobile_modal_action" my-i18n="settings_modal_language"></span>\n </div>\n\n <div class="mobile_modal_section" ng-if="profile.phone">\n <h4 class="mobile_modal_section_header" my-i18n="user_modal_phone"></h4>\n <div class="mobile_modal_section_value" ng-bind="profile.phone | phoneNumber"></div>\n </div>\n\n <div class="mobile_modal_section">\n <h4 class="mobile_modal_section_header" my-i18n="user_modal_username"></h4>\n <div class="mobile_modal_section_value" ng-click="changeUsername()" ng-switch="profile.username.length > 0">\n <a class="settings_modal_username_link" ng-switch-when="true" href="" ng-click="changeUsername()" ng-bind="\'@\' + profile.username"></a>\n <a ng-switch-default href="" ng-click="changeUsername()" my-i18n="settings_modal_empty_username_set"></a>\n </div>\n </div>\n\n <div class="mobile_modal_section" ng-if="switchBackToDesktop">\n <div class="mobile_modal_section_value">\n <a href="" ng-click="switchToDesktop()" my-i18n="settings_switch_back_to_desktop"></a>\n </div>\n </div>\n\n <div class="mobile_modal_section">\n <h4 class="mobile_modal_section_header" my-i18n="settings_modal_about"></h4>\n <div class="mobile_modal_section_body settings_about_section_body clearfix">\n <div class="settings_external_services pull-right">\n <a href="https://github.com/zhukov/webogram" target="_blank" title="{{\'settings_modal_source_code_github\' | i18n}}" class="settings_external_service"><i class="icon icon-github"></i></a>\n <a href="https://twitter.com/telegram_web" target="_blank" title="{{\'settings_modal_follow_us_twitter\' | i18n}}" class="settings_external_service"><i class="icon icon-twitter"></i></a>\n </div>\n <p>\n <a ng-click="openChangelog()" my-i18n="settings_modal_recent_updates">\n <my-i18n-param name="version" ng-bind="version"></my-i18n-param>\n </a>\n </p>\n </div>\n </div>\n\n </div>\n</div>\n'),e.put("partials/mobile/stickerset_modal.html",'<div class="stickerset_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right" ng-if="stickersetLoaded" ng-switch="stickersetInstalled">\n <a ng-switch-when="true" my-i18n="stickerset_modal_uninstall" ng-click="toggleInstalled(false)"></a>\n <a ng-switch-when="false" my-i18n="stickerset_modal_install" ng-click="toggleInstalled(true)"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 ng-switch="!stickersetLoaded">\n <span ng-switch-when="true" my-i18n="stickerset_modal_title_loading"></span>\n <span ng-switch-default ng-bind="stickerset.title"></span>\n </h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <div my-stickers-list class="stickerset_modal_col">\n\n <div class="stickerset_wrap nano" my-infinite-scroller>\n <div class="stickerset_scrollable_wrap nano-content" ng-switch="!stickersetLoaded">\n\n <div ng-switch-when="true" class="stickerset_modal_loading" my-vertical-position="0.2" padding="true" my-i18n="stickerset_modal_loading">\n <my-i18n-param name="dots">\n <span my-loading-dots></span>\n </my-i18n-param>\n </div>\n\n <div ng-switch-default class="stickerset_modal_stickers_list clearfix">\n <div class="stickerset_modal_sticker_wrap" ng-repeat="sticker in documents | limitTo: slice.limit">\n <div class="stickerset_modal_sticker" my-load-sticker document="sticker" thumb="true"></div>\n <div class="stickerset_modal_sticker_alt" ng-bind-html="sticker.stickerEmoji"></div>\n </div>\n </div>\n\n </div>\n </div>\n\n </div>\n\n </div>\n\n</div>'),e.put("partials/mobile/user_modal.html",'<div class="mobile_user_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-toggle-wrap dropdown" dropdown>\n <a class="dropdown-toggle navbar-toggle" dropdown-toggle>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </a>\n <ul class="dropdown-menu">\n <li ng-if="user.pFlags.contact">\n <a ng-click="importContact(true)" my-i18n="user_modal_edit_contact"></a>\n </li>\n <li ng-if="user.pFlags.contact">\n <a ng-click="deleteContact()" my-i18n="user_modal_delete_contact"></a>\n </li>\n <li ng-if="user.phone.length > 0 &amp;&amp; !user.pFlags.contact &amp;&amp; !user.pFlags.self">\n <a ng-click="importContact()" my-i18n="user_modal_add_contact"></a>\n </li>\n <li>\n <a ng-click="flushHistory()" my-i18n="user_modal_delete_chat"></a>\n </li>\n </ul>\n </div>\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li>\n <a ng-click="$close()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="user_modal_contact_info"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="mobile_user_modal_photo_profile_wrap">\n\n <a ng-click="openPhoto(user.photo.photo_id, {u: user.id})" class="mobile_user_modal_image_wrap pull-left" my-peer-photolink="::user.id" img-class="mobile_user_modal_image" no-open="true" watch="true" ng-class="{disabled: !user.photo.photo_id}" ng-disabled="!user.photo.photo_id"></a>\n\n <div class="mobile_user_modal_info_wrap clearfix">\n <h4 class="mobile_user_modal_header" my-peer-link="user.id" verified="true"></h4>\n <p class="mobile_user_modal_status" ng-if="user.status" my-user-status="::user.id"></p>\n </div>\n\n </div>\n\n <div class="mobile_modal_section" ng-if="rAbout">\n <h4 class="mobile_modal_section_header" my-i18n="user_modal_about"></h4>\n <div class="mobile_modal_section_value" ng-bind-html="rAbout"></div>\n </div>\n\n <div class="mobile_modal_action_wrap">\n <a class="mobile_modal_action" ng-click="goToHistory()" my-i18n="user_modal_send_message"></a>\n </div>\n\n <div ng-if="user.phone.length > 0" class="mobile_modal_action_wrap">\n <a class="mobile_modal_action" ng-click="shareContact()" my-i18n="user_modal_share_contact"></a>\n </div>\n\n <div class="mobile_modal_action_wrap" ng-if="user.pFlags.bot &amp;&amp; !user.pFlags.bot_nochats">\n <a class="mobile_modal_action" ng-click="inviteToGroup()" my-i18n="user_modal_add_to_group"></a>\n </div>\n\n <div class="mobile_modal_action_wrap" ng-if="bot_info.commands.settings != null">\n <a class="mobile_modal_action" ng-click="sendCommand(\'settings\')" my-i18n="user_modal_bot_settings"></a>\n </div>\n\n <div class="mobile_modal_action_wrap" ng-if="bot_info.commands.help != null">\n <a class="mobile_modal_action" ng-click="sendCommand(\'help\')" my-i18n="user_modal_bot_help"></a>\n </div>\n\n\n <div class="mobile_modal_action_wrap">\n <a class="mobile_modal_action tg_checkbox clearfix" ng-click="settings.notifications = !settings.notifications" ng-class="settings.notifications ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="user_modal_notifications"></span>\n </a>\n </div>\n\n <div class="mobile_modal_section" ng-if="user.phone.length > 0">\n <h4 class="mobile_modal_section_header" my-i18n="user_modal_phone"></h4>\n <div class="mobile_modal_section_value" ng-bind="user.phone | phoneNumber"></div>\n </div>\n\n <div class="mobile_modal_section" ng-if="user.username">\n <h4 class="mobile_modal_section_header" my-i18n="user_modal_username"></h4>\n <div class="mobile_modal_section_value" ng-bind="\'@\' + user.username"></div>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/username_edit_modal.html",'<div class="username_edit_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: profile.updating}" ng-click="updateUsername()" ng-bind="profile.updating ? \'username_edit_submit_active\' : \'username_edit_submit\' | i18n" ng-disabled="profile.updating"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="username_edit_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="updateUsername()" my-vertical-position="0.3">\n\n <div class="form-group import_modal_field_wrap" ng-class="{\'has-error\': checked.error, \'has-feedback\': checked.feedback.length > 0}">\n <input class="form-control input-md" my-focused type="text" placeholder="{{\'username_edit_placeholder\' | i18n}}" ng-model="profile.username" name="username" ng-model-options="{updateOn: \'default blur\', debounce: {default: 600, blur: 0}}"/>\n <span ng-if="checked.error" class="glyphicon form-control-feedback" ng-class="{\'glyphicon-remove\': checked.error}"></span>\n </div>\n\n <div class="modal_simple_form_description" my-i18n="username_edit_description_md"></div>\n\n </form>\n\n </div>\n\n</div>'),e.put("partials/mobile/video_modal.html",'<div class="media_modal_bottom_panel_wrap">\n <div class="media_modal_bottom_panel">\n <div class="media_modal_bottom_actions pull-right">\n <a class="media_modal_action_btn" ng-if="messageID" ng-click="delete()" title="{{\'media_modal_delete\' | i18n}}">\n <i class="media_modal_action_btn_delete"></i>\n </a>\n </div>\n\n <div class="media_modal_bottom_actions pull-left">\n <a class="media_modal_action_btn" ng-if="messageID" ng-click="forward()" title="{{\'media_modal_forward\' | i18n}}">\n <i class="media_modal_action_btn_forward"></i>\n </a>\n </div>\n\n <div class="media_modal_info_wrap" ng-if="video.user_id > 0">\n <a class="media_modal_author" my-peer-link="video.user_id" peer-watch="true"></a>\n <br/>\n <span class="media_modal_date" ng-bind="video.date | dateOrTime :true"></span>\n </div>\n\n </div>\n</div>\n\n<div class="media_modal_top_panel_wrap">\n <div class="media_modal_top_panel">\n <div class="media_modal_top_actions pull-right">\n <a class="media_modal_action_btn" ng-click="download()" title="{{\'media_modal_download\' | i18n}}">\n <i class="media_modal_action_btn_download"></i>\n </a>\n </div>\n <div class="media_modal_top_actions pull-left">\n <a ng-click="$close()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 class="media_modal_title_wrap" my-i18n="media_modal_video"></h4>\n </div>\n </a>\n </div>\n </div>\n</div>\n\n<div class="modal-dialog">\n <div class="modal-content">\n <div my-modal-width="{{video.full.width}}" class="media_modal_wrap video_modal_wrap" my-vertical-position="0.5">\n\n <div class="modal-body">\n\n <div class="video_modal_image_wrap" my-load-video video="video"></div>\n\n </div>\n\n </div>\n </div>\n</div>\n\n'),e.put("partials/mobile/welcome.html","")
}]),function(e,t,n,a){function i(e){ConfigStorage.get("emojis_popular",function(t){var n=[];if(t&&t.length){for(var a=0,i=t.length;i>a;a++)n.push({code:t[a][0],rate:t[a][1]});return void e(n)}ConfigStorage.get("emojis_recent",function(t){t=t||y||[];for(var a,i,o=0,s=t.length;s>o;o++)a=t[o],Array.isArray(a)&&(a=a[0]),a&&"string"==typeof a&&(":"==a.charAt(0)&&(a=a.substr(1,a.length-2)),(i=f[a])&&n.push({code:i,rate:1}));e(n)})})}function o(e){i(function(t){for(var n=!1,a=t.length,i=[],o=0;a>o;o++)t[o].code==e&&(n=!0,t[o].rate++),i.push([t[o].code,t[o].rate]);n?i.sort(function(e,t){return t[1]-e[1]}):(i.length>41&&(i=i.slice(0,41)),i.push([e,1])),ConfigStorage.set({emojis_popular:i})})}function s(){if(v===!1){v=SearchIndexManager.createIndex();var e;for(e in f)f.hasOwnProperty(e)&&SearchIndexManager.indexObject(f[e],e,v)}}function r(e){s();var t,n=SearchIndexManager.search(e,v),a=[];for(t in n)n.hasOwnProperty(t)&&a.push(t);return a}var l,c,d,u,p,m,g,h,t={},f={},_={},v=!1,y="joy,kissing_heart,heart,heart_eyes,blush,grin,+1,relaxed,pensive,smile,sob,kiss,unamused,flushed,stuck_out_tongue_winking_eye,see_no_evil,wink,smiley,cry,stuck_out_tongue_closed_eyes,scream,rage,smirk,disappointed,sweat_smile,kissing_closed_eyes,speak_no_evil,relieved,grinning,yum,laughing,ok_hand,neutral_face,confused".split(",");for(l=0,g=n.length;g>l;l++)for(m=a[l][1],c=0,h=n[l].length;h>c;c++)d=n[l][c],p=Config.Emoji[d],u=p[1][0],t[d]=[p[0],u],f[u]=d,_[d]=[l,c,Math.floor(c/m),c%m];e.EmojiHelper={emojis:t,shortcuts:f,spritesheetPositions:_,getPopularEmoji:i,pushPopularEmoji:o,indexEmojis:s,searchEmojis:r}}(window,Config.Emoji,Config.EmojiCategories,Config.EmojiCategorySpritesheetDimens),EmojiTooltip.prototype.onMouseEnter=function(e){this.hideTimeout?(clearTimeout(this.hideTimeout),delete this.hideTimeout):e&&!this.showTimeout&&(this.showTimeout=setTimeout(this.show.bind(this),100))},EmojiTooltip.prototype.onMouseLeave=function(e){if(this.hideTimeout)e&&this.showTimeout&&(clearTimeout(this.showTimeout),delete this.showTimeout);else{var t=this;this.hideTimeout=setTimeout(function(){t.hide()},600)}},EmojiTooltip.prototype.createTooltip=function(){if(this.tooltipEl)return!1;var e='<div class="composer_emoji_tooltip noselect"> <div class="composer_emoji_tooltip_tabs"> <div class="composer_emoji_tooltip_tab composer_emoji_tooltip_tab_emoji">'+this.langpack.im_emoji_tab+'</div> <div class="composer_emoji_tooltip_tab composer_emoji_tooltip_tab_stickers">'+this.langpack.im_stickers_tab+'</div> <div class="composer_emoji_tooltip_tab_shadow"></div> </div> <div class="composer_emoji_tooltip_tabs_wrap"> <div class="composer_emoji_tooltip_tabs_contents clearfix"> <div class="composer_emoji_tooltip_tab_emoji_content"> <div class="composer_emoji_tooltip_content_wrap"> <div class="composer_emoji_tooltip_content composer_emoji_tooltip_content_emoji clearfix"></div> </div> <div class="composer_emoji_tooltip_categories"> <a class="composer_emoji_tooltip_category active" data-category="0"><i class="composer_emoji_tooltip_category_recent"></i></a> <a class="composer_emoji_tooltip_category" data-category="1"><i class="composer_emoji_tooltip_category_smile"></i></a> <a class="composer_emoji_tooltip_category" data-category="2"><i class="composer_emoji_tooltip_category_flower"></i></a> <a class="composer_emoji_tooltip_category" data-category="3"><i class="composer_emoji_tooltip_category_bell"></i></a> <a class="composer_emoji_tooltip_category" data-category="4"><i class="composer_emoji_tooltip_category_car"></i></a> <a class="composer_emoji_tooltip_category" data-category="5"><i class="composer_emoji_tooltip_category_grid"></i></a> </div> </div> <div class="composer_emoji_tooltip_tab_stickers_content"> <div class="composer_emoji_tooltip_content_wrap"> <div class="composer_emoji_tooltip_content composer_emoji_tooltip_content_stickers clearfix"></div> </div> <div class="composer_emoji_tooltip_categories"></div> </div> </div> </div> <div class="composer_emoji_tooltip_tail"><i class="icon icon-tooltip-tail"></i></div></div>';e=e.replace(/>\s+</g,"><");var t=this;this.tooltipEl=$(e).appendTo(document.body),this.tabsEl=$(".composer_emoji_tooltip_tabs",this.tooltipEl),this.categoriesEl=$(".composer_emoji_tooltip_categories",this.tooltipEl),this.stickersCategoriesEl=$(".composer_emoji_tooltip_tab_stickers_content .composer_emoji_tooltip_categories",this.tooltipEl),this.contentEl=$(".composer_emoji_tooltip_content",this.tooltipEl),this.emojiContentEl=$(".composer_emoji_tooltip_content_emoji",this.tooltipEl),this.stickersContentEl=$(".composer_emoji_tooltip_content_stickers",this.tooltipEl),angular.forEach(["emoji","stickers"],function(e,n){var a=$(".composer_emoji_tooltip_tab_"+e,t.tabsEl).on("mousedown",function(e){return t.selectTab(n),cancelEvent(e)});Config.Navigator.touch||a.on("mouseenter mouseleave",function(e){clearTimeout(t.selectTabTimeout),"mouseenter"==e.type&&(t.selectTabTimeout=setTimeout(function(){t.selectTab(n)},300))})});var n="mousedown";return Config.Navigator.touch||(n+=" mouseover mouseout"),this.categoriesEl.on(n,function(e){e=e.originalEvent||e;var n=e.target;if("A"!=n.tagName&&(n=n.parentNode),"A"==n.tagName){var a=parseInt(n.getAttribute("data-category"));if("mousedown"==e.type)return t.selectCategory(a),cancelEvent(e);if(!t.tab){var i="mouseover"==e.type;i&&t.selectCategoryIndex==a||(clearTimeout(t.selectCategoryTimeout),delete t.selectCategoryTimeout,i?(t.selectCategoryIndex=a,t.selectCategoryTimeout=setTimeout(function(){delete t.selectCategoryIndex,delete t.selectCategoryTimeout,t.selectCategory(a)},300)):delete t.selectCategoryIndex)}}}),this.emojiScroller=new Scroller(this.emojiContentEl,{classPrefix:"composer_emoji_tooltip"}),this.stickersScroller=new Scroller(this.stickersContentEl,{classPrefix:"composer_emoji_tooltip"}),this.stickersScroller.onScroll(function(e,n){t.onStickersScroll(e,n)}),this.contentEl.on("mousedown",function(e){e=e.originalEvent||e;var n,a,i,o=$(e.target);return"A"!=o[0].tagName&&(o=$(o[0].parentNode)),(n=o.attr("data-code"))&&(t.onEmojiSelected&&t.onEmojiSelected(n),EmojiHelper.pushPopularEmoji(n)),(a=o.attr("data-sticker"))&&(t.onStickerSelected&&t.onStickerSelected(a),Config.Mobile&&t.hide()),(i=o.attr("data-stickerset"))&&(t.onStickersetSelected&&t.onStickersetSelected(i),t.hide()),cancelEvent(e)}),Config.Navigator.touch||this.tooltipEl.on("mouseenter mouseleave",function(e){"mouseenter"==e.type?t.onMouseEnter():t.onMouseLeave()}),this.selectTab(0),$(window).on("resize",this.updatePosition.bind(this)),!0},EmojiTooltip.prototype.selectCategory=function(e,t){return this.tab||this.cat!==e||t?($(".active",this.categoriesEl).removeClass("active"),this.cat=e,void(this.tab?(this.activateStickerCategory(),this.updateStickersContents(t)):($(this.categoriesEl[this.tab].childNodes[e]).addClass("active"),this.updateEmojiContents()))):!1},EmojiTooltip.prototype.selectTab=function(e,t){if(this.tab===e&&!t)return!1;this.tab=e,this.selectCategory(0,!0);var n=this;setTimeout(function(){$(n.tooltipEl).toggleClass("composer_emoji_tooltip_tabs_stickers_active",1==e)},0)},EmojiTooltip.prototype.updateEmojiContents=function(){var e=[],t=this,n=26,a=function(){t.emojiContentEl.html(e.join("")),t.emojiScroller.reinit()};if(this.cat>0){var i,o,s,r,l,c=this.cat-1,d=Config.EmojiCategories[c],u=Config.EmojiCategorySpritesheetDimens[c][1],p=d.length;for(s=0;p>s;s++)i=d[s],o=Config.Emoji[i],r=n*(s%u),l=n*Math.floor(s/u),e.push('<a class="composer_emoji_btn" title=":'+encodeEntities(o[1][0])+':" data-code="'+encodeEntities(i)+'"><i class="emoji emoji-w'+n+" emoji-spritesheet-"+c+'" style="background-position: -'+r+"px -"+l+'px;"></i></a>');a()}else EmojiHelper.getPopularEmoji(function(t){var i,o,s,r,l,c,d,u,p=t.length;for(c=0;p>c;c++)i=t[c].code,(o=Config.Emoji[i])&&(s=EmojiHelper.spritesheetPositions[i],l=s[0],r=s[1],d=n*s[3],u=n*s[2],e.push('<a class="composer_emoji_btn" title=":'+encodeEntities(o[1][0])+':" data-code="'+encodeEntities(i)+'"><i class="emoji emoji-w'+n+" emoji-spritesheet-"+l+'" style="background-position: -'+d+"px -"+u+'px;"></i></a>'));a()})},EmojiTooltip.prototype.updateStickersContents=function(e){var t=[],n=[],a=this,i=function(){var t=a.cat?a.stickersetPositions[a.cat][0]:0;a.stickersScroller.scrollTo(t,e?0:200)};if(!e&&a.stickersetPositions.length)return void i();var o=function(e){var o,s,r,l,c,d;for(r=0,c=e.length;c>r;r++)if(o=e[r],o.docIDs.length){for(t.push('<div class="composer_stickerset_wrap clearfix">'),o.title&&t.push('<a class="composer_stickerset_title',o.id?"":" disabled",'" data-stickerset="',encodeEntities(o.short_name),'">',encodeEntities(o.title),"</a>"),n.push(o.id?'<a class="composer_sticker_btn" data-sticker="'+o.docIDs[0]+'" data-category="'+r+'"></a>':'<a class="composer_emoji_tooltip_category active" data-category="0"><i class="composer_emoji_tooltip_category_recent"></i></a>'),l=0,d=o.docIDs.length;d>l;l++)s=o.docIDs[l],t.push('<a class="composer_sticker_btn" data-sticker="'+s+'"></a>');t.push("</div>")}a.stickersContentEl.html(t.join("")),a.stickersCategoriesEl.html(n.join("")),a.stickersScroller.reinit();var u=[];$(".composer_stickerset_wrap",a.stickersContentEl).each(function(e,t){var n=t.offsetHeight,a=t.offsetTop;u.push([a,n])}),a.stickersetPositions=u,i();var p=[];a.contentEl.find(".composer_sticker_btn").each(function(e,t){12>e?a.replaceStickerImage(t):p.push([t.offsetTop,t])}),a.stickersPreload=p,a.stickersCategoriesEl.find(".composer_sticker_btn").each(function(e,t){a.replaceStickerImage(t)})};this.getStickers(o)},EmojiTooltip.prototype.replaceStickerImage=function(e){e=$(e),this.getStickerImage(e,e.attr("data-sticker"))},EmojiTooltip.prototype.onStickersScroll=function(e,t){var n,a,i=e.clientHeight,o=e.scrollHeight,s=this.stickersetPositions.length,r=!1;if(20>t)r=0;else if(t>o-i-20)r=s-1;else for(a=0;s>a;a++)if(n=this.stickersetPositions[a],t>=n[0]&&t<n[0]+n[1]){r=a;break}var s=this.stickersPreload.length;if(s)for(a=0;s>a;a++)n=this.stickersPreload[a],n[0]>=t&&n[0]<=t+i&&(this.replaceStickerImage(n[1]),this.stickersPreload.splice(a,1),a--,s--);this.cat!==r&&r!==!1&&($(".active",this.categoriesEl).removeClass("active"),this.cat=r,this.activateStickerCategory())},EmojiTooltip.prototype.onStickersChanged=function(){this.tab&&this.updateStickersContents(!0)},EmojiTooltip.prototype.activateStickerCategory=function(){var e=this.categoriesEl[1],t=e.childNodes[this.cat];if(t){$(t).addClass("active");var n=t.offsetLeft,a=t.offsetWidth,i=e.clientWidth;$(e).stop(!0).animate({scrollLeft:n-(i-a)/2},200)}},EmojiTooltip.prototype.updatePosition=function(){var e=this.btnEl.offset();this.tooltipEl.css({top:e.top,left:e.left})},EmojiTooltip.prototype.show=function(){this.updatePosition(),this.tab?this.updateStickersContents(!0):this.updateEmojiContents(),this.tooltipEl.addClass("composer_emoji_tooltip_shown"),this.btnEl.addClass("composer_emoji_insert_btn_on"),delete this.showTimeout,this.shown=!0},EmojiTooltip.prototype.hide=function(){this.tooltipEl&&(this.tooltipEl.removeClass("composer_emoji_tooltip_shown"),this.btnEl.removeClass("composer_emoji_insert_btn_on")),delete this.hideTimeout,delete this.shown},EmojiPanel.prototype.update=function(){var e=[],t=this,n=Config.Mobile?26:20;EmojiHelper.getPopularEmoji(function(a){var i,o,s,r,l,c,d,u,p=a.length;for(c=0;p>c;c++)i=a[c].code,(o=Config.Emoji[i])&&(s=EmojiHelper.spritesheetPositions[i],l=s[0],r=s[1],d=n*s[3],u=n*s[2],e.push('<a class="composer_emoji_btn" title=":'+encodeEntities(o[1][0])+':" data-code="'+encodeEntities(i)+'"><i class="emoji emoji-w20 emoji-spritesheet-'+l+'" style="background-position: -'+d+"px -"+u+'px;"></i></a>'));t.containerEl.html(e.join(""))})},MessageComposer.autoCompleteRegEx=/(\s|^)(:|@|\/)([A-Za-z0-9\-\+\*@_]*)$/,MessageComposer.prototype.setUpInput=function(){if(this.inlinePlaceholderWrap=$('<div class="im_inline_placeholder_wrap"></div>').prependTo(this.textareaEl[0].parentNode),this.inlinePlaceholderPrefixEl=$('<span class="im_inline_placeholder_prefix"></span>').appendTo(this.inlinePlaceholderWrap),this.inlinePlaceholderEl=$('<span class="im_inline_placeholder"></span>').appendTo(this.inlinePlaceholderWrap),"contentEditable"in document.body?this.setUpRich():this.setUpPlaintext(),!Config.Mobile){var e=getScrollWidth();e&&(this.richTextareaEl||this.textareaEl).css({marginRight:-e})}},MessageComposer.prototype.setInlinePlaceholder=function(e,t){this.inlinePlaceholderPrefix=e,this.inlinePlaceholderPrefixEl.html(encodeEntities(e)),this.inlinePlaceholderEl.html(encodeEntities(t)),this.onChange()},MessageComposer.prototype.updateInlinePlaceholder=function(){var e=this.inlinePlaceholderPrefix;if(e){var t=this.textareaEl.val();this.inlinePlaceholderWrap.toggleClass("active",t==e)}},MessageComposer.prototype.setUpAutoComplete=function(){this.scroller=new Scroller(this.autoCompleteEl,{maxHeight:180});var e=this;this.autoCompleteEl.on("mousedown",function(t){t=t.originalEvent||t;var n,a,i,o,s=$(t.target);return"A"!=s[0].tagName&&(s=$(s[0].parentNode)),(a=s.attr("data-code"))&&(e.onEmojiSelected&&e.onEmojiSelected(a,!0),EmojiHelper.pushPopularEmoji(a)),(n=s.attr("data-mention"))&&e.onMentionSelected(n),(i=s.attr("data-command"))&&(e.onCommandSelected&&e.onCommandSelected(i),e.hideSuggestions()),(o=s.attr("data-inlineid"))&&(e.onInlineResultSend&&e.onInlineResultSend(o),e.hideSuggestions()),cancelEvent(t)})},MessageComposer.prototype.setUpRich=function(){this.textareaEl.hide(),this.richTextareaEl=$('<div class="composer_rich_textarea" contenteditable="true" dir="auto"></div>'),this.textareaEl[0].parentNode.insertBefore(this.richTextareaEl[0],this.textareaEl[0]),this.richTextareaEl.on("keyup keydown",this.onKeyEvent.bind(this)),this.richTextareaEl.on("focus blur",this.onFocusBlur.bind(this)),this.richTextareaEl.on("paste",this.onRichPaste.bind(this)),this.richTextareaEl.on("DOMNodeInserted",this.onRichPasteNode.bind(this)),$(document.body).on("keydown",this.backupSelection.bind(this))},MessageComposer.prototype.setUpPlaintext=function(){this.textareaEl.on("keyup keydown",this.onKeyEvent.bind(this)),this.textareaEl.on("focus blur",this.onFocusBlur.bind(this))},MessageComposer.prototype.onKeyEvent=function(e){var t=this;if("keyup"==e.type){this.checkAutocomplete();var n=!1;if(this.richTextareaEl){clearTimeout(this.updateValueTO);var a=tsNow();void 0===this.keyupStarted&&(this.keyupStarted=a),this.onChange()}if(this.onTyping){var a=tsNow();a-this.lastTyping>5e3&&(n===!1&&(n=(this.richTextareaEl?this.richTextareaEl[0].textContent:this.textareaEl[0].value).length),n!=this.lastLength&&(this.lastTyping=a,this.lastLength=n,this.onTyping()))}}if("keydown"==e.type){var i=!this.autocompleteShown;if(this.autocompleteShown){if(38==e.keyCode||40==e.keyCode){var o,s=40==e.keyCode,r=$(this.autoCompleteEl).find("li.composer_autocomplete_option_active"),l=Array.prototype.slice.call($(this.autoCompleteEl).find("li"));if(r.length){var c=l.indexOf(r[0]),d=c+(s?1:-1);if(o=l[d],r.removeClass("composer_autocomplete_option_active"),o)return $(o).addClass("composer_autocomplete_option_active"),this.scroller.scrollToNode(o),cancelEvent(e)}return o=l[s?0:l.length-1],this.scroller.scrollToNode(o),$(o).addClass("composer_autocomplete_option_active"),cancelEvent(e)}if(13==e.keyCode||9==e.keyCode){var r=$(this.autoCompleteEl).find("li.composer_autocomplete_option_active");r.length||9!=e.keyCode||(r=$(this.autoCompleteEl).find("li:first")),r=r.find("a:first");var u,p,m,g;if(u=r.attr("data-code"))return this.onEmojiSelected(u,!0),EmojiHelper.pushPopularEmoji(u),cancelEvent(e);if(p=r.attr("data-mention"))return this.onMentionSelected(p),cancelEvent(e);if(m=r.attr("data-command"))return this.onCommandSelected&&this.onCommandSelected(m,9==e.keyCode),cancelEvent(e);if(g=r.attr("data-inlineid"))return t.onInlineResultSend&&t.onInlineResultSend(g),t.hideSuggestions(),cancelEvent(e);i=!0}}if(i&&13==e.keyCode){var h=!1,f=!0;if(this.getSendOnEnter&&!this.getSendOnEnter()&&(f=!1),f&&!e.shiftKey?h=!0:f||!e.ctrlKey&&!e.metaKey||(h=!0),h)return this.onMessageSubmit(e),cancelEvent(e)}}},MessageComposer.prototype.backupSelection=function(){if(delete this.selection,this.isActive)if(window.getSelection){var e=window.getSelection();e.getRangeAt&&e.rangeCount&&(this.selection=e.getRangeAt(0))}else document.selection&&document.selection.createRange&&(this.selection=document.selection.createRange())},MessageComposer.prototype.restoreSelection=function(){if(!this.selection)return!1;var e=!1;if(window.getSelection){var t=window.getSelection();t.removeAllRanges(),t.addRange(this.selection),e=!0}else document.selection&&this.selection.select&&(this.selection.select(),e=!0);return delete this.selection,e},MessageComposer.prototype.checkAutocomplete=function(e){var t,n;if(this.richTextareaEl){var a=this.richTextareaEl[0],i=getRichValueWithCaret(a),n=i[0],t=i[1]>=0?i[1]:n.length;t||this.cleanRichTextarea(n,!0)}else var a=this.textareaEl[0],t=getFieldSelection(a),n=a.value;if(n&&this.curInlineResults&&this.curInlineResults.text==n)return void this.showInlineSuggestions(this.curInlineResults);e||(n=n.substr(0,t));var o=n.match(MessageComposer.autoCompleteRegEx);if(o){if(this.previousQuery==o[0])return;this.previousQuery=o[0];var s=SearchIndexManager.cleanSearchText(o[3]);if("@"==o[2])if(this.mentions&&this.mentions.index){if(s.length)for(var r,l=SearchIndexManager.search(s,this.mentions.index),c=[],d=0,u=this.mentions.users.length;u>d;d++)r=this.mentions.users[d],l[r.id]&&c.push(r);else var c=this.mentions.users;c.length?this.showMentionSuggestions(c):this.hideSuggestions()}else this.hideSuggestions();else if(o[1]||"/"!=o[2])":"==o[2]&&EmojiHelper.getPopularEmoji(function(e){if(s.length){var t=EmojiHelper.searchEmojis(s);if(t.length){for(var n,a,i=[],o=0,r=e.length;r>o&&(n=e[o].code,a=t.indexOf(n),!(a>=0)||(i.push(n),t.splice(a,1),t.length));o++);this.showEmojiSuggestions(i.concat(t))}else this.hideSuggestions()}else this.showEmojiSuggestions(e)}.bind(this));else if(this.commands&&this.commands.index){if(s.length)for(var p,l=SearchIndexManager.search(s,this.commands.index),m=[],d=0,u=this.commands.list.length;u>d;d++)p=this.commands.list[d],l[p.value]&&m.push(p);else var m=this.commands.list;m.length?this.showCommandsSuggestions(m):this.hideSuggestions()}else this.hideSuggestions()}else delete this.previousQuery,this.hideSuggestions()},MessageComposer.prototype.onFocusBlur=function(e){this.isActive="focus"==e.type,this.isActive?setTimeout(this.checkAutocomplete.bind(this),100):(this.cleanRichTextarea(),this.hideSuggestions()),this.richTextareaEl&&document.execCommand("enableObjectResizing",!this.isActive,!this.isActive)},MessageComposer.prototype.onRichPaste=function(e){var t,n=(e.originalEvent||e).clipboardData,a=n&&n.items||[];for(t=0;t<a.length;t++)if("file"==a[t].kind)return e.preventDefault(),!0;try{var i=n.getData("text/plain")}catch(e){return!0}return setZeroTimeout(this.onChange.bind(this),0),i.length?(document.execCommand("insertText",!1,i),cancelEvent(e)):!0},MessageComposer.prototype.cleanRichTextarea=function(e,t){if(this.richTextareaEl[0]&&(void 0===e&&(e=getRichValue(this.richTextareaEl[0])),e.match(/^\s*$/)&&this.richTextareaEl.html().length>0&&(this.richTextareaEl.html(""),this.lastLength=0,this.wasEmpty=!0,t))){var n=this;setZeroTimeout(function(){n.focus()})}},MessageComposer.prototype.onRichPasteNode=function(e){var t=(e.originalEvent||e).target,n=(t||{}).src||"",a=!1;if("data:"==n.substr(0,5)){a=!0;var i=dataUrlToBlob(n);this.onFilePaste(i),setZeroTimeout(function(){t.parentNode.replaceChild(document.createTextNode("   "),t)})}else if(n&&!n.match(/img\/blank\.gif/)){var o=document.createTextNode(" "+n+" ");setTimeout(function(){t.parentNode.replaceChild(o,t)},100)}},MessageComposer.prototype.onEmojiSelected=function(e,t){if(this.richTextareaEl){var n=this.richTextareaEl[0];if(this.isActive||this.restoreSelection()||setRichFocus(n),t){var a,i=getRichValueWithCaret(n),o=i[0],s=i[1]>=0?i[1]:o.length,r=o.substr(s),l=o.substr(0,s),c=l.match(/:([A-Za-z0-9\-\+\*_]*)$/),d=EmojiHelper.emojis[e];a=c&&c[0]?l.substr(0,c.index)+":"+d[1]+":":l+":"+d[1]+":",n.value=f;var u;r.length?(this.selId=(this.selId||0)+1,u=this.getRichHtml(a)+'&nbsp;<span id="composer_sel'+this.selId+'"></span>'+this.getRichHtml(r),this.richTextareaEl.html(u),setRichFocus(n,$("#composer_sel"+this.selId)[0])):(u=this.getRichHtml(a)+"&nbsp;",this.richTextareaEl.html(u),setRichFocus(n))}else{var u=this.getEmojiHtml(e);if(window.getSelection){var p=window.getSelection();if(p.getRangeAt&&p.rangeCount){var m=document.createElement("div");m.innerHTML=u;var g=m.firstChild,h=p.getRangeAt(0);h.deleteContents(),h.insertNode(document.createTextNode(" ")),h.insertNode(g),h.setStart(g,0),setTimeout(function(){h=document.createRange(),h.setStartAfter(g),h.collapse(!0),p.removeAllRanges(),p.addRange(h)},0)}}else document.selection&&"Control"!=document.selection.type&&document.selection.createRange().pasteHTML(u)}}else{var n=this.textareaEl[0],o=n.value,s=this.isActive?getFieldSelection(n):o.length,r=o.substr(s),l=o.substr(0,s),c=t&&l.match(/:([A-Za-z0-9\-\+\*_]*)$/),d=EmojiHelper.emojis[e];if(c&&c[0])var f=l.substr(0,c.index)+":"+d[1]+": "+r,_=c.index+d[1].length+3;else var f=l+":"+d[1]+": "+r,_=l.length+d[1].length+3;n.value=f,setFieldSelection(n,_)}this.hideSuggestions(),this.onChange()},MessageComposer.prototype.onMentionsUpdated=function(){delete this.previousQuery,this.isActive&&this.checkAutocomplete()},MessageComposer.prototype.onMentionSelected=function(e){if(this.richTextareaEl){var t=this.richTextareaEl[0];this.isActive||this.restoreSelection()||setRichFocus(t);var n,a=getRichValueWithCaret(t),i=a[0],o=a[1]>=0?a[1]:i.length,s=i.substr(o),r=i.substr(0,o),l=r.match(/@([A-Za-z0-9\-\+\*_]*)$/);n=l&&l[0]?r.substr(0,l.index)+"@"+e:r+"@"+e,t.value=d;var c;s.length?(this.selId=(this.selId||0)+1,c=this.getRichHtml(n)+'&nbsp;<span id="composer_sel'+this.selId+'"></span>'+this.getRichHtml(s),this.richTextareaEl.html(c),setRichFocus(t,$("#composer_sel"+this.selId)[0])):(c=this.getRichHtml(n)+"&nbsp;",this.richTextareaEl.html(c),setRichFocus(t))}else{var t=this.textareaEl[0],i=t.value,o=this.isActive?getFieldSelection(t):i.length,s=i.substr(o),r=i.substr(0,o),l=r.match(/@([A-Za-z0-9\-\+\*_]*)$/);if(l&&l[0])var d=r.substr(0,l.index)+"@"+e+" "+s,u=l.index+e.length+2;else var d=r+":"+e+": "+s,u=r.length+e.length+2;t.value=d,setFieldSelection(t,u)}this.hideSuggestions(),this.onChange()},MessageComposer.prototype.onCommandSelected=function(e,t){if(t)if(this.richTextareaEl)this.richTextareaEl.html(encodeEntities(e)+"&nbsp;"),setRichFocus(this.richTextareaEl[0]);else{var n=this.textareaEl[0];n.value=e+" ",setFieldSelection(n)}else this.onCommandSend(e);this.hideSuggestions(),this.onChange()},MessageComposer.prototype.onChange=function(){if(this.richTextareaEl){delete this.keyupStarted;var e=getRichValue(this.richTextareaEl[0]);this.textareaEl.val(e).trigger("change")}this.updateInlinePlaceholder()},MessageComposer.prototype.getEmojiHtml=function(e,t){t=t||EmojiHelper.emojis[e];var n=20,a=EmojiHelper.spritesheetPositions[e],i=a[0],o=(a[1],n*a[3]),s=n*a[2];return'<img src="img/blank.gif" alt=":'+encodeEntities(t[1])+':" data-code="'+encodeEntities(e)+'" class="emoji emoji-w20 emoji-spritesheet-'+i+'" style="background-position: -'+o+"px -"+s+'px;" onresizestart="return false" />'},MessageComposer.prototype.setValue=function(e){this.richTextareaEl?(this.richTextareaEl.html(this.getRichHtml(e)),this.lastLength=e.length,this.wasEmpty=!e.length,this.onKeyEvent({type:"keyup"})):this.textareaEl.val(e)},MessageComposer.prototype.setFocusedValue=function(e){var t=e[0],n=e[1],a=e[2];if(this.richTextareaEl){this.selId=(this.selId||0)+1;var i=this.getRichHtml(t)+'<span id="composer_sel'+this.selId+'">'+this.getRichHtml(n)+"</span>"+this.getRichHtml(a);this.richTextareaEl.html(i),setRichFocus(this.richTextareaEl[0],$("#composer_sel"+this.selId)[0],!0)}else this.textareaEl.val(t+n+a),setFieldSelection(this.textareaEl[0],t.length,t.length+n.length)},MessageComposer.prototype.getRichHtml=function(e){var t=$("<div>").text(e).html();return t=t.replace(/\n/g,"<br/>"),t=t.replace(/:([A-Za-z0-9\-\+\*_]+?):/gi,function(e,t){var n=EmojiHelper.shortcuts[t];return void 0!==n?this.getEmojiHtml(n):e}.bind(this)),t=t.replace(/ /g,"  ").replace(/^ | $/g," ")},MessageComposer.prototype.focus=function(){this.richTextareaEl?setZeroTimeout(function(){setRichFocus(this.richTextareaEl[0])}.bind(this)):setFieldSelection(this.textareaEl[0])},MessageComposer.prototype.blur=function(){this.richTextareaEl?this.richTextareaEl[0].blur():this.textareaEl[0].blur()},MessageComposer.prototype.renderSuggestions=function(){this.autoCompleteWrapEl.show(),this.scroller.reinit(),this.updatePosition(),this.autocompleteShown=!0},MessageComposer.prototype.showEmojiSuggestions=function(e){var t=this;setZeroTimeout(function(){t.autoCompleteScope.$apply(function(){t.autoCompleteScope.type="emoji",t.autoCompleteScope.emojiCodes=e}),onContentLoaded(function(){t.renderSuggestions()})})},MessageComposer.prototype.showMentionSuggestions=function(e){var t=this;setZeroTimeout(function(){t.autoCompleteScope.$apply(function(){t.autoCompleteScope.type="mentions",t.autoCompleteScope.mentionUsers=e}),onContentLoaded(function(){t.renderSuggestions()})})},MessageComposer.prototype.showCommandsSuggestions=function(e){var t=this;setZeroTimeout(function(){t.autoCompleteScope.$apply(function(){t.autoCompleteScope.type="commands",t.autoCompleteScope.commands=e}),onContentLoaded(function(){t.renderSuggestions()})})},MessageComposer.prototype.showInlineSuggestions=function(e){if(!e||!e.results.length)return void this.hideSuggestions();var t=this;"inline"==t.autoCompleteScope.type&&t.autoCompleteScope.botResults==e&&t.autocompleteShown||setZeroTimeout(function(){t.autoCompleteScope.$apply(function(){t.autoCompleteScope.type="inline",t.autoCompleteScope.botResults=e}),onContentLoaded(function(){t.renderSuggestions()})})},MessageComposer.prototype.setInlineSuggestions=function(e){this.curInlineResults=e,this.checkAutocomplete()},MessageComposer.prototype.updatePosition=function(){var e=(this.richTextareaEl||this.textareaEl).offset(),t=this.scroller.updateHeight(),n=$((this.richTextareaEl||this.textareaEl)[0].parentNode).outerWidth();this.autoCompleteWrapEl.css({top:e.top-t,left:Config.Mobile?0:e.left,width:Config.Mobile?"100%":n-2}),this.scroller.update()},MessageComposer.prototype.hideSuggestions=function(){this.autoCompleteWrapEl.hide(),delete this.autocompleteShown},MessageComposer.prototype.resetTyping=function(){this.lastTyping=0,this.lastLength=0},MessageComposer.prototype.setPlaceholder=function(e){(this.richTextareaEl||this.textareaEl).attr("placeholder",e)},Scroller.prototype.setUpNano=function(){this.content.wrap('<div class="scroller_scrollable_container"><div class="scroller_scrollable_wrap nano"><div class="scroller_scrollable nano-content "></div></div></div>'),this.scrollable=$(this.content[0].parentNode),this.scroller=$(this.scrollable[0].parentNode),this.wrap=$(this.scroller[0].parentNode),this.scroller.nanoScroller({preventPageScrolling:!0,tabIndex:-1})},Scroller.prototype.setUpNative=function(){this.content.wrap('<div class="scroller_native_scrollable"></div>'),this.scrollable=$(this.content[0].parentNode),this.scrollable.css({overflow:"auto"}),this.maxHeight&&this.scrollable.css({maxHeight:this.maxHeight}),this.minHeight&&this.scrollable.css({minHeight:this.minHeight})},Scroller.prototype.onScroll=function(e){var t=this,n=this.scrollable[0];this.scrollable.on("scroll",function(){t.isAnimatedScroll||e(n,n.scrollTop)})},Scroller.prototype.update=function(){this.useNano&&$(this.scroller).nanoScroller()},Scroller.prototype.reinit=function(){this.scrollTo(0),this.useNano&&setTimeout(function(){this.updateHeight()}.bind(this),100)},Scroller.prototype.updateHeight=function(){var e;return this.useNano?(this.maxHeight||this.minHeight?(e=this.content[0].offsetHeight,this.maxHeight&&e>this.maxHeight&&(e=this.maxHeight),this.minHeight&&e<this.minHeight&&(e=this.minHeight),this.wrap.css({height:e})):e=this.scroller[0].offsetHeight,$(this.scroller).nanoScroller()):e=this.scrollable[0].offsetHeight,e},Scroller.prototype.scrollTo=function(e,t,n){if(t>0){var a=this;this.isAnimatedScroll=!0,this.scrollable.animate({scrollTop:e},t,function(){delete a.isAnimatedScroll,a.useNano&&$(a.scroller).nanoScroller({flash:!0}),a.scrollable.trigger("scroll"),n&&n()})}else this.scrollable[0].scrollTop=e,this.useNano&&$(this.scroller).nanoScroller({flash:!0}),n&&n()},Scroller.prototype.scrollToNode=function(e){e=e[0]||e;var t=e.offsetTop-15,n=e.offsetHeight+30,a=this.scrollable[0].scrollTop,i=this.scrollable[0].clientHeight;a>t?this.scrollTo(t):t+n-i>a&&this.scrollTo(t+n-i)},angular.module("myApp.directives",["myApp.filters"]).constant("shouldFocusOnInteraction",!Config.Navigator.mobile).directive("myHead",function(){return{restrict:"AE",templateUrl:templateUrl("head")}}).directive("myLangFooter",function(){return{restrict:"AE",templateUrl:templateUrl("lang_footer")}}).directive("myFooter",function(){return{restrict:"AE",templateUrl:templateUrl("footer")}}).directive("myDialog",function(){return{restrict:"AE",templateUrl:templateUrl("dialog")}}).directive("myMessage",["$filter","_",function(e,t){function n(e,t){var n,u,p=!1,m=!1,g=!1,h=!1,f=!1,_=!1,v=!1,y=function(){p!=(e.selectedMsgs[e.historyMessage.mid]||!1)&&(p=!p,t.toggleClass(s,p))},b=function(){m!=e.historyMessage.grouped&&(m&&t.removeClass(m),m=e.historyMessage.grouped,m&&t.addClass(m)),_!=(e.historyMessage.needDate||!1)&&(_=!_,_?n?n.show():(n=$(i),$(".im_message_date_split_text",n).text(a(e.historyMessage.date)),u?n.insertBefore(u):n.prependTo(t)):n.hide())};y(),b(),e.$on("messages_select",y),e.$on("messages_regroup",b),e.$on("messages_focus",function(n,a){a==e.historyMessage.mid!=g&&(g=!g,t.toggleClass(r,g))});var w;if(!e.historyMessage.pFlags.out&&(e.historyMessage.pFlags.unread||e.historyMessage.unreadAfter)){var k=function(){e.peerHistory.peerID==e.historyPeer.id&&v!=(e.historyUnreadAfter==e.historyMessage.mid)&&(v=!v,v?u?u.show():u=$(o).prependTo(t):(u.hide(),w&&w()))};k(),w=e.$on("messages_unread_after",k)}if(e.historyMessage.pFlags.unread&&e.historyMessage.pFlags.out){t.addClass(l);var C=e.$on("messages_read",function(){e.historyMessage.pFlags.unread||(t.removeClass(l),C(),w&&!v&&w())})}if(e.historyMessage.error||e.historyMessage.pending){var S=function(){f!=(e.historyMessage.pending||!1)&&(f=!f,t.toggleClass(d,f)),h!=(e.historyMessage.error||!1)&&(h=!h,t.toggleClass(c,h)),h||f||M()},M=e.$on("messages_pending",S);S()}}var a=e("myDate"),i='<div class="im_message_date_split im_service_message_wrap"><div class="im_service_message"><span class="copyonly"><br/>---&nbsp;</span><span class="im_message_date_split_text"></span><span class="copyonly">&nbsp;---</span></div></div>',o='<div class="im_message_unread_split">'+t("unread_messages_split")+"</div>",s="im_message_selected",r="im_message_focus",l="im_message_unread",c="im_message_error",d="im_message_pending";return{templateUrl:templateUrl("message"),link:n}}]).directive("myMessageBody",["$compile","AppPeersManager","AppChatsManager","AppUsersManager","AppMessagesManager","AppInlineBotsManager","RichTextProcessor",function(e,t,n,a,i,o,s){function r(e,i,o){if("string"!=typeof o.message||!o.message.length)return void $(".im_message_text",i).hide();var r=o.from_id&&a.getUser(o.from_id),l=r&&r.pFlags.bot&&r.username||!1,c=t.getPeerID(o.to_id),d=l||0>c&&!(n.isChannel(-c)&&!n.isMegagroup(-c))||c>0&&a.isBot(c),u={noCommands:!d,fromBot:l,entities:o.totalEntities};if(o.pFlags.mentioned){var p=a.getSelf();p&&(u.highlightUsername=p.username)}var m=s.wrapRichText(o.message,u);$(".im_message_text",i).html(m.valueOf())}function l(e,t,n){if(!n.media)return void $(".im_message_media",t).hide();var a=e.$new(!0);a.media=n.media,a.messageId=n.mid,u(a,function(e){$(".im_message_media",t).replaceWith(e)
})}function c(e,t,n){if(!n.reply_markup||"replyInlineMarkup"!=n.reply_markup._)return void $(".im_message_keyboard",t).hide();var a=e.$new(!0);a.markup=i.wrapReplyMarkup(n.reply_markup),a.messageId=n.mid,p(a,function(e){$(".im_message_keyboard",t).replaceWith(e)}),a.$on("reply_inline_button_press",function(e,t){switch(t._){case"keyboardButtonSwitchInline":o.switchInlineButtonClick(n.mid,t);break;case"keyboardButtonCallback":o.callbackButtonClick(n.mid,t)}})}function d(e,t){var n=e.message;n.dir=!0;var a=n.mid;if(r(e,t,n),l(e,t,n),c(e,t,n),n.pending)var i=e.$on("messages_pending",function(){n.mid!=a&&(r(e,t,n),i())});e.$on("message_edit",function(a,i){i.mid==n.mid&&(r(e,t,n),l(e,t,n),c(e,t,n),e.$emit("ui_height"))})}var u=e('<div class="im_message_media" my-message-media="media" message-id="messageId"></div>'),p=e('<div class="im_message_keyboard" my-inline-reply-markup="markup"></div>');return{link:d,scope:{message:"=myMessageBody"}}}]).directive("myMessageViews",["$filter","AppMessagesManager",function(e,t){function n(e,t){t.html(i(e))}function a(e,a,i){var o=e.$eval(i.myMessageViews),s=t.getMessage(o).views||0;n(s,a),e.$on("message_views",function(e,t){t.mid==o&&n(t.views,a)})}var i=e("formatShortNumber");return{link:a}}]).directive("myReplyMarkup",function(){function e(e,t){var n=$(".reply_markup",t),a=new Scroller(n,{classPrefix:"reply_markup",maxHeight:170});e.buttonClick=function(t){e.$emit("reply_button_press",t)},e.$on("ui_keyboard_update",function(t,n){onContentLoaded(function(){a.updateHeight(),a.scrollTo(0),e.$emit("ui_panel_update",{blur:n&&n.enabled})})}),onContentLoaded(function(){a.updateHeight(),e.$emit("ui_panel_update")})}return{templateUrl:templateUrl("reply_markup"),scope:{replyMarkup:"=myReplyMarkup"},link:e}}).directive("myMessageMedia",function(){return{scope:{media:"=myMessageMedia",messageId:"=messageId"},templateUrl:templateUrl("message_media")}}).directive("myMessagePhoto",["AppPhotosManager",function(e){return{scope:{media:"=myMessagePhoto",messageId:"=messageId"},templateUrl:templateUrl("message_attach_photo"),link:function(t){t.openPhoto=e.openPhoto,t.preloadPhoto=e.preloadPhoto}}}]).directive("myMessageDocument",["AppDocsManager",function(e){return{scope:{media:"=myMessageDocument",messageId:"=messageId"},templateUrl:templateUrl("message_attach_document"),link:function(t){e.updateDocDownloaded(t.media.document.id),t.docSave=function(){e.saveDocFile(t.media.document.id)},t.docOpen=function(){return t.media.document.withPreview?void e.openDoc(t.media.document.id,t.messageId):t.docSave()},t.videoOpen=function(){e.openVideo(t.media.document.id,t.messageId)}}}}]).directive("myMessageGeo",function(){return{scope:{media:"=myMessageGeo"},templateUrl:templateUrl("message_attach_geo")}}).directive("myMessageVenue",function(){return{scope:{media:"=myMessageVenue"},templateUrl:templateUrl("message_attach_venue")}}).directive("myMessageContact",function(){return{scope:{media:"=myMessageContact"},templateUrl:templateUrl("message_attach_contact")}}).directive("myMessageWebpage",["AppWebPagesManager","AppPhotosManager",function(e,t){return{scope:{media:"=myMessageWebpage",messageId:"=messageId"},templateUrl:templateUrl("message_attach_webpage"),link:function(n){n.openPhoto=t.openPhoto,n.openEmbed=function(t){return n.media.webpage&&n.media.webpage.embed_url?(e.openEmbed(n.media.webpage.id,n.messageId),cancelEvent(t)):void 0},n.$on("webpage_updated",function(e,t){n.media.webpage&&n.media.webpage.id==t.id&&n.$emit("ui_height")})}}}]).directive("myMessagePending",function(){return{scope:{media:"=myMessagePending"},templateUrl:templateUrl("message_attach_pending")}}).directive("myInlineReplyMarkup",function(){function e(e){e.buttonClick=function(t){e.$emit("reply_inline_button_press",t)}}return{templateUrl:templateUrl("reply_markup"),scope:{replyMarkup:"=myInlineReplyMarkup"},link:e}}).directive("myServiceMessage",function(){return{templateUrl:templateUrl("message_service")}}).directive("myShortMessage",function(){return{scope:{message:"=myShortMessage"},templateUrl:templateUrl("short_message")}}).directive("myReplyMessage",["AppMessagesManager","AppPeersManager","$rootScope",function(e,t,n){function a(e,t,n){n.watch?e.$watch("replyMessage",function(){i(e,t)}):i(e,t)}function i(t,n){var a=t.replyMessage;if(a.loading)var i=a.mid,s=t.$on("messages_downloaded",function(a,r){-1!=r.indexOf(i)&&(t.replyMessage=e.wrapForDialog(i),o(t,n),s())});else o(t,n)}function o(a,i){var o=a.replyMessage;return o&&!o.deleted&&o.to_id?(a.thumb=e.getMessageThumb(o,42,42),"A"==i[0].tagName&&i.on("click",function(){var a=e.getMessagePeer(o),i=t.getPeerString(a);n.$broadcast("history_focus",{peerString:i,messageID:o.mid})}),void onContentLoaded(function(){a.$emit("ui_height")})):void $(i).remove()}return{templateUrl:templateUrl("reply_message"),scope:{replyMessage:"=myReplyMessage"},link:a}}]).directive("myPinnedMessage",["AppMessagesManager","AppPeersManager","$rootScope",function(e,t,n){function a(t,n){var a=t.pinnedMessage;if(a.loading)var o=a.mid,s=t.$on("messages_downloaded",function(a,r){-1!=r.indexOf(o)&&(t.pinnedMessage=e.wrapForDialog(o),i(t,n),s())});else i(t,n)}function i(a,i){var o=a.pinnedMessage;return o&&!o.deleted&&o.to_id?("A"==i[0].tagName&&i.on("click",function(){var a=e.getMessagePeer(o),i=t.getPeerString(a);n.$broadcast("history_focus",{peerString:i,messageID:o.mid})}),void onContentLoaded(function(){a.$emit("ui_height")})):void $(i).remove()}return{templateUrl:templateUrl("pinned_message"),scope:{pinnedMessage:"=myPinnedMessage"},link:a}}]).directive("myForwardedMessages",["AppPhotosManager","AppMessagesManager","AppPeersManager","$rootScope",function(e,t){function n(e,t,n){n.watch?e.$watch("forwardMessages",function(){a(e,t)}):a(e,t)}function a(e){var n=e.forwardMessages,a=n.length,i=!1,o=1==a;e.thumb=!1,e.singleMessage=!1,angular.forEach(n,function(n){var a=t.getMessage(n);i===!1?i=a.fromID:i!==a.fromID&&(i=t.getMessagePeer(a)),o&&(e.thumb=t.getMessageThumb(a,42,42),e.singleMessage=t.wrapForDialog(n))}),e.fromID=i,e.count=a,onContentLoaded(function(){e.$emit("ui_height")})}return{templateUrl:templateUrl("forwarded_messages"),scope:{forwardMessages:"=myForwardedMessages"},link:n}}]).directive("myDialogs",["$modalStack","$transition","$window","$timeout",function(e,t,n,a){function i(t,i){function o(n){if(!u&&e.getTop())return!0;if(36==n.keyCode&&!n.shiftKey&&!n.ctrlKey&&n.altKey){var a=$(r).find(".im_dialog_wrap a");return a.length&&($(a[0]).trigger("mousedown"),r.scrollTop=0,$(s).nanoScroller({flash:!0})),cancelEvent(n)}if(27==n.keyCode||9==n.keyCode&&n.shiftKey&&!n.ctrlKey&&!n.metaKey)return u?l.value?$(d).trigger("click"):(t.$emit("esc_no_more"),setTimeout(function(){l.blur(),l.focus()},100)):(setFieldSelection(l),l.value&&l.select()),cancelEvent(n);if(u&&13==n.keyCode&&!Config.Navigator.mobile){var a=$(r).find(".im_dialog_selected")[0]||$(r).find(".im_dialog_wrap a")[0];return a&&$(a).trigger("mousedown"),cancelEvent(n)}if(n.altKey&&n.shiftKey&&!n.ctrlKey&&!n.metaKey&&n.keyCode>=49&&n.keyCode<=57){var i=n.keyCode-49,o=$(r).find(".im_dialog_wrap"),c=o[i];return c&&($(c).find("a").trigger("mousedown"),scrollToNode(r,c,s)),cancelEvent(n)}var p,m,g,h=Config.Modes.packed;if(40==n.keyCode||38==n.keyCode?(p=40==n.keyCode,m=!p,g=!n.shiftKey&&n.altKey):h&&9==n.keyCode&&n.ctrlKey&&!n.metaKey&&(p=!n.shiftKey,m=!p,g=!0),p||m){if(!g&&(!u||n.metaKey))return!0;var c,a=!g&&$(r).find(".im_dialog_selected")[0]||$(r).find(".active a.im_dialog")[0],f=a&&a.parentNode;if(f){var c=a[p?"nextSibling":"previousSibling"];if(!c||!c.className||-1==c.className.indexOf("im_dialog_wrap")){var o=$(r).find(".im_dialog_wrap"),_=o.index(a.parentNode),v=_+(p?1:-1);c=o[v]}}else{var o=$(r).find(".im_dialog_wrap");c=p?o[0]:o[o.length-1]}return g?c&&$(c).find("a").trigger("mousedown"):(f&&c&&$(f).find("a").removeClass("im_dialog_selected"),c&&$(c).find("a").addClass("im_dialog_selected")),c&&scrollToNode(r,c,s),cancelEvent(n)}}var s=$(".im_dialogs_wrap",i)[0],r=$(".im_dialogs_scrollable_wrap",i)[0],l=$(".im_dialogs_search_field",i)[0],c=$(".im_dialogs_panel",i)[0],d=$(".im_dialogs_search_clear",i)[0],u=!1;$(l).on("focus blur",function(e){u="focus"==e.type,u||($(r).find(".im_dialog_selected").removeClass("im_dialog_selected"),l.value||t.$emit("ui_dialogs_search_clear"))}),t.$on("dialogs_search_toggle",function(){$(c).addClass("im_dialogs_panel_search"),t.$broadcast("ui_dialogs_search"),$(n).scrollTop(0),a(function(){setFieldSelection(l)})}),t.$on("search_clear",function(){$(c).removeClass("im_dialogs_panel_search"),t.$broadcast("ui_dialogs_search")}),$(document).on("keydown",o),t.$on("$destroy",function(){$(document).off("keydown",o)}),t.$on("ui_dialogs_change",function(){onContentLoaded(function(){var e=$(r).find(".active a.im_dialog")[0];e&&scrollToNode(r,e.parentNode,s)})})}return{link:i}}]).directive("myDialogsList",["$window","$timeout",function(e,t){function n(n,a,i){function o(){if(u&&u.offsetHeight||(u=$(d)[0]),i.modal){var t=$(e).height()-(u?u.offsetHeight:49)-(Config.Mobile?46:100);return t=Math.min(Config.Mobile?350:450,t),$(a).css({height:t}),void g()}c&&c.offsetHeight||(c=$(".tg_page_head")[0]),p&&p.offsetHeight||(p=$(".footer_wrap")[0]),r&&r.offsetHeight||(r=$(".im_dialogs_col_wrap")[0]);var n=p?p.offsetHeight:0;n&&n++,$(a).css({height:$(e).height()-n-(c?c.offsetHeight:48)-(u?u.offsetHeight:58)-parseInt($(r).css("paddingBottom")||0)}),g()}var s=$(".im_dialogs_wrap",a)[0],r=$(".im_dialogs_col_wrap")[0],l=$(".im_dialogs_scrollable_wrap",a)[0],c=$(".tg_page_head")[0],d=Config.Mobile&&i.modal?".mobile_modal_body .im_dialogs_panel":".im_dialogs_panel",u=$(d)[0],p=$(".footer_wrap")[0],m=!1;onContentLoaded(function(){$(s).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0})});var g=function(){onContentLoaded(function(){$(s).nanoScroller()})};n.$on("ui_dialogs_prepend",g),n.$on("ui_dialogs_search",o),n.$on("ui_dialogs_update",o),n.$on("ui_dialogs_append",function(){onContentLoaded(function(){g(),m=!1,t(function(){$(l).trigger("scroll")})})}),n.$on("ui_dialogs_change",function(){onContentLoaded(function(){g(),m=!1,t(function(){$(l).trigger("scroll")})})}),$(l).on("scroll",function(){a.is(":visible")&&!m&&l.scrollTop>=l.scrollHeight-l.clientHeight-300&&(n.$emit("dialogs_need_more"),m=!0)}),$(e).on("resize",o),o(),setTimeout(o,1e3)}return{link:n}}]).directive("myContactsList",["$window","$timeout",function(e){function t(t,n){function a(){$(n).css({height:$(e).height()-(o&&o.offsetHeight||0)-(i&&i.offsetHeight||0)-(Config.Mobile?64:200)}),$(s).nanoScroller()}var i=$(".contacts_modal_search")[0],o=$(".contacts_modal_panel")[0],s=$(".contacts_wrap",n)[0];onContentLoaded(function(){$(s).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0}),a()}),$(e).on("resize",a),t.$on("contacts_change",function(){onContentLoaded(a)})}return{link:t}}]).directive("myCountriesList",["$window","$timeout",function(e){function t(t,n){function a(){$(n).css({height:$(e).height()-(o&&o.offsetHeight||0)-(i&&i.offsetHeight||0)-(Config.Mobile?64:200)}),$(s).nanoScroller()}var i=$(".countries_modal_search")[0],o=$(".countries_modal_panel")[0],s=$(".countries_wrap",n)[0];onContentLoaded(function(){$(s).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0}),a()}),$(e).on("resize",a),t.$on("contacts_change",function(){onContentLoaded(a)})}return{link:t}}]).directive("mySessionsList",["$window","$timeout",function(e){function t(t,n){function a(){$(n).css({height:Math.min(760,$(e).height()-(Config.Mobile?64:200))}),$(i).nanoScroller()}var i=$(".sessions_wrap",n)[0];onContentLoaded(function(){$(i).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0}),a()}),$(e).on("resize",a)}return{link:t}}]).directive("myStickersList",["$window","$timeout",function(e){function t(t,n){function a(){$(n).css({height:Math.min(600,$(e).height()-(Config.Mobile?64:200))}),$(i).nanoScroller()}var i=$(".stickerset_wrap",n)[0];onContentLoaded(function(){$(i).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0}),a()}),$(e).on("resize",a)}return{link:t}}]).directive("myHistory",["$window","$timeout","$rootScope","$transition",function(e,t,n,a){function i(i,o){function s(e,n){var a,i,o=!1;if(!e&&(i=$(".im_message_focus:visible",u)[0])){var s=u.clientHeight,r=u.scrollTop,l=i.offsetTop,c=i.clientHeight;(!r||l>r+s||r>l+c||n)&&(o=Math.max(0,l-Math.floor(s/2)+26)),I=!1}else(a=$(".im_message_unread_split:visible",u)[0])?(o=Math.max(0,a.offsetTop-52),I=!1):(o=u.scrollHeight,I=!0);if(o!==!1){var d=function(){k(),t(function(){$(u).trigger("scroll"),A=u.scrollTop})};n?$(u).animate({scrollTop:o},200,d):(u.scrollTop=o,d())}}function r(t){if(o.is(":visible")||$(o[0].parentNode.parentNode).is(":visible")){$(h).is(":visible")&&$(h).css({height:$(v).height()}),f&&f.offsetHeight||(f=$(".tg_page_head")[0]),_&&_.offsetHeight||(_=$(".footer_wrap")[0]);var n=_?_.offsetHeight:0;n&&n++;var a=$(e).height()-g.offsetHeight-(f?f.offsetHeight:48)-n;$(c).css({height:a}),l(),t!==!0&&(I&&onContentLoaded(function(){u.scrollTop=u.scrollHeight,k()}),k(100))}}function l(){$(d).css({marginTop:0});var e=u.offsetHeight-d.offsetHeight-m.offsetHeight-(Config.Mobile?0:39);d.offsetHeight>0&&e>0&&$(d).css({marginTop:e}),$(c).nanoScroller()}var c=$(".im_history_wrap",o)[0],d=$(".im_history_messages",o)[0],u=($(".im_history",o)[0],$(".im_history_scrollable_wrap",o)[0]),p=$(".im_history_scrollable",o)[0],m=$(".im_history_empty_wrap",o)[0],g=$(".im_bottom_panel_wrap",o)[0],h=$(".im_send_form_wrap",o)[0],f=$(".tg_page_head")[0],_=$(".footer_wrap")[0],v=$(".im_send_form",o)[0],y=!1,b=!1;onContentLoaded(function(){u.scrollTop=u.scrollHeight}),$(c).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0});var w,k=function(e){t(function(){$(u).hasClass("im_history_to_bottom")||$(c).nanoScroller()},e||0)},C=!1,S=["transform","webkitTransform","MozTransform","msTransform","OTransform"];for(w=0;w<S.length;w++)if(S[w]in d.style){C=S[w];break}var M=!1,x=!1;i.$on("ui_history_append_new",function(e,t){if(!I&&!t.my)return void onContentLoaded(function(){$(c).nanoScroller()});if(t.idleScroll)return void onContentLoaded(function(){$(c).nanoScroller(),s(!0)});var i,o=M&&!n.idle.isIDLE&&d.clientHeight>0;if(o)i=u.scrollHeight;else{var r=parseInt($(u).css("paddingRight"));$(p).css({bottom:0,paddingRight:r}),$(u).addClass("im_history_to_bottom")}onContentLoaded(function(){if(o){x=!0,$(d).removeClass("im_history_appending"),u.scrollTop=u.scrollHeight,$(d).css(C,"translate(0px, "+(u.scrollHeight-i)+"px)"),$(c).nanoScroller();var e={};e[C]="translate(0px, 0px)",$(d).addClass("im_history_appending"),a($(d),e).then(function(){x=!1,$(d).removeClass("im_history_appending"),l()})}else $(u).removeClass("im_history_to_bottom"),$(p).css({bottom:"",paddingRight:0}),u.scrollTop=u.scrollHeight,l()})}),i.$on("ui_history_change",function(){var e=parseInt($(u).css("paddingRight"));$(u).addClass("im_history_to_bottom"),u.scrollHeight,$(p).css({bottom:0,paddingRight:e}),onContentLoaded(function(){$(u).removeClass("im_history_to_bottom"),$(p).css({bottom:"",paddingRight:""}),r(!0),y=!1,b=!1,s()})}),i.$on("ui_history_change_scroll",function(e,t){onContentLoaded(function(){s(!1,t)})}),i.$on("ui_history_focus",function(){I||(u.scrollTop=u.scrollHeight,k(),I=!0)}),i.$on("ui_history_prepend",function(){var e=u.scrollHeight,n=u.scrollTop,a=parseInt($(u).css("paddingRight")),o=u.clientHeight;$(u).addClass("im_history_to_bottom"),u.scrollHeight,$(p).css({bottom:-(e-n-o),paddingRight:a});var r=function(){$(u).removeClass("im_history_to_bottom"),$(p).css({bottom:"",paddingRight:""}),A>=0?s():u.scrollTop=n+u.scrollHeight-e,l(),y=!1,t(function(){u.scrollHeight!=e&&$(u).trigger("scroll")}),clearTimeout(c),d()},c=setTimeout(r,0),d=i.$on("$viewContentLoaded",r)}),i.$on("ui_history_append",function(){var e=u.scrollHeight;onContentLoaded(function(){I=!1,l(),b=!1,A>=0&&s(),t(function(){u.scrollHeight!=e&&$(u).trigger("scroll")})})}),i.$on("ui_panel_update",function(e,n){r(),onContentLoaded(function(){r(),n&&n.blur?i.$broadcast("ui_message_blur"):getSelectedText()||i.$broadcast("ui_message_send"),t(function(){$(u).trigger("scroll")})})}),i.$on("ui_selection_clear",function(){window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty()}),i.$on("ui_editor_resize",r),i.$on("ui_height",function(){onContentLoaded(r)});var I=!0,A=-1;$(u).on("scroll",function(){if(o.is(":visible")&&!$(u).hasClass("im_history_to_bottom")&&!x){var e=u.scrollTop;I=e>=u.scrollHeight-u.clientHeight,A>=0&&A!=e&&(A=-1),!y&&300>=e?(y=!0,i.$emit("history_need_more")):!b&&e>=u.scrollHeight-u.clientHeight-300&&(b=!0,i.$emit("history_need_less"))}}),$(e).on("resize",r),r(),onContentLoaded(r)}return{link:i}}]).directive("mySendForm",["_","$q","$timeout","$compile","$modalStack","$http","$interpolate","Storage","AppStickersManager","AppDocsManager","ErrorService","AppInlineBotsManager","FileManager","shouldFocusOnInteraction",function(e,t,n,a,i,o,s,r,l,c,d,u,p,m){function g(o,s){function g(){r.get("send_ctrlenter").then(function(e){L=!e})}function h(e){return n(function(){_(),o.draftMessage.send(),O.resetTyping(),U&&U.update()},m?0:100),cancelEvent(e)}function f(e){o.$apply(function(){o.draftMessage.inlineResultID=e})}function _(){B&&(O.onChange(),v())}function v(){var e=B.offsetHeight;j!=e&&(j=e,o.$emit("ui_editor_resize"))}function y(e){return 9!=e.keyCode||e.shiftKey||e.ctrlKey||e.metaKey||i.getTop()?void 0:(O.focus(),cancelEvent(e))}function b(){onContentLoaded(function(){O.focus()})}function w(e){var n=e.type||"",a=t.when(!1);["image/jpeg","image/gif","image/png","image/bmp"].indexOf(n)>=0&&(a=p.getFileCorrectUrl(e,n)),a.then(function(t){t=t||!1,d.confirm({type:"FILE_CLIPBOARD_PASTE",fileUrl:t}).then(function(){o.draftMessage.files=[e],o.draftMessage.isMedia=!0})})}function k(e){var t,n,a=(e.originalEvent||e).clipboardData,i=a&&a.items||[],s=[];for(n=0;n<i.length;n++)"file"==i[n].kind&&(t=i[n].getAsFile(),s.push(t));if(s.length>0){if(1==s.length)return w(s[0]);d.confirm({type:"FILES_CLIPBOARD_PASTE",files:s}).then(function(){o.draftMessage.files=s,o.draftMessage.isMedia=!0})}}function C(e){var t=!1;return S&&1!=S||(S=checkDragEvent(e)?2:1,t=!0),2==S&&(M&&setTimeout(function(){clearTimeout(M),M=!1},0),"dragenter"==e.type||"dragover"==e.type?t&&(Config.Mobile||$(I).hide(),$(T).css({height:D.offsetHeight+2,width:D.offsetWidth}).show()):("drop"==e.type&&o.$apply(function(){o.draftMessage.files=Array.prototype.slice.call(e.originalEvent.dataTransfer.files),o.draftMessage.isMedia=!0}),M=setTimeout(function(){$(T).hide(),Config.Mobile||$(I).show(),S=!1,M=!1},300))),cancelEvent(e)}var S,M,x=$("textarea",s)[0],I=$(".composer_emoji_insert_btn",s)[0],A=$(".composer_emoji_panel",s)[0],E=$("input",s),T=$(".im_send_dropbox_wrap",s)[0],D=$(".im_send_field_wrap",s)[0],P=$(".im_submit",s)[0],F=a('<a class="composer_sticker_btn" data-sticker="{{::document.id}}" my-load-sticker document="document" thumb="true" img-class="composer_sticker_image"></a>'),R={},N=new EmojiTooltip(I,{getStickers:function(e){l.getStickers().then(e)},getStickerImage:function(e,t){var n=e.attr("data-category"),a=R[t];if(a&&!isInDOM(a[0]))return a.attr("data-category",n),void e.replaceWith(a);var i=o.$new(!0);i.document=c.getDoc(t),F(i,function(a){R[t]=a,a.attr("data-category",n),e.replaceWith(a)})},onStickersetSelected:function(e){l.openStickersetLink(e)},onEmojiSelected:function(e){o.$apply(function(){O.onEmojiSelected(e)})},onStickerSelected:function(e){o.$apply(function(){o.draftMessage.sticker=e})},langpack:{im_emoji_tab:e("im_emoji_tab"),im_stickers_tab:e("im_stickers_tab")}});o.$on("stickers_changed",function(){N.onStickersChanged()});var U;A&&(U=new EmojiPanel(A,{onEmojiSelected:function(e){O.onEmojiSelected(e)}}));var O=new MessageComposer(x,{onTyping:function(){o.$emit("ui_typing")},getSendOnEnter:function(){return L},dropdownDirective:function(e,t){{var n=o.$new(!0);a("<div><div my-composer-dropdown></div></div>")(n,function(n,a){e.replaceWith(n),t(a,n)})}},mentions:o.mentions,commands:o.commands,onMessageSubmit:h,onInlineResultSend:f,onFilePaste:w,onCommandSend:function(e){o.$apply(function(){o.draftMessage.command=e})}}),B=O.richTextareaEl&&O.richTextareaEl[0];B&&$(B).on("keydown keyup",v),o.$on("inline_results",function(e,t){var n=Config.Mobile?$(window).width():(D.offsetWidth||382)-2,a=80;t&&u.regroupWrappedResults(t.results,n,a),setZeroTimeout(function(){O.setInlineSuggestions(t)})}),o.$on("inline_placeholder",function(e,t){O.setInlinePlaceholder(t.prefix,t.placeholder)}),E.on("change",function(){var e=this;o.$apply(function(){o.draftMessage.files=Array.prototype.slice.call(e.files),o.draftMessage.isMedia=$(e).hasClass("im_media_attach_input")||Config.Mobile,setTimeout(function(){try{e.value=""}catch(t){}},1e3)})});var L=!0;o.$on("settings_changed",g),g(),$(P).on("mousedown touchstart",h);var j=B&&B.offsetHeight;$(document).on("keydown",y),$("body").on("dragenter dragleave dragover drop",C),$(document).on("paste",k),m&&(o.$on("ui_peer_change",b),o.$on("ui_history_focus",b),o.$on("ui_history_change",b)),o.$on("ui_peer_change",O.resetTyping.bind(O)),o.$on("ui_peer_draft",function(t,n){n=n||{};var a=o.draftMessage.isBroadcast;O.setPlaceholder(e(a?"im_broadcast_field_placeholder_raw":"im_message_field_placeholder_raw")),n.customSelection?(O.setFocusedValue(n.customSelection),v()):(B&&(O.setValue(o.draftMessage.text||""),v()),(m||n&&n.focus)&&O.focus()),onContentLoaded(function(){O.checkAutocomplete(!0)}),N&&Config.Mobile&&N.hide()}),o.$on("ui_peer_reply",function(){onContentLoaded(function(){o.$emit("ui_editor_resize"),m&&O.focus()})}),o.$on("mentions_update",function(){O.onMentionsUpdated()}),o.$on("ui_message_before_send",function(){_()}),o.$on("ui_message_send",function(){m&&b()}),o.$on("ui_message_blur",function(){O.blur()}),o.$on("$destroy",function(){$(document).off("paste",k),$(document).off("keydown",y),$("body").off("dragenter dragleave dragover drop",C),$(P).off("mousedown touchstart"),E.off("change")}),m&&b()}return{link:g,scope:{draftMessage:"=",mentions:"=",commands:"="}}}]).directive("myLoadThumb",["MtpApiFileManager","FileManager",function(e,t){function n(n,a,i){var o=0,s=e.getCachedFile(n.thumb&&n.thumb.location&&!n.thumb.location.empty&&n.thumb.location);s&&a.attr("src",t.getUrl(s,"image/jpeg")),n.thumb&&n.thumb.width&&n.thumb.height&&(a.attr("width",n.thumb.width),a.attr("height",n.thumb.height));var r=n.$watchCollection("thumb.location",function(i){n.thumb&&n.thumb.width&&n.thumb.height&&(a.attr("width",n.thumb.width),a.attr("height",n.thumb.height),n.$emit("ui_height"));var s=++o;if(!i||i.empty)return a.attr("src",n.thumb&&n.thumb.placeholder||"img/blank.gif"),void l();var r=e.getCachedFile(i);return r?(a.attr("src",t.getUrl(r,"image/jpeg")),void l()):(a.attr("src")||a.attr("src",n.thumb.placeholder||"img/blank.gif"),void e.downloadSmallFile(n.thumb.location).then(function(e){s==o&&(a.attr("src",t.getUrl(e,"image/jpeg")),l())},function(e){console.log("Download image failed",e,n.thumb.location,a[0]),s==o&&(a.attr("src",n.thumb.placeholder||"img/blank.gif"),l())}))}),l=i.watch?angular.noop:function(){setTimeout(function(){n.$destroy(),r()},0)}}return{link:n,scope:{thumb:"="}}}]).directive("myLoadFullPhoto",["MtpApiFileManager","FileManager","_",function(e,t,n){function a(a,i){var o=$("img",i)[0],s=$(".img_fullsize_with_progress_wrap",i).add(".img_fullsize_progress_wrap",i).add($(o)),r=function(){s.css({width:a.fullPhoto.width,height:a.fullPhoto.height}),a.$emit("ui_height",!0)},l=0;a.$watchCollection("fullPhoto.location",function(){var i=e.getCachedFile(a.thumbLocation),s=++l;if(i?(o.src=t.getUrl(i,"image/jpeg"),r()):o.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",a.fullPhoto.location){var c;if(a.fullPhoto.size){var d={_:"inputFileLocation",volume_id:a.fullPhoto.location.volume_id,local_id:a.fullPhoto.location.local_id,secret:a.fullPhoto.location.secret};c=e.downloadFile(a.fullPhoto.location.dc_id,d,a.fullPhoto.size)}else c=e.downloadSmallFile(a.fullPhoto.location);a.progress={enabled:!0,percent:0},c.then(function(e){s==l&&(a.progress.enabled=!1,o.src=t.getUrl(e,"image/jpeg"),r())},function(e){console.log("Download image failed",e,a.fullPhoto.location),a.progress.enabled=!1,a.error=e&&"FS_BROWSER_UNSUPPORTED"==e.type?{html:n("error_browser_no_local_file_system_image_md",{"moz-link":'<a href="{0}" target="_blank">{1}</a>',"chrome-link":'<a href="{0}" target="_blank">{1}</a>',"telegram-link":'<a href="{0}" target="_blank">{1}</a>'})}:{text:n("error_image_download_failed"),error:e}},function(e){a.progress.percent=Math.max(1,Math.floor(100*e.done/e.total))})}}),r()}return{link:a,transclude:!0,templateUrl:templateUrl("full_photo"),scope:{fullPhoto:"=",thumbLocation:"="}}}]).directive("myLoadVideo",["$sce","AppDocsManager","ErrorService","_",function(e,t,n,a){function i(e,i){var o=t.downloadDoc(e.video.id);o.then(function(){e.$emit("ui_height"),onContentLoaded(function(){var e=$("video",i)[0];if(e){var t=!1,a=function(e){t||e.target&&e.target.error&&e.target.error.code!=e.target.error.MEDIA_ERR_DECODE&&e.target.error.code!=e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED||(t=!0,n.show({error:{type:"MEDIA_TYPE_NOT_SUPPORTED",originalError:e.target&&e.target.error}}))};e.addEventListener("error",a,!0),$(e).on("$destroy",function(){t=!0,e.removeEventListener("error",a)})}})},function(t){console.log("Download video failed",t,e.video),e.error=t&&"FS_BROWSER_UNSUPPORTED"==t.type?{html:a("error_browser_no_local_file_system_video_md",{"moz-link":'<a href="{0}" target="_blank">{1}</a>',"chrome-link":'<a href="{0}" target="_blank">{1}</a>',"telegram-link":'<a href="{0}" target="_blank">{1}</a>'})}:{text:a("error_video_download_failed"),error:t}}),e.$emit("ui_height"),e.$on("$destroy",function(){o.cancel()})}return{link:i,transclude:!0,templateUrl:templateUrl("full_video"),scope:{video:"="}}}]).directive("myLoadGif",["AppDocsManager","$timeout",function(e,t){function n(n,a){var i=$(".img_gif_image_wrap",a);i.css({width:n.document.thumb.width,height:n.document.thumb.height});var o=!1;n.isActive=!1,n.toggle=function(i){return i&&checkClick(i,!0)?(e.saveDocFile(n.document.id),!1):n.document.url?void onContentLoaded(function(){n.isActive=!n.isActive,n.$emit("ui_height");var e=$("video",a)[0];e&&(n.isActive?e.play():(e.pause(),e.currentTime=0))}):o?(o.cancel(),void(o=!1)):(o=e.downloadDoc(n.document.id),void o.then(function(){t(function(){n.isActive=!0},200)}))}}return{link:n,templateUrl:templateUrl("full_gif"),scope:{document:"="}}}]).directive("myLoadSticker",["_","MtpApiFileManager","FileManager","AppStickersManager",function(e,t,n,a){function i(i,s,r){var l=$("<img />").addClass(r.imgClass),c=!1;l.attr("alt","["+(i.document.stickerEmojiRaw||"")+" "+e("conversation_media_sticker")+"]");var d=r.dim&&i.$parent.$eval(r.dim)||i.document.thumb;r.open&&i.document.stickerSetInput&&s.addClass("clickable").on("click",function(){a.openStickerset(i.document.stickerSetInput)});var u=function(e){l.attr("src",n.getUrl(e)),c||(c=!0,l.appendTo(s))};l.css({width:d.width,height:d.height}),s.css({width:d.width,height:d.height});var p=!1;i.document.thumb.location&&(p=angular.copy(i.document.thumb.location),p.sticker=!0);var m={_:"inputDocumentFileLocation",id:i.document.id,access_hash:i.document.access_hash,dc_id:i.document.dc_id,file_name:i.document.file_name,sticker:!0},g=t.getCachedFile(m),h=!1;if(g?h=!0:g=t.getCachedFile(p),g){if(u(g),h)return}else c=!0,l.attr("src",o).appendTo(s);r.thumb&&p?t.downloadSmallFile(p).then(function(e){u(e)},function(e){console.log("Download sticker failed",e,m)}):t.downloadFile(i.document.dc_id,m,i.document.size).then(function(e){u(e)},function(e){console.log("Download sticker failed",e,m)})}var o="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";return{link:i,scope:{document:"="}}}]).directive("myLoadDocument",["MtpApiFileManager","AppDocsManager","FileManager",function(e,t,n){function a(e,t){for(;e&&!$(e).hasClass("modal-dialog");)e=e.parentNode;e&&$(e).width(t+(Config.Mobile?0:32))}function i(i,o){var s=$(".document_fullsize_with_progress_wrap",o),r=$(".document_fullsize_wrap",o),l=$(".document_fullsize_img",o),c=$(window).width()-(Config.Mobile?20:32),d=$(window).height()-150;c>800&&(c-=208),i.imageWidth=c,i.imageHeight=d;var u=i.document.thumb;if(u&&"photoSizeEmpty"!=u._){var p=calcImageInBox(u.width,u.height,c,d);i.imageWidth=p.w,i.imageHeight=p.h;var m=e.getCachedFile(u.location);m&&(i.thumbSrc=n.getUrl(m,"image/jpeg"))}i.frameWidth=Math.max(i.imageWidth,Math.min(600,c)),i.frameHeight=i.imageHeight,onContentLoaded(function(){i.$emit("ui_height")}),a(o[0],i.frameWidth);var g,h,f;t.downloadDoc(i.document.id).then(function(e){var t=n.getUrl(e,i.document.mime_type),a=new Image,o=100,u=function(){if(a.height&&a.width||!--o){h=a.width,f=a.height,clearInterval(g);var e=calcImageInBox(a.width,a.height,c,d,!0),n={w:h,h:f};e.w>=n.w&&e.h>=n.h&&(n.w*=4,n.h*=4);var u=!0;i.toggleZoom=function(){u=!u;var t=(u?n:e).w,a=(u?n:e).h;l.css({width:t,height:a,marginTop:i.frameHeight>a?Math.floor((i.frameHeight-a)/2):0}),r.toggleClass("document_fullsize_zoomed",u)},i.toggleZoom(!1),l.attr("src",t),s.hide(),r.css({width:i.frameWidth,height:i.frameHeight}).show()}};g=setInterval(u,20),a.onload=u,a.src=t,setZeroTimeout(u)})}return{link:i,templateUrl:templateUrl("full_document"),scope:{document:"=myLoadDocument"}}}]).directive("myGeoPointMap",["ExternalResourcesManager",function(e){function t(t,n){var a=n.attr("width")||200,i=n.attr("height")||200,o=Config.ExtCredentials.gmaps.api_key,s=a>200?15:13;n.attr("src","img/blank.gif");var r="https://maps.googleapis.com/maps/api/staticmap?sensor=false&center="+t.point.lat+","+t.point["long"]+"&zoom="+s+"&size="+a+"x"+i+"&scale=2&key="+o;e.downloadByURL(r).then(function(e){n.attr("src",e.valueOf())})}return{link:t,scope:{point:"=myGeoPointMap"}}}]).directive("myLoadingDots",["$interval",function(){function e(e,n){n.html(t(n[0])?'<div class="loading_dots"><i></i><i></i><i></i></div>':"...")}function t(e){if(void 0===n&&(n=void 0!==e.style.animationName,n===!1)){var t,a="Webkit Moz O ms Khtml".split(" ");for(t=0;t<a.length;t++)if(void 0!==e.style[a[t]+"AnimationName"]){n=!0;break}}return n}return{link:e};var n}]).directive("myFocused",["shouldFocusOnInteraction",function(e){return{link:function(t,n){return e?void setTimeout(function(){setFieldSelection(n[0])},100):!1}}}]).directive("myFocusOn",["shouldFocusOnInteraction",function(e){return{link:function(t,n,a){t.$on(a.myFocusOn,function(){return e?void onContentLoaded(function(){setFieldSelection(n[0])}):!1})}}}]).directive("myFileUpload",function(){function e(e,t){t.on("change",function(){var t=this;e.$apply(function(){e.photo.file=t.files[0],setTimeout(function(){try{t.value=""}catch(e){}},1e3)})})}return{link:e}}).directive("myModalWidth",function(){function e(e,t,n){n.$observe("myModalWidth",function(e){$(t[0].parentNode.parentNode).css({width:parseInt(e)+(Config.Mobile?0:32)})})}return{link:e}}).directive("myModalNav",function(){function e(e,t,n){var a=function(t){var a=t.target;if(!a||"INPUT"!=a.tagName&&"TEXTAREA"!=a.tagName)switch(t.keyCode){case 39:case 32:case 34:case 40:e.$eval(n.next);break;case 37:case 33:case 38:e.$eval(n.prev)}};$(document).on("keydown",a),e.$on("$destroy",function(){$(document).off("keydown",a)})}return{link:e}}).directive("myCustomBackground",function(){function e(e,t,n){$("html").css({background:n.myCustomBackground}),e.$on("$destroy",function(){$("html").css({background:""})})}return{link:e}}).directive("myInfiniteScroller",function(){function e(e,t){var n=$(".nano-content",t)[0],a=!1;$(n).on("scroll",function(){t.is(":visible")&&!a&&n.scrollTop>=n.scrollHeight-n.clientHeight-300&&(a=!0,e.$apply(function(){e.slice.limit+=e.slice.limitDelta||20}),onContentLoaded(function(){a=!1,$(t).nanoScroller()}))})}return{link:e,scope:!0}
}).directive("myModalPosition",["$window","$timeout",function(e,t){function n(n,a,i){var o=function(){if(!Config.Mobile||!$(a[0].parentNode.parentNode.parentNode).hasClass("mobile_modal")){var e=a[0].parentNode.offsetHeight,n=a[0].parentNode.parentNode.parentNode,o=$(".media_modal_bottom_panel_wrap",n)[0],s=n.offsetHeight-(o&&o.offsetHeight||0);s>e?$(a[0].parentNode).css("marginTop",(s-e)/2):$(a[0].parentNode).css("marginTop",""),"no"!=i.animation&&t(function(){$(a[0].parentNode).addClass("modal-content-animated")},300)}};onContentLoaded(o),$(e).on("resize",o),n.$on("ui_height",function(e,t){t?o():onContentLoaded(o)})}return{link:n}}]).directive("myVerticalPosition",["$window","$timeout",function(e){function t(t,n,a){var i="true"===a.padding,o=0,s=function(){var s=n[0].offsetHeight,r=s-(s&&i?2*o:0),l=a.myVerticalPosition&&parseFloat(a.myVerticalPosition)||.5,c=a.contHeight?t.$eval(a.contHeight):$(e).height(),d=c>r?parseInt((c-r)*l):"",u=i?{paddingTop:d,paddingBottom:d}:{marginTop:d,marginBottom:d};n.css(u),n.addClass("vertical-aligned"),o!==d&&t.$emit("ui_height"),o=d};$(e).on("resize",s),onContentLoaded(s),t.$on("ui_height",function(){onContentLoaded(s)})}return{link:t}}]).directive("myUserStatus",["$filter","$rootScope","AppUsersManager",function(e,t,n){function a(){angular.forEach(r,function(e){e()})}function i(e,t,a){var i,l=s++,c=function(){var e=n.getUser(i);t.html(o(e,a.botChatPrivacy)).toggleClass("status_online",e.status&&"userStatusOnline"==e.status._||!1)};e.$watch(a.myUserStatus,function(e){i=e,c()}),e.$on("user_update",function(e,t){i==t&&c()}),r[l]=c,e.$on("$destroy",function(){delete r[l]})}var o=e("userStatus"),s=0,r={};return setInterval(a,9e4),t.$on("stateSynchronized",function(){setTimeout(function(){a()},100)}),{link:i}}]).directive("myChatStatus",["$rootScope","_","MtpApiManager","AppChatsManager","AppUsersManager","AppProfileManager",function(e,t,n,a,i,o){function s(){angular.forEach(c,function(e){e()})}function r(n,s,r){var m,g=l++,h=0,f=0,_={},v=function(){var e=++h;return f=0,_={},m?void o.getChatFull(m).then(function(t){if(e==h){var n=(t.participants||{}).participants||[];f=n.length,angular.forEach(n,function(e){_[e.user_id]=!0}),t.participants_count&&(f=t.participants_count||0),y()}}):void y()},y=function(){var e=d(f),n=0;if(!a.isChannel(m)){var o=!1;angular.forEach(_,function(e,t){var a=i.getUser(t);a.status&&"userStatusOnline"==a.status._&&(a.id==p&&(o=!0),n++)}),(n>1||1==n&&!o)&&(e=t("group_modal_participants",{total:e,online:u(n)}))}n||f||(e=""),s.html(e)};n.$watch(r.myChatStatus,function(e){m=e,v()}),e.$on("chat_full_update",function(e,t){m==t&&v()}),e.$on("user_update",function(e,t){_[t]&&y()}),c[g]=y,n.$on("$destroy",function(){delete c[g]})}var l=0,c={},d=t.pluralize("group_modal_pluralize_participants"),u=t.pluralize("group_modal_pluralize_online_participants"),p=0;return n.getUserID().then(function(e){p=e}),setInterval(s,9e4),{link:r}}]).directive("myPeerMuted",["$rootScope","NotificationsManager",function(e,t){function n(t,n,i){var o=t.$eval(i.myPeerMuted),s=i.mutedClass||"muted",r=e.$on("notify_settings",function(e,t){t.peerID==o&&a(o,n,s)});a(o,n,s),t.$on("$destroy",r)}function a(e,n,a){t.getPeerMuted(e).then(function(e){n.toggleClass(a,e)})}return{link:n}}]).directive("myPeerLink",["AppChatsManager","AppUsersManager",function(e,t){function n(n,a,i){var o,s=i.userOverride&&n.$eval(i.userOverride)||{},r=i.short&&n.$eval(i.short),l=i.username&&n.$eval(i.username),c=function(){if(-1!=a[0].className.indexOf("user_color_")&&(a[0].className=a[0].className.replace(/user_color_\d+/g,"")),o>0){var c=t.getUser(o),d=l?"@":"",u=l?"username":r?"rFirstName":"rFullName";a.html(d+(s[u]||c[u]||"").valueOf()+(i.verified&&c.pFlags&&c.pFlags.verified?' <i class="icon-verified"></i>':"")),i.color&&n.$eval(i.color)&&a.addClass("user_color_"+c.num)}else{var p=e.getChat(-o);a.html((p.rTitle||"").valueOf()+(i.verified&&p.pFlags&&p.pFlags.verified?' <i class="icon-verified"></i>':""))}};"A"!=a[0].tagName||hasOnlick(a[0])||a.on("click",function(){o>0?t.openUser(o,s):e.openChat(-o)}),i.peerWatch?n.$watch(i.myPeerLink,function(e){o=e,c()}):(o=n.$eval(i.myPeerLink),c()),i.noWatch||(n.$on("user_update",function(e,t){o==t&&c()}),n.$on("chat_update",function(e,t){o==-t&&c()}))}return{link:n}}]).directive("myPeerPhotolink",["AppPeersManager","AppUsersManager","AppChatsManager","MtpApiFileManager","FileManager",function(e,t,n,a,i){function o(o,s,r){s.addClass("peer_photo_init");var l,c,d,u=$('<img class="'+(r.imgClass||"")+'">'),p=$('<span class="peer_initials nocopy '+(r.imgClass||"")+'"></span>'),m=0,g=!1,h=function(t){if(l==t)return!1;l=t,c=e.getPeer(l);var n="user_bgcolor_"+(c.num||1);return n!=g&&(g&&p.removeClass(g),p.addClass(n),g=n),f(),!0},f=function(){var e=++m;d=c.photo&&angular.copy(c.photo.photo_small);var t=void 0!==d;if(t){var n=a.getCachedFile(c.photo.photo_small);if(n)return p.remove(),void u.prependTo(s).attr("src",i.getUrl(n,"image/jpeg"))}p.attr("data-content",c.initials||"").prependTo(s),u.remove(),t&&a.downloadSmallFile(c.photo.photo_small).then(function(t){e==m&&(p.remove(),u.prependTo(s).attr("src",i.getUrl(t,"image/jpeg")))},function(e){console.log("Download image failed",e,c.photo.photo_small,s[0])})};"A"!=s[0].tagName||r.noOpen||s.on("click",function(){l>0?t.openUser(l,r.userOverride&&o.$eval(r.userOverride)):n.openChat(-l)}),o.$watch(r.myPeerPhotolink,h),h(o.$eval(r.myPeerPhotolink)),r.watch&&(o.$on("user_update",function(e,t){l==t&&(angular.equals(c.photo&&c.photo.photo_small,d)||f())}),o.$on("chat_update",function(e,t){l==-t&&(angular.equals(c.photo&&c.photo.photo_small,d)||f())}))}return{link:o}}]).directive("myAudioPlayer",["$timeout","$q","Storage","AppDocsManager","AppMessagesManager","ErrorService",function(e,t,n,a,i,o){function s(e){return e===l?!1:(l&&l.pause(),void(l=e))}function r(e,t){a.updateDocDownloaded(e.audio.id),e.volume=c,e.mediaPlayer={},e.download=function(){a.saveDocFile(e.audio.id)},e.togglePlay=function(){if(e.audio.url)s(e.mediaPlayer.player),e.mediaPlayer.player.playPause();else{if(e.audio.progress&&e.audio.progress.enabled)return;a.downloadDoc(e.audio.id).then(function(){onContentLoaded(function(){var n=$("audio",t)[0]||t[0];if(n){var a=!1,r=function(e){a||e.target&&e.target.error&&e.target.error.code!=e.target.error.MEDIA_ERR_DECODE&&e.target.error.code!=e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED||(a=!0,o.show({error:{type:"MEDIA_TYPE_NOT_SUPPORTED",originalError:e.target&&e.target.error}}))};n.addEventListener("error",r,!0),e.$on("$destroy",function(){a=!0,n.removeEventListener("error",r)})}setTimeout(function(){s(e.mediaPlayer.player),e.mediaPlayer.player.setVolume(c),e.mediaPlayer.player.play(),e.message&&!e.message.pFlags.out&&e.message.pFlags.media_unread&&i.readMessages([e.message.mid])},300)})})}},e.seek=function(t){e.mediaPlayer&&e.mediaPlayer.player?e.mediaPlayer.player.seek(t):e.togglePlay()},e.setVolume=function(t){c=t,n.set({audio_volume:t}),e.mediaPlayer&&e.mediaPlayer.player&&e.mediaPlayer.player.setVolume(t)}}var l=!1,c=.5;n.get("audio_volume").then(function(e){e>0&&1>=e&&(c=e)});return{link:r,scope:{audio:"=",message:"="},templateUrl:templateUrl("audio_player")}}]).directive("mySlider",["$window",function(e){function t(t,n,a){var i=$(".tg_slider_wrap",n),o=$(".tg_slider_track_fill",n),s=$(".tg_slider_thumb",n),r=i.width(),l=Math.ceil(s.width()),c=a.sliderModel,d=a.sliderOnchange,u=0,p=1,m=!1,g=!1;a.sliderMin&&t.$watch(a.sliderMin,function(e){u=e||0}),a.sliderMax&&t.$watch(a.sliderMax,function(e){p=e||1});var h=function(e){e=e.originalEvent||e;var n=(e.touches&&e.touches[0]?e.touches[0].pageX:e.pageX)-g;return n=Math.min(r,Math.max(0,n)),m=u+n/r*(p-u),d?t.$eval(d,{value:m}):t.$eval(c+"="+m),s.css("left",Math.max(0,n-l)),o.css("width",n),cancelEvent(e)},f=function(){$(e).off("mousemove touchmove",h),$(e).off("mouseup touchend touchcancel touchleave",f)};t.$watch(c,function(e){if(e!=m&&void 0!==e){var t=Math.max(0,(e-u)/(p-u));if(r){var n=Math.ceil(r*t);n=Math.min(r,Math.max(0,n)),s.css("left",Math.max(0,n-l)),o.css("width",n)}else s.css("left",100*t+"%"),o.css("width",100*t+"%");m=!1}}),n.on("dragstart selectstart",cancelEvent),n.on("mousedown touchstart",function(a){if(!r&&(r=i.width(),!r))return console.error("empty width"),cancelEvent(a);f(),a=a.originalEvent||a;var _;if(a.touches&&a.touches[0])g=n.position().left,_=a.touches[0].pageX-g;else if(void 0!==a.offsetX)_=a.offsetX,g=a.pageX-_;else{if(void 0===a.layerX)return cancelEvent(a);_=a.layerX,g=a.pageX-_}return m=u+_/r*(p-u),d?t.$eval(d,{value:m}):t.$eval(c+"="+m),s.css("left",Math.max(0,_-l)),o.css("width",_),$(e).on("mousemove touchmove",h),$(e).on("mouseup touchend touchcancel touchleave",f),cancelEvent(a)})}return{link:t,templateUrl:templateUrl("slider")}}]).directive("myLabeledInput",function(){function e(e,t){var n=$(".md-input:first",t),a=($(".md-input-label:first",t),n[0]&&"SPAN"==n[0].tagName),i=!1,o=function(){a?t.toggleClass("md-input-has-value",n.html().length>0):t.toggleClass("md-input-has-value",i||n.val().length>0)};o(),onContentLoaded(function(){o(),setZeroTimeout(function(){t.addClass("md-input-animated")})}),a||n.on("blur focus change",function(e){i="focus"==e.type,t.toggleClass("md-input-focused",i),o()}),e.$on("value_updated",function(){setZeroTimeout(function(){o()})})}return{link:e}}).directive("myCopyField",function(){function e(e,t){t.attr("readonly","true"),t[0].readonly=!0,t.on("click",function(){this.select()}),e.selectEvent&&e.$on(e.selectEvent,function(){setTimeout(function(){t[0].focus(),t[0].select()},100)})}return{scope:{selectEvent:"=myCopyField"},link:e}}).directive("mySubmitOnEnter",function(){function e(e,t){t.on("keydown",function(e){return 13==e.keyCode?(t.trigger("submit"),cancelEvent(e)):void 0})}return{link:e}}).directive("myArcProgress",function(){function e(e,t,n){t=Math.max(0,Math.min(t,1));var a=.2;t=a+(1-a)*t,e.css({strokeDasharray:t*n+", "+(1-t)*n})}var t='<svg class="progress-arc" viewPort="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg"> <defs> <linearGradient id="grad_intermediate%id%" x1="0%" y1="0%" x2="100%" y2="0%"> <stop offset="0%" class="stop0" /> <stop offset="60%" class="stop60" /> <stop offset="100%" class="stop100"/> </linearGradient> </defs> <circle class="progress-arc-bar"></circle></svg>',n=0;return{scope:{progress:"=myArcProgress"},link:function(a,i,o){var s=!o.myArcProgress,r=o.width||i.width()||40,l=o.stroke||r/2*.14,c=r/2,d=c-l/2,u=++n;i.html(t.replace("%id%",u)).addClass("progress-arc-wrap").addClass(s?"progress-arc-intermediate":"progress-arc-percent").css({width:r,height:r}),$(i[0].firstChild).attr("width",r).attr("height",r);var p=$(".progress-arc-bar",i);p.attr("cx",c).attr("cy",c).attr("r",d).css({strokeWidth:l});var m=2*Math.PI*d;s?(e(p,.3,m),p.css({stroke:"url(#grad_intermediate"+u+")"})):a.$watch("progress",function(t){e(p,t/100,m)})}}}).directive("myScrollToOn",function(){return{link:function(e,t,n){var a=n.myScrollToOn,i=function(){onContentLoaded(function(){$("html, body").animate({scrollTop:t.offset().top},200)})};"$init"==a?i():e.$on(a,i)}}}).directive("myComposerDropdown",function(){return{templateUrl:templateUrl("composer_dropdown")}}).directive("myEmojiSuggestions",function(){return{link:function(e,t){e.$watchCollection("emojiCodes",function(e){var n,a,i,o,s,r,l,c,d=[],u=Config.Mobile?26:20,p=Math.min(5,e.length);for(r=0;p>r;r++)n=e[r],n.code&&(n=n.code),(a=Config.Emoji[n])&&(i=EmojiHelper.spritesheetPositions[n],s=i[0],o=i[1],l=u*i[3],c=u*i[2],d.push('<li><a class="composer_emoji_option" data-code="'+encodeEntities(n)+'"><i class="emoji emoji-w',u," emoji-spritesheet-"+s+'" style="background-position: -'+l+"px -"+c+'px;"></i><span class="composer_emoji_shortcut">:'+encodeEntities(a[1][0])+":</span></a></li>"));t.html(d.join("")),console.log(dT(),"emoji done")})}}}).directive("myInlineResults",["AppPhotosManager","ExternalResourcesManager","AppDocsManager",function(e,t,n){return{templateUrl:templateUrl("inline_results"),scope:{botResults:"=myInlineResults"},link:function(a){a.$watch("botResults.results",function(a){angular.forEach(a,function(a){if(a.thumb_url&&!a.thumbUrl&&t.downloadByURL(a.thumb_url).then(function(e){a.thumbUrl=e}),"gif"==a.type&&a.content_url&&!a.contentUrl&&t.downloadByURL(a.content_url).then(function(e){a.contentUrl=e}),"gif"!=a.type&&"sticker"!=a.type||!a.document||n.downloadDoc(a.document.id),"photo"==a.type&&a.photo){var i=e.choosePhotoSize(a.photo,a.thumbW,a.thumbH),o=calcImageInBox(i.w,i.h,a.thumbW,a.thumbH);a.thumb={width:o.w,height:o.h,location:i.location,size:i.size}}})})}}}]).directive("myExternalEmbed",function(){function e(e,r,l){var c=e.$eval(l.myExternalEmbed);if(c){var d="",u=!1;switch(c[0]){case"youtube":var p=c[1];d='<div class="im_message_media_embed im_message_video_embed"><'+s+' type="text/html" frameborder="0" src="https://www.youtube.com/embed/'+p+'?autoplay=0&amp;controls=2" webkitallowfullscreen mozallowfullscreen allowfullscreen></'+s+"></div>";break;case"vimeo":var p=c[1];d='<div class="im_message_media_embed im_message_video_embed"><'+s+' type="text/html" frameborder="0" src="https://player.vimeo.com/video/'+p+'?title=0&amp;byline=0&amp;portrait=0" webkitallowfullscreen mozallowfullscreen allowfullscreen></'+s+"></div>";break;case"instagram":var m=c[1];d='<div class="im_message_media_embed im_message_insta_embed"><'+s+' type="text/html" frameborder="0" src="https://instagram.com/p/'+m+'/embed/"></'+s+"></div>";break;case"vine":var g=c[1];d='<div class="im_message_media_embed im_message_vine_embed"><'+s+' type="text/html" frameborder="0" src="https://vine.co/v/'+g+'/embed/simple"></'+s+"></div>";break;case"soundcloud":var h=c[1];d='<div class="im_message_media_embed im_message_soundcloud_embed"><'+s+' type="text/html" frameborder="0" src="https://w.soundcloud.com/player/?url='+encodeEntities(encodeURIComponent(h))+'&amp;auto_play=false&amp;hide_related=true&amp;show_comments=false&amp;show_user=true&amp;show_reposts=false&amp;visual=true"></'+s+"></div>";break;case"spotify":var f=c[1];d='<div class="im_message_media_embed im_message_spotify_embed"><'+s+' type="text/html" frameborder="0" allowtransparency="true" src="https://embed.spotify.com/?uri=spotify:'+encodeEntities(encodeURIComponent(f))+'"></'+s+"></div>";break;case"twitter":d='<div class="im_message_twitter_embed"><blockquote class="twitter-tweet" lang="en"><a href="'+c[1]+'"></a></blockquote></div>',u=function(){t?window.twttr&&twttr.widgets.load(r[0]):(t=!0,$("<script>").appendTo("body").on("load",function(){twttr.events.bind("loaded",function(){for(var e=0;e<i.length;e++)i[e].$emit("ui_height");i=[]})}).attr("src","https://platform.twitter.com/widgets.js")),i.push(e)};break;case"facebook":d='<div class="im_message_facebook_embed"><div class="fb-post" data-href="'+c[1]+'" data-width="300"></div></div>',u=function(){n?window.FB&&FB.XFBML.parse(r[0]):(n=!0,$("<script>").appendTo("body").on("load",function(){FB.Event.subscribe("xfbml.render",function(){for(var e=0;e<o.length;e++)o[e].$emit("ui_height");o=[]})}).attr("src","https://connect.facebook.net/en_US/sdk.js#xfbml=1&appId=254098051407226&version=v2.0")),o.push(e)};break;case"gplus":d='<div class="im_message_gplus_embed"><div class="g-post" data-href="'+c[1]+'"></div></div>',u=function(){a?window.gapi&&gapi.post.go(r[0]):(a=!0,window.___gcfg={parsetags:"explicit"},$("<script>").appendTo("body").on("load",function(){gapi.post.go()}).attr("src","https://apis.google.com/js/plusone.js")),r.one("load",function(){e.$emit("ui_height")})}}d&&(r[0].innerHTML=d,u&&u())}}var t=!1,n=!1,a=!1,i=[],o=[],s=Config.Modes.chrome_packed?"webview":"iframe";return{link:e}}),angular.module("myApp.directives").directive("myDialogsListMobile",["$window","$timeout",function(e,t){function n(n,a,i){function o(){return d&&d.offsetHeight||(d=$(c)[0]),i.modal?void $(a).css({height:$(e).height()-(d?d.offsetHeight:58)-46}):(l&&l.offsetHeight||(l=$(".tg_page_head")[0]),s&&s.offsetHeight||(s=$(".im_dialogs_col_wrap")[0]),void $(a).css({height:$(e).height()-(l?l.offsetHeight:46)-(d?d.offsetHeight:58)-parseInt($(s).css("paddingBottom")||0)}))}var s=$(".im_dialogs_col_wrap")[0],r=a[0],l=$(".tg_page_head")[0],c=i.modal?".mobile_modal_body .im_dialogs_panel":".im_dialogs_panel",d=$(c)[0],u=!1;n.$on("ui_dialogs_search",o),n.$on("ui_dialogs_update",o),n.$on("ui_dialogs_append",function(){onContentLoaded(function(){u=!1,t(function(){$(r).trigger("scroll")})})}),n.$on("ui_dialogs_change",function(){onContentLoaded(function(){u=!1,t(function(){$(r).trigger("scroll")})})}),$(r).on("scroll",function(){a.is(":visible")&&!u&&r.scrollTop>=r.scrollHeight-r.clientHeight-300&&(n.$emit("dialogs_need_more"),u=!0)}),$(e).on("resize",o),o(),setTimeout(o,1e3)}return{link:n}}]).directive("myHistoryMobile",["$window","$timeout","$rootScope","$transition",function(e,t){function n(n,a){function i(){var e,n;if(n=$(".im_message_focus:visible",l)[0]){var a=l.clientHeight,i=l.scrollTop,o=n.offsetTop,s=n.clientHeight;(!i||o>i+a||i>o+s)&&(l.scrollTop=Math.max(0,o-Math.floor(a/2)+26)),f=!1}else(e=$(".im_message_unread_split:visible",l)[0])?(l.scrollTop=Math.max(0,e.offsetTop-52),f=!1):(l.scrollTop=l.scrollHeight,f=!0);t(function(){$(l).trigger("scroll"),_=l.scrollTop})}function o(t){if(a.is(":visible")||$(a[0].parentNode.parentNode).is(":visible")){$(u).is(":visible")&&$(u).css({height:$(m).height()}),p&&p.offsetHeight||(p=$(".tg_page_head")[0]);var n=$(e).height()-d.offsetHeight-(p?p.offsetHeight:46);$(r).css({height:n}),s(),t!==!0&&f&&onContentLoaded(function(){l.scrollTop=l.scrollHeight})}}function s(){return}var r=$(".im_history_wrap",a)[0],l=($(".im_history_messages",a)[0],$(".im_history_scrollable_wrap",a)[0]),c=$(".im_history_scrollable",a)[0],d=$(".im_bottom_panel_wrap",a)[0],u=$(".im_send_form_wrap",a)[0],p=$(".tg_page_head")[0],m=$(".im_send_form",a)[0],g=!1,h=!1;onContentLoaded(function(){l.scrollTop=l.scrollHeight}),n.$on("ui_history_append_new",function(e,t){if(f||t.my){var n=parseInt($(l).css("paddingRight"));$(l).addClass("im_history_to_bottom"),$(c).css({bottom:0,marginLeft:-Math.ceil(n/2)}),onContentLoaded(function(){$(l).removeClass("im_history_to_bottom"),$(c).css({bottom:"",marginLeft:""}),l.scrollTop=l.scrollHeight,s()})}}),n.$on("ui_history_change",function(){var e=parseInt($(l).css("paddingRight"));$(l).addClass("im_history_to_bottom"),$(c).css({bottom:0,marginLeft:-Math.ceil(e/2)}),onContentLoaded(function(){$(l).removeClass("im_history_to_bottom"),$(c).css({bottom:"",marginLeft:""}),o(!0),g=!1,h=!1,i()})}),n.$on("ui_history_change_scroll",function(){onContentLoaded(i)}),n.$on("ui_history_focus",function(){f||(l.scrollTop=l.scrollHeight,f=!0)}),n.$on("ui_history_prepend",function(){var e=l.scrollHeight,a=l.scrollTop,o=parseInt($(l).css("paddingRight")),r=l.clientHeight;$(l).addClass("im_history_to_bottom"),l.scrollHeight,$(c).css({bottom:-(e-a-r),marginLeft:-Math.ceil(o/2)});var d=function(){$(l).removeClass("im_history_to_bottom"),$(c).css({bottom:"",marginLeft:""}),_>=0?i():l.scrollTop=a+l.scrollHeight-e,s(),g=!1,t(function(){l.scrollHeight!=e&&$(l).trigger("scroll")}),clearTimeout(u),p()},u=setTimeout(d,0),p=n.$on("$viewContentLoaded",d)}),n.$on("ui_history_append",function(){var e=l.scrollHeight;onContentLoaded(function(){f=!1,s(),h=!1,_>=0&&i(),t(function(){l.scrollHeight!=e&&$(l).trigger("scroll")})})}),n.$on("ui_panel_update",function(e,a){onContentLoaded(function(){o(),n.$broadcast(a&&a.blur?"ui_message_blur":"ui_message_send"),t(function(){$(l).trigger("scroll")})})}),n.$on("ui_selection_clear",function(){window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty()}),n.$on("ui_editor_resize",o),n.$on("ui_height",function(){onContentLoaded(o)});var f=!0,_=-1;$(l).on("scroll",function(){if(a.is(":visible")&&!$(l).hasClass("im_history_to_bottom")){var e=l.scrollTop;f=e>=l.scrollHeight-l.clientHeight,_>=0&&_!=e&&(_=-1),!g&&300>=e?(g=!0,n.$emit("history_need_more")):!h&&e>=l.scrollHeight-l.clientHeight-300&&(h=!0,n.$emit("history_need_less"))}}),$(e).on("resize",o),o(),onContentLoaded(o)}return{link:n}}]).directive("myContactsListMobile",["$window","$timeout",function(e){function t(t,n){function a(){$(n).css({height:$(e).height()-(o&&o.offsetHeight||0)-(i&&i.offsetHeight||0)-64})}var i=$(".contacts_modal_search")[0],o=$(".contacts_modal_panel")[0];$(e).on("resize",a),t.$on("contacts_change",function(){onContentLoaded(a)}),onContentLoaded(a)}return{link:t}}]).directive("myCountriesListMobile",["$window","$timeout",function(e){function t(t,n){function a(){$(n).css({height:$(e).height()-(o&&o.offsetHeight||0)-(i&&i.offsetHeight||0)-64})}var i=$(".countries_modal_search")[0],o=$(".countries_modal_panel")[0];$(e).on("resize",a),onContentLoaded(a)}return{link:t}}]).directive("myInfiniteScrollerMobile",function(){function e(e,t){var n=t[0],a=!1;$(n).on("scroll",function(){t.is(":visible")&&!a&&n.scrollTop>=n.scrollHeight-n.clientHeight-300&&(a=!0,e.$apply(function(){e.slice.limit+=e.slice.limitDelta||20}),onContentLoaded(function(){a=!1}))})}return{link:e,scope:!0}});