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.
 
 
 
 
 
 

24 lines
1.0 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,i,a,o){for(;--o>=0;){var s=t*this[e++]+n[i]+a;a=Math.floor(s/67108864),n[i++]=67108863&s}return a}function am2(e,t,n,i,a,o){for(var s=32767&t,r=t>>15;--o>=0;){var c=32767&this[e],l=this[e++]>>15,d=r*c+l*s;c=s*c+((32767&d)<<15)+n[i]+(1073741823&a),a=(c>>>30)+(d>>>15)+r*l+(a>>>30),n[i++]=1073741823&c}return a}function am3(e,t,n,i,a,o){for(var s=16383&t,r=t>>14;--o>=0;){var c=16383&this[e],l=this[e++]>>14,d=r*c+l*s;c=s*c+((16383&d)<<14)+n[i]+a,a=(c>>28)+(d>>14)+r*l,n[i++]=268435455&c}return a}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 i;if(16==t)i=4;else if(8==t)i=3;else if(256==t)i=8;else if(2==t)i=1;else if(32==t)i=5;else{if(4!=t)return void this.fromRadix(e,t);i=2}this.t=0,this.s=0;for(var a=e.length,o=!1,s=0;--a>=0;){var r=8==i?255&e[a]:intAt(e,a);0>r?"-"==e.charAt(a)&&(o=!0):(o=!1,0==s?this[this.t++]=r:s+i>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+=i,s>=this.DB&&(s-=this.DB))}8==i&&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,i=(1<<t)-1,a=!1,o="",s=this.t,r=this.DB-s*this.DB%t;if(s-->0)for(r<this.DB&&(n=this[s]>>r)>0&&(a=!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)&i,0>=r&&(r+=this.DB,--s)),n>0&&(a=!0),a&&(o+=int2char(n));return a?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,i=e%this.DB,a=this.DB-i,o=(1<<a)-1,s=Math.floor(e/this.DB),r=this.s<<i&this.DM;for(n=this.t-1;n>=0;--n)t[n+s+1]=this[n]>>a|r,r=(this[n]&o)<<i;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 i=e%this.DB,a=this.DB-i,o=(1<<i)-1;t[0]=this[n]>>i;for(var s=n+1;s<this.t;++s)t[s-n-1]|=(this[s]&o)<<a,t[s-n]=this[s]>>i;i>0&&(t[this.t-n-1]|=(this.s&o)<<a),t.t=this.t-n,t.clamp()}function bnpSubTo(e,t){for(var n=0,i=0,a=Math.min(e.t,this.t);a>n;)i+=this[n]-e[n],t[n++]=i&this.DM,i>>=this.DB;if(e.t<this.t){for(i-=e.s;n<this.t;)i+=this[n],t[n++]=i&this.DM,i>>=this.DB;i+=this.s}else{for(i+=this.s;n<e.t;)i-=e[n],t[n++]=i&this.DM,i>>=this.DB;i-=e.s}t.s=0>i?-1:0,-1>i?t[n++]=this.DV+i:i>0&&(t[n++]=i),t.t=n,t.clamp()}function bnpMultiplyTo(e,t){var n=this.abs(),i=e.abs(),a=n.t;for(t.t=a+i.t;--a>=0;)t[a]=0;for(a=0;a<i.t;++a)t[a+n.t]=n.am(0,i[a],t,a,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 i=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,i,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 i=e.abs();if(!(i.t<=0)){var a=this.abs();if(a.t<i.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,c=this.DB-nbits(i[i.t-1]);c>0?(i.lShiftTo(c,o),a.lShiftTo(c,n)):(i.copyTo(o),a.copyTo(n));var l=o.t,d=o[l-1];if(0!=d){var u=d*(1<<this.F1)+(l>1?o[l-2]>>this.F2:0),p=this.FV/u,m=(1<<this.F1)/u,h=1<<this.F2,g=n.t,f=g-l,_=null==t?nbi():t;for(o.dlShiftTo(f,_),n.compareTo(_)>=0&&(n[n.t++]=1,n.subTo(_,n)),BigInteger.ONE.dlShiftTo(l,_),_.subTo(o,o);o.t<l;)o[o.t++]=0;for(;--f>=0;){var v=n[--g]==d?this.DM:Math.floor(n[g]*p+(n[g-1]+h)*m);if((n[g]+=o.am(0,v,n,f,0,l))<v)for(o.dlShiftTo(f,_),n.subTo(_,n);n[g]<--v;)n.subTo(_,n)}null!=t&&(n.drShiftTo(l,t),s!=r&&BigInteger.ZERO.subTo(t,t)),n.t=l,n.clamp(),c>0&&n.rShiftTo(c,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],i=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,i,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(),i=nbi(),a=t.convert(this),o=nbits(e)-1;for(a.copyTo(n);--o>=0;)if(t.sqrTo(n,i),(e&1<<o)>0)t.mulTo(i,a,n);else{var s=n;n=i,i=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),i=nbv(n),a=nbi(),o=nbi(),s="";for(this.divRemTo(i,a,o);a.signum()>0;)s=(n+o.intValue()).toString(e).substr(1)+s,a.divRemTo(i,a,o);return o.intValue().toString(e)+s}function bnpFromRadix(e,t){this.fromInt(0),null==t&&(t=10);for(var n=this.chunkSize(t),i=Math.pow(t,n),a=!1,o=0,s=0,r=0;r<e.length;++r){var c=intAt(e,r);0>c?"-"==e.charAt(r)&&0==this.signum()&&(a=!0):(s=t*s+c,++o>=n&&(this.dMultiply(i),this.dAddOffset(s,0),o=0,s=0))}o>0&&(this.dMultiply(Math.pow(t,o)),this.dAddOffset(s,0)),a&&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 i=new Array,a=7&e;i.length=(e>>3)+1,t.nextBytes(i),a>0?i[0]&=(1<<a)-1:i[0]=0,this.fromString(i,256)}}function bnToByteArray(e){var t=this.t,n=new Array;n[0]=this.s;var i,a=this.DB-t*this.DB%8,o=0;if(t-->0)for(a<this.DB&&(i=this[t]>>a)!=(this.s&this.DM)>>a&&(n[o++]=i|this.s<<this.DB-a);t>=0;)8>a?(i=(this[t]&(1<<a)-1)<<8-a,i|=this[--t]>>(a+=this.DB-8)):(i=this[t]>>(a-=8)&255,0>=a&&(a+=this.DB,--t)),e&&0!=(128&i)&&(i|=-256),0==o&&(128&this.s)!=(128&i)&&++o,(o>0||i!=this.s)&&(n[o++]=i);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 i,a,o=Math.min(e.t,this.t);for(i=0;o>i;++i)n[i]=t(this[i],e[i]);if(e.t<this.t){for(a=e.s&this.DM,i=o;i<this.t;++i)n[i]=t(this[i],a);n.t=this.t}else{for(a=this.s&this.DM,i=o;i<e.t;++i)n[i]=t(a,e[i]);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,i=0,a=Math.min(e.t,this.t);a>n;)i+=this[n]+e[n],t[n++]=i&this.DM,i>>=this.DB;if(e.t<this.t){for(i+=e.s;n<this.t;)i+=this[n],t[n++]=i&this.DM,i>>=this.DB;i+=this.s}else{for(i+=this.s;n<e.t;)i+=e[n],t[n++]=i&this.DM,i>>=this.DB;i+=e.s}t.s=0>i?-1:0,i>0?t[n++]=i:-1>i&&(t[n++]=this.DV+i),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 i=Math.min(this.t+e.t,t);for(n.s=0,n.t=i;i>0;)n[--i]=0;var a;for(a=n.t-this.t;a>i;++i)n[i+this.t]=this.am(0,e[i],n,i,0,this.t);for(a=Math.min(e.t,t);a>i;++i)this.am(0,e[i],n,i,0,t-i);n.clamp()}function bnpMultiplyUpperTo(e,t,n){--t;var i=n.t=this.t+e.t-t;for(n.s=0;--i>=0;)n[i]=0;for(i=Math.max(t-this.t,0);i<e.t;++i)n[this.t+i-t]=this.am(t-i,e[i],n,0,0,this.t+i-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,i,a=e.bitLength(),o=nbv(1);if(0>=a)return o;n=18>a?1:48>a?3:144>a?4:768>a?5:6,i=8>a?new Classic(t):t.isEven()?new Barrett(t):new Montgomery(t);var s=new Array,r=3,c=n-1,l=(1<<n)-1;if(s[1]=i.convert(this),n>1){var d=nbi();for(i.sqrTo(s[1],d);l>=r;)s[r]=nbi(),i.mulTo(d,s[r-2],s[r]),r+=2}var u,p,m=e.t-1,h=!0,g=nbi();for(a=nbits(e[m])-1;m>=0;){for(a>=c?u=e[m]>>a-c&l:(u=(e[m]&(1<<a+1)-1)<<c-a,m>0&&(u|=e[m-1]>>this.DB+a-c)),r=n;0==(1&u);)u>>=1,--r;if((a-=r)<0&&(a+=this.DB,--m),h)s[u].copyTo(o),h=!1;else{for(;r>1;)i.sqrTo(o,g),i.sqrTo(g,o),r-=2;r>0?i.sqrTo(o,g):(p=o,o=g,g=p),i.mulTo(g,s[u],o)}for(;m>=0&&0==(e[m]&1<<a);)i.sqrTo(o,g),p=o,o=g,g=p,--a<0&&(a=this.DB-1,--m)}return i.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 i=t;t=n,n=i}var a=t.getLowestSetBit(),o=n.getLowestSetBit();if(0>o)return t;for(o>a&&(o=a),o>0&&(t.rShiftTo(o,t),n.rShiftTo(o,n));t.signum()>0;)(a=t.getLowestSetBit())>0&&t.rShiftTo(a,t),(a=n.getLowestSetBit())>0&&n.rShiftTo(a,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 i=this.t-1;i>=0;--i)n=(t*n+this[i])%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(),i=this.clone(),a=nbv(1),o=nbv(0),s=nbv(0),r=nbv(1);0!=n.signum();){for(;n.isEven();)n.rShiftTo(1,n),t?(a.isEven()&&o.isEven()||(a.addTo(this,a),o.subTo(e,o)),a.rShiftTo(1,a)):o.isEven()||o.subTo(e,o),o.rShiftTo(1,o);for(;i.isEven();)i.rShiftTo(1,i),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(i)>=0?(n.subTo(i,n),t&&a.subTo(s,a),o.subTo(r,o)):(i.subTo(n,i),t&&s.subTo(a,s),r.subTo(o,r))}return 0!=i.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 i=lowprimes[t],a=t+1;a<lowprimes.length&&lplim>i;)i*=lowprimes[a++];for(i=n.modInt(i);a>t;)if(i%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 i=t.shiftRight(n);e=e+1>>1,e>lowprimes.length&&(e=lowprimes.length);for(var a=nbi(),o=0;e>o;++o){a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);var s=a.modPow(i,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,i;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,i=this.S[t],this.S[t]=this.S[n],this.S[n]=i;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,i,a;for(n=new Array(e),t=0;e>t;t++)n[t]=0;for(n[0]=2,i=0;n[i]<e;){for(t=n[i]*n[i];e>t;t+=n[i])n[t]=1;for(i++,n[i]=n[i-1]+1;n[i]<e&&n[n[i]];n[i]++);}for(a=new Array(i),t=0;i>t;t++)a[t]=n[t];return a}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,i,a,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),a=0,n=0;n<mr_r.length;n++)for(i=1;mask>i;i<<=1)e[n]&i?(o=a<mr_r.length+bpe?a:0,n=mr_r.length,i=mask):a++;if(o&&rightShift_(mr_r,o),powMod_(mr_a,mr_r,e),!equalsInt(mr_a,1)&&!equals(mr_a,mr_x1)){for(i=1;o-1>=i&&!equals(mr_a,mr_x1);){if(squareMod_(mr_a,e),equalsInt(mr_a,1))return 0;i++}if(!equals(mr_a,mr_x1))return 0}return 1}function bitSize(e){var t,n,i;for(t=e.length-1;0==e[t]&&t>0;t--);for(n=0,i=e[t];i;i>>=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,i,a,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,a=0,i=0;i<primes.length&&primes[i]<=o;i++)if(0==modInt(n,primes[i])&&!equalsInt(n,primes[i])){a=1;break}for(i=0;t>i&&!a;i++){for(randBigInt_(rpprb,e,0);!greater(n,rpprb);)randBigInt_(rpprb,e,0);millerRabin(n,rpprb)||(a=1)}if(!a)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 i=expand(e,n.length);return powMod_(i,trim(t,2),trim(n,2),0),trim(i,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,i=expand(e,t.length);return n=inverseMod_(i,t),n?trim(i,1):null}function multMod(e,t,n){var i=expand(e,n.length);return multMod_(i,t,n),trim(i,1)}function randTruePrime_(e,t){var n,i,a,o,s,r,c,l,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,i=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(a=(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]&a)==primes[s];s++)if(0==e[0]%primes[s]){o=1;break}return void carry_(e)}if(c=n*t*t,t>2*i)for(r=1;i>=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),l=0,s=0;s<primes.length&&primes[s]<c;s++)if(0==modInt(s_n,primes[s])&&!equalsInt(s_n,primes[s])){l=1;break}if(l||millerRabinInt(s_n,2)||(l=1),!l){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,i;return n=Math.floor((e-1)/bpe)+2,i=int2bigInt(0,0,n),randBigInt_(i,e,t),i}function randBigInt_(e,t,n){var i,a;for(i=0;i<e.length;i++)e[i]=0;for(a=Math.floor((t-1)/bpe)+1,i=0;a>i;i++)e[i]=Math.floor(Math.random()*(1<<bpe-1));e[a-1]&=(2<<(t-1)%bpe)-1,1==n&&(e[a-1]|=1<<(t-1)%bpe)}function GCD(e,t){var n,i;return n=dup(e),i=dup(t),GCD_(n,i),n}function GCD_(e,n){var i,a,o,s,r,c,l,d,u;for(T.length!=e.length&&(T=dup(e)),u=1;u;){for(u=0,i=1;i<n.length;i++)if(n[i]){u=1;break}if(!u)break;for(i=e.length;!e[i]&&i>=0;i--);for(a=e[i],o=n[i],s=1,r=0,c=0,l=1;o+c&&o+l&&(d=Math.floor((a+s)/(o+c)),qp=Math.floor((a+r)/(o+l)),d==qp);)t=s-d*c,s=c,c=t,t=r-d*l,r=l,l=t,t=a-d*o,a=o,o=t;r?(copy_(T,e),linComb_(e,n,s,r),linComb_(n,T,l,c)):(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,i=0;;){if(1==e)return n;if(0==e)return 0;if(i-=n*Math.floor(t/e),t%=e,1==t)return i;if(0==t)return 0;n-=i*Math.floor(e/t),e%=t}}function inverseModInt_(e,t){return inverseModInt(e,t)}function eGCD_(e,t,n,i,a){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_(i,eg_C),copy_(a,eg_D),void leftShift_(n,o)}}}function negative(e){return e[e.length-1]>>bpe-1&1}function greaterShift(e,t,n){var i,a=e.length,o=t.length;for(k=o>a+n?a+n:o,i=o-1-n;a>i&&i>=0;i++)if(e[i]>0)return 1;for(i=a-1+n;o>i;i++)if(t[i]>0)return 0;for(i=k-1;i>=n;i--){if(e[i-n]>t[i])return 1;if(e[i-n]<t[i])return 0}return 0}function greater(e,t){var n,i=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=i-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,i){var a,o,s,r,c,l,d,u;for(copy_(i,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_(i,d),a=i.length;0==i[a-1]&&a>o;a--);for(copyInt_(n,0);!greaterShift(t,i,a-o);)subShift_(i,t,a-o),n[a-o]++;for(s=a-1;s>=o;s--){for(n[s-o]=i[s]==t[o-1]?mask:Math.floor((i[s]*radix+i[s-1])/t[o-1]);c=(o>1?t[o-2]:0)*n[s-o],l=c>>bpe,c&=mask,r=l+n[s-o]*t[o-1],l=r>>bpe,r&=mask,l==i[s]?r==i[s-1]?c>(s>1?i[s-2]:0):r>i[s-1]:l>i[s];)n[s-o]--;linCombShift_(i,t,-n[s-o],s-o),negative(i)&&(addShift_(i,t,s-o),n[s-o]--)}rightShift_(t,d),rightShift_(i,d)}function carry_(e){var t,n,i,a;for(n=e.length,i=0,t=0;n>t;t++)i+=e[t],a=0,0>i&&(a=-(i>>bpe),i+=a*radix),e[t]=i&mask,i=(i>>bpe)-a}function modInt(e,t){var n,i=0;for(n=e.length-1;n>=0;n--)i=(i*radix+e[n])%t;return i}function int2bigInt(e,t,n){var i;return i=Math.ceil(t/bpe)+1,i=n>i?n:i,buff=new Array(i),copyInt_(buff,e),buff}function str2bigInt(e,t,n){var i,a,o,s,r,c=e.length;if(-1==t){for(o=new Array(0);;){for(s=new Array(o.length+1),a=0;a<o.length;a++)s[a+1]=o[a];if(s[0]=parseInt(e,10),o=s,i=e.indexOf(",",0),1>i)break;if(e=e.substring(i+1),0==e.length)break}return o.length<n?(s=new Array(n),copy_(s,o),s):o}for(o=int2bigInt(0,t*c,0),a=0;c>a&&(i=digitsStr.indexOf(e.substring(a,a+1),0),36>=t&&i>=36&&(i-=26),!(i>=t||0>i));a++)multInt_(o,t),addInt_(o,i);for(c=o.length;c>0&&!o[c-1];c--);for(c=n>c+1?n:c+1,s=new Array(c),r=c<o.length?c:o.length,a=0;r>a;a++)s[a]=o[a];for(;c>a;a++)s[a]=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,i=e.length<t.length?e.length:t.length;for(n=0;i>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,i,a="";if(s6.length!=e.length?s6=dup(e):copy_(s6,e),-1==t){for(n=e.length-1;n>0;n--)a+=e[n]+",";a+=e[0]}else for(;!isZero(s6);)i=divInt_(s6,t),a=digitsStr.substring(i,i+1)+a;return 0==a.length&&(a="0"),a}function dup(e){return buff=new Array(e.length),copy_(buff,e),buff}function copy_(e,t){var n,i=e.length<t.length?e.length:t.length;for(n=0;i>n;n++)e[n]=t[n];for(n=i;n<e.length;n++)e[n]=0}function copyInt_(e,t){var n,i;for(i=t,n=0;n<e.length;n++)e[n]=i&mask,i>>=bpe}function addInt_(e,t){var n,i,a,o;for(e[0]+=t,i=e.length,a=0,n=0;i>n;n++)if(a+=e[n],o=0,0>a&&(o=-(a>>bpe),a+=o*radix),e[n]=a&mask,a=(a>>bpe)-o,!a)return}function rightShift_(e,t){var n,i=Math.floor(t/bpe);if(i){for(n=0;n<e.length-i;n++)e[n]=e[n+i];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,i=Math.floor(t/bpe);if(i){for(n=e.length;n>=i;n--)e[n]=e[n-i];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,i,a,o;if(t)for(i=e.length,a=0,n=0;i>n;n++)a+=e[n]*t,o=0,0>a&&(o=-(a>>bpe),a+=o*radix),e[n]=a&mask,a=(a>>bpe)-o}function divInt_(e,t){var n,i,a=0;for(n=e.length-1;n>=0;n--)i=a*radix+e[n],e[n]=Math.floor(i/t),a=i%t;return a}function linComb_(e,t,n,i){var a,o,s,r;for(s=e.length<t.length?e.length:t.length,r=e.length,o=0,a=0;s>a;a++)o+=n*e[a]+i*t[a],e[a]=o&mask,o>>=bpe;for(a=s;r>a;a++)o+=n*e[a],e[a]=o&mask,o>>=bpe}function linCombShift_(e,t,n,i){var a,o,s,r;for(s=e.length<i+t.length?e.length:i+t.length,r=e.length,o=0,a=i;s>a;a++)o+=e[a]+n*t[a-i],e[a]=o&mask,o>>=bpe;for(a=s;o&&r>a;a++)o+=e[a],e[a]=o&mask,o>>=bpe}function addShift_(e,t,n){var i,a,o,s;for(o=e.length<n+t.length?e.length:n+t.length,s=e.length,a=0,i=n;o>i;i++)a+=e[i]+t[i-n],e[i]=a&mask,a>>=bpe;for(i=o;a&&s>i;i++)a+=e[i],e[i]=a&mask,a>>=bpe}function subShift_(e,t,n){var i,a,o,s;for(o=e.length<n+t.length?e.length:n+t.length,s=e.length,a=0,i=n;o>i;i++)a+=e[i]-t[i-n],e[i]=a&mask,a>>=bpe;for(i=o;a&&s>i;i++)a+=e[i],e[i]=a&mask,a>>=bpe}function sub_(e,t){var n,i,a;for(a=e.length<t.length?e.length:t.length,i=0,n=0;a>n;n++)i+=e[n]-t[n],e[n]=i&mask,i>>=bpe;for(n=a;i&&n<e.length;n++)i+=e[n],e[n]=i&mask,i>>=bpe}function add_(e,t){var n,i,a;for(a=e.length<t.length?e.length:t.length,i=0,n=0;a>n;n++)i+=e[n]+t[n],e[n]=i&mask,i>>=bpe;for(n=a;i&&n<e.length;n++)i+=e[n],e[n]=i&mask,i>>=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 i;for(s0.length!=2*e.length&&(s0=new Array(2*e.length)),copyInt_(s0,0),i=0;i<t.length;i++)t[i]&&linCombShift_(s0,e,t[i],i);mod_(s0,n),copy_(e,s0)}function squareMod_(e,t){var n,i,a,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(a=s0[2*n]+e[n]*e[n],s0[2*n]=a&mask,a>>=bpe,i=n+1;o>i;i++)a=s0[n+i]+2*e[n]*e[i]+a,s0[n+i]=a&mask,a>>=bpe;s0[n+o]=a}mod_(s0,t),copy_(e,s0)}function trim(e,t){var n,i;for(n=e.length;n>0&&!e[n-1];n--);return i=new Array(n+t),copy_(i,e),i}function powMod_(e,t,n){var i,a,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),i=t.length-1;i>0&!t[i];i--);if(0==t[i])return void copyInt_(e,1);for(a=1<<bpe-1;a&&!(t[i]&a);a>>=1);for(;;){if(!(a>>=1)){if(i--,0>i)return void mont_(e,one,n,s);a=1<<bpe-1}mont_(e,e,n,s),a&t[i]&&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,i){var a,o,s,r,c,l,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(l=sa.length-1,a=0;d>a;a++){for(c=sa[0]+e[a]*t[0],r=(c&mask)*i&mask,s=c+r*n[0]>>bpe,c=e[a],o=1;u-4>o;)s+=sa[o]+r*n[o]+c*t[o],sa[o-1]=s&mask,s>>=bpe,o++,s+=sa[o]+r*n[o]+c*t[o],sa[o-1]=s&mask,s>>=bpe,o++,s+=sa[o]+r*n[o]+c*t[o],sa[o-1]=s&mask,s>>=bpe,o++,s+=sa[o]+r*n[o]+c*t[o],sa[o-1]=s&mask,s>>=bpe,o++,s+=sa[o]+r*n[o]+c*t[o],sa[o-1]=s&mask,s>>=bpe,o++;for(;u>o;)s+=sa[o]+r*n[o]+c*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(;l>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 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()),!1
}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 i=e.createTextRange();i.collapse(!0),i.moveEnd("character",n),i.moveStart("character",t),i.select()}else e.setSelectionRange&&e.setSelectionRange(t,n)}catch(a){}}function getFieldSelection(e){if(e.selectionStart)return e.selectionStart;if(!document.selection)return 0;var t="",n=document.selection.createRange(),i=n.text,a=n.duplicate(),o=0;try{a.moveToElementText(e)}catch(s){return 0}return n.text=i+t,o=a.text.indexOf(t),n.moveStart("character",-1),n.text="",o}function getRichValue(e){if(!e)return"";var t=[],n=[];return getRichElementValue(e,t,n),n.length&&t.push(n.join("")),t.join("\n")}function getRichValueWithCaret(e){if(!e)return[];var t,n,i=[],a=[],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,i,a,t,n),a.length&&i.push(a.join(""));var r=i.join("\n"),c=r.indexOf("");return-1!=c&&(r=r.substr(0,c)+r.substr(c+1)),[r,c]}function getRichElementValue(e,t,n,i,a){if(3!=e.nodeType){if(1==e.nodeType){var o,s="DIV"==e.tagName||"P"==e.tagName;s&&n.length||"BR"==e.tagName?(t.push(n.join("")),n.splice(0,n.length)):"IMG"==e.tagName&&e.alt&&n.push(e.alt),i===e&&n.push("");for(var o=e.firstChild;o;)getRichElementValue(o,t,n,i,a),o=o.nextSibling;s&&n.length&&(t.push(n.join("")),n.splice(0,n.length))}}else if(i===e){var r=e.nodeValue;n.push(r.substr(0,a)+""+r.substr(a))}else n.push(e.nodeValue)}function setRichFocus(e,t){if(e.focus(),window.getSelection&&document.createRange){var n=document.createRange();t?n.selectNode(t):n.selectNodeContents(e),n.collapse(!1);var i=window.getSelection();i.removeAllRanges(),i.addRange(n)}else if(void 0!==document.body.createTextRange){var a=document.body.createTextRange();a.moveToElementText(t||e),a.collapse(!1),a.select()}}function onContentLoaded(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),i=e.length?e[e.length-1]:4294967295,a=0;a<t.length;a++)t[a]<i&&n.push(t[a]);return n}function listUniqSorted(e){e=e||[];for(var t=[],n=!1,i=0;i<e.length;i++)e[i]!==n&&t.push(e[i]),n=e[i];return t}function templateUrl(e){var t={confirm_modal:"desktop",error_modal:"desktop",media_modal_layout:"desktop",slider:"desktop",reply_message:"desktop"},n=t[e]||(Config.Mobile?"mobile":"desktop");return"partials/"+n+"/"+e+".html"}function encodeEntities(e){return e.replace(/&/g,"&amp;").replace(/([^\#-~| |!])/g,function(e){return"&#"+e.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}function calcImageInBox(e,t,n,i,a){var o=n,s=i;return e/t>n/i?s=parseInt(t*n/e):(o=parseInt(e*i/t),o>n&&(s=parseInt(s*n/o),o=n)),a&&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,i=Math.max(e.length,t.length);for(n=0;i>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,i=0,a=[];for(e.length%2&&(a.push(parseInt(e.charAt(0),16)),i++),t=i;n>t;t+=2)a.push(parseInt(e.substr(t,2),16));return a}function bytesToBase64(e){for(var t,n="",i=e.length,a=0,o=0;i>o;o++)t=o%3,a|=e[o]<<(16>>>t&24),(2===t||i-o===1)&&(n+=String.fromCharCode(uint6ToBase64(a>>>18&63),uint6ToBase64(a>>>12&63),uint6ToBase64(a>>>6&63),uint6ToBase64(63&a)),a=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,i=atob(e),a=i.length,o=Math.ceil(a/n),s=new Array(o),r=0;o>r;++r){for(var c=r*n,l=Math.min(c+n,a),d=new Array(l-c),u=c,p=0;l>u;++p,++u)d[p]=i[u].charCodeAt(0);s[r]=new Uint8Array(d)}return blobConstruct(s,t)}function dataUrlToBlob(e){var t=e.split(","),n=t[1],i=t[0].split(":")[1].split(";")[0],a=base64ToBlob(n,i);return a}function blobConstruct(e,t){var n;try{n=new Blob(e,{type:t})}catch(i){var a=new BlobBuilder;angular.forEach(e,function(e){a.append(e)}),n=a.getBlob(t)}return n}function bytesCmp(e,t){var n=e.length;if(n!=t.length)return!1;for(var i=0;n>i;i++)if(e[i]!=t[i])return!1;return!0}function bytesXor(e,t){for(var n=e.length,i=[],a=0;n>a;++a)i[a]=e[a]^t[a];return i}function bytesToWords(e){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var t,n=e.length,i=[];for(t=0;n>t;t++)i[t>>>2]|=e[t]<<24-t%4*8;return new CryptoJS.lib.WordArray.init(i,n)}function bytesFromWords(e){for(var t=e.words,n=e.sigBytes,i=[],a=0;n>a;a++)i.push(t[a>>>2]>>>24-a%4*8&255);return i}function bytesFromBigInt(e,t){var n=e.toByteArray();if(t&&n.length<t){for(var i=[],a=0,o=t-n.length;o>a;a++)i[a]=0;n=n instanceof ArrayBuffer?bufferConcat(i,n):i.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,i=e.length;i>n;n++)t.push(e[n]);return t}function bytesFromArrayBuffer(e){for(var t=e.byteLength,n=new Uint8Array(e),i=[],a=0;t>a;++a)i[a]=n[a];return i}function bufferConcat(e,t){var n=e.byteLength||e.length,i=t.byteLength||t.length,a=new Uint8Array(n+i);return a.set(e instanceof ArrayBuffer?new Uint8Array(e):e,0),a.set(t instanceof ArrayBuffer?new Uint8Array(t):t,n),a.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),i=new BigInteger(e.exponent,16),a=new BigInteger(t),o=a.modPowInt(i,n),s=bytesFromBigInt(o,256);return s}function addPadding(e,t,n){t=t||16;var i=e.byteLength||e.length,a=t-i%t;if(a>0&&t>a){var o=new Array(a);if(n)for(var s=0;a>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 i=CryptoJS.AES.encrypt(bytesToWords(e),bytesToWords(t),{iv:bytesToWords(n),padding:CryptoJS.pad.NoPadding,mode:CryptoJS.mode.IGE}).ciphertext,a=bytesFromWords(i);return a}function aesDecryptSync(e,t,n){var i=CryptoJS.AES.decrypt({ciphertext:bytesToWords(e)},bytesToWords(t),{iv:bytesToWords(n),padding:CryptoJS.pad.NoPadding,mode:CryptoJS.mode.IGE}),a=bytesFromWords(i);return a}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(i){console.error("Pq leemon Exception",i)}if(n===!1&&t.bitLength()<=64)try{n=pqPrimeLong(goog.math.Long.fromString(t.toString(16),16))}catch(i){console.error("Pq long Exception",i)}return n===!1&&(n=pqPrimeBigInteger(t)),n}function pqPrimeBigInteger(e){for(var t,n=0,i=0;3>i;i++){for(var a=(15&nextRandomInt(128))+17,o=bigint(nextRandomInt(1e9)+1),s=o.clone(),r=1<<i+18,c=1;r>c;c++){++n;for(var l=o.clone(),d=o.clone(),u=bigint(a);!d.equals(BigInteger.ZERO);)d.and(BigInteger.ONE).equals(BigInteger.ZERO)||(u=u.add(l),u.compareTo(e)>0&&(u=u.subtract(e))),l=l.add(l),l.compareTo(e)>0&&(l=l.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==(c&c-1)&&(s=o.clone())}if(t.compareTo(BigInteger.ONE)>0)break}var m,h,g=e.divide(t);return t.compareTo(g)>0?(m=g,h=t):(m=t,h=g),[bytesFromBigInt(m),bytesFromBigInt(h),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,i=0;3>i;i++){for(var a=goog.math.Long.fromInt((15&nextRandomInt(128))+17),o=goog.math.Long.fromInt(nextRandomInt(1e9)+1),s=o,r=1<<i+18,c=1;r>c;c++){++n;for(var l=o,d=o,u=a;d.notEquals(goog.math.Long.ZERO);)d.and(goog.math.Long.ONE).notEquals(goog.math.Long.ZERO)&&(u=u.add(l),u.compare(e)>0&&(u=u.subtract(e))),l=l.add(l),l.compare(e)>0&&(l=l.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==(c&c-1)&&(s=o)}if(t.compare(goog.math.Long.ONE)>0)break}var m,h,g=e.div(t);return t.compare(g)>0?(m=g,h=t):(m=t,h=g),[bytesFromHex(m.toString(16)),bytesFromHex(h.toString(16)),n]}function pqPrimeLeemon(e){var t,n,i,a,o,s,r,c=64,l=Math.ceil(c/bpe)+1,d=0,u=new Array(l),p=new Array(l),m=new Array(l),o=new Array(l),h=new Array(l),g=new Array(l),f=new Array(l);for(t=0;3>t;t++){for(n=(15&nextRandomInt(128))+17,copyInt_(g,nextRandomInt(1e9)+1),copy_(f,g),a=1<<t+18,i=1;a>i;i++){for(++d,copy_(u,g),copy_(p,g),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_(g,m),greater(g,f)?(copy_(h,g),sub_(h,f)):(copy_(h,f),sub_(h,g)),eGCD_(h,e,o,u,p),!equalsInt(o,1))break;0==(i&i-1)&&copy_(f,g)}if(greater(o,one))break}return divide_(e,o,g,f),greater(o,g)?(s=g,r=o):(s=o,r=g),[bytesFromLeemonBigInt(s),bytesFromLeemonBigInt(r),d]}function bytesModPow(e,t,n){try{var i=str2bigInt(bytesToHex(e),16),a=str2bigInt(bytesToHex(t),16),o=str2bigInt(bytesToHex(n),16),s=powMod(i,a,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,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,i=$(e.target);return"A"!=i[0].tagName&&(i=$(i[0].parentNode)),(t=i.attr("data-code"))&&(n.onEmojiSelected&&n.onEmojiSelected(t),EmojiHelper.pushPopularEmoji(t)),cancelEvent(e)}),this.update()}function MessageComposer(e,t){this.textareaEl=$(e),this.setUpInput(),this.autoCompleteEl=$('<ul class="composer_dropdown dropdown-menu"></ul>').appendTo(document.body);var n=this;this.autoCompleteEl.on("mousedown",function(e){e=e.originalEvent||e;var t,i,a=$(e.target);return"A"!=a[0].tagName&&(a=$(a[0].parentNode)),(i=a.attr("data-code"))&&(n.onEmojiSelected&&n.onEmojiSelected(i,!0),EmojiHelper.pushPopularEmoji(i)),(t=a.attr("data-mention"))&&n.onMentionSelected&&n.onMentionSelected(t),cancelEvent(e)}),this.isActive=!1,this.onTyping=t.onTyping,this.onMessageSubmit=t.onMessageSubmit,this.getSendOnEnter=t.getSendOnEnter,this.onFilePaste=t.onFilePaste,this.mentions=t.mentions,this.getPeerImage=t.getPeerImage}!function(e){"use strict";e.console=e.console||{};for(var t,n,i=e.console,a={},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();)i[t]||(i[t]=a);for(;n=r.pop();)i[n]||(i[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 i=Object(this),a=i.length>>>0;if(0===a)return-1;var o=+t||0;if(1/0===Math.abs(o)&&(o=0),o>=a)return-1;for(n=Math.max(o>=0?o:a-Math.abs(o),0);a>n;){if(n in i&&i[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,i=function(){},a=function(){return n.apply(this instanceof i&&e?this:e,t.concat(Array.prototype.slice.call(arguments)))};return i.prototype=this.prototype,a.prototype=new i,a}),function(e){function t(t){i.push(t),e.postMessage(a,"*")}function n(t){if(t.source==e&&t.data==a&&(t.stopPropagation(),i.length>0)){var n=i.shift();n()}}var i=[],a="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=at.type(e);return"function"===n||at.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e}function i(e,t,n){if(at.isFunction(t))return at.grep(e,function(e,i){return!!t.call(e,i,e)!==n});if(t.nodeType)return at.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(pt.test(t))return at.filter(t,e,n);t=at.filter(t,e)}return at.grep(e,function(e){return at.inArray(e,t)>=0!==n})}function a(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function o(e){var t=bt[e]={};return at.each(e.match(yt)||[],function(e,n){t[n]=!0}),t}function s(){ht.addEventListener?(ht.removeEventListener("DOMContentLoaded",r,!1),e.removeEventListener("load",r,!1)):(ht.detachEvent("onreadystatechange",r),e.detachEvent("onload",r))}function r(){(ht.addEventListener||"load"===event.type||"complete"===ht.readyState)&&(s(),at.ready())}function c(e,t,n){if(void 0===n&&1===e.nodeType){var i="data-"+t.replace(Ct,"-$1").toLowerCase();if(n=e.getAttribute(i),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:St.test(n)?at.parseJSON(n):n}catch(a){}at.data(e,t,n)}else n=void 0}return n}function l(e){var t;for(t in e)if(("data"!==t||!at.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function d(e,t,n,i){if(at.acceptData(e)){var a,o,s=at.expando,r=e.nodeType,c=r?at.cache:e,l=r?e[s]:e[s]&&s;if(l&&c[l]&&(i||c[l].data)||void 0!==n||"string"!=typeof t)return l||(l=r?e[s]=K.pop()||at.guid++:s),c[l]||(c[l]=r?{}:{toJSON:at.noop}),("object"==typeof t||"function"==typeof t)&&(i?c[l]=at.extend(c[l],t):c[l].data=at.extend(c[l].data,t)),o=c[l],i||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[at.camelCase(t)]=n),"string"==typeof t?(a=o[t],null==a&&(a=o[at.camelCase(t)])):a=o,a}}function u(e,t,n){if(at.acceptData(e)){var i,a,o=e.nodeType,s=o?at.cache:e,r=o?e[at.expando]:at.expando;if(s[r]){if(t&&(i=n?s[r]:s[r].data)){at.isArray(t)?t=t.concat(at.map(t,at.camelCase)):t in i?t=[t]:(t=at.camelCase(t),t=t in i?[t]:t.split(" ")),a=t.length;for(;a--;)delete i[t[a]];if(n?!l(i):!at.isEmptyObject(i))return}(n||(delete s[r].data,l(s[r])))&&(o?at.cleanData([e],!0):nt.deleteExpando||s!=s.window?delete s[r]:s[r]=null)}}}function p(){return!0}function m(){return!1}function h(){try{return ht.activeElement}catch(e){}}function g(e){var t=Ot.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function f(e,t){var n,i,a=0,o=typeof e.getElementsByTagName!==kt?e.getElementsByTagName(t||"*"):typeof e.querySelectorAll!==kt?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(i=n[a]);a++)!t||at.nodeName(i,t)?o.push(i):at.merge(o,f(i,t));return void 0===t||t&&at.nodeName(e,t)?at.merge([e],o):o}function _(e){Tt.test(e.type)&&(e.defaultChecked=e.checked)}function v(e,t){return at.nodeName(e,"table")&&at.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!==at.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,i=0;null!=(n=e[i]);i++)at._data(n,"globalEval",!t||at._data(t[i],"globalEval"))}function $(e,t){if(1===t.nodeType&&at.hasData(e)){var n,i,a,o=at._data(e),s=at._data(t,o),r=o.events;if(r){delete s.handle,s.events={};for(n in r)for(i=0,a=r[n].length;a>i;i++)at.event.add(t,n,r[n][i])}s.data&&(s.data=at.extend({},s.data))}}function k(e,t){var n,i,a;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!nt.noCloneEvent&&t[at.expando]){a=at._data(t);for(i in a.events)at.removeEvent(t,i,a.handle);t.removeAttribute(at.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&&!at.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Tt.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 S(t,n){var i,a=at(n.createElement(t)).appendTo(n.body),o=e.getDefaultComputedStyle&&(i=e.getDefaultComputedStyle(a[0]))?i.display:at.css(a[0],"display");return a.detach(),o}function C(e){var t=ht,n=Qt[e];return n||(n=S(e,t),"none"!==n&&n||(Jt=(Jt||at("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement),t=(Jt[0].contentWindow||Jt[0].contentDocument).document,t.write(),t.close(),n=S(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 A(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),i=t,a=mn.length;a--;)if(t=mn[a]+n,t in e)return t;return i}function x(e,t){for(var n,i,a,o=[],s=0,r=e.length;r>s;s++)i=e[s],i.style&&(o[s]=at._data(i,"olddisplay"),n=i.style.display,t?(o[s]||"none"!==n||(i.style.display=""),""===i.style.display&&xt(i)&&(o[s]=at._data(i,"olddisplay",C(i.nodeName)))):(a=xt(i),(n&&"none"!==n||!a)&&at._data(i,"olddisplay",a?n:at.css(i,"display"))));for(s=0;r>s;s++)i=e[s],i.style&&(t&&"none"!==i.style.display&&""!==i.style.display||(i.style.display=t?o[s]||"":"none"));return e}function E(e,t,n){var i=ln.exec(t);return i?Math.max(0,i[1]-(n||0))+(i[2]||"px"):t}function T(e,t,n,i,a){for(var o=n===(i?"border":"content")?4:"width"===t?1:0,s=0;4>o;o+=2)"margin"===n&&(s+=at.css(e,n+At[o],!0,a)),i?("content"===n&&(s-=at.css(e,"padding"+At[o],!0,a)),"margin"!==n&&(s-=at.css(e,"border"+At[o]+"Width",!0,a))):(s+=at.css(e,"padding"+At[o],!0,a),"padding"!==n&&(s+=at.css(e,"border"+At[o]+"Width",!0,a)));return s}function I(e,t,n){var i=!0,a="width"===t?e.offsetWidth:e.offsetHeight,o=en(e),s=nt.boxSizing&&"border-box"===at.css(e,"boxSizing",!1,o);if(0>=a||null==a){if(a=tn(e,t,o),(0>a||null==a)&&(a=e.style[t]),an.test(a))return a;i=s&&(nt.boxSizingReliable()||a===e.style[t]),a=parseFloat(a)||0}return a+T(e,t,n||(s?"border":"content"),i,o)+"px"}function D(e,t,n,i,a){return new D.prototype.init(e,t,n,i,a)}function P(){return setTimeout(function(){hn=void 0}),hn=at.now()}function N(e,t){var n,i={height:e},a=0;for(t=t?1:0;4>a;a+=2-t)n=At[a],i["margin"+n]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function U(e,t,n){for(var i,a=(bn[t]||[]).concat(bn["*"]),o=0,s=a.length;s>o;o++)if(i=a[o].call(n,t,e))return i}function O(e,t,n){var i,a,o,s,r,c,l,d,u=this,p={},m=e.style,h=e.nodeType&&xt(e),g=at._data(e,"fxshow");n.queue||(r=at._queueHooks(e,"fx"),null==r.unqueued&&(r.unqueued=0,c=r.empty.fire,r.empty.fire=function(){r.unqueued||c()}),r.unqueued++,u.always(function(){u.always(function(){r.unqueued--,at.queue(e,"fx").length||r.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[m.overflow,m.overflowX,m.overflowY],l=at.css(e,"display"),d="none"===l?at._data(e,"olddisplay")||C(e.nodeName):l,"inline"===d&&"none"===at.css(e,"float")&&(nt.inlineBlockNeedsLayout&&"inline"!==C(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(i in t)if(a=t[i],fn.exec(a)){if(delete t[i],o=o||"toggle"===a,a===(h?"hide":"show")){if("show"!==a||!g||void 0===g[i])continue;h=!0}p[i]=g&&g[i]||at.style(e,i)}else l=void 0;if(at.isEmptyObject(p))"inline"===("none"===l?C(e.nodeName):l)&&(m.display=l);else{g?"hidden"in g&&(h=g.hidden):g=at._data(e,"fxshow",{}),o&&(g.hidden=!h),h?at(e).show():u.done(function(){at(e).hide()}),u.done(function(){var t;at._removeData(e,"fxshow");for(t in p)at.style(e,t,p[t])});for(i in p)s=U(h?g[i]:0,i,u),i in g||(g[i]=s.start,h&&(s.end=s.start,s.start="width"===i||"height"===i?1:0))}}function L(e,t){var n,i,a,o,s;for(n in e)if(i=at.camelCase(n),a=t[i],o=e[n],at.isArray(o)&&(a=o[1],o=e[n]=o[0]),n!==i&&(e[i]=o,delete e[n]),s=at.cssHooks[i],s&&"expand"in s){o=s.expand(o),delete e[i];for(n in o)n in e||(e[n]=o[n],t[n]=a)}else t[i]=a}function R(e,t,n){var i,a,o=0,s=yn.length,r=at.Deferred().always(function(){delete c.elem}),c=function(){if(a)return!1;for(var t=hn||P(),n=Math.max(0,l.startTime+l.duration-t),i=n/l.duration||0,o=1-i,s=0,c=l.tweens.length;c>s;s++)l.tweens[s].run(o);return r.notifyWith(e,[l,o,n]),1>o&&c?n:(r.resolveWith(e,[l]),!1)},l=r.promise({elem:e,props:at.extend({},t),opts:at.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:hn||P(),duration:n.duration,tweens:[],createTween:function(t,n){var i=at.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(i),i},stop:function(t){var n=0,i=t?l.tweens.length:0;if(a)return this;for(a=!0;i>n;n++)l.tweens[n].run(1);return t?r.resolveWith(e,[l,t]):r.rejectWith(e,[l,t]),this}}),d=l.props;for(L(d,l.opts.specialEasing);s>o;o++)if(i=yn[o].call(l,e,d,l.opts))return i;return at.map(d,U,l),at.isFunction(l.opts.start)&&l.opts.start.call(e,l),at.fx.timer(at.extend(c,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function B(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var i,a=0,o=t.toLowerCase().match(yt)||[];if(at.isFunction(n))for(;i=o[a++];)"+"===i.charAt(0)?(i=i.slice(1)||"*",(e[i]=e[i]||[]).unshift(n)):(e[i]=e[i]||[]).push(n)}}function F(e,t,n,i){function a(r){var c;return o[r]=!0,at.each(e[r]||[],function(e,r){var l=r(t,n,i);return"string"!=typeof l||s||o[l]?s?!(c=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),c}var o={},s=e===zn;return a(t.dataTypes[0])||!o["*"]&&a("*")}function q(e,t){var n,i,a=at.ajaxSettings.flatOptions||{};for(i in t)void 0!==t[i]&&((a[i]?e:n||(n={}))[i]=t[i]);return n&&at.extend(!0,e,n),e}function j(e,t,n){for(var i,a,o,s,r=e.contents,c=e.dataTypes;"*"===c[0];)c.shift(),void 0===a&&(a=e.mimeType||t.getResponseHeader("Content-Type"));if(a)for(s in r)if(r[s]&&r[s].test(a)){c.unshift(s);break}if(c[0]in n)o=c[0];else{for(s in n){if(!c[0]||e.converters[s+" "+c[0]]){o=s;break}i||(i=s)}o=o||i}return o?(o!==c[0]&&c.unshift(o),n[o]):void 0}function H(e,t,n,i){var a,o,s,r,c,l={},d=e.dataTypes.slice();if(d[1])for(s in e.converters)l[s.toLowerCase()]=e.converters[s];for(o=d.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!c&&i&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),c=o,o=d.shift())if("*"===o)o=c;else if("*"!==c&&c!==o){if(s=l[c+" "+o]||l["* "+o],!s)for(a in l)if(r=a.split(" "),r[1]===o&&(s=l[c+" "+r[0]]||l["* "+r[0]])){s===!0?s=l[a]:l[a]!==!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 "+c+" to "+o}}}return{state:"success",data:t}}function z(e,t,n,i){var a;if(at.isArray(t))at.each(t,function(t,a){n||Kn.test(e)?i(e,a):z(e+"["+("object"==typeof a?t:"")+"]",a,n,i)});else if(n||"object"!==at.type(t))i(e,t);else for(a in t)z(e+"["+a+"]",t[a],n,i)}function V(){try{return new e.XMLHttpRequest}catch(t){}}function W(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function G(e){return at.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={},it="1.11.1",at=function(e,t){return new at.fn.init(e,t)},ot=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,st=/^-ms-/,rt=/-([\da-z])/gi,ct=function(e,t){return t.toUpperCase()};at.fn=at.prototype={jquery:it,constructor:at,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=at.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return at.each(this,e,t)},map:function(e){return this.pushStack(at.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},at.extend=at.fn.extend=function(){var e,t,n,i,a,o,s=arguments[0]||{},r=1,c=arguments.length,l=!1;for("boolean"==typeof s&&(l=s,s=arguments[r]||{},r++),"object"==typeof s||at.isFunction(s)||(s={}),r===c&&(s=this,r--);c>r;r++)if(null!=(a=arguments[r]))for(i in a)e=s[i],n=a[i],s!==n&&(l&&n&&(at.isPlainObject(n)||(t=at.isArray(n)))?(t?(t=!1,o=e&&at.isArray(e)?e:[]):o=e&&at.isPlainObject(e)?e:{},s[i]=at.extend(l,o,n)):void 0!==n&&(s[i]=n));return s},at.extend({expando:"jQuery"+(it+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===at.type(e)},isArray:Array.isArray||function(e){return"array"===at.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!at.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"!==at.type(e)||e.nodeType||at.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&&at.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(st,"ms-").replace(rt,ct)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,i){var a,o=0,s=e.length,r=n(e);if(i){if(r)for(;s>o&&(a=t.apply(e[o],i),a!==!1);o++);else for(o in e)if(a=t.apply(e[o],i),a===!1)break}else if(r)for(;s>o&&(a=t.call(e[o],o,e[o]),a!==!1);o++);else for(o in e)if(a=t.call(e[o],o,e[o]),a===!1)break;return e},trim:function(e){return null==e?"":(e+"").replace(ot,"")},makeArray:function(e,t){var i=t||[];return null!=e&&(n(Object(e))?at.merge(i,"string"==typeof e?[e]:e):X.call(i,e)),i},inArray:function(e,t,n){var i;if(t){if(J)return J.call(t,e,n);for(i=t.length,n=n?0>n?Math.max(0,i+n):n:0;i>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,t){for(var n=+t.length,i=0,a=e.length;n>i;)e[a++]=t[i++];if(n!==n)for(;void 0!==t[i];)e[a++]=t[i++];return e.length=a,e},grep:function(e,t,n){for(var i,a=[],o=0,s=e.length,r=!n;s>o;o++)i=!t(e[o],o),i!==r&&a.push(e[o]);return a},map:function(e,t,i){var a,o=0,s=e.length,r=n(e),c=[];if(r)for(;s>o;o++)a=t(e[o],o,i),null!=a&&c.push(a);else for(o in e)a=t(e[o],o,i),null!=a&&c.push(a);return Z.apply([],c)},guid:1,proxy:function(e,t){var n,i,a;return"string"==typeof t&&(a=e[t],t=e,e=a),at.isFunction(e)?(n=Y.call(arguments,2),i=function(){return e.apply(t||this,n.concat(Y.call(arguments)))},i.guid=e.guid=e.guid||at.guid++,i):void 0},now:function(){return+new Date},support:nt}),at.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){Q["[object "+t+"]"]=t.toLowerCase()});var lt=function(e){function t(e,t,n,i){var a,o,s,r,c,l,u,m,h,g;if((t?t.ownerDocument||t:F)!==D&&I(t),t=t||D,n=n||[],!e||"string"!=typeof e)return n;if(1!==(r=t.nodeType)&&9!==r)return[];if(N&&!i){if(a=vt.exec(e))if(s=a[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))&&R(t,o)&&o.id===s)return n.push(o),n}else{if(a[2])return Q.apply(n,t.getElementsByTagName(e)),n;if((s=a[3])&&w.getElementsByClassName&&t.getElementsByClassName)return Q.apply(n,t.getElementsByClassName(s)),n}if(w.qsa&&(!U||!U.test(e))){if(m=u=B,h=t,g=9===r&&e,1===r&&"object"!==t.nodeName.toLowerCase()){for(l=C(e),(u=t.getAttribute("id"))?m=u.replace(bt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",c=l.length;c--;)l[c]=m+p(l[c]);h=yt.test(e)&&d(t.parentNode)||t,g=l.join(",")}if(g)try{return Q.apply(n,h.querySelectorAll(g)),n}catch(f){}finally{u||t.removeAttribute("id")}}}return A(e.replace(ct,"$1"),t,n,i)}function n(){function e(n,i){return t.push(n+" ")>$.cacheLength&&delete e[t.shift()],e[n+" "]=i}var t=[];return e}function i(e){return e[B]=!0,e}function a(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("|"),i=e.length;i--;)$.attrHandle[n[i]]=t}function s(e,t){var n=t&&e,i=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||K)-(~e.sourceIndex||K);if(i)return i;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 c(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function l(e){return i(function(t){return t=+t,i(function(n,i){for(var a,o=e([],n.length,t),s=o.length;s--;)n[a=o[s]]&&(n[a]=!(i[a]=n[a]))})})}function d(e){return e&&typeof e.getElementsByTagName!==G&&e}function u(){}function p(e){for(var t=0,n=e.length,i="";n>t;t++)i+=e[t].value;return i}function m(e,t,n){var i=t.dir,a=n&&"parentNode"===i,o=j++;return t.first?function(t,n,o){for(;t=t[i];)if(1===t.nodeType||a)return e(t,n,o)}:function(t,n,s){var r,c,l=[q,o];if(s){for(;t=t[i];)if((1===t.nodeType||a)&&e(t,n,s))return!0}else for(;t=t[i];)if(1===t.nodeType||a){if(c=t[B]||(t[B]={}),(r=c[i])&&r[0]===q&&r[1]===o)return l[2]=r[2];if(c[i]=l,l[2]=e(t,n,s))return!0}}}function h(e){return e.length>1?function(t,n,i){for(var a=e.length;a--;)if(!e[a](t,n,i))return!1;return!0}:e[0]}function g(e,n,i){for(var a=0,o=n.length;o>a;a++)t(e,n[a],i);return i}function f(e,t,n,i,a){for(var o,s=[],r=0,c=e.length,l=null!=t;c>r;r++)(o=e[r])&&(!n||n(o,i,a))&&(s.push(o),l&&t.push(r));return s}function _(e,t,n,a,o,s){return a&&!a[B]&&(a=_(a)),o&&!o[B]&&(o=_(o,s)),i(function(i,s,r,c){var l,d,u,p=[],m=[],h=s.length,_=i||g(t||"*",r.nodeType?[r]:r,[]),v=!e||!i&&t?_:f(_,p,e,r,c),y=n?o||(i?e:h||a)?[]:s:v;if(n&&n(v,y,r,c),a)for(l=f(y,m),a(l,[],r,c),d=l.length;d--;)(u=l[d])&&(y[m[d]]=!(v[m[d]]=u));if(i){if(o||e){if(o){for(l=[],d=y.length;d--;)(u=y[d])&&l.push(v[d]=u);o(null,y=[],l,c)}for(d=y.length;d--;)(u=y[d])&&(l=o?tt.call(i,u):p[d])>-1&&(i[l]=!(s[l]=u))}}else y=f(y===s?y.splice(h,y.length):y),o?o(null,s,y,c):Q.apply(s,y)})}function v(e){for(var t,n,i,a=e.length,o=$.relative[e[0].type],s=o||$.relative[" "],r=o?1:0,c=m(function(e){return e===t},s,!0),l=m(function(e){return tt.call(t,e)>-1},s,!0),d=[function(e,n,i){return!o&&(i||n!==x)||((t=n).nodeType?c(e,n,i):l(e,n,i))}];a>r;r++)if(n=$.relative[e[r].type])d=[m(h(d),n)];else{if(n=$.filter[e[r].type].apply(null,e[r].matches),n[B]){for(i=++r;a>i&&!$.relative[e[i].type];i++);return _(r>1&&h(d),r>1&&p(e.slice(0,r-1).concat({value:" "===e[r-2].type?"*":""})).replace(ct,"$1"),n,i>r&&v(e.slice(r,i)),a>i&&v(e=e.slice(i)),a>i&&p(e))}d.push(n)}return h(d)}function y(e,n){var a=n.length>0,o=e.length>0,s=function(i,s,r,c,l){var d,u,p,m=0,h="0",g=i&&[],_=[],v=x,y=i||o&&$.find.TAG("*",l),b=q+=null==v?1:Math.random()||.1,w=y.length;for(l&&(x=s!==D&&s);h!==w&&null!=(d=y[h]);h++){if(o&&d){for(u=0;p=e[u++];)if(p(d,s,r)){c.push(d);break}l&&(q=b)}a&&((d=!p&&d)&&m--,i&&g.push(d))}if(m+=h,a&&h!==m){for(u=0;p=n[u++];)p(g,_,s,r);if(i){if(m>0)for(;h--;)g[h]||_[h]||(_[h]=X.call(c));_=f(_)}Q.apply(c,_),l&&!i&&_.length>0&&m+n.length>1&&t.uniqueSort(c)}return l&&(q=b,x=v),g};return a?i(s):s}var b,w,$,k,S,C,M,A,x,E,T,I,D,P,N,U,O,L,R,B="sizzle"+-new Date,F=e.document,q=0,j=0,H=n(),z=n(),V=n(),W=function(e,t){return e===t&&(T=!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",it="[\\x20\\t\\r\\n\\f]",at="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",ot=at.replace("w","w#"),st="\\["+it+"*("+at+")(?:"+it+"*([*^$|!~]?=)"+it+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ot+"))|)"+it+"*\\]",rt=":("+at+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+st+")*)|.*)\\)|)",ct=new RegExp("^"+it+"+|((?:^|[^\\\\])(?:\\\\.)*)"+it+"+$","g"),lt=new RegExp("^"+it+"*,"+it+"*"),dt=new RegExp("^"+it+"*([>+~]|"+it+")"+it+"*"),ut=new RegExp("="+it+"*([^\\]'\"]*?)"+it+"*\\]","g"),pt=new RegExp(rt),mt=new RegExp("^"+ot+"$"),ht={ID:new RegExp("^#("+at+")"),CLASS:new RegExp("^\\.("+at+")"),TAG:new RegExp("^("+at.replace("w","w*")+")"),ATTR:new RegExp("^"+st),PSEUDO:new RegExp("^"+rt),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+it+"*(even|odd|(([+-]|)(\\d*)n|)"+it+"*(?:([+-]|)"+it+"*(\\d+)|))"+it+"*\\)|)","i"),bool:new RegExp("^(?:"+nt+")$","i"),needsContext:new RegExp("^"+it+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+it+"*((?:-\\d)?\\d*)"+it+"*\\)|)(?=[^-]|$)","i")},gt=/^(?: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}"+it+"?|("+it+")|.)","ig"),$t=function(e,t,n){var i="0x"+t-65536;return i!==i||n?t:0>i?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,1023&i|56320)};try{Q.apply(Z=et.call(F.childNodes),F.childNodes),Z[F.childNodes.length].nodeType}catch(kt){Q={apply:Z.length?function(e,t){J.apply(e,et.call(t))}:function(e,t){for(var n=e.length,i=0;e[n++]=t[i++];);e.length=n-1}}}w=t.support={},S=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},I=t.setDocument=function(e){var t,n=e?e.ownerDocument||e:F,i=n.defaultView;return n!==D&&9===n.nodeType&&n.documentElement?(D=n,P=n.documentElement,N=!S(n),i&&i!==i.top&&(i.addEventListener?i.addEventListener("unload",function(){I()},!1):i.attachEvent&&i.attachEvent("onunload",function(){I()})),w.attributes=a(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=a(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=_t.test(n.getElementsByClassName)&&a(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=a(function(e){return P.appendChild(e).id=B,!n.getElementsByName||!n.getElementsByName(B).length}),w.getById?($.find.ID=function(e,t){if(typeof t.getElementById!==G&&N){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},$.filter.ID=function(e){var t=e.replace(wt,$t);return function(e){return e.getAttribute("id")===t}}):(delete $.find.ID,$.filter.ID=function(e){var t=e.replace(wt,$t);return function(e){var n=typeof e.getAttributeNode!==G&&e.getAttributeNode("id");return n&&n.value===t}}),$.find.TAG=w.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==G?t.getElementsByTagName(e):void 0}:function(e,t){var n,i=[],a=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[a++];)1===n.nodeType&&i.push(n);return i}return o},$.find.CLASS=w.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==G&&N?t.getElementsByClassName(e):void 0},O=[],U=[],(w.qsa=_t.test(n.querySelectorAll))&&(a(function(e){e.innerHTML="<select msallowclip=''><option selected=''></option></select>",e.querySelectorAll("[msallowclip^='']").length&&U.push("[*^$]="+it+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||U.push("\\["+it+"*(?:value|"+nt+")"),e.querySelectorAll(":checked").length||U.push(":checked")}),a(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&U.push("name"+it+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||U.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),U.push(",.*:")})),(w.matchesSelector=_t.test(L=P.matches||P.webkitMatchesSelector||P.mozMatchesSelector||P.oMatchesSelector||P.msMatchesSelector))&&a(function(e){w.disconnectedMatch=L.call(e,"div"),L.call(e,"[s!='']:x"),O.push("!=",rt)}),U=U.length&&new RegExp(U.join("|")),O=O.length&&new RegExp(O.join("|")),t=_t.test(P.compareDocumentPosition),R=t||_t.test(P.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,i=t&&t.parentNode;return e===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):e.compareDocumentPosition&&16&e.compareDocumentPosition(i)))}: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 T=!0,0;var i=!e.compareDocumentPosition-!t.compareDocumentPosition;return i?i:(i=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&i||!w.sortDetached&&t.compareDocumentPosition(e)===i?e===n||e.ownerDocument===F&&R(F,e)?-1:t===n||t.ownerDocument===F&&R(F,t)?1:E?tt.call(E,e)-tt.call(E,t):0:4&i?-1:1)}:function(e,t){if(e===t)return T=!0,0;var i,a=0,o=e.parentNode,r=t.parentNode,c=[e],l=[t];if(!o||!r)return e===n?-1:t===n?1:o?-1:r?1:E?tt.call(E,e)-tt.call(E,t):0;if(o===r)return s(e,t);for(i=e;i=i.parentNode;)c.unshift(i);for(i=t;i=i.parentNode;)l.unshift(i);for(;c[a]===l[a];)a++;return a?s(c[a],l[a]):c[a]===F?-1:l[a]===F?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&&I(e),n=n.replace(ut,"='$1']"),!(!w.matchesSelector||!N||O&&O.test(n)||U&&U.test(n)))try{var i=L.call(e,n);if(i||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return i}catch(a){}return t(n,D,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==D&&I(e),R(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==D&&I(e);var n=$.attrHandle[t.toLowerCase()],i=n&&Y.call($.attrHandle,t.toLowerCase())?n(e,t,!N):void 0;return void 0!==i?i:w.attributes||!N?e.getAttribute(t):(i=e.getAttributeNode(t))&&i.specified?i.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],i=0,a=0;if(T=!w.detectDuplicates,E=!w.sortStable&&e.slice(0),e.sort(W),T){for(;t=e[a++];)t===e[a]&&(i=n.push(a));for(;i--;)e.splice(n[i],1)}return E=null,e},k=t.getText=function(e){var t,n="",i=0,a=e.nodeType;if(a){if(1===a||9===a||11===a){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=k(e)}else if(3===a||4===a)return e.nodeValue}else for(;t=e[i++];)n+=k(t);return n},$=t.selectors={cacheLength:50,createPseudo:i,match:ht,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,$t),e[3]=(e[3]||e[4]||e[5]||"").replace(wt,$t),"~="===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 ht.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&pt.test(n)&&(t=C(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,$t).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("(^|"+it+")"+e+"("+it+"|$)"))&&H(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==G&&e.getAttribute("class")||"")})},ATTR:function(e,n,i){return function(a){var o=t.attr(a,e);return null==o?"!="===n:n?(o+="","="===n?o===i:"!="===n?o!==i:"^="===n?i&&0===o.indexOf(i):"*="===n?i&&o.indexOf(i)>-1:"$="===n?i&&o.slice(-i.length)===i:"~="===n?(" "+o+" ").indexOf(i)>-1:"|="===n?o===i||o.slice(0,i.length+1)===i+"-":!1):!0}},CHILD:function(e,t,n,i,a){var o="nth"!==e.slice(0,3),s="last"!==e.slice(-4),r="of-type"===t;return 1===i&&0===a?function(e){return!!e.parentNode}:function(t,n,c){var l,d,u,p,m,h,g=o!==s?"nextSibling":"previousSibling",f=t.parentNode,_=r&&t.nodeName.toLowerCase(),v=!c&&!r;if(f){if(o){for(;g;){for(u=t;u=u[g];)if(r?u.nodeName.toLowerCase()===_:1===u.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[s?f.firstChild:f.lastChild],s&&v){for(d=f[B]||(f[B]={}),l=d[e]||[],m=l[0]===q&&l[1],p=l[0]===q&&l[2],u=m&&f.childNodes[m];u=++m&&u&&u[g]||(p=m=0)||h.pop();)if(1===u.nodeType&&++p&&u===t){d[e]=[q,m,p];break}}else if(v&&(l=(t[B]||(t[B]={}))[e])&&l[0]===q)p=l[1];else for(;(u=++m&&u&&u[g]||(p=m=0)||h.pop())&&((r?u.nodeName.toLowerCase()!==_:1!==u.nodeType)||!++p||(v&&((u[B]||(u[B]={}))[e]=[q,p]),u!==t)););return p-=a,p===i||p%i===0&&p/i>=0}}},PSEUDO:function(e,n){var a,o=$.pseudos[e]||$.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[B]?o(n):o.length>1?(a=[e,e,"",n],$.setFilters.hasOwnProperty(e.toLowerCase())?i(function(e,t){for(var i,a=o(e,n),s=a.length;s--;)i=tt.call(e,a[s]),e[i]=!(t[i]=a[s])}):function(e){return o(e,0,a)}):o}},pseudos:{not:i(function(e){var t=[],n=[],a=M(e.replace(ct,"$1"));return a[B]?i(function(e,t,n,i){for(var o,s=a(e,null,i,[]),r=e.length;r--;)(o=s[r])&&(e[r]=!(t[r]=o))}):function(e,i,o){return t[0]=e,a(t,null,o,n),!n.pop()}}),has:i(function(e){return function(n){return t(e,n).length>0}}),contains:i(function(e){return function(t){return(t.textContent||t.innerText||k(t)).indexOf(e)>-1}}),lang:i(function(e){return mt.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(wt,$t).toLowerCase(),function(t){var n;do if(n=N?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!$.pseudos.empty(e)},header:function(e){return ft.test(e.nodeName)},input:function(e){return gt.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:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,n){return[0>n?n+t:n]}),even:l(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:l(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:l(function(e,t,n){for(var i=0>n?n+t:n;--i>=0;)e.push(i);return e}),gt:l(function(e,t,n){for(var i=0>n?n+t:n;++i<t;)e.push(i);return e})}},$.pseudos.nth=$.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})$.pseudos[b]=r(b);for(b in{submit:!0,reset:!0})$.pseudos[b]=c(b);return u.prototype=$.filters=$.pseudos,$.setFilters=new u,C=t.tokenize=function(e,n){var i,a,o,s,r,c,l,d=z[e+" "];if(d)return n?0:d.slice(0);for(r=e,c=[],l=$.preFilter;r;){(!i||(a=lt.exec(r)))&&(a&&(r=r.slice(a[0].length)||r),c.push(o=[])),i=!1,(a=dt.exec(r))&&(i=a.shift(),o.push({value:i,type:a[0].replace(ct," ")}),r=r.slice(i.length));for(s in $.filter)!(a=ht[s].exec(r))||l[s]&&!(a=l[s](a))||(i=a.shift(),o.push({value:i,type:s,matches:a}),r=r.slice(i.length));if(!i)break}return n?r.length:r?t.error(e):z(e,c).slice(0)},M=t.compile=function(e,t){var n,i=[],a=[],o=V[e+" "];if(!o){for(t||(t=C(e)),n=t.length;n--;)o=v(t[n]),o[B]?i.push(o):a.push(o);o=V(e,y(a,i)),o.selector=e}return o},A=t.select=function(e,t,n,i){var a,o,s,r,c,l="function"==typeof e&&e,u=!i&&C(e=l.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&&N&&$.relative[o[1].type]){if(t=($.find.ID(s.matches[0].replace(wt,$t),t)||[])[0],!t)return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(a=ht.needsContext.test(e)?0:o.length;a--&&(s=o[a],!$.relative[r=s.type]);)if((c=$.find[r])&&(i=c(s.matches[0].replace(wt,$t),yt.test(o[0].type)&&d(t.parentNode)||t))){if(o.splice(a,1),e=i.length&&p(o),!e)return Q.apply(n,i),n;break}}return(l||M(e,u))(i,t,!N,n,yt.test(e)&&d(t.parentNode)||t),n},w.sortStable=B.split("").sort(W).join("")===B,w.detectDuplicates=!!T,I(),w.sortDetached=a(function(e){return 1&e.compareDocumentPosition(D.createElement("div"))}),a(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&&a(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}),a(function(e){return null==e.getAttribute("disabled")})||o(nt,function(e,t,n){var i;return n?void 0:e[t]===!0?t.toLowerCase():(i=e.getAttributeNode(t))&&i.specified?i.value:null}),t}(e);at.find=lt,at.expr=lt.selectors,at.expr[":"]=at.expr.pseudos,at.unique=lt.uniqueSort,at.text=lt.getText,at.isXMLDoc=lt.isXML,at.contains=lt.contains;var dt=at.expr.match.needsContext,ut=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,pt=/^.[^:#\[\.,]*$/;at.filter=function(e,t,n){var i=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===i.nodeType?at.find.matchesSelector(i,e)?[i]:[]:at.find.matches(e,at.grep(t,function(e){return 1===e.nodeType}))},at.fn.extend({find:function(e){var t,n=[],i=this,a=i.length;if("string"!=typeof e)return this.pushStack(at(e).filter(function(){for(t=0;a>t;t++)if(at.contains(i[t],this))return!0}));for(t=0;a>t;t++)at.find(e,i[t],n);return n=this.pushStack(a>1?at.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},filter:function(e){return this.pushStack(i(this,e||[],!1))},not:function(e){return this.pushStack(i(this,e||[],!0))},is:function(e){return!!i(this,"string"==typeof e&&dt.test(e)?at(e):e||[],!1).length}});var mt,ht=e.document,gt=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,ft=at.fn.init=function(e,t){var n,i;if(!e)return this;if("string"==typeof e){if(n="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:gt.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 at?t[0]:t,at.merge(this,at.parseHTML(n[1],t&&t.nodeType?t.ownerDocument||t:ht,!0)),ut.test(n[1])&&at.isPlainObject(t))for(n in t)at.isFunction(this[n])?this[n](t[n]):this.attr(n,t[n]);return this}if(i=ht.getElementById(n[2]),i&&i.parentNode){if(i.id!==n[2])return mt.find(e);this.length=1,this[0]=i}return this.context=ht,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):at.isFunction(e)?"undefined"!=typeof mt.ready?mt.ready(e):e(at):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),at.makeArray(e,this))};ft.prototype=at.fn,mt=at(ht);var _t=/^(?:parents|prev(?:Until|All))/,vt={children:!0,contents:!0,next:!0,prev:!0};at.extend({dir:function(e,t,n){for(var i=[],a=e[t];a&&9!==a.nodeType&&(void 0===n||1!==a.nodeType||!at(a).is(n));)1===a.nodeType&&i.push(a),a=a[t];return i},sibling:function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}}),at.fn.extend({has:function(e){var t,n=at(e,this),i=n.length;return this.filter(function(){for(t=0;i>t;t++)if(at.contains(this,n[t]))return!0})},closest:function(e,t){for(var n,i=0,a=this.length,o=[],s=dt.test(e)||"string"!=typeof e?at(e,t||this.context):0;a>i;i++)for(n=this[i];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(s?s.index(n)>-1:1===n.nodeType&&at.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?at.unique(o):o)},index:function(e){return e?"string"==typeof e?at.inArray(this[0],at(e)):at.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(at.unique(at.merge(this.get(),at(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),at.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return at.dir(e,"parentNode")},parentsUntil:function(e,t,n){return at.dir(e,"parentNode",n)},next:function(e){return a(e,"nextSibling")},prev:function(e){return a(e,"previousSibling")},nextAll:function(e){return at.dir(e,"nextSibling")},prevAll:function(e){return at.dir(e,"previousSibling")},nextUntil:function(e,t,n){return at.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return at.dir(e,"previousSibling",n)},siblings:function(e){return at.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return at.sibling(e.firstChild)},contents:function(e){return at.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:at.merge([],e.childNodes)}},function(e,t){at.fn[e]=function(n,i){var a=at.map(this,t,n);return"Until"!==e.slice(-5)&&(i=n),i&&"string"==typeof i&&(a=at.filter(i,a)),this.length>1&&(vt[e]||(a=at.unique(a)),_t.test(e)&&(a=a.reverse())),this.pushStack(a)}});var yt=/\S+/g,bt={};at.Callbacks=function(e){e="string"==typeof e?bt[e]||o(e):at.extend({},e);var t,n,i,a,s,r,c=[],l=!e.once&&[],d=function(o){for(n=e.memory&&o,i=!0,s=r||0,r=0,a=c.length,t=!0;c&&a>s;s++)if(c[s].apply(o[0],o[1])===!1&&e.stopOnFalse){n=!1;break}t=!1,c&&(l?l.length&&d(l.shift()):n?c=[]:u.disable())},u={add:function(){if(c){var i=c.length;!function o(t){at.each(t,function(t,n){var i=at.type(n);"function"===i?e.unique&&u.has(n)||c.push(n):n&&n.length&&"string"!==i&&o(n)})}(arguments),t?a=c.length:n&&(r=i,d(n))}return this},remove:function(){return c&&at.each(arguments,function(e,n){for(var i;(i=at.inArray(n,c,i))>-1;)c.splice(i,1),t&&(a>=i&&a--,s>=i&&s--)}),this},has:function(e){return e?at.inArray(e,c)>-1:!(!c||!c.length)},empty:function(){return c=[],a=0,this},disable:function(){return c=l=n=void 0,this},disabled:function(){return!c},lock:function(){return l=void 0,n||u.disable(),this},locked:function(){return!l},fireWith:function(e,n){return!c||i&&!l||(n=n||[],n=[e,n.slice?n.slice():n],t?l.push(n):d(n)),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!i}};return u},at.extend({Deferred:function(e){var t=[["resolve","done",at.Callbacks("once memory"),"resolved"],["reject","fail",at.Callbacks("once memory"),"rejected"],["notify","progress",at.Callbacks("memory")]],n="pending",i={state:function(){return n},always:function(){return a.done(arguments).fail(arguments),this},then:function(){var e=arguments;return at.Deferred(function(n){at.each(t,function(t,o){var s=at.isFunction(e[t])&&e[t];a[o[1]](function(){var e=s&&s.apply(this,arguments);e&&at.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[o[0]+"With"](this===i?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?at.extend(e,i):i}},a={};return i.pipe=i.then,at.each(t,function(e,o){var s=o[2],r=o[3];i[o[1]]=s.add,r&&s.add(function(){n=r},t[1^e][2].disable,t[2][2].lock),a[o[0]]=function(){return a[o[0]+"With"](this===a?i:this,arguments),this},a[o[0]+"With"]=s.fireWith}),i.promise(a),e&&e.call(a,a),a},when:function(e){var t,n,i,a=0,o=Y.call(arguments),s=o.length,r=1!==s||e&&at.isFunction(e.promise)?s:0,c=1===r?e:at.Deferred(),l=function(e,n,i){return function(a){n[e]=this,i[e]=arguments.length>1?Y.call(arguments):a,i===t?c.notifyWith(n,i):--r||c.resolveWith(n,i)}};if(s>1)for(t=new Array(s),n=new Array(s),i=new Array(s);s>a;a++)o[a]&&at.isFunction(o[a].promise)?o[a].promise().done(l(a,i,o)).fail(c.reject).progress(l(a,n,t)):--r;return r||c.resolveWith(i,o),c.promise()}});var wt;at.fn.ready=function(e){return at.ready.promise().done(e),this},at.extend({isReady:!1,readyWait:1,holdReady:function(e){e?at.readyWait++:at.ready(!0)},ready:function(e){if(e===!0?!--at.readyWait:!at.isReady){if(!ht.body)return setTimeout(at.ready);at.isReady=!0,e!==!0&&--at.readyWait>0||(wt.resolveWith(ht,[at]),at.fn.triggerHandler&&(at(ht).triggerHandler("ready"),at(ht).off("ready")))}}}),at.ready.promise=function(t){if(!wt)if(wt=at.Deferred(),"complete"===ht.readyState)setTimeout(at.ready);else if(ht.addEventListener)ht.addEventListener("DOMContentLoaded",r,!1),e.addEventListener("load",r,!1);else{ht.attachEvent("onreadystatechange",r),e.attachEvent("onload",r);var n=!1;try{n=null==e.frameElement&&ht.documentElement}catch(i){}n&&n.doScroll&&!function a(){if(!at.isReady){try{n.doScroll("left")}catch(e){return setTimeout(a,50)}s(),at.ready()}}()}return wt.promise(t)};var $t,kt="undefined";for($t in at(nt))break;nt.ownLast="0"!==$t,nt.inlineBlockNeedsLayout=!1,at(function(){var e,t,n,i;n=ht.getElementsByTagName("body")[0],n&&n.style&&(t=ht.createElement("div"),i=ht.createElement("div"),i.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(i).appendChild(t),typeof t.style.zoom!==kt&&(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(i))}),function(){var e=ht.createElement("div");if(null==nt.deleteExpando){nt.deleteExpando=!0;try{delete e.test}catch(t){nt.deleteExpando=!1}}e=null}(),at.acceptData=function(e){var t=at.noData[(e.nodeName+" ").toLowerCase()],n=+e.nodeType||1;return 1!==n&&9!==n?!1:!t||t!==!0&&e.getAttribute("classid")===t};var St=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Ct=/([A-Z])/g;at.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?at.cache[e[at.expando]]:e[at.expando],!!e&&!l(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)}}),at.fn.extend({data:function(e,t){var n,i,a,o=this[0],s=o&&o.attributes;if(void 0===e){if(this.length&&(a=at.data(o),1===o.nodeType&&!at._data(o,"parsedAttrs"))){for(n=s.length;n--;)s[n]&&(i=s[n].name,0===i.indexOf("data-")&&(i=at.camelCase(i.slice(5)),c(o,i,a[i])));at._data(o,"parsedAttrs",!0)}return a}return"object"==typeof e?this.each(function(){at.data(this,e)}):arguments.length>1?this.each(function(){at.data(this,e,t)}):o?c(o,e,at.data(o,e)):void 0},removeData:function(e){return this.each(function(){at.removeData(this,e)})}}),at.extend({queue:function(e,t,n){var i;return e?(t=(t||"fx")+"queue",i=at._data(e,t),n&&(!i||at.isArray(n)?i=at._data(e,t,at.makeArray(n)):i.push(n)),i||[]):void 0},dequeue:function(e,t){t=t||"fx";var n=at.queue(e,t),i=n.length,a=n.shift(),o=at._queueHooks(e,t),s=function(){at.dequeue(e,t)};"inprogress"===a&&(a=n.shift(),i--),a&&("fx"===t&&n.unshift("inprogress"),delete o.stop,a.call(e,s,o)),!i&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return at._data(e,n)||at._data(e,n,{empty:at.Callbacks("once memory").add(function(){at._removeData(e,t+"queue"),at._removeData(e,n)})})}}),at.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?at.queue(this[0],e):void 0===t?this:this.each(function(){var n=at.queue(this,e,t);at._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&at.dequeue(this,e)})},dequeue:function(e){return this.each(function(){at.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,i=1,a=at.Deferred(),o=this,s=this.length,r=function(){--i||a.resolveWith(o,[o])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";s--;)n=at._data(o[s],e+"queueHooks"),n&&n.empty&&(i++,n.empty.add(r));return r(),a.promise(t)}});var Mt=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,At=["Top","Right","Bottom","Left"],xt=function(e,t){return e=t||e,"none"===at.css(e,"display")||!at.contains(e.ownerDocument,e)},Et=at.access=function(e,t,n,i,a,o,s){var r=0,c=e.length,l=null==n;if("object"===at.type(n)){a=!0;for(r in n)at.access(e,t,r,n[r],!0,o,s)}else if(void 0!==i&&(a=!0,at.isFunction(i)||(s=!0),l&&(s?(t.call(e,i),t=null):(l=t,t=function(e,t,n){return l.call(at(e),n)})),t))for(;c>r;r++)t(e[r],n,s?i:i.call(e[r],r,t(e[r],n)));return a?e:l?t.call(e):c?t(e[0],n):o},Tt=/^(?:checkbox|radio)$/i;!function(){var e=ht.createElement("input"),t=ht.createElement("div"),n=ht.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>"!==ht.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(i){nt.deleteExpando=!1}}}(),function(){var t,n,i=ht.createElement("div");for(t in{submit:!0,change:!0,focusin:!0})n="on"+t,(nt[t+"Bubbles"]=n in e)||(i.setAttribute(n,"t"),nt[t+"Bubbles"]=i.attributes[n].expando===!1);i=null}();var It=/^(?:input|select|textarea)$/i,Dt=/^key/,Pt=/^(?:mouse|pointer|contextmenu)|click/,Nt=/^(?:focusinfocus|focusoutblur)$/,Ut=/^([^.]*)(?:\.(.+)|)$/;at.event={global:{},add:function(e,t,n,i,a){var o,s,r,c,l,d,u,p,m,h,g,f=at._data(e);if(f){for(n.handler&&(c=n,n=c.handler,a=c.selector),n.guid||(n.guid=at.guid++),(s=f.events)||(s=f.events={}),(d=f.handle)||(d=f.handle=function(e){return typeof at===kt||e&&at.event.triggered===e.type?void 0:at.event.dispatch.apply(d.elem,arguments)},d.elem=e),t=(t||"").match(yt)||[""],r=t.length;r--;)o=Ut.exec(t[r])||[],m=g=o[1],h=(o[2]||"").split(".").sort(),m&&(l=at.event.special[m]||{},m=(a?l.delegateType:l.bindType)||m,l=at.event.special[m]||{},u=at.extend({type:m,origType:g,data:i,handler:n,guid:n.guid,selector:a,needsContext:a&&at.expr.match.needsContext.test(a),namespace:h.join(".")},c),(p=s[m])||(p=s[m]=[],p.delegateCount=0,l.setup&&l.setup.call(e,i,h,d)!==!1||(e.addEventListener?e.addEventListener(m,d,!1):e.attachEvent&&e.attachEvent("on"+m,d))),l.add&&(l.add.call(e,u),u.handler.guid||(u.handler.guid=n.guid)),a?p.splice(p.delegateCount++,0,u):p.push(u),at.event.global[m]=!0);e=null}},remove:function(e,t,n,i,a){var o,s,r,c,l,d,u,p,m,h,g,f=at.hasData(e)&&at._data(e);if(f&&(d=f.events)){for(t=(t||"").match(yt)||[""],l=t.length;l--;)if(r=Ut.exec(t[l])||[],m=g=r[1],h=(r[2]||"").split(".").sort(),m){for(u=at.event.special[m]||{},m=(i?u.delegateType:u.bindType)||m,p=d[m]||[],r=r[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),c=o=p.length;o--;)s=p[o],!a&&g!==s.origType||n&&n.guid!==s.guid||r&&!r.test(s.namespace)||i&&i!==s.selector&&("**"!==i||!s.selector)||(p.splice(o,1),s.selector&&p.delegateCount--,u.remove&&u.remove.call(e,s));c&&!p.length&&(u.teardown&&u.teardown.call(e,h,f.handle)!==!1||at.removeEvent(e,m,f.handle),delete d[m])}else for(m in d)at.event.remove(e,m+t[l],n,i,!0);at.isEmptyObject(d)&&(delete f.handle,at._removeData(e,"events"))}},trigger:function(t,n,i,a){var o,s,r,c,l,d,u,p=[i||ht],m=tt.call(t,"type")?t.type:t,h=tt.call(t,"namespace")?t.namespace.split("."):[];if(r=d=i=i||ht,3!==i.nodeType&&8!==i.nodeType&&!Nt.test(m+at.event.triggered)&&(m.indexOf(".")>=0&&(h=m.split("."),m=h.shift(),h.sort()),s=m.indexOf(":")<0&&"on"+m,t=t[at.expando]?t:new at.Event(m,"object"==typeof t&&t),t.isTrigger=a?2:3,t.namespace=h.join("."),t.namespace_re=t.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:at.makeArray(n,[t]),l=at.event.special[m]||{},a||!l.trigger||l.trigger.apply(i,n)!==!1)){if(!a&&!l.noBubble&&!at.isWindow(i)){for(c=l.delegateType||m,Nt.test(c+m)||(r=r.parentNode);r;r=r.parentNode)p.push(r),d=r;d===(i.ownerDocument||ht)&&p.push(d.defaultView||d.parentWindow||e)}for(u=0;(r=p[u++])&&!t.isPropagationStopped();)t.type=u>1?c:l.bindType||m,o=(at._data(r,"events")||{})[t.type]&&at._data(r,"handle"),o&&o.apply(r,n),o=s&&r[s],o&&o.apply&&at.acceptData(r)&&(t.result=o.apply(r,n),t.result===!1&&t.preventDefault());
if(t.type=m,!a&&!t.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),n)===!1)&&at.acceptData(i)&&s&&i[m]&&!at.isWindow(i)){d=i[s],d&&(i[s]=null),at.event.triggered=m;try{i[m]()}catch(g){}at.event.triggered=void 0,d&&(i[s]=d)}return t.result}},dispatch:function(e){e=at.event.fix(e);var t,n,i,a,o,s=[],r=Y.call(arguments),c=(at._data(this,"events")||{})[e.type]||[],l=at.event.special[e.type]||{};if(r[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){for(s=at.event.handlers.call(this,e,c),t=0;(a=s[t++])&&!e.isPropagationStopped();)for(e.currentTarget=a.elem,o=0;(i=a.handlers[o++])&&!e.isImmediatePropagationStopped();)(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,n=((at.event.special[i.origType]||{}).handle||i.handler).apply(a.elem,r),void 0!==n&&(e.result=n)===!1&&(e.preventDefault(),e.stopPropagation()));return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,i,a,o,s=[],r=t.delegateCount,c=e.target;if(r&&c.nodeType&&(!e.button||"click"!==e.type))for(;c!=this;c=c.parentNode||this)if(1===c.nodeType&&(c.disabled!==!0||"click"!==e.type)){for(a=[],o=0;r>o;o++)i=t[o],n=i.selector+" ",void 0===a[n]&&(a[n]=i.needsContext?at(n,this).index(c)>=0:at.find(n,this,null,[c]).length),a[n]&&a.push(i);a.length&&s.push({elem:c,handlers:a})}return r<t.length&&s.push({elem:this,handlers:t.slice(r)}),s},fix:function(e){if(e[at.expando])return e;var t,n,i,a=e.type,o=e,s=this.fixHooks[a];for(s||(this.fixHooks[a]=s=Pt.test(a)?this.mouseHooks:Dt.test(a)?this.keyHooks:{}),i=s.props?this.props.concat(s.props):this.props,e=new at.Event(o),t=i.length;t--;)n=i[t],e[n]=o[n];return e.target||(e.target=o.srcElement||ht),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,i,a,o=t.button,s=t.fromElement;return null==e.pageX&&null!=t.clientX&&(i=e.target.ownerDocument||ht,a=i.documentElement,n=i.body,e.pageX=t.clientX+(a&&a.scrollLeft||n&&n.scrollLeft||0)-(a&&a.clientLeft||n&&n.clientLeft||0),e.pageY=t.clientY+(a&&a.scrollTop||n&&n.scrollTop||0)-(a&&a.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!==h()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===h()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return at.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(e){return at.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,i){var a=at.extend(new at.Event,n,{type:e,isSimulated:!0,originalEvent:{}});i?at.event.trigger(a,null,t):at.event.dispatch.call(t,a),a.isDefaultPrevented()&&n.preventDefault()}},at.removeEvent=ht.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var i="on"+t;e.detachEvent&&(typeof e[i]===kt&&(e[i]=null),e.detachEvent(i,n))},at.Event=function(e,t){return this instanceof at.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&&at.extend(this,t),this.timeStamp=e&&e.timeStamp||at.now(),void(this[at.expando]=!0)):new at.Event(e,t)},at.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()}},at.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){at.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,i=this,a=e.relatedTarget,o=e.handleObj;return(!a||a!==i&&!at.contains(i,a))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),nt.submitBubbles||(at.event.special.submit={setup:function(){return at.nodeName(this,"form")?!1:void at.event.add(this,"click._submit keypress._submit",function(e){var t=e.target,n=at.nodeName(t,"input")||at.nodeName(t,"button")?t.form:void 0;n&&!at._data(n,"submitBubbles")&&(at.event.add(n,"submit._submit",function(e){e._submit_bubble=!0}),at._data(n,"submitBubbles",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&at.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return at.nodeName(this,"form")?!1:void at.event.remove(this,"._submit")}}),nt.changeBubbles||(at.event.special.change={setup:function(){return It.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(at.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),at.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),at.event.simulate("change",this,e,!0)})),!1):void at.event.add(this,"beforeactivate._change",function(e){var t=e.target;It.test(t.nodeName)&&!at._data(t,"changeBubbles")&&(at.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||at.event.simulate("change",this.parentNode,e,!0)}),at._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 at.event.remove(this,"._change"),!It.test(this.nodeName)}}),nt.focusinBubbles||at.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){at.event.simulate(t,e.target,at.event.fix(e),!0)};at.event.special[t]={setup:function(){var i=this.ownerDocument||this,a=at._data(i,t);a||i.addEventListener(e,n,!0),at._data(i,t,(a||0)+1)},teardown:function(){var i=this.ownerDocument||this,a=at._data(i,t)-1;a?at._data(i,t,a):(i.removeEventListener(e,n,!0),at._removeData(i,t))}}}),at.fn.extend({on:function(e,t,n,i,a){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],a);return this}if(null==n&&null==i?(i=t,n=t=void 0):null==i&&("string"==typeof t?(i=n,n=void 0):(i=n,n=t,t=void 0)),i===!1)i=m;else if(!i)return this;return 1===a&&(s=i,i=function(e){return at().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=at.guid++)),this.each(function(){at.event.add(this,e,i,n,t)})},one:function(e,t,n,i){return this.on(e,t,n,i,1)},off:function(e,t,n){var i,a;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,at(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(a in e)this.off(a,t,e[a]);return this}return(t===!1||"function"==typeof t)&&(n=t,t=void 0),n===!1&&(n=m),this.each(function(){at.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){at.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?at.event.trigger(e,t,n,!0):void 0}});var Ot="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",Lt=/ jQuery\d+="(?:null|\d+)"/g,Rt=new RegExp("<(?:"+Ot+")[\\s/>]","i"),Bt=/^\s+/,Ft=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,qt=/<([\w:]+)/,jt=/<tbody/i,Ht=/<|&#?\w+;/,zt=/<(?:script|style|link)/i,Vt=/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=g(ht),Xt=Zt.appendChild(ht.createElement("div"));Yt.optgroup=Yt.option,Yt.tbody=Yt.tfoot=Yt.colgroup=Yt.caption=Yt.thead,Yt.th=Yt.td,at.extend({clone:function(e,t,n){var i,a,o,s,r,c=at.contains(e.ownerDocument,e);if(nt.html5Clone||at.isXMLDoc(e)||!Rt.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||at.isXMLDoc(e)))for(i=f(o),r=f(e),s=0;null!=(a=r[s]);++s)i[s]&&k(a,i[s]);if(t)if(n)for(r=r||f(e),i=i||f(o),s=0;null!=(a=r[s]);s++)$(a,i[s]);else $(e,o);return i=f(o,"script"),i.length>0&&w(i,!c&&f(e,"script")),i=r=a=null,o},buildFragment:function(e,t,n,i){for(var a,o,s,r,c,l,d,u=e.length,p=g(t),m=[],h=0;u>h;h++)if(o=e[h],o||0===o)if("object"===at.type(o))at.merge(m,o.nodeType?[o]:o);else if(Ht.test(o)){for(r=r||p.appendChild(t.createElement("div")),c=(qt.exec(o)||["",""])[1].toLowerCase(),d=Yt[c]||Yt._default,r.innerHTML=d[1]+o.replace(Ft,"<$1></$2>")+d[2],a=d[0];a--;)r=r.lastChild;if(!nt.leadingWhitespace&&Bt.test(o)&&m.push(t.createTextNode(Bt.exec(o)[0])),!nt.tbody)for(o="table"!==c||jt.test(o)?"<table>"!==d[1]||jt.test(o)?0:r:r.firstChild,a=o&&o.childNodes.length;a--;)at.nodeName(l=o.childNodes[a],"tbody")&&!l.childNodes.length&&o.removeChild(l);for(at.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||at.grep(f(m,"input"),_),h=0;o=m[h++];)if((!i||-1===at.inArray(o,i))&&(s=at.contains(o.ownerDocument,o),r=f(p.appendChild(o),"script"),s&&w(r),n))for(a=0;o=r[a++];)Wt.test(o.type||"")&&n.push(o);return r=null,p},cleanData:function(e,t){for(var n,i,a,o,s=0,r=at.expando,c=at.cache,l=nt.deleteExpando,d=at.event.special;null!=(n=e[s]);s++)if((t||at.acceptData(n))&&(a=n[r],o=a&&c[a])){if(o.events)for(i in o.events)d[i]?at.event.remove(n,i):at.removeEvent(n,i,o.handle);c[a]&&(delete c[a],l?delete n[r]:typeof n.removeAttribute!==kt?n.removeAttribute(r):n[r]=null,K.push(a))}}}),at.fn.extend({text:function(e){return Et(this,function(e){return void 0===e?at.text(this):this.empty().append((this[0]&&this[0].ownerDocument||ht).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,i=e?at.filter(e,this):this,a=0;null!=(n=i[a]);a++)t||1!==n.nodeType||at.cleanData(f(n)),n.parentNode&&(t&&at.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&&at.cleanData(f(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&at.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 at.clone(this,e,t)})},html:function(e){return Et(this,function(e){var t=this[0]||{},n=0,i=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(Lt,""):void 0;if(!("string"!=typeof e||zt.test(e)||!nt.htmlSerialize&&Rt.test(e)||!nt.leadingWhitespace&&Bt.test(e)||Yt[(qt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(Ft,"<$1></$2>");try{for(;i>n;n++)t=this[n]||{},1===t.nodeType&&(at.cleanData(f(t,!1)),t.innerHTML=e);t=0}catch(a){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=arguments[0];return this.domManip(arguments,function(t){e=this.parentNode,at.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,i,a,o,s,r,c=0,l=this.length,d=this,u=l-1,p=e[0],m=at.isFunction(p);if(m||l>1&&"string"==typeof p&&!nt.checkClone&&Vt.test(p))return this.each(function(n){var i=d.eq(n);m&&(e[0]=p.call(this,n,i.html())),i.domManip(e,t)});if(l&&(r=at.buildFragment(e,this[0].ownerDocument,!1,this),n=r.firstChild,1===r.childNodes.length&&(r=n),n)){for(o=at.map(f(r,"script"),y),a=o.length;l>c;c++)i=r,c!==u&&(i=at.clone(i,!0,!0),a&&at.merge(o,f(i,"script"))),t.call(this[c],i,c);if(a)for(s=o[o.length-1].ownerDocument,at.map(o,b),c=0;a>c;c++)i=o[c],Wt.test(i.type||"")&&!at._data(i,"globalEval")&&at.contains(s,i)&&(i.src?at._evalUrl&&at._evalUrl(i.src):at.globalEval((i.text||i.textContent||i.innerHTML||"").replace(Kt,"")));r=n=null}return this}}),at.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){at.fn[e]=function(e){for(var n,i=0,a=[],o=at(e),s=o.length-1;s>=i;i++)n=i===s?this:this.clone(!0),at(o[i])[t](n),X.apply(a,n.get());return this.pushStack(a)}});var Jt,Qt={};!function(){var e;nt.shrinkWrapBlocks=function(){if(null!=e)return e;e=!1;var t,n,i;return n=ht.getElementsByTagName("body")[0],n&&n.style?(t=ht.createElement("div"),i=ht.createElement("div"),i.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(i).appendChild(t),typeof t.style.zoom!==kt&&(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(ht.createElement("div")).style.width="5px",e=3!==t.offsetWidth),n.removeChild(i),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 i,a,o,s,r=e.style;return n=n||en(e),s=n?n.getPropertyValue(t)||n[t]:void 0,n&&(""!==s||at.contains(e.ownerDocument,e)||(s=at.style(e,t)),an.test(s)&&nn.test(t)&&(i=r.width,a=r.minWidth,o=r.maxWidth,r.minWidth=r.maxWidth=r.width=s,s=n.width,r.width=i,r.minWidth=a,r.maxWidth=o)),void 0===s?s:s+""}):ht.documentElement.currentStyle&&(en=function(e){return e.currentStyle},tn=function(e,t,n){var i,a,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)&&(i=r.left,a=e.runtimeStyle,o=a&&a.left,o&&(a.left=e.currentStyle.left),r.left="fontSize"===t?"1em":s,s=r.pixelLeft+"px",r.left=i,o&&(a.left=o)),void 0===s?s:s+""||"auto"}),!function(){function t(){var t,n,i,a;n=ht.getElementsByTagName("body")[0],n&&n.style&&(t=ht.createElement("div"),i=ht.createElement("div"),i.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(i).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,c=!0,e.getComputedStyle&&(o="1%"!==(e.getComputedStyle(t,null)||{}).top,s="4px"===(e.getComputedStyle(t,null)||{width:"4px"}).width,a=t.appendChild(ht.createElement("div")),a.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",a.style.marginRight=a.style.width="0",t.style.width="1px",c=!parseFloat((e.getComputedStyle(a,null)||{}).marginRight)),t.innerHTML="<table><tr><td></td><td>t</td></tr></table>",a=t.getElementsByTagName("td"),a[0].style.cssText="margin:0;border:0;padding:0;display:none",r=0===a[0].offsetHeight,r&&(a[0].style.display="",a[1].style.display="none",r=0===a[0].offsetHeight),n.removeChild(i))}var n,i,a,o,s,r,c;n=ht.createElement("div"),n.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=n.getElementsByTagName("a")[0],(i=a&&a.style)&&(i.cssText="float:left;opacity:.5",nt.opacity="0.5"===i.opacity,nt.cssFloat=!!i.cssFloat,n.style.backgroundClip="content-box",n.cloneNode(!0).style.backgroundClip="",nt.clearCloneStyle="content-box"===n.style.backgroundClip,nt.boxSizing=""===i.boxSizing||""===i.MozBoxSizing||""===i.WebkitBoxSizing,at.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==c&&t(),c}}))}(),at.swap=function(e,t,n,i){var a,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];a=n.apply(e,i||[]);for(o in t)e.style[o]=s[o];return a};var sn=/alpha\([^)]*\)/i,rn=/opacity\s*=\s*([^)]*)/,cn=/^(none|table(?!-c[ea]).+)/,ln=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"];at.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,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var a,o,s,r=at.camelCase(t),c=e.style;if(t=at.cssProps[r]||(at.cssProps[r]=A(c,r)),s=at.cssHooks[t]||at.cssHooks[r],void 0===n)return s&&"get"in s&&void 0!==(a=s.get(e,!1,i))?a:c[t];if(o=typeof n,"string"===o&&(a=dn.exec(n))&&(n=(a[1]+1)*a[2]+parseFloat(at.css(e,t)),o="number"),null!=n&&n===n&&("number"!==o||at.cssNumber[r]||(n+="px"),nt.clearCloneStyle||""!==n||0!==t.indexOf("background")||(c[t]="inherit"),!(s&&"set"in s&&void 0===(n=s.set(e,n,i)))))try{c[t]=n}catch(l){}}},css:function(e,t,n,i){var a,o,s,r=at.camelCase(t);return t=at.cssProps[r]||(at.cssProps[r]=A(e.style,r)),s=at.cssHooks[t]||at.cssHooks[r],s&&"get"in s&&(o=s.get(e,!0,n)),void 0===o&&(o=tn(e,t,i)),"normal"===o&&t in pn&&(o=pn[t]),""===n||n?(a=parseFloat(o),n===!0||at.isNumeric(a)?a||0:o):o}}),at.each(["height","width"],function(e,t){at.cssHooks[t]={get:function(e,n,i){return n?cn.test(at.css(e,"display"))&&0===e.offsetWidth?at.swap(e,un,function(){return I(e,t,i)}):I(e,t,i):void 0},set:function(e,n,i){var a=i&&en(e);return E(e,n,i?T(e,t,i,nt.boxSizing&&"border-box"===at.css(e,"boxSizing",!1,a),a):0)}}}),nt.opacity||(at.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,i=e.currentStyle,a=at.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=i&&i.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===at.trim(o.replace(sn,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||i&&!i.filter)||(n.filter=sn.test(o)?o.replace(sn,a):o+" "+a)}}),at.cssHooks.marginRight=M(nt.reliableMarginRight,function(e,t){return t?at.swap(e,{display:"inline-block"},tn,[e,"marginRight"]):void 0}),at.each({margin:"",padding:"",border:"Width"},function(e,t){at.cssHooks[e+t]={expand:function(n){for(var i=0,a={},o="string"==typeof n?n.split(" "):[n];4>i;i++)a[e+At[i]+t]=o[i]||o[i-2]||o[0];return a}},nn.test(e)||(at.cssHooks[e+t].set=E)}),at.fn.extend({css:function(e,t){return Et(this,function(e,t,n){var i,a,o={},s=0;if(at.isArray(t)){for(i=en(e),a=t.length;a>s;s++)o[t[s]]=at.css(e,t[s],!1,i);return o}return void 0!==n?at.style(e,t,n):at.css(e,t)},e,t,arguments.length>1)},show:function(){return x(this,!0)},hide:function(){return x(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){xt(this)?at(this).show():at(this).hide()})}}),at.Tween=D,D.prototype={constructor:D,init:function(e,t,n,i,a,o){this.elem=e,this.prop=n,this.easing=a||"swing",this.options=t,this.start=this.now=this.cur(),this.end=i,this.unit=o||(at.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?at.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=at.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){at.fx.step[e.prop]?at.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[at.cssProps[e.prop]]||at.cssHooks[e.prop])?at.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)}},at.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},at.fx=D.prototype.init,at.fx.step={};var hn,gn,fn=/^(?:toggle|show|hide)$/,_n=new RegExp("^(?:([+-])=|)("+Mt+")([a-z%]*)$","i"),vn=/queueHooks$/,yn=[O],bn={"*":[function(e,t){var n=this.createTween(e,t),i=n.cur(),a=_n.exec(t),o=a&&a[3]||(at.cssNumber[e]?"":"px"),s=(at.cssNumber[e]||"px"!==o&&+i)&&_n.exec(at.css(n.elem,e)),r=1,c=20;if(s&&s[3]!==o){o=o||s[3],a=a||[],s=+i||1;do r=r||".5",s/=r,at.style(n.elem,e,s+o);while(r!==(r=n.cur()/i)&&1!==r&&--c)}return a&&(s=n.start=+s||+i||0,n.unit=o,n.end=a[1]?s+(a[1]+1)*a[2]:+a[2]),n}]};at.Animation=at.extend(R,{tweener:function(e,t){at.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");for(var n,i=0,a=e.length;a>i;i++)n=e[i],bn[n]=bn[n]||[],bn[n].unshift(t)},prefilter:function(e,t){t?yn.unshift(e):yn.push(e)}}),at.speed=function(e,t,n){var i=e&&"object"==typeof e?at.extend({},e):{complete:n||!n&&t||at.isFunction(e)&&e,duration:e,easing:n&&t||t&&!at.isFunction(t)&&t};return i.duration=at.fx.off?0:"number"==typeof i.duration?i.duration:i.duration in at.fx.speeds?at.fx.speeds[i.duration]:at.fx.speeds._default,(null==i.queue||i.queue===!0)&&(i.queue="fx"),i.old=i.complete,i.complete=function(){at.isFunction(i.old)&&i.old.call(this),i.queue&&at.dequeue(this,i.queue)},i},at.fn.extend({fadeTo:function(e,t,n,i){return this.filter(xt).css("opacity",0).show().end().animate({opacity:t},e,n,i)},animate:function(e,t,n,i){var a=at.isEmptyObject(e),o=at.speed(t,n,i),s=function(){var t=R(this,at.extend({},e),o);(a||at._data(this,"finish"))&&t.stop(!0)};return s.finish=s,a||o.queue===!1?this.each(s):this.queue(o.queue,s)},stop:function(e,t,n){var i=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,a=null!=e&&e+"queueHooks",o=at.timers,s=at._data(this);if(a)s[a]&&s[a].stop&&i(s[a]);else for(a in s)s[a]&&s[a].stop&&vn.test(a)&&i(s[a]);for(a=o.length;a--;)o[a].elem!==this||null!=e&&o[a].queue!==e||(o[a].anim.stop(n),t=!1,o.splice(a,1));(t||!n)&&at.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=at._data(this),i=n[e+"queue"],a=n[e+"queueHooks"],o=at.timers,s=i?i.length:0;for(n.finish=!0,at.queue(this,e,[]),a&&a.stop&&a.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++)i[t]&&i[t].finish&&i[t].finish.call(this);delete n.finish})}}),at.each(["toggle","show","hide"],function(e,t){var n=at.fn[t];at.fn[t]=function(e,i,a){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(N(t,!0),e,i,a)}}),at.each({slideDown:N("show"),slideUp:N("hide"),slideToggle:N("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){at.fn[e]=function(e,n,i){return this.animate(t,e,n,i)}}),at.timers=[],at.fx.tick=function(){var e,t=at.timers,n=0;for(hn=at.now();n<t.length;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||at.fx.stop(),hn=void 0},at.fx.timer=function(e){at.timers.push(e),e()?at.fx.start():at.timers.pop()},at.fx.interval=13,at.fx.start=function(){gn||(gn=setInterval(at.fx.tick,at.fx.interval))},at.fx.stop=function(){clearInterval(gn),gn=null},at.fx.speeds={slow:600,fast:200,_default:400},at.fn.delay=function(e,t){return e=at.fx?at.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var i=setTimeout(t,e);n.stop=function(){clearTimeout(i)}})},function(){var e,t,n,i,a;t=ht.createElement("div"),t.setAttribute("className","t"),t.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",i=t.getElementsByTagName("a")[0],n=ht.createElement("select"),a=n.appendChild(ht.createElement("option")),e=t.getElementsByTagName("input")[0],i.style.cssText="top:1px",nt.getSetAttribute="t"!==t.className,nt.style=/top/.test(i.getAttribute("style")),nt.hrefNormalized="/a"===i.getAttribute("href"),nt.checkOn=!!e.value,nt.optSelected=a.selected,nt.enctype=!!ht.createElement("form").enctype,n.disabled=!0,nt.optDisabled=!a.disabled,e=ht.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;at.fn.extend({val:function(e){var t,n,i,a=this[0];return arguments.length?(i=at.isFunction(e),this.each(function(n){var a;1===this.nodeType&&(a=i?e.call(this,n,at(this).val()):e,null==a?a="":"number"==typeof a?a+="":at.isArray(a)&&(a=at.map(a,function(e){return null==e?"":e+""})),t=at.valHooks[this.type]||at.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,a,"value")||(this.value=a))})):a?(t=at.valHooks[a.type]||at.valHooks[a.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(a,"value"))?n:(n=a.value,"string"==typeof n?n.replace(wn,""):null==n?"":n)):void 0}}),at.extend({valHooks:{option:{get:function(e){var t=at.find.attr(e,"value");return null!=t?t:at.trim(at.text(e))}},select:{get:function(e){for(var t,n,i=e.options,a=e.selectedIndex,o="select-one"===e.type||0>a,s=o?null:[],r=o?a+1:i.length,c=0>a?r:o?a:0;r>c;c++)if(n=i[c],!(!n.selected&&c!==a||(nt.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&at.nodeName(n.parentNode,"optgroup"))){if(t=at(n).val(),o)return t;s.push(t)}return s},set:function(e,t){for(var n,i,a=e.options,o=at.makeArray(t),s=a.length;s--;)if(i=a[s],at.inArray(at.valHooks.option.get(i),o)>=0)try{i.selected=n=!0}catch(r){i.scrollHeight}else i.selected=!1;return n||(e.selectedIndex=-1),a}}}}),at.each(["radio","checkbox"],function(){at.valHooks[this]={set:function(e,t){return at.isArray(t)?e.checked=at.inArray(at(e).val(),t)>=0:void 0}},nt.checkOn||(at.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var $n,kn,Sn=at.expr.attrHandle,Cn=/^(?:checked|selected)$/i,Mn=nt.getSetAttribute,An=nt.input;at.fn.extend({attr:function(e,t){return Et(this,at.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){at.removeAttr(this,e)})}}),at.extend({attr:function(e,t,n){var i,a,o=e.nodeType;return e&&3!==o&&8!==o&&2!==o?typeof e.getAttribute===kt?at.prop(e,t,n):(1===o&&at.isXMLDoc(e)||(t=t.toLowerCase(),i=at.attrHooks[t]||(at.expr.match.bool.test(t)?kn:$n)),void 0===n?i&&"get"in i&&null!==(a=i.get(e,t))?a:(a=at.find.attr(e,t),null==a?void 0:a):null!==n?i&&"set"in i&&void 0!==(a=i.set(e,n,t))?a:(e.setAttribute(t,n+""),n):void at.removeAttr(e,t)):void 0},removeAttr:function(e,t){var n,i,a=0,o=t&&t.match(yt);if(o&&1===e.nodeType)for(;n=o[a++];)i=at.propFix[n]||n,at.expr.match.bool.test(n)?An&&Mn||!Cn.test(n)?e[i]=!1:e[at.camelCase("default-"+n)]=e[i]=!1:at.attr(e,n,""),e.removeAttribute(Mn?n:i)},attrHooks:{type:{set:function(e,t){if(!nt.radioValue&&"radio"===t&&at.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}}}),kn={set:function(e,t,n){return t===!1?at.removeAttr(e,n):An&&Mn||!Cn.test(n)?e.setAttribute(!Mn&&at.propFix[n]||n,n):e[at.camelCase("default-"+n)]=e[n]=!0,n}},at.each(at.expr.match.bool.source.match(/\w+/g),function(e,t){var n=Sn[t]||at.find.attr;Sn[t]=An&&Mn||!Cn.test(t)?function(e,t,i){var a,o;return i||(o=Sn[t],Sn[t]=a,a=null!=n(e,t,i)?t.toLowerCase():null,Sn[t]=o),a}:function(e,t,n){return n?void 0:e[at.camelCase("default-"+t)]?t.toLowerCase():null}}),An&&Mn||(at.attrHooks.value={set:function(e,t,n){return at.nodeName(e,"input")?void(e.defaultValue=t):$n&&$n.set(e,t,n)}}),Mn||($n={set:function(e,t,n){var i=e.getAttributeNode(n);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(n)),i.value=t+="","value"===n||t===e.getAttribute(n)?t:void 0}},Sn.id=Sn.name=Sn.coords=function(e,t,n){var i;return n?void 0:(i=e.getAttributeNode(t))&&""!==i.value?i.value:null},at.valHooks.button={get:function(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:void 0},set:$n.set},at.attrHooks.contenteditable={set:function(e,t,n){$n.set(e,""===t?!1:t,n)}},at.each(["width","height"],function(e,t){at.attrHooks[t]={set:function(e,n){return""===n?(e.setAttribute(t,"auto"),n):void 0}}})),nt.style||(at.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+""}});var xn=/^(?:input|select|textarea|button|object)$/i,En=/^(?:a|area)$/i;at.fn.extend({prop:function(e,t){return Et(this,at.prop,e,t,arguments.length>1)},removeProp:function(e){return e=at.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(t){}})}}),at.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(e,t,n){var i,a,o,s=e.nodeType;return e&&3!==s&&8!==s&&2!==s?(o=1!==s||!at.isXMLDoc(e),o&&(t=at.propFix[t]||t,a=at.propHooks[t]),void 0!==n?a&&"set"in a&&void 0!==(i=a.set(e,n,t))?i:e[t]=n:a&&"get"in a&&null!==(i=a.get(e,t))?i:e[t]):void 0},propHooks:{tabIndex:{get:function(e){var t=at.find.attr(e,"tabindex");return t?parseInt(t,10):xn.test(e.nodeName)||En.test(e.nodeName)&&e.href?0:-1}}}}),nt.hrefNormalized||at.each(["href","src"],function(e,t){at.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),nt.optSelected||(at.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),at.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){at.propFix[this.toLowerCase()]=this}),nt.enctype||(at.propFix.enctype="encoding");var Tn=/[\t\r\n\f]/g;at.fn.extend({addClass:function(e){var t,n,i,a,o,s,r=0,c=this.length,l="string"==typeof e&&e;if(at.isFunction(e))return this.each(function(t){at(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(yt)||[];c>r;r++)if(n=this[r],i=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(Tn," "):" ")){for(o=0;a=t[o++];)i.indexOf(" "+a+" ")<0&&(i+=a+" ");s=at.trim(i),n.className!==s&&(n.className=s)}return this},removeClass:function(e){var t,n,i,a,o,s,r=0,c=this.length,l=0===arguments.length||"string"==typeof e&&e;if(at.isFunction(e))return this.each(function(t){at(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(yt)||[];c>r;r++)if(n=this[r],i=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(Tn," "):"")){for(o=0;a=t[o++];)for(;i.indexOf(" "+a+" ")>=0;)i=i.replace(" "+a+" "," ");
s=e?at.trim(i):"",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(at.isFunction(e)?function(n){at(this).toggleClass(e.call(this,n,this.className,t),t)}:function(){if("string"===n)for(var t,i=0,a=at(this),o=e.match(yt)||[];t=o[i++];)a.hasClass(t)?a.removeClass(t):a.addClass(t);else(n===kt||"boolean"===n)&&(this.className&&at._data(this,"__className__",this.className),this.className=this.className||e===!1?"":at._data(this,"__className__")||"")})},hasClass:function(e){for(var t=" "+e+" ",n=0,i=this.length;i>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(Tn," ").indexOf(t)>=0)return!0;return!1}}),at.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){at.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),at.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,i){return this.on(t,e,n,i)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var In=at.now(),Dn=/\?/,Pn=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;at.parseJSON=function(t){if(e.JSON&&e.JSON.parse)return e.JSON.parse(t+"");var n,i=null,a=at.trim(t+"");return a&&!at.trim(a.replace(Pn,function(e,t,a,o){return n&&t&&(i=0),0===i?e:(n=a||t,i+=!o-!a,"")}))?Function("return "+a)():at.error("Invalid JSON: "+t)},at.parseXML=function(t){var n,i;if(!t||"string"!=typeof t)return null;try{e.DOMParser?(i=new DOMParser,n=i.parseFromString(t,"text/xml")):(n=new ActiveXObject("Microsoft.XMLDOM"),n.async="false",n.loadXML(t))}catch(a){n=void 0}return n&&n.documentElement&&!n.getElementsByTagName("parsererror").length||at.error("Invalid XML: "+t),n};var Nn,Un,On=/#.*$/,Ln=/([?&])_=[^&]*/,Rn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Bn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fn=/^(?:GET|HEAD)$/,qn=/^\/\//,jn=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hn={},zn={},Vn="*/".concat("*");try{Un=location.href}catch(Wn){Un=ht.createElement("a"),Un.href="",Un=Un.href}Nn=jn.exec(Un.toLowerCase())||[],at.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Un,type:"GET",isLocal:Bn.test(Nn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Vn,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":at.parseJSON,"text xml":at.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?q(q(e,at.ajaxSettings),t):q(at.ajaxSettings,e)},ajaxPrefilter:B(Hn),ajaxTransport:B(zn),ajax:function(e,t){function n(e,t,n,i){var a,d,_,v,b,$=t;2!==y&&(y=2,r&&clearTimeout(r),l=void 0,s=i||"",w.readyState=e>0?4:0,a=e>=200&&300>e||304===e,n&&(v=j(u,w,n)),v=H(u,v,w,a),a?(u.ifModified&&(b=w.getResponseHeader("Last-Modified"),b&&(at.lastModified[o]=b),b=w.getResponseHeader("etag"),b&&(at.etag[o]=b)),204===e||"HEAD"===u.type?$="nocontent":304===e?$="notmodified":($=v.state,d=v.data,_=v.error,a=!_)):(_=$,(e||!$)&&($="error",0>e&&(e=0))),w.status=e,w.statusText=(t||$)+"",a?h.resolveWith(p,[d,$,w]):h.rejectWith(p,[w,$,_]),w.statusCode(f),f=void 0,c&&m.trigger(a?"ajaxSuccess":"ajaxError",[w,u,a?d:_]),g.fireWith(p,[w,$]),c&&(m.trigger("ajaxComplete",[w,u]),--at.active||at.event.trigger("ajaxStop")))}"object"==typeof e&&(t=e,e=void 0),t=t||{};var i,a,o,s,r,c,l,d,u=at.ajaxSetup({},t),p=u.context||u,m=u.context&&(p.nodeType||p.jquery)?at(p):at.event,h=at.Deferred(),g=at.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=Rn.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 l&&l.abort(t),n(0,t),this}};if(h.promise(w).complete=g.add,w.success=w.done,w.error=w.fail,u.url=((e||u.url||Un)+"").replace(On,"").replace(qn,Nn[1]+"//"),u.type=t.method||t.type||u.method||u.type,u.dataTypes=at.trim(u.dataType||"*").toLowerCase().match(yt)||[""],null==u.crossDomain&&(i=jn.exec(u.url.toLowerCase()),u.crossDomain=!(!i||i[1]===Nn[1]&&i[2]===Nn[2]&&(i[3]||("http:"===i[1]?"80":"443"))===(Nn[3]||("http:"===Nn[1]?"80":"443")))),u.data&&u.processData&&"string"!=typeof u.data&&(u.data=at.param(u.data,u.traditional)),F(Hn,u,t,w),2===y)return w;c=u.global,c&&0===at.active++&&at.event.trigger("ajaxStart"),u.type=u.type.toUpperCase(),u.hasContent=!Fn.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=Ln.test(o)?o.replace(Ln,"$1_="+In++):o+(Dn.test(o)?"&":"?")+"_="+In++)),u.ifModified&&(at.lastModified[o]&&w.setRequestHeader("If-Modified-Since",at.lastModified[o]),at.etag[o]&&w.setRequestHeader("If-None-Match",at.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]?", "+Vn+"; q=0.01":""):u.accepts["*"]);for(a in u.headers)w.setRequestHeader(a,u.headers[a]);if(u.beforeSend&&(u.beforeSend.call(p,w,u)===!1||2===y))return w.abort();b="abort";for(a in{success:1,error:1,complete:1})w[a](u[a]);if(l=F(zn,u,t,w)){w.readyState=1,c&&m.trigger("ajaxSend",[w,u]),u.async&&u.timeout>0&&(r=setTimeout(function(){w.abort("timeout")},u.timeout));try{y=1,l.send(_,n)}catch($){if(!(2>y))throw $;n(-1,$)}}else n(-1,"No Transport");return w},getJSON:function(e,t,n){return at.get(e,t,n,"json")},getScript:function(e,t){return at.get(e,void 0,t,"script")}}),at.each(["get","post"],function(e,t){at[t]=function(e,n,i,a){return at.isFunction(n)&&(a=a||i,i=n,n=void 0),at.ajax({url:e,type:t,dataType:a,data:n,success:i})}}),at.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){at.fn[t]=function(e){return this.on(t,e)}}),at._evalUrl=function(e){return at.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},at.fn.extend({wrapAll:function(e){if(at.isFunction(e))return this.each(function(t){at(this).wrapAll(e.call(this,t))});if(this[0]){var t=at(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(at.isFunction(e)?function(t){at(this).wrapInner(e.call(this,t))}:function(){var t=at(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=at.isFunction(e);return this.each(function(n){at(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){at.nodeName(this,"body")||at(this).replaceWith(this.childNodes)}).end()}}),at.expr.filters.hidden=function(e){return e.offsetWidth<=0&&e.offsetHeight<=0||!nt.reliableHiddenOffsets()&&"none"===(e.style&&e.style.display||at.css(e,"display"))},at.expr.filters.visible=function(e){return!at.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;at.param=function(e,t){var n,i=[],a=function(e,t){t=at.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=at.ajaxSettings&&at.ajaxSettings.traditional),at.isArray(e)||e.jquery&&!at.isPlainObject(e))at.each(e,function(){a(this.name,this.value)});else for(n in e)z(n,e[n],t,a);return i.join("&").replace(Gn,"+")},at.fn.extend({serialize:function(){return at.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=at.prop(this,"elements");return e?at.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!at(this).is(":disabled")&&Xn.test(this.nodeName)&&!Zn.test(e)&&(this.checked||!Tt.test(e))}).map(function(e,t){var n=at(this).val();return null==n?null:at.isArray(n)?at.map(n,function(e){return{name:t.name,value:e.replace(Yn,"\r\n")}}):{name:t.name,value:n.replace(Yn,"\r\n")}}).get()}}),at.ajaxSettings.xhr=void 0!==e.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&V()||W()}:V;var Jn=0,Qn={},ei=at.ajaxSettings.xhr();e.ActiveXObject&&at(e).on("unload",function(){for(var e in Qn)Qn[e](void 0,!0)}),nt.cors=!!ei&&"withCredentials"in ei,ei=nt.ajax=!!ei,ei&&at.ajaxTransport(function(e){if(!e.crossDomain||nt.cors){var t;return{send:function(n,i){var a,o=e.xhr(),s=++Jn;if(o.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)o[a]=e.xhrFields[a];e.mimeType&&o.overrideMimeType&&o.overrideMimeType(e.mimeType),e.crossDomain||n["X-Requested-With"]||(n["X-Requested-With"]="XMLHttpRequest");for(a in n)void 0!==n[a]&&o.setRequestHeader(a,n[a]+"");o.send(e.hasContent&&e.data||null),t=function(n,a){var r,c,l;if(t&&(a||4===o.readyState))if(delete Qn[s],t=void 0,o.onreadystatechange=at.noop,a)4!==o.readyState&&o.abort();else{l={},r=o.status,"string"==typeof o.responseText&&(l.text=o.responseText);try{c=o.statusText}catch(d){c=""}r||!e.isLocal||e.crossDomain?1223===r&&(r=204):r=l.text?200:404}l&&i(r,c,l,o.getAllResponseHeaders())},e.async?4===o.readyState?setTimeout(t):o.onreadystatechange=Qn[s]=t:t()},abort:function(){t&&t(void 0,!0)}}}}),at.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return at.globalEval(e),e}}}),at.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),at.ajaxTransport("script",function(e){if(e.crossDomain){var t,n=ht.head||at("head")[0]||ht.documentElement;return{send:function(i,a){t=ht.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||a(200,"success"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var ti=[],ni=/(=)\?(?=&|$)|\?\?/;at.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=ti.pop()||at.expando+"_"+In++;return this[e]=!0,e}}),at.ajaxPrefilter("json jsonp",function(t,n,i){var a,o,s,r=t.jsonp!==!1&&(ni.test(t.url)?"url":"string"==typeof t.data&&!(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&ni.test(t.data)&&"data");return r||"jsonp"===t.dataTypes[0]?(a=t.jsonpCallback=at.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,r?t[r]=t[r].replace(ni,"$1"+a):t.jsonp!==!1&&(t.url+=(Dn.test(t.url)?"&":"?")+t.jsonp+"="+a),t.converters["script json"]=function(){return s||at.error(a+" was not called"),s[0]},t.dataTypes[0]="json",o=e[a],e[a]=function(){s=arguments},i.always(function(){e[a]=o,t[a]&&(t.jsonpCallback=n.jsonpCallback,ti.push(a)),s&&at.isFunction(o)&&o(s[0]),s=o=void 0}),"script"):void 0}),at.parseHTML=function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||ht;var i=ut.exec(e),a=!n&&[];return i?[t.createElement(i[1])]:(i=at.buildFragment([e],t,a),a&&a.length&&at(a).remove(),at.merge([],i.childNodes))};var ii=at.fn.load;at.fn.load=function(e,t,n){if("string"!=typeof e&&ii)return ii.apply(this,arguments);var i,a,o,s=this,r=e.indexOf(" ");return r>=0&&(i=at.trim(e.slice(r,e.length)),e=e.slice(0,r)),at.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(o="POST"),s.length>0&&at.ajax({url:e,type:o,dataType:"html",data:t}).done(function(e){a=arguments,s.html(i?at("<div>").append(at.parseHTML(e)).find(i):e)}).complete(n&&function(e,t){s.each(n,a||[e.responseText,t,e])}),this},at.expr.filters.animated=function(e){return at.grep(at.timers,function(t){return e===t.elem}).length};var ai=e.document.documentElement;at.offset={setOffset:function(e,t,n){var i,a,o,s,r,c,l,d=at.css(e,"position"),u=at(e),p={};"static"===d&&(e.style.position="relative"),r=u.offset(),o=at.css(e,"top"),c=at.css(e,"left"),l=("absolute"===d||"fixed"===d)&&at.inArray("auto",[o,c])>-1,l?(i=u.position(),s=i.top,a=i.left):(s=parseFloat(o)||0,a=parseFloat(c)||0),at.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+a),"using"in t?t.using.call(e,p):u.css(p)}},at.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){at.offset.setOffset(this,e,t)});var t,n,i={top:0,left:0},a=this[0],o=a&&a.ownerDocument;return o?(t=o.documentElement,at.contains(t,a)?(typeof a.getBoundingClientRect!==kt&&(i=a.getBoundingClientRect()),n=G(o),{top:i.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:i.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):i):void 0},position:function(){if(this[0]){var e,t,n={top:0,left:0},i=this[0];return"fixed"===at.css(i,"position")?t=i.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),at.nodeName(e[0],"html")||(n=e.offset()),n.top+=at.css(e[0],"borderTopWidth",!0),n.left+=at.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-at.css(i,"marginTop",!0),left:t.left-n.left-at.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent||ai;e&&!at.nodeName(e,"html")&&"static"===at.css(e,"position");)e=e.offsetParent;return e||ai})}}),at.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n=/Y/.test(t);at.fn[e]=function(i){return Et(this,function(e,i,a){var o=G(e);return void 0===a?o?t in o?o[t]:o.document.documentElement[i]:e[i]:void(o?o.scrollTo(n?at(o).scrollLeft():a,n?a:at(o).scrollTop()):e[i]=a)},e,i,arguments.length,null)}}),at.each(["top","left"],function(e,t){at.cssHooks[t]=M(nt.pixelPosition,function(e,n){return n?(n=tn(e,t),an.test(n)?at(e).position()[t]+"px":n):void 0})}),at.each({Height:"height",Width:"width"},function(e,t){at.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,i){at.fn[i]=function(i,a){var o=arguments.length&&(n||"boolean"!=typeof i),s=n||(i===!0||a===!0?"margin":"border");return Et(this,function(t,n,i){var a;return at.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(a=t.documentElement,Math.max(t.body["scroll"+e],a["scroll"+e],t.body["offset"+e],a["offset"+e],a["client"+e])):void 0===i?at.css(t,n,s):at.style(t,n,i,s)},t,o?i:void 0,o,null)}})}),at.fn.size=function(){return this.length},at.fn.andSelf=at.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return at});var oi=e.jQuery,si=e.$;return at.noConflict=function(t){return e.$===at&&(e.$=si),t&&e.jQuery===at&&(e.jQuery=oi),at},typeof t===kt&&(e.jQuery=e.$=at),at}),Config=window.Config||{},Config.App={id:2496,hash:"8da85b0d5bfe62527e5b244c209159c3",version:"0.4.4",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"),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},Config.Navigator={osX:-1!=(navigator.platform||"").toLowerCase().indexOf("mac")||-1!=(navigator.userAgent||"").toLowerCase().indexOf("mac"),retina:window.devicePixelRatio>1,ffos:-1!=navigator.userAgent.search(/mobi.+Gecko/i),touch:screen.width<=768,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:"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:"270785512",predicate:"inputPeerContact",params:[{name:"user_id",type:"int"}],type:"InputPeer"},{id:"-1690012891",predicate:"inputPeerForeign",params:[{name:"user_id",type:"int"},{name:"access_hash",type:"long"}],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:"-2031530139",predicate:"inputUserContact",params:[{name:"user_id",type:"int"}],type:"InputUser"},{id:"1700689151",predicate:"inputUserForeign",params:[{name:"user_id",type:"int"},{name:"access_hash",type:"long"}],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:"-515910468",predicate:"inputMediaUploadedVideo",params:[{name:"file",type:"InputFile"},{name:"duration",type:"int"},{name:"w",type:"int"},{name:"h",type:"int"},{name:"caption",type:"string"}],type:"InputMedia"},{id:"-1761896484",predicate:"inputMediaUploadedThumbVideo",params:[{name:"file",type:"InputFile"},{name:"thumb",type:"InputFile"},{name:"duration",type:"int"},{name:"w",type:"int"},{name:"h",type:"int"},{name:"caption",type:"string"}],type:"InputMedia"},{id:"-1821749571",predicate:"inputMediaVideo",params:[{name:"id",type:"InputVideo"},{name:"caption",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:"1426648181",predicate:"inputVideoEmpty",params:[],type:"InputVideo"},{id:"-296249774",predicate:"inputVideo",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputVideo"},{id:"342061462",predicate:"inputFileLocation",params:[{name:"volume_id",type:"long"},{name:"local_id",type:"int"},{name:"secret",type:"long"}],type:"InputFileLocation"},{id:"1023632620",predicate:"inputVideoFileLocation",params:[{name:"id",type:"long"},{name:"access_hash",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:"476112392",predicate:"userSelf",params:[{name:"id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"username",type:"string"},{name:"phone",type:"string"},{name:"photo",type:"UserProfilePhoto"},{name:"status",type:"UserStatus"}],type:"User"},{id:"-894214632",predicate:"userContact",params:[{name:"id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"username",type:"string"},{name:"access_hash",type:"long"},{name:"phone",type:"string"},{name:"photo",type:"UserProfilePhoto"},{name:"status",type:"UserStatus"}],type:"User"},{id:"-640891665",predicate:"userRequest",params:[{name:"id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"username",type:"string"},{name:"access_hash",type:"long"},{name:"phone",type:"string"},{name:"photo",type:"UserProfilePhoto"},{name:"status",type:"UserStatus"}],type:"User"},{id:"123533224",predicate:"userForeign",params:[{name:"id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"username",type:"string"},{name:"access_hash",type:"long"},{name:"photo",type:"UserProfilePhoto"},{name:"status",type:"UserStatus"}],type:"User"},{id:"-704549510",predicate:"userDeleted",params:[{name:"id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"username",type:"string"}],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:"1855757255",predicate:"chat",params:[{name:"id",type:"int"},{name:"title",type:"string"},{name:"photo",type:"ChatPhoto"},{name:"participants_count",type:"int"},{name:"date",type:"int"},{name:"left",type:"Bool"},{name:"version",type:"int"}],type:"Chat"},{id:"-83047359",predicate:"chatForbidden",params:[{name:"id",type:"int"},{name:"title",type:"string"},{name:"date",type:"int"}],type:"Chat"},{id:"-891418735",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"}],type:"ChatFull"},{id:"-925415106",predicate:"chatParticipant",params:[{name:"user_id",type:"int"},{name:"inviter_id",type:"int"},{name:"date",type:"int"}],type:"ChatParticipant"},{id:"265468810",predicate:"chatParticipantsForbidden",params:[{name:"chat_id",type:"int"}],type:"ChatParticipants"},{id:"2017571861",predicate:"chatParticipants",params:[{name:"chat_id",type:"int"},{name:"admin_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:"-1481959023",predicate:"message",params:[{name:"flags",type:"#"},{name:"id",type:"int"},{name:"from_id",type:"int"},{name:"to_id",type:"Peer"},{name:"fwd_from_id",type:"flags.2?int"},{name:"fwd_date",type:"flags.2?int"},{name:"reply_to_msg_id",type:"flags.3?int"},{name:"date",type:"int"},{name:"message",type:"string"},{name:"media",type:"MessageMedia"}],type:"Message"},{id:"495384334",predicate:"messageService",params:[{name:"flags",type:"int"},{name:"id",type:"int"},{name:"from_id",type:"int"},{name:"to_id",type:"Peer"},{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:"1540298357",predicate:"messageMediaVideo",params:[{name:"video",type:"Video"},{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:"1581055051",predicate:"messageActionChatAddUser",params:[{name:"user_id",type:"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:"-1014792074",predicate:"photo",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"user_id",type:"int"},{name:"date",type:"int"},{name:"geo",type:"GeoPoint"},{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:"-1056548696",predicate:"videoEmpty",params:[{name:"id",type:"long"}],type:"Video"},{id:"-291550643",predicate:"video",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"user_id",type:"int"},{name:"date",type:"int"},{name:"duration",type:"int"},{name:"size",type:"int"},{name:"thumb",type:"PhotoSize"},{name:"dc_id",type:"int"},{name:"w",type:"int"},{name:"h",type:"int"}],type:"Video"},{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:"-269659687",predicate:"auth.sentCode",params:[{name:"phone_registered",type:"Bool"},{name:"phone_code_hash",type:"string"},{name:"send_call_timeout",type:"int"},{name:"is_password",type:"Bool"}],type:"auth.SentCode"},{id:"-155815004",predicate:"auth.authorization",params:[{name:"expires",type:"int"},{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:"1185074840",predicate:"inputPeerNotifySettings",params:[{name:"mute_until",type:"int"},{name:"sound",type:"string"},{name:"show_previews",type:"Bool"},{name:"events_mask",type:"int"}],type:"InputPeerNotifySettings"},{id:"-1378534221",predicate:"peerNotifyEventsEmpty",params:[],type:"PeerNotifyEvents"},{id:"1830677896",predicate:"peerNotifyEventsAll",params:[],type:"PeerNotifyEvents"},{id:"1889961234",predicate:"peerNotifySettingsEmpty",params:[],type:"PeerNotifySettings"},{id:"-1923214866",predicate:"peerNotifySettings",params:[{name:"mute_until",type:"int"},{name:"sound",type:"string"},{name:"show_previews",type:"Bool"},{name:"events_mask",type:"int"}],type:"PeerNotifySettings"},{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:"1997575642",predicate:"userFull",params:[{name:"user",type:"User"},{name:"link",type:"contacts.Link"},{name:"profile_photo",type:"Photo"},{name:"notify_settings",type:"PeerNotifySettings"},{name:"blocked",type:"Bool"},{name:"real_first_name",type:"string"},{name:"real_last_name",type:"string"}],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:"1038193057",predicate:"contactSuggested",params:[{name:"user_id",type:"int"},{name:"mutual_contacts",type:"int"}],type:"ContactSuggested"},{id:"-748155807",predicate:"contactStatus",params:[{name:"user_id",type:"int"},{name:"status",type:"UserStatus"}],type:"ContactStatus"},{id:"909233996",predicate:"chatLocated",params:[{name:"chat_id",type:"int"},{name:"distance",type:"int"}],type:"ChatLocated"},{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:"1447681221",predicate:"contacts.suggested",params:[{name:"results",type:"Vector<ContactSuggested>"},{name:"users",type:"Vector<User>"}],type:"contacts.Suggested"},{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:"1062078024",predicate:"messages.messageEmpty",params:[],type:"messages.Message"},{id:"1279084531",predicate:"messages.sentMessage",params:[{name:"id",type:"int"},{name:"date",type:"int"},{name:"media",type:"MessageMedia"},{name:"pts",type:"int"},{name:"pts_count",type:"int"}],type:"messages.SentMessage"},{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:"-808946398",predicate:"inputMessagesFilterAudio",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:"-312729305",predicate:"updateShortMessage",params:[{name:"flags",type:"#"},{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_id",type:"flags.2?int"},{name:"fwd_date",type:"flags.2?int"},{name:"reply_to_msg_id",type:"flags.3?int"}],type:"Updates"},{id:"1378061116",predicate:"updateShortChatMessage",params:[{name:"flags",type:"#"},{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_id",type:"flags.2?int"},{name:"fwd_date",type:"flags.2?int"},{name:"reply_to_msg_id",type:"flags.3?int"}],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:"784507964",predicate:"dcOption",params:[{name:"id",type:"int"},{name:"hostname",type:"string"},{name:"ip_address",type:"string"},{name:"port",type:"int"}],type:"DcOption"},{id:"1311946900",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:"broadcast_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:"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:"899786339",predicate:"messages.sentMessageLink",params:[{name:"id",type:"int"},{name:"date",type:"int"},{name:"media",type:"MessageMedia"},{name:"pts",type:"int"},{name:"pts_count",type:"int"},{name:"links",type:"Vector<contacts.Link>"},{name:"seq",type:"int"}],type:"messages.SentMessage"},{id:"1960072954",predicate:"inputGeoChat",params:[{name:"chat_id",type:"int"},{name:"access_hash",type:"long"}],type:"InputGeoChat"},{id:"1301143240",predicate:"inputNotifyGeoChatPeer",params:[{name:"peer",type:"InputGeoChat"}],type:"InputNotifyPeer"},{id:"1978329690",predicate:"geoChat",params:[{name:"id",type:"int"},{name:"access_hash",type:"long"},{name:"title",type:"string"},{name:"address",type:"string"},{name:"venue",type:"string"},{name:"geo",type:"GeoPoint"},{name:"photo",type:"ChatPhoto"},{name:"participants_count",type:"int"},{name:"date",type:"int"},{name:"checked_in",type:"Bool"},{name:"version",type:"int"}],type:"Chat"},{id:"1613830811",predicate:"geoChatMessageEmpty",params:[{name:"chat_id",type:"int"},{name:"id",type:"int"}],type:"GeoChatMessage"},{id:"1158019297",predicate:"geoChatMessage",params:[{name:"chat_id",type:"int"},{name:"id",type:"int"},{name:"from_id",type:"int"},{name:"date",type:"int"},{name:"message",type:"string"},{name:"media",type:"MessageMedia"}],type:"GeoChatMessage"},{id:"-749755826",predicate:"geoChatMessageService",params:[{name:"chat_id",type:"int"},{name:"id",type:"int"},{name:"from_id",type:"int"},{name:"date",type:"int"},{name:"action",type:"MessageAction"}],type:"GeoChatMessage"},{id:"397498251",predicate:"geochats.statedMessage",params:[{name:"message",type:"GeoChatMessage"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"},{name:"seq",type:"int"}],type:"geochats.StatedMessage"},{id:"1224651367",predicate:"geochats.located",params:[{name:"results",type:"Vector<ChatLocated>"},{name:"messages",type:"Vector<GeoChatMessage>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"geochats.Located"},{id:"-783127119",predicate:"geochats.messages",params:[{name:"messages",type:"Vector<GeoChatMessage>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"geochats.Messages"},{id:"-1135057944",predicate:"geochats.messagesSlice",params:[{name:"count",type:"int"},{name:"messages",type:"Vector<GeoChatMessage>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"geochats.Messages"},{id:"1862504124",predicate:"messageActionGeoChatCreate",params:[{name:"title",type:"string"},{name:"address",type:"string"}],type:"MessageAction"},{id:"209540062",predicate:"messageActionGeoChatCheckin",params:[],type:"MessageAction"},{id:"1516823543",predicate:"updateNewGeoChatMessage",params:[{name:"message",type:"GeoChatMessage"}],type:"Update"},{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:"974056226",predicate:"updateChatParticipantAdd",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"int"},{name:"inviter_id",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:"1313442987",predicate:"inputMediaUploadedAudio",params:[{name:"file",type:"InputFile"},{name:"duration",type:"int"},{name:"mime_type",type:"string"}],type:"InputMedia"},{id:"-1986820223",predicate:"inputMediaAudio",params:[{name:"id",type:"InputAudio"}],type:"InputMedia"},{id:"-1610888",predicate:"inputMediaUploadedDocument",params:[{name:"file",type:"InputFile"},{name:"mime_type",type:"string"},{name:"attributes",type:"Vector<DocumentAttribute>"}],type:"InputMedia"},{id:"1095242886",predicate:"inputMediaUploadedThumbDocument",params:[{name:"file",type:"InputFile"},{name:"thumb",type:"InputFile"},{name:"mime_type",type:"string"},{name:"attributes",type:"Vector<DocumentAttribute>"}],type:"InputMedia"},{id:"-779818943",predicate:"inputMediaDocument",params:[{name:"id",type:"InputDocument"}],type:"InputMedia"},{id:"802824708",predicate:"messageMediaDocument",params:[{name:"document",type:"Document"}],type:"MessageMedia"},{id:"-961117440",predicate:"messageMediaAudio",params:[{name:"audio",type:"Audio"}],type:"MessageMedia"},{id:"-648356732",predicate:"inputAudioEmpty",params:[],type:"InputAudio"},{id:"2010398975",predicate:"inputAudio",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputAudio"},{id:"1928391342",predicate:"inputDocumentEmpty",params:[],type:"InputDocument"},{id:"410618194",predicate:"inputDocument",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputDocument"},{id:"1960591437",predicate:"inputAudioFileLocation",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputFileLocation"},{id:"1313188841",predicate:"inputDocumentFileLocation",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputFileLocation"},{id:"1483311320",predicate:"audioEmpty",params:[{name:"id",type:"long"}],type:"Audio"},{id:"-945003370",predicate:"audio",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"user_id",type:"int"},{name:"date",type:"int"},{name:"duration",type:"int"},{name:"mime_type",type:"string"},{name:"size",type:"int"},{name:"dc_id",type:"int"}],type:"Audio"},{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:"-484053553",predicate:"auth.sentAppCode",params:[{name:"phone_registered",type:"Bool"},{name:"phone_code_hash",type:"string"},{name:"send_call_timeout",type:"int"},{name:"is_password",type:"Bool"}],type:"auth.SentCode"},{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:"-360210539",predicate:"contactFound",params:[{name:"user_id",type:"int"}],type:"ContactFound"},{id:"90570766",predicate:"contacts.found",params:[{name:"results",type:"Vector<ContactFound>"},{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:"-1527411636",predicate:"account.sentChangePhoneCode",params:[{name:"phone_code_hash",type:"string"},{name:"send_call_timeout",type:"int"}],type:"account.SentChangePhoneCode"},{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:"-1723033470",predicate:"documentAttributeSticker",params:[{name:"alt",type:"string"}],type:"DocumentAttribute"},{id:"1494273227",predicate:"documentAttributeVideo",params:[{name:"duration",type:"int"},{name:"w",type:"int"},{name:"h",type:"int"}],type:"DocumentAttribute"},{id:"85215461",predicate:"documentAttributeAudio",params:[{name:"duration",type:"int"}],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:"-588304126",predicate:"messages.allStickers",params:[{name:"hash",type:"string"},{name:"packs",type:"Vector<StickerPack>"},{name:"documents",type:"Vector<Document>"}],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:"751004017",predicate:"updateWebPage",params:[{name:"webpage",type:"WebPage"}],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:"-1558273867",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"}],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:"-1124314324",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:"-829325875",predicate:"chatInvite",params:[{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"}],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:"1988976461",method:"auth.sendCode",params:[{name:"phone_number",type:"string"},{name:"sms_type",type:"int"},{name:"api_id",type:"int"},{name:"api_hash",type:"string"},{name:"lang_code",type:"string"}],type:"auth.SentCode"},{id:"63247716",method:"auth.sendCall",params:[{name:"phone_number",type:"string"},{name:"phone_code_hash",type:"string"}],type:"Bool"},{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:"-259486360",method:"account.updateProfile",params:[{name:"first_name",type:"string"},{name:"last_name",type:"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:"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:"-847825880",method:"contacts.getSuggested",params:[{name:"limit",type:"int"}],type:"contacts.Suggested"},{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:"-321970698",method:"messages.getDialogs",params:[{name:"offset",type:"int"},{name:"max_id",type:"int"},{name:"limit",type:"int"}],type:"messages.Dialogs"},{id:"-1834885329",method:"messages.getHistory",params:[{name:"peer",type:"InputPeer"},{name:"offset",type:"int"},{name:"max_id",type:"int"},{name:"limit",type:"int"}],type:"messages.Messages"},{id:"132772523",method:"messages.search",params:[{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:"-1336990448",method:"messages.readHistory",params:[{name:"peer",type:"InputPeer"},{name:"max_id",type:"int"},{name:"offset",type:"int"}],type:"messages.AffectedHistory"},{id:"-185009311",method:"messages.deleteHistory",params:[{name:"peer",type:"InputPeer"},{name:"offset",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:"-1696755930",method:"messages.sendMessage",params:[{name:"flags",type:"#"},{name:"peer",type:"InputPeer"},{name:"reply_to_msg_id",type:"flags.0?int"},{name:"message",type:"string"},{name:"random_id",type:"long"}],type:"messages.SentMessage"},{id:"762913713",method:"messages.sendMedia",params:[{name:"flags",type:"#"},{name:"peer",type:"InputPeer"},{name:"reply_to_msg_id",type:"flags.0?int"},{name:"media",type:"InputMedia"},{name:"random_id",type:"long"}],type:"Updates"},{id:"1440838285",method:"messages.forwardMessages",params:[{name:"peer",type:"InputPeer"},{name:"id",type:"Vector<int>"},{name:"random_id",type:"Vector<long>"}],type:"Updates"},{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:"-1209117380",method:"photos.getUserPhotos",params:[{name:"user_id",type:"InputUser"},{name:"offset",type:"int"},{name:"max_id",type:"int"},{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:"2132356495",method:"geochats.getLocated",params:[{name:"geo_point",type:"InputGeoPoint"},{name:"radius",type:"int"},{name:"limit",type:"int"}],type:"geochats.Located"},{id:"-515735953",method:"geochats.getRecents",params:[{name:"offset",type:"int"},{name:"limit",type:"int"}],type:"geochats.Messages"},{id:"1437853947",method:"geochats.checkin",params:[{name:"peer",type:"InputGeoChat"}],type:"geochats.StatedMessage"},{id:"1730338159",method:"geochats.getFullChat",params:[{name:"peer",type:"InputGeoChat"}],type:"messages.ChatFull"},{id:"1284383347",method:"geochats.editChatTitle",params:[{name:"peer",type:"InputGeoChat"},{name:"title",type:"string"},{name:"address",type:"string"}],type:"geochats.StatedMessage"},{id:"903355029",method:"geochats.editChatPhoto",params:[{name:"peer",type:"InputGeoChat"},{name:"photo",type:"InputChatPhoto"}],type:"geochats.StatedMessage"},{id:"-808598451",method:"geochats.search",params:[{name:"peer",type:"InputGeoChat"},{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:"geochats.Messages"},{id:"-1254131096",method:"geochats.getHistory",params:[{name:"peer",type:"InputGeoChat"},{name:"offset",type:"int"},{name:"max_id",type:"int"},{name:"limit",type:"int"}],type:"geochats.Messages"},{id:"146319145",method:"geochats.setTyping",params:[{name:"peer",type:"InputGeoChat"},{name:"typing",type:"Bool"}],type:"Bool"},{id:"102432836",method:"geochats.sendMessage",params:[{name:"peer",type:"InputGeoChat"},{name:"message",type:"string"},{name:"random_id",type:"long"}],type:"geochats.StatedMessage"},{id:"-1192173825",method:"geochats.sendMedia",params:[{name:"peer",type:"InputGeoChat"},{name:"media",type:"InputMedia"},{name:"random_id",type:"long"}],type:"geochats.StatedMessage"},{id:"235482646",method:"geochats.createGeoChat",params:[{name:"title",type:"string"},{name:"geo_point",type:"InputGeoPoint"},{name:"address",type:"string"},{name:"venue",type:"string"}],type:"geochats.StatedMessage"},{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:"229241832",method:"auth.sendSms",params:[{name:"phone_number",type:"string"},{name:"phone_code_hash",type:"string"}],type:"Bool"},{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:"200282908",method:"contacts.resolveUsername",params:[{name:"username",type:"string"}],type:"User"},{id:"-1543001868",method:"account.sendChangePhoneCode",params:[{name:"phone_number",type:"string"}],type:"account.SentChangePhoneCode"},{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:"-1438922648",method:"messages.getAllStickers",params:[{name:"hash",type:"string"}],type:"messages.AllStickers"},{id:"954152242",method:"account.updateDeviceLocked",params:[{name:"period",type:"int"}],type:"Bool"},{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"}]},Config.Schema.API.layer=28,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(){c=!0}function i(){return c?(c=!1,""):r}function a(){var e,t,n,a=Array.prototype.slice.call(arguments),o=a.pop(),s=[],r=1==a.length,c=!0,p=i();for(t=0;t<a.length;t++)if(n=a[t]=p+a[t],"xt_"!=n.substr(0,3)&&void 0!==l[n])s.push(l[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(l[n]=e)}else d?c=!1:s.push(l[n]=!1);return c?o(r?s[0]:s):void chrome.storage.local.get(a,function(e){var i;for(s=[],t=0;t<a.length;t++)n=a[t],i=e[n],i=void 0===i||null===i?!1:JSON.parse(i),s.push(l[n]=i);o(r?s[0]:s)})}function o(e,t){var n,a,o={},s=i();for(n in e)if(e.hasOwnProperty(n))if(a=e[n],n=s+n,l[n]=a,a=JSON.stringify(a),u)try{localStorage.setItem(n,a)}catch(r){u=!1}else o[n]=a;return u||!d?void(t&&t()):void chrome.storage.local.set(o,t)}function s(){var e,t,n,a=Array.prototype.slice.call(arguments),o=i();for("function"==typeof a[a.length-1]&&(n=a.pop()),e=0;e<a.length;e++)if(t=a[e]=o+a[e],delete l[t],u)try{localStorage.removeItem(t)}catch(s){u=!1}d?chrome.storage.local.remove(a,n):n&&n()}var r="",c=!1,l={},d=!!(e.chrome&&chrome.storage&&chrome.storage.local),u=!d&&!!e.localStorage;e.ConfigStorage={prefix:t,noPrefix:n,get:a,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(i){n=!0}setTimeout(function(){t(n)},10)},window.applicationCache&&!Config.Modes.packed&&window.addEventListener){var t=window.applicationCache,n=!1,i=!1,a=function(e){clearTimeout(i),i=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}),a()))},!1),t.addEventListener("noupdate",function(){a()},!1),t.addEventListener("error",function(){a()},!1)};a(3e3),window.addEventListener("load",o)}}(),function(){var e=[Config.Navigator.osX?"osx":"non_osx",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],i="en-us",a={dom:!1,i18n_ng:!1,i18n_messages:!1,i18n_fallback:!1},o=function(){var e,t=!0;for(e in a)if(a.hasOwnProperty(e)&&a[e]===!1){t=!1;break}t&&(a.boot=!1,angular.bootstrap(document,["myApp"]))};switch(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}a.i18n_ng=Config.I18n.locale==i,$.getJSON("js/locales/"+Config.I18n.locale+".json").success(function(e){Config.I18n.messages=e,a.i18n_messages=!0,Config.I18n.locale==i&&(a.i18n_fallback=!0),o()}),Config.I18n.locale!=i&&$.getJSON("js/locales/"+i+".json").success(function(e){Config.I18n.fallback_messages=e,a.i18n_fallback=!0,o()}),$(document).ready(function(){a.dom=!0,a.i18n_ng?o():$("<script>").appendTo("body").on("load",function(){a.i18n_ng=!0,o()}).attr("src","vendor/angular/i18n/angular-locale_"+Config.I18n.locale+".js")})})}(),function(e,t,n){"use strict";var i,a,o,s,r,c,l,d,u,p,m,h,g,f,_,v,y,b,w,$,k,S,C,M,A,x,E,T,I,D,P;C={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",g="mousewheel",h="mouseup",v="resize",r="drag",c="enter",$="up",_="panedown",o="DOMMouseScroll",s="down",k="wheel",l="keydown",d="keyup",w="touchmove",i="Microsoft Internet Explorer"===t.navigator.appName&&/msie 7./i.test(t.navigator.appVersion)&&t.ActiveXObject,a=null,E=t.requestAnimationFrame,S=t.cancelAnimationFrame,I=n.createElement("div").style,P=function(){var e,t,n,i,a,o;for(i=["t","webkitT","MozT","msT","OT"],e=a=0,o=i.length;o>a;e=++a)if(n=i[e],t=i[e]+"ransform",t in I)return i[e].substr(0,i[e].length-1);return!1}(),D=function(e){return P===!1?!1:""===P?e:P+e.charAt(0).toUpperCase()+e.substr(1)},T=D("transform"),A=T!==!1,M=function(){var e,t,i;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),i=e.offsetWidth-e.clientWidth,n.body.removeChild(e),i},x=function(){var e,n,i;return n=t.navigator.userAgent,(e=/(?=.+Mac OS X)(?=.+Firefox)/.test(n))?(i=/Firefox\/\d{2}\./.exec(n),i&&(i=i[0].replace(/\D+/g,"")),e&&+i>23):!1},f=function(){function l(i,o){this.el=i,this.options=o,a||(a=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 l.prototype.preventScrolling=function(e,t){if(this.isActive)if(e.type===o)(t===s&&e.originalEvent.detail>0||t===$&&e.originalEvent.detail<0)&&e.preventDefault();else if(e.type===g){if(!e.originalEvent||!e.originalEvent.wheelDelta)return;(t===s&&e.originalEvent.wheelDelta<0||t===$&&e.originalEvent.wheelDelta>0)&&e.preventDefault()}},l.prototype.nativeScrolling=function(){this.$content.css({WebkitOverflowScrolling:"touch"}),this.iOSNativeScrolling=!0,this.isActive=!0},l.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)},l.prototype.setOnScrollStyles=function(){var e;A?(e={},e[T]="translate(0, "+this.sliderTop+"px)"):e={top:this.sliderTop},E?(S&&this.scrollRAF&&S(this.scrollRAF),this.scrollRAF=E(function(t){return function(){return t.scrollRAF=null,t.slider.css(e)}}(this))):this.slider.css(e)},l.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(h,e.events[$]),e.body.bind(p,e.events[c]),!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(h,e.events[$]),e.body.unbind(p,e.events[c]),!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,$),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)[$].apply(n,arguments):void 0}}(this)}},l.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(""+g+" "+o,e[k])),this.$content.bind(""+y+" "+g+" "+o+" "+w,e[y])},l.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+" "+g+" "+o+" "+w,e[y])},l.prototype.generate=function(){var e,n,i,o,s,r,c;return o=this.options,r=o.paneClass,c=o.sliderClass,e=o.contentClass,(s=this.$el.children("."+r)).length||s.children("."+c).length||this.$el.append('<div class="'+r+'"><div class="'+c+'" /></div>'),this.pane=this.$el.children("."+r),this.slider=this.pane.find("."+c),0===a&&x()?(i=t.getComputedStyle(this.content,null).getPropertyValue("padding-right").replace(/[^0-9.]+/g,""),n={right:-14,paddingRight:+i+14}):a&&(n={right:-a},this.$el.addClass("has-scrollbar")),null!=n&&this.$content.css(n),this},l.prototype.restore=function(){this.stopped=!1,this.iOSNativeScrolling||this.pane.show(),this.addEvents()},l.prototype.reset=function(){var e,t,n,o,s,r,c,l,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,i&&this.$content.css({height:this.$content.height()}),t=e.scrollHeight+a,u=parseInt(this.$el.css("max-height"),10),u>0&&(this.$el.height(""),this.$el.height(e.scrollHeight>u?u:e.scrollHeight)),c=this.pane.outerHeight(!1),d=parseInt(this.pane.css("top"),10),r=parseInt(this.pane.css("bottom"),10),l=c+d+r,m=Math.round(l/t*l),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+=a),this.maxSliderTop=l-m,this.contentHeight=t,this.paneHeight=c,this.paneOuterHeight=l,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.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)},l.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},l.prototype.scrollBottom=function(e){return this.isActive?(this.$content.scrollTop(this.contentHeight-this.$content.height()-e).trigger(g),this.stop().restore(),this):void 0},l.prototype.scrollTop=function(e){return this.isActive?(this.$content.scrollTop(+e).trigger(g),this.stop().restore(),this):void 0},l.prototype.scrollTo=function(e){return this.isActive?(this.scrollTop(this.$el.find(e).get(0).offsetTop),this):void 0},l.prototype.stop=function(){return S&&this.scrollRAF&&(S(this.scrollRAF),this.scrollRAF=null),this.stopped=!0,this.removeEvents(),this.iOSNativeScrolling||this.pane.hide(),this},l.prototype.destroy=function(){return this.stopped||this.stop(),!this.iOSNativeScrolling&&this.pane.length&&this.pane.remove(),i&&this.$content.height(""),this.$content.removeAttr("tabindex"),this.$el.hasClass("has-scrollbar")&&(this.$el.removeClass("has-scrollbar"),this.$content.css({right:""})),this},l.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},l}(),e.fn.nanoScroller=function(t){return this.each(function(){var n,i;if((i=this.nanoscroller)||(n=e.extend({},C,t),this.nanoscroller=i=new f(this,n)),t&&"object"==typeof t){if(e.extend(i.options,t),null!=t.scrollBottom)return i.scrollBottom(t.scrollBottom);if(null!=t.scrollTop)return i.scrollTop(t.scrollTop);if(t.scrollTo)return i.scrollTo(t.scrollTo);if("bottom"===t.scroll)return i.scrollBottom(0);if("top"===t.scroll)return i.scrollTop(0);if(t.scroll&&t.scroll instanceof e)return i.scrollTo(t.scroll);if(t.stop)return i.stop();if(t.destroy)return i.destroy();if(t.flash)return i.flash()}return i.reset()})},e.fn.nanoScroller.Constructor=f}(jQuery,window,document),function(e,t,n){"use strict";function i(e,t){return t=t||Error,function(){var n,i,a=arguments[0],o="["+(e?e+":":"")+a+"] ",s=arguments[1],r=arguments,c=function(e){return"function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof e?"undefined":"string"!=typeof e?JSON.stringify(e):e};for(n=o+s.replace(/\{\d+\}/g,function(e){var t,n=+e.slice(1,-1);return n+2<r.length?(t=r[n+2],"function"==typeof t?t.toString().replace(/ ?\{[\s\S]*$/,""):"undefined"==typeof t?"undefined":"string"!=typeof t?j(t):t):e}),n=n+"\nhttp://errors.angularjs.org/1.3.2/"+(e?e+"/":"")+a,i=2;i<arguments.length;i++)n=n+(2==i?"?":"&")+"p"+(i-2)+"="+encodeURIComponent(c(arguments[i]));return new t(n)}}function a(e){if(null==e||C(e))return!1;var t=e.length;return e.nodeType===la&&t?!0:b(e)||na(e)||0===t||"number"==typeof t&&t>0&&t-1 in e}function o(e,t,n){var i,s;if(e)if(k(e))for(i in e)"prototype"==i||"length"==i||"name"==i||e.hasOwnProperty&&!e.hasOwnProperty(i)||t.call(n,e[i],i,e);else if(na(e)||a(e)){var r="object"!=typeof e;for(i=0,s=e.length;s>i;i++)(r||i in e)&&t.call(n,e[i],i,e)}else if(e.forEach&&e.forEach!==o)e.forEach(t,n,e);else for(i in e)e.hasOwnProperty(i)&&t.call(n,e[i],i,e);return e}function s(e){return Object.keys(e).sort()}function r(e,t,n){for(var i=s(e),a=0;a<i.length;a++)t.call(n,e[i[a]],i[a]);return i}function c(e){return function(t,n){e(n,t)}}function l(){return++ea}function d(e,t){t?e.$$hashKey=t:delete e.$$hashKey}function u(e){for(var t=e.$$hashKey,n=1,i=arguments.length;i>n;n++){var a=arguments[n];if(a)for(var o=Object.keys(a),s=0,r=o.length;r>s;s++){var c=o[s];e[c]=a[c]}}return d(e,t),e}function p(e){return parseInt(e,10)}function m(e,t){return u(new(u(function(){},{prototype:e})),t)}function h(){}function g(e){return e}function f(e){return function(){return e}}function _(e){return"undefined"==typeof e}function v(e){return"undefined"!=typeof e}function y(e){return null!==e&&"object"==typeof e}function b(e){return"string"==typeof e}function w(e){return"number"==typeof e}function $(e){return"[object Date]"===Xi.call(e)}function k(e){return"function"==typeof e}function S(e){return"[object RegExp]"===Xi.call(e)}function C(e){return e&&e.window===e}function M(e){return e&&e.$evalAsync&&e.$watch}function A(e){return"[object File]"===Xi.call(e)}function x(e){return"[object Blob]"===Xi.call(e)}function E(e){return"boolean"==typeof e}function T(e){return e&&k(e.then)}function I(e){return!(!e||!(e.nodeName||e.prop&&e.attr&&e.find))}function D(e){var t,n={},i=e.split(",");for(t=0;t<i.length;t++)n[i[t]]=!0;return n}function P(e){return Bi(e.nodeName||e[0].nodeName)}function N(e,t){var n=e.indexOf(t);return n>=0&&e.splice(n,1),t}function U(e,t,n,i){if(C(e)||M(e))throw Ji("cpws","Can't copy! Making copies of Window or Scope instances is not supported.");if(t){if(e===t)throw Ji("cpi","Can't copy! Source and destination are identical.");if(n=n||[],i=i||[],y(e)){var a=n.indexOf(e);if(-1!==a)return i[a];n.push(e),i.push(t)}var s;if(na(e)){t.length=0;for(var r=0;r<e.length;r++)s=U(e[r],null,n,i),y(e[r])&&(n.push(e[r]),i.push(s)),t.push(s)}else{var c=t.$$hashKey;na(t)?t.length=0:o(t,function(e,n){delete t[n]});for(var l in e)e.hasOwnProperty(l)&&(s=U(e[l],null,n,i),y(e[l])&&(n.push(e[l]),i.push(s)),t[l]=s);d(t,c)}}else if(t=e,e)if(na(e))t=U(e,[],n,i);else if($(e))t=new Date(e.getTime());else if(S(e))t=new RegExp(e.source,e.toString().match(/[^\/]*$/)[0]),t.lastIndex=e.lastIndex;else if(y(e)){var u=Object.create(Object.getPrototypeOf(e));t=U(e,u,n,i)}return t}function O(e,t){if(na(e)){t=t||[];for(var n=0,i=e.length;i>n;n++)t[n]=e[n]}else if(y(e)){t=t||{};for(var a in e)("$"!==a.charAt(0)||"$"!==a.charAt(1))&&(t[a]=e[a])}return t||e}function L(e,t){if(e===t)return!0;if(null===e||null===t)return!1;if(e!==e&&t!==t)return!0;var i,a,o,s=typeof e,r=typeof t;if(s==r&&"object"==s){if(!na(e)){if($(e))return $(t)?L(e.getTime(),t.getTime()):!1;if(S(e)&&S(t))return e.toString()==t.toString();if(M(e)||M(t)||C(e)||C(t)||na(t))return!1;o={};for(a in e)if("$"!==a.charAt(0)&&!k(e[a])){if(!L(e[a],t[a]))return!1;o[a]=!0}for(a in t)if(!o.hasOwnProperty(a)&&"$"!==a.charAt(0)&&t[a]!==n&&!k(t[a]))return!1;return!0}if(!na(t))return!1;if((i=e.length)==t.length){for(a=0;i>a;a++)if(!L(e[a],t[a]))return!1;return!0}}return!1}function R(e,t,n){return e.concat(Ki.call(t,n))}function B(e,t){return Ki.call(e,t||0)}function F(e,t){var n=arguments.length>2?B(arguments,2):[];return!k(t)||t instanceof RegExp?t:n.length?function(){return arguments.length?t.apply(e,n.concat(Ki.call(arguments,0))):t.apply(e,n)}:function(){return arguments.length?t.apply(e,arguments):t.call(e)}}function q(e,i){var a=i;return"string"==typeof e&&"$"===e.charAt(0)&&"$"===e.charAt(1)?a=n:C(i)?a="$WINDOW":i&&t===i?a="$DOCUMENT":M(i)&&(a="$SCOPE"),a}function j(e,t){return"undefined"==typeof e?n:JSON.stringify(e,q,t?" ":null)}function H(e){return b(e)?JSON.parse(e):e}function z(e){e=Vi(e).clone();try{e.empty()}catch(t){}var n=Vi("<div>").append(e).html();try{return e[0].nodeType===da?Bi(n):n.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(e,t){return"<"+Bi(t)})}catch(t){return Bi(n)}}function V(e){try{return decodeURIComponent(e)}catch(t){}}function W(e){var t,n,i={};return o((e||"").split("&"),function(e){if(e&&(t=e.replace(/\+/g,"%20").split("="),n=V(t[0]),v(n))){var a=v(t[1])?V(t[1]):!0;Fi.call(i,n)?na(i[n])?i[n].push(a):i[n]=[i[n],a]:i[n]=a}}),i}function G(e){var t=[];return o(e,function(e,n){na(e)?o(e,function(e){t.push(Y(n,!0)+(e===!0?"":"="+Y(e,!0)))}):t.push(Y(n,!0)+(e===!0?"":"="+Y(e,!0)))}),t.length?t.join("&"):""}function K(e){return Y(e,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Y(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 Z(e,t){var n,i,a=sa.length;for(e=Vi(e),i=0;a>i;++i)if(n=sa[i]+t,b(n=e.attr(n)))return n;return null}function X(e,t){var n,i,a={};o(sa,function(t){var a=t+"app";!n&&e.hasAttribute&&e.hasAttribute(a)&&(n=e,i=e.getAttribute(a))}),o(sa,function(t){var a,o=t+"app";!n&&(a=e.querySelector("["+o.replace(":","\\:")+"]"))&&(n=a,i=a.getAttribute(o))}),n&&(a.strictDi=null!==Z(n,"strict-di"),t(n,i?[i]:[],a))}function J(n,i,a){y(a)||(a={});var s={strictDi:!1};a=u(s,a);var r=function(){if(n=Vi(n),n.injector()){var e=n[0]===t?"document":z(n);throw Ji("btstrpd","App Already Bootstrapped with this Element '{0}'",e.replace(/</,"&lt;").replace(/>/,"&gt;"))}i=i||[],i.unshift(["$provide",function(e){e.value("$rootElement",n)}]),a.debugInfoEnabled&&i.push(["$compileProvider",function(e){e.debugInfoEnabled(!0)}]),i.unshift("ng");var o=Ft(i,a.strictDi);return o.invoke(["$rootScope","$rootElement","$compile","$injector",function(e,t,n,i){e.$apply(function(){t.data("$injector",i),n(t)(e)})}]),o},c=/^NG_ENABLE_DEBUG_INFO!/,l=/^NG_DEFER_BOOTSTRAP!/;return e&&c.test(e.name)&&(a.debugInfoEnabled=!0,e.name=e.name.replace(c,"")),e&&!l.test(e.name)?r():(e.name=e.name.replace(l,""),void(Qi.resumeBootstrap=function(e){o(e,function(e){i.push(e)}),r()}))}function Q(){e.name="NG_ENABLE_DEBUG_INFO!"+e.name,e.location.reload()}function et(e){return Qi.element(e).injector().get("$$testability")}function tt(e,t){return t=t||"_",e.replace(ra,function(e,n){return(n?t:"")+e.toLowerCase()})}function nt(){var t;ca||(Wi=e.jQuery,Wi&&Wi.fn.on?(Vi=Wi,u(Wi.fn,{scope:xa.scope,isolateScope:xa.isolateScope,controller:xa.controller,injector:xa.injector,inheritedData:xa.inheritedData}),t=Wi.cleanData,Wi.cleanData=function(e){var n;if(ta)ta=!1;else for(var i,a=0;null!=(i=e[a]);a++)n=Wi._data(i,"events"),n&&n.$destroy&&Wi(i).triggerHandler("$destroy");t(e)}):Vi=_t,Qi.element=Vi,ca=!0)}function it(e,t,n){if(!e)throw Ji("areq","Argument '{0}' is {1}",t||"?",n||"required");return e}function at(e,t,n){return n&&na(e)&&(e=e[e.length-1]),it(k(e),t,"not a function, got "+(e&&"object"==typeof e?e.constructor.name||"Object":typeof e)),e}function ot(e,t){if("hasOwnProperty"===e)throw Ji("badname","hasOwnProperty is not a valid {0} name",t)}function st(e,t,n){if(!t)return e;for(var i,a=t.split("."),o=e,s=a.length,r=0;s>r;r++)i=a[r],e&&(e=(o=e)[i]);return!n&&k(e)?F(o,e):e}function rt(e){var t=e[0],n=e[e.length-1],i=[t];do{if(t=t.nextSibling,!t)break;i.push(t)}while(t!==n);return Vi(i)}function ct(){return Object.create(null)}function lt(e){function t(e,t,n){return e[t]||(e[t]=n())}var n=i("$injector"),a=i("ng"),o=t(e,"angular",Object);return o.$$minErr=o.$$minErr||i,t(o,"module",function(){var e={};return function(i,o,s){var r=function(e,t){if("hasOwnProperty"===e)throw a("badname","hasOwnProperty is not a valid {0} name",t)};return r(i,"module"),o&&e.hasOwnProperty(i)&&(e[i]=null),t(e,i,function(){function e(e,n,i,a){return a||(a=t),function(){return a[i||"push"]([e,n,arguments]),l}}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.",i);var t=[],a=[],r=[],c=e("$injector","invoke","push",a),l={_invokeQueue:t,_configBlocks:a,_runBlocks:r,requires:o,name:i,provider:e("$provide","provider"),factory:e("$provide","factory"),service:e("$provide","service"),value:e("$provide","value"),constant:e("$provide","constant","unshift"),animation:e("$animateProvider","register"),filter:e("$filterProvider","register"),controller:e("$controllerProvider","register"),directive:e("$compileProvider","directive"),config:c,run:function(e){return r.push(e),this}};return s&&c(s),l})}})}function dt(t){u(t,{bootstrap:J,copy:U,extend:u,equals:L,element:Vi,forEach:o,injector:Ft,noop:h,bind:F,toJson:j,fromJson:H,identity:g,isUndefined:_,isDefined:v,isString:b,isFunction:k,isObject:y,isNumber:w,isElement:I,isArray:na,version:ha,isDate:$,lowercase:Bi,uppercase:qi,callbacks:{counter:0},getTestability:et,$$minErr:i,$$csp:oa,reloadWithDebugInfo:Q}),Gi=lt(e);try{Gi("ngLocale")}catch(n){Gi("ngLocale",[]).provider("$locale",pn)}Gi("ng",["ngLocale"],["$provide",function(e){e.provider({$$sanitizeUri:Hn}),e.provider("$compile",Gt).directive({a:bo,input:Bo,textarea:Bo,form:Co,script:Ts,select:Ps,style:Us,option:Ns,ngBind:as,ngBindHtml:ss,ngBindTemplate:os,ngClass:rs,ngClassEven:ls,ngClassOdd:cs,ngCloak:ds,ngController:us,ngForm:Mo,ngHide:Ss,ngIf:hs,ngInclude:gs,ngInit:_s,ngNonBindable:vs,ngPluralize:ys,ngRepeat:bs,ngShow:ks,ngStyle:Cs,ngSwitch:Ms,ngSwitchWhen:As,ngSwitchDefault:xs,ngOptions:Ds,ngTransclude:Es,ngModel:Ko,ngList:es,ngChange:Yo,pattern:Xo,ngPattern:Xo,required:Zo,ngRequired:Zo,minlength:Qo,ngMinlength:Qo,maxlength:Jo,ngMaxlength:Jo,ngValue:ns,ngModelOptions:is}).directive({ngInclude:fs}).directive(wo).directive(ps),e.provider({$anchorScroll:qt,$animate:Ra,$browser:zt,$cacheFactory:Vt,$controller:Xt,$document:Jt,$exceptionHandler:Qt,$filter:ti,$interpolate:dn,$interval:un,$http:sn,$httpBackend:cn,$location:Cn,$log:Mn,$parse:Ln,$rootScope:jn,$q:Rn,$$q:Bn,$sce:Gn,$sceDelegate:Wn,$sniffer:Kn,$templateCache:Wt,$templateRequest:Yn,$$testability:Zn,$timeout:Xn,$window:ei,$$rAF:qn,$$asyncCallback:jt})}])}function ut(){return++fa}function pt(e){return e.replace(ya,function(e,t,n,i){return i?n.toUpperCase():n}).replace(ba,"Moz$1")}function mt(e){return!Sa.test(e)}function ht(e){var t=e.nodeType;return t===la||!t||t===pa}function gt(e,t){var n,i,a,s,r=t.createDocumentFragment(),c=[];if(mt(e))c.push(t.createTextNode(e));else{for(n=n||r.appendChild(t.createElement("div")),i=(Ca.exec(e)||["",""])[1].toLowerCase(),a=Aa[i]||Aa._default,n.innerHTML=a[1]+e.replace(Ma,"<$1></$2>")+a[2],s=a[0];s--;)n=n.lastChild;c=R(c,n.childNodes),n=r.firstChild,n.textContent=""}return r.textContent="",r.innerHTML="",o(c,function(e){r.appendChild(e)}),r}function ft(e,n){n=n||t;var i;return(i=ka.exec(e))?[n.createElement(i[1])]:(i=gt(e,n))?i.childNodes:[]}function _t(e){if(e instanceof _t)return e;var t;if(b(e)&&(e=ia(e),t=!0),!(this instanceof _t)){if(t&&"<"!=e.charAt(0))throw $a("nosel","Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");return new _t(e)}t?At(this,ft(e)):At(this,e)}function vt(e){return e.cloneNode(!0)}function yt(e,t){if(t||wt(e),e.querySelectorAll)for(var n=e.querySelectorAll("*"),i=0,a=n.length;a>i;i++)wt(n[i])}function bt(e,t,n,i){if(v(i))throw $a("offargs","jqLite#off() does not support the `selector` argument");var a=$t(e),s=a&&a.events,r=a&&a.handle;if(r)if(t)o(t.split(" "),function(t){if(v(n)){var i=s[t];if(N(i||[],n),i&&i.length>0)return}va(e,t,r),delete s[t]});else for(t in s)"$destroy"!==t&&va(e,t,r),delete s[t]}function wt(e,t){var i=e.ng339,a=i&&ga[i];if(a){if(t)return void delete a.data[t];a.handle&&(a.events.$destroy&&a.handle({},"$destroy"),bt(e)),delete ga[i],e.ng339=n}}function $t(e,t){var i=e.ng339,a=i&&ga[i];return t&&!a&&(e.ng339=i=ut(),a=ga[i]={events:{},data:{},handle:n}),a}function kt(e,t,n){if(ht(e)){var i=v(n),a=!i&&t&&!y(t),o=!t,s=$t(e,!a),r=s&&s.data;if(i)r[t]=n;else{if(o)return r;if(a)return r&&r[t];u(r,t)}}}function St(e,t){return e.getAttribute?(" "+(e.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+t+" ")>-1:!1}function Ct(e,t){t&&e.setAttribute&&o(t.split(" "),function(t){e.setAttribute("class",ia((" "+(e.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+ia(t)+" "," ")))})}function Mt(e,t){if(t&&e.setAttribute){var n=(" "+(e.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");o(t.split(" "),function(e){e=ia(e),-1===n.indexOf(" "+e+" ")&&(n+=e+" ")}),e.setAttribute("class",ia(n))}}function At(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 i=0;n>i;i++)e[e.length++]=t[i]}else e[e.length++]=t}}function xt(e,t){return Et(e,"$"+(t||"ngController")+"Controller")}function Et(e,t,i){e.nodeType==pa&&(e=e.documentElement);for(var a=na(t)?t:[t];e;){for(var o=0,s=a.length;s>o;o++)if((i=Vi.data(e,a[o]))!==n)return i;e=e.parentNode||e.nodeType===ma&&e.host}}function Tt(e){for(yt(e,!0);e.firstChild;)e.removeChild(e.firstChild)}function It(e,t){t||yt(e);var n=e.parentNode;n&&n.removeChild(e)}function Dt(t,n){n=n||e,"complete"===n.document.readyState?n.setTimeout(t):Vi(n).on("load",t)}function Pt(e,t){var n=Ea[t.toLowerCase()];return n&&Ta[P(e)]&&n}function Nt(e,t){var n=e.nodeName;return("INPUT"===n||"TEXTAREA"===n)&&Ia[t]}function Ut(e,t){var n=function(n,i){n.isDefaultPrevented=function(){return n.defaultPrevented};var a=t[i||n.type],o=a?a.length:0;if(o){if(_(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&&(a=O(a));for(var r=0;o>r;r++)n.isImmediatePropagationStopped()||a[r].call(e,n)}};return n.elem=e,n}function Ot(e,t){var n=e&&e.$$hashKey;if(n)return"function"==typeof n&&(n=e.$$hashKey()),n;var i=typeof e;return n="function"==i||"object"==i&&null!==e?e.$$hashKey=i+":"+(t||l)():i+":"+e}function Lt(e,t){if(t){var n=0;this.nextUid=function(){return++n}}o(e,this.put,this)}function Rt(e){var t=e.toString().replace(Ua,""),n=t.match(Da);return n?"function("+(n[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}function Bt(e,t,n){var i,a,s,r;if("function"==typeof e){if(!(i=e.$inject)){if(i=[],e.length){if(t)throw b(n)&&n||(n=e.name||Rt(e)),Oa("strictdi","{0} is not using explicit annotation and cannot be invoked in strict mode",n);a=e.toString().replace(Ua,""),s=a.match(Da),o(s[1].split(Pa),function(e){e.replace(Na,function(e,t,n){i.push(n)})})}e.$inject=i}}else na(e)?(r=e.length-1,at(e[r],"fn"),i=e.slice(0,r)):at(e,"fn",!0);return i}function Ft(e,t){function i(e){return function(t,n){return y(t)?void o(t,c(e)):e(t,n)}}function a(e,t){if(ot(e,"service"),(k(t)||na(t))&&(t=M.instantiate(t)),!t.$get)throw Oa("pget","Provider '{0}' must define $get factory method.",e);return C[e+w]=t}function s(e,t){return function(){var i=x.invoke(t,this,n,e);if(_(i))throw Oa("undef","Provider '{0}' must return a value from $get factory method.",e);return i}}function r(e,t,n){return a(e,{$get:n!==!1?s(e,t):t})}function l(e,t){return r(e,["$injector",function(e){return e.instantiate(t)}])}function d(e,t){return r(e,f(t),!1)}function u(e,t){ot(e,"constant"),C[e]=t,A[e]=t}function p(e,t){var n=M.get(e+w),i=n.$get;n.$get=function(){var e=x.invoke(i,n);return x.invoke(t,null,{$delegate:e})}}function m(e){var t,n=[];return o(e,function(e){function i(e){var t,n;for(t=0,n=e.length;n>t;t++){var i=e[t],a=M.get(i[0]);a[i[1]].apply(a,i[2])}}if(!S.get(e)){S.put(e,!0);try{b(e)?(t=Gi(e),n=n.concat(m(t.requires)).concat(t._runBlocks),i(t._invokeQueue),i(t._configBlocks)):k(e)?n.push(M.invoke(e)):na(e)?n.push(M.invoke(e)):at(e,"module")}catch(a){throw na(e)&&(e=e[e.length-1]),a.message&&a.stack&&-1==a.stack.indexOf(a.message)&&(a=a.message+"\n"+a.stack),Oa("modulerr","Failed to instantiate module {0} due to:\n{1}",e,a.stack||a.message||a)}}}),n}function g(e,n){function i(t){if(e.hasOwnProperty(t)){if(e[t]===v)throw Oa("cdep","Circular dependency found: {0}",t+" <- "+$.join(" <- "));return e[t]}try{return $.unshift(t),e[t]=v,e[t]=n(t)}catch(i){throw e[t]===v&&delete e[t],i}finally{$.shift()}}function a(e,n,a,o){"string"==typeof a&&(o=a,a=null);var s,r,c,l=[],d=Bt(e,t,o);for(r=0,s=d.length;s>r;r++){if(c=d[r],"string"!=typeof c)throw Oa("itkn","Incorrect injection token! Expected service name as string, got {0}",c);l.push(a&&a.hasOwnProperty(c)?a[c]:i(c))}return na(e)&&(e=e[s]),e.apply(n,l)}function o(e,t,n){var i,o,s=function(){};return s.prototype=(na(e)?e[e.length-1]:e).prototype,i=new s,o=a(e,i,t,n),y(o)||k(o)?o:i}return{invoke:a,instantiate:o,get:i,annotate:Bt,has:function(t){return C.hasOwnProperty(t+w)||e.hasOwnProperty(t)}}}t=t===!0;var v={},w="Provider",$=[],S=new Lt([],!0),C={$provide:{provider:i(a),factory:i(r),service:i(l),value:i(d),constant:i(u),decorator:p}},M=C.$injector=g(C,function(){throw Oa("unpr","Unknown provider: {0}",$.join(" <- "))}),A={},x=A.$injector=g(A,function(e){var t=M.get(e+w);return x.invoke(t.$get,t,n,e)});return o(m(e),function(e){x.invoke(e||h)}),x}function qt(){var e=!0;this.disableAutoScrolling=function(){e=!1},this.$get=["$window","$location","$rootScope",function(t,n,i){function a(e){var t=null;return Array.prototype.some.call(e,function(e){return"a"===P(e)?(t=e,!0):void 0}),t
}function o(){var e=r.yOffset;if(k(e))e=e();else if(I(e)){var n=e[0],i=t.getComputedStyle(n);e="fixed"!==i.position?0:n.getBoundingClientRect().bottom}else w(e)||(e=0);return e}function s(e){if(e){e.scrollIntoView();var n=o();if(n){var i=e.getBoundingClientRect().top;t.scrollBy(0,i-n)}}else t.scrollTo(0,0)}function r(){var e,t=n.hash();t?(e=c.getElementById(t))?s(e):(e=a(c.getElementsByName(t)))?s(e):"top"===t&&s(null):s(null)}var c=t.document;return e&&i.$watch(function(){return n.hash()},function(e,t){(e!==t||""!==e)&&Dt(function(){i.$evalAsync(r)})}),r}]}function jt(){this.$get=["$$rAF","$timeout",function(e,t){return e.supported?function(t){return e(t)}:function(e){return t(e,0,!1)}}]}function Ht(e,t,i,a){function s(e){try{e.apply(null,B(arguments,1))}finally{if($--,0===$)for(;k.length;)try{k.pop()()}catch(t){i.error(t)}}}function r(e,t){!function n(){o(C,function(e){e()}),S=t(n,e)}()}function c(){l(),d()}function l(){M=e.history.state,M=_(M)?null:M,L(M,P)&&(M=P),P=M}function d(){(x!==p.url()||A!==M)&&(x=p.url(),A=M,o(I,function(e){e(p.url(),M)}))}function u(e){try{return decodeURIComponent(e)}catch(t){return e}}var p=this,m=t[0],g=e.location,f=e.history,v=e.setTimeout,y=e.clearTimeout,w={};p.isMock=!1;var $=0,k=[];p.$$completeOutstandingRequest=s,p.$$incOutstandingRequestCount=function(){$++},p.notifyWhenNoOutstandingRequests=function(e){o(C,function(e){e()}),0===$?e():k.push(e)};var S,C=[];p.addPollFn=function(e){return _(S)&&r(100,v),C.push(e),e};var M,A,x=g.href,E=t.find("base"),T=null;l(),A=M,p.url=function(t,n,i){if(_(i)&&(i=null),g!==e.location&&(g=e.location),f!==e.history&&(f=e.history),t){var o=A===i;if(x===t&&(!a.history||o))return;var s=x&&_n(x)===_n(t);return x=t,A=i,!a.history||s&&o?(s||(T=t),n?g.replace(t):g.href=t):(f[n?"replaceState":"pushState"](i,"",t),l(),A=M),p}return T||g.href.replace(/%27/g,"'")},p.state=function(){return M};var I=[],D=!1,P=null;p.onUrlChange=function(t){return D||(a.history&&Vi(e).on("popstate",c),Vi(e).on("hashchange",c),D=!0),I.push(t),t},p.$$checkUrlChange=d,p.baseHref=function(){var e=E.attr("href");return e?e.replace(/^(https?\:)?\/\/[^\/]*/,""):""};var N={},U="",O=p.baseHref();p.cookies=function(e,t){var a,o,s,r,c;if(!e){if(m.cookie!==U)for(U=m.cookie,o=U.split("; "),N={},r=0;r<o.length;r++)s=o[r],c=s.indexOf("="),c>0&&(e=u(s.substring(0,c)),N[e]===n&&(N[e]=u(s.substring(c+1))));return N}t===n?m.cookie=encodeURIComponent(e)+"=;path="+O+";expires=Thu, 01 Jan 1970 00:00:00 GMT":b(t)&&(a=(m.cookie=encodeURIComponent(e)+"="+encodeURIComponent(t)+";path="+O).length+1,a>4096&&i.warn("Cookie '"+e+"' possibly not set or overflowed because it was too large ("+a+" > 4096 bytes)!"))},p.defer=function(e,t){var n;return $++,n=v(function(){delete w[n],s(e)},t||0),w[n]=!0,n},p.defer.cancel=function(e){return w[e]?(delete w[e],y(e),s(h),!0):!1}}function zt(){this.$get=["$window","$log","$sniffer","$document",function(e,t,n,i){return new Ht(e,i,t,n)}]}function Vt(){this.$get=function(){function e(e,n){function a(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 i("$cacheFactory")("iid","CacheId '{0}' is already taken!",e);var s=0,r=u({},n,{id:e}),c={},l=n&&n.capacity||Number.MAX_VALUE,d={},p=null,m=null;return t[e]={put:function(e,t){if(l<Number.MAX_VALUE){var n=d[e]||(d[e]={key:e});a(n)}if(!_(t))return e in c||s++,c[e]=t,s>l&&this.remove(m.key),t},get:function(e){if(l<Number.MAX_VALUE){var t=d[e];if(!t)return;a(t)}return c[e]},remove:function(e){if(l<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 c[e],s--},removeAll:function(){c={},s=0,d={},p=m=null},destroy:function(){c=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 Wt(){this.$get=["$cacheFactory",function(e){return e("templates")}]}function Gt(e,i){function a(e,t){var n=/^\s*([@&]|=(\*?))(\??)\s*(\w*)\s*$/,i={};return o(e,function(e,a){var o=e.match(n);if(!o)throw Ba("iscp","Invalid isolate scope definition for directive '{0}'. Definition: {... {1}: '{2}' ...}",t,a,e);i[a]={mode:o[1][0],collection:"*"===o[2],optional:"?"===o[3],attrName:o[4]||a}}),i}var s={},r="Directive",l=/^\s*directive\:\s*([\w\-]+)\s+(.*)$/,d=/(([\w\-]+)(?:\:([^;]+))?;?)/,p=D("ngSrc,ngSrcset,src,srcset"),_=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/,w=/^(on[a-z]+|formaction)$/;this.directive=function S(t,n){return ot(t,"directive"),b(t)?(it(n,"directiveFactory"),s.hasOwnProperty(t)||(s[t]=[],e.factory(t+r,["$injector","$exceptionHandler",function(e,n){var i=[];return o(s[t],function(o,s){try{var r=e.invoke(o);k(r)?r={compile:f(r)}:!r.compile&&r.link&&(r.compile=f(r.link)),r.priority=r.priority||0,r.index=s,r.name=r.name||t,r.require=r.require||r.controller&&r.name,r.restrict=r.restrict||"EA",y(r.scope)&&(r.$$isolateBindings=a(r.scope,r.name)),i.push(r)}catch(c){n(c)}}),i}])),s[t].push(n)):o(t,c(S)),this},this.aHrefSanitizationWhitelist=function(e){return v(e)?(i.aHrefSanitizationWhitelist(e),this):i.aHrefSanitizationWhitelist()},this.imgSrcSanitizationWhitelist=function(e){return v(e)?(i.imgSrcSanitizationWhitelist(e),this):i.imgSrcSanitizationWhitelist()};var $=!0;this.debugInfoEnabled=function(e){return v(e)?($=e,this):$},this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$document","$sce","$animate","$$sanitizeUri",function(e,i,a,c,f,v,S,C,A,x,E){function T(e,t){try{e.addClass(t)}catch(n){}}function I(e,t,n,i,a){e instanceof Vi||(e=Vi(e)),o(e,function(t,n){t.nodeType==da&&t.nodeValue.match(/\S+/)&&(e[n]=Vi(t).wrap("<span></span>").parent()[0])});var s=U(e,t,e,n,i,a);I.$$addScopeClass(e);var r=null;return function(t,n,i){it(t,"scope"),i=i||{};var a=i.parentBoundTranscludeFn,o=i.transcludeControllers,c=i.futureParentElement;a&&a.$$boundTransclude&&(a=a.$$boundTransclude),r||(r=D(c));var l;if(l="html"!==r?Vi(J(r,Vi("<div>").append(e).html())):n?xa.clone.call(e):e,o)for(var d in o)l.data("$"+d+"Controller",o[d].instance);return I.$$addScopeInfo(l,t),n&&n(l,t),s&&s(t,l,l,a),l}}function D(e){var t=e&&e[0];return t&&"foreignobject"!==P(t)&&t.toString().match(/SVG/)?"svg":"html"}function U(e,t,i,a,o,s){function r(e,i,a,o){var s,r,c,l,d,u,p,m,f;if(h){var _=i.length;for(f=new Array(_),d=0;d<g.length;d+=3)p=g[d],f[p]=i[p]}else f=i;for(d=0,u=g.length;u>d;)c=f[g[d++]],s=g[d++],r=g[d++],s?(s.scope?(l=e.$new(),I.$$addScopeInfo(Vi(c),l)):l=e,m=s.transcludeOnThisElement?O(e,s.transclude,o,s.elementTranscludeOnThisElement):!s.templateOnThisElement&&o?o:!o&&t?O(e,t):null,s(r,l,c,a,m)):r&&r(e,c.childNodes,n,o)}for(var c,l,d,u,p,m,h,g=[],f=0;f<e.length;f++)c=new st,l=R(e[f],[],c,0===f?a:n,o),d=l.length?j(l,e[f],c,t,i,null,[],[],s):null,d&&d.scope&&I.$$addScopeClass(c.$$element),p=d&&d.terminal||!(u=e[f].childNodes)||!u.length?null:U(u,d?(d.transcludeOnThisElement||!d.templateOnThisElement)&&d.transclude:t),(d||p)&&(g.push(f,d,p),m=!0,h=h||d),s=null;return m?r:null}function O(e,t,n){var i=function(i,a,o,s,r){return i||(i=e.$new(!1,r),i.$$transcluded=!0),t(i,a,{parentBoundTranscludeFn:n,transcludeControllers:o,futureParentElement:s})};return i}function R(e,t,n,i,a){var o,s,r=e.nodeType,c=n.$attr;switch(r){case la:V(t,Kt(P(e)),"E",i,a);for(var u,p,m,h,g,f,_=e.attributes,v=0,y=_&&_.length;y>v;v++){var w=!1,$=!1;u=_[v],p=u.name,g=ia(u.value),h=Kt(p),(f=ut.test(h))&&(p=tt(h.substr(6),"-"));var k=h.replace(/(Start|End)$/,"");W(k)&&h===k+"Start"&&(w=p,$=p.substr(0,p.length-5)+"end",p=p.substr(0,p.length-6)),m=Kt(p.toLowerCase()),c[m]=p,(f||!n.hasOwnProperty(m))&&(n[m]=g,Pt(e,m)&&(n[m]=!0)),et(e,t,g,m,f),V(t,m,"A",i,a,w,$)}if(s=e.className,b(s)&&""!==s)for(;o=d.exec(s);)m=Kt(o[2]),V(t,m,"C",i,a)&&(n[m]=ia(o[3])),s=s.substr(o.index+o[0].length);break;case da:X(t,e.nodeValue);break;case ua:try{o=l.exec(e.nodeValue),o&&(m=Kt(o[1]),V(t,m,"M",i,a)&&(n[m]=ia(o[2])))}catch(S){}}return t.sort(Y),t}function F(e,t,n){var i=[],a=0;if(t&&e.hasAttribute&&e.hasAttribute(t)){do{if(!e)throw Ba("uterdir","Unterminated attribute, found '{0}' but no matching '{1}' found.",t,n);e.nodeType==la&&(e.hasAttribute(t)&&a++,e.hasAttribute(n)&&a--),i.push(e),e=e.nextSibling}while(a>0)}else i.push(e);return Vi(i)}function q(e,t,n){return function(i,a,o,s,r){return a=F(a[0],t,n),e(i,a,o,s,r)}}function j(e,s,r,c,l,d,u,p,m){function h(e,t,n,i){e&&(n&&(e=q(e,n,i)),e.require=C.require,e.directiveName=A,(N===C||C.$$isolateScope)&&(e=at(e,{isolateScope:!0})),u.push(e)),t&&(n&&(t=q(t,n,i)),t.require=C.require,t.directiveName=A,(N===C||C.$$isolateScope)&&(t=at(t,{isolateScope:!0})),p.push(t))}function g(e,t,n,i){var a,s,r="data",c=!1,l=n;if(b(t)){if(s=t.match(_),t=t.substring(s[0].length),s[3]&&(s[1]?s[3]=null:s[1]=s[3]),"^"===s[1]?r="inheritedData":"^^"===s[1]&&(r="inheritedData",l=n.parent()),"?"===s[2]&&(c=!0),a=null,i&&"data"===r&&(a=i[t])&&(a=a.instance),a=a||l[r]("$"+t+"Controller"),!a&&!c)throw Ba("ctreq","Controller '{0}', required by directive '{1}', can't be found!",t,e);return a||null}return na(t)&&(a=[],o(t,function(t){a.push(g(e,t,n,i))})),a}function w(e,t,a,c,l){function d(e,t,i){var a;return M(e)||(i=t,t=e,e=n),W&&(a=w),i||(i=W?k.parent():k),l(e,t,a,i,E)}var m,h,_,y,b,w,$,k,C;if(s===a?(C=r,k=r.$$element):(k=Vi(a),C=new st(k,r)),N&&(b=t.$new(!0)),l&&($=d,$.$$boundTransclude=l),P&&(S={},w={},o(P,function(e){var n,i={$scope:e===N||e.$$isolateScope?b:t,$element:k,$attrs:C,$transclude:$};y=e.controller,"@"==y&&(y=C[e.name]),n=v(y,i,!0,e.controllerAs),w[e.name]=n,W||k.data("$"+e.name+"Controller",n.instance),S[e.name]=n})),N){I.$$addScopeInfo(k,b,!0,!(U&&(U===N||U===N.$$originalDirective))),I.$$addScopeClass(k,!0);var A=S&&S[N.name],x=b;A&&A.identifier&&N.bindToController===!0&&(x=A.instance),o(b.$$isolateBindings=N.$$isolateBindings,function(e,n){var a,o,s,r,c=e.attrName,l=e.optional,d=e.mode;switch(d){case"@":C.$observe(c,function(e){x[n]=e}),C.$$observers[c].$$scope=t,C[c]&&(x[n]=i(C[c])(t));break;case"=":if(l&&!C[c])return;o=f(C[c]),r=o.literal?L:function(e,t){return e===t||e!==e&&t!==t},s=o.assign||function(){throw a=x[n]=o(t),Ba("nonassign","Expression '{0}' used with directive '{1}' is non-assignable!",C[c],N.name)},a=x[n]=o(t);var u=function(e){return r(e,x[n])||(r(e,a)?s(t,e=x[n]):x[n]=e),a=e};u.$stateful=!0;var p;p=e.collection?t.$watchCollection(C[c],u):t.$watch(f(C[c],u),null,o.literal),b.$on("$destroy",p);break;case"&":o=f(C[c]),x[n]=function(e){return o(t,e)}}})}for(S&&(o(S,function(e){e()}),S=null),m=0,h=u.length;h>m;m++)_=u[m],ot(_,_.isolateScope?b:t,k,C,_.require&&g(_.directiveName,_.require,k,w),$);var E=t;for(N&&(N.template||null===N.templateUrl)&&(E=b),e&&e(E,a.childNodes,n,l),m=p.length-1;m>=0;m--)_=p[m],ot(_,_.isolateScope?b:t,k,C,_.require&&g(_.directiveName,_.require,k,w),$)}m=m||{};for(var $,S,C,A,x,E,T,D=-Number.MAX_VALUE,P=m.controllerDirectives,N=m.newIsolateScopeDirective,U=m.templateDirective,O=m.nonTlbTranscludeDirective,j=!1,V=!1,W=m.hasElementTranscludeDirective,Y=r.$$element=Vi(s),X=d,Q=c,et=0,tt=e.length;tt>et;et++){C=e[et];var it=C.$$start,rt=C.$$end;if(it&&(Y=F(s,it,rt)),x=n,D>C.priority)break;if((T=C.scope)&&(C.templateUrl||(y(T)?(Z("new/isolated scope",N||$,C,Y),N=C):Z("new/isolated scope",N,C,Y)),$=$||C),A=C.name,!C.templateUrl&&C.controller&&(T=C.controller,P=P||{},Z("'"+A+"' controller",P[A],C,Y),P[A]=C),(T=C.transclude)&&(j=!0,C.$$tlb||(Z("transclusion",O,C,Y),O=C),"element"==T?(W=!0,D=C.priority,x=Y,Y=r.$$element=Vi(t.createComment(" "+A+": "+r[A]+" ")),s=Y[0],nt(l,B(x),s),Q=I(x,c,D,X&&X.name,{nonTlbTranscludeDirective:O})):(x=Vi(vt(s)).contents(),Y.empty(),Q=I(x,c))),C.template)if(V=!0,Z("template",U,C,Y),U=C,T=k(C.template)?C.template(Y,r):C.template,T=dt(T),C.replace){if(X=C,x=mt(T)?[]:Zt(J(C.templateNamespace,ia(T))),s=x[0],1!=x.length||s.nodeType!==la)throw Ba("tplrt","Template for directive '{0}' must have exactly one root element. {1}",A,"");nt(l,Y,s);var ct={$attr:{}},lt=R(s,[],ct),ut=e.splice(et+1,e.length-(et+1));N&&H(lt),e=e.concat(lt).concat(ut),G(r,ct),tt=e.length}else Y.html(T);if(C.templateUrl)V=!0,Z("template",U,C,Y),U=C,C.replace&&(X=C),w=K(e.splice(et,e.length-et),Y,r,l,j&&Q,u,p,{controllerDirectives:P,newIsolateScopeDirective:N,templateDirective:U,nonTlbTranscludeDirective:O}),tt=e.length;else if(C.compile)try{E=C.compile(Y,r,Q),k(E)?h(null,E,it,rt):E&&h(E.pre,E.post,it,rt)}catch(pt){a(pt,z(Y))}C.terminal&&(w.terminal=!0,D=Math.max(D,C.priority))}return w.scope=$&&$.scope===!0,w.transcludeOnThisElement=j,w.elementTranscludeOnThisElement=W,w.templateOnThisElement=V,w.transclude=Q,m.hasElementTranscludeDirective=W,w}function H(e){for(var t=0,n=e.length;n>t;t++)e[t]=m(e[t],{$$isolateScope:!0})}function V(t,i,o,c,l,d,u){if(i===l)return null;var p=null;if(s.hasOwnProperty(i))for(var h,g=e.get(i+r),f=0,_=g.length;_>f;f++)try{h=g[f],(c===n||c>h.priority)&&-1!=h.restrict.indexOf(o)&&(d&&(h=m(h,{$$start:d,$$end:u})),t.push(h),p=h)}catch(v){a(v)}return p}function W(t){if(s.hasOwnProperty(t))for(var n,i=e.get(t+r),a=0,o=i.length;o>a;a++)if(n=i[a],n.multiElement)return!0;return!1}function G(e,t){var n=t.$attr,i=e.$attr,a=e.$$element;o(e,function(i,a){"$"!=a.charAt(0)&&(t[a]&&t[a]!==i&&(i+=("style"===a?";":" ")+t[a]),e.$set(a,i,!0,n[a]))}),o(t,function(t,o){"class"==o?(T(a,t),e["class"]=(e["class"]?e["class"]+" ":"")+t):"style"==o?(a.attr("style",a.attr("style")+";"+t),e.style=(e.style?e.style+";":"")+t):"$"==o.charAt(0)||e.hasOwnProperty(o)||(e[o]=t,i[o]=n[o])})}function K(e,t,n,i,a,s,r,l){var d,p,m=[],h=t[0],g=e.shift(),f=u({},g,{templateUrl:null,transclude:null,replace:null,$$originalDirective:g}),_=k(g.templateUrl)?g.templateUrl(t,n):g.templateUrl,v=g.templateNamespace;return t.empty(),c(A.getTrustedResourceUrl(_)).then(function(c){var u,b,w,$;if(c=dt(c),g.replace){if(w=mt(c)?[]:Zt(J(v,ia(c))),u=w[0],1!=w.length||u.nodeType!==la)throw Ba("tplrt","Template for directive '{0}' must have exactly one root element. {1}",g.name,_);b={$attr:{}},nt(i,t,u);var k=R(u,[],b);y(g.scope)&&H(k),e=k.concat(e),G(n,b)}else u=h,t.html(c);for(e.unshift(f),d=j(e,u,n,a,t,g,s,r,l),o(i,function(e,n){e==u&&(i[n]=t[0])}),p=U(t[0].childNodes,a);m.length;){var S=m.shift(),C=m.shift(),M=m.shift(),A=m.shift(),x=t[0];if(!S.$$destroyed){if(C!==h){var E=C.className;l.hasElementTranscludeDirective&&g.replace||(x=vt(u)),nt(M,Vi(C),x),T(Vi(x),E)}$=d.transcludeOnThisElement?O(S,d.transclude,A):A,d(p,S,x,i,$)}}m=null}),function(e,t,n,i,a){var o=a;t.$$destroyed||(m?(m.push(t),m.push(n),m.push(i),m.push(o)):(d.transcludeOnThisElement&&(o=O(t,d.transclude,a)),d(p,t,n,i,o)))}}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,i){if(t)throw Ba("multidir","Multiple directives [{0}, {1}] asking for {2} on: {3}",t.name,n.name,e,z(i))}function X(e,t){var n=i(t,!0);n&&e.push({priority:0,compile:function(e){var t=e.parent(),i=!!t.length;return i&&I.$$addBindingClass(t),function(e,t){var a=t.parent();i||I.$$addBindingClass(a),I.$$addBindingInfo(a,n.expressions),e.$watch(n,function(e){t[0].nodeValue=e})}}})}function J(e,n){switch(e=Bi(e||"html")){case"svg":case"math":var i=t.createElement("div");return i.innerHTML="<"+e+">"+n+"</"+e+">",i.childNodes[0].childNodes;default:return n}}function Q(e,t){if("srcdoc"==t)return A.HTML;var n=P(e);return"xlinkHref"==t||"form"==n&&"action"==t||"img"!=n&&("src"==t||"ngSrc"==t)?A.RESOURCE_URL:void 0}function et(e,t,n,a,o){var s=i(n,!0);if(s){if("multiple"===a&&"select"===P(e))throw Ba("selmulti","Binding to the 'multiple' attribute is not supported. Element: {0}",z(e));t.push({priority:100,compile:function(){return{pre:function(t,n,r){var c=r.$$observers||(r.$$observers={});if(w.test(a))throw Ba("nodomevents","Interpolations for HTML DOM event attributes are disallowed. Please use the ng- versions (such as ng-click instead of onclick) instead.");r[a]&&(s=i(r[a],!0,Q(e,a),p[a]||o),s&&(r[a]=s(t),(c[a]||(c[a]=[])).$$inter=!0,(r.$$observers&&r.$$observers[a].$$scope||t).$watch(s,function(e,t){"class"===a&&e!=t?r.$updateClass(e,t):r.$set(a,e)})))}}}})}}function nt(e,n,i){var a,o,s=n[0],r=n.length,c=s.parentNode;if(e)for(a=0,o=e.length;o>a;a++)if(e[a]==s){e[a++]=i;for(var l=a,d=l+r-1,u=e.length;u>l;l++,d++)u>d?e[l]=e[d]:delete e[l];e.length-=r-1,e.context===s&&(e.context=i);break}c&&c.replaceChild(i,s);var p=t.createDocumentFragment();p.appendChild(s),Vi(i).data(Vi(s).data()),Wi?(ta=!0,Wi.cleanData([s])):delete Vi.cache[s[Vi.expando]];for(var m=1,h=n.length;h>m;m++){var g=n[m];Vi(g).remove(),p.appendChild(g),delete n[m]}n[0]=i,n.length=1}function at(e,t){return u(function(){return e.apply(null,arguments)},e,t)}function ot(e,t,n,i,o,s){try{e(t,n,i,o,s)}catch(r){a(r,z(n))}}var st=function(e,t){if(t){var n,i,a,o=Object.keys(t);for(n=0,i=o.length;i>n;n++)a=o[n],this[a]=t[a]}else this.$attr={};this.$$element=e};st.prototype={$normalize:Kt,$addClass:function(e){e&&e.length>0&&x.addClass(this.$$element,e)},$removeClass:function(e){e&&e.length>0&&x.removeClass(this.$$element,e)},$updateClass:function(e,t){var n=Yt(e,t);n&&n.length&&x.addClass(this.$$element,n);var i=Yt(t,e);i&&i.length&&x.removeClass(this.$$element,i)},$set:function(e,t,i,s){var r,c=this.$$element[0],l=Pt(c,e),d=Nt(c,e),u=e;if(l?(this.$$element.prop(e,t),s=l):d&&(this[d]=t,u=d),this[e]=t,s?this.$attr[e]=s:(s=this.$attr[e],s||(this.$attr[e]=s=tt(e,"-"))),r=P(this.$$element),"a"===r&&"href"===e||"img"===r&&"src"===e)this[e]=t=E(t,"src"===e);else if("img"===r&&"srcset"===e){for(var p="",m=ia(t),h=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,g=/\s/.test(m)?h:/(,)/,f=m.split(g),_=Math.floor(f.length/2),v=0;_>v;v++){var y=2*v;p+=E(ia(f[y]),!0),p+=" "+ia(f[y+1])}var b=ia(f[2*v]).split(/\s/);p+=E(ia(b[0]),!0),2===b.length&&(p+=" "+ia(b[1])),this[e]=t=p}i!==!1&&(null===t||t===n?this.$$element.removeAttr(s):this.$$element.attr(s,t));var w=this.$$observers;w&&o(w[u],function(e){try{e(t)}catch(n){a(n)}})},$observe:function(e,t){var n=this,i=n.$$observers||(n.$$observers=ct()),a=i[e]||(i[e]=[]);return a.push(t),S.$evalAsync(function(){!a.$$inter&&n.hasOwnProperty(e)&&t(n[e])}),function(){N(a,t)}}};var rt=i.startSymbol(),lt=i.endSymbol(),dt="{{"==rt||"}}"==lt?g:function(e){return e.replace(/\{\{/g,rt).replace(/}}/g,lt)},ut=/^ngAttr[A-Z]/;return I.$$addBindingInfo=$?function(e,t){var n=e.data("$binding")||[];na(t)?n=n.concat(t):n.push(t),e.data("$binding",n)}:h,I.$$addBindingClass=$?function(e){T(e,"ng-binding")}:h,I.$$addScopeInfo=$?function(e,t,n,i){var a=n?i?"$isolateScopeNoTemplate":"$isolateScope":"$scope";e.data(a,t)}:h,I.$$addScopeClass=$?function(e,t){T(e,t?"ng-isolate-scope":"ng-scope")}:h,I}]}function Kt(e){return pt(e.replace(Fa,""))}function Yt(e,t){var n="",i=e.split(/\s+/),a=t.split(/\s+/);e:for(var o=0;o<i.length;o++){for(var s=i[o],r=0;r<a.length;r++)if(s==a[r])continue e;n+=(n.length>0?" ":"")+s}return n}function Zt(e){e=Vi(e);var t=e.length;if(1>=t)return e;for(;t--;){var n=e[t];n.nodeType===ua&&Yi.call(e,t,1)}return e}function Xt(){var e={},t=!1,a=/^(\S+)(\s+as\s+(\w+))?$/;this.register=function(t,n){ot(t,"controller"),y(t)?u(e,t):e[t]=n},this.allowGlobals=function(){t=!0},this.$get=["$injector","$window",function(o,s){function r(e,t,n,a){if(!e||!y(e.$scope))throw i("$controller")("noscp","Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",a,t);e.$scope[t]=n}return function(i,c,l,d){var p,m,h,g;if(l=l===!0,d&&b(d)&&(g=d),b(i)&&(m=i.match(a),h=m[1],g=g||m[3],i=e.hasOwnProperty(h)?e[h]:st(c.$scope,h,!0)||(t?st(s,h,!0):n),at(i,h,!0)),l){var f=function(){};return f.prototype=(na(i)?i[i.length-1]:i).prototype,p=new f,g&&r(c,g,p,h||i.name),u(function(){return o.invoke(i,p,c,h),p},{instance:p,identifier:g})}return p=o.instantiate(i,c,h),g&&r(c,g,p,h||i.name),p}}]}function Jt(){this.$get=["$window",function(e){return Vi(e.document)}]}function Qt(){this.$get=["$log",function(e){return function(){e.error.apply(e,arguments)}}]}function en(e,t){if(b(e)){e=e.replace(Va,"");var n=t("Content-Type");(n&&0===n.indexOf(qa)||Ha.test(e)&&za.test(e))&&(e=H(e))}return e}function tn(e){var t,n,i,a={};return e?(o(e.split("\n"),function(e){i=e.indexOf(":"),t=Bi(ia(e.substr(0,i))),n=ia(e.substr(i+1)),t&&(a[t]=a[t]?a[t]+", "+n:n)}),a):a}function nn(e){var t=y(e)?e:n;return function(n){return t||(t=tn(e)),n?t[Bi(n)]||null:t}}function an(e,t,n){return k(n)?n(e,t):(o(n,function(n){e=n(e,t)}),e)}function on(e){return e>=200&&300>e}function sn(){var e=this.defaults={transformResponse:[en],transformRequest:[function(e){return!y(e)||A(e)||x(e)?e:j(e)}],headers:{common:{Accept:"application/json, text/plain, */*"},post:O(ja),put:O(ja),patch:O(ja)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"},t=!1;this.useApplyAsync=function(e){return v(e)?(t=!!e,this):t};var i=this.interceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function(a,s,c,l,d,p){function m(t){function i(e){var t=u({},e);return t.data=e.data?an(e.data,e.headers,s.transformResponse):e.data,on(e.status)?t:d.reject(t)}function a(t){function n(e){var t;o(e,function(n,i){k(n)&&(t=n(),null!=t?e[i]=t:delete e[i])})}var i,a,s,r=e.headers,c=u({},t.headers);r=u({},r.common,r[Bi(t.method)]);e:for(i in r){a=Bi(i);for(s in c)if(Bi(s)===a)continue e;c[i]=r[i]}return n(c),c}var s={method:"get",transformRequest:e.transformRequest,transformResponse:e.transformResponse},r=a(t);u(s,t),s.headers=r,s.method=qi(s.method);var c=function(t){r=t.headers;var n=an(t.data,nn(r),t.transformRequest);return _(n)&&o(r,function(e,t){"content-type"===Bi(t)&&delete r[t]}),_(t.withCredentials)&&!_(e.withCredentials)&&(t.withCredentials=e.withCredentials),f(t,n,r).then(i,i)},l=[c,n],p=d.when(s);for(o(C,function(e){(e.request||e.requestError)&&l.unshift(e.request,e.requestError),(e.response||e.responseError)&&l.push(e.response,e.responseError)});l.length;){var m=l.shift(),h=l.shift();p=p.then(m,h)}return p.success=function(e){return p.then(function(t){e(t.data,t.status,t.headers,s)}),p},p.error=function(e){return p.then(null,function(t){e(t.data,t.status,t.headers,s)}),p},p}function h(){o(arguments,function(e){m[e]=function(t,n){return m(u(n||{},{method:e,url:t}))}})}function g(){o(arguments,function(e){m[e]=function(t,n,i){return m(u(i||{},{method:e,url:t,data:n}))}})}function f(i,o,r){function c(e,n,i,a){function o(){u(n,e,i,a)}h&&(on(e)?h.put($,[e,n,tn(i),a]):h.remove($)),t?l.$applyAsync(o):(o(),l.$$phase||l.$apply())}function u(e,t,n,a){t=Math.max(t,0),(on(t)?f.resolve:f.reject)({data:e,status:t,headers:nn(n),config:i,statusText:a})}function p(){var e=m.pendingRequests.indexOf(i);-1!==e&&m.pendingRequests.splice(e,1)}var h,g,f=d.defer(),b=f.promise,$=w(i.url,i.params);if(m.pendingRequests.push(i),b.then(p,p),!i.cache&&!e.cache||i.cache===!1||"GET"!==i.method&&"JSONP"!==i.method||(h=y(i.cache)?i.cache:y(e.cache)?e.cache:S),h)if(g=h.get($),v(g)){if(T(g))return g.then(p,p),g;na(g)?u(g[1],g[0],O(g[2]),g[3]):u(g,200,{},"OK")}else h.put($,b);if(_(g)){var k=Qn(i.url)?s.cookies()[i.xsrfCookieName||e.xsrfCookieName]:n;k&&(r[i.xsrfHeaderName||e.xsrfHeaderName]=k),a(i.method,$,o,c,r,i.timeout,i.withCredentials,i.responseType)}return b}function w(e,t){if(!t)return e;var n=[];return r(t,function(e,t){null===e||_(e)||(na(e)||(e=[e]),o(e,function(e){y(e)&&(e=$(e)?e.toISOString():j(e)),n.push(Y(t)+"="+Y(e))}))}),n.length>0&&(e+=(-1==e.indexOf("?")?"?":"&")+n.join("&")),e}var S=c("$http"),C=[];return o(i,function(e){C.unshift(b(e)?p.get(e):p.invoke(e))}),m.pendingRequests=[],h("get","delete","head","jsonp"),g("post","put","patch"),m.defaults=e,m}]}function rn(){return new e.XMLHttpRequest}function cn(){this.$get=["$browser","$window","$document",function(e,t,n){return ln(e,rn,e.defer,t.angular.callbacks,n[0])}]}function ln(e,t,n,i,a){function s(e,t,n){var o=a.createElement("script"),s=null;return o.type="text/javascript",o.src=e,o.async=!0,s=function(e){va(o,"load",s),va(o,"error",s),a.body.removeChild(o),o=null;var r=-1,c="unknown";e&&("load"!==e.type||i[t].called||(e={type:"error"}),c=e.type,r="error"===e.type?404:200),n&&n(r,c)},_a(o,"load",s),_a(o,"error",s),a.body.appendChild(o),s}return function(a,r,c,l,d,u,p,m){function g(){y&&y(),b&&b.abort()}function f(t,i,a,o,s){k&&n.cancel(k),y=b=null,t(i,a,o,s),e.$$completeOutstandingRequest(h)}if(e.$$incOutstandingRequestCount(),r=r||e.url(),"jsonp"==Bi(a)){var _="_"+(i.counter++).toString(36);i[_]=function(e){i[_].data=e,i[_].called=!0};var y=s(r.replace("JSON_CALLBACK","angular.callbacks."+_),_,function(e,t){f(l,e,i[_].data,"",t),i[_]=h})}else{var b=t();b.open(a,r,!0),o(d,function(e,t){v(e)&&b.setRequestHeader(t,e)}),b.onload=function(){var e=b.statusText||"",t="response"in b?b.response:b.responseText,n=1223===b.status?204:b.status;0===n&&(n=t?200:"file"==Jn(r).protocol?404:0),f(l,n,t,b.getAllResponseHeaders(),e)};var w=function(){f(l,-1,null,null,"")};if(b.onerror=w,b.onabort=w,p&&(b.withCredentials=!0),m)try{b.responseType=m}catch($){if("json"!==m)throw $}b.send(c||null)}if(u>0)var k=n(g,u);else T(u)&&u.then(g)}}function dn(){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,i,a){function o(e){return"\\\\\\"+e}function s(o,s,p,m){function h(n){return n.replace(l,e).replace(d,t)}function g(e){try{return E(x(e))}catch(t){var n=Wa("interr","Can't interpolate: {0}\n{1}",o,t.toString());i(n)}}m=!!m;for(var f,v,y,b=0,w=[],$=[],S=o.length,C=[],M=[];S>b;){if(-1==(f=o.indexOf(e,b))||-1==(v=o.indexOf(t,f+r))){b!==S&&C.push(h(o.substring(b)));break}b!==f&&C.push(h(o.substring(b,f))),y=o.substring(f+r,v),w.push(y),$.push(n(y,g)),b=v+c,M.push(C.length),C.push("")}if(p&&C.length>1)throw Wa("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",o);if(!s||w.length){var A=function(e){for(var t=0,n=w.length;n>t;t++){if(m&&_(e[t]))return;C[M[t]]=e[t]}return C.join("")},x=function(e){return p?a.getTrusted(p,e):a.valueOf(e)},E=function(e){if(null==e)return"";switch(typeof e){case"string":break;case"number":e=""+e;break;default:e=j(e)}return e};return u(function(e){var t=0,n=w.length,a=new Array(n);try{for(;n>t;t++)a[t]=$[t](e);return A(a)}catch(s){var r=Wa("interr","Can't interpolate: {0}\n{1}",o,s.toString());i(r)}},{exp:o,expressions:w,$$watchDelegate:function(e,t,n){var i;return e.$watchGroup($,function(n,a){var o=A(n);k(t)&&t.call(this,o,n!==a?i:o,e),i=o},n)}})}}var r=e.length,c=t.length,l=new RegExp(e.replace(/./g,o),"g"),d=new RegExp(t.replace(/./g,o),"g");return s.startSymbol=function(){return e},s.endSymbol=function(){return t},s}]}function un(){this.$get=["$rootScope","$window","$q","$$q",function(e,t,n,i){function a(a,s,r,c){var l=t.setInterval,d=t.clearInterval,u=0,p=v(c)&&!c,m=(p?i:n).defer(),h=m.promise;return r=v(r)?r:0,h.then(null,null,a),h.$$intervalId=l(function(){m.notify(u++),r>0&&u>=r&&(m.resolve(u),d(h.$$intervalId),delete o[h.$$intervalId]),p||e.$apply()},s),o[h.$$intervalId]=m,h}var o={};return a.cancel=function(e){return e&&e.$$intervalId in o?(o[e.$$intervalId].reject("canceled"),t.clearInterval(e.$$intervalId),delete o[e.$$intervalId],!0):!1},a}]}function pn(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"¤",posSuf:"",negPre:"(¤",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January,February,March,April,May,June,July,August,September,October,November,December".split(","),SHORTMONTH:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),DAY:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),SHORTDAY:"Sun,Mon,Tue,Wed,Thu,Fri,Sat".split(","),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(e){return 1===e?"one":"other"}}}}function mn(e){for(var t=e.split("/"),n=t.length;n--;)t[n]=K(t[n]);return t.join("/")}function hn(e,t,n){var i=Jn(e,n);t.$$protocol=i.protocol,t.$$host=i.hostname,t.$$port=p(i.port)||Ka[i.protocol]||null}function gn(e,t,n){var i="/"!==e.charAt(0);i&&(e="/"+e);var a=Jn(e,n);t.$$path=decodeURIComponent(i&&"/"===a.pathname.charAt(0)?a.pathname.substring(1):a.pathname),t.$$search=W(a.search),t.$$hash=decodeURIComponent(a.hash),t.$$path&&"/"!=t.$$path.charAt(0)&&(t.$$path="/"+t.$$path)}function fn(e,t){return 0===t.indexOf(e)?t.substr(e.length):void 0}function _n(e){var t=e.indexOf("#");return-1==t?e:e.substr(0,t)}function vn(e){return e.substr(0,_n(e).lastIndexOf("/")+1)}function yn(e){return e.substring(0,e.indexOf("/",e.indexOf("//")+2))}function bn(e,t){this.$$html5=!0,t=t||"";var i=vn(e);hn(e,this,e),this.$$parse=function(t){var n=fn(i,t);if(!b(n))throw Ya("ipthprfx",'Invalid url "{0}", missing path prefix "{1}".',t,i);gn(n,this,e),this.$$path||(this.$$path="/"),this.$$compose()},this.$$compose=function(){var e=G(this.$$search),t=this.$$hash?"#"+K(this.$$hash):"";this.$$url=mn(this.$$path)+(e?"?"+e:"")+t,this.$$absUrl=i+this.$$url.substr(1)},this.$$parseLinkUrl=function(a,o){if(o&&"#"===o[0])return this.hash(o.slice(1)),!0;var s,r,c;return(s=fn(e,a))!==n?(r=s,c=(s=fn(t,s))!==n?i+(fn("/",s)||s):e+r):(s=fn(i,a))!==n?c=i+s:i==a+"/"&&(c=i),c&&this.$$parse(c),!!c}}function wn(e,t){var n=vn(e);hn(e,this,e),this.$$parse=function(i){function a(e,t,n){var i,a=/^\/[A-Z]:(\/.*)/;return 0===t.indexOf(n)&&(t=t.replace(n,"")),a.exec(t)?e:(i=a.exec(e),i?i[1]:e)}var o=fn(e,i)||fn(n,i),s="#"==o.charAt(0)?fn(t,o):this.$$html5?o:"";if(!b(s))throw Ya("ihshprfx",'Invalid url "{0}", missing hash prefix "{1}".',i,t);gn(s,this,e),this.$$path=a(this.$$path,s,e),this.$$compose()},this.$$compose=function(){var n=G(this.$$search),i=this.$$hash?"#"+K(this.$$hash):"";this.$$url=mn(this.$$path)+(n?"?"+n:"")+i,this.$$absUrl=e+(this.$$url?t+this.$$url:"")},this.$$parseLinkUrl=function(t){return _n(e)==_n(t)?(this.$$parse(t),!0):!1}}function $n(e,t){this.$$html5=!0,wn.apply(this,arguments);var n=vn(e);this.$$parseLinkUrl=function(i,a){if(a&&"#"===a[0])return this.hash(a.slice(1)),!0;var o,s;return e==_n(i)?o=i:(s=fn(n,i))?o=e+t+s:n===i+"/"&&(o=n),o&&this.$$parse(o),!!o},this.$$compose=function(){var n=G(this.$$search),i=this.$$hash?"#"+K(this.$$hash):"";this.$$url=mn(this.$$path)+(n?"?"+n:"")+i,this.$$absUrl=e+t+this.$$url}}function kn(e){return function(){return this[e]}}function Sn(e,t){return function(n){return _(n)?this[e]:(this[e]=t(n),this.$$compose(),this)}}function Cn(){var t="",n={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(e){return v(e)?(t=e,this):t},this.html5Mode=function(e){return E(e)?(n.enabled=e,this):y(e)?(E(e.enabled)&&(n.enabled=e.enabled),E(e.requireBase)&&(n.requireBase=e.requireBase),E(e.rewriteLinks)&&(n.rewriteLinks=e.rewriteLinks),this):n},this.$get=["$rootScope","$browser","$sniffer","$rootElement",function(i,a,o,s){function r(e,t,n){var i=l.url(),o=l.$$state;try{a.url(e,t,n),l.$$state=a.state()}catch(s){throw l.url(i),l.$$state=o,s}}function c(e,t){i.$broadcast("$locationChangeSuccess",l.absUrl(),e,l.$$state,t)}var l,d,u,p=a.baseHref(),m=a.url();if(n.enabled){if(!p&&n.requireBase)throw Ya("nobase","$location in HTML5 mode requires a <base> tag to be present!");u=yn(m)+(p||"/"),d=o.history?bn:$n}else u=_n(m),d=wn;l=new d(u,"#"+t),l.$$parseLinkUrl(m,m),l.$$state=a.state();var h=/^\s*(javascript|mailto):/i;s.on("click",function(t){if(n.rewriteLinks&&!t.ctrlKey&&!t.metaKey&&2!=t.which){for(var o=Vi(t.target);"a"!==P(o[0]);)if(o[0]===s[0]||!(o=o.parent())[0])return;var r=o.prop("href"),c=o.attr("href")||o.attr("xlink:href");y(r)&&"[object SVGAnimatedString]"===r.toString()&&(r=Jn(r.animVal).href),h.test(r)||!r||o.attr("target")||t.isDefaultPrevented()||l.$$parseLinkUrl(r,c)&&(t.preventDefault(),l.absUrl()!=a.url()&&(i.$apply(),e.angular["ff-684208-preventDefault"]=!0))
}}),l.absUrl()!=m&&a.url(l.absUrl(),!0);var g=!0;return a.onUrlChange(function(e,t){i.$evalAsync(function(){var n=l.absUrl(),a=l.$$state;l.$$parse(e),l.$$state=t,i.$broadcast("$locationChangeStart",e,n,t,a).defaultPrevented?(l.$$parse(n),l.$$state=a,r(n,!1,a)):(g=!1,c(n,a))}),i.$$phase||i.$digest()}),i.$watch(function(){var e=a.url(),t=a.state(),n=l.$$replace,s=e!==l.absUrl()||l.$$html5&&o.history&&t!==l.$$state;(g||s)&&(g=!1,i.$evalAsync(function(){i.$broadcast("$locationChangeStart",l.absUrl(),e,l.$$state,t).defaultPrevented?(l.$$parse(e),l.$$state=t):(s&&r(l.absUrl(),n,t===l.$$state?null:l.$$state),c(e,t))})),l.$$replace=!1}),l}]}function Mn(){var e=!0,t=this;this.debugEnabled=function(t){return v(t)?(e=t,this):e},this.$get=["$window",function(n){function i(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 a(e){var t=n.console||{},a=t[e]||t.log||h,s=!1;try{s=!!a.apply}catch(r){}return s?function(){var e=[];return o(arguments,function(t){e.push(i(t))}),a.apply(t,e)}:function(e,t){a(e,null==t?"":t)}}return{log:a("log"),info:a("info"),warn:a("warn"),error:a("error"),debug:function(){var n=a("debug");return function(){e&&n.apply(t,arguments)}}()}}]}function An(e,t){if("__defineGetter__"===e||"__defineSetter__"===e||"__lookupGetter__"===e||"__lookupSetter__"===e||"__proto__"===e)throw Xa("isecfld","Attempting to access a disallowed field in Angular expressions! Expression: {0}",t);return e}function xn(e,t){if(e){if(e.constructor===e)throw Xa("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",t);if(e.window===e)throw Xa("isecwindow","Referencing the Window in Angular expressions is disallowed! Expression: {0}",t);if(e.children&&(e.nodeName||e.prop&&e.attr&&e.find))throw Xa("isecdom","Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}",t);if(e===Object)throw Xa("isecobj","Referencing Object in Angular expressions is disallowed! Expression: {0}",t)}return e}function En(e,t){if(e){if(e.constructor===e)throw Xa("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",t);if(e===Ja||e===Qa||e===eo)throw Xa("isecff","Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}",t)}}function Tn(e){return e.constant}function In(e,t,n,i){xn(e,i);for(var a,o=t.split("."),s=0;o.length>1;s++){a=An(o.shift(),i);var r=xn(e[a],i);r||(r={},e[a]=r),e=r}return a=An(o.shift(),i),xn(e[a],i),e[a]=n,n}function Dn(e){return"constructor"==e}function Pn(e,t,i,a,o,s,r){An(e,s),An(t,s),An(i,s),An(a,s),An(o,s);var c=function(e){return xn(e,s)},l=r||Dn(e)?c:g,d=r||Dn(t)?c:g,u=r||Dn(i)?c:g,p=r||Dn(a)?c:g,m=r||Dn(o)?c:g;return function(s,r){var c=r&&r.hasOwnProperty(e)?r:s;return null==c?c:(c=l(c[e]),t?null==c?n:(c=d(c[t]),i?null==c?n:(c=u(c[i]),a?null==c?n:(c=p(c[a]),o?null==c?n:c=m(c[o]):c):c):c):c)}}function Nn(e,t){return function(n,i){return e(n,i,xn,t)}}function Un(e,t,i){var a=t.expensiveChecks,s=a?ro:so,r=s[e];if(r)return r;var c=e.split("."),l=c.length;if(t.csp)r=6>l?Pn(c[0],c[1],c[2],c[3],c[4],i,a):function(e,t){var o,s=0;do o=Pn(c[s++],c[s++],c[s++],c[s++],c[s++],i,a)(e,t),t=n,e=o;while(l>s);return o};else{var d="";a&&(d+="s = eso(s, fe);\nl = eso(l, fe);\n");var u=a;o(c,function(e,t){An(e,i);var n=(t?"s":'((l&&l.hasOwnProperty("'+e+'"))?l:s)')+"."+e;(a||Dn(e))&&(n="eso("+n+", fe)",u=!0),d+="if(s == null) return undefined;\ns="+n+";\n"}),d+="return s;";var p=new Function("s","l","eso","fe",d);p.toString=f(d),u&&(p=Nn(p,i)),r=p}return r.sharedGetter=!0,r.assign=function(t,n){return In(t,e,n,e)},s[e]=r,r}function On(e){return k(e.valueOf)?e.valueOf():co.call(e)}function Ln(){var e=ct(),t=ct();this.$get=["$filter","$sniffer",function(n,i){function a(e){var t=e;return e.sharedGetter&&(t=function(t,n){return e(t,n)},t.literal=e.literal,t.constant=e.constant,t.assign=e.assign),t}function s(e,t){for(var n=0,i=e.length;i>n;n++){var a=e[n];a.constant||(a.inputs?s(a.inputs,t):-1===t.indexOf(a)&&t.push(a))}return t}function r(e,t){return null==e||null==t?e===t:"object"==typeof e&&(e=On(e),"object"==typeof e)?!1:e===t||e!==e&&t!==t}function c(e,t,n,i){var a,o=i.$$inputs||(i.$$inputs=s(i.inputs,[]));if(1===o.length){var c=r;return o=o[0],e.$watch(function(e){var t=o(e);return r(t,c)||(a=i(e),c=t&&On(t)),a},t,n)}for(var l=[],d=0,u=o.length;u>d;d++)l[d]=r;return e.$watch(function(e){for(var t=!1,n=0,s=o.length;s>n;n++){var c=o[n](e);(t||(t=!r(c,l[n])))&&(l[n]=c&&On(c))}return t&&(a=i(e)),a},t,n)}function l(e,t,n,i){var a,o;return a=e.$watch(function(e){return i(e)},function(e,n,i){o=e,k(t)&&t.apply(this,arguments),v(e)&&i.$$postDigest(function(){v(o)&&a()})},n)}function d(e,t,n,i){function a(e){var t=!0;return o(e,function(e){v(e)||(t=!1)}),t}var s,r;return s=e.$watch(function(e){return i(e)},function(e,n,i){r=e,k(t)&&t.call(this,e,n,i),a(e)&&i.$$postDigest(function(){a(r)&&s()})},n)}function u(e,t,n,i){var a;return a=e.$watch(function(e){return i(e)},function(){k(t)&&t.apply(this,arguments),a()},n)}function p(e,t){if(!t)return e;var n=function(n,i){var a=e(n,i),o=t(a,n,i);return v(a)||t.$stateful?o:a};return e.$$watchDelegate&&e.$$watchDelegate!==c?n.$$watchDelegate=e.$$watchDelegate:t.$stateful||(n.$$watchDelegate=c,n.inputs=[e]),n}var m={csp:i.csp,expensiveChecks:!1},g={csp:i.csp,expensiveChecks:!0};return function(i,o,s){var r,f,_;switch(typeof i){case"string":_=i=i.trim();var v=s?t:e;if(r=v[_],!r){":"===i.charAt(0)&&":"===i.charAt(1)&&(f=!0,i=i.substring(2));var y=s?g:m,b=new ao(y),w=new oo(b,n,y);r=w.parse(i),r.constant?r.$$watchDelegate=u:f?(r=a(r),r.$$watchDelegate=r.literal?d:l):r.inputs&&(r.$$watchDelegate=c),v[_]=r}return p(r,o);case"function":return p(i,o);default:return p(h,o)}}}]}function Rn(){this.$get=["$rootScope","$exceptionHandler",function(e,t){return Fn(function(t){e.$evalAsync(t)},t)}]}function Bn(){this.$get=["$browser","$exceptionHandler",function(e,t){return Fn(function(t){e.defer(t)},t)}]}function Fn(e,t){function a(e,t,n){function i(t){return function(n){a||(a=!0,t.call(e,n))}}var a=!1;return[i(t),i(n)]}function s(){this.$$state={status:0}}function r(e,t){return function(n){t.call(e,n)}}function c(e){var i,a,o;o=e.pending,e.processScheduled=!1,e.pending=n;for(var s=0,r=o.length;r>s;++s){a=o[s][0],i=o[s][e.status];try{k(i)?a.resolve(i(e.value)):1===e.status?a.resolve(e.value):a.reject(e.value)}catch(c){a.reject(c),t(c)}}}function l(t){!t.processScheduled&&t.pending&&(t.processScheduled=!0,e(function(){c(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 u(e){var t=new d,n=0,i=na(e)?[]:{};return o(e,function(e,a){n++,_(e).then(function(e){i.hasOwnProperty(a)||(i[a]=e,--n||t.resolve(i))},function(e){i.hasOwnProperty(a)||t.reject(e)})}),0===n&&t.resolve(i),t.promise}var p=i("$q",TypeError),m=function(){return new d};s.prototype={then:function(e,t,n){var i=new d;return this.$$state.pending=this.$$state.pending||[],this.$$state.pending.push([i,e,t,n]),this.$$state.status>0&&l(this.$$state),i.promise},"catch":function(e){return this.then(null,e)},"finally":function(e,t){return this.then(function(t){return f(t,!0,e)},function(t){return f(t,!1,e)},t)}},d.prototype={resolve:function(e){this.promise.$$state.status||(e===this.promise?this.$$reject(p("qcycle","Expected promise to be resolved with value other than itself '{0}'",e)):this.$$resolve(e))},$$resolve:function(e){var n,i;i=a(this,this.$$resolve,this.$$reject);try{(y(e)||k(e))&&(n=e&&e.then),k(n)?(this.promise.$$state.status=-1,n.call(e,i[0],i[1],this.notify)):(this.promise.$$state.value=e,this.promise.$$state.status=1,l(this.promise.$$state))}catch(o){i[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,l(this.promise.$$state)},notify:function(n){var i=this.promise.$$state.pending;this.promise.$$state.status<=0&&i&&i.length&&e(function(){for(var e,a,o=0,s=i.length;s>o;o++){a=i[o][0],e=i[o][3];try{a.notify(k(e)?e(n):n)}catch(r){t(r)}}})}};var h=function(e){var t=new d;return t.reject(e),t.promise},g=function(e,t){var n=new d;return t?n.resolve(e):n.reject(e),n.promise},f=function(e,t,n){var i=null;try{k(n)&&(i=n())}catch(a){return g(a,!1)}return T(i)?i.then(function(){return g(e,t)},function(e){return g(e,!1)}):g(e,t)},_=function(e,t,n,i){var a=new d;return a.resolve(e),a.promise.then(t,n,i)},v=function b(e){function t(e){i.resolve(e)}function n(e){i.reject(e)}if(!k(e))throw p("norslvr","Expected resolverFn, got '{0}'",e);if(!(this instanceof b))return new b(e);var i=new d;return e(t,n),i.promise};return v.defer=m,v.reject=h,v.when=_,v.all=u,v}function qn(){this.$get=["$window","$timeout",function(e,t){var n=e.requestAnimationFrame||e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame,i=e.cancelAnimationFrame||e.webkitCancelAnimationFrame||e.mozCancelAnimationFrame||e.webkitCancelRequestAnimationFrame,a=!!n,o=a?function(e){var t=n(e);return function(){i(t)}}:function(e){var n=t(e,16.66,!1);return function(){t.cancel(n)}};return o.supported=a,o}]}function jn(){var e=10,t=i("$rootScope"),n=null,s=null;this.digestTtl=function(t){return arguments.length&&(e=t),e},this.$get=["$injector","$exceptionHandler","$parse","$browser",function(i,r,c,d){function u(){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.$$isolateBindings=null}function p(e){if(w.$$phase)throw t("inprog","{0} already in progress",w.$$phase);w.$$phase=e}function m(){w.$$phase=null}function g(e,t,n){do e.$$listenerCount[n]-=t,0===e.$$listenerCount[n]&&delete e.$$listenerCount[n];while(e=e.$parent)}function f(){}function v(){for(;C.length;)try{C.shift()()}catch(e){r(e)}s=null}function b(){null===s&&(s=d.defer(function(){w.$apply(v)}))}u.prototype={constructor:u,$new:function(e,t){function n(){i.$$destroyed=!0}var i;return t=t||this,e?(i=new u,i.$root=this.$root):(this.$$ChildScope||(this.$$ChildScope=function(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null,this.$$listeners={},this.$$listenerCount={},this.$id=l(),this.$$ChildScope=null},this.$$ChildScope.prototype=this),i=new this.$$ChildScope),i.$parent=t,i.$$prevSibling=t.$$childTail,t.$$childHead?(t.$$childTail.$$nextSibling=i,t.$$childTail=i):t.$$childHead=t.$$childTail=i,(e||t!=this)&&i.$on("$destroy",n),i},$watch:function(e,t,i){var a=c(e);if(a.$$watchDelegate)return a.$$watchDelegate(this,t,i,a);var o=this,s=o.$$watchers,r={fn:t,last:f,get:a,exp:e,eq:!!i};return n=null,k(t)||(r.fn=h),s||(s=o.$$watchers=[]),s.unshift(r),function(){N(s,r),n=null}},$watchGroup:function(e,t){function n(){c=!1,l?(l=!1,t(a,a,r)):t(a,i,r)}var i=new Array(e.length),a=new Array(e.length),s=[],r=this,c=!1,l=!0;if(!e.length){var d=!0;return r.$evalAsync(function(){d&&t(a,a,r)}),function(){d=!1}}return 1===e.length?this.$watch(e[0],function(e,n,o){a[0]=e,i[0]=n,t(a,e===n?a:i,o)}):(o(e,function(e,t){var o=r.$watch(e,function(e,o){a[t]=e,i[t]=o,c||(c=!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,i,r,c;if(!_(o)){if(y(o))if(a(o)){s!==m&&(s=m,f=s.length=0,u++),t=o.length,f!==t&&(u++,s.length=f=t);for(var l=0;t>l;l++)c=s[l],r=o[l],i=c!==c&&r!==r,i||c===r||(u++,s[l]=r)}else{s!==h&&(s=h={},f=0,u++),t=0;for(n in o)o.hasOwnProperty(n)&&(t++,r=o[n],c=s[n],n in s?(i=c!==c&&r!==r,i||c===r||(u++,s[n]=r)):(f++,s[n]=r,u++));if(f>t){u++;for(n in s)o.hasOwnProperty(n)||(f--,delete s[n])}}else s!==o&&(s=o,u++);return u}}function i(){if(g?(g=!1,t(o,o,l)):t(o,r,l),d)if(y(o))if(a(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)Fi.call(o,n)&&(r[n]=o[n])}else r=o}n.$stateful=!0;var o,s,r,l=this,d=t.length>1,u=0,p=c(e,n),m=[],h={},g=!0,f=0;return this.$watch(p,i)},$digest:function(){var i,a,o,c,l,u,h,g,_,y,b,C=e,M=this,A=[];p("$digest"),d.$$checkUrlChange(),this===w&&null!==s&&(d.defer.cancel(s),v()),n=null;do{for(u=!1,g=M;$.length;){try{b=$.shift(),b.scope.$eval(b.expression)}catch(x){r(x)}n=null}e:do{if(c=g.$$watchers)for(l=c.length;l--;)try{if(i=c[l])if((a=i.get(g))===(o=i.last)||(i.eq?L(a,o):"number"==typeof a&&"number"==typeof o&&isNaN(a)&&isNaN(o))){if(i===n){u=!1;break e}}else u=!0,n=i,i.last=i.eq?U(a,null):a,i.fn(a,o===f?a:o,g),5>C&&(_=4-C,A[_]||(A[_]=[]),y=k(i.exp)?"fn: "+(i.exp.name||i.exp.toString()):i.exp,y+="; newVal: "+j(a)+"; oldVal: "+j(o),A[_].push(y))}catch(x){r(x)}if(!(h=g.$$childHead||g!==M&&g.$$nextSibling))for(;g!==M&&!(h=g.$$nextSibling);)g=g.$parent}while(g=h);if((u||$.length)&&!C--)throw m(),t("infdig","{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}",e,j(A))}while(u||$.length);for(m();S.length;)try{S.shift()()}catch(x){r(x)}},$destroy:function(){if(!this.$$destroyed){var e=this.$parent;if(this.$broadcast("$destroy"),this.$$destroyed=!0,this!==w){for(var t in this.$$listenerCount)g(this,this.$$listenerCount[t],t);e.$$childHead==this&&(e.$$childHead=this.$$nextSibling),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 c(e)(this,t)},$evalAsync:function(e){w.$$phase||$.length||d.defer(function(){$.length&&w.$digest()}),$.push({scope:this,expression:e})},$$postDigest:function(e){S.push(e)},$apply:function(e){try{return p("$apply"),this.$eval(e)}catch(t){r(t)}finally{m();try{w.$digest()}catch(t){throw r(t),t}}},$applyAsync:function(e){function t(){n.$eval(e)}var n=this;e&&C.push(t),b()},$on:function(e,t){var n=this.$$listeners[e];n||(this.$$listeners[e]=n=[]),n.push(t);var i=this;do i.$$listenerCount[e]||(i.$$listenerCount[e]=0),i.$$listenerCount[e]++;while(i=i.$parent);var a=this;return function(){var i=n.indexOf(t);-1!==i&&(n[i]=null,g(a,1,e))}},$emit:function(e){var t,n,i,a=[],o=this,s=!1,c={name:e,targetScope:o,stopPropagation:function(){s=!0},preventDefault:function(){c.defaultPrevented=!0},defaultPrevented:!1},l=R([c],arguments,1);do{for(t=o.$$listeners[e]||a,c.currentScope=o,n=0,i=t.length;i>n;n++)if(t[n])try{t[n].apply(null,l)}catch(d){r(d)}else t.splice(n,1),n--,i--;if(s)return c.currentScope=null,c;o=o.$parent}while(o);return c.currentScope=null,c},$broadcast:function(e){var t=this,n=t,i=t,a={name:e,targetScope:t,preventDefault:function(){a.defaultPrevented=!0},defaultPrevented:!1};if(!t.$$listenerCount[e])return a;for(var o,s,c,l=R([a],arguments,1);n=i;){for(a.currentScope=n,o=n.$$listeners[e]||[],s=0,c=o.length;c>s;s++)if(o[s])try{o[s].apply(null,l)}catch(d){r(d)}else o.splice(s,1),s--,c--;if(!(i=n.$$listenerCount[e]&&n.$$childHead||n!==t&&n.$$nextSibling))for(;n!==t&&!(i=n.$$nextSibling);)n=n.$parent}return a.currentScope=null,a}};var w=new u,$=w.$$asyncQueue=[],S=w.$$postDigestQueue=[],C=w.$$applyAsyncQueue=[];return w}]}function Hn(){var e=/^\s*(https?|ftp|mailto|tel|file):/,t=/^\s*((https?|ftp|file|blob):|data:image\/)/;this.aHrefSanitizationWhitelist=function(t){return v(t)?(e=t,this):e},this.imgSrcSanitizationWhitelist=function(e){return v(e)?(t=e,this):t},this.$get=function(){return function(n,i){var a,o=i?t:e;return a=Jn(n).href,""===a||a.match(o)?n:"unsafe:"+a}}}function zn(e){if("self"===e)return e;if(b(e)){if(e.indexOf("***")>-1)throw lo("iwcard","Illegal sequence *** in string matcher. String: {0}",e);return e=aa(e).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*"),new RegExp("^"+e+"$")}if(S(e))return new RegExp("^"+e.source+"$");throw lo("imatcher",'Matchers may only be "self", string patterns or RegExp objects')}function Vn(e){var t=[];return v(e)&&o(e,function(e){t.push(zn(e))}),t}function Wn(){this.SCE_CONTEXTS=uo;var e=["self"],t=[];this.resourceUrlWhitelist=function(t){return arguments.length&&(e=Vn(t)),e},this.resourceUrlBlacklist=function(e){return arguments.length&&(t=Vn(e)),t},this.$get=["$injector",function(i){function a(e,t){return"self"===e?Qn(t):!!e.exec(t.href)}function o(n){var i,o,s=Jn(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 s(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 r(e,t){var i=p.hasOwnProperty(e)?p[e]:null;if(!i)throw lo("icontext","Attempted to trust a value in invalid context. Context: {0}; Value: {1}",e,t);if(null===t||t===n||""===t)return t;if("string"!=typeof t)throw lo("itype","Attempted to trust a non-string value in a content requiring a string: Context: {0}",e);return new i(t)}function c(e){return e instanceof u?e.$$unwrapTrustedValue():e}function l(e,t){if(null===t||t===n||""===t)return t;var i=p.hasOwnProperty(e)?p[e]:null;if(i&&t instanceof i)return t.$$unwrapTrustedValue();if(e===uo.RESOURCE_URL){if(o(t))return t;throw lo("insecurl","Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}",t.toString())}if(e===uo.HTML)return d(t);throw lo("unsafe","Attempting to use an unsafe value in a safe context.")}var d=function(){throw lo("unsafe","Attempting to use an unsafe value in a safe context.")};i.has("$sanitize")&&(d=i.get("$sanitize"));var u=s(),p={};return p[uo.HTML]=s(u),p[uo.CSS]=s(u),p[uo.URL]=s(u),p[uo.JS]=s(u),p[uo.RESOURCE_URL]=s(p[uo.URL]),{trustAs:r,getTrusted:l,valueOf:c}}]}function Gn(){var e=!0;this.enabled=function(t){return arguments.length&&(e=!!t),e},this.$get=["$parse","$sceDelegate",function(t,n){if(e&&8>zi)throw lo("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 i=O(uo);i.isEnabled=function(){return e},i.trustAs=n.trustAs,i.getTrusted=n.getTrusted,i.valueOf=n.valueOf,e||(i.trustAs=i.getTrusted=function(e,t){return t},i.valueOf=g),i.parseAs=function(e,n){var a=t(n);return a.literal&&a.constant?a:t(n,function(t){return i.getTrusted(e,t)})};var a=i.parseAs,s=i.getTrusted,r=i.trustAs;return o(uo,function(e,t){var n=Bi(t);i[pt("parse_as_"+n)]=function(t){return a(e,t)},i[pt("get_trusted_"+n)]=function(t){return s(e,t)},i[pt("trust_as_"+n)]=function(t){return r(e,t)}}),i}]}function Kn(){this.$get=["$window","$document",function(e,t){var n,i,a={},o=p((/android (\d+)/.exec(Bi((e.navigator||{}).userAgent))||[])[1]),s=/Boxee/i.test((e.navigator||{}).userAgent),r=t[0]||{},c=/^(Moz|webkit|ms)(?=[A-Z])/,l=r.body&&r.body.style,d=!1,u=!1;if(l){for(var m in l)if(i=c.exec(m)){n=i[0],n=n.substr(0,1).toUpperCase()+n.substr(1);break}n||(n="WebkitOpacity"in l&&"webkit"),d=!!("transition"in l||n+"Transition"in l),u=!!("animation"in l||n+"Animation"in l),!o||d&&u||(d=b(r.body.style.webkitTransition),u=b(r.body.style.webkitAnimation))}return{history:!(!e.history||!e.history.pushState||4>o||s),hasEvent:function(e){if("input"==e&&9==zi)return!1;if(_(a[e])){var t=r.createElement("div");a[e]="on"+e in t}return a[e]},csp:oa(),vendorPrefix:n,transitions:d,animations:u,android:o}}]}function Yn(){this.$get=["$templateCache","$http","$q",function(e,t,n){function i(a,o){function s(){if(r.totalPendingRequests--,!o)throw Ba("tpload","Failed to load template: {0}",a);return n.reject()}var r=i;r.totalPendingRequests++;var c=t.defaults&&t.defaults.transformResponse;if(na(c)){var l=c;c=[];for(var d=0;d<l.length;++d){var u=l[d];u!==en&&c.push(u)}}else c===en&&(c=null);var p={cache:e,transformResponse:c};return t.get(a,p).then(function(t){var n=t.data;return r.totalPendingRequests--,e.put(a,n),n},s)}return i.totalPendingRequests=0,i}]}function Zn(){this.$get=["$rootScope","$browser","$location",function(e,t,n){var i={};return i.findBindings=function(e,t,n){var i=e.getElementsByClassName("ng-binding"),a=[];return o(i,function(e){var i=Qi.element(e).data("$binding");i&&o(i,function(i){if(n){var o=new RegExp("(^|\\s)"+aa(t)+"(\\s|\\||$)");o.test(i)&&a.push(e)}else-1!=i.indexOf(t)&&a.push(e)})}),a},i.findModels=function(e,t,n){for(var i=["ng-","data-ng-","ng\\:"],a=0;a<i.length;++a){var o=n?"=":"*=",s="["+i[a]+"model"+o+'"'+t+'"]',r=e.querySelectorAll(s);if(r.length)return r}},i.getLocation=function(){return n.url()},i.setLocation=function(t){t!==n.url()&&(n.url(t),e.$digest())},i.whenStable=function(e){t.notifyWhenNoOutstandingRequests(e)},i}]}function Xn(){this.$get=["$rootScope","$browser","$q","$$q","$exceptionHandler",function(e,t,n,i,a){function o(o,r,c){var l,d=v(c)&&!c,u=(d?i:n).defer(),p=u.promise;return l=t.defer(function(){try{u.resolve(o())}catch(t){u.reject(t),a(t)}finally{delete s[p.$$timeoutId]}d||e.$apply()},r),p.$$timeoutId=l,s[l]=u,p}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 Jn(e){var t=e;return zi&&(po.setAttribute("href",t),t=po.href),po.setAttribute("href",t),{href:po.href,protocol:po.protocol?po.protocol.replace(/:$/,""):"",host:po.host,search:po.search?po.search.replace(/^\?/,""):"",hash:po.hash?po.hash.replace(/^#/,""):"",hostname:po.hostname,port:po.port,pathname:"/"===po.pathname.charAt(0)?po.pathname:"/"+po.pathname}}function Qn(e){var t=b(e)?Jn(e):e;return t.protocol===mo.protocol&&t.host===mo.host}function ei(){this.$get=f(e)}function ti(e){function t(i,a){if(y(i)){var s={};return o(i,function(e,n){s[n]=t(n,e)}),s}return e.factory(i+n,a)}var n="Filter";this.register=t,this.$get=["$injector",function(e){return function(t){return e.get(t+n)}}],t("currency",ii),t("date",hi),t("filter",ni),t("json",gi),t("limitTo",fi),t("lowercase",vo),t("number",ai),t("orderBy",_i),t("uppercase",yo)}function ni(){return function(e,t,n){if(!na(e))return e;var i=typeof n,a=[];a.check=function(e,t){for(var n=0;n<a.length;n++)if(!a[n](e,t))return!1;return!0},"function"!==i&&(n="boolean"===i&&n?function(e,t){return Qi.equals(e,t)}:function(e,t){if(e&&t&&"object"==typeof e&&"object"==typeof t){for(var i in e)if("$"!==i.charAt(0)&&Fi.call(e,i)&&n(e[i],t[i]))return!0;return!1}return t=(""+t).toLowerCase(),(""+e).toLowerCase().indexOf(t)>-1});var o=function(e,t){if("string"==typeof t&&"!"===t.charAt(0))return!o(e,t.substr(1));switch(typeof e){case"boolean":case"number":case"string":return n(e,t);case"object":switch(typeof t){case"object":return n(e,t);default:for(var i in e)if("$"!==i.charAt(0)&&o(e[i],t))return!0}return!1;case"array":for(var a=0;a<e.length;a++)if(o(e[a],t))return!0;return!1;default:return!1}};switch(typeof t){case"boolean":case"number":case"string":t={$:t};case"object":for(var s in t)!function(e){"undefined"!=typeof t[e]&&a.push(function(n){return o("$"==e?n:n&&n[e],t[e])})}(s);break;case"function":a.push(t);break;default:return e}for(var r=[],c=0;c<e.length;c++){var l=e[c];a.check(l,c)&&r.push(l)}return r}}function ii(e){var t=e.NUMBER_FORMATS;return function(e,n,i){return _(n)&&(n=t.CURRENCY_SYM),_(i)&&(i=2),null==e?e:oi(e,t.PATTERNS[1],t.GROUP_SEP,t.DECIMAL_SEP,i).replace(/\u00A4/g,n)}}function ai(e){var t=e.NUMBER_FORMATS;return function(e,n){return null==e?e:oi(e,t.PATTERNS[0],t.GROUP_SEP,t.DECIMAL_SEP,n)}}function oi(e,t,n,i,a){if(!isFinite(e)||y(e))return"";var o=0>e;e=Math.abs(e);var s=e+"",r="",c=[],l=!1;if(-1!==s.indexOf("e")){var d=s.match(/([\d\.]+)e(-?)(\d+)/);d&&"-"==d[2]&&d[3]>a+1?(s="0",e=0):(r=s,l=!0)}if(l)a>0&&e>-1&&1>e&&(r=e.toFixed(a));else{var u=(s.split(ho)[1]||"").length;_(a)&&(a=Math.min(Math.max(t.minFrac,u),t.maxFrac)),e=+(Math.round(+(e.toString()+"e"+a)).toString()+"e"+-a),0===e&&(o=!1);var p=(""+e).split(ho),m=p[0];p=p[1]||"";var h,g=0,f=t.lgSize,v=t.gSize;if(m.length>=f+v)for(g=m.length-f,h=0;g>h;h++)(g-h)%v===0&&0!==h&&(r+=n),r+=m.charAt(h);for(h=g;h<m.length;h++)(m.length-h)%f===0&&0!==h&&(r+=n),r+=m.charAt(h);for(;p.length<a;)p+="0";a&&"0"!==a&&(r+=i+p.substr(0,a))}return c.push(o?t.negPre:t.posPre),c.push(r),c.push(o?t.negSuf:t.posSuf),c.join("")}function si(e,t,n){var i="";for(0>e&&(i="-",e=-e),e=""+e;e.length<t;)e="0"+e;return n&&(e=e.substr(e.length-t)),i+e}function ri(e,t,n,i){return n=n||0,function(a){var o=a["get"+e]();return(n>0||o>-n)&&(o+=n),0===o&&-12==n&&(o=12),si(o,t,i)}}function ci(e,t){return function(n,i){var a=n["get"+e](),o=qi(t?"SHORT"+e:e);return i[o][a]}}function li(e){var t=-1*e.getTimezoneOffset(),n=t>=0?"+":"";return n+=si(Math[t>0?"floor":"ceil"](t/60),2)+si(Math.abs(t%60),2)}function di(e){var t=new Date(e,0,1).getDay();return new Date(e,0,(4>=t?5:12)-t)}function ui(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate()+(4-e.getDay()))}function pi(e){return function(t){var n=di(t.getFullYear()),i=ui(t),a=+i-+n,o=1+Math.round(a/6048e5);return si(o,e)}}function mi(e,t){return e.getHours()<12?t.AMPMS[0]:t.AMPMS[1]}function hi(e){function t(e){var t;if(t=e.match(n)){var i=new Date(0),a=0,o=0,s=t[8]?i.setUTCFullYear:i.setFullYear,r=t[8]?i.setUTCHours:i.setHours;t[9]&&(a=p(t[9]+t[10]),o=p(t[9]+t[11])),s.call(i,p(t[1]),p(t[2])-1,p(t[3]));var c=p(t[4]||0)-a,l=p(t[5]||0)-o,d=p(t[6]||0),u=Math.round(1e3*parseFloat("0."+(t[7]||0)));return r.call(i,c,l,d,u),i}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,i,a){var s,r,c="",l=[];if(i=i||"mediumDate",i=e.DATETIME_FORMATS[i]||i,b(n)&&(n=_o.test(n)?p(n):t(n)),w(n)&&(n=new Date(n)),!$(n))return n;for(;i;)r=fo.exec(i),r?(l=R(l,r,1),i=l.pop()):(l.push(i),i=null);return a&&"UTC"===a&&(n=new Date(n.getTime()),n.setMinutes(n.getMinutes()+n.getTimezoneOffset())),o(l,function(t){s=go[t],c+=s?s(n,e.DATETIME_FORMATS):t.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),c}}function gi(){return function(e){return j(e,!0)}}function fi(){return function(e,t){if(w(e)&&(e=e.toString()),!na(e)&&!b(e))return e;if(t=1/0===Math.abs(Number(t))?Number(t):p(t),b(e))return t?t>=0?e.slice(0,t):e.slice(t,e.length):"";var n,i,a=[];for(t>e.length?t=e.length:t<-e.length&&(t=-e.length),t>0?(n=0,i=t):(n=e.length+t,i=e.length);i>n;n++)a.push(e[n]);return a}}function _i(e){return function(t,n,i){function o(e,t){for(var i=0;i<n.length;i++){var a=n[i](e,t);if(0!==a)return a}return 0}function s(e,t){return t?function(t,n){return e(n,t)}:e}function r(e,t){var n=typeof e,i=typeof t;return n==i?($(e)&&$(t)&&(e=e.valueOf(),t=t.valueOf()),"string"==n&&(e=e.toLowerCase(),t=t.toLowerCase()),e===t?0:t>e?-1:1):i>n?-1:1}if(!a(t))return t;n=na(n)?n:[n],0===n.length&&(n=["+"]),n=n.map(function(t){var n=!1,i=t||g;if(b(t)){if(("+"==t.charAt(0)||"-"==t.charAt(0))&&(n="-"==t.charAt(0),t=t.substring(1)),""===t)return s(function(e,t){return r(e,t)},n);if(i=e(t),i.constant){var a=i();return s(function(e,t){return r(e[a],t[a])},n)}}return s(function(e,t){return r(i(e),i(t))},n)});for(var c=[],l=0;l<t.length;l++)c.push(t[l]);return c.sort(s(o,i))}}function vi(e){return k(e)&&(e={link:e}),e.restrict=e.restrict||"AC",f(e)}function yi(e,t){e.$name=t}function bi(e,t,i,a,s){var r=this,c=[],l=r.$$parentForm=e.parent().controller("form")||$o;r.$error={},r.$$success={},r.$pending=n,r.$name=s(t.name||t.ngForm||"")(i),r.$dirty=!1,r.$pristine=!0,r.$valid=!0,r.$invalid=!1,r.$submitted=!1,l.$addControl(r),r.$rollbackViewValue=function(){o(c,function(e){e.$rollbackViewValue()})},r.$commitViewValue=function(){o(c,function(e){e.$commitViewValue()})},r.$addControl=function(e){ot(e.$name,"input"),c.push(e),e.$name&&(r[e.$name]=e)},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)}),N(c,e)},Ni({ctrl:this,$element:e,set:function(e,t,n){var i=e[t];if(i){var a=i.indexOf(n);-1===a&&i.push(n)}else e[t]=[n]},unset:function(e,t,n){var i=e[t];i&&(N(i,n),0===i.length&&delete e[t])},parentForm:l,$animate:a}),r.$setDirty=function(){a.removeClass(e,jo),a.addClass(e,Ho),r.$dirty=!0,r.$pristine=!1,l.$setDirty()},r.$setPristine=function(){a.setClass(e,jo,Ho+" "+ko),r.$dirty=!1,r.$pristine=!0,r.$submitted=!1,o(c,function(e){e.$setPristine()})},r.$setUntouched=function(){o(c,function(e){e.$setUntouched()})},r.$setSubmitted=function(){a.addClass(e,ko),r.$submitted=!0,l.$setSubmitted()}}function wi(e){e.$formatters.push(function(t){return e.$isEmpty(t)?t:t.toString()})}function $i(e,t,n,i,a,o){ki(e,t,n,i,a,o),wi(i)}function ki(e,t,n,i,a,o){var s=t[0].placeholder,r={},c=Bi(t[0].type);if(!a.android){var l=!1;t.on("compositionstart",function(){l=!0}),t.on("compositionend",function(){l=!1,d()})}var d=function(e){if(!l){var a=t.val(),o=e&&e.type;if(zi&&"input"===(e||r).type&&t[0].placeholder!==s)return void(s=t[0].placeholder);"password"===c||n.ngTrim&&"false"===n.ngTrim||(a=ia(a)),(i.$viewValue!==a||""===a&&i.$$hasNativeValidators)&&i.$setViewValue(a,o)}};if(a.hasEvent("input"))t.on("input",d);else{var u,p=function(e){u||(u=o.defer(function(){d(e),u=null}))};t.on("keydown",function(e){var t=e.keyCode;91===t||t>15&&19>t||t>=37&&40>=t||p(e)}),a.hasEvent("paste")&&t.on("paste cut",p)}t.on("change",d),i.$render=function(){t.val(i.$isEmpty(i.$modelValue)?"":i.$viewValue)}}function Si(e,t){if($(e))return e;if(b(e)){Po.lastIndex=0;var n=Po.exec(e);if(n){var i=+n[1],a=+n[2],o=0,s=0,r=0,c=0,l=di(i),d=7*(a-1);return t&&(o=t.getHours(),s=t.getMinutes(),r=t.getSeconds(),c=t.getMilliseconds()),new Date(i,0,l.getDate()+d,o,s,r,c)}}return 0/0}function Ci(e,t){return function(n,i){var a,s;if($(n))return n;if(b(n)){if('"'==n.charAt(0)&&'"'==n.charAt(n.length-1)&&(n=n.substring(1,n.length-1)),Ao.test(n))return new Date(n);if(e.lastIndex=0,a=e.exec(n))return a.shift(),s=i?{yyyy:i.getFullYear(),MM:i.getMonth()+1,dd:i.getDate(),HH:i.getHours(),mm:i.getMinutes(),ss:i.getSeconds(),sss:i.getMilliseconds()/1e3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},o(a,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 Mi(e,t,i,a){return function(o,s,r,c,l,d,u){function p(e){return v(e)?$(e)?e:i(e):n}Ai(o,s,r,c),ki(o,s,r,c,l,d);var m,h=c&&c.$options&&c.$options.timezone;if(c.$$parserName=e,c.$parsers.push(function(e){if(c.$isEmpty(e))return null;if(t.test(e)){var a=i(e,m);return"UTC"===h&&a.setMinutes(a.getMinutes()-a.getTimezoneOffset()),a}return n}),c.$formatters.push(function(e){if(!c.$isEmpty(e)){if(!$(e))throw Lo("datefmt","Expected `{0}` to be a date",e);if(m=e,m&&"UTC"===h){var t=6e4*m.getTimezoneOffset();m=new Date(m.getTime()+t)}return u("date")(e,a,h)}return m=null,""}),v(r.min)||r.ngMin){var g;c.$validators.min=function(e){return c.$isEmpty(e)||_(g)||i(e)>=g},r.$observe("min",function(e){g=p(e),c.$validate()})}if(v(r.max)||r.ngMax){var f;c.$validators.max=function(e){return c.$isEmpty(e)||_(f)||i(e)<=f},r.$observe("max",function(e){f=p(e),c.$validate()})}c.$isEmpty=function(e){return!e||e.getTime&&e.getTime()!==e.getTime()}}}function Ai(e,t,i,a){var o=t[0],s=a.$$hasNativeValidators=y(o.validity);s&&a.$parsers.push(function(e){var i=t.prop(Ri)||{};return i.badInput&&!i.typeMismatch?n:e})}function xi(e,t,i,a,o,s){if(Ai(e,t,i,a),ki(e,t,i,a,o,s),a.$$parserName="number",a.$parsers.push(function(e){return a.$isEmpty(e)?null:To.test(e)?parseFloat(e):n}),a.$formatters.push(function(e){if(!a.$isEmpty(e)){if(!w(e))throw Lo("numfmt","Expected `{0}` to be a number",e);e=e.toString()}return e}),i.min||i.ngMin){var r;a.$validators.min=function(e){return a.$isEmpty(e)||_(r)||e>=r
},i.$observe("min",function(e){v(e)&&!w(e)&&(e=parseFloat(e,10)),r=w(e)&&!isNaN(e)?e:n,a.$validate()})}if(i.max||i.ngMax){var c;a.$validators.max=function(e){return a.$isEmpty(e)||_(c)||c>=e},i.$observe("max",function(e){v(e)&&!w(e)&&(e=parseFloat(e,10)),c=w(e)&&!isNaN(e)?e:n,a.$validate()})}}function Ei(e,t,n,i,a,o){ki(e,t,n,i,a,o),wi(i),i.$$parserName="url",i.$validators.url=function(e){return i.$isEmpty(e)||xo.test(e)}}function Ti(e,t,n,i,a,o){ki(e,t,n,i,a,o),wi(i),i.$$parserName="email",i.$validators.email=function(e){return i.$isEmpty(e)||Eo.test(e)}}function Ii(e,t,n,i){_(n.name)&&t.attr("name",l());var a=function(e){t[0].checked&&i.$setViewValue(n.value,e&&e.type)};t.on("click",a),i.$render=function(){var e=n.value;t[0].checked=e==i.$viewValue},n.$observe("value",i.$render)}function Di(e,t,n,a,o){var s;if(v(a)){if(s=e(a),!s.constant)throw i("ngModel")("constexpr","Expected constant expression for `{0}`, but saw `{1}`.",n,a);return s(t)}return o}function Pi(e,t,n,i,a,o,s,r){var c=Di(r,e,"ngTrueValue",n.ngTrueValue,!0),l=Di(r,e,"ngFalseValue",n.ngFalseValue,!1),d=function(e){i.$setViewValue(t[0].checked,e&&e.type)};t.on("click",d),i.$render=function(){t[0].checked=i.$viewValue},i.$isEmpty=function(e){return e!==c},i.$formatters.push(function(e){return L(e,c)}),i.$parsers.push(function(e){return e?c:l})}function Ni(e){function t(e,t,c){t===n?i("$pending",e,c):a("$pending",e,c),E(t)?t?(u(r.$error,e,c),d(r.$$success,e,c)):(d(r.$error,e,c),u(r.$$success,e,c)):(u(r.$error,e,c),u(r.$$success,e,c)),r.$pending?(o(Wo,!0),r.$valid=r.$invalid=n,s("",null)):(o(Wo,!1),r.$valid=Ui(r.$error),r.$invalid=!r.$valid,s("",r.$valid));var l;l=r.$pending&&r.$pending[e]?n:r.$error[e]?!1:r.$$success[e]?!0:null,s(e,l),p.$setValidity(e,l,r)}function i(e,t,n){r[e]||(r[e]={}),d(r[e],t,n)}function a(e,t,i){r[e]&&u(r[e],t,i),Ui(r[e])&&(r[e]=n)}function o(e,t){t&&!l[e]?(m.addClass(c,e),l[e]=!0):!t&&l[e]&&(m.removeClass(c,e),l[e]=!1)}function s(e,t){e=e?"-"+tt(e,"-"):"",o(Fo+e,t===!0),o(qo+e,t===!1)}var r=e.ctrl,c=e.$element,l={},d=e.set,u=e.unset,p=e.parentForm,m=e.$animate;l[qo]=!(l[Fo]=c.hasClass(Fo)),r.$setValidity=t}function Ui(e){if(e)for(var t in e)return!1;return!0}function Oi(e,t){return e="ngClass"+e,["$animate",function(n){function i(e,t){var n=[];e:for(var i=0;i<e.length;i++){for(var a=e[i],o=0;o<t.length;o++)if(a==t[o])continue e;n.push(a)}return n}function a(e){if(na(e))return e;if(b(e))return e.split(" ");if(y(e)){var t=[];return o(e,function(e,n){e&&(t=t.concat(n.split(" ")))}),t}return e}return{restrict:"AC",link:function(s,r,c){function l(e){var t=u(e,1);c.$addClass(t)}function d(e){var t=u(e,-1);c.$removeClass(t)}function u(e,t){var n=r.data("$classCounts")||{},i=[];return o(e,function(e){(t>0||n[e])&&(n[e]=(n[e]||0)+t,n[e]===+(t>0)&&i.push(e))}),r.data("$classCounts",n),i.join(" ")}function p(e,t){var a=i(t,e),o=i(e,t);a=u(a,1),o=u(o,-1),a&&a.length&&n.addClass(r,a),o&&o.length&&n.removeClass(r,o)}function m(e){if(t===!0||s.$index%2===t){var n=a(e||[]);if(h){if(!L(e,h)){var i=a(h);p(i,n)}}else l(n)}h=O(e)}var h;s.$watch(c[e],m,!0),c.$observe("class",function(){m(s.$eval(c[e]))}),"ngClass"!==e&&s.$watch("$index",function(n,i){var o=1&n;if(o!==(1&i)){var r=a(s.$eval(c[e]));o===t?l(r):d(r)}})}}}]}var Li=/^\/(.+)\/([a-z]*)$/,Ri="validity",Bi=function(e){return b(e)?e.toLowerCase():e},Fi=Object.prototype.hasOwnProperty,qi=function(e){return b(e)?e.toUpperCase():e},ji=function(e){return b(e)?e.replace(/[A-Z]/g,function(e){return String.fromCharCode(32|e.charCodeAt(0))}):e},Hi=function(e){return b(e)?e.replace(/[a-z]/g,function(e){return String.fromCharCode(-33&e.charCodeAt(0))}):e};"i"!=="I".toLowerCase()&&(Bi=ji,qi=Hi);var zi,Vi,Wi,Gi,Ki=[].slice,Yi=[].splice,Zi=[].push,Xi=Object.prototype.toString,Ji=i("ng"),Qi=e.angular||(e.angular={}),ea=0;zi=t.documentMode,h.$inject=[],g.$inject=[];var ta,na=Array.isArray,ia=function(e){return b(e)?e.trim():e},aa=function(e){return e.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")},oa=function(){if(v(oa.isActive_))return oa.isActive_;var e=!(!t.querySelector("[ng-csp]")&&!t.querySelector("[data-ng-csp]"));if(!e)try{new Function("")}catch(n){e=!0}return oa.isActive_=e},sa=["ng-","data-ng-","ng:","x-ng-"],ra=/[A-Z]/g,ca=!1,la=1,da=3,ua=8,pa=9,ma=11,ha={full:"1.3.2",major:1,minor:3,dot:2,codeName:"cardiovasculatory-magnification"};_t.expando="ng339";var ga=_t.cache={},fa=1,_a=function(e,t,n){e.addEventListener(t,n,!1)},va=function(e,t,n){e.removeEventListener(t,n,!1)};_t._data=function(e){return this.cache[e[this.expando]]||{}};var ya=/([\:\-\_]+(.))/g,ba=/^moz([A-Z])/,wa={mouseleave:"mouseout",mouseenter:"mouseover"},$a=i("jqLite"),ka=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,Sa=/<|&#?\w+;/,Ca=/<([\w:]+)/,Ma=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Aa={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,"",""]};Aa.optgroup=Aa.option,Aa.tbody=Aa.tfoot=Aa.colgroup=Aa.caption=Aa.thead,Aa.th=Aa.td;var xa=_t.prototype={ready:function(n){function i(){a||(a=!0,n())}var a=!1;"complete"===t.readyState?setTimeout(i):(this.on("DOMContentLoaded",i),_t(e).on("load",i))},toString:function(){var e=[];return o(this,function(t){e.push(""+t)}),"["+e.join(", ")+"]"},eq:function(e){return Vi(e>=0?this[e]:this[this.length+e])},length:0,push:Zi,sort:[].sort,splice:[].splice},Ea={};o("multiple,selected,checked,disabled,readOnly,required,open".split(","),function(e){Ea[Bi(e)]=e});var Ta={};o("input,select,option,textarea,button,form,details".split(","),function(e){Ta[e]=!0});var Ia={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};o({data:kt,removeData:wt},function(e,t){_t[t]=e}),o({data:kt,inheritedData:Et,scope:function(e){return Vi.data(e,"$scope")||Et(e.parentNode||e,["$isolateScope","$scope"])},isolateScope:function(e){return Vi.data(e,"$isolateScope")||Vi.data(e,"$isolateScopeNoTemplate")},controller:xt,injector:function(e){return Et(e,"$injector")},removeAttr:function(e,t){e.removeAttribute(t)},hasClass:St,css:function(e,t,n){return t=pt(t),v(n)?void(e.style[t]=n):e.style[t]},attr:function(e,t,i){var a=Bi(t);if(Ea[a]){if(!v(i))return e[t]||(e.attributes.getNamedItem(t)||h).specified?a:n;i?(e[t]=!0,e.setAttribute(t,a)):(e[t]=!1,e.removeAttribute(a))}else if(v(i))e.setAttribute(t,i);else if(e.getAttribute){var o=e.getAttribute(t,2);return null===o?n:o}},prop:function(e,t,n){return v(n)?void(e[t]=n):e[t]},text:function(){function e(e,t){if(_(t)){var n=e.nodeType;return n===la||n===da?e.textContent:""}e.textContent=t}return e.$dv="",e}(),val:function(e,t){if(_(t)){if(e.multiple&&"select"===P(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 _(t)?e.innerHTML:(yt(e,!0),void(e.innerHTML=t))},empty:Tt},function(e,t){_t.prototype[t]=function(t,i){var a,o,s=this.length;if(e!==Tt&&(2==e.length&&e!==St&&e!==xt?t:i)===n){if(y(t)){for(a=0;s>a;a++)if(e===kt)e(this[a],t);else for(o in t)e(this[a],o,t[o]);return this}for(var r=e.$dv,c=r===n?Math.min(s,1):s,l=0;c>l;l++){var d=e(this[l],t,i);r=r?r+d:d}return r}for(a=0;s>a;a++)e(this[a],t,i);return this}}),o({removeData:wt,on:function Os(e,t,n,i){if(v(i))throw $a("onargs","jqLite#on() does not support the `selector` or `eventData` parameters");if(ht(e)){var a=$t(e,!0),o=a.events,s=a.handle;s||(s=a.handle=Ut(e,o));for(var r=t.indexOf(" ")>=0?t.split(" "):[t],c=r.length;c--;){t=r[c];var l=o[t];l||(o[t]=[],"mouseenter"===t||"mouseleave"===t?Os(e,wa[t],function(e){var n=this,i=e.relatedTarget;(!i||i!==n&&!n.contains(i))&&s(e,t)}):"$destroy"!==t&&_a(e,t,s),l=o[t]),l.push(n)}}},off:bt,one:function(e,t,n){e=Vi(e),e.on(t,function i(){e.off(t,n),e.off(t,i)}),e.on(t,n)},replaceWith:function(e,t){var n,i=e.parentNode;yt(e),o(new _t(t),function(t){n?i.insertBefore(t,n.nextSibling):i.replaceChild(t,e),n=t})},children:function(e){var t=[];return o(e.childNodes,function(e){e.nodeType===la&&t.push(e)}),t},contents:function(e){return e.contentDocument||e.childNodes||[]},append:function(e,t){var n=e.nodeType;if(n===la||n===ma){t=new _t(t);for(var i=0,a=t.length;a>i;i++){var o=t[i];e.appendChild(o)}}},prepend:function(e,t){if(e.nodeType===la){var n=e.firstChild;o(new _t(t),function(t){e.insertBefore(t,n)})}},wrap:function(e,t){t=Vi(t).eq(0).clone()[0];var n=e.parentNode;n&&n.replaceChild(t,e),t.appendChild(e)},remove:It,detach:function(e){It(e,!0)},after:function(e,t){var n=e,i=e.parentNode;t=new _t(t);for(var a=0,o=t.length;o>a;a++){var s=t[a];i.insertBefore(s,n.nextSibling),n=s}},addClass:Mt,removeClass:Ct,toggleClass:function(e,t,n){t&&o(t.split(" "),function(t){var i=n;_(i)&&(i=!St(e,t)),(i?Mt:Ct)(e,t)})},parent:function(e){var t=e.parentNode;return t&&t.nodeType!==ma?t:null},next:function(e){return e.nextElementSibling},find:function(e,t){return e.getElementsByTagName?e.getElementsByTagName(t):[]},clone:vt,triggerHandler:function(e,t,n){var i,a,s,r=t.type||t,c=$t(e),l=c&&c.events,d=l&&l[r];d&&(i={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&&(i=u(i,t)),a=O(d),s=n?[i].concat(n):[i],o(a,function(t){i.isImmediatePropagationStopped()||t.apply(e,s)}))}},function(e,t){_t.prototype[t]=function(t,n,i){for(var a,o=0,s=this.length;s>o;o++)_(a)?(a=e(this[o],t,n,i),v(a)&&(a=Vi(a))):At(a,e(this[o],t,n,i));return v(a)?a:this},_t.prototype.bind=_t.prototype.on,_t.prototype.unbind=_t.prototype.off}),Lt.prototype={put:function(e,t){this[Ot(e,this.nextUid)]=t},get:function(e){return this[Ot(e,this.nextUid)]},remove:function(e){var t=this[e=Ot(e,this.nextUid)];return delete this[e],t}};var Da=/^function\s*[^\(]*\(\s*([^\)]*)\)/m,Pa=/,/,Na=/^\s*(_?)(\S+?)\1\s*$/,Ua=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,Oa=i("$injector");Ft.$$annotate=Bt;var La=i("$animate"),Ra=["$provide",function(e){this.$$selectors={},this.register=function(t,n){var i=t+"-animation";if(t&&"."!=t.charAt(0))throw La("notcsel","Expecting class selector starting with '.' got '{0}'.",t);this.$$selectors[t.substr(1)]=i,e.factory(i,n)},this.classNameFilter=function(e){return 1===arguments.length&&(this.$$classNameFilter=e instanceof RegExp?e:null),this.$$classNameFilter},this.$get=["$$q","$$asyncCallback","$rootScope",function(e,t,n){function i(t){var i,a=e.defer();return a.promise.$$cancelFn=function(){i&&i()},n.$$postDigest(function(){i=t(function(){a.resolve()})}),a.promise}function a(e,t){var n=[],i=[],a=ct();return o((e.attr("class")||"").split(/\s+/),function(e){a[e]=!0}),o(t,function(e,t){var o=a[t];e===!1&&o?i.push(t):e!==!0||o||n.push(t)}),n.length+i.length>0&&[n.length?n:null,i.length?i:null]}function s(e,t,n){for(var i=0,a=t.length;a>i;++i){var o=t[i];e[o]=n}}function r(){return l||(l=e.defer(),t(function(){l.resolve(),l=null})),l.promise}function c(e,t){if(Qi.isObject(t)){var n=u(t.from||{},t.to||{});e.css(n)}}var l;return{animate:function(e,t,n){return c(e,{from:t,to:n}),r()},enter:function(e,t,n,i){return c(e,i),n?n.after(e):t.prepend(e),r()},leave:function(e){return e.remove(),r()},move:function(e,t,n,i){return this.enter(e,t,n,i)},addClass:function(e,t,n){return this.setClass(e,t,[],n)},$$addClassImmediately:function(e,t,n){return e=Vi(e),t=b(t)?t:na(t)?t.join(" "):"",o(e,function(e){Mt(e,t)}),c(e,n),r()},removeClass:function(e,t,n){return this.setClass(e,[],t,n)},$$removeClassImmediately:function(e,t,n){return e=Vi(e),t=b(t)?t:na(t)?t.join(" "):"",o(e,function(e){Ct(e,t)}),c(e,n),r()},setClass:function(e,t,n,o){var r=this,c="$$animateClasses",l=!1;e=Vi(e);var d=e.data(c);d?o&&d.options&&(d.options=Qi.extend(d.options||{},o)):(d={classes:{},options:o},l=!0);var u=d.classes;return t=na(t)?t:t.split(" "),n=na(n)?n:n.split(" "),s(u,t,!0),s(u,n,!1),l&&(d.promise=i(function(t){var n=e.data(c);if(e.removeData(c),n){var i=a(e,n.classes);i&&r.$$setClassImmediately(e,i[0],i[1],n.options)}t()}),e.data(c,d)),d.promise},$$setClassImmediately:function(e,t,n,i){return t&&this.$$addClassImmediately(e,t),n&&this.$$removeClassImmediately(e,n),c(e,i),r()},enabled:h,cancel:h}}]}],Ba=i("$compile");Gt.$inject=["$provide","$$sanitizeUriProvider"];var Fa=/^((?:x|data)[\:\-_])/i,qa="application/json",ja={"Content-Type":qa+";charset=utf-8"},Ha=/^\s*(\[|\{[^\{])/,za=/[\}\]]\s*$/,Va=/^\)\]\}',?\n/,Wa=i("$interpolate"),Ga=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,Ka={http:80,https:443,ftp:21},Ya=i("$location"),Za={$$html5:!1,$$replace:!1,absUrl:kn("$$absUrl"),url:function(e){if(_(e))return this.$$url;var t=Ga.exec(e);return t[1]&&this.path(decodeURIComponent(t[1])),(t[2]||t[1])&&this.search(t[3]||""),this.hash(t[5]||""),this},protocol:kn("$$protocol"),host:kn("$$host"),port:kn("$$port"),path:Sn("$$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(b(e)||w(e))e=e.toString(),this.$$search=W(e);else{if(!y(e))throw Ya("isrcharg","The first argument of the `$location#search()` call must be a string or an object.");e=U(e,{}),o(e,function(t,n){null==t&&delete e[n]}),this.$$search=e}break;default:_(t)||null===t?delete this.$$search[e]:this.$$search[e]=t}return this.$$compose(),this},hash:Sn("$$hash",function(e){return null!==e?e.toString():""}),replace:function(){return this.$$replace=!0,this}};o([$n,wn,bn],function(e){e.prototype=Object.create(Za),e.prototype.state=function(t){if(!arguments.length)return this.$$state;if(e!==bn||!this.$$html5)throw Ya("nostate","History API state support is available only in HTML5 mode and only in browsers supporting HTML5 History API");return this.$$state=_(t)?null:t,this}});var Xa=i("$parse"),Ja=Function.prototype.call,Qa=Function.prototype.apply,eo=Function.prototype.bind,to=ct();o({"null":function(){return null},"true":function(){return!0},"false":function(){return!1},undefined:function(){}},function(e,t){e.constant=e.literal=e.sharedGetter=!0,to[t]=e}),to["this"]=function(e){return e},to["this"].sharedGetter=!0;var no=u(ct(),{"+":function(e,t,i,a){return i=i(e,t),a=a(e,t),v(i)?v(a)?i+a:i:v(a)?a:n},"-":function(e,t,n,i){return n=n(e,t),i=i(e,t),(v(n)?n:0)-(v(i)?i:0)},"*":function(e,t,n,i){return n(e,t)*i(e,t)},"/":function(e,t,n,i){return n(e,t)/i(e,t)},"%":function(e,t,n,i){return n(e,t)%i(e,t)},"===":function(e,t,n,i){return n(e,t)===i(e,t)},"!==":function(e,t,n,i){return n(e,t)!==i(e,t)},"==":function(e,t,n,i){return n(e,t)==i(e,t)},"!=":function(e,t,n,i){return n(e,t)!=i(e,t)},"<":function(e,t,n,i){return n(e,t)<i(e,t)},">":function(e,t,n,i){return n(e,t)>i(e,t)},"<=":function(e,t,n,i){return n(e,t)<=i(e,t)},">=":function(e,t,n,i){return n(e,t)>=i(e,t)},"&&":function(e,t,n,i){return n(e,t)&&i(e,t)},"||":function(e,t,n,i){return n(e,t)||i(e,t)},"!":function(e,t,n){return!n(e,t)},"=":!0,"|":!0}),io={n:"\n",f:"\f",r:"\r",t:" ",v:" ","'":"'",'"':'"'},ao=function(e){this.options=e};ao.prototype={constructor:ao,lex:function(e){for(this.text=e,this.index=0,this.ch=n,this.tokens=[];this.index<this.text.length;)if(this.ch=this.text.charAt(this.index),this.is("\"'"))this.readString(this.ch);else if(this.isNumber(this.ch)||this.is(".")&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdent(this.ch))this.readIdent();else if(this.is("(){}[].,;:?"))this.tokens.push({index:this.index,text:this.ch}),this.index++;else if(this.isWhitespace(this.ch))this.index++;else{var t=this.ch+this.peek(),i=t+this.peek(2),a=no[this.ch],o=no[t],s=no[i];s?(this.tokens.push({index:this.index,text:i,fn:s}),this.index+=3):o?(this.tokens.push({index:this.index,text:t,fn:o}),this.index+=2):a?(this.tokens.push({index:this.index,text:this.ch,fn:a}),this.index+=1):this.throwError("Unexpected next character ",this.index,this.index+1)}return this.tokens},is:function(e){return-1!==e.indexOf(this.ch)},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},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 i=v(t)?"s "+t+"-"+this.index+" ["+this.text.substring(t,n)+"]":" "+n;throw Xa("lexerr","Lexer Error: {0} at column{1} in expression [{2}].",e,i,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 i=this.peek();if("e"==n&&this.isExpOperator(i))e+=n;else if(this.isExpOperator(n)&&i&&this.isNumber(i)&&"e"==e.charAt(e.length-1))e+=n;else{if(!this.isExpOperator(n)||i&&this.isNumber(i)||"e"!=e.charAt(e.length-1))break;this.throwError("Invalid exponent")}}this.index++}e=1*e,this.tokens.push({index:t,text:e,constant:!0,fn:function(){return e}})},readIdent:function(){for(var e,t,i,a,o=this.text,s="",r=this.index;this.index<this.text.length&&(a=this.text.charAt(this.index),"."===a||this.isIdent(a)||this.isNumber(a));)"."===a&&(e=this.index),s+=a,this.index++;if(e&&"."===s[s.length-1]&&(this.index--,s=s.slice(0,-1),e=s.lastIndexOf("."),-1===e&&(e=n)),e)for(t=this.index;t<this.text.length;){if(a=this.text.charAt(t),"("===a){i=s.substr(e-r+1),s=s.substr(0,e-r),this.index=t;break}if(!this.isWhitespace(a))break;t++}this.tokens.push({index:r,text:s,fn:to[s]||Un(s,this.options,o)}),i&&(this.tokens.push({index:e,text:"."}),this.tokens.push({index:e+1,text:i}))},readString:function(e){var t=this.index;this.index++;for(var n="",i=e,a=!1;this.index<this.text.length;){var o=this.text.charAt(this.index);if(i+=o,a){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=io[o];n+=r||o}a=!1}else if("\\"===o)a=!0;else{if(o===e)return this.index++,void this.tokens.push({index:t,text:i,string:n,constant:!0,fn:function(){return n}});n+=o}this.index++}this.throwError("Unterminated quote",t)}};var oo=function(e,t,n){this.lexer=e,this.$filter=t,this.options=n};oo.ZERO=u(function(){return 0},{sharedGetter:!0,constant:!0}),oo.prototype={constructor:oo,parse:function(e){this.text=e,this.tokens=this.lexer.lex(e);var t=this.statements();return 0!==this.tokens.length&&this.throwError("is an unexpected token",this.tokens[0]),t.literal=!!t.literal,t.constant=!!t.constant,t},primary:function(){var e;if(this.expect("("))e=this.filterChain(),this.consume(")");else if(this.expect("["))e=this.arrayDeclaration();else if(this.expect("{"))e=this.object();else{var t=this.expect();e=t.fn,e||this.throwError("not a primary expression",t),t.constant&&(e.constant=!0,e.literal=!0)}for(var n,i;n=this.expect("(","[",".");)"("===n.text?(e=this.functionCall(e,i),i=null):"["===n.text?(i=e,e=this.objectIndex(e)):"."===n.text?(i=e,e=this.fieldAccess(e)):this.throwError("IMPOSSIBLE");return e},throwError:function(e,t){throw Xa("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))},peekToken:function(){if(0===this.tokens.length)throw Xa("ueoe","Unexpected end of expression: {0}",this.text);return this.tokens[0]},peek:function(e,t,n,i){if(this.tokens.length>0){var a=this.tokens[0],o=a.text;if(o===e||o===t||o===n||o===i||!e&&!t&&!n&&!i)return a}return!1},expect:function(e,t,n,i){var a=this.peek(e,t,n,i);return a?(this.tokens.shift(),a):!1},consume:function(e){this.expect(e)||this.throwError("is unexpected, expecting ["+e+"]",this.peek())},unaryFn:function(e,t){return u(function(n,i){return e(n,i,t)},{constant:t.constant,inputs:[t]})},binaryFn:function(e,t,n,i){return u(function(i,a){return t(i,a,e,n)},{constant:e.constant&&n.constant,inputs:!i&&[e,n]})},statements:function(){for(var e=[];;)if(this.tokens.length>0&&!this.peek("}",")",";","]")&&e.push(this.filterChain()),!this.expect(";"))return 1===e.length?e[0]:function(t,n){for(var i,a=0,o=e.length;o>a;a++)i=e[a](t,n);return i}},filterChain:function(){for(var e,t=this.expression();e=this.expect("|");)t=this.filter(t);return t},filter:function(e){var t,i,a=this.expect(),o=this.$filter(a.text);if(this.peek(":"))for(t=[],i=[];this.expect(":");)t.push(this.expression());var s=[e].concat(t||[]);return u(function(a,s){var r=e(a,s);if(i){i[0]=r;for(var c=t.length;c--;)i[c+1]=t[c](a,s);return o.apply(n,i)}return o(r)},{constant:!o.$stateful&&s.every(Tn),inputs:!o.$stateful&&s})},expression:function(){return this.assignment()},assignment:function(){var e,t,n=this.ternary();return(t=this.expect("="))?(n.assign||this.throwError("implies assignment but ["+this.text.substring(0,t.index)+"] can not be assigned to",t),e=this.ternary(),u(function(t,i){return n.assign(t,e(t,i),i)},{inputs:[n,e]})):n},ternary:function(){var e,t,n=this.logicalOR();if(t=this.expect("?")){if(e=this.assignment(),t=this.expect(":")){var i=this.assignment();return u(function(t,a){return n(t,a)?e(t,a):i(t,a)},{constant:n.constant&&e.constant&&i.constant})}this.throwError("expected :",t)}return n},logicalOR:function(){for(var e,t=this.logicalAND();e=this.expect("||");)t=this.binaryFn(t,e.fn,this.logicalAND(),!0);return t},logicalAND:function(){var e,t=this.equality();return(e=this.expect("&&"))&&(t=this.binaryFn(t,e.fn,this.logicalAND(),!0)),t},equality:function(){var e,t=this.relational();return(e=this.expect("==","!=","===","!=="))&&(t=this.binaryFn(t,e.fn,this.equality())),t},relational:function(){var e,t=this.additive();return(e=this.expect("<",">","<=",">="))&&(t=this.binaryFn(t,e.fn,this.relational())),t},additive:function(){for(var e,t=this.multiplicative();e=this.expect("+","-");)t=this.binaryFn(t,e.fn,this.multiplicative());return t},multiplicative:function(){for(var e,t=this.unary();e=this.expect("*","/","%");)t=this.binaryFn(t,e.fn,this.unary());return t},unary:function(){var e;return this.expect("+")?this.primary():(e=this.expect("-"))?this.binaryFn(oo.ZERO,e.fn,this.unary()):(e=this.expect("!"))?this.unaryFn(e.fn,this.unary()):this.primary()},fieldAccess:function(e){var t=this.text,n=this.expect().text,i=Un(n,this.options,t);return u(function(t,n,a){return i(a||e(t,n))},{assign:function(i,a,o){var s=e(i,o);return s||e.assign(i,s={}),In(s,n,a,t)}})},objectIndex:function(e){var t=this.text,i=this.expression();return this.consume("]"),u(function(a,o){var s,r=e(a,o),c=i(a,o);return An(c,t),r?s=xn(r[c],t):n},{assign:function(n,a,o){var s=An(i(n,o),t),r=xn(e(n,o),t);return r||e.assign(n,r={}),r[s]=a}})},functionCall:function(e,t){var n=[];if(")"!==this.peekToken().text)do n.push(this.expression());while(this.expect(","));this.consume(")");var i=this.text,a=n.length?[]:null;return function(o,s){var r=t?t(o,s):o,c=e(o,s,r)||h;if(a)for(var l=n.length;l--;)a[l]=xn(n[l](o,s),i);xn(r,i),En(c,i);var d=c.apply?c.apply(r,a):c(a[0],a[1],a[2],a[3],a[4]);return xn(d,i)}},arrayDeclaration:function(){var e=[];if("]"!==this.peekToken().text)do{if(this.peek("]"))break;var t=this.expression();e.push(t)}while(this.expect(","));return this.consume("]"),u(function(t,n){for(var i=[],a=0,o=e.length;o>a;a++)i.push(e[a](t,n));return i},{literal:!0,constant:e.every(Tn),inputs:e})},object:function(){var e=[],t=[];if("}"!==this.peekToken().text)do{if(this.peek("}"))break;var n=this.expect();e.push(n.string||n.text),this.consume(":");var i=this.expression();t.push(i)}while(this.expect(","));return this.consume("}"),u(function(n,i){for(var a={},o=0,s=t.length;s>o;o++)a[e[o]]=t[o](n,i);return a},{literal:!0,constant:t.every(Tn),inputs:t})}};var so=ct(),ro=ct(),co=Object.prototype.valueOf,lo=i("$sce"),uo={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},Ba=i("$compile"),po=t.createElement("a"),mo=Jn(e.location.href,!0);ti.$inject=["$provide"],ii.$inject=["$locale"],ai.$inject=["$locale"];var ho=".",go={yyyy:ri("FullYear",4),yy:ri("FullYear",2,0,!0),y:ri("FullYear",1),MMMM:ci("Month"),MMM:ci("Month",!0),MM:ri("Month",2,1),M:ri("Month",1,1),dd:ri("Date",2),d:ri("Date",1),HH:ri("Hours",2),H:ri("Hours",1),hh:ri("Hours",2,-12),h:ri("Hours",1,-12),mm:ri("Minutes",2),m:ri("Minutes",1),ss:ri("Seconds",2),s:ri("Seconds",1),sss:ri("Milliseconds",3),EEEE:ci("Day"),EEE:ci("Day",!0),a:mi,Z:li,ww:pi(2),w:pi(1)},fo=/((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|w+))(.*)/,_o=/^\-?\d+$/;hi.$inject=["$locale"];var vo=f(Bi),yo=f(qi);_i.$inject=["$parse"];var bo=f({restrict:"E",compile:function(e,t){return t.href||t.xlinkHref||t.name?void 0:function(e,t){var n="[object SVGAnimatedString]"===Xi.call(t.prop("href"))?"xlink:href":"href";t.on("click",function(e){t.attr(n)||e.preventDefault()})}}}),wo={};o(Ea,function(e,t){if("multiple"!=e){var n=Kt("ng-"+t);wo[n]=function(){return{restrict:"A",priority:100,link:function(e,i,a){e.$watch(a[n],function(e){a.$set(t,!!e)})}}}}}),o(Ia,function(e,t){wo[t]=function(){return{priority:100,link:function(e,n,i){if("ngPattern"===t&&"/"==i.ngPattern.charAt(0)){var a=i.ngPattern.match(Li);if(a)return void i.$set("ngPattern",new RegExp(a[1],a[2]))}e.$watch(i[t],function(e){i.$set(t,e)})}}}}),o(["src","srcset","href"],function(e){var t=Kt("ng-"+e);wo[t]=function(){return{priority:99,link:function(n,i,a){var o=e,s=e;"href"===e&&"[object SVGAnimatedString]"===Xi.call(i.prop("href"))&&(s="xlinkHref",a.$attr[s]="xlink:href",o=null),a.$observe(t,function(t){return t?(a.$set(s,t),void(zi&&o&&i.prop(o,a[s]))):void("href"===e&&a.$set(s,null))})}}}});var $o={$addControl:h,$$renameControl:yi,$removeControl:h,$setValidity:h,$setDirty:h,$setPristine:h,$setSubmitted:h},ko="ng-submitted";bi.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var So=function(e){return["$timeout",function(t){var i={name:"form",restrict:e?"EAC":"E",controller:bi,compile:function(e){return e.addClass(jo).addClass(Fo),{pre:function(e,i,a,o){if(!("action"in a)){var s=function(t){e.$apply(function(){o.$commitViewValue(),o.$setSubmitted()}),t.preventDefault?t.preventDefault():t.returnValue=!1};_a(i[0],"submit",s),i.on("$destroy",function(){t(function(){va(i[0],"submit",s)},0,!1)})}var r=o.$$parentForm,c=o.$name;c&&(In(e,c,o,c),a.$observe(a.name?"name":"ngForm",function(t){c!==t&&(In(e,c,n,c),c=t,In(e,c,o,c),r.$$renameControl(o,c))})),i.on("$destroy",function(){r.$removeControl(o),c&&In(e,c,n,c),u(o,$o)})}}}};return i}]},Co=So(),Mo=So(!0),Ao=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,xo=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,Eo=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,To=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,Io=/^(\d{4})-(\d{2})-(\d{2})$/,Do=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Po=/^(\d{4})-W(\d\d)$/,No=/^(\d{4})-(\d\d)$/,Uo=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Oo=/(\s+|^)default(\s+|$)/,Lo=new i("ngModel"),Ro={text:$i,date:Mi("date",Io,Ci(Io,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":Mi("datetimelocal",Do,Ci(Do,["yyyy","MM","dd","HH","mm","ss","sss"]),"yyyy-MM-ddTHH:mm:ss.sss"),time:Mi("time",Uo,Ci(Uo,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:Mi("week",Po,Si,"yyyy-Www"),month:Mi("month",No,Ci(No,["yyyy","MM"]),"yyyy-MM"),number:xi,url:Ei,email:Ti,radio:Ii,checkbox:Pi,hidden:h,button:h,submit:h,reset:h,file:h},Bo=["$browser","$sniffer","$filter","$parse",function(e,t,n,i){return{restrict:"E",require:["?ngModel"],link:{pre:function(a,o,s,r){r[0]&&(Ro[Bi(s.type)]||Ro.text)(a,o,s,r[0],t,e,n,i)}}}}],Fo="ng-valid",qo="ng-invalid",jo="ng-pristine",Ho="ng-dirty",zo="ng-untouched",Vo="ng-touched",Wo="ng-pending",Go=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(e,t,i,a,s,r,c,l,d,u){this.$viewValue=Number.NaN,this.$modelValue=Number.NaN,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(i.name||"",!1)(e);var p=s(i.ngModel),m=null,g=this,f=function(){var t=p(e);return g.$options&&g.$options.getterSetter&&k(t)&&(t=t()),t},y=function(){var t;g.$options&&g.$options.getterSetter&&k(t=p(e))?t(g.$modelValue):p.assign(e,g.$modelValue)};this.$$setOptions=function(e){if(g.$options=e,!(p.assign||e&&e.getterSetter))throw Lo("nonassign","Expression '{0}' is non-assignable. Element: {1}",i.ngModel,z(a))},this.$render=h,this.$isEmpty=function(e){return _(e)||""===e||null===e||e!==e};var b=a.inheritedData("$formController")||$o,$=0;Ni({ctrl:this,$element:a,set:function(e,t){e[t]=!0},unset:function(e,t){delete e[t]},parentForm:b,$animate:r}),this.$setPristine=function(){g.$dirty=!1,g.$pristine=!0,r.removeClass(a,Ho),r.addClass(a,jo)},this.$setUntouched=function(){g.$touched=!1,g.$untouched=!0,r.setClass(a,zo,Vo)},this.$setTouched=function(){g.$touched=!0,g.$untouched=!1,r.setClass(a,Vo,zo)},this.$rollbackViewValue=function(){c.cancel(m),g.$viewValue=g.$$lastCommittedViewValue,g.$render()},this.$validate=function(){w(g.$modelValue)&&isNaN(g.$modelValue)||this.$$parseAndValidate()},this.$$runValidators=function(e,t,i,a){function s(e){var t=g.$$parserName||"parse";if(e===n)l(t,null);else if(l(t,e),!e)return o(g.$validators,function(e,t){l(t,null)}),o(g.$asyncValidators,function(e,t){l(t,null)}),!1;return!0}function r(){var e=!0;return o(g.$validators,function(n,a){var o=n(t,i);e=e&&o,l(a,o)}),e?!0:(o(g.$asyncValidators,function(e,t){l(t,null)}),!1)}function c(){var e=[],a=!0;o(g.$asyncValidators,function(o,s){var r=o(t,i);if(!T(r))throw Lo("$asyncValidators","Expected asynchronous validator to return a promise but got '{0}' instead.",r);l(s,n),e.push(r.then(function(){l(s,!0)},function(){a=!1,l(s,!1)}))}),e.length?d.all(e).then(function(){u(a)},h):u(!0)}function l(e,t){p===$&&g.$setValidity(e,t)}function u(e){p===$&&a(e)}$++;var p=$;return s(e)&&r()?void c():void u(!1)},this.$commitViewValue=function(){var e=g.$viewValue;c.cancel(m),(g.$$lastCommittedViewValue!==e||""===e&&g.$$hasNativeValidators)&&(g.$$lastCommittedViewValue=e,g.$pristine&&(g.$dirty=!0,g.$pristine=!1,r.removeClass(a,jo),r.addClass(a,Ho),b.$setDirty()),this.$$parseAndValidate())},this.$$parseAndValidate=function(){function e(){g.$modelValue!==s&&g.$$writeModelToScope()}var t=g.$$lastCommittedViewValue,i=t,a=_(i)?n:!0;if(a)for(var o=0;o<g.$parsers.length;o++)if(i=g.$parsers[o](i),_(i)){a=!1;break}w(g.$modelValue)&&isNaN(g.$modelValue)&&(g.$modelValue=f());var s=g.$modelValue,r=g.$options&&g.$options.allowInvalid;r&&(g.$modelValue=i,e()),g.$$runValidators(a,i,t,function(t){r||(g.$modelValue=t?i:n,e())})},this.$$writeModelToScope=function(){y(g.$modelValue),o(g.$viewChangeListeners,function(e){try{e()}catch(n){t(n)}})},this.$setViewValue=function(e,t){g.$viewValue=e,(!g.$options||g.$options.updateOnDefault)&&g.$$debounceViewValueCommit(t)},this.$$debounceViewValueCommit=function(t){var n,i=0,a=g.$options;a&&v(a.debounce)&&(n=a.debounce,w(n)?i=n:w(n[t])?i=n[t]:w(n["default"])&&(i=n["default"])),c.cancel(m),i?m=c(function(){g.$commitViewValue()},i):l.$$phase?g.$commitViewValue():e.$apply(function(){g.$commitViewValue()})},e.$watch(function(){var e=f();if(e!==g.$modelValue){g.$modelValue=e;for(var t=g.$formatters,i=t.length,a=e;i--;)a=t[i](a);g.$viewValue!==a&&(g.$viewValue=g.$$lastCommittedViewValue=a,g.$render(),g.$$runValidators(n,e,a,h))}return e})}],Ko=function(){return{restrict:"A",require:["ngModel","^?form","^?ngModelOptions"],controller:Go,priority:1,compile:function(e){return e.addClass(jo).addClass(zo).addClass(Fo),{pre:function(e,t,n,i){var a=i[0],o=i[1]||$o;
a.$$setOptions(i[2]&&i[2].$options),o.$addControl(a),n.$observe("name",function(e){a.$name!==e&&o.$$renameControl(a,e)}),e.$on("$destroy",function(){o.$removeControl(a)})},post:function(e,t,n,i){var a=i[0];a.$options&&a.$options.updateOn&&t.on(a.$options.updateOn,function(e){a.$$debounceViewValueCommit(e&&e.type)}),t.on("blur",function(){a.$touched||e.$apply(function(){a.$setTouched()})})}}}}},Yo=f({restrict:"A",require:"ngModel",link:function(e,t,n,i){i.$viewChangeListeners.push(function(){e.$eval(n.ngChange)})}}),Zo=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,n,i){i&&(n.required=!0,i.$validators.required=function(e){return!n.required||!i.$isEmpty(e)},n.$observe("required",function(){i.$validate()}))}}},Xo=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,a,o){if(o){var s,r=a.ngPattern||a.pattern;a.$observe("pattern",function(e){if(b(e)&&e.length>0&&(e=new RegExp(e)),e&&!e.test)throw i("ngPattern")("noregexp","Expected {0} to be a RegExp but was {1}. Element: {2}",r,e,z(t));s=e||n,o.$validate()}),o.$validators.pattern=function(e){return o.$isEmpty(e)||_(s)||s.test(e)}}}}},Jo=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,n,i){if(i){var a=0;n.$observe("maxlength",function(e){a=p(e)||0,i.$validate()}),i.$validators.maxlength=function(e,t){return i.$isEmpty(e)||t.length<=a}}}}},Qo=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,n,i){if(i){var a=0;n.$observe("minlength",function(e){a=p(e)||0,i.$validate()}),i.$validators.minlength=function(e,t){return i.$isEmpty(e)||t.length>=a}}}}},es=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(e,t,i,a){var s=t.attr(i.$attr.ngList)||", ",r="false"!==i.ngTrim,c=r?ia(s):s,l=function(e){if(!_(e)){var t=[];return e&&o(e.split(c),function(e){e&&t.push(r?ia(e):e)}),t}};a.$parsers.push(l),a.$formatters.push(function(e){return na(e)?e.join(s):n}),a.$isEmpty=function(e){return!e||!e.length}}}},ts=/^(true|false|\d+)$/,ns=function(){return{restrict:"A",priority:100,compile:function(e,t){return ts.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)})}}}},is=function(){return{restrict:"A",controller:["$scope","$attrs",function(e,t){var i=this;this.$options=e.$eval(t.ngModelOptions),this.$options.updateOn!==n?(this.$options.updateOnDefault=!1,this.$options.updateOn=ia(this.$options.updateOn.replace(Oo,function(){return i.$options.updateOnDefault=!0," "}))):this.$options.updateOnDefault=!0}]}},as=["$compile",function(e){return{restrict:"AC",compile:function(t){return e.$$addBindingClass(t),function(t,i,a){e.$$addBindingInfo(i,a.ngBind),i=i[0],t.$watch(a.ngBind,function(e){i.textContent=e===n?"":e})}}}}],os=["$interpolate","$compile",function(e,t){return{compile:function(i){return t.$$addBindingClass(i),function(i,a,o){var s=e(a.attr(o.$attr.ngBindTemplate));t.$$addBindingInfo(a,s.expressions),a=a[0],o.$observe("ngBindTemplate",function(e){a.textContent=e===n?"":e})}}}}],ss=["$sce","$parse","$compile",function(e,t,n){return{restrict:"A",compile:function(i,a){var o=t(a.ngBindHtml),s=t(a.ngBindHtml,function(e){return(e||"").toString()});return n.$$addBindingClass(i),function(t,i,a){n.$$addBindingInfo(i,a.ngBindHtml),t.$watch(s,function(){i.html(e.getTrustedHtml(o(t))||"")})}}}}],rs=Oi("",!0),cs=Oi("Odd",0),ls=Oi("Even",1),ds=vi({compile:function(e,t){t.$set("ngCloak",n),e.removeClass("ng-cloak")}}),us=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],ps={},ms={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=Kt("ng-"+e);ps[t]=["$parse","$rootScope",function(n,i){return{restrict:"A",compile:function(a,o){var s=n(o[t],null,!0);return function(t,n){n.on(e,function(n){var a=function(){s(t,{$event:n})};ms[e]&&i.$$phase?t.$evalAsync(a):t.$apply(a)})}}}}]});var hs=["$animate",function(e){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(n,i,a,o,s){var r,c,l;n.$watch(a.ngIf,function(n){n?c||s(function(n,o){c=o,n[n.length++]=t.createComment(" end ngIf: "+a.ngIf+" "),r={clone:n},e.enter(n,i.parent(),i)}):(l&&(l.remove(),l=null),c&&(c.$destroy(),c=null),r&&(l=rt(r.clone),e.leave(l).then(function(){l=null}),r=null))})}}}],gs=["$templateRequest","$anchorScroll","$animate","$sce",function(e,t,n,i){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:Qi.noop,compile:function(a,o){var s=o.ngInclude||o.src,r=o.onload||"",c=o.autoscroll;return function(a,o,l,d,u){var p,m,h,g=0,f=function(){m&&(m.remove(),m=null),p&&(p.$destroy(),p=null),h&&(n.leave(h).then(function(){m=null}),m=h,h=null)};a.$watch(i.parseAsResourceUrl(s),function(i){var s=function(){!v(c)||c&&!a.$eval(c)||t()},l=++g;i?(e(i,!0).then(function(e){if(l===g){var t=a.$new();d.template=e;var c=u(t,function(e){f(),n.enter(e,null,o).then(s)});p=t,h=c,p.$emit("$includeContentLoaded",i),a.$eval(r)}},function(){l===g&&(f(),a.$emit("$includeContentError",i))}),a.$emit("$includeContentRequested",i)):(f(),d.template=null)})}}}}],fs=["$compile",function(e){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(n,i,a,o){return/SVG/.test(i[0].toString())?(i.empty(),void e(gt(o.template,t).childNodes)(n,function(e){i.append(e)},{futureParentElement:i})):(i.html(o.template),void e(i.contents())(n))}}}],_s=vi({priority:450,compile:function(){return{pre:function(e,t,n){e.$eval(n.ngInit)}}}}),vs=vi({terminal:!0,priority:1e3}),ys=["$locale","$interpolate",function(e,t){var n=/{}/g;return{restrict:"EA",link:function(i,a,s){var r=s.count,c=s.$attr.when&&a.attr(s.$attr.when),l=s.offset||0,d=i.$eval(c)||{},u={},p=t.startSymbol(),m=t.endSymbol(),h=/^when(Minus)?(.+)$/;o(s,function(e,t){h.test(t)&&(d[Bi(t.replace("when","").replace("Minus","-"))]=a.attr(s.$attr[t]))}),o(d,function(e,i){u[i]=t(e.replace(n,p+r+"-"+l+m))}),i.$watch(function(){var t=parseFloat(i.$eval(r));return isNaN(t)?"":(t in d||(t=e.pluralCat(t-l)),u[t](i))},function(e){a.text(e)})}}}],bs=["$parse","$animate",function(e,s){var r="$$NG_REMOVED",c=i("ngRepeat"),l=function(e,t,n,i,a,o,s){e[n]=i,a&&(e[a]=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(i,p){var m=p.ngRepeat,h=t.createComment(" end ngRepeat: "+m+" "),g=m.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!g)throw c("iexp","Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",m);var f=g[1],_=g[2],v=g[3],y=g[4];if(g=f.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/),!g)throw c("iidexp","'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",f);var b=g[3]||g[1],w=g[2];if(v&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(v)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent)$/.test(v)))throw c("badident","alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.",v);var $,k,S,C,M={$id:Ot};return y?$=e(y):(S=function(e,t){return Ot(t)},C=function(e){return e}),function(e,t,i,p,g){$&&(k=function(t,n,i){return w&&(M[w]=t),M[b]=n,M.$index=i,$(e,M)});var f=ct();e.$watchCollection(_,function(i){var p,_,y,$,M,A,x,E,T,I,D,P,N=t[0],U=ct();if(v&&(e[v]=i),a(i))T=i,E=k||S;else{E=k||C,T=[];for(var O in i)i.hasOwnProperty(O)&&"$"!=O.charAt(0)&&T.push(O);T.sort()}for($=T.length,D=new Array($),p=0;$>p;p++)if(M=i===T?p:T[p],A=i[M],x=E(M,A,p),f[x])I=f[x],delete f[x],U[x]=I,D[p]=I;else{if(U[x])throw o(D,function(e){e&&e.scope&&(f[e.id]=e)}),c("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,x,j(A));D[p]={id:x,scope:n,clone:n},U[x]=!0}for(var L in f){if(I=f[L],P=rt(I.clone),s.leave(P),P[0].parentNode)for(p=0,_=P.length;_>p;p++)P[p][r]=!0;I.scope.$destroy()}for(p=0;$>p;p++)if(M=i===T?p:T[p],A=i[M],I=D[p],I.scope){y=N;do y=y.nextSibling;while(y&&y[r]);d(I)!=y&&s.move(rt(I.clone),null,Vi(N)),N=u(I),l(I.scope,p,b,A,w,M,$)}else g(function(e,t){I.scope=t;var n=h.cloneNode(!1);e[e.length++]=n,s.enter(e,null,Vi(N)),N=n,I.clone=e,U[I.id]=I,l(I.scope,p,b,A,w,M,$)});f=U})}}}}],ws="ng-hide",$s="ng-hide-animate",ks=["$animate",function(e){return{restrict:"A",multiElement:!0,link:function(t,n,i){t.$watch(i.ngShow,function(t){e[t?"removeClass":"addClass"](n,ws,{tempClasses:$s})})}}}],Ss=["$animate",function(e){return{restrict:"A",multiElement:!0,link:function(t,n,i){t.$watch(i.ngHide,function(t){e[t?"addClass":"removeClass"](n,ws,{tempClasses:$s})})}}}],Cs=vi(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)}),Ms=["$animate",function(e){return{restrict:"EA",require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(n,i,a,s){var r=a.ngSwitch||a.on,c=[],l=[],d=[],u=[],p=function(e,t){return function(){e.splice(t,1)}};n.$watch(r,function(n){var i,a;for(i=0,a=d.length;a>i;++i)e.cancel(d[i]);for(d.length=0,i=0,a=u.length;a>i;++i){var r=rt(l[i].clone);u[i].$destroy();var m=d[i]=e.leave(r);m.then(p(d,i))}l.length=0,u.length=0,(c=s.cases["!"+n]||s.cases["?"])&&o(c,function(n){n.transclude(function(i,a){u.push(a);var o=n.element;i[i.length++]=t.createComment(" end ngSwitchWhen: ");var s={clone:i};l.push(s),e.enter(i,o.parent(),o)})})})}}}],As=vi({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(e,t,n,i,a){i.cases["!"+n.ngSwitchWhen]=i.cases["!"+n.ngSwitchWhen]||[],i.cases["!"+n.ngSwitchWhen].push({transclude:a,element:t})}}),xs=vi({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(e,t,n,i,a){i.cases["?"]=i.cases["?"]||[],i.cases["?"].push({transclude:a,element:t})}}),Es=vi({restrict:"EAC",link:function(e,t,n,a,o){if(!o)throw i("ngTransclude")("orphan","Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}",z(t));o(function(e){t.empty(),t.append(e)})}}),Ts=["$templateCache",function(e){return{restrict:"E",terminal:!0,compile:function(t,n){if("text/ng-template"==n.type){var i=n.id,a=t[0].text;e.put(i,a)}}}}],Is=i("ngOptions"),Ds=f({restrict:"A",terminal:!0}),Ps=["$compile","$parse",function(e,i){var a=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\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]+?))?$/,r={$setViewValue:h};return{restrict:"E",require:["select","?ngModel"],controller:["$element","$scope","$attrs",function(e,t,n){var i,a,o=this,s={},c=r;o.databound=n.ngModel,o.init=function(e,t,n){c=e,i=t,a=n},o.addOption=function(t,n){ot(t,'"option value"'),s[t]=!0,c.$viewValue==t&&(e.val(t),a.parent()&&a.remove()),n&&n[0].hasAttribute("selected")&&(n[0].selected=!0)},o.removeOption=function(e){this.hasOption(e)&&(delete s[e],c.$viewValue==e&&this.renderUnknownOption(e))},o.renderUnknownOption=function(t){var n="? "+Ot(t)+" ?";a.val(n),e.prepend(a),e.val(n),a.prop("selected",!0)},o.hasOption=function(e){return s.hasOwnProperty(e)},t.$on("$destroy",function(){o.renderUnknownOption=h})}],link:function(r,c,l,d){function u(e,t,n,i){n.$render=function(){var e=n.$viewValue;i.hasOption(e)?(C.parent()&&C.remove(),t.val(e),""===e&&h.prop("selected",!0)):_(e)&&h?t.val(""):i.renderUnknownOption(e)},t.on("change",function(){e.$apply(function(){C.parent()&&C.remove(),n.$setViewValue(t.val())})})}function p(e,t,n){var i;n.$render=function(){var e=new Lt(n.$viewValue);o(t.find("option"),function(t){t.selected=v(e.get(t.value))})},e.$watch(function(){L(i,n.$viewValue)||(i=O(n.$viewValue),n.$render())}),t.on("change",function(){e.$apply(function(){var e=[];o(t.find("option"),function(t){t.selected&&e.push(t.value)}),n.$setViewValue(e)})})}function m(t,r,c){function l(e,n,i){return R[A]=i,T&&(R[T]=n),e(t,R)}function d(){t.$apply(function(){var e,n=P(t)||[];if(y)e=[],o(r.val(),function(t){t=U?O[t]:t,e.push(u(t,n[t]))});else{var i=U?O[r.val()]:r.val();e=u(i,n[i])}c.$setViewValue(e),_()})}function u(e,t){if("?"===e)return n;if(""===e)return null;var i=E?E:D;return l(i,e,t)}function p(){var e,n=P(t);if(n&&na(n)){e=new Array(n.length);for(var i=0,a=n.length;a>i;i++)e[i]=l(M,i,n[i]);return e}if(n){e={};for(var o in n)n.hasOwnProperty(o)&&(e[o]=l(M,o,n[o]))}return e}function m(e){var t;if(y)if(U&&na(e)){t=new Lt([]);for(var n=0;n<e.length;n++)t.put(l(U,null,e[n]),!0)}else t=new Lt(e);else U&&(e=l(U,null,e));return function(n,i){var a;return a=U?U:E?E:D,y?v(t.remove(l(a,n,i))):e===l(a,n,i)}}function h(){$||(t.$$postDigest(_),$=!0)}function f(e,t,n){e[t]=e[t]||0,e[t]+=n?1:-1}function _(){$=!1;var e,n,i,a,d,u,p,h,_,b,C,A,x,E,D,N,B,F={"":[]},q=[""],j=c.$viewValue,H=P(t)||[],z=T?s(H):H,V={},W=m(j),G=!1;for(O={},A=0;b=z.length,b>A;A++)p=A,T&&(p=z[A],"$"===p.charAt(0))||(h=H[p],e=l(I,p,h)||"",(n=F[e])||(n=F[e]=[],q.push(e)),x=W(p,h),G=G||x,N=l(M,p,h),N=v(N)?N:"",B=U?U(t,R):T?z[A]:A,U&&(O[B]=p),n.push({id:B,label:N,selected:x}));for(y||(w||null===j?F[""].unshift({id:"",label:"",selected:!G}):G||F[""].unshift({id:"?",label:"",selected:!0})),C=0,_=q.length;_>C;C++){for(e=q[C],n=F[e],L.length<=C?(a={element:S.clone().attr("label",e),label:n.label},d=[a],L.push(d),r.append(a.element)):(d=L[C],a=d[0],a.label!=e&&a.element.attr("label",a.label=e)),E=null,A=0,b=n.length;b>A;A++)i=n[A],(u=d[A+1])?(E=u.element,u.label!==i.label&&(f(V,u.label,!1),f(V,i.label,!0),E.text(u.label=i.label)),u.id!==i.id&&E.val(u.id=i.id),E[0].selected!==i.selected&&(E.prop("selected",u.selected=i.selected),zi&&E.prop("selected",u.selected))):(""===i.id&&w?D=w:(D=k.clone()).val(i.id).prop("selected",i.selected).attr("selected",i.selected).text(i.label),d.push(u={element:D,label:i.label,id:i.id,selected:i.selected}),f(V,i.label,!0),E?E.after(D):a.element.append(D),E=D);for(A++;d.length>A;)i=d.pop(),f(V,i.label,!1),i.element.remove();o(V,function(e,t){e>0?g.addOption(t):0>e&&g.removeOption(t)})}for(;L.length>C;)L.pop()[0].element.remove()}var C;if(!(C=b.match(a)))throw Is("iexp","Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}",b,z(r));var M=i(C[2]||C[1]),A=C[4]||C[6],x=/ as /.test(C[0])&&C[1],E=x?i(x):null,T=C[5],I=i(C[3]||""),D=i(C[2]?C[1]:A),P=i(C[7]),N=C[8],U=N?i(C[8]):null,O={},L=[[{element:r,label:""}]],R={};w&&(e(w)(t),w.removeClass("ng-scope"),w.remove()),r.empty(),r.on("change",d),c.$render=_,t.$watchCollection(P,h),t.$watchCollection(p,h),y&&t.$watchCollection(function(){return c.$modelValue},h)}if(d[1]){for(var h,g=d[0],f=d[1],y=l.multiple,b=l.ngOptions,w=!1,$=!1,k=Vi(t.createElement("option")),S=Vi(t.createElement("optgroup")),C=k.clone(),M=0,A=c.children(),x=A.length;x>M;M++)if(""===A[M].value){h=w=A.eq(M);break}g.init(f,w,C),y&&(f.$isEmpty=function(e){return!e||0===e.length}),b?m(r,c,f):y?p(r,c,f):u(r,c,f,g)}}}}],Ns=["$interpolate",function(e){var t={addOption:h,removeOption:h};return{restrict:"E",priority:100,compile:function(n,i){if(_(i.value)){var a=e(n.text(),!0);a||i.$set("value",n.text())}return function(e,n,i){var o="$selectController",s=n.parent(),r=s.data(o)||s.parent().data(o);r&&r.databound||(r=t),a?e.$watch(a,function(e,t){i.$set("value",e),t!==e&&r.removeOption(t),r.addOption(e,n)}):r.addOption(i.value,n),n.on("$destroy",function(){r.removeOption(i.value)})}}}}],Us=f({restrict:"E",terminal:!1});return e.angular.bootstrap?void console.log("WARNING: Tried to load angular more than once."):(nt(),dt(Qi),void Vi(t).ready(function(){X(t,J)}))}(window,document),!window.angular.$$csp()&&window.angular.element(document).find("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;}</style>'),function(e,t){"use strict";function n(){function e(e,n){return t.extend(new(t.extend(function(){},{prototype:e})),n)}function n(e,t){var n=t.caseInsensitiveMatch,i={originalPath:e,regexp:e},a=i.keys=[];return e=e.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?\*])?/g,function(e,t,n,i){var o="?"===i?i:null,s="*"===i?i:null;return a.push({name:n,optional:!!o}),t=t||"",""+(o?"":t)+"(?:"+(o?t:"")+(s&&"(.+?)"||"([^/]+)")+(o||"")+")"+(o||"")}).replace(/([\/$\*])/g,"\\$1"),i.regexp=new RegExp("^"+e+"$",n?"i":""),i}var i={};this.when=function(e,a){var o=t.copy(a);if(t.isUndefined(o.reloadOnSearch)&&(o.reloadOnSearch=!0),i[e]=t.extend(o,e&&n(e,o)),e){var s="/"==e[e.length-1]?e.substr(0,e.length-1):e+"/";i[s]=t.extend({redirectTo:e},n(s,o))}return this},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,a,o,s,c,l,d){function u(e,t){var n=t.keys,i={};if(!t.regexp)return null;var a=t.regexp.exec(e);if(!a)return null;for(var o=1,s=a.length;s>o;++o){var r=n[o-1],c=a[o];r&&c&&(i[r.name]=c)}return i}function p(e){var i=y.current;f=h(),_=f&&i&&f.$$route===i.$$route&&t.equals(f.pathParams,i.pathParams)&&!f.reloadOnSearch&&!v,_||!i&&!f||n.$broadcast("$routeChangeStart",f,i).defaultPrevented&&e&&e.preventDefault()}function m(){var e=y.current,i=f;_?(e.params=i.params,t.copy(e.params,o),n.$broadcast("$routeUpdate",e)):(i||e)&&(v=!1,y.current=i,i&&i.redirectTo&&(t.isString(i.redirectTo)?a.path(g(i.redirectTo,i.params)).search(i.params).replace():a.url(i.redirectTo(i.pathParams,a.path(),a.search())).replace()),s.when(i).then(function(){if(i){var e,n,a=t.extend({},i.resolve);return t.forEach(a,function(e,n){a[n]=t.isString(e)?c.get(e):c.invoke(e,null,null,n)}),t.isDefined(e=i.template)?t.isFunction(e)&&(e=e(i.params)):t.isDefined(n=i.templateUrl)&&(t.isFunction(n)&&(n=n(i.params)),n=d.getTrustedResourceUrl(n),t.isDefined(n)&&(i.loadedTemplateUrl=n,e=l(n))),t.isDefined(e)&&(a.$template=e),s.all(a)}}).then(function(a){i==y.current&&(i&&(i.locals=a,t.copy(i.params,o)),n.$broadcast("$routeChangeSuccess",i,e))},function(t){i==y.current&&n.$broadcast("$routeChangeError",i,e,t)}))}function h(){var n,o;return t.forEach(i,function(i){!o&&(n=u(a.path(),i))&&(o=e(i,{params:t.extend({},a.search(),n),pathParams:n}),o.$$route=i)}),o||i[null]&&e(i[null],{params:{},pathParams:{}})}function g(e,n){var i=[];return t.forEach((e||"").split(":"),function(e,t){if(0===t)i.push(e);else{var a=e.match(/(\w+)(.*)/),o=a[1];i.push(n[o]),i.push(a[2]||""),delete n[o]}}),i.join("")}var f,_,v=!1,y={routes:i,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");var n={},i=this;t.forEach(Object.keys(e),function(t){i.current.pathParams[t]||(n[t]=e[t])}),e=t.extend({},this.current.params,e),a.path(g(this.current.$$route.originalPath,e)),a.search(t.extend({},a.search(),n))}};return n.$on("$locationChangeStart",p),n.$on("$locationChangeSuccess",m),y}]}function i(){this.$get=function(){return{}}}function a(e,n,i){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,o,s,r,c){function l(){m&&(i.cancel(m),m=null),u&&(u.$destroy(),u=null),p&&(m=i.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=a.$new(),m=e.current,f=c(d,function(e){i.enter(e,null,p||o).then(function(){!t.isDefined(h)||h&&!a.$eval(h)||n()}),l()});p=f,u=m.scope=d,u.$emit("$viewContentLoaded"),u.$eval(g)}else l()}var u,p,m,h=s.autoscroll,g=s.onload||"";a.$on("$routeChangeSuccess",d),d()}}}function o(e,t,n){return{restrict:"ECA",priority:-400,link:function(i,a){var o=n.current,s=o.locals;a.html(s.$template);var r=e(a.contents());if(o.controller){s.$scope=i;var c=t(o.controller,s);o.controllerAs&&(i[o.controllerAs]=c),a.data("$ngControllerController",c),a.children().data("$ngControllerController",c)}r(i)}}}var s=t.module("ngRoute",["ng"]).provider("$route",n),r=t.$$minErr("ngRoute");s.provider("$routeParams",i),s.directive("ngView",a),s.directive("ngView",o),a.$inject=["$route","$anchorScroll","$animate"],o.$inject=["$compile","$controller","$route"]}(window,window.angular),function(e,t,n){"use strict";t.module("ngAnimate",["ng"]).directive("ngAnimateChildren",function(){var e="$$ngAnimateChildren";return function(n,i,a){var o=a.ngAnimateChildren;t.isString(o)&&0===o.length?i.data(e,!0):n.$watch(o,function(t){i.data(e,!!t)})}}).factory("$$animateReflow",["$$rAF","$document",function(e,t){var n=t[0].body;return function(t){return e(function(){n.offsetWidth+1;t()})}}]).config(["$provide","$animateProvider",function(i,a){function o(e){for(var t=0;t<e.length;t++){var n=e[t];if(n.nodeType==g)return n}}function s(e){return e&&t.element(e)}function r(e){return t.element(o(e))}function c(e,t){return o(e)==o(t)}var l=t.noop,d=t.forEach,u=a.$$selectors,p=t.isArray,m=t.isString,h=t.isObject,g=1,f="$$ngAnimateState",_="$$ngAnimateChildren",v="ng-animate",y={running:!0};i.decorator("$animate",["$delegate","$$q","$injector","$sniffer","$rootElement","$$asyncCallback","$rootScope","$document","$templateRequest",function(e,n,i,g,b,w,$,k,S){function C(e,t){var n=e.data(f)||{};return t&&(n.running=!0,n.structural=!0,e.data(f,n)),n.disabled||n.running&&n.structural}function M(e){var t,i=n.defer();return i.promise.$$cancelFn=function(){t&&t()},$.$$postDigest(function(){t=e(function(){i.resolve()})}),i.promise}function A(e){return h(e)?(e.tempClasses&&m(e.tempClasses)&&(e.tempClasses=e.tempClasses.split(/\s+/)),e):void 0}function x(e,t,n){n=n||{};var i={};d(n,function(e,t){d(t.split(" "),function(t){i[t]=e})});var a=Object.create(null);d((e.attr("class")||"").split(/\s+/),function(e){a[e]=!0});var o=[],s=[];return d(t&&t.classes||[],function(e,t){var n=a[t],r=i[t]||{};e===!1?(n||"addClass"==r.event)&&s.push(t):e===!0&&(n&&"removeClass"!=r.event||o.push(t))}),o.length+s.length>0&&[o.join(" "),s.join(" ")]}function E(e){if(e){var t=[],n={},a=e.substr(1).split(".");(g.transitions||g.animations)&&t.push(i.get(u[""]));for(var o=0;o<a.length;o++){var s=a[o],r=u[s];r&&!n[s]&&(t.push(i.get(r)),n[s]=!0)}return t}}function T(e,n,i,a){function o(e,t){var n=e[t],i=e["before"+t.charAt(0).toUpperCase()+t.substr(1)];return n||i?("leave"==t&&(i=n,n=null),$.push({event:t,fn:n}),y.push({event:t,fn:i}),!0):void 0}function s(t,n,o){function s(e){if(n){if((n[e]||l)(),++p<r.length)return;n=null}o()}var r=[];d(t,function(e){e.fn&&r.push(e)});var p=0;d(r,function(t,o){var r=function(){s(o)};switch(t.event){case"setClass":n.push(t.fn(e,c,u,r,a));break;case"animate":n.push(t.fn(e,i,a.from,a.to,r));break;case"addClass":n.push(t.fn(e,c||i,r,a));break;case"removeClass":n.push(t.fn(e,u||i,r,a));break;default:n.push(t.fn(e,r,a))}}),n&&0===n.length&&o()}var r=e[0];if(r){a&&(a.to=a.to||{},a.from=a.from||{});var c,u;p(i)&&(c=i[0],u=i[1],c?u?i=c+" "+u:(i=c,n="addClass"):(i=u,n="removeClass"));var m="setClass"==n,h=m||"addClass"==n||"removeClass"==n||"animate"==n,g=e.attr("class"),f=g+" "+i;if(R(f)){var _=l,v=[],y=[],b=l,w=[],$=[],k=(" "+f).replace(/\s+/g,".");return d(E(k),function(e){var t=o(e,n);!t&&m&&(o(e,"addClass"),o(e,"removeClass"))}),{node:r,event:n,className:i,isClassBased:h,isSetClassOperation:m,applyStyles:function(){a&&e.css(t.extend(a.from||{},a.to||{}))},before:function(e){_=e,s(y,v,function(){_=l,e()})},after:function(e){b=e,s($,w,function(){b=l,e()})},cancel:function(){v&&(d(v,function(e){(e||l)(!0)}),_(!0)),w&&(d(w,function(e){(e||l)(!0)}),b(!0))}}}}}function I(e,n,i,a,o,s,r,c){function u(t){var a="$animate:"+t;$&&$[a]&&$[a].length>0&&w(function(){i.triggerHandler(a,{event:e,className:n})})}function p(){u("before")}function m(){u("after")}function h(){u("close"),c()}function g(){g.hasBeenRun||(g.hasBeenRun=!0,s())}function _(){if(!_.hasBeenRun){b&&b.applyStyles(),_.hasBeenRun=!0,r&&r.tempClasses&&d(r.tempClasses,function(e){i.removeClass(e)});var t=i.data(f);t&&(b&&b.isClassBased?P(i,n):(w(function(){var t=i.data(f)||{};D==t.index&&P(i,n,e)}),i.data(f,t))),h()}}var y=l,b=T(i,e,n,r);if(!b)return g(),p(),m(),_(),y;e=b.event,n=b.className;var $=t.element._data(b.node);if($=$&&$.events,a||(a=o?o.parent():i.parent()),N(i,a))return g(),p(),m(),_(),y;var k=i.data(f)||{},S=k.active||{},C=k.totalActive||0,M=k.last,A=!1;if(C>0){var x=[];if(b.isClassBased){if("setClass"==M.event)x.push(M),P(i,n);else if(S[n]){var E=S[n];E.event==e?A=!0:(x.push(E),P(i,n))}}else if("leave"==e&&S["ng-leave"])A=!0;else{for(var I in S)x.push(S[I]);k={},P(i,!0)}x.length>0&&d(x,function(e){e.cancel()})}if(!b.isClassBased||b.isSetClassOperation||"animate"==e||A||(A="addClass"==e==i.hasClass(n)),A)return g(),p(),m(),h(),y;S=k.active||{},C=k.totalActive||0,"leave"==e&&i.one("$destroy",function(){var e=t.element(this),n=e.data(f);if(n){var i=n.active["ng-leave"];i&&(i.cancel(),P(e,"ng-leave"))}}),i.addClass(v),r&&r.tempClasses&&d(r.tempClasses,function(e){i.addClass(e)});var D=O++;return C++,S[n]=b,i.data(f,{last:b,active:S,index:D,totalActive:C}),p(),b.before(function(t){var a=i.data(f);t=t||!a||!a.active[n]||b.isClassBased&&a.active[n].event!=e,g(),t===!0?_():(m(),b.after(_))}),b.cancel}function D(e){var n=o(e);if(n){var i=t.isFunction(n.getElementsByClassName)?n.getElementsByClassName(v):n.querySelectorAll("."+v);d(i,function(e){e=t.element(e);var n=e.data(f);n&&n.active&&d(n.active,function(e){e.cancel()})})}}function P(e,t){if(c(e,b))y.disabled||(y.running=!1,y.structural=!1);else if(t){var n=e.data(f)||{},i=t===!0;!i&&n.active&&n.active[t]&&(n.totalActive--,delete n.active[t]),(i||!n.totalActive)&&(e.removeClass(v),e.removeData(f))}}function N(e,n){if(y.disabled)return!0;if(c(e,b))return y.running;var i,a,o;do{if(0===n.length)break;var s=c(n,b),r=s?y:n.data(f)||{};if(r.disabled)return!0;if(s&&(o=!0),i!==!1){var l=n.data(_);t.isDefined(l)&&(i=l)}a=a||r.running||r.last&&!r.last.isClassBased}while(n=n.parent());return!o||!i&&a}b.data(f,y);var U=$.$watch(function(){return S.totalPendingRequests},function(e){0===e&&(U(),$.$$postDigest(function(){$.$$postDigest(function(){y.running=!1})}))}),O=0,L=a.classNameFilter(),R=L?function(e){return L.test(e)}:function(){return!0};return{animate:function(e,t,n,i,a){return i=i||"ng-inline-animate",a=A(a)||{},a.from=n?t:null,a.to=n?n:t,M(function(t){return I("animate",i,r(e),null,null,l,a,t)})},enter:function(n,i,a,o){return o=A(o),n=t.element(n),i=s(i),a=s(a),C(n,!0),e.enter(n,i,a),M(function(e){return I("enter","ng-enter",r(n),i,a,l,o,e)})},leave:function(n,i){return i=A(i),n=t.element(n),D(n),C(n,!0),M(function(t){return I("leave","ng-leave",r(n),null,null,function(){e.leave(n)},i,t)})},move:function(n,i,a,o){return o=A(o),n=t.element(n),i=s(i),a=s(a),D(n),C(n,!0),e.move(n,i,a),M(function(e){return I("move","ng-move",r(n),i,a,l,o,e)})},addClass:function(e,t,n){return this.setClass(e,t,[],n)},removeClass:function(e,t,n){return this.setClass(e,[],t,n)},setClass:function(n,i,a,s){s=A(s);var c="$$animateClasses";if(n=t.element(n),n=r(n),C(n))return e.$$setClassImmediately(n,i,a,s);var l,u=n.data(c),m=!!u;return u||(u={},u.classes={}),l=u.classes,i=p(i)?i:i.split(" "),d(i,function(e){e&&e.length&&(l[e]=!0)}),a=p(a)?a:a.split(" "),d(a,function(e){e&&e.length&&(l[e]=!1)}),m?(s&&u.options&&(u.options=t.extend(u.options||{},s)),u.promise):(n.data(c,u={classes:l,options:s}),u.promise=M(function(t){var i=n.parent(),a=o(n),s=a.parentNode;if(!s||s.$$NG_REMOVED||a.$$NG_REMOVED)return void t();var r=n.data(c);n.removeData(c);var l=n.data(f)||{},d=x(n,r,l.active);return d?I("setClass",d,n,i,null,function(){d[0]&&e.$$addClassImmediately(n,d[0]),d[1]&&e.$$removeClassImmediately(n,d[1])},r.options,t):t()}))},cancel:function(e){e.$$cancelFn()},enabled:function(e,t){switch(arguments.length){case 2:if(e)P(t);else{var n=t.data(f)||{};n.disabled=!0,t.data(f,n)}break;case 1:y.disabled=!e;break;default:e=!y.disabled}return!!e}}}]),a.register("",["$window","$sniffer","$timeout","$$animateReflow",function(i,a,s,r){function c(){N||(N=r(function(){G=[],N=null,V={}}))}function u(e,t){N&&N(),G.push(t),N=r(function(){d(G,function(e){e()}),G=[],N=null,V={}})}function h(e,n){var i=o(e);e=t.element(i),Z.push(e);var a=Date.now()+n;Y>=a||(s.cancel(K),Y=a,K=s(function(){f(Z),Z=[]},n,!1))}function f(e){d(e,function(e){var t=e.data(q);t&&d(t.closeAnimationFns,function(e){e()})})}function _(e,t){var n=t?V[t]:null;if(!n){var a=0,o=0,s=0,r=0;d(e,function(e){if(e.nodeType==g){var t=i.getComputedStyle(e)||{},n=t[E+U];a=Math.max(v(n),a);var c=t[E+L];o=Math.max(v(c),o);{t[I+L]}r=Math.max(v(t[I+L]),r);var l=v(t[I+U]);l>0&&(l*=parseInt(t[I+R],10)||1),s=Math.max(l,s)}}),n={total:0,transitionDelay:o,transitionDuration:a,animationDelay:r,animationDuration:s},t&&(V[t]=n)}return n}function v(e){var t=0,n=m(e)?e.split(/\s*,\s*/):[];return d(n,function(e){t=Math.max(parseFloat(e)||0,t)}),t}function y(e){var t=e.parent(),n=t.data(F);return n||(t.data(F,++W),n=W),n+"-"+o(e).getAttribute("class")}function b(e,t,n,i){var a=["ng-enter","ng-leave","ng-move"].indexOf(n)>=0,s=y(t),r=s+" "+n,c=V[r]?++V[r].total:0,l={};if(c>0){var d=n+"-stagger",u=s+" "+d,p=!V[u];p&&t.addClass(d),l=_(t,u),p&&t.removeClass(d)}t.addClass(n);var m=t.data(q)||{},h=_(t,r),g=h.transitionDuration,f=h.animationDuration;if(a&&0===g&&0===f)return t.removeClass(n),!1;var v=i||a&&g>0,b=f>0&&l.animationDelay>0&&0===l.animationDuration,w=m.closeAnimationFns||[];t.data(q,{stagger:l,cacheKey:r,running:m.running||0,itemIndex:c,blockTransition:v,closeAnimationFns:w});var S=o(t);return v&&($(S,!0),i&&t.css(i)),b&&k(S,!0),!0}function w(e,t,n,i,a){function r(){t.off(L,c),t.removeClass(p),t.removeClass(m),U&&s.cancel(U),A(t,n);var e=o(t);for(var i in f)e.style.removeProperty(f[i])}function c(e){e.stopPropagation();var t=e.originalEvent||e,n=t.$manualTimeStamp||t.timeStamp||Date.now(),a=parseFloat(t.elapsedTime.toFixed(j));Math.max(n-O,0)>=I&&a>=x&&i()}var l=o(t),u=t.data(q);if(-1==l.getAttribute("class").indexOf(n)||!u)return void i();var p="",m="";d(n.split(" "),function(e,t){var n=(t>0?" ":"")+e;p+=n+"-active",m+=n+"-pending"});var g="",f=[],v=u.itemIndex,y=u.stagger,b=0;if(v>0){var w=0;y.transitionDelay>0&&0===y.transitionDuration&&(w=y.transitionDelay*v);var S=0;y.animationDelay>0&&0===y.animationDuration&&(S=y.animationDelay*v,f.push(P+"animation-play-state")),b=Math.round(100*Math.max(w,S))/100}b||(t.addClass(p),u.blockTransition&&$(l,!1));var C=u.cacheKey+" "+p,M=_(t,C),x=Math.max(M.transitionDuration,M.animationDuration);if(0===x)return t.removeClass(p),A(t,n),void i();!b&&a&&(M.transitionDuration||(t.css("transition",M.animationDuration+"s linear all"),f.push("transition")),t.css(a));var E=Math.max(M.transitionDelay,M.animationDelay),I=E*z;if(f.length>0){var N=l.getAttribute("style")||"";";"!==N.charAt(N.length-1)&&(N+=";"),l.setAttribute("style",N+" "+g)}var U,O=Date.now(),L=D+" "+T,R=(E+x)*H,B=(b+R)*z;return b>0&&(t.addClass(m),U=s(function(){U=null,M.transitionDuration>0&&$(l,!1),M.animationDuration>0&&k(l,!1),t.addClass(p),t.removeClass(m),a&&(0===M.transitionDuration&&t.css("transition",M.animationDuration+"s linear all"),t.css(a),f.push("transition"))},b*z,!1)),t.on(L,c),u.closeAnimationFns.push(function(){r(),i()}),u.running++,h(t,B),r}function $(e,t){e.style[E+O]=t?"none":""}function k(e,t){e.style[I+B]=t?"paused":""}function S(e,t,n,i){return b(e,t,n,i)?function(e){e&&A(t,n)}:void 0}function C(e,t,n,i,a){return t.data(q)?w(e,t,n,i,a):(A(t,n),void i())}function M(e,t,n,i,a){var o=S(e,t,n,a.from);if(!o)return c(),void i();var s=o;return u(t,function(){s=C(e,t,n,i,a.to)}),function(e){(s||l)(e)}}function A(e,t){e.removeClass(t);var n=e.data(q);n&&(n.running&&n.running--,n.running&&0!==n.running||e.removeData(q))}function x(e,t){var n="";
return e=p(e)?e:e.split(/\s+/),d(e,function(e,i){e&&e.length>0&&(n+=(i>0?" ":"")+e+t)}),n}var E,T,I,D,P="";e.ontransitionend===n&&e.onwebkittransitionend!==n?(P="-webkit-",E="WebkitTransition",T="webkitTransitionEnd transitionend"):(E="transition",T="transitionend"),e.onanimationend===n&&e.onwebkitanimationend!==n?(P="-webkit-",I="WebkitAnimation",D="webkitAnimationEnd animationend"):(I="animation",D="animationend");var N,U="Duration",O="Property",L="Delay",R="IterationCount",B="PlayState",F="$$ngAnimateKey",q="$$ngAnimateCSS3Data",j=3,H=1.5,z=1e3,V={},W=0,G=[],K=null,Y=0,Z=[];return{animate:function(e,t,n,i,a,o){return o=o||{},o.from=n,o.to=i,M("animate",e,t,a,o)},enter:function(e,t,n){return n=n||{},M("enter",e,"ng-enter",t,n)},leave:function(e,t,n){return n=n||{},M("leave",e,"ng-leave",t,n)},move:function(e,t,n){return n=n||{},M("move",e,"ng-move",t,n)},beforeSetClass:function(e,t,n,i,a){a=a||{};var o=x(n,"-remove")+" "+x(t,"-add"),s=S("setClass",e,o,a.from);return s?(u(e,i),s):(c(),void i())},beforeAddClass:function(e,t,n,i){i=i||{};var a=S("addClass",e,x(t,"-add"),i.from);return a?(u(e,n),a):(c(),void n())},beforeRemoveClass:function(e,t,n,i){i=i||{};var a=S("removeClass",e,x(t,"-remove"),i.from);return a?(u(e,n),a):(c(),void n())},setClass:function(e,t,n,i,a){a=a||{},n=x(n,"-remove"),t=x(t,"-add");var o=n+" "+t;return C("setClass",e,o,i,a.to)},addClass:function(e,t,n,i){return i=i||{},C("addClass",e,x(t,"-add"),n,i.to)},removeClass:function(e,t,n,i){return i=i||{},C("removeClass",e,x(t,"-remove"),n,i.to)}}}])}])}(window,window.angular),function(e,t){"use strict";function n(){this.$get=["$$sanitizeUri",function(e){return function(t){var n=[];return o(t,c(n,function(t,n){return!/^unsafe/.test(e(t,n))})),n.join("")}}]}function i(e){var n=[],i=c(n,t.noop);return i.chars(e),n.join("")}function a(e){var t,n={},i=e.split(",");for(t=0;t<i.length;t++)n[i[t]]=!0;return n}function o(e,n){function i(e,i,o,r){if(i=t.lowercase(i),S[i])for(;y.last()&&C[y.last()];)a("",y.last());k[i]&&y.last()==i&&a("",i),r=b[i]||!!r,r||y.push(i);var c={};o.replace(p,function(e,t,n,i,a){var o=n||i||a||"";c[t]=s(o)}),n.start&&n.start(i,c,r)}function a(e,i){var a,o=0;if(i=t.lowercase(i))for(o=y.length-1;o>=0&&y[o]!=i;o--);if(o>=0){for(a=y.length-1;a>=o;a--)n.end&&n.end(y[a]);y.length=o}}"string"!=typeof e&&(e=null===e||"undefined"==typeof e?"":""+e);var o,r,c,v,y=[],w=e;for(y.last=function(){return y[y.length-1]};e;){if(v="",r=!0,y.last()&&A[y.last()]?(e=e.replace(new RegExp("(.*)<\\s*\\/\\s*"+y.last()+"[^>]*>","i"),function(e,t){return t=t.replace(g,"$1").replace(_,"$1"),n.chars&&n.chars(s(t)),""}),a("",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)?(c=e.match(f),c&&(e=e.replace(c[0],""),r=!1)):h.test(e)?(c=e.match(u),c&&(e=e.substring(c[0].length),c[0].replace(u,a),r=!1)):m.test(e)&&(c=e.match(d),c?(c[4]&&(e=e.substring(c[0].length),c[0].replace(d,i)),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 l("badparse","The sanitizer was unable to parse the following block of html: {0}",e);w=e}a()}function s(e){if(!e)return"";var t=N.exec(e),n=t[1],i=t[3],a=t[2];return a&&(P.innerHTML=a.replace(/</g,"&lt;"),a="textContent"in P?P.textContent:P.innerText),n+a+i}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 c(e,n){var i=!1,a=t.bind(e,e.push);return{start:function(e,o,s){e=t.lowercase(e),!i&&A[e]&&(i=e),i||x[e]!==!0||(a("<"),a(e),t.forEach(o,function(i,o){var s=t.lowercase(o),c="img"===e&&"src"===s||"background"===s;D[s]!==!0||E[s]===!0&&!n(i,c)||(a(" "),a(o),a('="'),a(r(i)),a('"'))}),a(s?"/>":">"))},end:function(e){e=t.lowercase(e),i||x[e]!==!0||(a("</"),a(e),a(">")),e==i&&(i=!1)},chars:function(e){i||a(r(e))}}}var l=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=/^</,h=/^<\//,g=/<!--(.*?)-->/g,f=/<!DOCTYPE([^>]*?)>/i,_=/<!\[CDATA\[(.*?)]]>/g,v=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,y=/([^\#-~| |!])/g,b=a("area,br,col,hr,img,wbr"),w=a("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),$=a("rp,rt"),k=t.extend({},$,w),S=t.extend({},w,a("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")),C=t.extend({},$,a("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=a("animate,animateColor,animateMotion,animateTransform,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,set,stop,svg,switch,text,title,tspan,use"),A=a("script,style"),x=t.extend({},b,S,C,k,M),E=a("background,cite,href,longdesc,src,usemap,xlink:href"),T=a("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,target,title,type,valign,value,vspace,width"),I=a("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,attributeName,attributeType,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"),D=t.extend({},E,I,T),P=document.createElement("pre"),N=/^(\s*)([\s\S]*?)(\s*)$/;t.module("ngSanitize",[]).provider("$sanitize",n),t.module("ngSanitize").filter("linky",["$sanitize",function(e){var n=/((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"]/,a=/^mailto:/;return function(o,s){function r(e){e&&m.push(i(e))}function c(e,n){m.push("<a "),t.isDefined(s)&&(m.push('target="'),m.push(s),m.push('" ')),m.push('href="'),m.push(e),m.push('">'),r(n),m.push("</a>")}if(!o)return o;for(var l,d,u,p=o,m=[];l=p.match(n);)d=l[0],l[2]==l[3]&&(d="mailto:"+d),u=l.index,r(p.substr(0,u)),c(d,l[0].replace(a,"")),p=p.substring(u+l[0].length);return r(p),e(m.join(""))}}])}(window,window.angular),function(e,t){"use strict";function n(e,n,a){i.directive(e,["$parse","$swipe",function(i,o){var s=75,r=.3,c=30;return function(l,d,u){function p(e){if(!m)return!1;var t=Math.abs(e.y-m.y),i=(e.x-m.x)*n;return h&&s>t&&i>0&&i>c&&r>t/i}var m,h,g=i(u[e]),f=["touch"];t.isDefined(u.ngSwipeDisableMouse)||f.push("mouse"),o.bind(d,{start:function(e){m=e,h=!0},cancel:function(){h=!1},end:function(e,t){p(e)&&l.$apply(function(){d.triggerHandler(a),g(l,{$event:t})})}},f)}}])}var i=t.module("ngTouch",[]);i.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 i=[];return t.forEach(e,function(e){var t=a[e][n];t&&i.push(t)}),i.join(" ")}var i=10,a={mouse:{start:"mousedown",move:"mousemove",end:"mouseup"},touch:{start:"touchstart",move:"touchmove",end:"touchend",cancel:"touchcancel"}};return{bind:function(t,a,o){var s,r,c,l,d=!1;o=o||["mouse","touch"],t.on(n(o,"start"),function(t){c=e(t),d=!0,s=0,r=0,l=c,a.start&&a.start(c,t)});var u=n(o,"cancel");u&&t.on(u,function(e){d=!1,a.cancel&&a.cancel(e)}),t.on(n(o,"move"),function(t){if(d&&c){var n=e(t);if(s+=Math.abs(n.x-l.x),r+=Math.abs(n.y-l.y),l=n,!(i>s&&i>r))return r>s?(d=!1,void(a.cancel&&a.cancel(t))):(t.preventDefault(),void(a.move&&a.move(n,t)))}}),t.on(n(o,"end"),function(t){d&&(d=!1,a.end&&a.end(e(t),t))})}}}]),i.config(["$provide",function(e){e.decorator("ngClickDirective",["$delegate",function(e){return e.shift(),e}])}]),i.directive("ngClick",["$parse","$timeout","$rootElement",function(e,n,i){function a(e,t,n,i){return Math.abs(e-n)<g&&Math.abs(t-i)<g}function o(e,t,n){for(var i=0;i<e.length;i+=2)if(a(e[i],e[i+1],t,n))return e.splice(i,i+2),!0;return!1}function s(e){if(!(Date.now()-l>h)){var t=e.touches&&e.touches.length?e.touches:[e],n=t[0].clientX,i=t[0].clientY;1>n&&1>i||u&&u[0]===n&&u[1]===i||(u&&(u=null),"label"===e.target.tagName.toLowerCase()&&(u=[n,i]),o(d,n,i)||(e.stopPropagation(),e.preventDefault(),e.target&&e.target.blur()))}}function r(e){var t=e.touches&&e.touches.length?e.touches:[e],i=t[0].clientX,a=t[0].clientY;d.push(i,a),n(function(){for(var e=0;e<d.length;e+=2)if(d[e]==i&&d[e+1]==a)return void d.splice(e,e+2)},h,!1)}function c(e,t){d||(i[0].addEventListener("click",s,!0),i[0].addEventListener("touchstart",r,!0),d=[]),l=Date.now(),o(d,e,t)}var l,d,u,p=750,m=12,h=2500,g=25,f="ng-click-active";return function(n,i,a){function o(){h=!1,i.removeClass(f)}var s,r,l,d,u=e(a.ngClick),h=!1;i.on("touchstart",function(e){h=!0,s=e.target?e.target:e.srcElement,3==s.nodeType&&(s=s.parentNode),i.addClass(f),r=Date.now();var t=e.touches&&e.touches.length?e.touches:[e],n=t[0].originalEvent||t[0];l=n.clientX,d=n.clientY}),i.on("touchmove",function(){o()}),i.on("touchcancel",function(){o()}),i.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],g=u[0].originalEvent||u[0],f=g.clientX,_=g.clientY,v=Math.sqrt(Math.pow(f-l,2)+Math.pow(_-d,2));h&&p>n&&m>v&&(c(f,_),s&&s.blur(),t.isDefined(a.disabled)&&a.disabled!==!1||i.triggerHandler("click",[e])),o()}),i.onclick=function(){},i.on("click",function(e,t){n.$apply(function(){u(n,{$event:t||e})})}),i.on("mousedown",function(){i.addClass(f)}),i.on("mousemove mouseup",function(){i.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(a){t||(e.bind("click",n),e.bind("keydown",i)),t&&t!==a&&(t.isOpen=!1),t=a},this.close=function(a){t===a&&(t=null,e.unbind("click",n),e.unbind("keydown",i))};var n=function(e){if(t){var n=t.getToggleElement();e&&n&&n[0].contains(e.target)||t.$apply(function(){t.isOpen=!1})}},i=function(e){27===e.which&&(t.focusToggleElement(),n())}}]).controller("DropdownController",["$scope","$attrs","$parse","dropdownConfig","dropdownService","$animate",function(e,t,n,i,a,o){var s,r=this,c=e.$new(),l=i.openClass,d=angular.noop,u=t.onToggle?n(t.onToggle):angular.noop;this.init=function(i){r.$element=i,t.isOpen&&(s=n(t.isOpen),d=s.assign,e.$watch(s,function(e){c.isOpen=!!e}))},this.toggle=function(e){return c.isOpen=arguments.length?!!e:!c.isOpen},this.isOpen=function(){return c.isOpen},c.getToggleElement=function(){return r.toggleElement},c.focusToggleElement=function(){r.toggleElement&&r.toggleElement[0].focus()},c.$watch("isOpen",function(t,n){o[t?"addClass":"removeClass"](r.$element,l),t?(c.focusToggleElement(),a.open(c)):a.close(c),d(e,t),angular.isDefined(t)&&t!==n&&u(e,{open:!!t})}),e.$on("$locationChangeSuccess",function(){c.isOpen=!1}),e.$on("$destroy",function(){c.$destroy()})}]).directive("dropdown",function(){return{controller:"DropdownController",link:function(e,t,n,i){i.init(t)}}}).directive("dropdownToggle",function(){return{require:"?^dropdown",link:function(e,t,n,i){if(i){i.toggleElement=t;var a=function(a){a.preventDefault(),t.hasClass("disabled")||n.disabled||e.$apply(function(){i.toggle()})};t.bind("click",a),t.attr({"aria-haspopup":!0,"aria-expanded":!1}),e.$watch(i.isOpen,function(e){t.attr("aria-expanded",!!e)}),e.$on("$destroy",function(){t.unbind("click",a)})}}}}),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"},i={};this.options=function(e){angular.extend(i,e)},this.setTriggers=function(e){angular.extend(n,e)},this.$get=["$window","$compile","$timeout","$document","$position","$interpolate",function(a,o,s,r,c,l){return function(a,d,u){function p(e){var t=e||m.trigger||u,i=n[t]||t;return{show:t,hide:i}}var m=angular.extend({},t,i),h=e(a),g=l.startSymbol(),f=l.endSymbol(),_="<div "+h+'-popup title="'+g+"title"+f+'" content="'+g+"content"+f+'" placement="'+g+"placement"+f+'" animation="animation" is-open="isOpen"></div>';return{restrict:"EA",compile:function(){var e=o(_);return function(t,n,i){function o(){E.isOpen?u():l()}function l(){(!x||t.$eval(i[d+"Enable"]))&&(v(),E.popupDelay?C||(C=s(h,E.popupDelay,!1),C.then(function(e){e()})):h()())}function u(){t.$apply(function(){g()})}function h(){return C=null,S&&(s.cancel(S),S=null),E.content?(f(),$.css({top:0,left:0,display:"block"}),M?r.find("body").append($):n.after($),T(),E.isOpen=!0,E.$digest(),T):angular.noop}function g(){E.isOpen=!1,s.cancel(C),C=null,E.animation?S||(S=s(_,500)):_()}function f(){$&&_(),k=E.$new(),$=e(k,angular.noop)}function _(){S=null,$&&($.remove(),$=null),k&&(k.$destroy(),k=null)}function v(){y(),b()}function y(){var e=i[d+"Placement"];E.placement=angular.isDefined(e)?e:m.placement}function b(){var e=i[d+"PopupDelay"],t=parseInt(e,10);E.popupDelay=isNaN(t)?m.popupDelay:t}function w(){var e=i[d+"Trigger"];I(),A=p(e),A.show===A.hide?n.bind(A.show,o):(n.bind(A.show,l),n.bind(A.hide,u))}var $,k,S,C,M=angular.isDefined(m.appendToBody)?m.appendToBody:!1,A=p(void 0),x=angular.isDefined(i[d+"Enable"]),E=t.$new(!0),T=function(){var e=c.positionElements(n,$,E.placement,M);e.top+="px",e.left+="px",$.css(e)};E.isOpen=!1,i.$observe(a,function(e){E.content=e,!e&&E.isOpen&&g()}),i.$observe(d+"Title",function(e){E.title=e});var I=function(){n.unbind(A.show,l),n.unbind(A.hide,u)};w();var D=t.$eval(i[d+"Animation"]);E.animation=angular.isDefined(D)?!!D:m.animation;var P=t.$eval(i[d+"AppendToBody"]);M=angular.isDefined(P)?P:M,M&&t.$on("$locationChangeSuccess",function(){E.isOpen&&g()}),t.$on("$destroy",function(){s.cancel(S),s.cancel(C),I(),_(),E=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 i(e){return"static"===(n(e,"position")||"static")}var a=function(t){for(var n=e[0],a=t.offsetParent||n;a&&a!==n&&i(a);)a=a.offsetParent;return a||n};return{position:function(t){var n=this.offset(t),i={top:0,left:0},o=a(t[0]);o!=e[0]&&(i=this.offset(angular.element(o)),i.top+=o.clientTop-o.scrollTop,i.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-i.top,left:n.left-i.left}},offset:function(n){var i=n[0].getBoundingClientRect();return{width:i.width||n.prop("offsetWidth"),height:i.height||n.prop("offsetHeight"),top:i.top+(t.pageYOffset||e[0].documentElement.scrollTop),left:i.left+(t.pageXOffset||e[0].documentElement.scrollLeft)}},positionElements:function(e,t,n,i){var a,o,s,r,c=n.split("-"),l=c[0],d=c[1]||"center";a=i?this.offset(e):this.position(e),o=t.prop("offsetWidth"),s=t.prop("offsetHeight");var u={center:function(){return a.left+a.width/2-o/2},left:function(){return a.left},right:function(){return a.left+a.width}},p={center:function(){return a.top+a.height/2-s/2},top:function(){return a.top},bottom:function(){return a.top+a.height}};switch(l){case"right":r={top:p[d](),left:u[l]()};break;case"left":r={top:p[d](),left:a.left-o};break;case"bottom":r={top:p[l](),left:u[d]()};break;default:r={top:a.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,i=0;i<e.length;i++)if(t==e[i].key){n=i;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,i){t.backdropClass=i.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,i,a){i.addClass(a.windowClass||""),n.size=a.size,t(function(){n.animate=!0,i[0].querySelectorAll("[autofocus]").length||i[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,i,a){a(e.$parent,function(e){t.empty(),t.append(e)})}}}).factory("$modalStack",["$transition","$timeout","$document","$compile","$rootScope","$$stackedMap",function(e,t,n,i,a,o){function s(){for(var e=-1,t=m.keys(),n=0;n<t.length;n++)m.get(t[n]).value.backdrop&&(e=n);return e}function r(e){var t=n.find("body").eq(0),i=m.get(e).value;m.remove(e),l(i.modalDomEl,i.modalScope,0,function(){i.modalScope.$destroy(),t.toggleClass(p,m.length()>0),c()})}function c(){if(d&&-1==s()){var e=u;l(d,u,0,function(){e.$destroy(),e=null}),d=void 0,u=void 0}}function l(n,i,a,o){function s(){s.done||(s.done=!0,n.remove(),o&&o())}i.animate=!1;var r=e.transitionEndEventName;if(r){var c=t(s,a);n.bind(r,function(){t.cancel(c),s(),i.$apply()})}else t(s)}var d,u,p="modal-open",m=o.createNew(),h={};return a.$watch(s,function(e){u&&(u.index=e)}),n.bind("keydown",function(e){var t;27===e.which&&(t=m.top(),t&&t.value.keyboard&&(e.preventDefault(),a.$apply(function(){h.dismiss(t.key,"escape key press")})))}),h.open=function(e,t){m.add(e,{deferred:t.deferred,modalScope:t.scope,backdrop:t.backdrop,keyboard:t.keyboard});var o=n.find("body").eq(0),r=s();if(r>=0&&!d){u=a.$new(!0),u.index=r;var c=angular.element("<div modal-backdrop></div>");c.attr("backdrop-class",t.backdropClass),d=i(c)(u),o.append(d)}var l=angular.element("<div modal-window></div>");l.attr({"template-url":t.windowTemplateUrl,"window-class":t.windowClass,size:t.size,index:m.length()-1,animate:"animate"}).html(t.content);var h=i(l)(t.scope);m.top().value.modalDomEl=h,o.append(h),o.addClass(p)},h.close=function(e,t){var n=m.get(e);n&&(n.value.deferred.resolve(t),r(e))},h.dismiss=function(e,t){var n=m.get(e);n&&(n.value.deferred.reject(t),r(e))},h.dismissAll=function(e){for(var t=this.getTop();t;)this.dismiss(t.key,e),t=this.getTop()},h.getTop=function(){return m.top()},h}]).provider("$modal",function(){var e={options:{backdrop:!0,keyboard:!0},$get:["$injector","$rootScope","$q","$http","$templateCache","$controller","$modalStack",function(t,n,i,a,o,s,r){function c(e){return e.template?i.when(e.template):a.get(angular.isFunction(e.templateUrl)?e.templateUrl():e.templateUrl,{cache:o}).then(function(e){return e.data})}function l(e){var n=[];return angular.forEach(e,function(e){(angular.isFunction(e)||angular.isArray(e))&&n.push(i.when(t.invoke(e)))}),n}var d={};return d.open=function(t){var a=i.defer(),o=i.defer(),d={result:a.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=i.all([c(t)].concat(l(t.resolve)));return u.then(function(e){var i=(t.scope||n).$new();i.$close=d.close,i.$dismiss=d.dismiss;var o,c={},l=1;t.controller&&(c.$scope=i,c.$modalInstance=d,angular.forEach(t.resolve,function(t,n){c[n]=e[l++]}),o=s(t.controller,c),t.controllerAs&&(i[t.controllerAs]=o)),r.open(d,{scope:i,deferred:a,content:e[0],backdrop:t.backdrop,keyboard:t.keyboard,backdropClass:t.backdropClass,windowClass:t.windowClass,windowTemplateUrl:t.windowTemplateUrl,size:t.size})},function(e){a.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 i(e){for(var t in e)if(void 0!==o.style[t])return e[t]}var a=function(i,o,s){s=s||{};var r=e.defer(),c=a[s.animation?"animationEndEventName":"transitionEndEventName"],l=function(){n.$apply(function(){i.unbind(c,l),r.resolve(i)})};return c&&i.bind(c,l),t(function(){angular.isString(o)?i.addClass(o):angular.isFunction(o)?o(i):angular.isObject(o)&&i.css(o),c||r.resolve(i)}),r.promise.cancel=function(){c&&i.unbind(c,l),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 a.transitionEndEventName=i(s),a.animationEndEventName=i(r),a}]),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: \'block\'}" ng-click="close($event)">\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,i,a){function o(e){return function(t,i){var a,o=null;if(e.$attachPlaylist(t),void 0===t&&void 0!==i)return e.pause();if(e.currentTrack){a=i?i[e.currentTrack-1]:-1;for(var s=0;s<t.length;s++)if(angular.equals(t[s],a)){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,a),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 i=e||t.playing;t.pause(),n(function(){t.$clearSourceList(),t.$addSourceList(t.$playlist[t.currentTrack]),t.load(i),t.currentTrack++})}},prev:function(e){var t=this;if(t.currentTrack&&t.currentTrack-1){var i=e||t.playing;t.pause(),n(function(){t.$clearSourceList(),t.$addSourceList(t.$playlist[t.currentTrack-2]),t.load(i),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,i=parseInt(e/60,10)%60,a=parseInt(e%60,10),o=(10>i?"0"+i:i)+":"+(10>a?"0"+a:a);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 a={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:i(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(a,function(e,t){n.on(t,e)})},c=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},a,s);return r(n,t[0],t),n};return{scope:!1,link:function(e,t,n){var i=n.playlist,a=n.mediaPlayer||n.playerControl,s=new c(t),r=e[i];if(r=void 0===i?[]:void 0===e[i]?e[i]=[]:e[i],void 0!==a&&e.$eval(a+" = 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 l=[],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){l.push({src:e.src,type:e.type,media:e.media})}),r.unshift(l)),void 0===i?s.$attachPlaylist(r):r.length?(o(s)(r,void 0,e),e.$watch(i,o(s),!0)):e.$watch(i,o(s),!0)}}}]),angular.module("mediaPlayer.helpers",[]).factory("mp.throttle",["$timeout",function(e){return function(t,n,i,a){var o,s=0;"boolean"!=typeof n&&(a=i,i=n,n=void 0);var r=function(){var r=this,c=+new Date-s,l=arguments,d=function(){s=+new Date,i.apply(r,l)},u=function(){o=void 0};a&&!o&&d(),o&&e.cancel(o),void 0===a&&c>t?d():n!==!0&&(o=e(a?u:d,void 0===a?t-c: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={},i=n.lib={},a=i.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=i.WordArray=a.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,i=this.sigBytes,a=e.sigBytes;if(this.clamp(),i%4)for(var o=0;a>o;o++){var s=n[o>>>2]>>>24-o%4*8&255;t[i+o>>>2]|=s<<24-(i+o)%4*8}else if(n.length>65535)for(var o=0;a>o;o+=4)t[i+o>>>2]=n[o>>>2];else for(var o=0;o<n.length;o++)t.push(n[o]);return this.sigBytes+=a,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=a.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n=[],i=0;t>i;i+=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,i=[],a=0;n>a;a++){var o=t[a>>>2]>>>24-a%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,n=[],i=0;t>i;i+=2)n[i>>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new o.init(n,t/2)}},c=s.Latin1={stringify:function(e){for(var t=e.words,n=e.sigBytes,i=[],a=0;n>a;a++){var o=t[a>>>2]>>>24-a%4*8&255;i.push(String.fromCharCode(o))}return i.join("")},parse:function(e){for(var t=e.length,n=[],i=0;t>i;i++)n[i>>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new o.init(n,t)}},l=s.Utf8={stringify:function(e){try{return decodeURIComponent(escape(c.stringify(e)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:function(e){return c.parse(unescape(encodeURIComponent(e)))}},d=i.BufferedBlockAlgorithm=a.extend({reset:function(){this._data=new o.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=l.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,i=n.words,a=n.sigBytes,s=this.blockSize,r=4*s,c=a/r;c=t?e.ceil(c):e.max((0|c)-this._minBufferSize,0);var l=c*s,d=e.min(4*l,a);if(l){for(var u=0;l>u;u+=s)this._doProcessBlock(i,u);var p=i.splice(0,l);n.sigBytes-=d}return new o.init(p,d)},clone:function(){var e=a.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0}),u=(i.Hasher=d.extend({cfg:a.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,i=n.Base,a=n.WordArray,o=n.BufferedBlockAlgorithm,s=t.enc,r=(s.Utf8,s.Base64),c=t.algo,l=c.EvpKDF,d=n.Cipher=o.extend({cfg:i.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?$:y}return function(t){return{encrypt:function(n,i,a){return e(i).encrypt(t,n,i,a)},decrypt:function(n,i,a){return e(i).decrypt(t,n,i,a)}}}}()}),u=(n.StreamCipher=d.extend({_doFinalize:function(){var e=this._process(!0);return e},blockSize:1}),t.mode={}),p=n.BlockCipherMode=i.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,i){var a=this._iv;if(a){var o=a;this._iv=e}else var o=this._prevBlock;for(var s=0;i>s;s++)t[n+s]^=o[s]}var n=p.extend();return n.Encryptor=n.extend({processBlock:function(e,n){var i=this._cipher,a=i.blockSize;t.call(this,e,n,a),i.encryptBlock(e,n),this._prevBlock=e.slice(n,n+a)}}),n.Decryptor=n.extend({processBlock:function(e,n){var i=this._cipher,a=i.blockSize,o=e.slice(n,n+a);i.decryptBlock(e,n),t.call(this,e,n,a),this._prevBlock=o}}),n}(),h=(u.IGE=function(){function t(e,t,n,i){for(var a=0;i>a;a++)e[n+a]^=t[a]}var n=p.extend();return n.Encryptor=n.extend({processBlock:function(n,i){var a=this._cipher,o=a.blockSize;this._ivp===e&&(this._ivp=this._iv.slice(0,o),this._iv2p=this._iv.slice(o,o+o));var s=n.slice(i,i+o);t(n,this._ivp,i,o),a.encryptBlock(n,i),t(n,this._iv2p,i,o),this._ivp=n.slice(i,i+o),this._iv2p=s}}),n.Decryptor=n.extend({processBlock:function(n,i){var a=this._cipher,o=a.blockSize;this._ivp===e&&(this._ivp=this._iv.slice(0,o),this._iv2p=this._iv.slice(o,2*o));var s=n.slice(i,i+o);t(n,this._iv2p,i,o),a.decryptBlock(n,i),t(n,this._ivp,i,o),this._ivp=s,this._iv2p=n.slice(i,i+o)}}),n}(),t.pad={}),g=h.Pkcs7={pad:function(e,t){for(var n=4*t,i=n-e.sigBytes%n,o=i<<24|i<<16|i<<8|i,s=[],r=0;i>r;r+=4)s.push(o);var c=a.create(s,i);e.concat(c)},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},f=(h.NoPadding={pad:function(){},unpad:function(){}},n.BlockCipher=d.extend({cfg:d.cfg.extend({mode:m,padding:g}),reset:function(){d.reset.call(this);var e=this.cfg,t=e.iv,n=e.mode;if(this._xformMode==this._ENC_XFORM_MODE)var i=n.createEncryptor;else{var i=n.createDecryptor;this._minBufferSize=1}this._mode=i.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=i.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 i=a.create([1398893684,1701076831]).concat(n).concat(t);else var i=t;return i.toString(r)},parse:function(e){var t=r.parse(e),n=t.words;if(1398893684==n[0]&&1701076831==n[1]){var i=a.create(n.slice(2,4));n.splice(0,4),t.sigBytes-=16}return f.create({ciphertext:t,salt:i})}},y=n.SerializableCipher=i.extend({cfg:i.extend({format:v}),encrypt:function(e,t,n,i){i=this.cfg.extend(i);var a=e.createEncryptor(n,i),o=a.finalize(t),s=a.cfg;return f.create({ciphertext:o,key:n,iv:s.iv,algorithm:e,mode:s.mode,padding:s.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,n,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var a=e.createDecryptor(n,i).finalize(t.ciphertext);return a},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),b=t.kdf={},w=b.OpenSSL={execute:function(e,t,n,i){i||(i=a.random(8));var o=l.create({keySize:t+n}).compute(e,i),s=a.create(o.words.slice(t),4*n);return o.sigBytes=4*t,f.create({key:o,iv:s,salt:i})}},$=n.PasswordBasedCipher=y.extend({cfg:y.cfg.extend({kdf:w}),encrypt:function(e,t,n,i){i=this.cfg.extend(i);var a=i.kdf.execute(n,e.keySize,e.ivSize);i.iv=a.iv;var o=y.encrypt.call(this,e,t,a.key,i);return o.mixIn(a),o},decrypt:function(e,t,n,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var a=i.kdf.execute(n,e.keySize,e.ivSize,t.salt);i.iv=a.iv;var o=y.decrypt.call(this,e,t,a.key,i);return o}})}(),function(){var e=CryptoJS,t=e.lib,n=t.BlockCipher,i=e.algo,a=[],o=[],s=[],r=[],c=[],l=[],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,i=0,t=0;256>t;t++){var h=i^i<<1^i<<2^i<<3^i<<4;h=h>>>8^255&h^99,a[n]=h,o[h]=n;var g=e[n],f=e[g],_=e[f],v=257*e[h]^16843008*h;s[n]=v<<24|v>>>8,r[n]=v<<16|v>>>16,c[n]=v<<8|v>>>24,l[n]=v;var v=16843009*_^65537*f^257*g^16843008*n;d[h]=v<<24|v>>>8,u[h]=v<<16|v>>>16,p[h]=v<<8|v>>>24,m[h]=v,n?(n=g^e[e[e[_^g]]],i^=e[e[i]]):n=i=1}}();var h=[0,1,2,4,8,16,32,64,128,27,54],g=i.AES=n.extend({_doReset:function(){for(var e=this._key,t=e.words,n=e.sigBytes/4,i=this._nRounds=n+6,o=4*(i+1),s=this._keySchedule=[],r=0;o>r;r++)if(n>r)s[r]=t[r];else{var c=s[r-1];r%n?n>6&&r%n==4&&(c=a[c>>>24]<<24|a[c>>>16&255]<<16|a[c>>>8&255]<<8|a[255&c]):(c=c<<8|c>>>24,c=a[c>>>24]<<24|a[c>>>16&255]<<16|a[c>>>8&255]<<8|a[255&c],c^=h[r/n|0]<<24),s[r]=s[r-n]^c}for(var l=this._invKeySchedule=[],g=0;o>g;g++){var r=o-g;if(g%4)var c=s[r];else var c=s[r-4];l[g]=4>g||4>=r?c:d[a[c>>>24]]^u[a[c>>>16&255]]^p[a[c>>>8&255]]^m[a[255&c]]}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,s,r,c,l,a)},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,i,a,o,s,r){for(var c=this._nRounds,l=e[t]^n[0],d=e[t+1]^n[1],u=e[t+2]^n[2],p=e[t+3]^n[3],m=4,h=1;c>h;h++){var g=i[l>>>24]^a[d>>>16&255]^o[u>>>8&255]^s[255&p]^n[m++],f=i[d>>>24]^a[u>>>16&255]^o[p>>>8&255]^s[255&l]^n[m++],_=i[u>>>24]^a[p>>>16&255]^o[l>>>8&255]^s[255&d]^n[m++],v=i[p>>>24]^a[l>>>16&255]^o[d>>>8&255]^s[255&u]^n[m++];l=g,d=f,u=_,p=v}var g=(r[l>>>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&l])^n[m++],_=(r[u>>>24]<<24|r[p>>>16&255]<<16|r[l>>>8&255]<<8|r[255&d])^n[m++],v=(r[p>>>24]<<24|r[l>>>16&255]<<16|r[d>>>8&255]<<8|r[255&u])^n[m++];e[t]=g,e[t+1]=f,e[t+2]=_,e[t+3]=v},keySize:8});e.AES=n._createHelper(g)}(),function(e){var t=CryptoJS,n=t.lib,i=n.WordArray,a=n.Hasher,o=t.algo,s=[],r=[];!function(){function t(t){for(var n=e.sqrt(t),i=2;n>=i;i++)if(!(t%i))return!1;return!0}function n(e){return 4294967296*(e-(0|e))|0}for(var i=2,a=0;64>a;)t(i)&&(8>a&&(s[a]=n(e.pow(i,.5))),r[a]=n(e.pow(i,1/3)),a++),i++}();var c=[],l=o.SHA256=a.extend({_doReset:function(){this._hash=new i.init(s.slice(0))},_doProcessBlock:function(e,t){for(var n=this._hash.words,i=n[0],a=n[1],o=n[2],s=n[3],l=n[4],d=n[5],u=n[6],p=n[7],m=0;64>m;m++){if(16>m)c[m]=0|e[t+m];else{var h=c[m-15],g=(h<<25|h>>>7)^(h<<14|h>>>18)^h>>>3,f=c[m-2],_=(f<<15|f>>>17)^(f<<13|f>>>19)^f>>>10;c[m]=g+c[m-7]+_+c[m-16]}var v=l&d^~l&u,y=i&a^i&o^a&o,b=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),w=(l<<26|l>>>6)^(l<<21|l>>>11)^(l<<7|l>>>25),$=p+w+v+r[m]+c[m],k=b+y;p=u,u=d,d=l,l=s+$|0,s=o,o=a,a=i,i=$+k|0}n[0]=n[0]+i|0,n[1]=n[1]+a|0,n[2]=n[2]+o|0,n[3]=n[3]+s|0,n[4]=n[4]+l|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,i=8*this._nDataBytes,a=8*t.sigBytes;return n[a>>>5]|=128<<24-a%32,n[(a+64>>>9<<4)+14]=e.floor(i/4294967296),n[(a+64>>>9<<4)+15]=i,t.sigBytes=4*n.length,this._process(),this._hash},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=a._createHelper(l),t.HmacSHA256=a._createHmacHelper(l)}(Math),function(e){function t(e){"use strict";var t={fill:0},i=function(e){for(e+=9;e%64>0;e+=1);return e},a=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,i,a){var o,s=this,r=a%4,c=i%4,l=i-c;if(l>0)switch(r){case 0:e[a+3|0]=s.charCodeAt(n);case 1:e[a+2|0]=s.charCodeAt(n+1);case 2:e[a+1|0]=s.charCodeAt(n+2);case 3:e[0|a]=s.charCodeAt(n+3)}for(o=r;l>o;o=o+4|0)t[a+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(c){case 3:e[a+l+1|0]=s.charCodeAt(n+l+2);case 2:e[a+l+2|0]=s.charCodeAt(n+l+1);case 1:e[a+l+3|0]=s.charCodeAt(n+l)}},c=function(e,t,n,i,a){var o,s=this,r=a%4,c=i%4,l=i-c;if(l>0)switch(r){case 0:e[a+3|0]=s[n];case 1:e[a+2|0]=s[n+1];case 2:e[a+1|0]=s[n+2];case 3:e[0|a]=s[n+3]}for(o=4-r;l>o;o=o+=4)t[a+o>>2]=s[n+o]<<24|s[n+o+1]<<16|s[n+o+2]<<8|s[n+o+3];switch(c){case 3:e[a+l+1|0]=s[n+l+2];case 2:e[a+l+2|0]=s[n+l+1];case 1:e[a+l+3|0]=s[n+l]}},l=function(e){switch(o.getDataType(e)){case"string":return r.bind(e);case"array":return c.bind(e);case"buffer":return c.bind(e);case"arraybuffer":return c.bind(new Uint8Array(e));case"view":return c.bind(new Uint8Array(e.buffer))}},d=function(e){var t,n,i="0123456789abcdef",a=[],o=new Uint8Array(e);for(t=0;t<o.length;t++)n=o[t],a[t]=i.charAt(n>>4&15)+i.charAt(n>>0&15);return a.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=i(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},h=function(e,n){var o=i(e),r=new Int32Array(t.heap,0,o>>2);return a(r,e),s(r,e,n),o},g=function(e,n,i){l(e)(t.h8,t.h32,n,i,0)},f=function(e,n,i,a,o){var s=i;o&&(s=h(i,a)),g(e,n,i),t.core.hash(s,t.padMaxChunkLen)},_=function(e,t){var n=new Int32Array(e,t+320,5),i=new Int32Array(5),a=new DataView(i.buffer);return a.setInt32(0,n[0],!1),a.setInt32(4,n[1],!1),a.setInt32(8,n[2],!1),a.setInt32(12,n[3],!1),a.setInt32(16,n[4],!1),i},v=this.rawDigest=function(e){var n=e.byteLength||e.length;m(t.heap,t.padMaxChunkLen);var i=0,a=t.maxChunkLen;for(i=0;n>i+a;i+=a)f(e,i,a,n,!1);return f(e,i,n-i,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 i(e,t){e|=0,t|=0;var n=0,i=0,o=0,s=0,r=0,c=0,l=0,d=0,u=0,p=0,m=0,h=0,g=0,f=0;for(o=a[t+320>>2]|0,r=a[t+324>>2]|0,l=a[t+328>>2]|0,u=a[t+332>>2]|0,m=a[t+336>>2]|0,n=0;(n|0)<(e|0);n=n+64|0){for(s=o,c=r,d=l,p=u,h=m,i=0;(i|0)<64;i=i+4|0)f=a[n+i>>2]|0,g=((o<<5|o>>>27)+(r&l|~r&u)|0)+((f+m|0)+1518500249|0)|0,m=u,u=l,l=r<<30|r>>>2,r=o,o=g,a[e+i>>2]=f;for(i=e+64|0;(i|0)<(e+80|0);i=i+4|0)f=(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])<<1|(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])>>>31,g=((o<<5|o>>>27)+(r&l|~r&u)|0)+((f+m|0)+1518500249|0)|0,m=u,u=l,l=r<<30|r>>>2,r=o,o=g,a[i>>2]=f;for(i=e+80|0;(i|0)<(e+160|0);i=i+4|0)f=(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])<<1|(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])>>>31,g=((o<<5|o>>>27)+(r^l^u)|0)+((f+m|0)+1859775393|0)|0,m=u,u=l,l=r<<30|r>>>2,r=o,o=g,a[i>>2]=f;for(i=e+160|0;(i|0)<(e+240|0);i=i+4|0)f=(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])<<1|(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])>>>31,g=((o<<5|o>>>27)+(r&l|r&u|l&u)|0)+((f+m|0)-1894007588|0)|0,m=u,u=l,l=r<<30|r>>>2,r=o,o=g,a[i>>2]=f;for(i=e+240|0;(i|0)<(e+320|0);i=i+4|0)f=(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])<<1|(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])>>>31,g=((o<<5|o>>>27)+(r^l^u)|0)+((f+m|0)-899497514|0)|0,m=u,u=l,l=r<<30|r>>>2,r=o,o=g,a[i>>2]=f;o=o+s|0,r=r+c|0,l=l+d|0,u=u+p|0,m=m+h|0}a[t+320>>2]=o,a[t+324>>2]=r,a[t+328>>2]=l,a[t+332>>2]=u,a[t+336>>2]=m}var a=new e.Int32Array(n);return{hash:i}}if("undefined"!=typeof module&&(module.exports=t),"undefined"!=typeof e&&(e.Rusha=t),"undefined"!=typeof FileReaderSync){var i=new FileReaderSync,a=new t(4194304);self.onmessage=function(e){var t,n=e.data.data;if(n instanceof Blob)try{n=i.readAsBinaryString(n)}catch(o){return void self.postMessage({id:e.data.id,error:o.name})}t=a.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("."),i=u;!(n[0]in i)&&i.execScript&&i.execScript("var "+n[0]);for(var a;n.length&&(a=n.shift());)n.length||t===d?i=i[a]?i[a]:i[a]={}:i[a]=t}function n(e,t,n){var i,a="number"==typeof t?t:t=0,o="number"==typeof n?n:e.length;for(i=-1,a=7&o;a--;++t)i=i>>>8^_[255&(i^e[t])];for(a=o>>3;a--;t+=8)i=i>>>8^_[255&(i^e[t])],i=i>>>8^_[255&(i^e[t+1])],i=i>>>8^_[255&(i^e[t+2])],i=i>>>8^_[255&(i^e[t+3])],i=i>>>8^_[255&(i^e[t+4])],i=i>>>8^_[255&(i^e[t+5])],i=i>>>8^_[255&(i^e[t+6])],i=i>>>8^_[255&(i^e[t+7])];return(4294967295^i)>>>0}function i(){}function a(e){var t,n,i,a,o,s,r,c,l,d=e.length,u=0,m=Number.POSITIVE_INFINITY;for(c=0;d>c;++c)e[c]>u&&(u=e[c]),e[c]<m&&(m=e[c]);for(t=1<<u,n=new(p?Uint32Array:Array)(t),i=1,a=0,o=2;u>=i;){for(c=0;d>c;++c)if(e[c]===i){for(s=0,r=a,l=0;i>l;++l)s=s<<1|1&r,r>>=1;for(l=s;t>l;l+=o)n[l]=i<<16|c;++a}++i,a<<=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=$,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 $: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 i,a=t.f,o=t.d,s=t.input,r=t.c;n>o;)i=s[r++],i===d&&e(Error("input buffer is broken")),a|=i<<o,o+=8;return i=a&(1<<n)-1,t.f=a>>>n,t.d=o-n,t.c=r,i}function r(e,t){for(var n,i,a,o=e.f,s=e.d,r=e.input,c=e.c,l=t[0],u=t[1];u>s&&(n=r[c++],n!==d);)o|=n<<s,s+=8;return i=l[o&(1<<u)-1],a=i>>>16,e.f=o>>a,e.d=s-a,e.c=c,65535&i}function c(e){function t(e,t,n){var i,a,o,c;for(c=0;e>c;)switch(i=r(this,t)){case 16:for(o=3+s(this,2);o--;)n[c++]=a;break;case 17:for(o=3+s(this,3);o--;)n[c++]=0;a=0;break;case 18:for(o=11+s(this,7);o--;)n[c++]=0;a=0;break;default:a=n[c++]=i}return n}var n,i,o,c,l=s(e,5)+257,d=s(e,5)+1,u=s(e,4)+4,m=new(p?Uint8Array:Array)(M.length);for(c=0;u>c;++c)m[M[c]]=s(e,3);n=a(m),i=new(p?Uint8Array:Array)(l),o=new(p?Uint8Array:Array)(d),e.l(a(t.call(e,l,n,i)),a(t.call(e,d,n,o)))}function l(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 h=m,g=7,h=h>>>1;h;h>>>=1)--g;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;i.prototype.getName=function(){return this.name},i.prototype.getData=function(){return this.data},i.prototype.G=function(){return this.H},t("Zlib.GunzipMember",i),t("Zlib.GunzipMember.prototype.getName",i.prototype.getName),t("Zlib.GunzipMember.prototype.getData",i.prototype.getData),t("Zlib.GunzipMember.prototype.getMtime",i.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,i,a=[];for(n=3;258>=n;n++)i=t(n),a[n]=i[2]<<24|i[1]<<16|i[0];return a}();p&&new Uint32Array(b);var w=0,$=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,i=this.c,a=this.b,o=this.a,r=d,l=d,u=d,m=a.length,h=d;switch(this.d=this.f=0,r=n[i++],r===d&&e(Error("invalid uncompressed block header: LEN (first byte)")),l=r,r=n[i++],r===d&&e(Error("invalid uncompressed block header: LEN (second byte)")),l|=r<<8,r=n[i++],r===d&&e(Error("invalid uncompressed block header: NLEN (first byte)")),u=r,r=n[i++],r===d&&e(Error("invalid uncompressed block header: NLEN (second byte)")),u|=r<<8,l===~u&&e(Error("invalid uncompressed block header: length verify")),i+l>n.length&&e(Error("input buffer is broken")),this.k){case w:for(;o+l>a.length;){if(h=m-o,l-=h,p)a.set(n.subarray(i,i+h),o),o+=h,i+=h;else for(;h--;)a[o++]=n[i++];this.a=o,a=this.e(),o=this.a}break;case $:for(;o+l>a.length;)a=this.e({t:2});break;default:e(Error("invalid inflate mode"))}if(p)a.set(n.subarray(i,i+l),o),o+=l,i+=l;else for(;l--;)a[o++]=n[i++];this.c=i,this.a=o,this.b=a;break;case 1:this.l(R,F);break;case 2:c(this);break;default:e(Error("unknown BTYPE: "+t))}}return this.q()};var k,S,C=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],M=p?new Uint16Array(C):C,A=[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],x=p?new Uint16Array(A):A,E=[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],T=p?new Uint8Array(E):E,I=[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(I):I,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],N=p?new Uint8Array(P):P,U=new(p?Uint8Array:Array)(288);for(k=0,S=U.length;S>k;++k)U[k]=143>=k?8:255>=k?9:279>=k?7:8;var O,L,R=a(U),B=new(p?Uint8Array:Array)(30);for(O=0,L=B.length;L>O;++O)B[O]=5;var F=a(B);o.prototype.l=function(e,t){var n=this.b,i=this.a;this.r=e;for(var a,o,c,l,d=n.length-258;256!==(a=r(this,e));)if(256>a)i>=d&&(this.a=i,n=this.e(),i=this.a),n[i++]=a;else for(o=a-257,l=x[o],0<T[o]&&(l+=s(this,T[o])),a=r(this,t),c=D[a],0<N[a]&&(c+=s(this,N[a])),i>=d&&(this.a=i,n=this.e(),i=this.a);l--;)n[i]=n[i++-c];for(;8<=this.d;)this.d-=8,this.c--;this.a=i},o.prototype.C=function(e,t){var n=this.b,i=this.a;this.r=e;for(var a,o,c,l,d=n.length;256!==(a=r(this,e));)if(256>a)i>=d&&(n=this.e(),d=n.length),n[i++]=a;else for(o=a-257,l=x[o],0<T[o]&&(l+=s(this,T[o])),a=r(this,t),c=D[a],0<N[a]&&(c+=s(this,N[a])),i+l>d&&(n=this.e(),d=n.length);l--;)n[i]=n[i++-c];for(;8<=this.d;)this.d-=8,this.c--;this.a=i},o.prototype.e=function(){var e,t,n=new(p?Uint8Array:Array)(this.a-32768),i=this.a-32768,a=this.b;if(p)n.set(a.subarray(32768,n.length));else for(e=0,t=n.length;t>e;++e)n[e]=a[e+32768];if(this.i.push(n),this.n+=n.length,p)a.set(a.subarray(i,i+32768));else for(e=0;32768>e;++e)a[e]=a[i+e];return this.a=32768,a},o.prototype.D=function(e){var t,n,i,a,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],a=258*(n/2)|0,i=a<r.length?r.length+a:r.length<<1):i=r.length*o,p?(t=new Uint8Array(i),t.set(r)):t=r,this.b=t},o.prototype.q=function(){var e,t,n,i,a,o=0,s=this.b,r=this.i,c=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],i=0,a=e.length;a>i;++i)c[o++]=e[i];for(t=32768,n=this.a;n>t;++t)c[o++]=s[t];return this.i=[],this.buffer=c},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},l.prototype.F=function(){return this.s||this.g(),this.m.slice()},l.prototype.g=function(){for(var t=this.input.length;this.c<t;){var a=new i,s=d,r=d,c=d,l=d,u=d,m=d,h=d,g=d,f=d,_=this.input,v=this.c;switch(a.u=_[v++],a.v=_[v++],(31!==a.u||139!==a.v)&&e(Error("invalid file signature:"+a.u+","+a.v)),a.p=_[v++],a.p){case 8:break;
default:e(Error("unknown compression method: "+a.p))}if(a.h=_[v++],g=_[v++]|_[v++]<<8|_[v++]<<16|_[v++]<<24,a.H=new Date(1e3*g),a.N=_[v++],a.M=_[v++],0<(4&a.h)&&(a.I=_[v++]|_[v++]<<8,v+=a.I),0<(8&a.h)){for(h=[],m=0;0<(u=_[v++]);)h[m++]=String.fromCharCode(u);a.name=h.join("")}if(0<(16&a.h)){for(h=[],m=0;0<(u=_[v++]);)h[m++]=String.fromCharCode(u);a.J=h.join("")}0<(2&a.h)&&(a.B=65535&n(_,0,v),a.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&&(l=s),r=new o(_,{index:v,bufferSize:l}),a.data=c=r.g(),v=r.c,a.K=f=(_[v++]|_[v++]<<8|_[v++]<<16|_[v++]<<24)>>>0,n(c,d,d)!==f&&e(Error("invalid CRC-32 checksum: 0x"+n(c,d,d).toString(16)+" / 0x"+f.toString(16))),a.L=s=(_[v++]|_[v++]<<8|_[v++]<<16|_[v++]<<24)>>>0,(4294967295&c.length)!==s&&e(Error("invalid input size: "+(4294967295&c.length)+" / "+s)),this.m.push(a),this.c=v}this.s=!0;var y,b,w,$=this.m,k=0,S=0;for(y=0,b=$.length;b>y;++y)S+=$[y].data.length;if(p)for(w=new Uint8Array(S),y=0;b>y;++y)w.set($[y].data,k),k+=$[y].data.length;else{for(w=[],y=0;b>y;++y)w[y]=$[y].data;w=Array.prototype.concat.apply([],w)}return w},t("Zlib.Gunzip",l),t("Zlib.Gunzip.prototype.decompress",l.prototype.g),t("Zlib.Gunzip.prototype.getMembers",l.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 i=goog.math.Long.fromNumber(Math.pow(n,8)),a=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 c=goog.math.Long.fromNumber(Math.pow(n,s));a=a.multiply(c).add(goog.math.Long.fromNumber(r))}else a=a.multiply(i),a=a.add(goog.math.Long.fromNumber(r))}return a},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),i=this.div(n),a=i.multiply(n).subtract(this);return i.toString(t)+a.toInt().toString(t)}return"-"+this.negate().toString(t)}for(var o=goog.math.Long.fromNumber(Math.pow(t,6)),a=this,s="";;){var r=a.div(o),c=a.subtract(r.multiply(o)).toInt(),l=c.toString(t);if(a=r,a.isZero())return l+s;for(;l.length<6;)l="0"+l;s=""+l+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_,i=this.low_>>>16,a=65535&this.low_,o=e.high_>>>16,s=65535&e.high_,r=e.low_>>>16,c=65535&e.low_,l=0,d=0,u=0,p=0;return p+=a+c,u+=p>>>16,p&=65535,u+=i+r,d+=u>>>16,u&=65535,d+=n+s,l+=d>>>16,d&=65535,l+=t+o,l&=65535,goog.math.Long.fromBits(u<<16|p,l<<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_,i=this.low_>>>16,a=65535&this.low_,o=e.high_>>>16,s=65535&e.high_,r=e.low_>>>16,c=65535&e.low_,l=0,d=0,u=0,p=0;return p+=a*c,u+=p>>>16,p&=65535,u+=i*c,d+=u>>>16,u&=65535,u+=a*r,d+=u>>>16,u&=65535,d+=n*c,l+=d>>>16,d&=65535,d+=i*r,l+=d>>>16,d&=65535,d+=a*s,l+=d>>>16,d&=65535,l+=t*c+n*r+i*s+a*o,l&=65535,goog.math.Long.fromBits(u<<16|p,l<<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 i=this.subtract(e.multiply(n)),a=n.add(i.div(e));return a}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,i=this;i.greaterThanOrEqual(e);){for(var n=Math.max(1,Math.floor(i.toNumber()/e.toNumber())),s=Math.ceil(Math.log(n)/Math.LN2),r=48>=s?1:Math.pow(2,s-48),c=goog.math.Long.fromNumber(n),l=c.multiply(e);l.isNegative()||l.greaterThan(i);)n-=r,c=goog.math.Long.fromNumber(n),l=c.multiply(e);c.isZero()&&(c=goog.math.Long.ONE),o=o.add(c),i=i.subtract(l)}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=[],i=e.length;for(t=0;i>t;++t)n.push(e[t]);return n}function a(t,n){var i=[];i.push(e(t));var a;for(a=0;n>a;++a)i.push(e(t));return i.push(0),i}function o(e,t){var n,i=[];for(n=0;t>n;++n)i.push(e);return i.push(0),i}function s(e,t,n,i){var a;for(a=0;i>a;++a)e[t+a]=n}function r(e,t,n,i){var a,o="";for(a=0;i>a;++a)o+=String.fromCharCode(e[t+a]);return n==o?0:1}function c(e,t){var n,i=[];for(n=0;e>n;++n)i.push(t);return i}function l(t,n){var i,a=[];for(i=0;t>i;++i)a.push(e(n));return a}function d(t,n){var i;for(i=t.length-1;i>=0;--i)n=e(c(t[i],n));return n}function u(e){if(!e)throw Error("assert :P")}var p=void 0,m=null,h=0,g=0,f=h,_=h,v=0,y=0;window.WebPDecoder=function(){function b(e){return e==Vn||e==Wn||e==Gn||e==Kn}function w(e){return S(e,1)}function $(e,t){var n=1+((e.la-1)*t>>8),i=n<<8,a=h;for(e.Z>=i?(a=1,e.la-=n,e.Z-=i):(a=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 a}function k(e,t,n,i){i-=n,i>=2?(e.Z=t[n+0]<<8|t[n+1],e.qa=t,e.Ia=n+2,e.bc=i-2):(e.Z=0,e.qa=m,e.bc=0),e.la=255,e.gc=0}function S(e,t){for(var n=0,i=h,i=t-1;i>=0;i--)n|=$(e,128)<<i;return n}function C(e,t){var n=S(e,t);return w(e)?-n:n}function M(e,t,n,i){var a=y;for(u(e!=m),u(t!=m),u(4294967288>i),e.qa=t,e.Ia=n,e.ya=i,e.T=0,e.Q=0,e.g=0,e.L=0,a=e.fa=0;4>a&&a<e.ya;++a)e.T|=e.qa[e.Ia+e.Q]<<8*a,++e.Q}function A(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 x(e){8<=e.g&&A(e),e.Q==e.ya&&32==e.g&&(e.L=1)}function E(e,t){var n=0;if(u(t>=0),!e.L&&hi>t){if(e.Q==e.ya&&32<=e.g+t&&(e.L=1,32<e.g+t))return n;n=e.T>>e.g&gi[t],e.g+=t,8<=e.g&&8<=e.g&&A(e)}else e.fa=1;return n}function T(e){return e.Pa==e.gb}function I(e,t){return u(e!=m),0==t?0:(e.gb=2*t-1,e.Y=l(e.gb,zi),e.Y==m?0:(e.Y[0].s=-1,e.Pa=1))}function D(e){e!=m&&(e.Y=m,e.Y=m,e.gb=0,e.Pa=0)}function P(e,t,n,i){for(var a=e.Y,o=0,s=+e.gb;0<i--;){if(o>=s)return 0;if(0>a[o].s){if(T(e))return 0;var r=e,c=r.Y,l=+r.Pa;a[o].s=l-o,r.Pa+=2,c[l+0].s=-1,c[l+1].s=-1}else if(0==a[o].s)return 0;o+=a[o].s+(n>>i&1)}if(0>a[o].s)a[o].s=0;else if(0!=a[o].s)return 0;return a[o].kc=t,1}function N(e,t,n){var i=h,a=0,o=0;for(u(e!=m),u(t!=m),i=0;n>i;++i)0<t[i]&&(++a,o=i);if(!I(e,a))return 0;if(1==a)return 0>o||o>=n?(D(e),0):P(e,o,0,0);if(a=0,o=c(n,h),o==m)return(a=a&&T(e))||D(e),a;var s=h,s=h,i=c(Ci+1,0),r=h,l=c(Ci+1,0),d=0;for(u(t!=m),u(n>0),u(o!=m),s=0;n>s;++s)t[s]>d&&(d=t[s]);if(d>Ci)i=0;else{for(s=0;n>s;++s)++i[t[s]];for(r=i[0]=0,l[0]=-1,s=1;d>=s;++s)r=r+i[s-1]<<1,l[s]=r;for(s=0;n>s;++s)o[s]=0<t[s]?l[t[s]]++:Wi;i=1}if(!i)return(a=a&&T(e))||D(e),a;for(i=0;n>i;++i)if(0<t[i]&&!P(e,i,o[i],t[i]))return(a=a&&T(e))||D(e),a;return(a=T(e))||D(e),a}function U(e,t,n,i,a,o,s){for(var r=h,r=0;s>r;++r)a[o+r]=e[t+r]+n[i+r]&255}function O(n,i,a){var o=n.P.l;if(!(a=0>i||0>a||i+a>n.P.v)&&(a=0==i)){e:{var s=n.Ga,r=n.G,l=n.ub;a=n.P.l;var d=n.P.v,p=n.Xb,g=[m],f=m,_=d*a,v=m,y=m,y="WEBP_FILTER_TYPE",b=h,g=h,w=0,$=h;if(u(a>0&&d>0&&o>=a),u(s!=m&&p!=m),Pi>=l)a=0;else if($=s[r+0]>>0&3,y=s[r+0]>>2&3,b=s[r+0]>>4&3,g=s[r+0]>>6&3,Ni>$||$>Ui||y>=Na||b>Oi||0!=g)a=0;else{if($==Ni)w=l>=_,g=s,f=r+Pi;else{if(g=c(_,0),f=0,g==m){a=0;break e}var w=r+Pi,l=l-Pi,r=g,v=e(li),k=0,S=Xt();S==m?w=0:(S.l=a,S.v=d,S.N=v,_t(Ln),v.put=An,v.Mb=Mn,v.Pb=xn,v.ka=m,v.ka=r,v.fd=0,v.width=a,v.height=d,S.a=Qn,M(S.o,s,w,l),S.Wa=xa,Qt(a,d,1,S,m)&&en(S,a)&&(S.Wa=Aa,k=Yt(S,S.V,S.Ha,S.l,S.v,tn)),S!=m&&Jt(S),w=k)}if(w){for(s=Ua[y],s!=m?(v=c(_,0),y=0,v==m&&(w=0,$!=Ni&&(f=g=m)),s(g,f,a,d,1,a,v,y),_=v,$=y):(_=g,$=f),s=0;0<d--;)t(p,s,_,$,a),$+=a,s+=o;b==Oi&&(w=g==m||0>=f||0>=a?0:1)}a=w}}a=!a}return a?m:0==i?n.Xb:+i*o}function L(e){var t=e.width,n=e.height,i=e.J;if(0>=t||0>=n||!(i>=Rn&&Xn>i))return ti;if(!e.Fc&&e.Jb==m){var a=m,o=0,s=0,r=0,l=0,a=v,d=t*Oa[i],u=d*n;if(Yn>i||(o=parseInt((t+1)/2,10),r=o*parseInt((n+1)/2,10),i==Zn&&(s=t,l=s*n)),a=u+2*r+l,a!=a)return ti;if(a=c(a,205),a==m)return ei;e.Jb=a,e.jc=m,Yn>i?(t=e.c.RGBA,t.ma=a,t.Sa=m,t.f=d,t.size=u):(t=e.c.Va,t.y=a,t.D=m,t.F=d,t.Wc=u,t.c=a,t.B=m+u,t.nb=o,t.Rc=r,t.S=a,t.C=m+u+r,t.rb=o,t.Uc=r,i==Zn&&(t.p=a,t.q=m+u+2*r),t.Wb=l,t.Fa=s)}return i=1,o=e.J,s=e.width,r=e.height,o>=Rn&&Xn>o?Yn>o?(e=e.c.RGBA,i&=e.f*r<=e.size,i&=e.f>=s*Oa[o],i&=e.ma!=m):(e=e.c.Va,l=e.nb*parseInt((r+1)/2,10),d=e.rb*parseInt((r+1)/2,10),u=e.Fa*r,i&=e.F*r<=e.Wc,i&=l<=e.Rc,i&=d<=e.Uc,i&=u<=e.Wb,i&=e.F>=s,i&=e.nb>=parseInt((s+1)/2,10),i&=e.rb>=parseInt((s+1)/2,10),i&=e.y!=m,i&=e.c!=m,i&=e.S!=m,o==Zn&&(i&=e.Fa>=s,i&=u<=e.Wb,i&=e.p!=m)):i=0,i?Qn:ti}function R(e,t,n,i){if(i==m||0>=e||0>=t)return ti;if(n!=m){if(n.Ua){var a=n.wc,o=n.vc,s=-2&n.t,r=-2&n.k;if(0>s||0>r||0>=a||0>=o||s+a>e||r+o>t)return ti;e=a,t=o}if(n.I){if(0>=n.Ba||0>=n.Aa)return ti;e=n.Ba,t=n.Aa}}return i.width=e,i.height=t,L(i)}function B(e){return-256&e?0>e?0:255:e}function F(e,t,n,i){var a,o=c(16,0);a=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]*so>>16)-(e[t+12]*oo>>16),u=(e[t+4]*oo>>16)+(e[t+12]*so>>16);o[a+0]=r+u,o[a+1]=l+d,o[a+2]=l-d,o[a+3]=r-u,a+=4,t++}for(s=a=0;4>s;++s)e=o[a+0]+4,r=e+o[a+8],l=e-o[a+8],d=(o[a+4]*so>>16)-(o[a+12]*oo>>16),u=(o[a+4]*oo>>16)+(o[a+12]*so>>16),n[i+0+0*ua]=B(n[i+0+0*ua]+(r+u>>3)),n[i+1+0*ua]=B(n[i+1+0*ua]+(l+d>>3)),n[i+2+0*ua]=B(n[i+2+0*ua]+(l-d>>3)),n[i+3+0*ua]=B(n[i+3+0*ua]+(r-u>>3)),a++,i+=ua}function q(e,t,n,i,a){F(e,t,n,i),a&&F(e,t+16,n,i+4)}function H(e,t,n,i){La(e,t+0,n,i+0,1),La(e,t+32,n,i+4*ua,1)}function z(e,t,n,i){e=e[t+0]+4;var a;for(a=0;4>a;++a)for(t=0;4>t;++t)n[i+t+a*ua]=B(n[i+t+a*ua]+(e>>3))}function V(e,t,n,i){e[t+0]&&z(e,t+0,n,i+0),e[t+16]&&z(e,t+16,n,i+4),e[t+32]&&z(e,t+32,n,i+4*ua),e[t+48]&&z(e,t+48,n,i+4*ua+4)}function W(e,t,n){var i,a=t-ua,o=io,s=255-e[a-1];for(i=0;n>i;++i){var r,c=o,l=s+e[t-1];for(r=0;n>r;++r)e[t+r]=c[l+e[a+r]];t+=ua}}function G(e,t,n){var a;for(a=0;16>a;++a)for(i=0;16>i;++i)t[n+a*ua+i]=e}function K(e,t,n){return e+2*t+n+2>>2}function Y(e,t,n){var i,a;for(i=0;8>i;++i)for(a=0;8>a;++a)t[n+a+i*ua]=e}function Z(e,t,n){var i=e[t-n],a=e[t+0],o=3*(a-i)+to[1020+e[t-2*n]-e[t+n]],s=no[112+(o+4>>3)];e[t-n]=io[255+i+no[112+(o+3>>3)]],e[t+0]=io[255+a-s]}function X(e,t,n,i){var a=e[t+0],o=e[t+n];return Qa[255+e[t-2*n]-e[t-n]]>i||Qa[255+o-a]>i}function J(e,t,n,i,a){var o=e[t-3*n],s=e[t-2*n],r=e[t-n],c=e[t+0],l=e[t+n],d=e[t+2*n],u=e[t+3*n];return 2*Qa[255+r-c]+eo[255+s-l]>i?0:Qa[255+e[t-4*n]-o]<=a&&Qa[255+o-s]<=a&&Qa[255+s-r]<=a&&Qa[255+u-d]<=a&&Qa[255+d-l]<=a&&Qa[255+l-c]<=a}function Q(e,t,n,i){var a;for(a=0;16>a;++a)2*Qa[255+e[t+a-n]-e[t+a+0]]+eo[255+e[t+a-2*n]-e[t+a+n]]<=i&&Z(e,t+a,n)}function et(e,t,n,i){var a;for(a=0;16>a;++a)2*Qa[255+e[t+a*n-1]-e[t+a*n+0]]+eo[255+e[t+a*n-2]-e[t+a*n+1]]<=i&&Z(e,t+a*n,1)}function tt(e,t,n,i){var a;for(a=3;a>0;--a)t+=4*n,Q(e,t+0,n,i)}function nt(e,t,n,i){var a;for(a=3;a>0;--a)t+=4,et(e,t+0,n,i)}function it(e,t,n,i,a,o,s,r){for(;0<a--;){if(J(e,t+0,n,o,s))if(X(e,t+0,n,r))Z(e,t+0,n);else{var c=e,l=t+0,d=n,u=c[l-2*d],p=c[l-d],m=c[l+0],h=c[l+d],g=c[l+2*d],f=to[1020+3*(m-p)+to[1020+u-h]],_=27*f+63>>7,v=18*f+63>>7,f=9*f+63>>7;c[l-3*d]=io[255+c[l-3*d]+f],c[l-2*d]=io[255+u+v],c[l-d]=io[255+p+_],c[l+0]=io[255+m-_],c[l+d]=io[255+h-v],c[l+2*d]=io[255+g-f]}t+=i}}function at(e,t,n,i,a,o,s,r){for(;0<a--;){if(J(e,t+0,n,o,s))if(X(e,t+0,n,r))Z(e,t+0,n);else{var c=e,l=t+0,d=n,u=c[l-d],p=c[l+0],m=c[l+d],h=3*(p-u),g=no[112+(h+4>>3)],h=no[112+(h+3>>3)],f=g+1>>1;c[l-2*d]=io[255+c[l-2*d]+f],c[l-d]=io[255+u+h],c[l+0]=io[255+p-g],c[l+d]=io[255+m-f]}t+=i}}function ot(e,t,n,i,a,o){it(e,t+0,n,1,16,i,a,o)}function st(e,t,n,i,a,o){it(e,t+0,1,n,16,i,a,o)}function rt(e,t,n,i,a,o){var s;for(s=3;s>0;--s)t+=4*n,at(e,t+0,n,1,16,i,a,o)}function ct(e,t,n,i,a,o){var s;for(s=3;s>0;--s)t+=4,at(e,t+0,1,n,16,i,a,o)}function lt(e,t,n,i,a,o,s,r){it(e,t,a,1,8,o,s,r),it(n,i,a,1,8,o,s,r)}function dt(e,t,n,i,a,o,s,r){it(e,t,1,a,8,o,s,r),it(n,i,1,a,8,o,s,r)}function ut(e,t,n,i,a,o,s,r){at(e,t+4*a,a,1,8,o,s,r),at(n,i+4*a,a,1,8,o,s,r)}function pt(e,t,n,i,a,o,s,r){at(e,t+4,1,a,8,o,s,r),at(n,i+4,1,a,8,o,s,r)}function mt(e,t){return t==Yi?0==e.i?0==e.d?na:ta:0==e.d?ea:Yi:t}function ht(e,t,n,a){for(i=0;4>i;++i)e[t+i]=n[a+i]}function gt(e,t){return 0>e?0:e>t?t:e}function ft(e){e.a="VP8_STATUS_OK",e.xc="OK"}function _t(e){e>>>8!=Ln>>>8&&alert("mismatch error")}function vt(e,t,n){return e.a==Qn&&(e.a=t,e.xc=n,e.za=0),alert(t+": "+n),0}function yt(t,n){var a=[0],o=g,s=[y],r=e(fa),c=e(_a),l=e(pi),s="VP8StatusCode",r=e(ui);if(t==m)return alert("(dec == null)"),0;if(ft(t),n==m)return vt(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=Dn(r),s!=Qn)return vt(t,s,"Incorrect/incomplete header.");if(r=r[0],r.b=r.b[0],r.e=r.e[0],r.ia)return vt(t,ni,"Unexpected lossless format encountered.");if(t.Ga==m&&(u(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,u(r.e>=r.offset),4>s[0])return vt(t,si,"Truncated header.");if(l=o[a+0]|o[a+1]<<8|o[a+2]<<16,r=t.Ac,r.fb=!(1&l)+0,r.Jc=l>>1&7,r.Nc=l>>4&1,r.Ra=l>>5,3<r.Jc)return vt(t,"VP8_STATUS_BITSTREAM_ERROR","Incorrect keyframe parameters.");if(!r.Nc)return vt(t,"VP8_STATUS_UNSUPPORTED_FEATURE","Frame not displayable.");if(a+=3,s-=3,c=t.P,r.fb){if(7>s)return vt(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 vt(t,"VP8_STATUS_BITSTREAM_ERROR","Bad code word");for(c.l=16383&(o[a+4]<<8|o[a+3]),c.gd=o[a+4]>>6,c.v=16383&(o[a+6]<<8|o[a+5]),c.hd=o[a+6]>>6,a+=7,s-=7,t.Ma=c.l+15>>4,t.hb=c.v+15>>4,n.width=c.l,n.height=c.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,l=t.R,i=0;i<l.Ta.length;++i)l.Ta[i]=255;for(l.z=e(yo),l=t.Ca,u(l!=m),l.pb=0,l.ob=0,l.tb=1,i=0;i<l.Kb.length;++i)l.Kb[i]=0;for(i=0;i<l.Cb.length;++i)l.Cb[i]=0;t.Lb=0}if(r.Ra>s)return vt(t,"VP8_STATUS_NOT_ENOUGH_DATA","bad partition length");l=t.o,k(l,o,a,a+r.Ra),a+=r.Ra,s-=r.Ra,r.fb&&(c.uc=w(l),c.$c=w(l));var c=l,d=t.Ca,p=t.R;if(u(c!=m),u(d!=m),d.pb=w(c),d.pb){if(d.ob=w(c),w(c)){var f;for(d.tb=w(c),f=0;aa>f;++f)d.Kb[f]=w(c)?C(c,7):0;for(f=0;aa>f;++f)d.Cb[f]=w(c)?C(c,6):0}if(d.ob)for(f=0;ia>f;++f)p.Ta[f]=w(c)?S(c,8):255}else d.ob=0;if(c.Ab)return vt(t,"VP8_STATUS_BITSTREAM_ERROR","cannot parse segment header");if(c=l,d=t.ga,d.Oc=w(c),d.Fb=S(c,6),d.kb=S(c,3),d.oc=w(c),d.oc&&w(c)){for(p=0;oa>p;++p)w(c)&&(d.Lc[p]=C(c,6));for(p=0;sa>p;++p)w(c)&&(d.Gc[p]=C(c,6))}if(t.A=0==d.Fb?0:d.Oc?1:2,0<t.A)if(t.Ca.pb)for(p=0;aa>p;++p)f=t.Ca.Cb[p],t.Ca.tb||(f+=d.Fb),t.Zb[p]=f;else t.Zb[0]=d.Fb;if(c.Ab)return vt(t,"VP8_STATUS_BITSTREAM_ERROR","cannot parse filter header");var c=o,_=a,d=_,s=_+s;f=0;var v=h,b=h;if(t.Hb=1<<S(t.o,2),v=t.Hb-1,p=c,f=_+3*v,f>s)s="VP8_STATUS_NOT_ENOUGH_DATA";else{for(b=0;v>b;++b){var _=p,M=f+(c[d+0]|c[d+1]<<8|c[d+2]<<16);M>s&&(_=c),k(t.ic[+b],p,f,M),p=_,f=M,d+=3}k(t.ic[+v],p,f,s),s=s>f?"VP8_STATUS_OK":"VP8_STATUS_SUSPENDED"}if("VP8_STATUS_OK"!=s)return vt(t,"VP8_STATUS_BITSTREAM_ERROR","cannot parse partitions");for(v=t.o,s=S(v,7),c=w(v)?C(v,4):0,d=w(v)?C(v,4):0,p=w(v)?C(v,4):0,f=w(v)?C(v,4):0,v=w(v)?C(v,4):0,b=t.Ca,_=h,_=0;aa>_;++_){if(M=h,b.pb)M=b.Kb[_],b.tb||(M+=s);else{if(_>0){t.yb[_]=t.yb[0];continue}M=s}var A=t.yb[_];A.sc[0]=fo[gt(M+c,127)],A.sc[1]=_o[gt(M+0,127)],A.sb[0]=2*fo[gt(M+d,127)],A.sb[1]=101581*_o[gt(M+p,127)]>>16,8>A.sb[1]&&(A.sb[1]=8),A.qc[0]=fo[gt(M+f,117)],A.qc[1]=_o[gt(M+v,127)]}if(!r.fb)return vt(t,ii,"Not a key frame.");for(t.Zc=259,w(l),s=t.R,c=0;ra>c;++c)for(d=0;ca>d;++d)for(p=0;la>p;++p)for(f=0;da>f;++f)$(l,wo[c][d][p][f])&&(s.z[c][d][p][f]=S(l,8));if(t.pc=w(l),t.pc&&(t.Pc=S(l,8)),t.P.uc){if(a-=8,l=y,8>r.Ra||1!=o[a+8-1])return vt(t,ni,"RIFF: Inconsistent extra information.");l=o[a+0]<<0|o[a+1]<<8|o[a+2]<<16,t.fc=l,t.dd=m,t.cd=o[a+3]}return t.za=1}function bt(e,t,n,i,a,o){var s=t[a][n];if(!$(e,s[0]))return 0;for(;;){if(++a,$(e,s[1])){var r;if($(e,s[2])){if($(e,s[3]))if($(e,s[6])){r=g,n=$(e,s[8]),s=$(e,s[9+n]),s=2*n+s,n=0,r=ko[s];var c;for(c=0;c<r.length-1;++c)n+=n+$(e,r[c]);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[a]][2]}else s=t[$o[a]][1],n=1;if(r=So[a-1],o[o[o.length-1]+r]=($(e,128)?-n:n)*i[(r>0)+0],16==a||!$(e,s[0]))return a}else s=t[$o[a]][0];if(16==a)return 16}}function wt(e,t){return((16777216*e[0]+65536*e[1]+256*e[2]+1*e[3])*Ao&4278190080)>>t}function $t(e,r){var l=0;if(e==m)return 0;if(r==m)return vt(e,"VP8_STATUS_INVALID_PARAM","NULL VP8Io parameter in VP8Decode().");if(!e.za&&!yt(e,r))return 0;u(e.za);var d;if(r.Mb&&!r.Mb(r))vt(e,oi,"Frame setup failed"),d=e.a;else{r.Za&&(e.A=0);var f=po[e.A];2==e.A?(e.lb=0,e.mb=0):(e.lb=r.t-f>>4,e.mb=r.k-f>>4,0>e.lb&&(e.lb=0),0>e.mb&&(e.mb=0)),e.Ya=r.K+15+f>>4,e.wb=r.Ka+15+f>>4,e.wb>e.Ma&&(e.wb=e.Ma),e.Ya>e.hb&&(e.Ya=e.hb),d=Qn}if(l=d==Qn){if(l){var _;e:{if(e.Ja=0,e.qb){var v=e.rc;if(!WebPWorkerReset(v)){_=vt(e,ei,"thread initialization failed.");break e}v.Qd=e,v.Rd=e.oa.N,v.Ud=FinishRow,e.jb=0<e.A?mo:mo-1}else e.jb=ho;_=1}var y;if(!(y=!_)){var b;e:{var w=e.jb,k=e.Ma,S=4*k,C=32*k,M=k+1,A=0<e.A?k*(e.qb?2:1):0,x=pa,E=C*(16*w+parseInt(3*po[e.A]/2,10)),T=e.Ga!=m?e.P.l*e.P.v:0,I=S+C+M+A+x+384+E+T+uo;if(I!=I)b=0;else{if(I>e.Gb){if(e.ib=0,e.Gb=0,e.ib==m){b=vt(e,"VP8_STATUS_OUT_OF_MEMORY","no memory during frame initialization.");break e}e.Gb=I}e.dc=205,e.Xc=o(205,16*k),e.Sc=o(205,8*k),e.Vc=o(205,8*k),e.M=A?a(wa,A):m,e.Sd=A?0:m,e.oa.ha=0,e.oa.M=e.M,u(0==(x&uo)),e.Ea=o(205,1*x),e.z=-12851,e.H=16*k,e.r=8*k;var D=po[e.A],P=D*e.H,N=D/2*e.r;e.ca=c(E,205),e.da=+P,e.aa=e.ca,e.ba=e.da+16*w*e.H+N,e.ra=e.aa,e.sa=e.ba+8*w*e.r+N,e.Xb=T?c(T,g):m,e.La=a($a,M),e.dc=o(Yi,S),b=1}}y=!b}if(y)l=0;else{if(r.width=e.P.l,r.height=e.P.v,r.w=0,r.y=e.ca,r.D=e.da,r.c=e.aa,r.B=e.ba,r.S=e.ra,r.C=e.sa,r.F=e.H,r.Da=e.r,r.p=m,r.q=m,!ao){var U;for(U=-255;255>=U;++U)Qa[255+U]=0>U?-U:U,eo[255+U]=Qa[255+U]>>1;for(U=-1020;1020>=U;++U)to[1020+U]=-128>U?-128:U>127?127:U;for(U=-112;112>=U;++U)no[112+U]=-16>U?-16:U>15?15:U;for(U=-255;510>=U;++U)io[255+U]=0>U?0:U>255?255:U;ao=1}La=q,Ra=H,Ba=z,Fa=V,qa=ot,ja=st,Ha=lt,za=dt,Va=rt,Wa=ct,Ga=ut,Ka=pt,Ya=Q,Za=et,Xa=tt,Ja=nt,l=1}}if(l)e:{for(e.d=0;e.d<e.Ya;++e.d){var L=e.ic[e.d&e.Hb-1],R=e,B=R.La[0];for(B.X=0,B.ua=0,s(R.cc,0,Yi,R.cc.length),R.W=(0<R.A&&R.d>=R.mb&&R.d<=R.Ya)+0,e.i=0;e.i<e.Ma;e.i++){var F,j=e,W=L,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,it=0,at=p,at=0;4>at;++at){var gt,ft=X[at];for(gt=0;4>gt;++gt){var _t=bo[Z[Z[Z.length-1]+gt]][ft],$t=0;do $t=vo[2*$t+$(G,_t[$t])];while($t>0);ft=-$t,Z[Z[Z.length-1]+gt]=ft,J[it]=ft,it++}X[at]=ft}else{var ft=$(G,156)?$(G,128)?Qi:Ji:$(G,163)?Xi:Zi;for(j.Eb[0]=ft,$t=0;4>$t;++$t)Z[$t+Z[Z.length-1]]=ft;for($t=0;4>$t;++$t)X[$t]=ft}if(j.Tc=$(G,142)?$(G,114)?$(G,183)?Qi:Ji:Xi:Zi,G.Ab)F=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 St=p,Ct=p,Mt=p,At=Co,xt=j.yb[j.Lb],Et=j.z,Tt=j.La[0],It=c(4,0),Dt=c(4,0),Pt=c(4,0),Nt=c(4,0),Ut=0,Ot=0,Lt=p,Rt=p,Bt=p,Et=o(0,384);if(j.wa)Mt=0,At=j.R.z[3];else{var Ft=c(16,0),qt=Y.ua+Tt.ua;Y.ua=Tt.ua=(0<bt(W,j.R.z[1],qt,xt.sb,0,Ft))+0;for(var Mt=1,At=j.R.z[0],jt=Ft,Ht=Et,zt=c(16,h),Vt=h,Vt=0;4>Vt;++Vt){var Wt=jt[0+Vt]+jt[12+Vt],Gt=jt[4+Vt]+jt[8+Vt],Kt=jt[4+Vt]-jt[8+Vt],Yt=jt[0+Vt]-jt[12+Vt];zt[0+Vt]=Wt+Gt,zt[8+Vt]=Wt-Gt,zt[4+Vt]=Yt+Kt,zt[12+Vt]=Yt-Kt}for(Vt=0;4>Vt;++Vt){var Zt=Ht[Ht.length-1],Xt=zt[0+4*Vt]+3,Wt=Xt+zt[3+4*Vt],Gt=zt[1+4*Vt]+zt[2+4*Vt],Kt=zt[1+4*Vt]-zt[2+4*Vt],Yt=Xt-zt[3+4*Vt];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}Et[Et.length-1]=0}for(Pt=n(Mo[15&Y.X]),Nt=n(Mo[15&Tt.X]),Rt=0;4>Rt;++Rt){for(var Jt=Nt[Rt],Lt=0;4>Lt;++Lt){var qt=Jt+Pt[Lt],Qt=bt(W,At,qt,xt.sc,Mt,Et);Pt[Lt]=Jt=(Qt>0)+0,Dt[Lt]=(0!=Et[Et[Et.length-1]+0])+0,It[Lt]=(Qt>1)+0,Et[Et.length-1]+=16}Nt[Rt]=Jt,Ot|=wt(Dt,24-4*Rt),Ut|=wt(It,24-4*Rt)}for(St=wt(Pt,24),Ct=wt(Nt,24),Pt=n(Mo[Y.X>>4]),Nt=n(Mo[Tt.X>>4]),Bt=0;4>Bt;Bt+=2){for(Rt=0;2>Rt;++Rt){for(Jt=Nt[Bt+Rt],Lt=0;2>Lt;++Lt)qt=Jt+Pt[Bt+Lt],Qt=bt(W,j.R.z[2],qt,xt.qc,0,Et),Pt[Bt+Lt]=Jt=(Qt>0)+0,Dt[2*Rt+Lt]=(0!=Et[Et[Et.length-1]+0])+0,It[2*Rt+Lt]=(Qt>1)+0,Et[Et.length-1]+=16;Nt[Bt+Rt]=Jt}Ot|=wt(Dt,8-2*Bt),Ut|=wt(It,8-2*Bt)}St|=wt(Pt,20),Ct|=wt(Nt,20),Y.X=St,Tt.X=Ct,j.z=Et,j.Oa=Ut+0,j.ja=Ut|Ot,Y.Nb=!j.ja+0}F=!W.Ab}if(!F){l=vt(e,"VP8_STATUS_NOT_ENOUGH_DATA","Premature end-of-file encountered."+e.i+" "+e.d);break e}var en=e,tn=en.Ea,nn=ma,an=en.Ea,on=ha,sn=en.Ea,rn=ga;if(0<en.i){for(var cn=p,cn=-1;16>cn;++cn)ht(tn,nn+cn*ua-4,tn,nn+cn*ua+12);for(cn=-1;8>cn;++cn)ht(an,on+cn*ua-4,an,on+cn*ua+4),ht(sn,rn+cn*ua-4,sn,rn+cn*ua+4)}else{for(cn=0;16>cn;++cn)tn[nn+cn*ua-1]=129;for(cn=0;8>cn;++cn)an[on+cn*ua-1]=129,sn[rn+cn*ua-1]=129;0<en.d&&(tn[nn-1-ua]=an[on-1-ua]=sn[rn-1-ua]=129)}var ln=en.Xc,dn=16*+en.i,un=en.Sc,pn=8*+en.i,mn=en.Vc,hn=8*+en.i,gn=en.z,fn=p;if(0<en.d)t(tn,nn-ua,ln,dn,16),t(an,on-ua,un,pn,8),t(sn,rn-ua,mn,hn,8);else if(0==en.i){for(i=0;21>i;++i)tn[nn-ua-1+i]=127;for(i=0;9>i;++i)an[on-ua-1+i]=127;for(i=0;9>i;++i)sn[rn-ua-1+i]=127}if(en.wa){var _n=nn-ua+16;0<en.d&&(en.i>=en.Ma-1?tn[_n+0]=tn[_n+1]=tn[_n+2]=tn[_n+3]=ln[dn+15]:t(tn,_n+0,ln,dn+16,4));for(var vn=0;4>vn;++vn)tn[vn+_n+4*ua]=tn[vn+_n+4*ua]=tn[vn+_n+8*ua]=tn[vn+_n+12*ua]=tn[vn+_n+0];for(fn=0;16>fn;fn++){var yn=tn,bn=nn+go[fn];ro[en.Eb[fn]](yn,bn),en.Oa&1<<fn?La(gn,16*+fn,yn,bn,0):en.ja&1<<fn&&Ba(gn,16*+fn,yn,bn)}}else{var wn=mt(en,en.Eb[0]);if(co[wn](tn,nn),en.ja)for(fn=0;16>fn;fn++)yn=tn,bn=nn+go[fn],en.Oa&1<<fn?La(gn,16*+fn,yn,bn,0):en.ja&1<<fn&&Ba(gn,16*+fn,yn,bn)}if(wn=mt(en,en.Tc),lo[wn](an,on),lo[wn](sn,rn),983040&en.ja){var $n=en.z,kn=256;983040&en.Oa?Ra($n,kn,an,on):Fa($n,kn,an,on)}if(15728640&en.ja){var Sn=en.z,kn=320;15728640&en.Oa?Ra(Sn,kn,sn,rn):Fa(Sn,kn,sn,rn)}en.d<en.hb-1&&(t(ln,dn,tn,nn+15*ua,16),t(un,pn,an,on+7*ua,8),t(mn,hn,sn,rn+7*ua,8));var Cn=e;if(0<Cn.A){var Mn=Cn.M[1+Cn.i],An=Cn.La[1+Cn.i].Nb,xn=Cn.Zb[Cn.Lb];Cn.ga.oc&&(xn+=Cn.ga.Lc[0],Cn.wa&&(xn+=Cn.ga.Gc[0])),xn=0>xn?0:xn>63?63:xn,Mn.zc=xn,0<Cn.ga.kb&&(xn=4<Cn.ga.kb?xn>>2:xn>>1,xn>9-Cn.ga.kb&&(xn=9-Cn.ga.kb)),Mn.yc=1>xn?1:xn,Mn.ab=(!An||Cn.wa)+0}for(var En=p,Tn=8*Cn.Ja*Cn.r,In=Cn.ca,Dn=Cn.da+16*Cn.i+16*Cn.Ja*Cn.H,Pn=Cn.aa,Nn=Cn.ba+8*Cn.i+Tn,Un=Cn.ra,On=Cn.sa+8*Cn.i+Tn,En=0;16>En;++En)t(In,Dn+En*Cn.H,Cn.Ea,+ma+En*ua,16);for(En=0;8>En;++En)t(Pn,Nn+En*Cn.r,Cn.Ea,+ha+En*ua,8),t(Un,On+En*Cn.r,Cn.Ea,+ga+En*ua,8)}var Ln=e,Rn=r,Bn=1,Fn=Ln.oa;if(Ln.qb){var qn=Ln.rc,Bn=Bn&WebPWorkerSync(qn);if(u(qn.a==OK),Bn){if(Fn.N=Rn,Fn.ha=Ln.Ja,Fn.d=Ln.d,Fn.W=Ln.W,Fn.W){var jn=Fn.M;Fn.M=Ln.M,Ln.M=jn}WebPWorkerLaunch(qn),++Ln.Ja==Ln.jb&&(Ln.Ja=0)}}else{Fn.d=Ln.d,Fn.W=Ln.W;t:{var Hn=1,zn=Ln.oa,Vn=po[Ln.A],Wn=Vn*Ln.H,Gn=parseInt(Vn/2)*Ln.r,Kn=16*zn.ha*Ln.H,Yn=8*zn.ha*Ln.r,Zn=Ln.ca,Xn=Ln.da-Wn+Kn,Jn=Ln.aa,ti=Ln.ba-Gn+Yn,ii=Ln.ra,ai=Ln.sa-Gn+Yn,si=0==zn.d,ri=(zn.d>=Ln.hb-1)+0,ci=16*zn.d,li=16*(zn.d+1);if(zn.W){var di=Ln,ui=h,pi=di.oa.d;for(u(di.oa.W),ui=di.lb;ui<di.wb;++ui){var mi=di,hi=ui,gi=pi,fi=mi.oa,_i=mi.H,vi=fi.M[1+hi],yi=mi.ca,bi=mi.da+16*fi.ha*_i+16*hi,wi=vi.zc,$i=vi.yc,ki=2*wi+$i;if(0!=wi)if(1==mi.A)hi>0&&Za(yi,bi,_i,ki+4),vi.ab&&Ja(yi,bi,_i,ki),gi>0&&Ya(yi,bi,_i,ki+4),vi.ab&&Xa(yi,bi,_i,ki);else{var Si=mi.r,Ci=mi.aa,Mi=mi.ba+8*fi.ha*Si+8*hi,Ai=mi.ra,xi=mi.sa+8*fi.ha*Si+8*hi,Ei=mi.Ac.fb?wi>=40?2:wi>=15?1:0:wi>=40?3:wi>=20?2:wi>=15?1:0;hi>0&&(ja(yi,bi,_i,ki+4,$i,Ei),za(Ci,Mi,Ai,xi,Si,ki+4,$i,Ei)),vi.ab&&(Wa(yi,bi,_i,ki,$i,Ei),Ka(Ci,Mi,Ai,xi,Si,ki,$i,Ei)),gi>0&&(qa(yi,bi,_i,ki+4,$i,Ei),Ha(Ci,Mi,Ai,xi,Si,ki+4,$i,Ei)),vi.ab&&(Va(yi,bi,_i,ki,$i,Ei),Ga(Ci,Mi,Ai,xi,Si,ki,$i,Ei))}}}if(Rn.put){if(si?(Rn.y=Ln.ca,Rn.D=Ln.da+Kn,Rn.c=Ln.aa,Rn.B=Ln.ba+Yn,Rn.S=Ln.ra,Rn.C=Ln.sa+Yn):(ci-=Vn,Rn.y=Zn,Rn.D=Xn,Rn.c=Jn,Rn.B=ti,Rn.S=ii,Rn.C=ai),ri||(li-=Vn),li>Rn.K&&(li=Rn.K),Ln.Ga!=m&&li>ci&&(0==ci?(Rn.p=O(Ln,ci,li-ci),Rn.q=0):Rn.q=O(Ln,ci,li-ci),Rn.p==m)){Bn=vt(Ln,ni,"Could not decode alpha data.");break t}if(ci<Rn.k){var Ti=Rn.k-ci,ci=Rn.k;u(!(1&Ti)),Rn.D+=Ln.H*Ti,Rn.B+=Ln.r*(Ti>>1),Rn.C+=Ln.r*(Ti>>1),Rn.p!=m&&(Rn.q+=Rn.width*Ti)}li>ci&&(Rn.D+=Rn.t,Rn.B+=Rn.t>>1,Rn.C+=Rn.t>>1,Rn.p!=m&&(Rn.q+=Rn.t),Rn.w=ci-Rn.k,Rn.m=Rn.Ka-Rn.t,Rn.h=li-ci,Hn=Rn.put(Rn))}zn.ha+1==Ln.jb&&!ri&&(t(Ln.ca,Ln.da-Wn,Zn,Xn+16*Ln.H,Wn),t(Ln.aa,Ln.ba-Gn,Jn,ti+8*Ln.r,Gn),t(Ln.ra,Ln.sa-Gn,ii,ai+8*Ln.r,Gn)),Bn=Hn}}if(!Bn){l=vt(e,"VP8_STATUS_USER_ABORT","Output aborted.");break e}}var Ii;if(!(Ii=e.qb&&!WebPWorkerSync(e.rc))){var Di;(Di=0<e.fc)&&(u(e),u(0<e.fc),Di=!1),Ii=Di}l=Ii?0:1}var Pi=l;r.Pb&&r.Pb(r),l=1&Pi}return l?(e.za=0,l):(kt(e),0)}function kt(e){e!=m&&(e.ib&&(e.ib=0),e.ib=m,e.Gb=0,e.za=0)}function St(e,t){return e+(1<<t)-1>>t}function Ct(e,t,n,i,a){var o=Xo[n]+Jo[t]>>xo;t=Zo[t],i[a+0]=Qo[e+Yo[n]-Eo],i[a+1]=Qo[e+o-Eo],i[a+2]=Qo[e+t-Eo]}function Mt(e,t,n,i,a){var o=Xo[n]+Jo[t]>>xo;t=Zo[t],i[a+0]=248&Qo[e+Yo[n]-Eo]|Qo[e+o-Eo]>>5,i[a+1]=Qo[e+o-Eo]<<3&224|Qo[e+t-Eo]>>3}function At(e,t,n,i,a){i[a+0]=255,Ct(e,t,n,i,a+1)}function xt(e,t,n,i,a){var o=Zo[t];i[a+0]=es[e+Yo[n]-Eo]<<4|es[e+(Xo[n]+Jo[t]>>xo)-Eo],i[a+1]=15|es[e+o-Eo]<<4}function Et(e,t,n,i,a){var o=Yo[n];n=Xo[n]+Jo[t]>>xo,i[a+0]=Qo[e+Zo[t]-Eo],i[a+1]=Qo[e+n-Eo],i[a+2]=Qo[e+o-Eo]}function Tt(e,t,n,i,a){Et(e,t,n,i,a),i[a+3]=255}function It(e,t,n,i,a){Ct(e,t,n,i,a),i[a+3]=255}function Dt(e,t,n){e[t]=((((4278255360&e[t])>>>0)+((4278255360&n)>>>0)&4278255360)>>>0|(16711935&e[t])+(16711935&n)&16711935)>>>0}function Pt(e,t){return((4278124286&(e^t))>>>1)+((e&t)>>>0)>>>0}function Nt(e){return 256>e&&e>0?e:0>=e?0:~e>>24&255}function Ut(e,t){return Nt(e+parseInt((e-t)/2,10))}function Ot(){return ki}function Lt(e,t){return e&=255,t&=255,e>127&&(e-=256),t>127&&(t-=256),e*t>>>5}function Rt(e,t,n,i,a,o,s){var r=h,c=8>>e.n,l=e.U,d=e.u;if(8>c){e=(1<<e.n)-1;for(var u=(1<<c)-1,r=t;n>r;++r){t=0;for(var p=h,p=0;l>p;++p)0==(p&e)&&(t=i[a++]>>8&255),o[s++]=d[t&u],t>>=c}}else for(r=t;n>r;++r)for(p=0;l>p;++p)o[s++]=d[i[a++]>>8&255]
}function Bt(e,t,n,i,a){for(n=t+n;n>t;){var o=e[t++];i[a++]=o>>16&255,i[a++]=o>>8&255,i[a++]=o>>0&255,i[a++]=o>>24&255}}function Ft(e,t,n,i,a){for(n=t+n;n>t;){var o=e[t++];i[a++]=o>>16&240|o>>12&15,i[a++]=o>>0&240|o>>28&15}}function qt(e,t,n,i,a){for(n=t+n;n>t;){var o=e[t++];i[a++]=o>>24&255,i[a++]=o>>16&255,i[a++]=o>>8&255,i[a++]=o>>0&255}}function jt(e,t,n,i){return E(e,8)!=_i?0:(t[0]=E(e,vi)+1,n[0]=E(e,vi)+1,i[0]=E(e,1),E(e,yi),1)}function Ht(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,i=0;for(u(n!=m);0!=n[i].s;){var a=n,o=t,s=o.T>>o.g&1;o.L?o.fa=1:(++o.g,8<=o.g&&A(o),o.Q==o.ya&&32==o.g&&(o.L=1)),i=i+a[i].s+s}return n[i].kc}for(n=e.Y,i=0,u(n!=m);0!=n[i].s;)a=n,o=t.T>>t.g&1,++t.g,i=i+a[i].s+o;return n[i].kc}function Vt(e,t){if(e!=m)for(var n=h,i=h,n=0;t>n;++n)for(var a=e[n].va,i=0;$i>i;++i)D(a[i])}function Wt(e,t,n){return t=0==e.eb?0:e.ac[e.bd+e.Ec*(n>>e.eb)+(t>>e.eb)],u(t<e.hc),e.Db[+t]}function Gt(n,i,a,o){var s=n.Na,r=n.O,c=r+i,l=a,d=o;for(o=n.Xa,a=n.vb,t(o,a,l,d,n.l*i);0<s--;){i=n.nc[s];var p=r,g=c,f=l,v=d,d=o,l=a;switch(u(g>p),u(g<=i.Vb),i.Qc){case Ii:for(f=0,i=l+(g-p)*i.U;i>l;){var g=d,v=l,y=g[v]>>8&255,b=(16711935&g[v])>>>0,b=b+(y<<16|y),b=16711935&b;d[l++]=((4278255360&g[v])>>>0|b)>>>0,32==p&&f++}break;case Ei:var w=i,$=p,f=g,v=d,y=l,b=w.U;if(0==$){var k=h;for(Dt(v,y,ki),k=1;b>k;++k)Dt(v,y+k,v[y+k-1]);y+=b,++$}for(var S=(1<<w.n)-1,C=St(b,w.n),M=w.u,w=+($>>w.n)*C;f>$;){var A=M,x=w,E=m;for(Dt(v,y,v[y-b+0]),E=Io[A[x++]>>8&15],k=1;b>k;++k){var T=_;0==(k&S)&&(E=Io[A[x++]>>8&15]),T=E(v[y+k-1],v,y+k-b),Dt(v,y+k,T)}y+=b,++$,0==($&S)&&(w+=C)}g!=i.Vb&&(i=i.U,t(d,l-i,d,l+(g-p-1)*i,i));break;case Ti:for(f=i.U,v=(1<<i.n)-1,y=St(f,i.n),b=i.u,i=+(p>>i.n)*y;g>p;){for(k=b,$=i,S=e(Do),C=h,C=0;f>C;++C)0==(C&v)&&(M=k[$++],w=S,w.Cc=M>>0&255,w.Bc=M>>8&255,w.Kc=M>>16&255),M=d[l+C],w=M>>>8,A=M>>>16,x=M,A+=Lt(S.Cc,w),A&=255,x+=Lt(S.Bc,w),x+=Lt(S.Kc,A),x&=255,d[l+C]=(4278255360&M|A<<16|x)>>>0;l+=f,++p,0==(p&v)&&(i+=y)}break;case Di:f==d&&0<i.n?(f=(g-p)*St(i.U,i.n),v=l+(g-p)*i.U-f,memmove(d,v,d,l,f),Rt(i,p,g,d,v,d,l)):Rt(i,p,g,f,v,d,l)}l=o,d=a}}function Kt(e,t){var n=e.V,i=e.Ha+e.l*e.O,a=t-e.O;if(!(0>=a)){Gt(e,a,n,i);var o=e.N,n=e.Xa,s=[e.vb],i=e.O,a=t,r=s,c=o.width;if(u(a>i),u(o.t<o.Ka),a>o.K&&(a=o.K),i<o.k){var l=o.k-i,i=o.k;r[0]+=c*l}if(i>=a?i=0:(r[0]+=o.t,o.w=i-o.k,o.m=o.Ka-o.t,o.h=a-i,i=1),i){if(s=s[0],i=e.Ib,a=o.width,i.J<Yn){var d=i.c.RGBA,r=d.ma,p=d.Sa+e.xa*d.f;if(o.I)n=EmitRescaledRows(e,n,s,a,o.h,r,p,d.f);else{for(var c=i.J,l=o.m,o=o.h,d=d.f,m=o;0<m--;){var h=n,g=s,f=l,_=r,v=p;switch(c){case Rn:for(f=g+f;f>g;){var y=h[g++];_[v++]=y>>16&255,_[v++]=y>>8&255,_[v++]=y>>0&255}break;case Bn:Bt(h,g,f,_,v);break;case Vn:Bt(h,g,f,_,v),WebPApplyAlphaMultiply(_,0,f,1,0);break;case Fn:for(f=g+f;f>g;)y=h[g++],_[v++]=y>>0&255,_[v++]=y>>8&255,_[v++]=y>>16&255;break;case qn:qt(h,g,f,_,v);break;case Wn:qt(h,g,f,_,v),WebPApplyAlphaMultiply(_,0,f,1,0);break;case jn:qt(h,g,f,_,v);break;case Gn:qt(h,g,f,_,v),WebPApplyAlphaMultiply(_,1,f,1,0);break;case Hn:Ft(h,g,f,_,v);break;case Kn:Ft(h,g,f,_,v),WebPApplyAlphaMultiply4444(_,f,1,0);break;case zn:for(f=g+f;f>g;)y=h[g++],_[v++]=y>>16&248|y>>13&7,_[v++]=y>>5&224|y>>3&31;break;default:u(0)}s+=a,p+=d}n=o}e.xa+=n}else e.xa=o.I?EmitRescaledRowsYUVA(e,n,s,a,o.h):EmitRowsYUVA(e,n,s,a,o.m,o.h);u(e.xa<=i.height)}e.O=t,u(e.O<=e.v)}}function Yt(e,t,n,i,a,o){var s=1,r=0,c=0,l=e.o,d=e.cb,p=d.Db,g=n,f=n;n+=i*a,a=Mi+Ai;var _=a+d.xb,v=0<d.xb?d.Yb:m,y=d.Dc,b=!1;u(p!=m);e:for(;!l.L&&n>g;){var w=h;if(b||(0==(r&y)&&(p=Wt(d,r,c)),x(l),w=zt(p.va[Ro],l)),Mi>w||b){if(!b){var $=s=b=h,k=h;x(l),b=zt(p.va[Bo],l),s=w,x(l),$=zt(p.va[Fo],l),x(l),k=zt(p.va[qo],l),t[g]=(k<<24>>>0)+(b<<16)+(s<<8)+$}if(b=!1,++g,++r,r>=i&&(r=0,++c,o!=m&&0==c%Po&&o(e,c),v!=m))for(;g>f;)s=t[f++],v.ea[Ki*s>>>v.bb]=s}else if(a>w){for($=$=h,s=Ht(w-Mi,l),w=zt(p.va[jo],l),x(l),$=Ht(w,l),$>Wo?$-=Wo:(w=Go[$-1],w=(w>>4)*i+(8-(15&w)),$=w>=1?w:1),w=h,w=0;s>w;++w)t[g+w]=t[g+w-$];for(g+=s,r+=s;r>=i;)r-=i,++c,o!=m&&0==c%Po&&o(e,c);if(n>g&&(p=Wt(d,r,c),v!=m))for(;g>f;)s=t[f++],v.ea[Ki*s>>>v.bb]=s}else if(_>w){for(b=w-a,u(v!=m);g>f;)w=t[f++],v.ea[Ki*w>>>v.bb]=w;w=t,$=g,k=v,u(b<=-1>>>k.bb),w[$]=k.ea[b],b=!0;continue e}(s=!l.fa)||End}return o!=m&&o(e,c),l.fa||!s||l.L&&n>g?(s=0,e.a=l.L?ai:ni):g==n&&(e.Ob=Aa),s}function Zt(e){u(e),e.ac=m,Vt(e.Db,e.hc);var t=e.Yb;t!=m&&(t.ea=m,t.ea=m),u(e)}function Xt(){var t=e(Pa);return t==m?m:(t.a=Qn,t.Wa=Ea,t.Ob=Ea,t)}function Jt(e){var t=h;if(e!=m){for(Zt(e.cb),e.V=m,e.V=m,t=0;t<e.Na;++t){var n=e.nc[t];n.u=m,n.u=m}e.Na=0,e.Ub=0,e.Mc=m,e.Mc=m,e.Ib=m}}function Qt(t,n,i,a,o){var s=1;t=[t],n=[n];for(var r=a.o,d=a.cb,p=m,g=m,g=0;;){if(i)for(;s&&E(r,1);){var f=t,_=n,v=a,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=[m],s.b=0,++v.Na,u(v.Na<=xi),w){case Ei:case Ti:s.n=E(b,3)+2,y=Qt(St(s.U,s.n),St(s.Vb,s.n),0,v,s.u);break;case Di:if(_=E(b,8)+1,y=_>16?0:_>4?1:_>2?2:3,f[0]=St(s.U,y),s.n=y,f=y=Qt(_,1,0,v,s.u))if(f=_,v=s,y=h,_=1<<(8>>>v.n)>>>0,b=Array(_),b==m)f=0;else{var w=v.u[0],$=v.b;for(b[0]=v.u[0][v.b+0],y=1;f>y;++y)b[y]=((((4278255360&w[$+y])>>>0)+((4278255360&b[y-1])>>>0)&4278255360)>>>0|(16711935&w[$+y])+(16711935&b[y-1])&16711935)>>>0;for(;_>y;++y)b[y]=0;v.u[0]=m,v.b=m,v.u[0]=b,v.b=0,f=1}y=f;break;case Ii:break;default:u(0)}s.u=s.u[0],s=y}}if(s&&E(r,1)&&(g=E(r,4),s=g>=1&&wi>=g,!s)){a.a=ni;break}if(s)e:{var s=a,k=t[0],S=n[0],f=g,$=w=h,$=s.o,v=s.cb,y=[m],_=m,b=1;if(i&&E($,1)){var w=E($,3)+2,k=St(k,w),C=St(S,w),S=k*C;if(!Qt(k,C,0,s,y)){s.a=ni,Vt(_,b),s=0;break e}for(y=y[0],v.eb=w,w=0;S>w;++w)k=y[w]>>>8&65535,y[w]=k,k>=b&&(b=k+1)}if($.fa)Vt(_,b),s=0;else if(u(65536>=b),_=l(b,Ia),_==m)s.a=ei,Vt(_,b),s=0;else{for(w=0;b>w;++w)for(S=_[w].va,$=0;$i>$;++$){k=Ho[$],0==$&&f>0&&(k+=1<<f);t:{var M=k,k=s,A=S[+$],U=0,C=k.o;if(E(C,1)){var O=Array(2),L=Array(2),R=Array(2),U=E(C,1)+1,B=E(C,1);O[0]=E(C,0==B?1:8),L[0]=0,R[0]=U-1,2==U&&(O[1]=E(C,8),L[1]=1,R[1]=U-1);n:{var B=0,F=h;if(u(A!=m),u(R!=m),u(L!=m),u(O!=m),I(A,U)){for(F=0;U>F;++F)if(L[F]!=Wi){if(0>O[F]||O[F]>=M){(B=B&&T(A))||D(A),U=B;break n}if(!P(A,O[F],L[F],R[F])){(B=B&&T(A))||D(A),U=B;break n}}(B=(B=1)&&T(A))||D(A),U=B}else U=0}}else{if(U=h,L=[],O=E(C,4)+4,O>zo){k.a=ni,k=0;break t}if(R=Array(M),R==m){k.a=ei,k=0;break t}for(U=0;O>U;++U)L[Vo[U]]=E(C,3);n:{var U=k,q=L,L=M,O=R,B=0,F=U.o,j=h,H=h,z=Si,V=e(Vi);if(N(V,q,zo)){if(E(F,1)){if(j=2+2*E(F,3),H=2+E(F,j),H>L){U.a=ni,D(V),U=B;break n}}else H=L;for(j=0;L>j;){var W=h;if(0==H--)break;if(x(F),W=zt(V,F),No>W)O[j++]=W,0!=W&&(z=W);else{var q=W==Uo,W=W-No,G=Lo[W],W=E(F,Oo[W])+G;if(j+W>L){U.a=ni,D(V),U=B;break n}for(q=q?z:0;0<W--;)O[j++]=q}}B=1,D(V),U=B}else U.a=ni,U=0}U&&(U=N(A,R,M))}(U=U&&!C.fa)?k=1:(k.a=ni,k=0)}if(!k){Vt(_,b),s=0;break e}}v.ac=y,v.hc=b,v.Db=_,s=1}}if(!s){a.a=ni;break}if(g>0){if(d.xb=1<<g,f=d.Yb,v=1<<g,u(f!=m),u(g>0),f.ea=c(v,0),f.ea==m?g=0:(f.bb=32-g,g=1),!g){a.a=ei,s=0;break}}else d.xb=0;if(g=a,f=t[0],v=n[0],y=g.cb,_=y.eb,g.l=f,g.v=v,y.Ec=St(f,_),y.Dc=0==_?-1:(1<<_)-1,i){a.Ob=xa;break}if(p=Array(t*n),g=0,p==m){a.a=ei,s=0;break}s=(s=Yt(a,p,g,t,n,m))&&!r.fa;break}return s?(o!=m?o[0]=p:(u(p==m),u(i)),i||Zt(d)):(Zt(d),a.a==ni&&a.o.L&&(a.a=ai)),s}function en(e,t){var n=e.l*e.v,i=n+t+t*Po;return u(e.l<=t),e.V=Array(i),e.Ha=0,e.V==m?(e.Xa=m,e.a=ei,0):(e.Xa=e.V,e.vb=e.Ha+n+t,1)}function tn(e,t){var n=t-e.O,i=e.V,a=e.Ha+e.l*e.O;if(!(0>=n)){Gt(e,n,i,a);for(var a=e.N.width,n=a*n,i=e.N.ka,a=e.N.fd+a*e.O,o=e.Xa,s=e.vb,r=h,r=0;n>r;++r)i[a+r]=o[s+r]>>>8&255;e.O=e.xa=t}}function nn(e,t){var n=[h],i=[h],a=[h];return e==m?0:t==m?(e.a=ti,0):(e.N=t,e.a=Qn,M(e.o,t.data,t.b,t.e),jt(e.o,n,i,a)?(e.Ob=Ea,t.width=n[0],t.height=i[0],e.Wa=xa,Qt(n[0],i[0],1,e,m)?1:(Jt(e),u(e.a!=Qn),0)):(e.a=ni,Jt(e),u(e.a!=Qn),0))}function an(e){var t=m,n=m;return e==m?0:(t=e.N,u(t!=m),n=t.ka,u(n!=m),e.Ib=n.j,e.Hc=n.Hc,u(e.Ib!=m),On(n.Qa,t,qn)?!en(e,t.width)||t.I&&!AllocateAndInitRescaler(e,t)?(Jt(e),u(e.a!=Qn),0):(e.Wa=Aa,Yt(e,e.V,e.Ha,e.l,e.v,Kt)?(n.ec=e.xa,Jt(e),1):(Jt(e),u(e.a!=Qn),0)):(e.a=ti,Jt(e),u(e.a!=Qn),0))}function gt(e,t){return 0>e?0:e>t?t:e}function on(e,t,n,i,a,o,s,r,c,l,d,u,p,m,h,g,f,_,v){var y,b=f-1>>1,w=a[o+0]|s[r+0]<<16,$=c[l+0]|d[u+0]<<16;if(e){var k=3*w+$+131074>>2;_(e[t+0],255&k,k>>16,p,m)}for(n&&(k=3*$+w+131074>>2,_(n[i+0],255&k,k>>16,h,g)),y=1;b>=y;++y){var S=a[o+y]|s[r+y]<<16,C=c[l+y]|d[u+y]<<16,k=w+S+$+C+524296,M=k+2*(S+$)>>3,A=k+2*(w+C)>>3;e&&(k=M+w>>1,w=A+S>>1,_(e[t+2*y-1],255&k,k>>16,p,m+(2*y-1)*v),_(e[t+2*y-0],255&w,w>>16,p,m+(2*y-0)*v)),n&&(k=A+$>>1,w=M+C>>1,_(n[i+2*y-1],255&k,k>>16,h,g+(2*y-1)*v),_(n[i+2*y+0],255&w,w>>16,h,g+(2*y+0)*v)),w=S,$=C}1&f||(e&&(k=3*w+$+131074>>2,_(e[t+f-1],255&k,k>>16,p,m+(f-1)*v)),n&&(k=3*$+w+131074>>2,_(n[i+f-1],255&k,k>>16,h,g+(f-1)*v)))}function sn(e,t,n,i,a,o,s,r,c,l,d,u,p,m,h,g,f){on(e,t,n,i,a,o,s,r,c,l,d,u,p,m,h,g,f,Ct,3)}function rn(e,t,n,i,a,o,s,r,c,l,d,u,p,m,h,g,f){on(e,t,n,i,a,o,s,r,c,l,d,u,p,m,h,g,f,Et,3)}function cn(e,t,n,i,a,o,s,r,c,l,d,u,p,m,h,g,f){on(e,t,n,i,a,o,s,r,c,l,d,u,p,m,h,g,f,It,4)}function ln(e,t,n,i,a,o,s,r,c,l,d,u,p,m,h,g,f){on(e,t,n,i,a,o,s,r,c,l,d,u,p,m,h,g,f,Tt,4)}function dn(e,t,n,i,a,o,s,r,c,l,d,u,p,m,h,g,f){on(e,t,n,i,a,o,s,r,c,l,d,u,p,m,h,g,f,At,4)}function un(e,t,n,i,a,o,s,r,c,l,d,u,p,m,h,g,f){on(e,t,n,i,a,o,s,r,c,l,d,u,p,m,h,g,f,xt,2)}function pn(e,t,n,i,a,o,s,r,c,l,d,u,p,m,h,g,f){on(e,t,n,i,a,o,s,r,c,l,d,u,p,m,h,g,f,Mt,2)}function mn(e,t,n,i,a,o,s,r,c,l,d,u,p,m,h){var g;for(g=0;p-1>g;g+=2)m(e[t+0],a[o+0],s[r+0],c,l),m(e[t+1],a[o+0],s[r+0],c,l+h),m(n[i+0],a[o+0],s[r+0],d,u),m(n[i+1],a[o+0],s[r+0],d,u+h),t+=2,i+=2,o++,r++,l+=2*h,u+=2*h;g==p-1&&(m(e[t+0],a[o+0],s[r+0],c,l),m(n[i+0],a[o+0],s[r+0],d,u))}function hn(e,t,n,i,a,o,s,r,c,l,d,u,p){mn(e,t,n,i,a,o,s,r,c,l,d,u,p,It,4)}function gn(e,t,n,i,a,o,s,r,c,l,d,u,p){mn(e,t,n,i,a,o,s,r,c,l,d,u,p,Tt,4)}function fn(e,t,n,i,a,o,s,r,c,l,d,u,p){mn(e,t,n,i,a,o,s,r,c,l,d,u,p,At,4)}function _n(e,t,n,i,a,o,s,r,c,l,d,u,p){mn(e,t,n,i,a,o,s,r,c,l,d,u,p,xt,2)}function vn(e,t,n,i,a,o){for(;0<a--;){for(var s=e,r=t+(n?1:0),c=e,l=t+(n?0:3),d=h,d=0;i>d;++d){var u=c[l+4*d];if(255!=u){var u=32897*u,m=s,g=r+4*d+0;s[r+4*d+0]*u>>>23,m[g]=p,m=s,g=r+4*d+1,s[r+4*d+1]*u>>>23,m[g]=p,m=s,g=r+4*d+2,s[r+4*d+2]*u>>>23,m[g]=p}}t+=o}}function yn(e,n){var i,a=n.j.c.Va,o=a.y,s=a.D+e.w*a.F,r=a.c,c=a.B+(e.w>>1)*a.nb,l=a.S,d=a.C+(e.w>>1)*a.rb,u=e.m,p=e.h,m=parseInt((u+1)/2,10),h=parseInt((p+1)/2,10);for(i=0;p>i;++i)t(o,s+i*a.F,e.y,e.D+i*e.F,u);for(i=0;h>i;++i)t(r,c+i*a.nb,e.c,e.B+i*e.Da,m),t(l,d+i*a.rb,e.S,e.C+i*e.Da,m);return e.h}function bn(e,t){var n,i=t.j,a=i.c.RGBA,o=a.ma,s=a.Sa+e.w*a.f,r=e.y,c=e.D,l=e.c,d=e.B,u=e.S,p=e.C,i=is[i.J],m=e.m,h=e.h-1;for(n=0;h>n;n+=2)i(r,c,r,c+e.F,l,d,u,p,o,s,o,s+a.f,m),c+=2*e.F,d+=e.Da,p+=e.Da,s+=2*a.f;return n==h&&i(r,c,r,c,l,d,u,p,o,s,o,s,m),e.h}function wn(e,n){var i=e.h,a=n.j.c.RGBA,o=a.ma,s=a.Sa+e.w*a.f,r=ns[n.j.J],c=e.y,l=e.D,d=e.c,u=e.B,p=e.S,h=e.C,g=n.Qb,f=n.Rb,_=n.lc,v=n.mc,y=e.w,b=e.w+e.h,w=e.m,$=parseInt((w+1)/2,10);for(0==y?r(m,m,c,l,d,u,p,h,d,u,p,h,m,m,o,s,w):(r(n.Sb,n.Tb,c,l,g,f,_,v,d,u,p,h,o,s-a.f,o,s,w),++i);b>y+2;y+=2)g=d,f=u,_=p,v=h,u+=e.Da,h+=e.Da,s+=2*a.f,l+=2*e.F,r(c,l-e.F,c,l,g,f,_,v,d,u,p,h,o,s-a.f,o,s,w);return l+=e.F,e.k+b<e.K?(t(n.Sb,n.Tb,c,l,1*w),t(n.Qb,n.Rb,d,u,1*$),t(n.lc,n.mc,p,h,1*$),i--):1&b||r(c,l,m,m,d,u,p,h,d,u,p,h,o,s+a.f,m,m,w),i}function $n(e,n){var i=e.p,a=e.q,o=n.j.c.Va,r=e.m,c=e.h,l=o.p,d=o.q+e.w*o.Fa,i=e.p,a=e.q,u=h;if(i!=m)for(u=0;c>u;++u)t(l,d,i,a,1*r),a+=e.width,d+=o.Fa;else if(o.p!=m)for(u=0;c>u;++u)s(l,d,255,r),d+=o.Fa;return 0}function kn(e,t,n){var i=e.w;return n[0]=e.h,e.Bb&&(0==i?--n[0]:(--i,t[0]-=e.width),e.k+e.w+e.h==e.K&&(n[0]=e.K-e.k-i)),i}function Sn(e,t){var n=e.p,i=[e.q];if(n!=m){for(var a=e.m,o=t.j.J,s=o==jn||o==Gn,r=t.j.c.RGBA,c=[h],l=kn(e,i,c),i=i[0],d=r.ma,l=r.Sa+l*r.f,u=l+(s?0:3),p=255,g=h,f=h,f=0;f<c[0];++f){for(g=0;a>g;++g){var _=n[i+g];d[u+4*g]=_,p&=_}i+=e.width,u+=r.f}255!=p&&b(o)&&WebPApplyAlphaMultiply(d,l,s,a,c,r.f)}return 0}function Cn(e,t){var n=e.p,i=[e.q];if(n!=m){var a=e.m,o=t.j.J,s=t.j.c.RGBA,r=[h],c=kn(e,i,r),i=i[0],l=s.ma,c=s.Sa+c*s.f,d=c+1,u=15,p=h;for(j=0;j<r[0];++j){for(p=0;a>p;++p){var g=n[i+p]>>4;l[d+2*p]=240&l[d+2*p]|g,u&=g}i+=e.width,d+=s.f}15!=u&&b(o)&&WebPApplyAlphaMultiply4444(l,c,a,r,s.f)}return 0}function Mn(e){var t=e.ka,n=t.j.J,i=Yn>n,a=n==Bn||n==qn||n==jn||n==Hn||n==Zn||b(n);if(t.memory=m,t.$a=m,t.zb=m,t.ad=m,!On(t.Qa,e,a?Yn:Zn))return 0;if(e.I){if(!(i?InitRGBRescaler(e,t):InitYUVRescaler(e,t)))return alert("memory error #1"),0}else{if(i){if(t.$a=bn,e.Bb){var o,s=e.m+1>>1,r=e.m+2*s,c=[];for(o=0;r>o;++o)c.push(205);if(c.push(0),t.memory=c,t.memory==m)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=wn,ns[Rn]=sn,ns[Bn]=cn,ns[Fn]=rn,ns[qn]=ln,ns[jn]=dn,ns[Hn]=un,ns[zn]=pn}}else t.$a=yn;a&&(b(n)&&(WebPApplyAlphaMultiply=vn,ns[Vn]=cn,ns[Wn]=ln,ns[Gn]=dn,ns[Kn]=un),t.zb=n==Hn||n==Kn?Cn:i?Sn:$n)}if(i&&!ts){for(e=0;256>e;++e)Yo[e]=89858*(e-128)+Ko>>xo,Jo[e]=-22014*(e-128)+Ko,Xo[e]=-45773*(e-128),Zo[e]=113618*(e-128)+Ko>>xo;for(e=Eo;To>e;++e)t=76283*(e-16)+Ko>>xo,Qo[e-Eo]=gt(t,255),es[e-Eo]=gt(t+8>>4,15);ts=1}return 1}function An(e){var t=e.ka,n=e.m,i=e.h;return u(!(1&e.w)),0>=n||0>=i?0:(n=t.$a(e,t),t.ec+=n,t.zb&&t.zb(e,t),1)}function xn(e){e=e.ka,e.memory="",e.memory=m}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 In(t,n,i,a,o,s,c){var l=0,d=[0],f="VP8StatusCode",v=e(ui);if(t==m||i[0]<Bi)return si;v.data=t,v.b=[n[0]],v.e=[i[0]],v.na=[v.na];e:{if(l=v.na,u(t!=m),u(i!=m),u(l!=m),l[0]=0,i[0]>=Bi&&!r(t,n[0],"RIFF",Li)){if(r(t,n[0]+8,"WEBP",Li)){f=ni;break e}var b=Tn(t,n[0]+Li);if(Li+Ri>b){f=ni;break e}l[0]=b,n[0]+=Bi,i[0]-=Bi}else l[0]=0;f=Qn}if(v.na=v.na[0],f!=Qn)return f;l=0<v.na,b=[0];e:if(f=Ri+Fi,u(t!=m),u(i!=m),u(d!=m),d[0]=0,i[0]<Ri)f=si;else{if(!r(t,n[0],"VP8X",Li)){var w=h,$=h,k=_;if(Tn(t,n[0]+Li)!=Fi){f=ni;break e}if(i[0]<f){f=si;break e}if(k=Tn(t,n[0]+8),w=1+En(t,n[0]+12),$=1+En(t,n[0]+15),w*$>=ji){f=ni;break e}b!=m&&(b[0]=k),a!=m&&(a[0]=w),o!=m&&(o[0]=$),n[0]+=f,i[0]-=f,d[0]=1}f=Qn}if(f!=Qn)return f;if(!l&&d[0])return ni;if(s!=m&&(s[0]=!!(b[0]&qi)),d&&c==m)return Qn;if(Li>i)return si;if(l&&d[0]||!l&&!d[0]&&!r(t,n[0],"ALPH",Li)){v.$=[v.$],v.G=[v.G],v.pa=[v.pa];e:{var d=v.na,l=v.$,b=v.G,f=v.pa,w=g,$=0,k=y,S=Li+Ri+Fi;for(u(t!=m),u(i!=m),w=t,$=n[0],k=i[0],u(l!=m),u(f!=m),l[0]=m,b[0]=m,f[0]=0;;){var C=_,A=_;if(n[0]=$,i[0]=k,Ri>k){f=si;break e}if(C=Tn(w,$+Li),A=Ri+C+1&-2,S+=A,d>0&&S>d){f=ni;break e}if(A>k){f=si;break e}if(r(w,$,"ALPH",Li)){if(!r(w,$,"VP8 ",Li)||!r(w,"VP8L",Li)){f=Qn;break e}}else l[0]=w,b[0]=$+Ri,f[0]=C;$+=A,k-=A}f=p}if(v.$=v.$[0],v.G=v.G[0],v.pa=v.pa[0],f!=Qn)return f}v.ta=[v.ta],v.ia=[v.ia];e:if(d=v.na,l=v.ta,b=v.ia,$=!r(t,n[0],"VP8 ",Li),f=!r(t,n[0],"VP8L",Li),w=Li+Ri,u(t!=m),u(i!=m),u(l!=m),u(b!=m),i[0]<Ri)f=si;else{if($||f){if($=Tn(t,n[0]+Li),d>=w&&$>d-w){f=ni;break e}l[0]=$,n[0]+=Ri,i[0]-=Ri,b[0]=f}else b[0]=i>=1&&t[n+0]==_i,l[0]=i[0];f=Qn}if(v.ta=v.ta[0],v.ia=v.ia[0],f!=Qn)return f;if(v.ta>Hi)return ni;if(v.ia){if(i[0]<bi)return si;d=n[0],l=i[0],a=a?a[0]:m,o=o?o[0]:m,b=s?s[0]:m,t==m||bi>l?t=0:(f=[h],w=[h],$=[h],k=e(mi),M(k,t,d,l),jt(k,f,w,$)?(a!=m&&(a[0]=f[0]),o!=m&&(o[0]=w[0]),b!=m&&(b[0]=$[0]),t=1):t=0)}else{if(fi>i)return si;d=n[0],l=i[0],a=a?a[0]:m,o=o?o[0]:m,!(t==m||fi>l)&&l-3>=3&&157==t[d+3+0]&&1==t[d+3+1]&&42==t[d+3+2]?(l=t[d+0]|t[d+1]<<8|t[d+2]<<16,b=16383&(t[d+7]<<8|t[d+6]),t=16383&(t[d+9]<<8|t[d+8]),!(!(1&l)+0)||(l>>1&7)>3||!(l>>4&1)||l>>5>=v.ta?t=0:(a&&(a[0]=b),o&&(o[0]=t),t=1)):t=0}return t?(s!=m&&(s[0]|=v.$!=m),c!=m&&(c[0]=v,c[0].offset=n[0]-c[0].b,u(n[0]-c[0].b<Hi),u(c[0].offset==c[0].e-i[0])),Qn):ni}function Dn(e){return u(e!=m),In(e[0].data,e[0].b,e[0].e,m,m,m,e)}function Pn(t,n,i,a){var o="VP8StatusCode",s=e(li),r=e(ui);if(r.data=t,r.b=n,r.e=i,r.b=[r.b],r.e=[r.e],r=[r],o=Dn(r),o!=Qn)return o;if(r=r[0],r.b=r.b[0],r.e=r.e[0],u(a!=m),_t(Ln),s.data=r.data,s.b=n+r.offset,s.e=r.e-r.offset,s.put=An,s.Mb=Mn,s.Pb=xn,s.ka=a,r.ia){if(t=Xt(),t==m)return ei;nn(t,s)?(o=R(s.width,s.height,a.Qa,a.j),o==Qn&&!an(t)&&(o=t.a)):o=t.a,t!=m&&Jt(t)}else{if(o=e(Ma),o!=m&&(ft(o),o.za=0,o.Hb=1),t=o,t==m)return ei;t.qb=0,t.Ga=r.$,t.G=r.G,t.ub=r.pa,yt(t,s)?(o=R(s.width,s.height,a.Qa,a.j),o==Qn&&!$t(t,s)&&(o=t.a)):o=t.a,t!=m&&kt(t)}return o!=Qn&&this.Yc(a.j),o}function Nn(t,n,i,a,o){var s={value:0};i={value:i};var r=e(di),c=e(Jn);r.j=c,c.J=t;var l,d={value:c.width},u={value:c.height};l=i;var p=e(ri);return Un(n,s,l,p)!=Qn?l=0:(d!=m&&(d.value=p.width),u!=m&&(u.value=p.height),l=1),l?(c.width=d.value,c.height=u.value,a!=m&&(a.value=c.width.value),o!=m&&(o.value=c.height.value),Pn(n,s.value,i.value,r)!=Qn?m:Yn>t?c.c.RGBA.ma:c.c.Va.y):m}function Un(e,t,n,i){return i==m||e==m?ti:(u(i!=m),i.tc=0,i.width=[i.width],i.height=[i.height],i.$b=[i.$b],In(e,t,n,i.width,i.height,i.$b,m))}function On(e,t,n){var i=t.width,a=t.height,o=0,s=0,r=i,c=a;if(t.Ua=e!=m&&0<e.Ua,t.Ua&&(r=e.wc,c=e.vc,o=e.t,s=e.k,Yn>n||(o&=-2,s&=-2),0>o||0>s||0>=r||0>=c||o+r>i||s+c>a))return 0;if(t.t=o,t.k=s,t.Ka=o+r,t.K=s+c,t.m=r,t.h=c,t.I=e!=m&&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==m||!e.ed,t.I&&(t.Za=t.Ba<3*i/4&&t.Aa<3*a/4,t.Bb=0),1}var Ln=512,Rn=0,Bn=1,Fn=2,qn=3,jn=4,Hn=5,zn=6,Vn=7,Wn=8,Gn=9,Kn=10,Yn=11,Zn=12,Xn=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 Jn={J:"WEBP_CSP_MODE",width:h,height:h,Fc:h,c:{RGBA:{ma:g,Sa:0,f:h,size:y},Va:{y:g,c:g,S:g,p:g,D:g,B:g,C:g,q:g,F:h,nb:h,rb:h,Fa:h,Wc:y,Rc:y,Uc:y,Wb:y}},Ic:c(4,_),Jb:m,jc:g},Qn=0,ei=1,ti=2,ni=3,ii=4,ai=5,oi=6,si=7;this.VP8StatusCode=this.td={xd:0,yd:1,vd:2,ud:3,Ad:4,zd:5,Bd:6,wd:7};var ri={width:{value:h},height:{value:h},$b:{value:h},tc:h,Yd:h,rotate:h,be:h,Ic:c(3,_)};this.WebPGetFeatures=this.Md=function(e,t,n){var i="VP8StatusCode";return Ln>>>8!=Ln>>>8||n==m?e=ti:(t=[t],i=Un(e,[0],t,n),e=i==si?ni:i),e};var ci={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,_)};this.WebPDecoderConfig=this.Kd={input:e(ri),j:e(Jn),options:e(ci)},this.WebPInitDecoderConfig=this.Nd=function(e){return Ln>>>8!=Ln>>>8||e==m?e=0:(e=e.input,u(e!=m),e.tc=0,e=1),e};var li={width:h,height:h,w:h,m:h,h:h,y:g,c:g,S:g,D:0,B:0,C:0,F:h,Da:h,ka:0,put:0,Mb:0,Pb:0,Bb:h,e:y,data:g,b:0,Za:h,Ua:h,t:h,Ka:h,k:h,K:h,I:h,Ba:h,Aa:h,p:g,q:0},di={j:e(Jn),Sb:g,Qb:g,lc:g,Tb:0,Rb:0,mc:0,ec:h,Qa:e(ci),memory:0,$a:"(OutputFunc)",zb:"(OutputFunc)",ad:"(OutputRowFunc)"},ui={data:g,b:g,e:y,offset:y,$:m,G:g,pa:y,ta:y,na:y,ia:h},pi={qa:g,Ia:m,Pd:g,Ab:h,la:_,Z:_,gc:h},mi={T:v,qa:g,Ia:g,ya:y,Q:y,g:h,L:h,fa:h},hi=25,gi=[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],fi=10,_i=47,vi=14,yi=3,bi=5,wi=11,$i=5,ki=4278190080,Si=8,Ci=15,Mi=256,Ai=24,xi=4,Ei=0,Ti=1,Ii=2,Di=3,Pi=1,Ni=0,Ui=1,Oi=1,Li=4,Ri=8,Bi=12,Fi=10,qi=16,ji=1*Math.pow(2,32),Hi=-1-Ri-1>>>0,zi={kc:h,s:h},Vi={Y:"HuffmanTreeNode*",gb:h,Pa:h},Wi=-1,Gi={ea:_,bb:h},Ki=506832829,Yi=0,Zi=Yi,Xi=2,Ji=3,Qi=1,ea=4,ta=5,na=6,ia=3,aa=4,oa=4,sa=4,ra=4,ca=8,la=3,da=11,ua=32,pa=17*ua+9*ua,ma=1*ua+8,ha=ma+16*ua+ua,ga=ha+16,fa={fb:g,Jc:g,Nc:g,Ra:_},_a={l:0,v:0,gd:g,hd:g,uc:g,$c:g},va={pb:h,ob:h,tb:h,Kb:c(aa,0),Cb:c(aa,0)},ya={Ta:c(ia,g),z:d([ra,ca,la,da],g)},ba={Oc:h,Fb:h,kb:h,oc:h,Lc:c(oa,h),Gc:c(oa,h)},wa={zc:h,yc:h,ab:h},$a={X:h,ua:h,Nb:h},ka=c(2,h),Sa={sc:e(ka),sb:e(ka),qc:e(ka)},Ca={ha:h,d:h,W:h,M:wa,N:li},Ma={a:"VP8StatusCode",za:h,xc:0,o:e(pi),Ac:e(fa),P:e(_a),ga:e(ba),Ca:e(va),rc:"WebPWorker",qb:h,Ja:h,jb:h,oa:Ca,Ma:h,hb:h,lb:h,mb:h,wb:h,Ya:h,Hb:h,ic:l(8,pi),Zc:_,yb:l(aa,Sa),R:e(ya),pc:h,Pc:g,dc:g,cc:c(4,g),Xc:g,Sc:g,Vc:g,La:e($a),M:e(wa),Ea:g,z:0,ca:g,aa:g,ra:g,da:h,ba:h,sa:h,H:h,r:h,ib:0,Gb:y,i:h,d:h,wa:g,Eb:c(16,g),Vd:0,Tc:g,Lb:g,ja:_,Oa:_,A:h,W:h,Zb:c(aa,g),Ga:m,G:0,ub:y,Xb:g,Od:0,cd:h,dd:g,Wd:0,fc:y},Aa=0,xa=1,Ea=2,Ta={Qc:"VP8LImageTransformType",n:h,U:h,Vb:h,u:_,b:_},Ia={va:l($i,Vi)},Da={xb:h,Yb:e(Gi),Dc:h,eb:h,Ec:h,ac:_,bd:_,hc:h,Db:"HTreeGroup"},Pa={a:"VP8StatusCode",Wa:"VP8LDecodeState",Ob:"VP8LDecodeState",N:"VP8Io",Ib:"WebPDecBuffer",Hc:"WebPDecBuffer",V:_,Ha:_,Xa:_,vb:_,o:e(mi),l:h,v:h,O:h,xa:h,cb:e(Da),Na:h,nc:l(xi,Ta),Ub:_,Mc:g,$d:g,Zd:"*WebPRescaler"},Na=4,Ua=[m,function(e,n,i,a,o,s,r,c){var l=h,d=c;for(u(e!=m),u(r!=m),u(i>0),u(a>0),u(o>0),u(s>=i*o),l=0;a>l;++l)0==l?t(r,c,e,n,o):U(e,n,r,d-s,r,c,o),U(e,n+o,r,d,r,c+o,o*(i-1)),d+=s,n+=s,c+=s},function(e,n,i,a,o,s,r,c){var l=h,d=c;for(u(e!=m),u(r!=m),u(i>0),u(a>0),u(o>0),u(s>=i*o),t(r,c,e,n,o),U(e,n+o,r,d,r,c+o,o*(i-1)),l=1;a>l;++l)n+=s,c+=s,U(e,n,r,d,r,c,o*i),d+=s},function(e,n,i,a,o,s,r,c){var l=c,d=h;for(u(e!=m),u(r!=m),u(i>0),u(a>0),u(o>0),u(s>=i*o),t(r,c,e,n,o),U(e,n+o,r,l,r,c+o,o*(i-1)),d=1;a>d;++d){var p=h,l=l+s;for(n+=s,c+=s,U(e,n,r,l-s,r,c,o),p=o;i*o>p;++p){var g=r[l+p-o]+r[l+p-s]-r[l+p-s-o];r[c+p]=e[n+p]+(0>g?0:g>255?255:g)&255}}}],Oa=[3,4,3,4,4,2,2,4,4,4,2,1,1];this.WebPFreeDecBuffer=this.Yc=function(e){e!=m&&(e.Fc||(e.Jb=""),e.jc=0,e.Jb=e.jc=m)};var La,Ra,Ba,Fa,qa,ja,Ha,za,Va,Wa,Ga,Ka,Ya,Za,Xa,Ja,Qa=c(511,g),eo=c(511,g),to=c(2041,0),no=c(225,0),io=c(766,g),ao=0,oo=85627,so=35468,ro=[function(e,t){var n,i=4;for(n=0;4>n;++n)i+=e[t+n-ua]+e[t-1+n*ua];for(i>>=3,n=0;4>n;++n)s(e,t+n*ua,i,4)},function(e,t){W(e,t,4)},function(e,n){var i=n-ua,a=[];for(a.push(K(e[i-1],e[i+0],e[i+1])),a.push(K(e[i+0],e[i+1],e[i+2])),a.push(K(e[i+1],e[i+2],e[i+3])),a.push(K(e[i+2],e[i+3],e[i+4])),i=0;4>i;++i)t(e,n+i*ua,a,0,4)},function(e,t){var n=e[t-1],i=e[t-1+ua],a=e[t-1+2*ua],o=e[t-1+3*ua];e[t+0+0*ua]=e[t+1+0*ua]=e[t+2+0*ua]=e[t+3+0*ua]=K(e[t-1-ua],n,i),e[t+0+1*ua]=e[t+1+1*ua]=e[t+2+1*ua]=e[t+3+1*ua]=K(n,i,a),e[t+0+2*ua]=e[t+1+2*ua]=e[t+2+2*ua]=e[t+3+2*ua]=K(i,a,o),e[t+0+3*ua]=e[t+1+3*ua]=e[t+2+3*ua]=e[t+3+3*ua]=K(a,o,o)},function(e,t){var n=e[t-1+0*ua],i=e[t-1+1*ua],a=e[t-1+2*ua],o=e[t-1-ua],s=e[t+0-ua],r=e[t+1-ua],c=e[t+2-ua],l=e[t+3-ua];e[t+0+3*ua]=K(i,a,e[t-1+3*ua]),e[t+0+2*ua]=e[t+1+3*ua]=K(n,i,a),e[t+0+1*ua]=e[t+1+2*ua]=e[t+2+3*ua]=K(o,n,i),e[t+0+0*ua]=e[t+1+1*ua]=e[t+2+2*ua]=e[t+3+3*ua]=K(s,o,n),e[t+1+0*ua]=e[t+2+1*ua]=e[t+3+2*ua]=K(r,s,o),e[t+2+0*ua]=e[t+3+1*ua]=K(c,r,s),e[t+3+0*ua]=K(l,c,r)},function(e,t){var n=e[t-1+0*ua],i=e[t-1+1*ua],a=e[t-1+2*ua],o=e[t-1-ua],s=e[t+0-ua],r=e[t+1-ua],c=e[t+2-ua],l=e[t+3-ua];e[t+0+0*ua]=e[t+1+2*ua]=o+s+1>>1,e[t+1+0*ua]=e[t+2+2*ua]=s+r+1>>1,e[t+2+0*ua]=e[t+3+2*ua]=r+c+1>>1,e[t+3+0*ua]=c+l+1>>1,e[t+0+3*ua]=K(a,i,n),e[t+0+2*ua]=K(i,n,o),e[t+0+1*ua]=e[t+1+3*ua]=K(n,o,s),e[t+1+1*ua]=e[t+2+3*ua]=K(o,s,r),e[t+2+1*ua]=e[t+3+3*ua]=K(s,r,c),e[t+3+1*ua]=K(r,c,l)},function(e,t){var n=e[t+1-ua],i=e[t+2-ua],a=e[t+3-ua],o=e[t+4-ua],s=e[t+5-ua],r=e[t+6-ua],c=e[t+7-ua];e[t+0+0*ua]=K(e[t+0-ua],n,i),e[t+1+0*ua]=e[t+0+1*ua]=K(n,i,a),e[t+2+0*ua]=e[t+1+1*ua]=e[t+0+2*ua]=K(i,a,o),e[t+3+0*ua]=e[t+2+1*ua]=e[t+1+2*ua]=e[t+0+3*ua]=K(a,o,s),e[t+3+1*ua]=e[t+2+2*ua]=e[t+1+3*ua]=K(o,s,r),e[t+3+2*ua]=e[t+2+3*ua]=K(s,r,c),e[t+3+3*ua]=K(r,c,c)},function(e,t){var n=e[t+0-ua],i=e[t+1-ua],a=e[t+2-ua],o=e[t+3-ua],s=e[t+4-ua],r=e[t+5-ua],c=e[t+6-ua],l=e[t+7-ua];e[t+0+0*ua]=n+i+1>>1,e[t+1+0*ua]=e[t+0+2*ua]=i+a+1>>1,e[t+2+0*ua]=e[t+1+2*ua]=a+o+1>>1,e[t+3+0*ua]=e[t+2+2*ua]=o+s+1>>1,e[t+0+1*ua]=K(n,i,a),e[t+1+1*ua]=e[t+0+3*ua]=K(i,a,o),e[t+2+1*ua]=e[t+1+3*ua]=K(a,o,s),e[t+3+1*ua]=e[t+2+3*ua]=K(o,s,r),e[t+3+2*ua]=K(s,r,c),e[t+3+3*ua]=K(r,c,l)},function(e,t){var n=e[t-1+0*ua],i=e[t-1+1*ua],a=e[t-1+2*ua],o=e[t-1+3*ua],s=e[t-1-ua],r=e[t+0-ua],c=e[t+1-ua],l=e[t+2-ua];e[t+0+0*ua]=e[t+2+1*ua]=n+s+1>>1,e[t+0+1*ua]=e[t+2+2*ua]=i+n+1>>1,e[t+0+2*ua]=e[t+2+3*ua]=a+i+1>>1,e[t+0+3*ua]=o+a+1>>1,e[t+3+0*ua]=K(r,c,l),e[t+2+0*ua]=K(s,r,c),e[t+1+0*ua]=e[t+3+1*ua]=K(n,s,r),e[t+1+1*ua]=e[t+3+2*ua]=K(i,n,s),e[t+1+2*ua]=e[t+3+3*ua]=K(a,i,n),e[t+1+3*ua]=K(o,a,i)},function(e,t){var n=e[t-1+0*ua],i=e[t-1+1*ua],a=e[t-1+2*ua],o=e[t-1+3*ua];e[t+0+0*ua]=n+i+1>>1,e[t+2+0*ua]=e[t+0+1*ua]=i+a+1>>1,e[t+2+1*ua]=e[t+0+2*ua]=a+o+1>>1,e[t+1+0*ua]=K(n,i,a),e[t+3+0*ua]=e[t+1+1*ua]=K(i,a,o),e[t+3+1*ua]=e[t+1+2*ua]=K(a,o,o),e[t+3+2*ua]=e[t+2+2*ua]=e[t+0+3*ua]=e[t+1+3*ua]=e[t+2+3*ua]=e[t+3+3*ua]=o}],co=[function(e,t){var n,i=16;for(n=0;16>n;++n)i+=e[t-1+n*ua]+e[t+n-ua];G(i>>5,e,t)},function(e,t){W(e,t,16)},function(e,n){var i;for(i=0;16>i;++i)t(e,n+i*ua,e,n-ua,16)},function(e,t){var n;for(n=16;n>0;--n)s(e,t+0,e[t-1],16),t+=ua},function(e,t){var n,i=8;for(n=0;16>n;++n)i+=e[t-1+n*ua];G(i>>4,e,t)},function(e,t){var n,i=8;for(n=0;16>n;++n)i+=e[t+n-ua];G(i>>4,e,t)},function(e,t){G(128,e,t)}],lo=[function(e,t){var n,i=8;for(n=0;8>n;++n)i+=e[t+n-ua]+e[t-1+n*ua];Y(1*(i>>4),e,t)},function(e,t){W(e,t,8)},function(e,n){var i;for(i=0;8>i;++i)t(e,n+i*ua,e,n-ua,8)},function(e,t){var n;for(n=0;8>n;++n)s(e,t+0,e[t-1],8),t+=ua},function(e,t){var n,i=4;for(n=0;8>n;++n)i+=e[t-1+n*ua];Y(1*(i>>3),e,t)},function(e,t){var n,i=4;for(n=0;8>n;++n)i+=e[t+n-ua];Y(1*(i>>3),e,t)},function(e,t){Y(128,e,t)}],uo=31,po=[0,2,8],mo=3,ho=1,go=[0+0*ua,4+0*ua,8+0*ua,12+0*ua,0+4*ua,4+4*ua,8+4*ua,12+4*ua,0+8*ua,4+8*ua,8+8*ua,12+8*ua,0+12*ua,4+12*ua,8+12*ua,12+12*ua],fo=[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],_o=[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],vo=[-Yi,1,-1,2,-2,3,4,6,-3,5,-4,-5,-6,7,-7,8,-8,-9],yo=[[[[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]]]],bo=[[[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]]],wo=[[[[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],ko=[[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],Co=d([la,da],"");c(4,g);var Mo=[[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]],Ao=134480385,xo=16,Eo=-227,To=482,Io=[Ot,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 Pt(Pt(e,t[n+1]),t[n+0])},function(e,t,n){return Pt(e,t[n-1])},function(e,t,n){return Pt(e,t[n+0])},function(e,t,n){return Pt(t[n-1],t[n+0])},function(e,t,n){return Pt(t[n+0],t[n+1])},function(e,t,n){return Pt(Pt(e,t[n-1]),Pt(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(Nt((e>>24&255)+(t[n+0]>>24&255)-(t[n-1]>>24&255))<<24|Nt((e>>16&255)+(t[n+0]>>16&255)-(t[n-1]>>16&255))<<16|Nt((e>>8&255)+(t[n+0]>>8&255)-(t[n-1]>>8&255))<<8|Nt((255&e)+(255&t[n+0])-(255&t[n-1])))>>>0},function(e,t,n){var i=t[n-1];return e=Pt(e,t[n+0]),(Ut(e>>24&255,i>>24&255)<<24|Ut(e>>16&255,i>>16&255)<<16|Ut(e>>8&255,i>>8&255)<<8|Ut(e>>0&255,i>>0&255))>>>0},Ot,Ot],Do={Cc:g,Bc:g,Kc:g},Po=16,No=16,Uo=16,Oo=[2,3,7],Lo=[3,3,11],Ro=0,Bo=1,Fo=2,qo=3,jo=4,Ho=[Mi+Ai,Mi,Mi,Mi,40],zo=19,Vo=[17,18,0,1,2,3,4,5,16,6,7,8,9,10,11,12,13,14,15],Wo=120,Go=[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],Ko=1<<xo-1,Yo=c(256,0),Zo=c(256,0),Xo=c(256,f),Jo=c(256,f),Qo=c(To-Eo,g),es=c(To-Eo,g),ts=0,ns=Array(Xn),is=[function(e,t,n,i,a,o,s,r,c,l,d,u,p){mn(e,t,n,i,a,o,s,r,c,l,d,u,p,Ct,3)},hn,function(e,t,n,i,a,o,s,r,c,l,d,u,p){mn(e,t,n,i,a,o,s,r,c,l,d,u,p,Et,3)},gn,fn,_n,function(e,t,n,i,a,o,s,r,c,l,d,u,p){mn(e,t,n,i,a,o,s,r,c,l,d,u,p,Mt,2)},hn,gn,fn,_n];this.Hd=function(e,t,n,i){return Nn(Rn,e,t,n,i)},this.Id=function(e,t,n,i){return Nn(Bn,e,t,n,i)},this.Jd=function(e,t,n,i){return Nn(Hn,e,t,n,i)},this.Ed=function(e,t,n,i){return Nn(jn,e,t,n,i)},this.Fd=function(e,t,n,i){return Nn(Fn,e,t,n,i)},this.Gd=function(e,t,n,i){return Nn(qn,e,t,n,i)},this.WebPDecode=this.Dd=function(t,n,i){var a=e(di),o="VP8StatusCode";return i==m?ti:(o=Un(t,[0],[n],i.input),o!=Qn?o==si?ni:o:(a.j=i.j,a.Qa=i.Qa,o=Pn(t,0,[n],a)))}}}();var _logTimer=(new Date).getTime();!function(e){function t(){return{shortIndexes:{},fullTexts:{}}}function n(e){return e=e.replace(o," ").replace(s,""),e=e.replace(/[^A-Za-z0-9]/g,function(e){return Config.LatinizeMap[e]||e}),e=e.toLowerCase()}function i(e,t,i){if(void 0!==i.fullTexts[e])return!1;if(t=n(t),!t.length)return!1;var a=i.shortIndexes;i.fullTexts[e]=t,angular.forEach(t.split(" "),function(t){var n,i,o=Math.min(t.length,3);for(i=1;o>=i;i++)n=t.substr(0,i),void 0===a[n]?a[n]=[e]:a[n].push(e)})}function a(e,t){var i=t.shortIndexes,a=t.fullTexts;e=n(e);var o,s,r,c,l,d=e.split(" "),u=!1;for(s=0;s<d.length;s++){if(o=i[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(l=!0,c=a[u[r]],s=0;s<d.length;s++)if(-1==c.indexOf(d[s])){l=!1;break}l&&(o[u[r]]=!0)}return o}var o=/[`~!@#$%^&*()\-_=+\[\]\\|{}'";:\/?.>,<\s]+/g,s=/^\s+|\s$/g;e.SearchIndexManager={createIndex:t,indexObject:i,cleanSearchText:n,search:a}}(window),function(e){function t(e){var t=(tsNow(),new WebPDecoder),n=t.WebPDecoderConfig,i=n.j,s=n.input;if(!t.WebPInitDecoderConfig(n))return console.error("[webpjs] Library version mismatch!"),!1;status=t.WebPGetFeatures(e,e.length,s),0!=status&&console.error("[webpjs] status error",status);t.WEBP_CSP_MODE;if(i.J=4,status=t.WebPDecode(e,e.length,n),ok=0==status,!ok)return console.error("[webpjs] decoding failed",status),!1;var r=i.c.RGBA.ma;if(!r)return!1;var c=i.height,l=i.width;a&&o?o.clearRect(0,0,a.width,a.height):(a=document.createElement("canvas"),o=a.getContext("2d")),a.height=c,a.width=l;for(var d=o.createImageData(a.width,a.height),u=d.data,p=0;c>p;p++)for(var m=0;l>m;m++)u[0+4*m+4*l*p]=r[1+4*m+4*l*p],u[1+4*m+4*l*p]=r[2+4*m+4*l*p],u[2+4*m+4*l*p]=r[3+4*m+4*l*p],u[3+4*m+4*l*p]=r[0+4*m+4*l*p];return o.putImageData(d,0,0),a.toDataURL("image/png")}var n=!1,i=new Image;i.onload=function(){n=2===this.width&&1===this.height},i.onerror=function(){n=!1},i.src="data:image/webp;base64,UklGRjIAAABXRUJQVlA4ICYAAACyAgCdASoCAAEALmk0mk0iIiIiIgBoSygABc6zbAAA/v56QAAAAA==";var a,o;e.WebpManager={isWebpSupported:function(){return n},getPngUrlFromData:t}}(window),TLSerialization.prototype.createBuffer=function(){this.buffer=new ArrayBuffer(this.maxLength),this.intView=new Int32Array(this.buffer),this.byteView=new Uint8Array(this.buffer)},TLSerialization.prototype.getArray=function(){var e=new ArrayBuffer(this.offset),t=new Int32Array(e);return t.set(this.intView.subarray(0,this.offset/4)),t},TLSerialization.prototype.getBuffer=function(){return this.getArray().buffer},TLSerialization.prototype.getBytes=function(e){if(e){var t=new ArrayBuffer(this.offset),n=new Uint8Array(t);return n.set(this.byteView.subarray(0,this.offset)),n}for(var i=[],a=0;a<this.offset;a++)i.push(this.byteView[a]);return i},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);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){var t=new ArrayBuffer(8),n=new Int32Array(t),i=new Float64Array(t);i[0]=e,this.writeInt(n[0],(field||"")+":double[low]"),this.writeInt(n[1],(field||"")+":double[high]")},TLSerialization.prototype.storeString=function(e,t){this.debug&&console.log(">>>",e,(t||"")+":string"),void 0===e&&(e="");var n=unescape(encodeURIComponent(e));this.checkLength(n.length+8);var i=n.length;253>=i?this.byteView[this.offset++]=i:(this.byteView[this.offset++]=254,this.byteView[this.offset++]=255&i,this.byteView[this.offset++]=(65280&i)>>8,this.byteView[this.offset++]=(16711680&i)>>16);for(var a=0;i>a;a++)this.byteView[this.offset++]=n.charCodeAt(a);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 i=e.length;if(t%32||8*i!=t)throw new Error("Invalid bits: "+t+", "+e.length);this.debug&&console.log(">>>",bytesToHex(e),(n||"")+":int"+t),this.checkLength(i),this.byteView.set(e,this.offset),this.offset+=i},TLSerialization.prototype.storeRawBytes=function(e,t){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var n=e.length;this.debug&&console.log(">>>",bytesToHex(e),t||""),this.checkLength(n),this.byteView.set(e,this.offset),this.offset+=n},TLSerialization.prototype.storeMethod=function(e,t){var n,i=this.mtproto?Config.Schema.MTProto:Config.Schema.API,a=!1;for(n=0;n<i.methods.length;n++)if(i.methods[n].method==e){a=i.methods[n];break}if(!a)throw new Error("No method "+e+" found");this.storeInt(intToUint(a.id),e+"[id]");var o,s,n,r,c,l=a.params.length;for(n=0;l>n;n++){if(o=a.params[n],s=o.type,-1!==s.indexOf("?")){if(r=s.split("?"),c=r[0].split("."),!(t[c[0]]&1<<c[1]))continue;s=r[1]}this.storeObject(t[o.name],s,e+"["+o.name+"]")}return a.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)}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 i=t.substr(7,t.length-8);this.writeInt(e.length,n+"[count]");for(var a=0;a<e.length;a++)this.storeObject(e[a],i,n+"["+a+"]");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 a,o=this.mtproto?Config.Schema.MTProto:Config.Schema.API,s=e._,r=!1,c=!1;for((r="%"==t.charAt(0))&&(t=t.substr(1)),a=0;a<o.constructors.length;a++)if(o.constructors[a].predicate==s){c=o.constructors[a];break}if(!c)throw new Error("No predicate "+s+" found");s==t&&(r=!0),r||this.writeInt(intToUint(c.id),n+"["+s+"][id]");var l,t,a,d,u,p=c.params.length;for(a=0;p>a;a++){if(l=c.params[a],t=l.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[l.name],t,n+"["+s+"]["+l.name+"]")}return c.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),i=new Float64Array(t);return n[0]=this.readInt((e||"")+":double[low]"),n[1]=this.readInt((e||"")+":double[high]"),i[0]},TLDeserialization.prototype.fetchLong=function(e){var t=this.readInt((e||"")+":long[low]"),n=this.readInt((e||"")+":long[high]"),i=bigint(n).shiftLeft(32).add(bigint(t)).toString();return i},TLDeserialization.prototype.fetchBool=function(e){var t=this.readInt((e||"")+":bool");return 2574415285==t?!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="",i=0;t>i;i++)n+=String.fromCharCode(this.byteView[this.offset++]);for(;this.offset%4;)this.offset++;try{var a=decodeURIComponent(escape(n))}catch(o){var a=n}return this.debug&&console.log("<<<",a,(e||"")+":string"),a},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 i=e/8;if(t){var a=this.byteView.subarray(this.offset,this.offset+i);return this.offset+=i,a}for(var o=[],s=0;i>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 i=new Uint8Array(e);return i.set(this.byteView.subarray(this.offset,this.offset+e)),this.offset+=e,i}for(var i=[],a=0;e>a;a++)i.push(this.byteView[this.offset++]);return this.debug&&console.log("<<<",bytesToHex(i),n||""),i},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)}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]");if(481674261!=n)throw new Error("Invalid vector constructor "+n)}var i=this.readInt(t+"[count]"),a=[];if(i>0)for(var o=e.substr(7,e.length-8),s=0;i>s;s++)a.push(this.fetchObject(o,t+"["+s+"]"));return a}var r=this.mtproto?Config.Schema.MTProto:Config.Schema.API,c=!1,l=!1;if("%"==e.charAt(0)){for(var d=e.substr(1),s=0;s<r.constructors.length;s++)if(r.constructors[s].type==d){l=r.constructors[s];break}if(!l)throw new Error("Constructor not found for type: "+e)}else if(e.charAt(0)>=97&&e.charAt(0)<=122){for(var s=0;s<r.constructors.length;s++)if(r.constructors[s].predicate==e){l=r.constructors[s];break}if(!l)throw new Error("Constructor not found for predicate: "+e)}else{var n=this.readInt(t+"[id]"),u=uintToInt(n);if(812830625==u){var p=this.fetchBytes(t+"[packed_string]"),m=gzipUncompress(p),h=bytesToArrayBuffer(m),g=new TLDeserialization(h);return g.fetchObject(e,t)}var f=r.constructorsIndex;if(!f){r.constructorsIndex=f={};for(var s=0;s<r.constructors.length;s++)f[r.constructors[s].id]=s}var s=f[u];s&&(l=r.constructors[s]);var _=!1;if(!l&&this.mtproto){var v=Config.Schema.API;for(s=0;s<v.constructors.length;s++)if(v.constructors[s].id==u){l=v.constructors[s],delete this.mtproto,_=!0;break}}if(!l)throw new Error("Constructor not found: "+n)}c=l.predicate;var a={_:c},y=(this.mtproto?"mt_":"")+c,b=this;if(this.override[y])this.override[y].apply(this,[a,t+"["+c+"]"]);else{var s,w,e,$,k,i=l.params.length;for(s=0;i>s;s++){if(w=l.params[s],e=w.type,-1!==e.indexOf("?")){if($=e.split("?"),k=$[0].split("."),!(a[k[0]]&1<<k[1]))continue;e=$[1]}a[w.name]=b.fetchObject(e,t+"["+c+"]["+w.name+"]")}}return _&&(this.mtproto=!0),a},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(),i=Array.prototype.slice.call(arguments);return i.push(function(e){t.resolve(e)}),ConfigStorage[n].apply(ConfigStorage,i),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(e)}}}}}).service("FileManager",["$window","$q","$timeout","qSync",function(e,t,n,i){function a(){return f}function o(e,n){return c(n).then(function(n){return s(n,e).then(function(){return n},function(e){return t.reject(e)})})}function s(e,n){var i=t.defer();if(e.onwriteend=function(){i.resolve()},e.onerror=function(e){i.reject(e)},n.file)n.file(function(t){e.write(t)},function(e){i.reject(e)});else if(n instanceof Blob)e.write(n);else try{var a=blobConstruct([bytesToArrayBuffer(n)]);e.write(a)}catch(o){i.reject(o)}return i.promise}function r(n,a,o){if(!e.chrome||!chrome.fileSystem||!chrome.fileSystem.chooseEntry)return i.reject();var s=t.defer();return chrome.fileSystem.chooseEntry({type:"saveFile",suggestedName:n,accepts:[{mimeTypes:[o],extensions:[a]}]},function(e){s.resolve(e)}),s.promise}function c(e){var n=t.defer();return e.createWriter(function(e){n.resolve(e)},function(e){n.reject(e)}),n.promise}function l(e,t){var n=[],i={write:function(e){return f?(n.push(e),void setZeroTimeout(function(){i.onwriteend&&i.onwriteend()})):(i.onerror&&i.onerror(new Error("Blob not supported by browser")),!1)},truncate:function(){n=[]},finalize:function(){var i=blobConstruct(n,e);return t&&t(i),i}};return i}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 i=new FileReader;return i.onloadend=function(e){n.resolve(new Uint8Array(e.target.result))},i.onerror=function(e){n.reject(e)},i.readAsArrayBuffer(e),n.promise}catch(a){return t.reject(a)}}return t.when(e)}function p(e){var n;try{var i=new FileReader;i.onloadend=function(){n.resolve(i.result)},i.readAsDataURL(e)}catch(a){return t.reject(a)}return n=t.defer(),n.promise}function m(e,t){if(g&&e instanceof Blob){var t=e.type||e.mimeType||t||"";if(!t.match(/image\/(jpeg|gif|png|bmp)|video\/quicktime/))return p(e)}return i.when(d(e,t))}function h(e,t,i){if(window.navigator&&void 0!==navigator.msSaveBlob)return window.navigator.msSaveBlob(e,i),!1;if(window.navigator&&navigator.getDeviceStorage){var a="sdcard";switch(t.split("/")[0]){case"video":a="videos";break;case"audio":a="music";break;case"image":a="pictures"}var o=navigator.getDeviceStorage(a),s=o.addNamed(e,i);return s.onsuccess=function(){console.log("Device storage save result",this.result)},void(s.onerror=function(){})}var r=!1;window.safari&&(r=window.open()),m(e,t).then(function(e){if(r)try{return void(r.location.href=e)}catch(t){}var a=document.createElementNS("http://www.w3.org/1999/xhtml","a");a.href=e,a.target="_blank",a.download=i,a.dataset&&(a.dataset.downloadurl=["video/quicktime",i,e].join(":")),$(a).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),a.dispatchEvent(o)}catch(t){console.error("Download click error",t);try{a[0].click()}catch(t){window.open(e,"_blank")}}n(function(){$(a).remove()},100)})}e.URL=e.URL||e.webkitURL,e.BlobBuilder=e.BlobBuilder||e.WebKitBlobBuilder||e.MozBlobBuilder;var g=-1!=navigator.userAgent.indexOf("Safari")&&-1==navigator.userAgent.indexOf("Chrome"),f=!0;try{blobConstruct([],"")}catch(_){f=!1}return{isAvailable:a,copy:o,write:s,getFileWriter:c,getFakeFileWriter:l,chooseSave:r,getUrl:d,getDataUrl:p,getByteArray:u,getFileCorrectUrl:m,download:h}}]).service("IdbFileStorage",["$q","$window","FileManager",function(e,t,n){function i(){return m}function a(){if(l)return l;try{var t=indexedDB.open(d,p),n=e.defer(),i=function(e){e.createObjectStore(u)};if(!t)throw new Exception}catch(a){return m=!1,e.reject(a)}return t.onsuccess=function(){db=t.result,db.onerror=function(e){m=!1,console.error("Error creating/accessing IndexedDB database",e),n.reject(e)},db.setVersion&&db.version!=p?db.setVersion(p).onsuccess=function(){i(db),n.resolve(db)}:n.resolve(db)},t.onerror=function(e){m=!1,console.error("Error creating/accessing IndexedDB database",e),n.reject(e)},t.onupgradeneeded=function(e){i(e.target.result)},l=n.promise}function o(t,n){return a().then(function(i){if(!h)return s(i,t,n);try{var a=i.transaction([u],IDBTransaction.READ_WRITE||"readwrite").objectStore(u),o=a.put(n,t)}catch(r){return h?(h=!1,s(i,t,n)):(m=!1,e.reject(r))}var c=e.defer();return o.onsuccess=function(){c.resolve(n)},o.onerror=function(e){c.reject(e)},c.promise})}function s(t,n,i){try{var a=new FileReader;a.readAsDataURL(i)}catch(o){return m=!1,e.reject()}var s=e.defer();return a.onloadend=function(){try{var e=t.transaction([u],IDBTransaction.READ_WRITE||"readwrite").objectStore(u),o=e.put(a.result,n)}catch(r){return m=!1,void s.reject(r)}o.onsuccess=function(){s.resolve(i)},o.onerror=function(e){s.reject(e)}},s.promise}function r(t){return a().then(function(n){var i=e.defer(),a=n.transaction([u],IDBTransaction.READ||"readonly").objectStore(u),o=a.get(t);return o.onsuccess=function(e){var t=e.target.result;void 0===t?i.reject():i.resolve("string"==typeof t&&"data:"===t.substr(0,5)?dataUrlToBlob(t):t)},o.onerror=function(e){i.reject(e)},i.promise})}function c(t,i){var a=n.getFakeFileWriter(i,function(e){o(t,e)});return e.when(a)}t.indexedDB=t.indexedDB||t.webkitIndexedDB||t.mozIndexedDB||t.OIndexedDB||t.msIndexedDB,t.IDBTransaction=t.IDBTransaction||t.webkitIDBTransaction||t.OIDBTransaction||t.msIDBTransaction;var l,d="cachedFiles",u="files",p=1,m=void 0!==t.indexedDB&&void 0!==t.IDBTransaction;m&&-1!=navigator.userAgent.indexOf("Safari")&&-1==navigator.userAgent.indexOf("Chrome")&&(m=!1);var h=m||!1;return a(),{isAvailable:i,saveFile:o,getFile:r,getFileWriter:c}}]).service("TmpfsFileStorage",["$q","$window","FileManager",function(e,t,n){function i(){if(c)return c;if(!t.requestFileSystem)return c=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){l=!1,n.reject(e)}),c=n.promise}function a(){return l}function o(t,n){return n=n||1,i().then(function(){var i=e.defer();return cachedFs.root.getFile(t,{create:!1},function(e){e.file(function(t){t.size>=n?i.resolve(e):i.reject(new Error("FILE_NOT_FOUND"))},function(e){console.log(dT(),"error",e),i.reject(e)})},function(){i.reject(new Error("FILE_NOT_FOUND"))}),i.promise})}function s(e,t){return r(e).then(function(e){return n.write(e,t).then(function(){return e.finalize()})})}function r(t){return i().then(function(){var i=e.defer();return cachedFs.root.getFile(t,{create:!0},function(e){n.getFileWriter(e).then(function(t){t.finalize=function(){return e},i.resolve(t)},function(e){l=!1,i.reject(e)})},function(e){l=!1,i.reject(e)}),i.promise})}t.requestFileSystem=t.requestFileSystem||t.webkitRequestFileSystem;var c,l=void 0!==t.requestFileSystem;return i(),{isAvailable:a,saveFile:s,getFile:o,getFileWriter:r}}]).service("MemoryFileStorage",["$q","FileManager",function(e,t){function n(){return!0}function i(t){return s[t]?e.when(s[t]):e.reject(new Error("FILE_NOT_FOUND"))}function a(t,n){return e.when(s[t]=n)}function o(n,i){var o=t.getFakeFileWriter(i,function(e){a(n,e)});return e.when(o)}var s={};return{isAvailable:n,saveFile:a,getFile:i,getFileWriter:o}}]).service("CryptoWorker",["$timeout","$q",function(e,t){function n(e,n,a){var r=t.defer();return s[o]=r,n.task=e,n.taskID=o,(a||i).postMessage(n),o++,r.promise}var i=!1,a=!1,o=0,s={},r=Config.Modes.webcrypto&&window.crypto&&(window.crypto.subtle||window.crypto.webkitSubtle),c=r&&void 0!==r.digest,l=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(){a=u.firstChild,console.log(dT(),"NaCl ready")},!0),u.addEventListener("message",function(e){d(e.data.taskID,e.data.result)},!0),u.addEventListener("error",function(e){console.error("NaCl error",e)},!0)}if(window.Worker){var p=new Worker("js/lib/crypto_worker.js");p.onmessage=function(e){i?d(e.data.taskID,e.data.result):i=p},p.onerror=function(e){console.error("CW error",e,e.stack),i=!1}}return{sha1Hash:function(n){if(c){var i=t.defer(),a=Array.isArray(n)?convertToUint8Array(n):n;return r.digest({name:"SHA-1"},a).then(function(e){i.resolve(e)},function(e){console.error("Crypto digest error",e),c=!1,i.resolve(sha1HashSync(n))}),i.promise}return e(function(){return sha1HashSync(n)})},sha256Hash:function(n){if(l){var i=t.defer(),a=Array.isArray(n)?convertToUint8Array(n):n;return r.digest({name:"SHA-256"},a).then(function(e){i.resolve(e)},function(e){console.error("Crypto digest error",e),l=!1,i.resolve(sha256HashSync(n))}),i.promise}return e(function(){return sha256HashSync(n)})},aesEncrypt:function(t,i,o){return a?n("aes-encrypt",{bytes:addPadding(convertToArrayBuffer(t)),keyBytes:convertToArrayBuffer(i),ivBytes:convertToArrayBuffer(o)},a):e(function(){return convertToArrayBuffer(aesEncryptSync(t,i,o))})},aesDecrypt:function(t,i,o){return a?n("aes-decrypt",{encryptedBytes:addPadding(convertToArrayBuffer(t)),keyBytes:convertToArrayBuffer(i),ivBytes:convertToArrayBuffer(o)},a):e(function(){return convertToArrayBuffer(aesDecryptSync(t,i,o))})},factorize:function(t){return t=convertToByteArray(t),a&&t.length<=8?n("factorize",{bytes:t},a):i?n("factorize",{bytes:t}):e(function(){return pqPrimeFactorization(t)})},modPow:function(t,a,o){return i?n("mod-pow",{x:t,y:a,m:o}):e(function(){return bytesModPow(t,a,o)})}}}]).service("ExternalResourcesManager",["$q","$http",function(e,t){function n(e){return void 0!==i[e]?i[e]:i[e]=t.get(e,{responseType:"blob",transformRequest:null}).then(function(e){return window.URL=window.URL||window.webkitURL,window.URL.createObjectURL(e.data)})}var i={};return{downloadImage:n}}]).service("IdleManager",["$rootScope","$window","$timeout",function(e,t,n){function i(){s||(s=!0,$(t).on(c+" blur focus keydown mousedown touchstart",a),setTimeout(function(){a({type:"blur"})},0))}function a(i){if("mousemove"==i.type){var i=i.originalEvent||i;if(i&&0===i.movementX&&0===i.movementY)return;$(t).off("mousemove",a)}var s="blur"==i.type||"timeout"==i.type?!0:!1;r&&document[r]&&(s=!0),n.cancel(o),s||(o=n(function(){a({type:"timeout"})},3e4)),e.idle.isIDLE!=s&&(e.$apply(function(){e.idle.isIDLE=s}),s&&"timeout"==i.type&&$(t).on("mousemove",a))}e.idle={isIDLE:!1};var o,s=!1,r="hidden",c="visibilitychange";return"undefined"!=typeof document.hidden||("undefined"!=typeof document.mozHidden?(r="mozHidden",c="mozvisibilitychange"):"undefined"!=typeof document.msHidden?(r="msHidden",c="msvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(r="webkitHidden",c="webkitvisibilitychange")),{start:i}}]).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())}}}]),angular.module("myApp.i18n",["izhukov.utils"]).factory("_",["$rootScope","$locale",function(e,t){function n(e,t){return e.replace(c,function(i,a,o){var s=t[a];return void 0===s?(console.warn("[i18n] missing param "+a+' for message "'+e+'"'),""):(void 0!==o&&(s=n(s,o.split("|"))),s.toString().trim())})}function i(e){return e=e.replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>").replace(/\n|&#10;/g,"<br/>")}function a(e,t){var a=!1,c=e;if("_raw"===e.substr(-4)&&(a=!0,e=e.substr(0,e.length-4)),s.hasOwnProperty(e))c=s[e];else{if(!r.hasOwnProperty(e))return console.warn("[i18n] missing key "+e),e;c=r[e],console.warn("[i18n] missing locale key "+o+" / "+e)}return a||(c=encodeEntities(c)),"_md"==e.substr(-3)&&(c=i(c)),arguments.length>1&&("string"==typeof t?(Array.prototype.shift.apply(arguments),c=n(c,arguments)):c=n(c,t)),c}var o=Config.I18n.locale,s=Config.I18n.messages,r=Config.I18n.fallback_messages,c=/\{\s*([a-zA-Z\d\-_]+)(?:\s*:\s*(.*?))?\s*\}/g;return a.locale=function(){return o},a.pluralize=function(n){var i=e.$eval(a(n+"_raw"));return function(e){return(i[t.pluralCat(e)]||"").replace("{}",e)}},a}]).filter("i18n",["_",function(e){return function(t,n){return e(t+"_raw",n)}}]).directive("ngPluralize",["_",function(e){return{restrict:"EA",priority:1,compile:function(t){var n=t.attr("when"),i=e(n+"_raw");t.attr("when",i)}}}]).directive("myI18n",["_",function(e){return{restrict:"EA",compile:function(t){var n=t.children('my-i18n-param:not([name]), [my-i18n-param=""]:not([name])').map(function(e,t){return t.outerHTML}).toArray();t.children('my-i18n-param[name], [my-i18n-param]:not([my-i18n-param=""]), [my-i18n-param][name]').each(function(e,t){n[angular.element(t).attr("my-i18n-param")||angular.element(t).attr("name")]=t.outerHTML}),t.children("my-i18n-param").remove();var i=t.attr("my-i18n")||t.attr("msgid")?t:t.children("my-i18n-format, [my-i18n-format]");i.each(function(t,i){var a=angular.element(i),o=a.attr("my-i18n")||a.attr("msgid")||a.attr("my-i18n-format")||a.html().replace(/\s+/g," ").trim(),s=e(o,n);a.html(s)})}}}]),angular.module("izhukov.mtproto",["izhukov.utils"]).factory("MtpDcConfigurator",function(){function e(e,a){if(void 0===i[e]){var o,s,r=!1;if(Config.Modes.ssl){var c=t[e-1]+(a?"-1":""),l=Config.Modes.test?"apiw_test1":"apiw1";return r="https://"+c+".web.telegram.org/"+l}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}i[e]=r}return i[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:"174.140.142.5",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}],i={};return{chooseServer:e}}).factory("MtpRsaKeysManager",function(){function e(){if(!a){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(),i[bytesToHex(r)]={modulus:t.modulus,exponent:t.exponent}}a=!0}}function t(t){e();var n,a,o;for(o=0;o<t.length;o++)if(n=bigStringInt(t[o]).toString(16),a=i[n])return angular.extend({fingerprint:t[o]},a);return!1}var n=[{modulus:"c150023e2f70db7985ded064759cfecf0af328e69a41daf4d6f01b538135a6f91f8f8b2a0ec9ba9720ce352efcf6c5680ffc424bd634864902de0b4bd6d49f4e580230e3ae97d95c8b19442b3c0a10d8f5633fecedd6926a7f6dab0ddb7d457f9ea81b8465fcd6fffeed114011df91c059caedaf97625f6c96ecc74725556934ef781d866b34f011fce4d835a090196e9a5f0e4449af7eb697ddb9076494ca5f81104a305b6dd27665722c46b60e5df680fb16b210607ef217652e60236c255f6a28315f4083a96791d7214bf64c1df4fd0db1944fb26a2a57031b32eee64ad15a8ba68885cde74a5bfc920f6abf59ba5c75506373e7130f9042da922179251f",exponent:"010001"}],i={},a=!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)+a,n=e%1e3,o=nextRandomInt(65535),s=[t,n<<21|o<<3|4];return(i[0]>s[0]||i[0]==s[0]&&i[1]>=s[1])&&(s=[i[0],i[1]+4]),i=s,longFromInts(s[0],s[1])}function n(t,n){var o=t-Math.floor((n||tsNow())/1e3),s=Math.abs(a-o)>10;return e.set({server_time_offset:o}),i=[0,0],a=o,console.log(dT(),"Apply server time",t,n,o,s),s}var i=[0,0],a=0;return e.get("server_time_offset").then(function(e){e&&(a=e)}),{generateID:t,applyServerTime:n}}]).factory("MtpAuthorizer",["MtpDcConfigurator","MtpRsaKeysManager","MtpSecureRandom","MtpTimeManager","CryptoWorker","$http","$q","$timeout",function(e,t,n,i,a,o,s,r){function c(t,n){var a=n.byteLength,r=new Int32Array(n),c=new TLSerialization;
c.storeLongP(0,0,"auth_key_id"),c.storeLong(i.generateID(),"msg_id"),c.storeInt(a,"request_length");var l=c.getBuffer(),d=new Int32Array(l),u=l.byteLength,p=new ArrayBuffer(u+a),m=new Int32Array(p);m.set(d),m.set(r,d.length);var h,g=f?p:m;try{h=o.post(e.chooseServer(t),g,{responseType:"arraybuffer",transformRequest:null})}catch(_){h=s.reject({code:406,type:"NETWORK_BAD_RESPONSE",originalError:_})}return h.then(function(e){if(!e.data||!e.data.byteLength)return s.reject({code:406,type:"NETWORK_BAD_RESPONSE"});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({code:406,type:"NETWORK_BAD_RESPONSE",originalError:n})}return t},function(e){return e.message||e.type||(e={code:406,type:"NETWORK_BAD_REQUEST",originalError:e}),s.reject(e)})}function l(e){var n=e.deferred,i=new TLSerialization({mtproto:!0});i.storeMethod("req_pq",{nonce:e.nonce}),console.log(dT(),"Send req_pq",bytesToHex(e.nonce)),c(e.dcID,i.getBuffer()).then(function(i){var o=i.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),a.factorize(e.pq).then(function(t){e.p=t[0],e.q=t[1],console.log(dT(),"PQ factorization done",t[2]),d(e)},function(e){console.log("Worker error",e,e.stack),n.reject(e)})},function(e){console.log(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 i=new TLSerialization({mtproto:!0});i.storeObject({_:"p_q_inner_data",pq:e.pq,p:e.p,q:e.q,nonce:e.nonce,server_nonce:e.serverNonce,new_nonce:e.newNonce},"P_Q_inner_data","DECRYPTED_DATA");var a=sha1BytesSync(i.getBuffer()).concat(i.getBytes()),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,a)}),console.log(dT(),"Send req_DH_params"),c(e.dcID,o.getBuffer()).then(function(n){var i=n.fetchObject("Server_DH_Params","RESPONSE");if("server_DH_params_fail"!=i._&&"server_DH_params_ok"!=i._)return t.reject(new Error("Server_DH_Params response invalid: "+i._)),!1;if(!bytesCmp(e.nonce,i.nonce))return t.reject(new Error("Server_DH_Params nonce mismatch")),!1;if(!bytesCmp(e.serverNonce,i.server_nonce))return t.reject(new Error("Server_DH_Params server_nonce mismatch")),!1;if("server_DH_params_fail"==i._){var a=sha1BytesSync(e.newNonce).slice(-16);return bytesCmp(a,i.new_nonce_hash)?(t.reject(new Error("server_DH_params_fail")),!1):(t.reject(new Error("server_DH_params_fail new_nonce_hash mismatch")),!1)}try{u(e,i.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),a=n.slice(0,20),o=n.slice(20),s=bytesToArrayBuffer(o),r=new TLDeserialization(s,{mtproto:!0}),c=r.fetchObject("Server_DH_inner_data");if("server_DH_inner_data"!=c._)throw new Error("server_DH_inner_data response invalid: "+constructor);if(!bytesCmp(e.nonce,c.nonce))throw new Error("server_DH_inner_data nonce mismatch");if(!bytesCmp(e.serverNonce,c.server_nonce))throw new Error("server_DH_inner_data serverNonce mismatch");console.log(dT(),"Done decrypting answer"),e.g=c.g,e.dhPrime=c.dh_prime,e.gA=c.g_a,e.serverTime=c.server_time,e.retry=0;var l=r.getOffset();if(!bytesCmp(a,sha1BytesSync(o.slice(0,l))))throw new Error("server_DH_inner_data SHA1-hash mismatch");i.applyServerTime(e.serverTime,e.localTime)}function p(e){var t=e.deferred,i=bytesFromHex(e.g.toString(16));e.b=new Array(256),n.nextBytes(e.b),a.modPow(i,e.b,e.dhPrime).then(function(n){var i=new TLSerialization({mtproto:!0});i.storeObject({_:"client_DH_inner_data",nonce:e.nonce,server_nonce:e.serverNonce,retry_id:[0,e.retry++],g_b:n},"Client_DH_Inner_Data");var o=sha1BytesSync(i.getBuffer()).concat(i.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"),c(e.dcID,r.getBuffer()).then(function(n){var i=n.fetchObject("Set_client_DH_params_answer");return"dh_gen_ok"!=i._&&"dh_gen_retry"!=i._&&"dh_gen_fail"!=i._?(t.reject(new Error("Set_client_DH_params_answer response invalid: "+i._)),!1):bytesCmp(e.nonce,i.nonce)?bytesCmp(e.serverNonce,i.server_nonce)?void a.modPow(e.gA,e.b,e.dhPrime).then(function(n){var a=sha1BytesSync(n),o=a.slice(0,8),s=a.slice(-8);switch(console.log(dT(),"Got Set_client_DH_params_answer",i._),i._){case"dh_gen_ok":var r=sha1BytesSync(e.newNonce.concat([1],o)).slice(-16);if(!bytesCmp(r,i.new_nonce_hash1))return t.reject(new Error("Set_client_DH_params_answer new_nonce_hash1 mismatch")),!1;var c=bytesXor(e.newNonce.slice(0,8),e.serverNonce.slice(0,8));e.authKeyID=s,e.authKey=n,e.serverSalt=c,t.resolve(e);break;case"dh_gen_retry":var l=sha1BytesSync(e.newNonce.concat([2],o)).slice(-16);return bytesCmp(l,i.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,i.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=[],i=0;16>i;i++)n.push(nextRandomInt(255));if(!e.chooseServer(t))return s.reject(new Error("No server found for dc "+t));var a={dcID:t,nonce:n,deferred:s.defer()};return r(function(){l(a)}),_[t]=a.deferred.promise,_[t]["catch"](function(){delete _[t]}),_[t]}var h=navigator.userAgent.match(/Chrome\/(\d+(\.\d+)?)/),g=h&&parseFloat(h[1])||!1,f=!("ArrayBufferView"in window)&&(!g||30>g);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,i,a,o,s,r,c,l,d){function u(e,t,n,i){i=i||{},this.dcID=e,this.iii=g++,this.authKey=t,this.authKeyUint8=convertToUint8Array(t),this.authKeyBuffer=convertToArrayBuffer(t),this.authKeyID=sha1BytesSync(t).slice(-8),this.serverSalt=n,this.upload=i.fileUpload||i.fileDownload||!1,this.updateSession(),this.currentRequests=0,this.checkConnectionPeriod=0,this.sentMessages={},this.serverMessages=[],this.clientMessages=[],this.pendingMessages={},this.pendingAcks=[],this.pendingResends=[],this.connectionInited=!1,this.pendingTimeouts=[],this.longPollInt=l(this.checkLongPoll.bind(this),1e4),this.checkLongPoll(),f||(f=!0,d.offline=!0,d.offlineConnecting=!0),Config.Navigator.mobile&&this.setupMobileSleep()}function p(){_&&(_=!1,h({_:"new_session_created"}))}function m(){_=!0}var h,g=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 i=this;if(n.container){var a=[];angular.forEach(n.inner,function(e){var t=i.updateSentMessage(e);t&&a.push(t.msg_id)}),n.inner=a}return n.msg_id=t.generateID(),n.seq_no=this.generateSeqNo(n.notContentRelated||n.container),this.sentMessages[n.msg_id]=n,delete i.sentMessages[e],n},u.prototype.generateSeqNo=function(e){var t=2*this.seqNo;return e||(t++,this.seqNo++),t},u.prototype.wrapMtpCall=function(e,n,i){var a=new TLSerialization({mtproto:!0});a.storeMethod(e,n);var o=t.generateID(),s=this.generateSeqNo(),r={msg_id:o,seq_no:s,body:a.getBytes()};return Config.Modes.debug&&console.log(dT(),"MT call",e,n,o,s),this.pushMessage(r,i)},u.prototype.wrapMtpMessage=function(e,n){n=n||{};var i=new TLSerialization({mtproto:!0});i.storeObject(e,"Object");var a=t.generateID(),o=this.generateSeqNo(n.notContentRelated),s={msg_id:a,seq_no:o,body:i.getBytes()};return Config.Modes.debug&&console.log(dT(),"MT message",e,a,o),this.pushMessage(s,n)},u.prototype.wrapApiCall=function(e,n,i){var a=new TLSerialization(i);this.connectionInited||(a.storeInt(3667594509,"invokeWithLayer"),a.storeInt(Config.Schema.API.layer,"layer"),a.storeInt(1769565673,"initConnection"),a.storeInt(Config.App.id,"api_id"),a.storeString(navigator.userAgent||"Unknown UserAgent","device_model"),a.storeString(navigator.platform||"Unknown Platform","system_version"),a.storeString(Config.App.version,"app_version"),a.storeString(navigator.language||"en","lang_code")),i.afterMessageID&&(a.storeInt(3416209197,"invokeAfterMsg"),a.storeLong(i.afterMessageID,"msg_id")),i.resultType=a.storeMethod(e,n);var o=t.generateID(),s=this.generateSeqNo(),r={msg_id:o,seq_no:s,body:a.getBytes(!0),isAPI:!0};return Config.Modes.debug?console.log(dT(),"Api call",e,n,o,s,i):console.log(dT(),"Api call",e),this.pushMessage(r,i)},u.prototype.checkLongPoll=function(){var e=this.cleanupSent();if(this.longPollPending&&tsNow()<this.longPollPending||this.offline||_)return!1;var t=this;i.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:0,wait_after:0,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,i=this.sentMessages[e];if(i.container)for(var a=0;a<i.inner.length;a++)this.pendingMessages[i.inner[a]]=n;else this.pendingMessages[e]=n;this.sheduleRequest(t)},u.prototype.getMsgKeyIv=function(e,t){var n=this.authKeyUint8,i=t?0:8,o=new Uint8Array(48),s=new Uint8Array(48),c=new Uint8Array(48),l=new Uint8Array(48),d={};return o.set(e,0),o.set(n.subarray(i,i+32),16),d.sha1a=a.sha1Hash(o),s.set(n.subarray(i+32,i+48),0),s.set(e,16),s.set(n.subarray(i+48,i+64),32),d.sha1b=a.sha1Hash(s),c.set(n.subarray(i+64,i+96),0),c.set(e,32),d.sha1c=a.sha1Hash(c),l.set(e,0),l.set(n.subarray(i+96,i+128),16),d.sha1d=a.sha1Hash(l),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),c.cancel(this.checkConnectionPromise);var n=new TLSerialization({mtproto:!0}),i=[nextRandomInt(4294967295),nextRandomInt(4294967295)];n.storeMethod("ping",{ping_id:i});var a={msg_id:t.generateID(),seq_no:this.generateSeqNo(!0),body:n.getBytes()},o=this;this.sendEncryptedRequest(a,{timeout:15e3}).then(function(){delete d.offlineConnecting,o.toggleOffline(!1)},function(){console.log(dT(),"Delay ",1e3*o.checkConnectionPeriod),o.checkConnectionPromise=c(o.checkConnection.bind(o),parseInt(1e3*o.checkConnectionPeriod)),o.checkConnectionPeriod=Math.min(60,1.5*o.checkConnectionPeriod),c(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?(c.cancel(this.nextReqPromise),delete this.nextReq,this.checkConnectionPeriod<1.5&&(this.checkConnectionPeriod=0),this.checkConnectionPromise=c(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),c.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 i=[],a={noShedule:!0,notContentRelated:!0},n=0;n<this.pendingResends.length;n++)i.push(this.pendingResends[n]);this.wrapMtpMessage({_:"msg_resend_req",msg_ids:i},a),this.lastResendReq={req_msg_id:a.messageID,resend_msg_ids:i}}var o,s=[],r=0,c=tsNow(),l=!1,d=!1,u=!1,p=0,m=this;if(angular.forEach(this.pendingMessages,function(e,t){if(!e||e>=c){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?l=!0:o.longPoll&&(d=!0)}delete m.pendingMessages[t]}}),l&&!d){var h=new TLSerialization({mtproto:!0});h.storeMethod("http_wait",{max_delay:0,wait_after:0,max_wait:1e3}),s.push({msg_id:t.generateID(),seq_no:this.generateSeqNo(),body:h.getBytes()})}if(s.length){var g=[];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&&g.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&&g.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(g,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(g,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 a.sha1Hash(e).then(function(n){var i=new Uint8Array(n).subarray(4,20);return t.getMsgKeyIv(i,!0).then(function(t){return a.aesEncrypt(e,t[0],t[1]).then(function(e){return{bytes:e,msgKey:i}})})})},u.prototype.getDecryptedMessage=function(e,t){return this.getMsgKeyIv(e,!1).then(function(e){return a.aesDecrypt(t,e[0],e[1])})},u.prototype.sendEncryptedRequest=function(t,n){var a=this;n=n||{};var c=new TLSerialization({startMaxLength:t.body.length+64});return c.storeIntBytes(this.serverSalt,64,"salt"),c.storeIntBytes(this.sessionID,64,"session_id"),c.storeLong(t.msg_id,"message_id"),c.storeInt(t.seq_no,"seq_no"),c.storeInt(t.body.length,"message_data_length"),c.storeRawBytes(t.body,"message_data"),this.getEncryptedMessage(c.getBuffer()).then(function(t){var c=new TLSerialization({startMaxLength:t.bytes.byteLength+256});c.storeIntBytes(a.authKeyID,64,"auth_key_id"),c.storeIntBytes(t.msgKey,128,"msg_key"),c.storeRawBytes(t.bytes,"encrypted_data");var l,d=b?c.getBuffer():c.getArray();try{n=angular.extend(n||{},{responseType:"arraybuffer",transformRequest:null}),l=s.post(e.chooseServer(a.dcID,a.upload),d,n)}catch(u){l=r.reject(u)}return l.then(function(e){return e.data&&e.data.byteLength?e:r.reject({code:406,type:"NETWORK_BAD_RESPONSE"})},function(e){return 404==e.status&&-1!=(e.data||"").indexOf("nginx/0.3.33")&&i.remove("dc"+a.dcID+"_server_salt","dc"+a.dcID+"_auth_key").then(function(){o.reload()}),e.message||e.type||(e={code:406,type:"NETWORK_BAD_REQUEST"}),r.reject(e)})})},u.prototype.parseResponse=function(e){var t=this,n=new TLDeserialization(e),i=n.fetchIntBytes(64,!1,"auth_key_id");if(!bytesCmp(i,this.authKeyID))throw new Error("Invalid server auth_key_id: "+bytesToHex(i));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}),i=(n.fetchIntBytes(64,!1,"salt"),n.fetchIntBytes(64,!1,"session_id")),s=n.fetchLong("message_id"),r=n.fetchInt("seq_no"),c=n.fetchRawBytes(!1,!0,"message_data"),l=convertToUint8Array(e).subarray(0,n.getOffset());return a.sha1Hash(l).then(function(e){if(!bytesCmp(o,bytesFromArrayBuffer(e).slice(-16)))throw console.warn(o,bytesFromArrayBuffer(e)),new Error("server msgKey mismatch");var n=bytesToArrayBuffer(c),a={mtproto:!0,override:{mt_message:function(e,t){e.msg_id=this.fetchLong(t+"[msg_id]"),e.seqno=this.fetchInt(t+"[seqno]"),e.bytes=this.fetchInt(t+"[bytes]");var n=this.getOffset();try{e.body=this.fetchObject("Object",t+"[body]")}catch(i){console.error(dT(),"parse error",i.message,i.stack),e.body={_:"parse_error",error:i}}this.offset!=n+e.bytes&&(console.warn(dT(),"set offset",this.offset,n,e.bytes),this.offset=n+e.bytes)},mt_rpc_result:function(e,n){e.req_msg_id=this.fetchLong(n+"[req_msg_id]");var i=t.sentMessages[e.req_msg_id],a=i&&i.resultType||"Object";e.result=this.fetchObject(a,n+"[result]")}}},l=new TLDeserialization(n,a),d=l.fetchObject("","INPUT");return{response:d,messageID:s,sessionID:i,seqNo:r}})})},u.prototype.applyServerSalt=function(e){var t=longToBytes(e),n={};return n["dc"+this.dcID+"_server_salt"]=bytesToHex(t),i.set(n),this.serverSalt=t,!0},u.prototype.sheduleRequest=function(e){this.offline&&this.checkConnection("forced shedule");var t=tsNow()+e;return e&&this.nextReq&&this.nextReq<=t?!1:(c.cancel(this.nextReqPromise),e>0?this.nextReqPromise=c(this.performSheduledRequest.bind(this),e||0):setZeroTimeout(this.performSheduledRequest.bind(this)),void(this.nextReq=t))},u.prototype.ackMessage=function(e){this.pendingAcks.push(e),this.sheduleRequest(3e4)},u.prototype.reqResendMessage=function(e){console.log(dT(),"Req resend",e),this.pendingResends.push(e),this.sheduleRequest(100)},u.prototype.cleanupSent=function(){var e=this,t=!1;return angular.forEach(this.sentMessages,function(n,i){if(n.notContentRelated&&void 0===e.pendingMessages[i])delete e.sentMessages[i];else if(n.container){for(var a=0;a<n.inner.length;a++)if(void 0!==e.sentMessages[n.inner[a]])return void(t=!0);delete e.sentMessages[i]}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,a){switch(e._){case"msg_container":for(var o=e.messages.length,s=0;o>s;s++)this.processMessage(e.messages[s],n,a);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 c=this.updateSentMessage(e.bad_msg_id);this.pushResend(c.msg_id),this.ackMessage(n)}break;case"message":this.serverMessages.push(e.msg_id),this.processMessage(e.body,e.msg_id,a);break;case"new_session_created":this.ackMessage(n),this.processMessageAck(e.first_msg_id),this.applyServerSalt(e.server_salt);var l=this;i.get("dc").then(function(t){t==l.dcID&&!l.upload&&h&&h(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 g=this.processError(e.result);console.log(dT(),"Rpc error",g),m&&m.reject(g)}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),h&&h(e)}},{getNetworker:function(e,t,n,i){return new u(e,t,n,i)},setUpdatesProcessor:function(e){h=e},stopAll:m,startAll:p}}]),angular.module("izhukov.mtproto.wrapper",["izhukov.utils","izhukov.mtproto"]).factory("MtpApiManager",["Storage","MtpAuthorizer","MtpNetworkerFactory","MtpSingleInstanceService","AppRuntimeManager","ErrorService","qSync","$q","TelegramMeWebService",function(e,t,n,i,a,o,s,r,c){function l(e){f!==e&&(f=e,c.setAuthorized(f))}function d(t,n){e.set({dc:t,user_auth:angular.extend({dcID:t},n)}),l(!0),b=t}function u(){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 i=[],a=0;a<n.length;a++)n[a]&&i.push(m("auth.logOut",{},{dcID:a+1}));return r.all(i).then(function(){e.remove("dc","user_auth"),b=!1,l(!1)},function(n){e.remove.apply(t),e.remove("dc","user_auth"),b=!1,n.handled=!0,l(!1)})})}function p(i,a){a=a||{};var o=a.fileUpload||a.fileDownload?v:_;if(!i)throw new Exception("get Networker without dcID");if(void 0!==o[i])return s.when(o[i]);var c="dc"+i+"_auth_key",l="dc"+i+"_server_salt";return e.get(c,l).then(function(s){if(void 0!==o[i])return o[i];var d=s[0],u=s[1];if(d&&512==d.length){var p=bytesFromHex(d),m=bytesFromHex(u);return o[i]=n.getNetworker(i,p,m,a)}return a.createNetworker?t.auth(i).then(function(t){var s={};return s[c]=bytesToHex(t.authKey),s[l]=bytesToHex(t.serverSalt),e.set(s),o[i]=n.getNetworker(i,t.authKey,t.serverSalt,a)},function(e){return console.log("Get networker error",e,e.stack),r.reject(e)}):r.reject({type:"AUTH_KEY_EMPTY",code:401})})}function m(t,n,i){i=i||{};var s,c,d=r.defer(),h=function(e){e?angular.isObject(e)||(e={message:e}):e={type:"ERROR_EMPTY"},d.reject(e),i.noErrorBox||(e.input=t,e.stack=e.originalError&&e.originalError.stack||e.stack||(new Error).stack,setTimeout(function(){e.handled||(401==e.code?u()["finally"](function(){"http:"!=location.protocol||Config.Modes.http||-1==Config.App.domains.indexOf(location.hostname)?(location.hash="/login",a.reload()):location.href=location.href.replace(/^http:/,"https:")}):o.show({error:e}),e.handled=!0)},100))},g=(new Error).stack;if(!g)try{window.unexistingFunction()}catch(f){g=f.stack||""}var _=function(a){return(c=a).wrapApiCall(t,n,i).then(function(e){d.resolve(e)},function(o){if(console.error(dT(),"Error",o.code,o.type,b,s),401==o.code&&b==s)e.remove("dc","user_auth"),l(!1),h(o);else if(401==o.code&&b&&s!=b){if(void 0===y[s]){var u=r.defer();m("auth.exportAuthorization",{dc_id:s},{noErrorBox:!0}).then(function(e){m("auth.importAuthorization",{id:e.id,bytes:e.bytes},{dcID:s,noErrorBox:!0}).then(function(){u.resolve()},function(e){u.reject(e)})},function(e){u.reject(e)}),y[s]=u.promise}y[s].then(function(){(c=a).wrapApiCall(t,n,i).then(function(e){d.resolve(e)},h)},h)}else if(303==o.code){var g=o.type.match(/^(PHONE_MIGRATE_|NETWORK_MIGRATE_|USER_MIGRATE_)(\d+)/)[2];g!=s&&(i.dcID?i.dcID=g:e.set({dc:b=g}),p(g,i).then(function(e){e.wrapApiCall(t,n,i).then(function(e){d.resolve(e)},h)}))}else h(o)})};return(s=i.dcID||b)?p(s,i).then(_,h):e.get("dc").then(function(e){p(s=e||2,i).then(_,h)}),d.promise}function h(){return e.get("user_auth").then(function(e){return l(e&&e.id>0||!1),e.id||0})}function g(){return b||!1}var f,_={},v={},y={},b=!1;return i.start(),e.get("dc").then(function(e){e&&(b=e)}),{getBaseDcID:g,getUserID:h,invokeApi:m,getNetworker:p,setUserAuth:d,logOut:u}}]).factory("MtpApiFileManager",["MtpApiManager","$q","FileManager","IdbFileStorage","TmpfsFileStorage","MemoryFileStorage",function(e,t,n,i,a,o){function s(e,n,i){void 0===y[e]&&(y[e]=[],b[e]=0);var a=y[e],o=t.defer();return a.push({cb:n,deferred:o,activeDelta:i}),setZeroTimeout(function(){r(e)}),o.promise}function r(e){var t=y[e],n="upload"==e?11:5;if(b[e]>=n||!t||!t.length)return!1;var i=t.shift(),a=i.activeDelta||1;b[e]+=a;w++;i.cb().then(function(t){b[e]-=a,r(e),i.deferred.resolve(t)},function(t){b[e]-=a,r(e),i.deferred.reject(t)})}function c(e){switch(e._){case"inputVideoFileLocation":return"video"+e.id+".mp4";case"inputDocumentFileLocation":return"doc"+e.id;case"inputAudioFileLocation":return"audio"+e.id}return e.volume_id||console.trace("Empty location",e),e.volume_id+"_"+e.local_id+"_"+e.secret+".jpg"}function l(e){if(!e)return!1;var t=c(e);return v[t]||!1}function d(){return a.isAvailable()?a:i.isAvailable()?i:o}function u(e,t){var n=c(e);return f[n]||(f[n]=d().saveFile(n,t).then(function(e){return v[n]=e})),f[n]}function p(i){if(!n.isAvailable())return t.reject({type:"BROWSER_BLOB_NOT_SUPPORTED"});var a=c(i),o="image/jpeg",r=f[a]||_[a];if(r)return r;var l=d();return _[a]=l.getFile(a).then(function(e){return v[a]=e},function(){var t=s(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})});return l.getFileWriter(a,o).then(function(e){return t.then(function(t){return n.write(e,t.bytes).then(function(){return v[a]=e.finalize()})})})})}function m(e,t){var n=d(),i=c(e);return n.getFile(i,t)}function h(i,a,o,r){if(!n.isAvailable())return t.reject({type:"BROWSER_BLOB_NOT_SUPPORTED"});r=r||{};var l=c(a),u=r.toFileEntry||null,p=f[l]||_[l],m=d();if(p)return u?p.then(function(e){return n.copy(e,u)}):p;var h,g=t.defer(),y=!1,b=!1,w=r.mime||"image/jpeg",$=function(e){g.reject(e),$=angular.noop,!h||e&&"DOWNLOAD_CANCELED"==e.type||h.truncate(0)};return m.getFile(l,o).then(function(e){u?n.copy(e,u).then(function(){g.resolve()},$):g.resolve(v[l]=e)},function(){var r=u?n.getFileWriter(u):m.getFileWriter(l,w);r.then(function(r){h=r;var c,d,p=524288,m=0,f=t.when();if(r.length){if(m=r.length,m>=o)return void(u?g.resolve():g.resolve(v[l]=r.finalize()));r.seek(m),g.notify({done:m,total:o})}for(c=m;o>c;c+=p)d=t.defer(),function(c,d,m,h){return s(i,function(){return y?t.when():e.invokeApi("upload.getFile",{location:a,offset:d,limit:p},{dcID:i,fileDownload:!0,singleInRequest:void 0!==window.safari,createNetworker:!0})},2).then(function(e){h.then(function(){return y?t.when():n.write(r,e.bytes).then(function(){m.resolve()},$).then(function(){c?(b=!0,u?g.resolve():g.resolve(v[l]=r.finalize())):g.notify({done:d+p,total:o})})})})}(c+p>=o,c,d,f),f=d.promise})}),g.promise.cancel=function(){y||b||(y=!0,delete _[l],$({type:"DOWNLOAD_CANCELED"}))},u||(_[l]=g.promise),g.promise}function g(n){var i=n.size,a=i>=10485760,o=!1,r=!1,c=0,l=262144,d=2;i>67108864?(l=524288,d=4):102400>i&&(l=32768,d=1);var u=Math.ceil(i/l);if(u>3e3)return t.reject({type:"FILE_TOO_BIG"});var p,m=[nextRandomInt(4294967295),nextRandomInt(4294967295)],h=t.defer(),g=function(e){h.reject(e),o=!0,g=angular.noop},f=0,_={_:a?"inputFileBig":"inputFile",id:m,parts:u,name:n.name,md5_checksum:""};for(p=0;i>p;p+=l)!function(p,f){s("upload",function(){var s=t.defer(),d=new FileReader,v=n.slice(p,p+l);return d.onloadend=function(t){return o?void s.reject():void(t.target.readyState==FileReader.DONE&&e.invokeApi(a?"upload.saveBigFilePart":"upload.saveFilePart",{file_id:m,file_part:f,file_total_parts:u,bytes:t.target.result},{startMaxLength:l+256,fileUpload:!0,singleInRequest:!0}).then(function(){c++,s.resolve(),c>=u?(h.resolve(_),r=!0):(console.log(dT(),"Progress",c*l/i),h.notify({done:c*l,total:i}))},g))},d.readAsArrayBuffer(v),s.promise},d)}(p,f++);return h.promise.cancel=function(){console.log("cancel upload",o,r),o||r||(o=!0,g({type:"UPLOAD_CANCELED"}))},h.promise}var f={},_={},v={},y={},b={},w=0;return{getCachedFile:l,getDownloadedFile:m,downloadFile:h,downloadSmallFile:p,saveSmallFile:u,uploadFile:g}}]).service("MtpSingleInstanceService",["_","$rootScope","$interval","Storage","AppRuntimeManager","IdleManager","ErrorService","MtpNetworkerFactory",function(e,t,n,i,a,o,s,r){function c(){if(!p&&!Config.Navigator.mobile&&!Config.Modes.packed){p=!0,o.start(),h=tsNow(),t.$watch("idle.isIDLE",d),n(d,5e3),d();try{$($window).on("beforeunload",l)}catch(e){}}}function l(){i.remove(m?"xt_instance":"xt_idle_instance")}function d(){var n=tsNow(),a=t.idle&&t.idle.isIDLE,o={id:u,idle:a,time:n};i.get("xt_instance","xt_idle_instance").then(function(t){var c=t[0],l=t[1];!c||c.time<n-6e4||c.id==u||c.idle||!a?(l&&(l.id==u?i.remove("xt_idle_instance"):l.time>n-1e4&&n>g&&(s.alert(e("error_modal_warning_title_raw"),e("error_modal_multiple_open_tabs_raw")),g+=tsNow()+6e4)),i.set({xt_instance:o}),m||r.startAll(),m=!0):(i.set({xt_idle_instance:o}),m&&r.stopAll(),m=!1)})}var u=nextRandomInt(4294967295),p=!1,m=!1,h=tsNow(),g=0;return{start:c}}]),angular.module("myApp",["ngRoute","ngSanitize","ngTouch","ui.bootstrap","mediaPlayer","izhukov.utils","izhukov.mtproto","izhukov.mtproto.wrapper","myApp.filters","myApp.services","myApp.templates","myApp.directives","myApp.controllers"]).config(["$locationProvider","$routeProvider","$compileProvider","StorageProvider",function(e,t,n,i){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:/),Config.Modes.test&&i.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","MtpApiFileManager","MtpApiManager","RichTextProcessor","ErrorService","Storage","_",function(e,t,n,i,a,o,s,r,c,l,d,u){function p(){return O?O:O=r.invokeApi("contacts.getContacts",{hash:""}).then(function(e){var t,n;L=[],_(e.users);for(var n=0;n<e.contacts.length;n++)t=e.contacts[n].user_id,L.push(t),SearchIndexManager.indexObject(t,m(t),j);return L})}function m(e){var t=B[e];return t?(t.first_name||"")+" "+(t.last_name||"")+" "+(t.phone||"")+" "+(t.username||""):!1}function h(e){return p().then(function(t){if(angular.isString(e)&&e.length){for(var n=SearchIndexManager.search(e,j),i=[],a=0;a<t.length;a++)n[t[a]]&&i.push(t[a]);t=i}return t})}function g(e){return e&&e.toLowerCase()||""}function f(e){var t=g(e),n=F[t];return n&&g(B[n].username)==t?o.when(n):r.invokeApi("contacts.resolveUsername",{username:e}).then(function(e){return v(e),e.id})}function _(e){angular.forEach(e,v)}function v(t,n){if(angular.isObject(t)&&!(n&&angular.isObject(B[t.id])&&B[t.id].first_name)){var a=t.id;t.phone&&(t.rPhone=i("phoneNumber")(t.phone)),t.num=Math.abs(a)%8+1,t.first_name?(t.rFirstName=c.wrapRichText(t.first_name,{noLinks:!0,noLinebreaks:!0}),t.rFullName=t.last_name?c.wrapRichText(t.first_name+" "+(t.last_name||""),{noLinks:!0,noLinebreaks:!0}):t.rFirstName):(t.rFirstName=c.wrapRichText(t.last_name,{noLinks:!0,noLinebreaks:!0})||t.rPhone||u("user_first_name_deleted"),t.rFullName=c.wrapRichText(t.last_name,{noLinks:!0,noLinebreaks:!0})||t.rPhone||u("user_name_deleted")),t.username&&(F[g(t.username)]=a),t.sortName=SearchIndexManager.cleanSearchText(t.first_name+" "+(t.last_name||""));var o=t.sortName.split(" "),s=o.shift(),r=o.pop();t.initials=s.charAt(0)+(r?r.charAt(0):s.charAt(1)),t.sortStatus=y(t.status);var l=B[a];void 0===l?l=B[a]=t:safeReplaceObject(l,t),e.$broadcast("user_update",a),void 0!==q[a]&&safeReplaceObject(q[a],t&&t.photo&&t.photo.photo_small||{empty:!0})}}function y(e){if(e){var t=e.expires||e.was_online;if(t)return t;{tsNow(!0)+H}switch(e._){case"userStatusRecently":return tsNow(!0)+H-259200;case"userStatusLastWeek":return tsNow(!0)+H-604800;case"userStatusLastMonth":return tsNow(!0)+H-2592e3}}return 0}function b(e){return angular.isObject(e)?e:B[e]||{id:e,deleted:!0,num:1}}function w(){return b(R)}function $(e){return angular.isObject(B[e])}function k(e,t){var n=b(e);return 333e3==e?{placeholder:"img/placeholders/[email protected]"}:(void 0===q[e]&&(q[e]=n&&n.photo&&n.photo.photo_small||{empty:!0}),{num:n.num,placeholder:"img/placeholders/"+t+"Avatar"+n.num+"@2x.png",location:q[e]})}function S(e){var t=b(e);return"u"+e+(t.access_hash?"_"+t.access_hash:"")}function C(e){var t=b(e);return"userSelf"==t._?{_:"inputUserSelf"}:{_:"inputUserForeign",user_id:e,access_hash:t.access_hash||0}}function M(){var t=tsNow(!0)+H;angular.forEach(B,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 A(t){var n=b(t);if(n&&n.status&&"userStatusOnline"!=n.status._&&"userStatusEmpty"!=n.status._){var i;"userStatusOffline"!=n.status._&&(delete n.status.wasStatus,i!=angular.copy(n.status)),n.status={_:"userStatusOnline",expires:tsNow(!0)+H+60,wasStatus:i},n.sortStatus=y(n.status),e.$broadcast("user_update",t)}}function x(e){var t=b(e);return t}function E(n,i){var a=e.$new();a.userID=n,a.override=i||{};t.open({templateUrl:templateUrl("user_modal"),controller:"UserModalController",scope:a,windowClass:"user_modal_window mobile_modal"})}function T(e,t,n){return r.invokeApi("contacts.importContacts",{contacts:[{_:"inputPhoneContact",client_id:"1",phone:e,first_name:t,last_name:n}],replace:!1}).then(function(e){_(e.users);var t=!1;return angular.forEach(e.imported,function(e){P(t=e.user_id,!0)}),t||!1})}function I(e){var t,n,i=[];for(t=0;t<e.length;t++)for(n=0;n<e[t].phones.length;n++)i.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 r.invokeApi("contacts.importContacts",{contacts:i,replace:!1}).then(function(e){_(e.users);var t=[];return angular.forEach(e.imported,function(e){P(e.user_id,!0),t.push(e.user_id)}),t})}function D(e){var t=[];return angular.forEach(e,function(e){t.push({_:"inputUserContact",user_id:e})}),r.invokeApi("contacts.deleteContacts",{id:t}).then(function(){angular.forEach(e,function(e){P(e,!1)})})}function P(t,n){if(angular.isArray(L)){var i=a=L.indexOf(parseInt(t)),a=-1!=i;n!=a&&(n?(L.push(t),SearchIndexManager.indexObject(t,m(t),j)):L.splice(i,1),e.$broadcast("contacts_update",t))}}function N(){return t.open({templateUrl:templateUrl("import_contact_modal"),controller:"ImportContactModalController",windowClass:"md_simple_modal_window mobile_modal"}).result.then(function(e){return e?e:a.reject()})}function U(t,n){var i=B[t];if(i){var a=n?{_:"userStatusOffline",was_online:tsNow(!0)+H}:{_:"userStatusOnline",expires:tsNow(!0)+H+500};i.status=a,i.sortStatus=y(i.status),e.$broadcast("user_update",t)}}var O,L,R,B={},F={},q={},j=SearchIndexManager.createIndex(),H=0;return d.get("server_time_offset").then(function(e){e&&(H=e)}),r.getUserID().then(function(e){R=e}),e.$on("apiUpdate",function(t,n){switch(n._){case"updateUserStatus":var i=n.user_id,a=B[i];a&&(a.status=n.status,a.sortStatus=y(a.status),e.$broadcast("user_update",i));break;case"updateUserPhoto":var i=n.user_id;B[i]&&(A(i),safeReplaceObject(B[i].photo,n.photo),void 0!==q[i]&&safeReplaceObject(q[i],n.photo&&n.photo.photo_small||{empty:!0}),e.$broadcast("user_update",i));break;case"updateContactLink":P(n.user_id,"contactLinkContact"==n.my_link._)}}),setInterval(M,6e4),{getContacts:h,saveApiUsers:_,saveApiUser:v,getUser:b,getSelf:w,getUserInput:C,setUserStatus:U,forceUserOnline:A,getUserPhoto:k,getUserString:S,getUserSearchText:m,hasUser:$,importContact:T,importContacts:I,deleteContacts:D,wrapForFull:x,openUser:E,resolveUsername:f,openImportContact:N}}]).service("PhonebookContactsService",["$q","$modal","$sce","FileManager",function(e,t,n,i){function a(){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(a){return e.reject(a)}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=i.getUrl(this.result.photo[0])}catch(a){}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:a,openPhonebookImport:o,getPhonebookContacts:s}}]).service("AppChatsManager",["$q","$rootScope","$modal","_","MtpApiFileManager","MtpApiManager","AppUsersManager","AppPhotosManager","RichTextProcessor",function(e,t,n,i,a,o,s,r,c){function l(e){angular.forEach(e,d)}function d(e){if(angular.isObject(e)){e.rTitle=c.wrapRichText(e.title,{noLinks:!0,noLinebreaks:!0})||i("chat_title_deleted");var n=SearchIndexManager.cleanSearchText(e.title||"").split(" "),a=n.shift(),o=n.pop();e.initials=a.charAt(0)+(o?o.charAt(0):a.charAt(1)),e.num=Math.abs(e.id>>1)%(Config.Mobile?4:8)+1,void 0===y[e.id]?y[e.id]=e:(safeReplaceObject(y[e.id],e),t.$broadcast("chat_update",e.id)),void 0!==$[e.id]&&safeReplaceObject($[e.id],e&&e.photo&&e.photo.photo_small||{empty:!0})}}function u(e){return y[e]||{id:e,deleted:!0}}function p(n){return void 0===b[n]||y[n].version!=b[n].participants.version&&!y[n].left?void 0!==w[n]?w[n]:w[n]=o.invokeApi("messages.getFullChat",{chat_id:n}).then(function(e){return l(e.chats),s.saveApiUsers(e.users),e.full_chat&&e.full_chat.chat_photo.id&&r.savePhoto(e.full_chat.chat_photo),delete w[n],t.$broadcast("chat_full_update",n),b[n]=e.full_chat}):e.when(b[n])}function m(e,t){return p(e).then(function(n){return!t&&n.exported_invite&&"chatInviteExported"==n.exported_invite._?n.exported_invite.link:o.invokeApi("messages.exportChatInvite",{chat_id:e}).then(function(t){return void 0!==b[e]&&(b[e].exported_invite=t),t.link})})}function h(e){return angular.isObject(y[e])}function g(e,t){var n=u(e);return void 0===$[e]&&($[e]=n&&n.photo&&n.photo.photo_small||{empty:!0}),{placeholder:"img/placeholders/"+t+"Avatar"+(Config.Mobile?n.num:Math.ceil(n.num/2))+"@2x.png",location:$[e]}}function f(e){u(e);return"g"+e}function _(e,t){var n=angular.copy(t),i=u(e);return n.participants&&"chatParticipants"==n.participants._&&o.getUserID().then(function(e){n.isAdmin=e==n.participants.admin_id,angular.forEach(n.participants.participants,function(t){t.user=s.getUser(t.user_id),t.canLeave=e==t.user_id,t.canKick=!t.canLeave&&(n.isAdmin||e==t.inviter_id)})}),n.thumb={placeholder:"img/placeholders/GroupAvatar"+(Config.Mobile?i.num:Math.ceil(i.num/2))+"@2x.png",location:i&&i.photo&&i.photo.photo_small,width:72,height:72,size:0},n.peerString=f(e),n.chat=i,n}function v(e){var i=t.$new();i.chatID=e;n.open({templateUrl:templateUrl("chat_modal"),controller:"ChatModalController",scope:i,windowClass:"chat_modal_window mobile_modal"})}var y={},b={},w={},$={};return t.$on("apiUpdate",function(e,n){switch(n._){case"updateChatParticipants":var i=n.participants,a=b[i.id];void 0!==a&&(a.participants=n.participants,t.$broadcast("chat_full_update",chatID));break;case"updateChatParticipantAdd":var a=b[n.chat_id];if(void 0!==a){for(var i=a.participants.participants||[],o=0,s=i.length;s>o;o++)if(i[o].user_id==n.user_id)return;i.push({_:"chatParticipant",user_id:n.user_id,inviter_id:n.inviter_id,date:tsNow(!0)}),a.participants.version=n.version,t.$broadcast("chat_full_update",n.chat_id)}break;case"updateChatParticipantDelete":var a=b[n.chat_id];if(void 0!==a)for(var i=a.participants.participants||[],o=0,s=i.length;s>o;o++)if(i[o].user_id==n.user_id)return i.splice(o,1),a.participants.version=n.version,void t.$broadcast("chat_full_update",n.chat_id)}}),{saveApiChats:l,saveApiChat:d,getChat:u,getChatFull:p,getChatPhoto:g,getChatString:f,getChatInviteLink:m,hasChat:h,wrapForFull:_,openChat:v}}]).service("AppPeersManager",["AppUsersManager","AppChatsManager","MtpApiManager",function(e,t){return{getInputPeer:function(e){var t="u"==e.charAt(0),n=e.substr(1).split("_");return t?{_:"inputPeerForeign",user_id:n[0],access_hash:n[1]}:{_:"inputPeerChat",chat_id:n[0]}},getInputPeerByID:function(t){return t>0?{_:"inputPeerForeign",user_id:t,access_hash:e.getUser(t).access_hash||0}:0>t?{_:"inputPeerChat",chat_id:-t}:void 0},getPeerSearchText:function(n){var i;if(n>0)i=e.getUserSearchText(n);else if(0>n){var a=t.getChat(-n);i=a.title||""}return i},getPeerString:function(n){return n>0?e.getUserString(n):t.getChatString(-n)},getOutputPeer:function(e){return e>0?{_:"peerUser",user_id:e}:{_:"peerChat",chat_id:-e}},getPeerID:function(e){if(angular.isObject(e))return e.user_id?e.user_id:-e.chat_id;var t="u"==e.charAt(0),n=e.substr(1).split("_");return t?n[0]:-n[0]||0},getPeer:function(n){return n>0?e.getUser(n):t.getChat(-n)},getPeerPhoto:function(n,i,a){return n>0?e.getUserPhoto(n,i):t.getChatPhoto(-n,a)}}}]).service("AppMessagesManager",["$q","$rootScope","$location","$filter","$timeout","$sce","ApiUpdatesManager","AppUsersManager","AppChatsManager","AppPeersManager","AppPhotosManager","AppVideoManager","AppDocsManager","AppAudioManager","AppWebPagesManager","MtpApiManager","MtpApiFileManager","RichTextProcessor","NotificationsManager","PeersSelectService","Storage","FileManager","TelegramMeWebService","ErrorService","StatusManager","_",function(e,t,n,i,a,o,s,r,c,l,d,u,p,m,h,g,f,_,v,y,b,w,$,k,S,C){function M(t,n,i){var a=st;if(angular.isString(t)&&t.length){if(!i||mt.query!==t){mt.query=t;var o=SearchIndexManager.search(t,pt);mt.dialogs=[],angular.forEach(st.dialogs,function(e){o[e.peerID]&&mt.dialogs.push(e)}),mt.count=mt.dialogs.length}a=mt}else mt.query=!1;var s=0;if(n>0)for(s=0;s<a.dialogs.length&&!(n>a.dialogs[s].top_message);s++);return null!==a.count&&a.dialogs.length==a.count||a.dialogs.length>=s+(i||1)?e.when({count:a.count,dialogs:a.dialogs.slice(s,s+(i||20))}):(i=i||20,g.invokeApi("messages.getDialogs",{offset:s,limit:i,max_id:n||0}).then(function(e){if($.setAuthorized(!0),r.saveApiUsers(e.users),c.saveApiChats(e.chats),L(e.messages),n>0)for(s=0;s<a.dialogs.length&&!(n>a.dialogs[s].top_message);s++);return a.count=e.count||e.dialogs.length,!n&&a.dialogs.length&&X(a.dialogs[0].top_message),a.dialogs.splice(s,a.dialogs.length-s),angular.forEach(e.dialogs,function(e){var t=l.getPeerID(e.peer),n=l.getPeerSearchText(t);if(SearchIndexManager.indexObject(t,n,pt),a.dialogs.push({peerID:t,top_message:e.top_message,unread_count:e.unread_count}),void 0===ot[t]&&(ot[t]={count:null,history:[e.top_message],pending:[]}),v.savePeerSettings(t,e.notify_settings),e.unread_count>0&&$t&&e.top_message>$t){var i=I(e.top_message),o=16&i.flags?i.from_id:t;i.unread&&!i.out&&v.getPeerMuted(o).then(function(e){e||b.get("notify_nopreview").then(function(e){J(i,e)})})}}),{count:a.count,dialogs:a.dialogs.slice(s,s+i)}}))}function A(e,t,n,i){return g.invokeApi("messages.getHistory",{peer:e,offset:i||0,limit:n||0,max_id:t||0},{noErrorBox:!0}).then(function(e){return r.saveApiUsers(e.users),c.saveApiChats(e.chats),L(e.messages),e})}function x(e,t,n,i){return A(e,t,n).then(function(a){i.count=a.count||a.messages.length;var o=0;if(!t&&a.messages.length&&(t=a.messages[0].id+1),t>0)for(o=0;o<i.history.length&&!(t>i.history[o]);o++);return i.history.splice(o,i.history.length-o),angular.forEach(a.messages,function(e){i.history.push(e.id)}),n-=a.messages.length,n>0&&i.history.length<i.count?(t=i.history[i.history.length-1],x(e,t,n,i)):!0})}function E(t,n,i,a,o){var s=l.getPeerID(t),r=ot[s],c=0,d=!1,u=!1,p=!1;if(o=o?Math.min(50,o):0,void 0===r&&(r=ot[s]={count:null,history:[],pending:[]}),i||n){if(n>0)for(d=!0,c=0;c<r.history.length;c++)if(n>r.history[c]){d=!1;break}}else{var m=Z(s);if(m&&m[0]&&m[0].unread_count>1){var h=m[0].unread_count;(p=h>50)?(i=20,u=16,c=h-u):(i=Math.max(10,o,h+2),u=h)}else Config.Mobile&&(i=20)}if(!d&&(null!==r.count&&r.history.length==r.count||r.history.length>=c+(i||1))){a?(a=Math.min(c,a),c=Math.max(0,c-a),i+=a):i=i||(c?20:o||5);var g=r.history.slice(c,c+i);return!n&&r.pending.length&&(g=r.pending.slice().concat(g)),e.when({count:r.count,history:g,unreadOffset:u,unreadSkip:p})}return a||i||(i=o||20),d&&(c=0),a||p||n&&-1==r.history.indexOf(n)?(a&&(c=-a,i+=a),A(t,n,i,c).then(function(e){r.count=e.count||e.messages.length;var t=[];return angular.forEach(e.messages,function(e){t.push(e.id)}),!n&&r.pending.length&&(t=r.pending.slice().concat(t)),{count:r.count,history:t,unreadOffset:u,unreadSkip:p}})):x(t,n,i,r).then(function(){if(c=0,n>0)for(c=0;c<r.history.length&&!(n>r.history[c]);c++);var e=r.history.slice(c,c+i);return!n&&r.pending.length&&(e=r.pending.slice().concat(e)),{count:r.count,history:e,unreadOffset:u,unreadSkip:p}})}function T(t,n,i,a,o){var s=[],d=!n,u=l.getPeerID(t),p={peer:u,filter:i},m=d&&angular.equals(ht,p);if(d&&!m&&(ht=p,gt=[]),!a&&!n){var h=ot[u];if(void 0!==h&&h.history.length){var f,_,v={},y=o||20;switch(i._){case"inputMessagesFilterPhotos":v.messageMediaPhoto=!0;break;case"inputMessagesFilterVideo":v.messageMediaVideo=!0;break;case"inputMessagesFilterPhotoVideo":v.messageMediaPhoto=!0,v.messageMediaVideo=!0;break;case"inputMessagesFilterDocument":v.messageMediaDocument=!0;break;case"inputMessagesFilterAudio":v.messageMediaAudio=!0}for(f=0;f<h.history.length&&(_=nt[h.history[f]],!(_.media&&v[_.media._]&&(s.push(_.id),s.length>=y)));f++);}if(s.length<y&&gt.length&&m)for(var b=s.length?s[s.length-1]:4294967295,f=0;f<gt.length&&!(gt[f]<b&&(s.push(gt[f]),s.length>=y));f++);}return s.length||1e3==o?(d&&(gt=listMergeSorted(gt,s)),e.when({count:null,history:s})):g.invokeApi("messages.search",{peer:t,q:n||"",filter:i||{_:"inputMessagesFilterEmpty"},min_date:0,max_date:0,limit:o||20,max_id:a||0}).then(function(e){r.saveApiUsers(e.users),c.saveApiChats(e.chats),L(e.messages);var t=e.count||e.messages.length;return s=[],angular.forEach(e.messages,function(e){s.push(e.id)}),d&&(gt=listMergeSorted(gt,s)),{count:t,history:s}},function(t){return 400==t.code&&(t.handled=!0),e.reject(t)})}function I(e){return nt[e]||{deleted:!0}}function D(e){return g.invokeApi("messages.deleteMessages",{id:e}).then(function(t){return s.processUpdateMessage({_:"updateShort",update:{_:"updateDeleteMessages",messages:e,pts:t.pts,pts_count:t.pts_count}}),e})}function P(t,n,i){return s.processUpdateMessage({_:"updateShort",update:{_:"updatePts",pts:n.pts,pts_count:n.pts_count}}),n.offset?g.invokeApi(i,{peer:t,offset:n.offset,max_id:0}).then(function(e){return P(t,e,i)}):e.when()}function N(e){var n=l.getPeerID(e),i=ot[n],a=Z(n);if(!a[0]||!a[0].unread_count){if(!i||!i.history.length)return!1;var o,s,r=!1;for(c=i.history.length;c>=0;c--)if(o=i.history[c],s=nt[o],s&&!s.out&&s.unread){r=!0;break}if(!r)return!1}if(i.readPromise)return i.readPromise;if(i.readPromise=g.invokeApi("messages.readHistory",{peer:e,offset:0,max_id:0}).then(function(t){return P(e,t,"messages.readHistory")}).then(function(){a[0]&&(a[0].unread_count=0,t.$broadcast("dialog_unread",{peerID:n,count:0}),t.$broadcast("messages_read"))})["finally"](function(){delete i.readPromise}),i&&i.history.length){var o,s,c,n,a;for(c=0;c<i.history.length;c++)o=i.history[c],s=nt[o],s&&!s.out&&(s.unread=!1,it[o]&&(it[o].unread=!1),at[o]&&(at[o].unread=!1),v.cancel("msg"+o))}return i.readPromise}function U(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 O(e){{var n=l.getPeerID(e);ot[n]}return g.invokeApi("messages.deleteHistory",{peer:e,offset:0}).then(function(t){return P(e,t,"messages.deleteHistory")}).then(function(){var e=Z(n);e[0]&&st.dialogs.splice(e[1],1),delete ot[n],t.$broadcast("dialog_flush",{peerID:n})})}function L(e){angular.forEach(e,function(e){if(e.unread=1&e.flags?!0:!1,e.out=2&e.flags?!0:!1,e.media_unread=32&e.flags?!0:!1,nt[e.id]=e,e.date-=vt,e.media)switch(e.media._){case"messageMediaEmpty":delete e.media;break;case"messageMediaPhoto":d.savePhoto(e.media.photo);break;case"messageMediaVideo":u.saveVideo(e.media.video);break;case"messageMediaDocument":p.saveDoc(e.media.document);break;case"messageMediaAudio":m.saveAudio(e.media.audio);break;case"messageMediaWebPage":h.saveWebPage(e.media.webpage,e.id)}e.action&&"messageActionChatEditPhoto"==e.action._&&d.savePhoto(e.action.photo)})}function R(e,n,i){if(angular.isString(n)&&n.length){i=i||{};var a,o=ut--,r=[nextRandomInt(4294967295),nextRandomInt(4294967295)],c=bigint(r[0]).shiftLeft(32).add(bigint(r[1])).toString(),d=ot[e],u=l.getInputPeerByID(e),p=0,m=i.replyToMsgID;void 0===d&&(d=ot[e]={count:null,history:[],pending:[]}),g.getUserID().then(function(i){e!=i&&(p|=3),m&&(p|=8),a={_:"message",id:o,from_id:i,to_id:l.getOutputPeer(e),flags:p,date:tsNow(!0)+vt,message:n,random_id:c,reply_to_msg_id:m,pending:!0};var h=function(e){var n=it[o];e?(a.error=!0,n&&(n.error=!0)):(delete a.error,n&&delete n.error),t.$broadcast("messages_pending")};a.send=function(){h(!1);var t={};lt[e]&&(t.afterMessageID=lt[e].messageID);var i=0;m&&(i|=1),g.invokeApi("messages.sendMessage",{flags:i,peer:u,message:n,random_id:r,reply_to_msg_id:m},t).then(function(e){a.date=e.date,a.id=e.id,a.media=e.media,s.processUpdateMessage({_:"updates",users:[],chats:[],seq:0,updates:[{_:"updateMessageID",random_id:c,id:e.id},{_:"updateNewMessage",message:a,pts:e.pts,pts_count:e.pts_count}]})},function(){h(!0)})["finally"](function(){lt[e]===t&&delete lt[e]}),lt[e]=t},L([a]),d.pending.unshift(o),t.$broadcast("history_append",{peerID:e,messageID:o,my:!0}),a.send()}),rt[c]=[e,o]}}function B(n,i,a){a=a||{};var o,r,c=ut--,d=[nextRandomInt(4294967295),nextRandomInt(4294967295)],u=bigint(d[0]).shiftLeft(32).add(bigint(d[1])).toString(),p=ot[n],m=l.getInputPeerByID(n),h=0,_=a.replyToMsgID;a.isMedia?["image/jpeg","image/png","image/bmp"].indexOf(i.type)>=0?(o="photo",r="photo."+i.type.split("/")[1]):"video/"==i.type.substr(0,6)?(o="video",r="video.mp4"):"audio/"==i.type.substr(0,6)?(o="audio",r="audio."+("ogg"==i.type.split("/")[1]?"ogg":"mp3")):(o="document",r="document."+i.type.split("/")[1]):(o="document",r="document."+i.type.split("/")[1]),void 0===p&&(p=ot[n]={count:null,history:[],pending:[]}),g.getUserID().then(function(a){n!=a&&(h|=3),_&&(h|=8);var v,y={_:"messageMediaPending",type:o,file_name:i.name||r,size:i.size,progress:{percent:1,total:i.size}},b={_:"message",id:c,from_id:a,to_id:l.getOutputPeer(n),flags:h,date:tsNow(!0)+vt,message:"",media:y,random_id:u,reply_to_msg_id:_,pending:!0},w=function(e){var n=it[c];e?(b.error=!0,n&&(n.error=!0)):(delete b.error,n&&delete n.error),t.$broadcast("messages_pending")},$=!1;b.send=function(){var a=e.defer();dt.then(function(){(!$||b.error)&&($=!1,v=f.uploadFile(i)),v.then(function(e){e.name=r,$=!0;var t;switch(o){case"photo":t={_:"inputMediaUploadedPhoto",file:e};break;case"video":t={_:"inputMediaUploadedVideo",file:e,duration:0,w:0,h:0,mime_type:i.type};break;case"audio":t={_:"inputMediaUploadedAudio",file:e,duration:0,mime_type:i.type};break;case"document":default:t={_:"inputMediaUploadedDocument",file:e,mime_type:i.type,attributes:[{_:"documentAttributeFilename",file_name:i.name}]}}var n=0;_&&(n|=1),g.invokeApi("messages.sendMedia",{flags:n,peer:m,media:t,random_id:d,reply_to_msg_id:_}).then(function(e){s.processUpdateMessage(e)},function(e){return"photo"==o&&400==e.code&&"PHOTO_INVALID_DIMENSIONS"==e.type?(e.handled=!0,o="document",void b.send()):void w(!0)})},function(){w(!0)},function(e){y.progress.done=e.done,y.progress.percent=Math.max(1,Math.floor(100*e.done/e.total)),t.$broadcast("history_update",{peerID:n})}),y.progress.cancel=function(){$||(a.resolve(),v.cancel(),j(u))},v["finally"](function(){a.resolve()})}),dt=a.promise},L([b]),p.pending.unshift(c),t.$broadcast("history_append",{peerID:n,messageID:c,my:!0}),b.send()}),rt[u]=[n,c]}function F(e,n,i){i=i||{};var a=ut--,o=[nextRandomInt(4294967295),nextRandomInt(4294967295)],r=bigint(o[0]).shiftLeft(32).add(bigint(o[1])).toString(),c=ot[e],u=l.getInputPeerByID(e),m=i.replyToMsgID;void 0===c&&(c=ot[e]={count:null,history:[],pending:[]}),g.getUserID().then(function(i){var h;switch(n._){case"inputMediaContact":h=angular.extend({},n,{_:"messageMediaContact"});break;case"inputMediaPhoto":h={_:"messageMediaPhoto",photo:d.getPhoto(n.id.id)};break;case"inputMediaDocument":h={_:"messageMediaDocument",document:p.getDoc(n.id.id)}}var f={_:"message",id:a,from_id:i,to_id:l.getOutputPeer(e),flags:e==i?0:3,date:tsNow(!0)+vt,message:"",media:h,random_id:r,pending:!0},_=function(e){var n=it[a];e?(f.error=!0,n&&(n.error=!0)):(delete f.error,n&&delete n.error),t.$broadcast("messages_pending")};f.send=function(){var e=0;m&&(e|=1),g.invokeApi("messages.sendMedia",{flags:e,peer:u,media:n,random_id:o,reply_to_msg_id:m}).then(function(e){s.processUpdateMessage(e)},function(){_(!0)})},L([f]),c.pending.unshift(a),t.$broadcast("history_append",{peerID:e,messageID:a,my:!0}),f.send()}),rt[r]=[e,a]}function q(e,t){t=t.sort();for(var n,i=[],n=(t.length,0);n<t.length;n++)i.push([nextRandomInt(4294967295),nextRandomInt(4294967295)]);return g.invokeApi("messages.forwardMessages",{peer:l.getInputPeerByID(e),id:t,random_id:i}).then(function(e){s.processUpdateMessage(e)})}function j(e){var t=rt[e];if(console.log("pending",e,t),t){var n=t[0],i=t[1],a=ot[n],o=a.pending.indexOf(i);return s.processUpdateMessage({_:"updateShort",update:{_:"updateDeleteMessages",messages:[i]}}),-1!=o&&a.pending.splice(o,1),delete it[i],delete nt[i],!0}return!1}function H(e,n){var i=rt[e];if(i){var a,o,s=i[0],r=i[1],c=ot[s],l=c.pending.indexOf(r);return-1!=l&&c.pending.splice(l,1),(a=nt[r])&&(delete a.pending,delete a.error,delete a.random_id,delete a.send),(o=it[r])&&(it[n.id]=angular.extend(o,G(n.id)),delete o.pending,delete o.error,delete o.random_id,delete o.send,t.$broadcast("messages_pending")),delete it[r],delete nt[r],a}return!1}function z(e){return g.invokeApi("messages.checkChatInvite",{hash:e}).then(function(n){var i;if("chatInviteAlready"==n._){if(c.saveApiChat(n.chat),!n.chat.left)return t.$broadcast("history_focus",{peerString:c.getChatString(n.chat.id)});i=n.chat.title}else i=n.title;k.confirm({type:"JOIN_GROUP_BY_LINK",title:i}).then(function(){return g.invokeApi("messages.importChatInvite",{hash:e}).then(function(e){if(s.processUpdateMessage(e),e.updates&&e.updates.length)for(var n,i=0,a=e.updates.length;a>i;i++)if(n=e.updates[i],"updateNewMessage"==n._){t.$broadcast("history_focus",{peerString:c.getChatString(n.message.to_id.chat_id)});break}})})})}function V(e){var t=e.to_id&&l.getPeerID(e.to_id)||0;return 0>t?t:e.out||2&e.flags?t:e.from_id}function W(e,t){var n=-1!=t;if(n&&void 0!==at[e])return at[e];var i=angular.copy(nt[e]);return i&&i.to_id?((i.chatID=i.to_id.chat_id)?(i.peerID=-i.chatID,i.peerData=c.getChat(i.chatID)):(i.peerID=i.out?i.to_id.user_id:i.from_id,i.peerData=r.getUser(i.peerID)),i.peerString=l.getPeerString(i.peerID),i.peerPhoto=l.getPeerPhoto(i.peerID,"User","Group"),i.unreadCount=t,"messageService"==i._&&i.action.user_id&&(i.action.user=r.getUser(i.action.user_id)),i.message&&i.message.length&&(i.richMessage=_.wrapRichText(i.message.substr(0,64),{noLinks:!0,noLinebreaks:!0})),i.dateText=kt(i.date),n&&(at[e]=i),i):i}function G(e){if(void 0!==it[e])return it[e];var t=angular.copy(nt[e])||{id:e};if(t.media&&void 0!==t.media.progress&&(t.media.progress=nt[e].media.progress),t.media)switch(t.media.caption&&t.media.caption.length&&(t.media.rCaption=_.wrapRichText(t.media.caption)),t.media._){case"messageMediaPhoto":t.media.photo=d.wrapForHistory(t.media.photo.id);break;case"messageMediaVideo":t.media.video=u.wrapForHistory(t.media.video.id);break;case"messageMediaDocument":t.media.document=p.wrapForHistory(t.media.document.id);break;case"messageMediaAudio":t.media.audio=m.wrapForHistory(t.media.audio.id);break;case"messageMediaGeo":var n="https://maps.google.com/?q="+t.media.geo.lat+","+t.media.geo["long"];t.media.mapUrl=o.trustAsResourceUrl(n);break;case"messageMediaVenue":var n;n="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(n);break;case"messageMediaContact":t.media.rFullName=_.wrapRichText(t.media.first_name+" "+(t.media.last_name||""),{noLinks:!0,noLinebreaks:!0});break;case"messageMediaWebPage":if(!t.media.webpage||"webPageEmpty"==t.media.webpage._||Config.Mobile){delete t.media;break}t.media.webpage=h.wrapForHistory(t.media.webpage.id)}else if(t.action)switch(t.action._){case"messageActionChatEditPhoto":t.action.photo=d.wrapForHistory(t.action.photo.id);break;case"messageActionChatCreate":case"messageActionChatEditTitle":t.action.rTitle=_.wrapRichText(t.action.title,{noLinks:!0,noLinebreaks:!0})||C("chat_title_deleted")}var i=t.reply_to_msg_id;if(i&&(nt[i]?t.reply_to_msg=W(i):(t.reply_to_msg={id:i,loading:!0},-1==ft.indexOf(i)&&(ft.push(i),_t===!1&&(_t=setTimeout(K,100))))),t.message&&t.message.length){var a={};if(Config.Navigator.mobile||(a.extractUrlEmbed=!0),16&t.flags){var s=r.getSelf();s&&(a.highlightUsername=s.username)}t.richMessage=_.wrapRichText(t.message,a),a.extractedUrlEmbed&&(t.richUrlEmbed=a.extractedUrlEmbed)}return it[e]=t}function K(){if(_t!==!1&&(clearTimeout(_t),_t=!1),ft.length){var e=ft.slice();ft=[],g.invokeApi("messages.getMessages",{id:e}).then(function(n){r.saveApiUsers(n.users),c.saveApiChats(n.chats),L(n.messages),t.$broadcast("messages_downloaded",e)})}}function Y(e,t){if(!e||!e.length)return!1;var n,i,a,o,s,r,c,l=0,d=e.length,u=d,p=!1,m=!Config.Mobile;for(t>0?u=Math.min(t,d):0>t&&(l=Math.max(0,u+t)),n=l;u>n;n++){if(o=e[n],i=Math.floor((o.date+tt)/86400),c=s&&s.grouped,r=o.grouped,i===a?o.needDate&&(delete o.needDate,p=!0):(!n||s)&&(o.needDate||(o.needDate=!0,p=!0)),o.fwd_from_id&&o.media&&o.media.document&&o.media.document.sticker&&(o.from_id!=(s||{}).from_id||!(s||{}).fwd_from_id)&&(delete o.fwd_from_id,o._="message"),s&&o.from_id==s.from_id&&!s.fwd_from_id==!o.fwd_from_id&&!s.action&&!o.action&&o.date<s.date+900){var h=o.message&&o.message.length<70&&-1==o.message.indexOf("\n")&&!o.reply_to_msg_id;o.grouped=m&&o.fwd_from_id&&o.fwd_from_id==s.fwd_from_id?h?"im_grouped_fwd_short":"im_grouped_fwd":!o.fwd_from_id&&h?"im_grouped_short":"im_grouped",m&&o.fwd_from_id&&(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.fwd_from_id&&(s.grouped+=" im_grouped_fwd_end"));p||c==(s&&s.grouped)||(p=!0),s=o,a=i}return p||r==(s&&s.grouped)||(p=!0),p}function Z(e){for(var t=0;t<st.dialogs.length;t++)if(st.dialogs[t].peerID==e)return[st.dialogs[t],t];return[]}function X(e){$t!==!1&&e&&e>$t&&b.set({max_seen_msg:e})}function J(e,n){var i,a,o=V(e),s=r.getUser(e.from_id),l=r.getUserPhoto(e.from_id,"User"),d={},u=!1;if(e.message)u=n?C("conversation_message_sent"):_.wrapPlainText(e.message);else if(e.media)switch(e.media._){case"messageMediaPhoto":u=C("conversation_media_photo_raw");break;case"messageMediaVideo":u=C("conversation_media_video_raw");break;case"messageMediaDocument":if(e.media.document.sticker){u=C("conversation_media_sticker");var p=EmojiHelper.stickers[e.media.document.id];void 0!==p&&(u=_.wrapPlainText(p)+" ("+u+")")}else u=e.media.document.file_name||C("conversation_media_document_raw");break;case"messageMediaAudio":u=C("conversation_media_audio_raw");break;case"messageMediaGeo":case"messageMediaVenue":u=C("conversation_media_location_raw");break;case"messageMediaContact":u=C("conversation_media_contact_raw");break;default:u=C("conversation_media_attachment_raw")}else if("messageService"==e._)switch(e.action._){case"messageActionChatCreate":u=C("conversation_group_created_raw");break;case"messageActionChatEditTitle":u=C("conversation_group_renamed_raw");break;case"messageActionChatEditPhoto":u=C("conversation_group_photo_updated_raw");break;case"messageActionChatDeletePhoto":u=C("conversation_group_photo_removed_raw");break;case"messageActionChatAddUser":u=C(e.action.user_id==e.from_id?"conversation_returned_to_group":"conversation_invited_user_message_raw");break;case"messageActionChatDeleteUser":u=C(e.action.user_id==e.from_id?"conversation_left_group":"conversation_kicked_user_message_raw")}o>0?(d.title=(s.first_name||"")+(s.first_name&&s.last_name?" ":"")+(s.last_name||""),d.title||(d.title=s.phone||C("conversation_unknown_user_raw")),a=l,i=r.getUserString(o)):(d.title=(s.first_name||s.last_name||C("conversation_unknown_user_raw"))+" @ "+(c.getChat(-o).title||C("conversation_unknown_chat_raw")),a=c.getChatPhoto(-o,"Group"),i=c.getChatString(-o)),d.title=_.wrapPlainText(d.title),d.onclick=function(){t.$broadcast("history_focus",{peerString:i,messageID:16&e.flags?e.id:0})},d.message=u,d.image=a.placeholder,d.key="msg"+e.id,d.tag=i,a.location&&!a.location.empty?f.downloadSmallFile(a.location,a.size).then(function(t){d.image=w.getUrl(t,"image/jpeg"),e.unread&&v.notify(d)}):v.notify(d)}function Q(){a.cancel(St),St=!1,t.$broadcast("history_multiappend",Ct),Ct={}}function et(){a.cancel(Mt),Mt=!1,t.$broadcast("dialogs_multiupdate",At),At={}
}var tt,nt={},it={},at={},ot={},st={count:null,dialogs:[]},rt={},ct={},lt={},dt=e.when(),ut=-1,pt=SearchIndexManager.createIndex(),mt={query:!1},ht={},gt=[],ft=[],_t=!1,vt=0,yt=tsNow(!0),bt=yt-yt%86400,wt=new Date,$t=!1;Config.Modes.packed&&b.get("max_seen_msg").then(function(e){$t=e||0}),b.get("server_time_offset").then(function(e){e&&(vt=e)});var kt=i("dateOrTime");wt.setHours(0),wt.setMinutes(0),wt.setSeconds(0),tt=bt-Math.floor(+wt/1e3),v.start(),window.navigator.mozSetMessageHandler&&window.navigator.mozSetMessageHandler("activity",function(e){var n=e.source;console.log(dT(),"Received activity",n.name,n.data),"share"===n.name&&n.data.blobs.length>0&&y.selectPeers({confirm_type:"EXT_SHARE_PEER"}).then(function(e){angular.forEach(e,function(e){var t=l.getPeerID(e);angular.forEach(n.data.blobs,function(e){B(t,e,{isMedia:!0})})}),1==e.length&&t.$broadcast("history_focus",{peerString:e[0]})})});var St=!1,Ct={},Mt=!1,At={};return t.$on("apiUpdate",function(e,n){switch(n._){case"updateMessageID":ct[n.id]=n.random_id;break;case"updateNewMessage":var i=n.message,o=V(i),s=ot[o];if(void 0!==s){var c=s.history;if(-1!=c.indexOf(i.id))return!1;var d=c[0];c.unshift(i.id),i.id>0&&i.id<d&&c.sort(function(e,t){return t-e}),null!==s.count&&s.count++}else s=ot[o]={count:null,history:[i.id],pending:[]};L([i]),i.out||r.forceUserOnline(i.from_id);var u,p=ct[i.id];p&&((u=H(p,i))&&t.$broadcast("history_update",{peerID:o}),delete ct[i.id]),u||(void 0===Ct[o]&&(Ct[o]=[]),Ct[o].push(i.id),St||(St=a(Q,0)));var m,h=Z(o),g=!i.out&&i.unread;if(h.length?(m=h[0],h[1]>0&&(st.dialogs.splice(h[1],1),st.dialogs.unshift(m)),m.top_message=i.id,g&&m.unread_count++):(SearchIndexManager.indexObject(o,l.getPeerSearchText(o),pt),m={peerID:o,unread_count:g?1:0,top_message:i.id},st.dialogs.unshift(m)),At[o]=m,Mt||(Mt=a(et,0)),g&&(t.selectedPeerID!=o||t.idle.isIDLE)){var f=16&i.flags?i.from_id:o,_=v.getPeerMuted(f),y=t.idle.isIDLE&&S.isOtherDeviceActive()?3e4:1e3;setTimeout(function(){_.then(function(e){i.unread&&!e&&b.get("notify_nopreview").then(function(e){J(i,e)})})},y)}X(i.id);break;case"updateReadHistoryInbox":case"updateReadHistoryOutbox":var w,i,$,k=n.max_id,C="updateReadHistoryOutbox"==n._,o=l.getPeerID(n.peer),h=Z(o),c=(ot[o]||{}).history||[],M=!1,A=c.length,x=!1;for(o>0&&C&&r.forceUserOnline(o),$=0;A>$;$++)if(w=c[$],!(w>k)&&(i=nt[w],i.out==C)){if(!i.unread)break;i&&i.unread&&(i.unread=!1,it[w]&&(it[w].unread=!1,x||(x=!0)),at[w]&&(at[w].unread=!1),i.out||(h&&(M=--h[0].unread_count),v.cancel("msg"+w)))}M!==!1&&t.$broadcast("dialog_unread",{peerID:o,count:M}),x&&t.$broadcast("messages_read");break;case"updateReadMessagesContents":var $,w,i,E,T=n.messages,I=T.length;for($=0;I>$;$++)w=T[$],(i=nt[w])&&delete i.media_unread,(E=it[w])&&delete E.media_unread;break;case"updateDeleteMessages":var w,i,$,o,h,c,D={};for($=0;$<n.messages.length;$++)w=n.messages[$],i=nt[w],i&&(o=V(i),c=D[o]||(D[o]={count:0,unread:0,msgs:{}}),!i.out&&i.unread&&(c.unread++,v.cancel("msg"+w)),c.count++,c.msgs[w]=!0,it[w]&&(it[w].deleted=!0,delete it[w]),at[w]&&(at[w].deleted=!0,delete at[w]),i.deleted=!0,nt[w]={deleted:!0,id:w,from_id:i.from_id,to_id:i.to_id,flags:i.flags,out:i.out,unread:i.unread,date:i.date});angular.forEach(D,function(e,n){var i=Z(n);i&&e.unread&&(i[0].unread_count-=e.unread,t.$broadcast("dialog_unread",{peerID:n,count:i[0].unread_count}));var a=ot[n];if(void 0!==a){for(var o=[],s=[],r=0;r<a.history.length;r++)e.msgs[a.history[r]]||o.push(a.history[r]);a.history=o;for(var r=0;r<a.pending.length;r++)e.msgs[a.pending[r]]||s.push(a.pending[r]);a.pending=s,t.$broadcast("history_delete",{peerID:n,msgs:e.msgs})}})}}),t.$on("webpage_updated",function(e,t){angular.forEach(t.msgs,function(e){var n=it[e];n&&(n.media={_:"messageMediaWebPage",webpage:h.wrapForHistory(t.id)})})}),{getDialogs:M,getHistory:E,getSearch:T,getMessage:I,readHistory:N,readMessages:U,flushHistory:O,deleteMessages:D,saveMessages:L,sendText:R,sendFile:B,sendOther:F,forwardMessages:q,openChatInviteLink:z,getMessagePeer:V,wrapForDialog:W,wrapForHistory:G,regroupWrappedHistory:Y}}]).service("AppPhotosManager",["$modal","$window","$rootScope","MtpApiManager","MtpApiFileManager","AppUsersManager","FileManager",function(e,t,n,i,a,o,s){function r(e){f[e.id]=e,angular.forEach(e.sizes,function(e){"photoCachedSize"==e._&&(a.saveSmallFile(e.location,e.bytes),e.size=e.bytes.length,delete e.bytes,e._="photoSize")})}function c(e,t,n){Config.Navigator.retina&&(t*=2,n*=2);var i={_:"photoSizeEmpty"},a=16777215;return angular.forEach(e.sizes,function(e){var o=Math.abs(e.w*e.h-t*n);a>o&&(i=e,a=o)}),i}function l(e,t,n){return i.invokeApi("photos.getUserPhotos",{user_id:e,offset:0,limit:n||20,max_id:t||0}).then(function(e){o.saveApiUsers(e.users);for(var t=[],n=0;n<e.photos.length;n++)r(e.photos[n]),t.push(e.photos[n].id);return{count:e.count||e.photos.length,photos:t}})}function d(e){if(f[e]){var n=f[e],i=$(window).width()-(Config.Mobile?20:32),o=$(t).height()-(Config.Mobile?150:116);i>800&&(i-=208);var s=c(n,i,o);s&&!s.preloaded&&(s.preloaded=!0,s.size?a.downloadFile(s.location.dc_id,{_:"inputFileLocation",volume_id:s.location.volume_id,local_id:s.location.local_id,secret:s.location.secret},s.size):a.downloadSmallFile(s.location))}}function u(e){return f[e]||{_:"photoEmpty"}}function p(e,t){t=t||{};var n=angular.copy(f[e])||{_:"photoEmpty"},i=t.website?100:Math.min(_-80,Config.Mobile?210:260),a=t.website?100:Math.min(v-100,Config.Mobile?210:260),o=c(n,i,a),s={placeholder:"img/placeholders/PhotoThumbConversation.gif",width:i,height:a};if(o&&"photoSizeEmpty"!=o._){var r=calcImageInBox(o.w,o.h,i,a);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),i=$(window).width()-(Config.Mobile?0:32),a=$(t).height()-(Config.Mobile?0:116);!Config.Mobile&&i>800&&(i-=208);var o=c(n,i,a),s={placeholder:"img/placeholders/PhotoThumbModal.gif"};if(s.width=i,s.height=a,o&&"photoSizeEmpty"!=o._){var r=calcImageInBox(o.w,o.h,i,a,!0);s.width=r.w,s.height=r.h,s.modalWidth=Math.max(s.width,Math.min(400,i)),s.location=o.location,s.size=o.size}return n.full=s,n}function h(t,i){if(!t||"0"===t)return!1;var a=n.$new(!0);a.photoID=t;var o="PhotoModalController";i&&i.p>0?(o="UserpicModalController",a.userID=i.p):i&&i.p<0?(o="ChatpicModalController",a.chatID=-i.p):i&&i.m>0&&(a.messageID=i.m,i.w&&(a.webpageID=i.w));e.open({templateUrl:templateUrl("photo_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:o,scope:a,windowClass:"photo_modal_window"})}function g(e){var n=f[e],i="jpg",o="image/jpeg",r="photo"+e+"."+i,l=Math.max(screen.width||0,$(window).width()-36,800),d=Math.max(screen.height||0,$(t).height()-150,800),u=c(n,l,d),p={_:"inputFileLocation",volume_id:u.location.volume_id,local_id:u.location.local_id,secret:u.location.secret};s.chooseSave(r,i,o).then(function(e){e&&a.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=a.getCachedFile(p);return e?s.download(e,o,r):void a.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=h,{savePhoto:r,preloadPhoto:d,getUserPhotos:l,getPhoto:u,choosePhotoSize:c,wrapForHistory:p,wrapForFull:m,openPhoto:h,downloadPhoto:g}}]).service("AppWebPagesManager",["$modal","$sce","$window","$rootScope","MtpApiManager","AppPhotosManager","RichTextProcessor",function(e,t,n,i,a,o,s){function r(e,t){e.photo&&"photo"===e.photo._?o.savePhoto(e.photo):delete e.photo,e.rTitle=s.wrapRichText(e.title||e.author,{noLinks:!0,noLinebreaks:!0});var n="";if("GitHub"==e.site_name){var a=e.url.match(/(https?:\/\/github\.com\/[^\/]+\/[^\/]+)/);a&&(n=a[0]+"/issues/{1}")}if(e.rDescription=s.wrapRichText(e.description,{contextSite:e.site_name||"external",contextHashtag:n}),t&&(void 0===p[e.id]&&(p[e.id]={}),p[e.id][t]=!0,u[e.id]=e),void 0===u[e.id]?u[e.id]=e:safeReplaceObject(u[e.id],e),!t&&void 0!==p[e.id]){var r=[];angular.forEach(p[e.id],function(e,t){r.push(t)}),i.$broadcast("webpage_updated",{id:e.id,msgs:r})}}function c(t,n){var a=i.$new(!0);a.webpageID=t,a.messageID=n,e.open({templateUrl:templateUrl("embed_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:"EmbedModalController",scope:a,windowClass:"photo_modal_window"})}function l(e){var t=angular.copy(u[e])||{_:"webPageEmpty"};return t.photo&&t.photo.id&&(t.photo=o.wrapForHistory(t.photo.id,{website:"photo"!=t.type&&"video"!=t.type})),t}function d(e){var i=l(e);if(!i.embed_url)return i;var a=$(window).width()-(Config.Mobile?0:10),o=$(n).height()-(Config.Mobile?92:150);!Config.Mobile&&a>800&&(a-=208);var s={width:a,height:o};if(i.embed_width&&i.embed_height){var r=calcImageInBox(i.embed_width,i.embed_height,a,o);s.width=r.w,s.height=r.h}else s.height=s.width=Math.min(a,o);var c=Config.Modes.chrome_packed?"webview":"iframe",d="iframe"!=i.embed_type?i.embed_type||"text/html":"text/html",u="<"+c+' src="'+encodeEntities(i.embed_url)+'" type="'+encodeEntities(d)+'" frameborder="0" border="0" webkitallowfullscreen mozallowfullscreen allowfullscreen width="'+s.width+'" height="'+s.height+'" style="width: '+s.width+"px; height: "+s.height+'px;"></'+c+">";return s.html=t.trustAs("html",u),i.full=s,i}var u={},p={};return i.$on("apiUpdate",function(e,t){switch(t._){case"updateWebPage":r(t.webpage)}}),{saveWebPage:r,openEmbed:c,wrapForFull:d,wrapForHistory:l}}]).service("AppVideoManager",["$sce","$rootScope","$modal","$window","MtpApiFileManager","AppUsersManager","FileManager","qSync",function(e,t,n,i,a,o,s,r){function c(e){g[e.id]=e,e.thumb&&"photoCachedSize"==e.thumb._&&(a.saveSmallFile(e.thumb.location,e.thumb.bytes),e.thumb.size=e.thumb.bytes.length,delete e.thumb.bytes,e.thumb._="photoSize")}function l(e){if(void 0!==f[e])return f[e];var t=angular.copy(g[e]),n=Math.min(_-80,Config.Mobile?210:150),i=Math.min(v-100,Config.Mobile?210:150),a=t.thumb,o={placeholder:"img/placeholders/VideoThumbConversation.gif",width:n,height:i};return a&&"photoSizeEmpty"!=a._&&(a.w/a.h>n/i?o.height=parseInt(a.h*n/a.w):(o.width=parseInt(a.w*i/a.h),o.width>n&&(o.height=parseInt(o.height*n/o.width),o.width=n)),o.location=a.location,o.size=a.size),t.thumb=o,f[e]=t}function d(e){var t=l(e),n=Math.min($(window).width()-(Config.Mobile?0:60),542),a=$(i).height()-(Config.Mobile?92:150),o={placeholder:"img/placeholders/VideoThumbModal.gif",width:n,height:a};if(t.w&&t.h){var s=calcImageInBox(t.w,t.h,n,a);o.width=s.w,o.height=s.h}else o.height=o.width=Math.min(n,a);return t.full=o,t.fullThumb=angular.copy(t.thumb),t.fullThumb.width=o.width,t.fullThumb.height=o.height,t}function u(e,i){var a=t.$new(!0);return a.videoID=e,a.messageID=i,n.open({templateUrl:templateUrl("video_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:"VideoModalController",scope:a,windowClass:"video_modal_window"})}function p(e){var t=g[e],n=f[e]||t||{},i={_:"inputVideoFileLocation",id:e,access_hash:t.access_hash};void 0===n.downloaded&&a.getDownloadedFile(i,t.size).then(function(){n.downloaded=!0},function(){n.downloaded=!1})}function m(n,i){var o=g[n],c=f[n]||o||{},l=o.mime_type||"video/ogg",d={_:"inputVideoFileLocation",id:n,access_hash:o.access_hash};if(c.downloaded&&!i){var u=a.getCachedFile(d);if(u)return r.when(u)}c.progress={enabled:!c.downloaded,percent:1,total:o.size};var p=a.downloadFile(o.dc_id,d,o.size,{mime:l,toFileEntry:i});return p.then(function(t){s.getFileCorrectUrl(t,l).then(function(t){c.url=e.trustAsResourceUrl(t)}),delete c.progress,c.downloaded=!0,console.log("video save done")},function(e){console.log("video download failed",e),c.progress.enabled=!1},function(e){console.log("dl progress",e),c.progress.enabled=!0,c.progress.done=e.done,c.progress.percent=Math.max(1,Math.floor(100*e.done/e.total)),t.$broadcast("history_update")}),c.progress.cancel=p.cancel,p}function h(e){{var t=g[e],n=t.mime_type||"video/mp4",i=n.split(".")[1]||"mp4",a="t_video"+e+"."+i;f[e]||t||{}}s.chooseSave(a,i,n).then(function(t){t&&m(e,t)},function(){m(e).then(function(e){s.download(e,n,a)})})}var g={},f={},_=$(window).width(),v=$(window).height();return{saveVideo:c,wrapForHistory:l,wrapForFull:d,openVideo:u,updateVideoDownloaded:p,downloadVideo:m,saveVideoFile:h}}]).service("AppDocsManager",["$sce","$rootScope","$modal","$window","$q","RichTextProcessor","MtpApiFileManager","FileManager","qSync",function(e,t,n,i,a,o,s,r,c){function l(e){f[e.id]=e,e.thumb&&"photoCachedSize"==e.thumb._&&(s.saveSmallFile(e.thumb.location,e.thumb.bytes),e.thumb.size=e.thumb.bytes.length,delete e.thumb.bytes,e.thumb._="photoSize"),angular.forEach(e.attributes,function(t){switch(t._){case"documentAttributeFilename":e.file_name=t.file_name;break;case"documentAttributeVideo":case"documentAttributeAudio":e.duration=t.duration;break;case"documentAttributeSticker":e.sticker=1;var n=t.alt||EmojiHelper.stickers[e.id];void 0!==n&&(e.sticker=2,e.stickerEmoji=o.wrapRichText(n,{noLinks:!0,noLinebreaks:!0}));break;case"documentAttributeImageSize":e.w=t.w,e.h=t.h}}),e.file_name=e.file_name||""}function d(e){return f[e]||{_:"documentEmpty"}}function u(e){if(void 0!==_[e])return _[e];var t,n,i=angular.copy(f[e]),a="image/gif"==i.mime_type,o="image/"==i.mime_type.substr(0,6)&&i.sticker,s=i.thumb;a?(t=Math.min(v-80,260),n=Math.min(y-100,260)):o?(t=Math.min(v-80,Config.Mobile?210:260),n=Math.min(y-100,Config.Mobile?210:260)):t=n=100;var r={width:t,height:n};if(s&&"photoSizeEmpty"!=s._){var c=calcImageInBox(s.w,s.h,t,n);r.width=c.w,r.height=c.h,r.location=s.location,r.size=s.size}else if(o){var c=calcImageInBox(i.w,i.h,t,n);r.width=c.w,r.height=c.h}else r=!1;return i.thumb=r,i.withPreview=!Config.Mobile&&i.mime_type.match(/^(image\/)/)?1:0,a&&i.thumb?i.isSpecial="gif":o?i.isSpecial="sticker":"audio/"==i.mime_type.substr(0,6)&&(i.isSpecial="audio"),_[e]=i}function p(e){var t=f[e],n=_[e]||t||{},i={_:"inputDocumentFileLocation",id:e,access_hash:t.access_hash};void 0===n.downloaded&&s.getDownloadedFile(i,t.size).then(function(){n.downloaded=!0},function(){n.downloaded=!1})}function m(n,i){var a=f[n],o=_[n]||a||{},l={_:"inputDocumentFileLocation",id:n,access_hash:a.access_hash};if(o.downloaded&&!i){var d=s.getCachedFile(l);if(d)return c.when(d)}o.progress={enabled:!o.downloaded,percent:1,total:a.size};var u=s.downloadFile(a.dc_id,l,a.size,{mime:a.mime_type||"application/octet-stream",toFileEntry:i});return u.then(function(t){delete o.progress,t&&(r.getFileCorrectUrl(t,a.mime_type).then(function(t){o.url=e.trustAsResourceUrl(t)}),o.downloaded=!0),console.log("file save done")},function(e){console.log("document download failed",e),o.progress.enabled=!1},function(e){console.log("dl progress",e),o.progress.enabled=!0,o.progress.done=e.done,o.progress.percent=Math.max(1,Math.floor(100*e.done/e.total)),t.$broadcast("history_update")}),o.progress.cancel=u.cancel,u}function h(e,i){var a=t.$new(!0);a.docID=e,a.messageID=i;n.open({templateUrl:templateUrl("document_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:"DocumentModalController",scope:a,windowClass:"document_modal_window"})}function g(e){var t=f[e],n=(_[e]||t||{},(t.file_name.split(".",2)||[])[1]||"");r.chooseSave(t.file_name,n,t.mime_type).then(function(t){t&&m(e,t)},function(){m(e).then(function(e){r.download(e,t.mime_type,t.file_name)})})}var f={},_={},v=$(window).width(),y=$(window).height();return{saveDoc:l,getDoc:d,wrapForHistory:u,updateDocDownloaded:p,downloadDoc:m,openDoc:h,saveDocFile:g}}]).service("AppAudioManager",["$sce","$rootScope","$modal","$window","MtpApiFileManager","FileManager","qSync",function(e,t,n,i,a,o,s){function r(e){p[e.id]=e}function c(e){if(void 0!==m[e])return m[e];var t=angular.copy(p[e]);return m[e]=t}function l(e){var t=p[e],n=m[e]||t||{},i={_:"inputAudioFileLocation",id:e,access_hash:t.access_hash};void 0===n.downloaded&&a.getDownloadedFile(i,t.size).then(function(){n.downloaded=!0},function(){n.downloaded=!1})}function d(n,i){var r=p[n],c=m[n]||r||{},l=r.mime_type||"audio/ogg",d={_:"inputAudioFileLocation",id:n,access_hash:r.access_hash};if(c.downloaded&&!i){var u=a.getCachedFile(d);if(u)return s.when(u)}c.progress={enabled:!c.downloaded,percent:1,total:r.size};var h=a.downloadFile(r.dc_id,d,r.size,{mime:l,toFileEntry:i});return h.then(function(t){o.getFileCorrectUrl(t,l).then(function(t){c.url=e.trustAsResourceUrl(t)}),delete c.progress,c.downloaded=!0,console.log("audio save done")},function(e){console.log("audio download failed",e),c.progress.enabled=!1},function(e){console.log("dl progress",e),c.progress.enabled=!0,c.progress.done=e.done,c.progress.percent=Math.max(1,Math.floor(100*e.done/e.total)),t.$broadcast("history_update")}),c.progress.cancel=h.cancel,h}function u(e){{var t=p[e],n=t.mime_type||"audio/ogg",i=n.split(".")[1]||"ogg",a="t_audio"+e+"."+i;m[e]||t||{}}o.chooseSave(a,i,n).then(function(t){t&&d(e,t)},function(){d(e).then(function(e){o.download(e,n,a)})})}var p={},m={};return{saveAudio:r,wrapForHistory:c,updateAudioDownloaded:l,downloadAudio:d,saveAudioFile:u}}]).service("AppStickersManager",["$q","FileManager","MtpApiManager","MtpApiFileManager","AppDocsManager","Storage",function(e,t,n,i,a,o){function s(){h||(h=!0,setTimeout(d,1e3),setInterval(r,9e5))}function r(){d().then(u)}function c(e){return EmojiHelper.stickers[e]||!1}function l(e){if(m!==e.hash){m=e.hash;var t,n,i,o;for(i=e.documents.length,t=0;i>t;t++)a.saveDoc(e.documents[t]);var s,r,c,l={};for(p=[],i=e.packs.length,t=0;i>t;t++)for(s=e.packs[t],r=s.emoticon,o=s.documents.length,n=0;o>n;n++)c=s.documents[n],void 0===EmojiHelper.stickers[c]&&(EmojiHelper.stickers[c]=r),void 0===l[c]&&(l[c]=!0,p.push(c))}return p}function d(){return o.get("all_stickers").then(function(e){var t=Config.Schema.API.layer;return e.layer!=t&&(e=!1),e&&e.date>tsNow(!0)?l(e):n.invokeApi("messages.getAllStickers",{hash:e&&e.hash||""}).then(function(n){return"messages.allStickersNotModified"==n._&&(n=e),n.date=tsNow(!0)+3600,n.layer=t,delete n._,o.set({all_stickers:n}),l(n)})})}function u(){var n=[];return angular.forEach(p,function(e){var o=a.getDoc(e),s=i.downloadSmallFile(o.thumb.location).then(function(n){return WebpManager.isWebpSupported()?{id:e,src:t.getUrl(n,"image/webp")}:t.getByteArray(n).then(function(t){return{id:e,src:WebpManager.getPngUrlFromData(t)}})});n.push(s)}),e.all(n)}var p=[],m=!1,h=!1;return{start:s,getStickerEmoji:c,getStickers:d,getStickersImages:u}}]).service("ApiUpdatesManager",["$rootScope","MtpNetworkerFactory","AppUsersManager","AppChatsManager","AppPeersManager","MtpApiManager",function(e,t,n,i,a,o){function s(){var e=h.seq+1,t=v[e];if(!t)return!1;for(var n,i,a=t.updates,n=0,i=a.length;i>n;n++)p(a[n]);return h.seq=t.seq,t.date&&h.date<t.date&&(h.date=t.date),delete v[e],!s()&&f&&f.seqAwaiting&&h.seq>=f.seqAwaiting&&(f.ptsAwaiting?delete f.seqAwaiting:(clearTimeout(f.timeout),f=!1)),!0}function r(){if(!y.length)return!1;y.sort(function(e,t){return e.pts-t.pts});for(var e,t=h.pts,n=!1,i=!1,a=0,o=y.length;o>a;a++)e=y[a],t+=e.pts_count,t>=e.pts&&(n=e.pts,i=a);if(!n)return!1;for(h.pts=n,a=0;i>=a;a++)e=y[a],p(e);return y.splice(i,o-i),!y.length&&f&&(f.seqAwaiting?delete f.ptsAwaiting:(clearTimeout(f.timeout),f=!1)),!0}function c(){_||d()}function l(e){var t={date:e.date,seq:e.seq,seqStart:e.seq_start};switch(e._){case"updatesTooLong":case"new_session_created":c();break;case"updateShort":u(e.update,t);break;case"updateShortMessage":case"updateShortChatMessage":var o=2&e.flags,s=e.from_id||(o?g:e.user_id),r=e.chat_id?-e.chat_id:o?e.user_id:g;u({_:"updateNewMessage",message:{_:"message",flags:e.flags,id:e.id,from_id:s,to_id:a.getOutputPeer(r),date:e.date,message:e.message,fwd_from_id:e.fwd_from_id,fwd_date:e.fwd_date,reply_to_msg_id:e.reply_to_msg_id},pts:e.pts,pts_count:e.pts_count},t);break;case"updatesCombined":case"updates":n.saveApiUsers(e.users),i.saveApiChats(e.chats),angular.forEach(e.updates,function(e){u(e,t)});break;default:console.warn(dT(),"Unknown update message",e)}}function d(){_||(_=!0,v={},y=[]),f&&(clearTimeout(f.timeout),f=!1),o.invokeApi("updates.getDifference",{pts:h.pts,date:h.date,qts:-1}).then(function(t){if("updates.differenceEmpty"==t._)return console.log(dT(),"apply empty diff",t.seq),h.date=t.date,h.seq=t.seq,_=!1,e.$broadcast("stateSynchronized"),!1;n.saveApiUsers(t.users),i.saveApiChats(t.chats),angular.forEach(t.other_updates,function(e){p(e)}),angular.forEach(t.new_messages,function(e){p({_:"updateNewMessage",message:e,pts:h.pts,pts_count:0})});var a=t.intermediate_state||t.state;h.seq=a.seq,h.pts=a.pts,h.date=a.date,console.log(dT(),"apply diff",h.seq,h.pts),"updates.differenceSlice"==t._?d():(e.$broadcast("stateSynchronized"),_=!1)})}function u(e,t){if(_)return!1;if("updateNewMessage"==e._){var a=e.message;if(a.from_id&&!n.hasUser(a.from_id)||a.fwd_from_id&&!n.hasUser(a.fwd_from_id)||a.to_id.user_id&&!n.hasUser(a.to_id.user_id)||a.to_id.chat_id&&!i.hasChat(a.to_id.chat_id))return console.warn(dT(),"Short update not enough data",a),c(),!1}var o,l;if(e.pts){var u=h.pts+(e.pts_count||0);if(u<e.pts)return console.log(dT(),"Pts hole",h,e),y.push(e),f||(f={timeout:setTimeout(function(){d()},5e3)}),f.ptsAwaiting=!0,!1;h.pts=e.pts,o=!0}else if(t.seq>0){var m=t.seq,g=t.seqStart||m;if(g!=h.seq+1&&g>h.seq)return console.warn(dT(),"Seq hole",h,f&&f.seqAwaiting),void 0===v[g]&&(v[g]={seq:m,date:t.date,updates:[]}),v[g].updates.push(e),f||(f={timeout:setTimeout(function(){d()},5e3)}),(!f.seqAwaiting||f.seqAwaiting<g)&&(f.seqAwaiting=g),!1;h.seq!=m&&(h.seq=m,t.date&&h.date<t.date&&(h.date=t.date),l=!0)}p(e),o?r():l&&s()}function p(t){e.$broadcast("apiUpdate",t)}function m(){t.setUpdatesProcessor(l),o.invokeApi("updates.getState",{},{noErrorBox:!0}).then(function(e){h.seq=e.seq,h.pts=e.pts,h.date=e.date,setTimeout(function(){_=!1},1e3)})}var h={},g=0;o.getUserID().then(function(e){g=e});var f=!1,_=!0,v={},y=[];return{processUpdateMessage:l,attach:m}}]).service("RichTextProcessor",["$sce","$sanitize",function(e,t){function n(e){for(var t,n,i,a,o=0;o<Config.EmojiCategories.length;o++)if(a=Config.EmojiCategorySpritesheetDimens[o][1],t=Config.EmojiCategories[o].indexOf(e),t>-1)return n=Math.floor(t/a),i=t%a,{category:o,row:n,column:i};return console.error("emoji not found in spritesheet",e),null}function i(i,s){if(!i||!i.length)return"";s=s||{};for(var u,p,m,h,g=i,v=[],y=s.contextSite||"Telegram",b="Telegram"!=y,w=!1;u=g.match(f);){if(v.push(encodeEntities(g.substr(0,u.index))),u[3]){var $=!s.noLinks&&A[y];if($){var k="";s.highlightUsername&&s.highlightUsername.toLowerCase()==u[3].toLowerCase()&&(k='class="im_message_mymention"'),v.push(u[1],"<a ",k,b?' target="_blank" ':"",' href="',$.replace("{1}",encodeURIComponent(u[3])),'">',encodeEntities(u[2]+u[3]),"</a>")}else v.push(u[1],encodeEntities(u[2]+u[3]))}else if(u[4])if(s.noLinks)v.push(encodeEntities(u[0]));else if(_.test(u[4]))v.push('<a href="',encodeEntities("mailto:"+u[4]),'" target="_blank">',encodeEntities(u[4]),"</a>");else{var p=!1,S=u[5],C=u[6],x="";if(C){if(S||"xn--"!==C.substr(0,4)&&-1===Config.TLD.indexOf(C.toLowerCase())||(S="http://"),S){var E=a(u[4]);E.length!==u[4].length&&(x=u[4].substring(E.length),u[4]=E),p=(u[5]?"":S)+u[4]}var T;if("me"==C&&(T=p.match(/^https?:\/\/telegram\.me\/(.+)/))){var I=T[1].split("/");switch(I[0]){case"joinchat":p="tg://join?invite="+I[1];break;default:p="tg://resolve?domain="+I[0]}}}else p=(u[5]?"":"http://")+u[4];p?(v.push('<a href="',encodeEntities(p),'" target="_blank">',encodeEntities(u[4]),"</a>",x),s.extractUrlEmbed&&!s.extractedUrlEmbed&&(s.extractedUrlEmbed=o(p))):v.push(encodeEntities(u[0]))}else if(u[7])v.push(s.noLinebreaks?" ":"<br/>");else if(u[8])(r=c[u[8]])&&(h=n(r))?(m=encodeEntities(l[r][1][0]),w=!0,v.push('<span class="emoji emoji-',h.category,"-",d*h.column,"-",d*h.row,'" ','title="',m,'">',":",m,":</span>")):v.push(encodeEntities(u[8]));else if(u[10]){var $=!s.noLinks&&M[y]||s.contextHashtag;$?v.push(encodeEntities(u[9]),"<a ",b?' target="_blank" ':"",'href="',$.replace("{1}",encodeURIComponent(u[10].substr(1))),'">',encodeEntities(u[10]),"</a>"):v.push(encodeEntities(u[9]),encodeEntities(u[10]))}g=g.substr(u.index+u[0].length)}return v.push(encodeEntities(g)),i=t(v.join("")),w&&(i=i.replace(/\ufe0f|&#65039;|&#65533;|&#8205;/g,"",i),i=i.replace(/<span class="emoji emoji-(\d)-(\d+)-(\d+)"(.+?)<\/span>/g,'<span class="emoji emoji-spritesheet-$1" style="background-position: -$2px -$3px;" $4</span>')),e.trustAs("html",i)}function a(e){for(var t=e.length,n=e.split("(").length-1,i=e.split(")").length-1;i>n&&")"===e.charAt(t-1);)e=e.substr(0,t-1),i--,t--;return n>i&&(e=e.replace(/\)+$/,"")),e}function o(e){var t;if(t=e.match(v))return["youtube",t[1]];if(t=e.match(y))return["vimeo",t[1]];if(t=e.match(b))return["instagram",t[1]];if(t=e.match(w))return["vine",t[1]];if(t=e.match(S)){var n="explore,upload,pages,terms-of-use,mobile,jobs,imprint".split(","),i="sets".split(",");if(-1==n.indexOf(t[1])&&-1==i.indexOf(t[2]))return["soundcloud",t[0]]}else if(t=e.match(C))return["spotify",t[3].replace("/",":")];if(!Config.Modes.chrome_packed){if(t=e.match($))return["twitter",t[0]];if(t=e.match(k))return void 0!=t[2]?["facebook","https://www.facebook.com/"+t[2]+"/posts/"+t[1]]:["facebook",t[0]]}return!1}function s(e,t){if(u)return e;if(!e||!e.length)return"";t=t||{},e=e.replace(/\ufe0f/g,"",e);for(var n,i,a=e,e=[];n=a.match(f);)e.push(a.substr(0,n.index)),e.push(n[8]?(r=c[n[8]])&&(i=l[r][1][0])?":"+i+":":n[0]:n[0]),a=a.substr(n.index+n[0].length);return e.push(a),e.join("")}var r,c={},l=Config.Emoji,d=18,u=-1!=navigator.userAgent.search(/OS X|iPhone|iPad|iOS|Android/i),p="\\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(r in l)c[l[r][0]]=r;var m="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",h="0-9_"+m,g="((?: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}|["+m+"0-9]["+m+"0-9-]{0,64}(?:\\.["+m+"0-9]["+m+"0-9-]{0,64}){0,10}(?:\\.(xn--[0-9a-z]{2,16}|["+m+"]{2,24})))(?::\\d{2,5})?(?:/(?:\\S{0,255}[^\\s.;,(\\[\\]{}<>\"'])?)?",f=new RegExp("(^|\\s)(@)([a-zA-Z\\d_]{5,32})|("+g+")|(\\n)|("+p+")|(^|\\s)(#["+h+"]{2,64})","i"),_=/^(([^<>()[\]\\.,;:\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,}))$/,v=/^(?:https?:\/\/)?(?:www\.)?youtu(?:|\.be|be\.com|\.b)(?:\/v\/|\/watch\\?v=|e\/|(?:\/\??#)?\/watch(?:.+)v=)(.{11})(?:\&[^\s]*)?/,y=/^(?:https?:\/\/)?(?:www\.)?vimeo\.com\/(\d+)/,b=/^https?:\/\/(?:instagr\.am\/p\/|instagram\.com\/p\/)([a-zA-Z0-9\-\_]+)/i,w=/^https?:\/\/vine\.co\/v\/([a-zA-Z0-9\-\_]+)/i,$=/^https?:\/\/twitter\.com\/.+?\/status\/\d+/i,k=/^https?:\/\/(?:www\.|m\.)?facebook\.com\/(?:.+?\/posts\/\d+|(?:story\.php|permalink\.php)\?story_fbid=(\d+)(?:&substory_index=\d+)?&id=(\d+))/i,S=/^https?:\/\/(?:soundcloud\.com|snd\.sc)\/([a-zA-Z0-9%\-\_]+)\/([a-zA-Z0-9%\-\_]+)/i,C=/(https?:\/\/(open\.spotify\.com|play\.spotify\.com|spoti\.fi)\/(.+)|spotify:(.+))/i,M={Telegram:"#/im?q=%23{1}",Twitter:"https://twitter.com/hashtag/{1}",Instagram:"https://instagram.com/explore/tags/{1}/","Google Plus":"https://plus.google.com/explore/{1}"},A={Telegram:"#/im?p=%40{1}",Twitter:"https://twitter.com/{1}",Instagram:"https://instagram.com/{1}/",GitHub:"https://github.com/{1}"};return{wrapRichText:i,wrapPlainText:s}}]).service("StatusManager",["$timeout","$rootScope","MtpApiManager","AppUsersManager","IdleManager",function(e,t,n,i){function a(){d||(d=!0,t.$watch("idle.isIDLE",s),t.$watch("offline",s))}function o(e){var a=tsNow();if(!(e&&!l||!e&&5e4>a-l||t.offline))return l=e?0:a,i.setUserStatus(u,e),n.invokeApi("account.updateStatus",{offline:e},{noErrorBox:!0})}function s(){c&&e.cancel(c),t.idle.isIDLE?c=e(function(){o(!0)},5e3):(o(!1),c=e(s,6e4))}function r(){return p?tsNow()>p?(p=!1,!1):!0:!1}var c,l=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:a,isOtherDeviceActive:r}}]).service("NotificationsManager",["$rootScope","$window","$interval","$q","_","MtpApiManager","AppPeersManager","IdleManager","Storage","AppRuntimeManager",function(e,t,n,i,a,o,s,r,c,l){function d(e){return void 0!==U[e]?U[e]:U[e]=o.invokeApi("account.getNotifySettings",{peer:{_:"inputNotifyPeer",peer:s.getInputPeerByID(e)}})}function u(e){if(e=e||"favicon.ico",A!==e){var t=document.createElement("link");t.rel="shortcut icon",t.type="image/x-icon",t.href=e,O.parentNode.replaceChild(t,O),O=t,A=e}}function p(e,t){U[e]=i.when(t)}function m(e,t){p(e,t);var n=angular.copy(t);return n._="inputPeerNotifySettings",o.invokeApi("account.updateNotifySettings",{peer:{_:"inputNotifyPeer",peer:s.getInputPeerByID(e)},settings:n})}function h(e){return d(e).then(function(e){return"peerNotifySettings"==e._&&1e3*e.mute_until>tsNow()})}function g(){if(w(),!x)return!1;"Notification"in window&&"granted"!==Notification.permission&&"denied"!==Notification.permission&&$(t).on("click",f);try{"onbeforeunload"in window&&$(t).on("beforeunload",b)}catch(e){}}function f(){Notification.requestPermission(),$(t).off("click",f)}function _(e){return Config.Navigator.ffos?e.image="https://raw.githubusercontent.com/zhukov/webogram/master/app/img/icons/icon60.png":e.image||(e.image="img/icons/icon60.png"),I++,c.get("notify_nosound","notify_volume").then(function(e){(!e[0]&&e[1]===!1||e[1]>0)&&v(e[1]||.5)}),!x||"Notification"in window&&"granted"!==Notification.permission?!1:void c.get("notify_nodesktop","notify_novibrate").then(function(t){if(t[0]){if(D&&!t[1])return void navigator.vibrate([200,100,200])}else{var n,i=++T,a=e.key||"k"+i;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(!S)return;window.external.msSiteModeClearIconOverlay(),window.external.msSiteModeSetIconOverlay("img/icons/icon16.png",e.title),window.external.msSiteModeActivate(),n={index:i}}n.onclick=function(){n.close(),l.focus(),b(),e.onclick&&e.onclick()},n.onclose=function(){delete E[a],b()},n.show&&n.show(),E[a]=n}})}function v(e){var t=tsNow();if(!(P&&P>t&&N==e)){P=t+1e3,N=e;var n="img/sound_a.mp3",i=$("#notify_sound").html('<audio autoplay="autoplay"><source src="'+n+'" type="audio/mpeg" /><embed hidden="true" autostart="true" loop="false" volume="'+100*e+'" src="'+n+'" /></audio>');
i.find("audio")[0].volume=e}}function y(e){var t=E[e];if(t){I>0&&I--;try{t.close?t.close():S&&t.index==T&&window.external.msSiteModeClearIconOverlay()}catch(n){}delete I[e]}}function b(){S?window.external.msSiteModeClearIconOverlay():angular.forEach(E,function(e){try{e.close&&e.close()}catch(t){}}),E={},I=0}function w(){if(F)return!1;if(navigator.push&&Config.Navigator.ffos&&Config.Modes.packed){var e=navigator.push.register();e.onsuccess=function(){clearTimeout(j),console.log(dT(),"Push registered",e.result),F=e.result,o.invokeApi("account.registerDevice",{token_type:4,token:F,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()),j=setTimeout(w,q),q=Math.min(3e4,1.5*q)}}}function k(){return D}navigator.vibrate=navigator.vibrate||navigator.mozVibrate||navigator.webkitVibrate;var S=!1;try{window.external&&window.external.msIsSiteMode()&&(S=!0)}catch(C){}var M,A,x=S||"Notification"in window||"mozNotification"in navigator,E={},T=0,I=0,D=!!navigator.vibrate,P=!1,N=!1,U={},O=$('link[rel="icon"]:first')[0],L=a.pluralize("page_title_pluralize_notifications"),R=document.title,B=!1;e.$watch("idle.isIDLE",function(e){e||b(),Config.Navigator.mobile||(n.cancel(M),e?(R=document.title,M=n(function(){var e=tsNow();!I||e%2e3>1e3?B&&(B=!1,document.title=R,u()):(B=!0,document.title=L(I),u("favicon_unread.ico"))},1e3)):(B=!1,document.title=R,u()))}),e.$on("apiUpdate",function(e,t){switch(t._){case"updateNotifySettings":if("notifyPeer"==t.peer._){var n=s.getPeerID(t.peer.peer);p(n,t.notify_settings)}}});var F=!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),F=!1,w()})),{start:g,notify:_,cancel:y,clear:b,getPeerSettings:d,getPeerMuted:h,savePeerSettings:p,updatePeerSettings:m,getVibrateSupport:k,testSound:v};var q,j}]).service("PasswordManager",["$timeout","$q","$rootScope","MtpApiManager","CryptoWorker","MtpSecureRandom",function(e,t,n,i,a,o){function s(e){return i.invokeApi("account.getPassword",{},e).then(function(e){return e})}function r(e,n){var a,s,r={new_settings:{_:"account.passwordInputSettings",flags:0,hint:n.hint||""}};if(a="string"==typeof n.cur_password&&n.cur_password.length>0?u(e.current_salt,n.cur_password):t.when([]),"string"==typeof n.new_password&&n.new_password.length>0){var c=new Array(8),l=bufferConcat(e.new_salt,c);o.nextBytes(c),s=u(l,n.new_password),r.new_settings.new_salt=l,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([a,s]).then(function(e){return r.current_password_hash=e[0],r.new_settings.new_password_hash=e[1],i.invokeApi("account.updatePasswordSettings",r)})}function c(e,t,n){return u(e.current_salt,t).then(function(e){return i.invokeApi("auth.checkPassword",{password_hash:e},n)})}function l(e,t){return i.invokeApi("auth.requestPasswordRecovery",{},t)}function d(e,t){return i.invokeApi("auth.recoverPassword",{code:e},t)}function u(e,t){for(var n=unescape(encodeURIComponent(t)),i=new ArrayBuffer(n.length),o=new Uint8Array(i),s=0,r=n.length;r>s;s++)o[s]=n.charCodeAt(s);return i=bufferConcat(bufferConcat(e,o),e),a.sha256Hash(i)}return{check:c,getState:s,requestRecovery:l,recover:d,updateSettings:r}}]).service("ErrorService",["$rootScope","$modal","$window",function(e,t,n){function i(n,i){if(s>=1)return console.log("Skip error box, too many open",s,n,i),!1;i=i||{};var a=e.$new();angular.extend(a,n),s++;var o=t.open({templateUrl:templateUrl("error_modal"),scope:a,windowClass:i.windowClass||"error_modal_window"});return o.result["finally"](function(){s--}),o}function a(e,t){return i({title:e,description:t})}function o(n,i){i=i||{};var a=e.$new();angular.extend(a,n);var o=t.open({templateUrl:templateUrl("confirm_modal"),scope:a,windowClass:i.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:i,alert:a,confirm:o}}]).service("PeersSelectService",["$rootScope","$modal",function(e,t){function n(n){var i=e.$new();return i.multiSelect=!1,n&&angular.extend(i,n),t.open({templateUrl:templateUrl("peer_select"),controller:"PeerSelectController",scope:i,windowClass:"peer_select_window mobile_modal"}).result}function i(i){if(Config.Mobile)return n(i).then(function(e){return[e]});var a=e.$new();return a.multiSelect=!0,i&&angular.extend(a,i),t.open({templateUrl:templateUrl("peer_select"),controller:"PeerSelectController",scope:a,windowClass:"peer_select_window mobile_modal"}).result}return{selectPeer:n,selectPeers:i}}]).service("ContactsSelectService",["$rootScope","$modal",function(e,t){function n(n,i){i=i||{};var a=e.$new();return a.multiSelect=n,angular.extend(a,i),!a.action&&n&&(a.action="select"),t.open({templateUrl:templateUrl("contacts_modal"),controller:"ContactsModalController",scope:a,windowClass:"contacts_modal_window mobile_modal"}).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 i(){e.get("last_version").then(function(t){t!=Config.App.version&&(t&&a(t),e.set({last_version:Config.App.version}))})}function a(e){var i=t.$new();i.lastVersion=e,n.open({controller:"ChangelogModalController",templateUrl:templateUrl("changelog_modal"),scope:i,windowClass:"changelog_modal_window mobile_modal"})}return{checkUpdate:i,showChangelog:a}}]).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="https://web.telegram.org")},function(){t.set({https_dismiss:tsNow()})})})}function i(){a||"http:"!=location.protocol||Config.Modes.http||-1==Config.App.domains.indexOf(location.hostname)||(a=!0,setTimeout(n,12e4))}var a=!1;return{start:i,check:n}}]).service("LayoutSwitchService",["ErrorService","Storage","AppRuntimeManager","$window",function(e,t,n,i){function a(e){ConfigStorage.noPrefix(),t.set({layout_selected:e?"mobile":"desktop",layout_width:$(window).width()}).then(function(){n.reload()})}function o(n){if(!c){var i=$(window).width(),o=600>i;!i||!n&&(Config.Navigator.mobile?800>=i:o)||o!=Config.Mobile&&(ConfigStorage.noPrefix(),t.get("layout_width").then(function(n){return i==n?!1:(c=!0,void e.confirm({type:o?"SWITCH_MOBILE_VERSION":"SWITCH_DESKTOP_VERSION"}).then(function(){a(o)},function(){ConfigStorage.noPrefix(),t.set({layout_width:i}),c=!1}))}))}}function s(){r||Config.Navigator.mobile||(r=!0,o(),$(i).on("resize",o))}var r=!1,c=!1;return{start:s,switchLayout:a}}]).service("TelegramMeWebService",["Storage",function(e){function t(t){return n?!1:void e.get("tgme_sync").then(function(n){var i=tsNow(!0);if(t&&n&&n.canRedirect==t&&n.ts+86400>i)return!1;e.set({tgme_sync:{canRedirect:t,ts:i}});var a=$("<script>").appendTo("body").on("load error",function(){a.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","AppUsersManager","AppMessagesManager",function(e,t,n,i){function a(){if(t.tgaddr){var e=t.tgaddr.match(r);e&&o(e[3])}}function o(t){var a;return(a=t.match(/^resolve\?domain=(.+)$/))?(n.resolveUsername(a[1]).then(function(t){e.$broadcast("history_focus",{peerString:n.getUserString(t)})}),!0):(a=t.match(/^join\?invite=(.+)$/))?(i.openChatInviteLink(a[1]),!0):!1}function s(){if(!c){c=!0;try{navigator.registerProtocolHandler("tg","#im?tgaddr=%s","Telegram Web")}catch(t){}try{navigator.registerProtocolHandler("web+tg","#im?tgaddr=%s","Telegram Web")}catch(t){}$(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||"",i=n.match(r);if(i&&o(i[3]))return cancelEvent(e)}}),e.$on("$routeUpdate",a),a()}}var r=/^(web\+)?tg:(\/\/)?(.+)/,c=!("registerProtocolHandler"in navigator);return{start:s}}]),angular.module("myApp.controllers",["myApp.i18n"]).controller("AppWelcomeController",["$scope","$location","MtpApiManager","ErrorService","ChangelogNotifyService","LayoutSwitchService",function(e,t,n,i,a,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:"))}),a.checkUpdate(),o.start()}]).controller("AppLoginController",["$scope","$rootScope","$location","$timeout","$modal","$modalStack","MtpApiManager","ErrorService","NotificationsManager","PasswordManager","ChangelogNotifyService","IdleManager","LayoutSwitchService","TelegramMeWebService","_",function(e,t,n,i,a,o,s,r,c,l,d,u,p,m,h){function g(){var t=(navigator.language||"").toLowerCase(),n=Config.LangCountries[t],i=!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"),i){var a=e.credentials.phone_country;s.invokeApi("help.getNearestDc",{},{dcID:2,createNetworker:!0}).then(function(t){a==e.credentials.phone_country&&f(t.country),t.nearest_dc!=t.this_dc&&s.getNetworker(t.nearest_dc,{createNetworker:!0})})}}function f(e){var t,n;for(t=0;t<Config.CountryCodes.length;t++)if(n=Config.CountryCodes[t],n[0]==e)return _({name:h(n[1]+"_raw"),code:n[2]});return _({name:h("country_select_modal_country_us_raw"),code:"+1"})}function _(t){k=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,i,a=((e.credentials.phone_country||"")+(e.credentials.phone_number||"")).replace(/\D+/g,""),o=0,s=!1;if(a.length)if(k&&!a.indexOf(k.code.replace(/\D+/g,"")))s=k.name;else for(t=0;t<Config.CountryCodes.length;t++)for(n=2;n<Config.CountryCodes[t].length;n++)i=Config.CountryCodes[t][n].replace(/\D+/g,""),i.length>o&&!a.indexOf(i)&&(o=i.length,s=h(Config.CountryCodes[t][1]+"_raw"));e.credentials.phone_full=a,e.credentials.phone_country_name=s||h("login_controller_unknown_country_raw")}function y(e){s.setUserAuth($.dcID,{expires:e.expires,id:e.user.id}),i.cancel(S),n.url("/im")}function b(){i.cancel(S),e.credentials.viaApp||(--e.callPending.remaining?S=i(b,1e3):(e.callPending.success=!1,s.invokeApi("auth.sendCall",{phone_number:e.credentials.phone_full,phone_code_hash:e.credentials.phone_code_hash},$).then(function(){e.callPending.success=!0})))}function w(){return l.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},k=!1;e.credentials={phone_country:"",phone_country_name:"",phone_number:"",phone_full:""},e.progress={},e.callPending={},e.about={},e.chooseCountry=function(){var e=a.open({templateUrl:templateUrl("country_select_modal"),controller:"CountrySelectModalController",windowClass:"countries_modal_window mobile_modal"});e.result.then(_)},e.$watch("credentials.phone_country",v),e.$watch("credentials.phone_number",v),g();var S;e.sendCode=function(){i.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",{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.credentials.phone_code_hash=t.phone_code_hash,e.credentials.phone_occupied=t.phone_registered,e.credentials.viaApp="auth.sentAppCode"==t._,e.callPending.remaining=t.send_call_timeout||60,e.error={},e.about={},b(),onContentLoaded(function(){e.$broadcast("ui_height")})},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)&&c.notify({title:"Telegram",message:"Your authorization key was successfully generated! Open the app to log in.",tag:"auth_key"})})})},e.sendSms=function(){e.credentials.viaApp&&(delete e.credentials.viaApp,s.invokeApi("auth.sendSms",{phone_number:e.credentials.phone_full,phone_code_hash:e.credentials.phone_code_hash},$).then(b))},e.editPhone=function(){i.cancel(S),delete e.credentials.phone_code_hash,delete e.credentials.phone_unoccupied,delete e.credentials.phone_code_valid,delete e.credentials.viaApp,delete e.callPending.remaining,delete e.callPending.success},e.logIn=function(t){var n="auth.signIn",i={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(i,{first_name:e.credentials.first_name||"",last_name:e.credentials.last_name||""})),e.progress.enabled=!0,s.invokeApi(n,i,$).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,w().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}})},e.checkPassword=function(){return l.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 l.requestRecovery(e.password,$).then(function(n){var i=t.$new();i.recovery=n,i.options=$;var o=a.open({scope:i,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();break;case"PASSWORD_RECOVERY_NA":i(function(){e.canReset=!0},1e3)}}),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",["$scope","$location","$routeParams","$modal","$rootScope","$modalStack","MtpApiManager","AppUsersManager","AppChatsManager","AppPeersManager","ContactsSelectService","ChangelogNotifyService","ErrorService","AppRuntimeManager","HttpsMigrateService","LayoutSwitchService","LocationParamsService","AppStickersManager",function(e,t,n,i,a,o,s,r,c,l,d,u,p,m,h,g,f,_){function v(){if(n.q){if(n.q!==y&&(e.search.query=y=n.q,void 0!==e.curDialog))return!1}else y=!1;n.p&&"@"==n.p.charAt(0)?(void 0===e.curDialog&&(e.curDialog={}),r.resolveUsername(n.p.substr(1)).then(function(t){e.curDialog={peer:r.getUserString(t),messageID:n.m||!1}})):e.curDialog={peer:n.p||!1,messageID:n.m||!1}}e.$on("$routeUpdate",v),e.$on("history_focus",function(n,i){if(o.dismissAll(),i.peerString==e.curDialog.peer&&i.messageID==e.curDialog.messageID)e.$broadcast(i.messageID?"ui_history_change_scroll":"ui_history_focus");else{var a=l.getPeerID(i.peerString),s=i.peerString;if(a>0){var c=r.getUser(a).username;c&&(s="@"+c)}t.url("/im?p="+s+(i.messageID?"&m="+i.messageID:""))}}),e.$on("esc_no_more",function(){a.$apply(function(){t.url("/im")})}),e.isLoggedIn=!0,e.isEmpty={},e.search={},e.historyFilter={mediaType:!1},e.historyPeer={},e.historyState={selectActions:!1,typing:[],missedCount:0,skipped:!1},e.openSettings=function(){i.open({templateUrl:templateUrl("settings_modal"),controller:"SettingsModalController",windowClass:"settings_modal_window mobile_modal"})},e.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")},e.openContacts=function(){d.selectContact().then(function(t){e.dialogSelect(r.getUserString(t))})},e.openGroup=function(){d.selectContacts({action:"new_group"}).then(function(t){if(1==t.length)e.dialogSelect(r.getUserString(t[0]));else if(t.length>1){var n=a.$new();n.userIDs=t,i.open({templateUrl:templateUrl("chat_create_modal"),controller:"ChatCreateModalController",scope:n,windowClass:"md_simple_modal_window mobile_modal"})}})},e.importContact=function(){r.openImportContact().then(function(e){e&&a.$broadcast("history_focus",{peerString:r.getUserString(e)})})},e.searchClear=function(){e.search.query="",e.$broadcast("search_clear")},e.dialogSelect=function(t,n){var i={peerString:t};n?i.messageID=n:e.search.query&&e.searchClear(),a.$broadcast("history_focus",i)},e.logOut=function(){p.confirm({type:"LOGOUT"}).then(function(){s.logOut().then(function(){location.hash="/login",m.reload()})})},e.openChangelog=function(){u.showChangelog(!1)},e.showPeerInfo=function(){e.curDialog.peerID>0?r.openUser(e.curDialog.peerID):e.curDialog.peerID<0&&c.openChat(-e.curDialog.peerID)},e.toggleEdit=function(){e.$broadcast("history_edit_toggle")},e.selectedFlush=function(){e.$broadcast("history_edit_flush")},e.toggleMedia=function(t){e.$broadcast("history_media_toggle",t)},e.returnToRecent=function(){e.$broadcast("history_return_recent")},e.toggleSearch=function(){e.$broadcast("dialogs_search_toggle")},v();var y=!1;u.checkUpdate(),h.start(),g.start(),f.start(),_.start()}]).controller("AppImDialogsController",["$scope","$location","$q","$timeout","$routeParams","MtpApiManager","AppUsersManager","AppChatsManager","AppMessagesManager","AppPeersManager","PhonebookContactsService","ErrorService","AppRuntimeManager",function(e,t,n,i,a,o,s,r,c,l,d){function u(t){var a,o=++y;return i.cancel(k),f?(k=t||_?n.when():i(angular.noop,500),a=k.then(function(){return c.getSearch({_:"inputPeerEmpty"},e.search.query,{_:"inputMessagesFilterEmpty"},_)})):a=c.getDialogs(e.search.query,_),a.then(function(e){if(o!=y)return n.reject();if(f){var t=[];angular.forEach(e.history,function(e){var n=c.getMessage(e),i=c.getMessagePeer(n);t.push({peerID:i,top_message:e,unread_count:-1})}),e={count:e.count,dialogs:t}}return e})}function p(t){_=0,v=!1,f||(w={},g=!1),u(t).then(function(t){f||(e.dialogs=[],e.contacts=[],e.foundUsers=[]),e.foundMessages=[];var n=f?e.foundMessages:e.dialogs;t.dialogs.length&&(angular.forEach(t.dialogs,function(e){var t=c.wrapForDialog(e.top_message,e.unread_count);f||(w[e.peerID]=!0),n.push(t)}),_=t.dialogs[t.dialogs.length-1].top_message,v=null===t.count||n.length<t.count,f||delete e.isEmpty.dialogs),e.$broadcast("ui_dialogs_change"),e.search.query?m():(c.getDialogs("",_,100),t.dialogs.length||(e.isEmpty.dialogs=!0,m()))})}function m(){return!g||v&&_?v||f||!e.search.query&&e.dialogs.length?void u().then(function(t){if(t.dialogs.length){var n=f?e.foundMessages:e.dialogs;angular.forEach(t.dialogs,function(e){var t=c.wrapForDialog(e.top_message,e.unread_count);f||(w[e.peerID]=!0),n.push(t)}),_=t.dialogs[t.dialogs.length-1].top_message,v=null===t.count||n.length<t.count,e.$broadcast("ui_dialogs_append")}}):void h():void 0}function h(){g=!0;var t=++b;s.getContacts(e.search.query).then(function(n){t==b&&(e.contacts=[],angular.forEach(n,function(t){void 0===w[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&&i(function(){t==b&&o.invokeApi("contacts.search",{q:e.search.query,limit:10}).then(function(n){s.saveApiUsers(n.users),t==b&&(e.foundUsers=[],angular.forEach(n.results,function(t){var n=t.user_id;void 0===w[n]&&e.foundUsers.push({userID:n,user:s.getUser(n),peerString:s.getUserString(n)})}))},function(e){400==e.code&&(e.handled=!0)})},500),e.search.query&&(f=!0,p())}e.dialogs=[],e.contacts=[],e.foundUsers=[],e.foundMessages=[],void 0===e.search&&(e.search={}),void 0===e.isEmpty&&(e.isEmpty={}),e.phonebookAvailable=d.isAvailable();var g,f=!1,_=0,v=!1,y=0,b=0,w={},$={};e.$on("dialogs_need_more",function(){m()}),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 i=[],a={};angular.forEach(n,function(e){a[e.top_message]=e,i.push(e.top_message)}),i.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--);for(r=i.length,o=0;r>o;o++)s=a[i[o]],e.dialogs.unshift(c.wrapForDialog(s.top_message,s.unread_count));delete e.isEmpty.dialogs,w[s.peerID]||(w[s.peerID]=!0,g&&h())}),e.$on("dialog_flush",function(t,n){for(var i=0;i<e.dialogs.length;i++)if(e.dialogs[i].peerID==n.peerID){e.dialogs.splice(i,1);break}}),e.$on("history_delete",function(t,n){for(var i=0;i<e.dialogs.length;i++)if(e.dialogs[i].peerID==n.peerID){n.msgs[e.dialogs[i].id]&&(e.dialogs[i].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.getChatFull(n.chat_id));var a="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==a){e.dialogs[o].typing=n.user_id,i.cancel($[a]),$[a]=i(function(){for(var t=0;t<e.dialogs.length;t++)e.dialogs[t].peerID==a&&e.dialogs[t].typing==n.user_id&&delete e.dialogs[t].typing},6e3);break}}}),e.$watchCollection("search",function(){e.dialogs=[],e.foundMessages=[],f=!1,b++,p(),a.q&&e.search.query!=a.q&&i(function(){t.url("/im"+(e.curDialog.peer?"?p="+e.curDialog.peer+(e.curDialog.messageID?"&m="+e.curDialog.messageID:""):""))})}),Config.Mobile&&e.$watch("curDialog.peer",function(){e.$broadcast("ui_dialogs_update")}),e.importPhonebook=function(){d.openPhonebookImport()},e.$on("contacts_update",function(){g&&h()}),e.$on("ui_dialogs_search_clear",e.searchClear);var k}]).controller("AppImHistoryController",["$scope","$location","$timeout","$rootScope","MtpApiManager","AppUsersManager","AppChatsManager","AppMessagesManager","AppPeersManager","ApiUpdatesManager","PeersSelectService","IdleManager","StatusManager","ErrorService",function(e,t,n,i,a,o,s,r,c,l,d,u,p,m){function h(t,n){var a=t.peer||e.curDialog.peer||"";return N=c.getPeerID(a),N==e.curDialog.peerID&&n.messageID==t.messageID?!1:(i.selectedPeerID=N,e.curDialog.peerID=N,e.curDialog.inputPeer=c.getInputPeer(a),e.historyFilter.mediaType=!1,M(!0),void(n.peer&&n.peer==t.peer&&t.messageID?y():N?(v(!0),k()):S()))}function g(t){var n,i,a,o=-1,s=10;for(n=0;n<e.peerHistories.length;n++)if(e.peerHistories[n].peerID==t){o=n;break}return o>-1?i=e.peerHistories[o]:(i={peerID:t,messages:[],ids:[]},e.peerHistories.unshift(i),a=e.peerHistories.length-s,a>0&&e.peerHistories.splice(s-1,a),i)}function f(t){var n;for(n=0;n<e.peerHistories.length;n++)if(e.peerHistories[n].peerID==t)return e.peerHistories[n];return!1}function _(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 v(t){var n=c.getPeer(N);return!n||n.deleted?(safeReplaceObject(e.state,{loaded:!1}),!1):(U=g(N),safeReplaceObject(e.historyPeer,{id:N,data:n,photo:c.getPeerPhoto(N,"User","Group")}),a.getUserID().then(function(t){e.ownID=t,e.ownPhoto=o.getUserPhoto(t,"User")}),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:!U.messages.length}))))}function y(){var t=f();t&&-1!=t.ids.indexOf(e.curDialog.messageID)?(e.historyUnread={},e.$broadcast("messages_focus",e.curDialog.messageID),e.$broadcast("ui_history_change_scroll")):k()}function b(){if(R){if(V)return void(Y=!0);Y=!1,K=!0;var t=H,n=++G,i=0,a=20;r.getHistory(e.curDialog.inputPeer,F,i,a).then(function(i){if(K=!1,t==H&&n==G){var o,s;for(o=i.history.length-1;o>=0;o--)s=i.history[o],s>F&&(U.messages.push(r.wrapForHistory(s)),U.ids.push(s));i.history.length?(F=i.history.length>=a?i.history[0]:0,r.regroupWrappedHistory(U.messages,-a)&&e.$broadcast("messages_regroup"),delete e.state.empty,e.$broadcast("ui_history_append")):F=0,e.historyState.skipped=R=F>0,W&&w()}})}}function w(){if(L){if(K)return void(W=!0);W=!1,V=!0;var t=H,n=++z,i=e.historyFilter.mediaType&&{_:j[e.historyFilter.mediaType]},a=Config.Mobile?20:0,o=i?r.getSearch(e.curDialog.inputPeer,"",i,B,a):r.getHistory(e.curDialog.inputPeer,B,a);o.then(function(i){V=!1,t==H&&n==z&&(angular.forEach(i.history,function(e){U.messages.unshift(r.wrapForHistory(e)),U.ids.unshift(e)}),L=null===i.count||i.history.length&&U.messages.length<i.count,i.history.length&&(delete e.state.empty,B=i.history[i.history.length-1],e.$broadcast("ui_history_prepend"),r.regroupWrappedHistory(U.messages,i.history.length+1)&&e.$broadcast("messages_regroup")),Y&&b())})}}function k(t){e.historyState.missedCount=0,L=!1,e.historyState.skipped=R=!1,B=0,F=0,U=g(N);var n=0,i=0;e.curDialog.messageID?(B=parseInt(e.curDialog.messageID),n=20,i=20):t&&(n=10),V=!1,W=!1,K=!1,Y=!1;var a=U.messages.length;a&&(B||i)&&(a=0,U.messages=[],U.ids=[],e.state.empty=!0);var o=++H,s=e.historyFilter.mediaType&&{_:j[e.historyFilter.mediaType]},c=s?r.getSearch(e.curDialog.inputPeer,"",s,B):r.getHistory(e.curDialog.inputPeer,B,n,i,a);e.state.mayBeHasMore=!0,c.then(function(t){if(o==H){var n=t.history.length;F=t.unreadSkip||B&&t.history.indexOf(B)>=i-1?t.history[0]:0,B=t.history[t.history.length-1],e.historyState.skipped=R=F>0,L=null===t.count||n&&n<t.count,v(),safeReplaceObject(e.state,{loaded:!0,empty:!n}),U.messages=[],U.ids=[],angular.forEach(t.history,function(n){var i=r.wrapForHistory(n);e.historyState.skipped&&delete i.unread,t.unreadOffset&&(i.unreadAfter=!0),U.messages.push(i),U.ids.push(n)}),U.messages.reverse(),U.ids.reverse(),r.regroupWrappedHistory(U.messages)&&e.$broadcast("messages_regroup"),t.unreadOffset?e.historyUnreadAfter=t.history[t.unreadOffset-1]:e.historyUnreadAfter&&delete e.historyUnreadAfter,e.$broadcast("messages_unread_after"),onContentLoaded(function(){e.$broadcast("messages_focus",e.curDialog.messageID||0)}),e.$broadcast("ui_history_change"),r.readHistory(e.curDialog.inputPeer)}},function(){safeReplaceObject(e.state,{error:!0})})}function S(){H++,safeReplaceObject(e.historyPeer,{}),safeReplaceObject(e.state,{notSelected:!0}),U=!1,L=!1,e.$broadcast("ui_history_change")}function C(t,n){var i=n.target,a=n.shiftKey;if(a&&e.$broadcast("ui_selection_clear"),!e.historyState.selectActions&&!$(i).hasClass("icon-select-tick")&&!$(i).hasClass("im_content_message_select_area"))return!1;if(e.selectedMsgs[t])q=!1,delete e.selectedMsgs[t],e.selectedCount--,e.selectedCount||(e.historyState.selectActions=!1,e.$broadcast("ui_panel_update"));else{if(a){if(q!=t){var o,s,r,c=q>t;for(o=0;o<U.messages.length;o++)if(U.messages[o].id==q){s=o;break}for(o=s;U.messages[o]&&(r=U.messages[o].id)!=t;)e.selectedMsgs[r]||(e.selectedMsgs[r]=!0,e.selectedCount++),o+=c?-1:1}}else q=t;e.selectedMsgs[t]=!0,e.selectedCount++,e.historyState.selectActions||(e.historyState.selectActions=!0,e.$broadcast("ui_panel_update"))}e.$broadcast("messages_select")}function M(t){e.selectedMsgs={},e.selectedCount=0,e.historyState.selectActions=!1,q=!1,t||e.$broadcast("ui_panel_update"),e.$broadcast("messages_select")}function A(){m.confirm({type:"HISTORY_FLUSH"}).then(function(){r.flushHistory(e.curDialog.inputPeer).then(function(){M()})})}function x(){if(e.selectedCount>0){var t=[];angular.forEach(e.selectedMsgs,function(e,n){t.push(n)}),t.length&&m.confirm({type:"MESSAGES_DELETE",count:t.length}).then(function(){r.deleteMessages(t).then(function(){M()})})}}function E(){if(e.selectedCount>0){var t=[];angular.forEach(e.selectedMsgs,function(e,n){t.push(n)}),d.selectPeers({confirm_type:"FORWARD_PEER"}).then(function(e){angular.forEach(e,function(n){var a=c.getPeerID(n);r.forwardMessages(a,t).then(function(){M(),1==e.length&&i.$broadcast("history_focus",{peerString:n})})})})}}function T(){if(1==e.selectedCount){var t;angular.forEach(e.selectedMsgs,function(e,n){t=n}),M(),e.$broadcast("reply_selected",t)}}function I(){e.historyState.selectActions?M():(e.historyState.selectActions=!0,e.$broadcast("ui_panel_update"))}function D(t){e.historyFilter.mediaType=t||!1,U.messages=[],U.ids=[],e.state.empty=!0,k()}function P(){e.historyFilter.mediaType?D():e.curDialog.messageID?i.$broadcast("history_focus",{peerString:e.curDialog.peer}):k(!0)}e.$watch("curDialog",h),l.attach(),u.start(),p.start(),e.peerHistories=[],e.selectedMsgs={},e.selectedCount=0,e.historyState.selectActions=!1,e.historyState.missedCount=0,e.historyState.skipped=!1,e.state={},e.toggleMessage=C,e.selectedDelete=x,e.selectedForward=E,e.selectedReply=T,e.selectedCancel=M,e.selectedFlush=A,e.toggleEdit=I,e.toggleMedia=D,e.returnToRecent=P,e.$on("history_edit_toggle",I),e.$on("history_edit_flush",A),e.$on("history_media_toggle",function(e,t){D(t)}),e.$on("history_return_recent",P);var N,U=!1,O=!1,L=!1,R=!1,B=0,F=0,q=!1,j={photos:"inputMessagesFilterPhotos",video:"inputMessagesFilterVideo",documents:"inputMessagesFilterDocument",audio:"inputMessagesFilterAudio"},H=0,z=0,V=!1,W=!1,G=0,K=!1,Y=!1;e.$on("history_update",angular.noop);var Z=!1;e.$on("stateSynchronized",function(){Z&&(Z==e.curDialog.peerID&&k(),Z=!1)});var X={};e.$on("history_append",function(t,a){var o=f(a.peerID);if(o){var s=a.peerID==e.curDialog.peerID;if(s){if(e.historyFilter.mediaType||e.historyState.skipped)return void(a.my?P():e.historyState.missedCount++);e.curDialog.messageID&&a.my&&P(),delete e.state.empty}var c=r.wrapForHistory(a.messageID);o.messages.push(c),o.ids.push(a.messageID),r.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:O&&!c.out&&i.idle.isIDLE}),a.my&&e.historyUnreadAfter&&(delete e.historyUnreadAfter,e.$broadcast("messages_unread_after")),i.idle.isIDLE?!c.unread||c.out||(o.messages[o.messages.length-2]||{}).unread||(e.historyUnreadAfter=c.id,O=!0,e.$broadcast("messages_unread_after")):n(function(){r.readHistory(e.curDialog.inputPeer)}))}}),e.$on("history_multiappend",function(t,a){var o=!1,s=!1,c=i.idle.isIDLE;angular.forEach(a,function(t,i){var a=f(i);if(a){var l=i==e.curDialog.peerID,d=a.messages.length,u=t.length;if(l){if(e.historyFilter.mediaType||e.historyState.skipped)return void(e.historyState.missedCount+=u);delete e.state.empty}if(u>10){if(!l)return void _(i);if(d>10&&(F=a.messages[d-1].id,e.historyState.skipped=R=F>0,R))return Z=i,void e.$broadcast("ui_history_append")
}var p,m,h,g=!1,v=!1,m=a.messages[a.messages.length-1],y=!m||!m.unread;for(h=0;u>h;h++)p=t[h],-1===a.ids.indexOf(p)&&(m=r.wrapForHistory(p),a.messages.push(m),a.ids.push(p),!v&&c&&(m.unread&&!m.out&&y?v=p:y=!m.unread),!g&&m.out&&(g=!0));r.regroupWrappedHistory(a.messages,-u-2)&&(o=!0),l&&(e.historyState.typing.length&&e.historyState.typing.splice(0,e.historyState.typing.length),e.$broadcast("ui_history_append_new",{idleScroll:O&&!g&&c}),c?v&&(e.historyUnreadAfter=v,O=!0,s=!0):n(function(){r.readHistory(e.curDialog.inputPeer)}))}}),o&&e.$broadcast("messages_regroup"),s&&e.$broadcast("messages_unread_after")}),e.$on("history_delete",function(t,n){var i=f(n.peerID);if(i){var a,o=[];for(a=0;a<i.messages.length;a++)n.msgs[i.messages[a].id]||o.push(i.messages[a]);i.messages=o,r.regroupWrappedHistory(i.messages),e.$broadcast("messages_regroup"),n.peerID==e.curDialog.peerID&&(e.state.empty=!o.length)}}),e.$on("dialog_flush",function(t,n){var i=f(n.peerID);i&&(i.messages=[],i.ids=[],n.peerID==e.curDialog.peerID&&(e.state.empty=!0))}),e.$on("history_focus",function(){e.historyFilter.mediaType&&D()}),e.$on("apiUpdate",function(t,i){switch(i._){case"updateUserTyping":case"updateChatUserTyping":o.forceUserOnline(i.user_id),o.hasUser(i.user_id)&&e.curDialog.peerID==("updateUserTyping"==i._?i.user_id:-i.chat_id)&&(-1==e.historyState.typing.indexOf(i.user_id)&&e.historyState.typing.push(i.user_id),n.cancel(X[i.user_id]),X[i.user_id]=n(function(){var t=e.historyState.typing.indexOf(i.user_id);-1!==t&&e.historyState.typing.splice(t,1)},6e3))}}),e.$on("history_need_less",b),e.$on("history_need_more",w),i.$watch("idle.isIDLE",function(t){t||!e.curDialog||!e.curDialog.peerID||e.historyFilter.mediaType||e.historyState.skipped||r.readHistory(e.curDialog.inputPeer),t||(O=!1)})}]).controller("AppImPanelController",["$scope",function(e){e.$on("user_update",angular.noop)}]).controller("AppImSendController",["$scope","$timeout","MtpApiManager","Storage","AppChatsManager","AppUsersManager","AppPeersManager","AppDocsManager","AppMessagesManager","MtpApiFileManager",function(e,t,n,i,a,o,s,r,c){function l(n){return e.$broadcast("ui_message_before_send"),t(function(){var t=e.draftMessage.text;if(angular.isString(t)&&t.length>0){t=t.replace(/:([a-z0-9\-\+\*_]+?):/gi,function(e,t){var n=EmojiHelper.shortcuts[t];return void 0!==n?EmojiHelper.emojis[n][0]:e});var n=0,i={replyToMsgID:e.draftMessage.replyToMessage&&e.draftMessage.replyToMessage.id};do!function(e,t,n){setTimeout(function(){c.sendText(e,t,i)},n)}(e.curDialog.peerID,t.substr(0,4096),n),t=t.substr(4096),n+=100;while(t.length)}u(),e.$broadcast("ui_message_send")}),cancelEvent(n)}function d(){var t=e.curDialog.peerID;return!t||t>0?(safeReplaceObject(e.mentions,{}),void e.$broadcast("mentions_update")):void a.getChatFull(-t).then(function(t){var n=(t.participants||{}).participants||[],i=[],a=SearchIndexManager.createIndex();angular.forEach(n,function(e){var t=o.getUser(e.user_id);t.username&&(i.push(t),SearchIndexManager.indexObject(t.id,o.getUserSearchText(t.id),a))}),safeReplaceObject(e.mentions,{users:i,index:a}),e.$broadcast("mentions_update")})}function u(t){d(),m(),t?i.get("draft"+e.curDialog.peerID).then(function(t){e.draftMessage.text=t||"",e.$broadcast("ui_peer_draft")}):(e.draftMessage.text="",e.$broadcast("ui_peer_draft"))}function p(t){e.draftMessage.replyToMessage=c.wrapForDialog(t),e.$broadcast("ui_peer_reply")}function m(){delete e.draftMessage.replyToMessage,e.$broadcast("ui_peer_reply")}function h(t){if(t&&t.length){e.historyFilter.mediaType||e.historyState.skipped||c.readHistory(e.curDialog.inputPeer);var n={};n["draft"+e.curDialog.peerID]=t,i.set(n)}else i.remove("draft"+e.curDialog.peerID)}function g(){n.invokeApi("messages.setTyping",{peer:e.curDialog.inputPeer,action:{_:"sendMessageTypingAction"}})}function f(t){if(angular.isArray(t)&&t.length){var n={replyToMsgID:e.draftMessage.replyToMessage&&e.draftMessage.replyToMessage.id,isMedia:e.draftMessage.isMedia};delete e.draftMessage.replyToMessage;for(var i=0;i<t.length;i++)c.sendFile(e.curDialog.peerID,t[i],n),e.$broadcast("ui_message_send")}}function _(t){if(t){var n=r.getDoc(t);if(n.id&&n.access_hash){var i={_:"inputMediaDocument",id:{_:"inputDocument",id:n.id,access_hash:n.access_hash}},a={replyToMsgID:e.draftMessage.replyToMessage&&e.draftMessage.replyToMessage.id};c.sendOther(e.curDialog.peerID,i,a),e.$broadcast("ui_message_send")}delete e.draftMessage.sticker}}e.$watch("curDialog.peer",u),e.$on("user_update",angular.noop),e.$on("reply_selected",function(e,t){p(t)}),e.$on("ui_typing",g),e.draftMessage={text:"",send:l,replyClear:m},e.mentions={},e.$watch("draftMessage.text",h),e.$watch("draftMessage.files",f),e.$watch("draftMessage.sticker",_)}]).controller("AppLangSelectController",["$scope","_","Storage","ErrorService","AppRuntimeManager",function(e,t,n,i,a){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&&i.confirm({type:"APPLY_LANG_WITH_RELOAD"}).then(function(){n.set({i18n_locale:t}).then(function(){a.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,i,a,o,s,r,c,l){function d(e){var n=0>e?[-1,-2]:[1,2],i=v.indexOf(t.messageID);angular.forEach(n,function(e){var t=v[i+e];if(void 0!==t&&void 0===y[t]){y[t]=!0;var n=o.getMessage(t),s=n.media.photo.id;a.preloadPhoto(s)}})}function u(e){var n=v.indexOf(t.messageID);w?e&&(t.count=Math.max(e,v.length)):t.count=v.length,t.pos=t.count-n,t.nav.hasNext=n>0,t.nav.hasPrev=w||n<v.length-1,t.canForward=t.canDelete=t.messageID>0}function p(n){var i=v.indexOf(t.messageID),s=i>=0?i+n:0,r=++$,c=s>=v.length?m():e.when();c.then(function(){if(r==$){var e=v[s],i=o.getMessage(e),c=i&&i.media&&(i.media.photo&&i.media.photo.id||i.media.webpage&&i.media.webpage.photo&&i.media.webpage.photo.id);if(!c)return void console.error("Invalid photo message",s,v,e,i);t.messageID=e,t.photoID=c,t.photo=a.wrapForFull(t.photoID),y[t.messageID]=!0,u(),n>0&&w&&v.indexOf(e)+1>=v.length?m():d(n)}})}function m(){return k?k:k=o.getSearch(g,f,_,b).then(function(t){return t.history.length?(b=t.history[t.history.length-1],v=v.concat(t.history),w=v.length<t.count):w=!1,u(t.count),k=!1,t.history.length?e.reject():void d(1)})}if(t.photo=a.wrapForFull(t.photoID),t.nav={},t.download=function(){a.downloadPhoto(t.photoID)},t.messageID){t.forward=function(){var e=t.messageID;c.selectPeers({confirm_type:"FORWARD_PEER"}).then(function(t){angular.forEach(t,function(i){var a=s.getPeerID(i);o.forwardMessages(a,[e]).then(function(){1==t.length&&n.$broadcast("history_focus",{peerString:i})})})})},t.goToMessage=function(){var e=t.messageID,a=o.getMessagePeer(o.getMessage(e)),r=s.getPeerString(a);i.dismiss(),n.$broadcast("history_focus",{peerString:r,messageID:e})},t["delete"]=function(){var e=t.messageID;l.confirm({type:"MESSAGE_DELETE"}).then(function(){o.deleteMessages([e])})};var h=o.getMessagePeer(o.getMessage(t.messageID)),g=s.getInputPeerByID(h),f="",_={_:"inputMessagesFilterPhotos"},v=[t.messageID],y={},b=t.messageID,w=!0;if(y[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==h){if(n.msgs[t.messageID])if(t.nav.hasNext)t.nav.next();else{if(!t.nav.hasPrev)return i.dismiss();t.nav.prev()}for(var a=[],o=0;o<v.length;o++)n.msgs[v[o]]||a.push(v[o]);v=a}}),t.webpageID)return void(t.webpage=r.wrapForHistory(t.webpageID));o.getSearch(g,f,_,0,1e3).then(function(e){e.history.indexOf(t.messageID)>=0&&(v=e.history,b=v[v.length-1],u(),d(1)),m()},m);var $=0,k=!1}}]).controller("UserpicModalController",["$q","$scope","$rootScope","$modalInstance","MtpApiManager","AppPhotosManager","AppUsersManager","AppPeersManager","AppMessagesManager","ApiUpdatesManager","PeersSelectService","ErrorService",function(e,t,n,i,a,o,s,r,c,l,d,u){function p(n,i){var a=_.indexOf(t.photoID),s=a>=0?a+n:0,r=++$,c=s>=_.length?h():e.when();c.then(function(){if(r==$){t.photoID=_[s],t.photo=o.wrapForFull(t.photoID),t.photo.thumb={location:o.choosePhotoSize(t.photo,0,0).location};var e;i&&(_.splice(a,1),e=t.count-1),g(e),y[t.photoID]=!0,g(),n>0&&w&&_.indexOf(t.photoID)+1>=_.length?h():m(n)}})}function m(e){var n=0>e?[-1,-2]:[1,2],i=_.indexOf(t.photoID);angular.forEach(n,function(e){var t=_[i+e];void 0!==t&&void 0===y[t]&&(y[t]=!0,o.preloadPhoto(t))})}function h(){return k?k:k=o.getUserPhotos(f,v).then(function(t){return t.photos.length?(v=t.photos[t.photos.length-1],_=_.concat(t.photos),w=_.length<t.count):w=!1,g(t.count),k=!1,t.photos.length?e.reject():void m(1)})}function g(e){var n=_.indexOf(t.photoID);w?e&&(t.count=Math.max(e,_.length)):t.count=_.length,t.pos=t.count-n,t.nav.hasNext=n>0,t.nav.hasPrev=w||n<_.length-1,t.canDelete=t.photo.user_id==b}t.photo=o.wrapForFull(t.photoID),t.photo.thumb={location:o.choosePhotoSize(t.photo,0,0).location},t.nav={},t.canForward=!0;var f=s.getUserInput(t.userID),_=[t.photoID],v=t.photoID,y={},b=0,w=!0;g(),o.getUserPhotos(f,0,1e3).then(function(e){e.photos.indexOf(t.photoID)>=0&&(_=e.photos,v=_[_.length-1]),w=_.length<e.count,g()}),a.getUserID().then(function(e){b=e,t.canDelete=t.photo.user_id==b});var $=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.selectPeers({confirm_type:"FORWARD_PEER"}).then(function(e){angular.forEach(e,function(i){var a=r.getPeerID(i);c.sendOther(a,{_:"inputMediaPhoto",id:{_:"inputPhoto",id:t.photoID,access_hash:t.photo.access_hash}}),1==e.length&&n.$broadcast("history_focus",{peerString:e[0]})})})},t["delete"]=function(){var e=t.photoID,n=s.getUser(b),o=function(){return t.nav.hasNext||t.nav.hasPrev?void p(t.nav.hasNext?-1:1,!0):i.dismiss()};u.confirm({type:"PHOTO_DELETE"}).then(function(){n&&n.photo&&n.photo.photo_id==e?a.invokeApi("photos.updateProfilePhoto",{id:{_:"inputPhotoEmpty"},crop:{_:"inputPhotoCropAuto"}}).then(function(e){l.processUpdateMessage({_:"updateShort",update:{_:"updateUserPhoto",user_id:b,date:tsNow(!0),photo:e,previous:!0}}),o()}):a.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","PeersSelectService","ErrorService",function(e,t,n,i,a,o,s,r,c,l,d){t.photo=o.wrapForFull(t.photoID),t.photo.thumb={location:o.choosePhotoSize(t.photo,0,0).location},t.canForward=!0,t.canDelete=!0,t.forward=function(){l.selectPeers({confirm_type:"FORWARD_PEER"}).then(function(e){angular.forEach(e,function(i){var a=r.getPeerID(i);c.sendOther(a,{_:"inputMediaPhoto",id:{_:"inputPhoto",id:t.photoID,access_hash:t.photo.access_hash}}),1==e.length&&n.$broadcast("history_focus",{peerString:e[0]})})})},t["delete"]=function(){d.confirm({type:"PHOTO_DELETE"}).then(function(){t.photo.updating=!0,a.invokeApi("messages.editChatPhoto",{chat_id:t.chatID,photo:{_:"inputChatPhotoEmpty"}}).then(function(e){ApiUpdatesManager.processUpdateMessage(e),i.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","AppVideoManager","AppPeersManager","ErrorService",function(e,t,n,i,a,o,s,r){e.video=o.wrapForFull(e.videoID),e.progress={enabled:!1},e.player={},e.forward=function(){var n=e.messageID;i.selectPeers({confirm_type:"FORWARD_PEER"}).then(function(e){angular.forEach(e,function(i){var o=s.getPeerID(i);a.forwardMessages(o,[n]).then(function(){1==e.length&&t.$broadcast("history_focus",{peerString:i})})})})},e["delete"]=function(){var t=e.messageID;r.confirm({type:"MESSAGE_DELETE"}).then(function(){a.deleteMessages([t])})},e.download=function(){o.saveVideoFile(e.videoID)},e.$on("history_delete",function(t,i){i.msgs[e.messageID]&&n.dismiss()})}]).controller("DocumentModalController",["$scope","$rootScope","$modalInstance","PeersSelectService","AppMessagesManager","AppDocsManager","AppPeersManager","ErrorService",function(e,t,n,i,a,o,s,r){e.document=o.wrapForHistory(e.docID),e.forward=function(){var n=e.messageID;i.selectPeers({confirm_type:"FORWARD_PEER"}).then(function(e){angular.forEach(e,function(i){var o=s.getPeerID(i);a.forwardMessages(o,[n]).then(function(){1==e.length&&t.$broadcast("history_focus",{peerString:i})})})})},e["delete"]=function(){var t=e.messageID;r.confirm({type:"MESSAGE_DELETE"}).then(function(){a.deleteMessages([t])})},e.download=function(){o.saveDocFile(e.docID)},e.$on("history_delete",function(t,i){i.msgs[e.messageID]&&n.dismiss()})}]).controller("EmbedModalController",["$q","$scope","$rootScope","$modalInstance","AppPhotosManager","AppMessagesManager","AppPeersManager","AppWebPagesManager","PeersSelectService","ErrorService",function(e,t,n,i,a,o,s,r,c,l){t.webpage=r.wrapForFull(t.webpageID),t.nav={},t.forward=function(){var e=t.messageID;c.selectPeers({confirm_type:"FORWARD_PEER"}).then(function(t){angular.forEach(t,function(i){var a=s.getPeerID(i);o.forwardMessages(a,[e]).then(function(){1==t.length&&n.$broadcast("history_focus",{peerString:i})})})})},t["delete"]=function(){var e=t.messageID;l.confirm({type:"MESSAGE_DELETE"}).then(function(){o.deleteMessages([e])})}}]).controller("UserModalController",["$scope","$location","$rootScope","$modal","AppUsersManager","MtpApiManager","NotificationsManager","AppPhotosManager","AppMessagesManager","AppPeersManager","PeersSelectService","ErrorService",function(e,t,n,i,a,o,s,r,c,l,d,u){var p=a.getUserString(e.userID);e.user=a.getUser(e.userID),e.userPhoto=a.getUserPhoto(e.userID,"User"),e.blocked=!1,e.settings={notifications:!0},o.invokeApi("users.getFullUser",{id:a.getUserInput(e.userID)}).then(function(t){e.override&&e.override.phone_number?(t.user.phone=e.override.phone_number,(e.override.first_name||e.override.last_name)&&(t.user.first_name=e.override.first_name,t.user.last_name=e.override.last_name),a.saveApiUser(t.user)):a.saveApiUser(t.user,!0),r.savePhoto(t.profile_photo),e.blocked=t.blocked,s.savePeerSettings(e.userID,t.notify_settings),s.getPeerMuted(e.userID).then(function(t){e.settings.notifications=!t,e.$watch("settings.notifications",function(t,n){return t===n?!1:void s.getPeerSettings(e.userID).then(function(n){n.mute_until=t?0:2e9,s.updatePeerSettings(e.userID,n)})})})}),e.goToHistory=function(){n.$broadcast("history_focus",{peerString:p})},e.flushHistory=function(){u.confirm({type:"HISTORY_FLUSH"}).then(function(){c.flushHistory(l.getInputPeerByID(e.userID)).then(function(){e.goToHistory()})})},e.importContact=function(t){var o=n.$new();o.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:o}).result.then(function(t){e.userID==t&&(e.user=a.getUser(e.userID))})},e.deleteContact=function(){a.deleteContacts([e.userID]).then(function(){e.user=a.getUser(e.userID)})},e.toggleBlock=function(t){o.invokeApi(t?"contacts.block":"contacts.unblock",{id:a.getUserInput(e.userID)}).then(function(){e.blocked=t})},e.shareContact=function(){d.selectPeers({confirm_type:"SHARE_CONTACT_PEER"}).then(function(t){angular.forEach(t,function(i){var a=l.getPeerID(i);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}),1==t.length&&n.$broadcast("history_focus",{peerString:t[0]})})})}}]).controller("ChatModalController",["$scope","$timeout","$rootScope","$modal","AppUsersManager","AppChatsManager","AppPhotosManager","MtpApiManager","MtpApiFileManager","NotificationsManager","AppMessagesManager","AppPeersManager","ApiUpdatesManager","ContactsSelectService","ErrorService",function(e,t,n,i,a,o,s,r,c,l,d,u,p,m,h){function g(t){p.processUpdateMessage(t),n.$broadcast("history_focus",{peerString:e.chatFull.peerString})}function f(t){t&&t.type&&0===t.type.indexOf("image")&&(e.photo.updating=!0,c.uploadFile(t).then(function(t){return r.invokeApi("messages.editChatPhoto",{chat_id:e.chatID,photo:{_:"inputChatUploadedPhoto",file:t,crop:{_:"inputPhotoCropAuto"}}}).then(g)})["finally"](function(){e.photo.updating=!1}))}e.chatFull=o.wrapForFull(e.chatID,{}),e.settings={notifications:!0},o.getChatFull(e.chatID).then(function(t){e.chatFull=o.wrapForFull(e.chatID,t),e.$broadcast("ui_height"),l.savePeerSettings(-e.chatID,t.notify_settings),l.getPeerMuted(-e.chatID).then(function(t){e.settings.notifications=!t,e.$watch("settings.notifications",function(t,n){return t===n?!1:void l.getPeerSettings(-e.chatID).then(function(n){n.mute_until=t?0:2e9,l.updatePeerSettings(-e.chatID,n)})})})}),e.leaveGroup=function(){r.invokeApi("messages.deleteChatUser",{chat_id:e.chatID,user_id:{_:"inputUserSelf"}}).then(g)},e.returnToGroup=function(){r.invokeApi("messages.addChatUser",{chat_id:e.chatID,user_id:{_:"inputUserSelf"}}).then(g)},e.inviteToGroup=function(){var t=[];angular.forEach(e.chatFull.participants.participants,function(e){t.push(e.user_id)}),m.selectContacts({disabled:t}).then(function(t){angular.forEach(t,function(t){r.invokeApi("messages.addChatUser",{chat_id:e.chatID,user_id:a.getUserInput(t),fwd_limit:100}).then(function(e){p.processUpdateMessage(e)})}),n.$broadcast("history_focus",{peerString:e.chatFull.peerString})})},e.kickFromGroup=function(t){var n=a.getUser(t);r.invokeApi("messages.deleteChatUser",{chat_id:e.chatID,user_id:{_:"inputUserForeign",user_id:t,access_hash:n.access_hash||"0"}}).then(g)},e.flushHistory=function(){h.confirm({type:"HISTORY_FLUSH"}).then(function(){d.flushHistory(u.getInputPeerByID(-e.chatID)).then(function(){n.$broadcast("history_focus",{peerString:e.chatFull.peerString})})})},e.inviteViaLink=function(){var t=n.$new();t.chatID=e.chatID,i.open({templateUrl:templateUrl("chat_invite_link_modal"),controller:"ChatInviteLinkModalController",scope:t,windowClass:"md_simple_modal_window mobile_modal"})},e.photo={},e.$watch("photo.file",f),e.deletePhoto=function(){e.photo.updating=!0,r.invokeApi("messages.editChatPhoto",{chat_id:e.chatID,photo:{_:"inputChatPhotoEmpty"}}).then(g)["finally"](function(){e.photo.updating=!1})},e.editTitle=function(){var t=n.$new();t.chatID=e.chatID,i.open({templateUrl:templateUrl("chat_edit_modal"),controller:"ChatEditModalController",scope:t,windowClass:"md_simple_modal_window mobile_modal"})}}]).controller("SettingsModalController",["$rootScope","$scope","$timeout","$modal","AppUsersManager","AppChatsManager","AppPhotosManager","MtpApiManager","Storage","NotificationsManager","MtpApiFileManager","PasswordManager","ApiUpdatesManager","ChangelogNotifyService","LayoutSwitchService","AppRuntimeManager","ErrorService","_",function(e,t,n,i,a,o,s,r,c,l,d,u,p,m,h,g,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){a.saveApiUsers(e.users),s.savePhoto(e.photo),r.getUserID().then(function(e){p.processUpdateMessage({_:"updateShort",update:{_:"updateUserPhoto",user_id:e,date:tsNow(!0),photo:a.getUser(e).photo,previous:!0}}),t.photo=a.getUserPhoto(e,"User")})})})["finally"](function(){delete t.photo.updating}))}t.profile={},t.photo={},t.version=Config.App.version,r.getUserID().then(function(e){t.profile=a.getUser(e),t.photo=a.getUserPhoto(e,"User")}),r.invokeApi("users.getFullUser",{id:{_:"inputUserSelf"}}).then(function(e){a.saveApiUser(e.user),s.savePhoto(e.profile_photo)}),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 a=e.$new();a.password=t.password,angular.extend(a,n);var o=i.open({scope:a,templateUrl:templateUrl("password_update_modal"),controller:"PasswordUpdateModalController",windowClass:"md_simple_modal_window mobile_modal"});o.result["finally"](_)},t.showSessions=function(){i.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=a.getUserPhoto(n,"User")})})["finally"](function(){delete t.photo.updating})},t.editProfile=function(){i.open({templateUrl:templateUrl("profile_edit_modal"),controller:"ProfileEditModalController",windowClass:"md_simple_modal_window mobile_modal"})},t.changeUsername=function(){i.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",{})})},c.get("notify_nodesktop","notify_nosound","send_ctrlenter","notify_volume","notify_novibrate","notify_nopreview").then(function(i){t.notify.desktop=!i[0],t.send.enter=i[2]?"":"1",t.notify.volume=i[1]?0:i[3]!==!1?i[3]>0&&i[3]<=1?i[3]:0:.5,t.notify.canVibrate=l.getVibrateSupport(),t.notify.vibrate=!i[4],t.notify.preview=!i[5],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 a;t.$watch("notify.volume",function(e,t){e!==t&&(c.set({notify_volume:e}),c.remove("notify_nosound"),l.clear(),a&&n.cancel(a),a=n(function(){l.testSound(e)},500))}),t.toggleDesktop=function(){t.notify.desktop=!t.notify.desktop,t.notify.desktop?c.remove("notify_nodesktop"):c.set({notify_nodesktop:!0})},t.togglePreview=function(){t.notify.preview=!t.notify.preview,t.notify.preview?c.remove("notify_nopreview"):c.set({notify_nopreview:!0})},t.toggleVibrate=function(){t.notify.vibrate=!t.notify.vibrate,t.notify.vibrate?c.remove("notify_novibrate"):c.set({notify_novibrate:!0})},t.toggleCtrlEnter=function(n){t.send.enter=n,t.send.enter?c.remove("send_ctrlenter"):c.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",g.reload()})})},t.switchBackToDesktop=Config.Mobile&&!Config.Navigator.mobile,t.switchToDesktop=function(){h.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,i){e.profile={},e.error={},i.getUserID().then(function(t){e.profile=n.getUser(t)}),e.updateProfile=function(){e.profile.updating=!0,i.invokeApi("account.updateProfile",{first_name:e.profile.first_name||"",last_name:e.profile.last_name||""}).then(function(i){e.error={},n.saveApiUser(i),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,i){e.profile={},e.error={},i.getUserID().then(function(t){e.profile=angular.copy(n.getUser(t))}),e.updateUsername=function(){e.profile.updating=!0,i.invokeApi("account.updateUsername",{username:e.profile.username||""}).then(function(i){e.checked={},n.saveApiUser(i),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.length?void i.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,i,a,o){function s(){n.cancel(r),a.invokeApi("account.getAuthorizations").then(function(t){e.sessionsLoaded=!0,e.authorizations=t.authorizations;for(var i,a=0,o=e.authorizations.length;o>a;a++)i=e.authorizations[a],i.current=1==(1&i.flags);e.authorizations.sort(function(e,t){return e.current?-1:t.current?1:t.date_active-e.date_active}),c||(r=n(s,5e3))})}e.slice={limit:20,limitDelta:20};var r=!1,c=!1;e.terminateSession=function(e){o.confirm({type:"TERMINATE_SESSION"}).then(function(){a.invokeApi("account.resetAuthorization",{hash:e}).then(s)})},e.terminateAllSessions=function(){o.confirm({type:"TERMINATE_SESSIONS"}).then(function(){a.invokeApi("auth.resetAuthorizations",{})})},s(),e.$on("apiUpdate",function(e,t){"updateNewAuthorization"==t._&&s()}),e.$on("$destroy",function(){n.cancel(r),c=!0})}]).controller("PasswordUpdateModalController",["$scope","$q","_","PasswordManager","MtpApiManager","ErrorService","$modalInstance",function(e,t,n,i,a,o,s){switch(e.passwordSettings={},e.updatePassword=function(){delete e.passwordSettings.error_field;var a;if("disable"==e.action)a=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;a=e.passwordSettings.email?t.when():o.confirm({type:"RECOVERY_EMAIL_EMPTY"})}e.passwordSettings.loading=!0,a.then(function(){i.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,i,a,o,s){e.checkCode=function(){e.recovery.updating=!0,i.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,i,a,o){function s(){e.selectedContacts={},e.selectedCount=0}function r(n){var i=++c,s=[];o.getContacts(n).then(function(t){i==c&&(e.contacts=[],e.slice.limit=20,angular.forEach(t,function(t){var n={userID:t,user:o.getUser(t),userPhoto:o.getUserPhoto(t,"User")};s.push(t),e.contacts.push(n)}),e.contactsEmpty=n?!1:!e.contacts.length,e.$broadcast("contacts_change"))}),n&&n.length>=5&&t(function(){i==c&&a.invokeApi("contacts.search",{q:n,limit:10}).then(function(t){o.saveApiUsers(t.users),i==c&&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.foundUsers=[],e.search={},e.slice={limit:20,limitDelta:20};var c=0;if(s(),e.disabledContacts={},e.disabled)for(var l=0;l<e.disabled.length;l++)e.disabledContacts[e.disabled[l]]=!0;if(e.selected)for(var l=0;l<e.selected.length;l++)e.selectedContacts[e.selected[l]]||(e.selectedContacts[e.selected[l]]=!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++)):i.close(t)},e.submitSelected=function(){if(e.selectedCount>0){var t=[];return angular.forEach(e.selectedContacts,function(e,n){t.push(n)}),i.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,i,a){e.selectedPeers={},e.selectedPeerIDs=[],e.selectedCount=0,e.dialogSelect=function(o){if(!e.multiSelect){var s;if(e.confirm_type){var r=i.getPeerID(o),c=i.getPeer(r);s=a.confirm({type:e.confirm_type,peer_id:r,peer_data:c})}else s=n.when();return void s.then(function(){t.close(o)})}var r=i.getPeerID(o);if(e.selectedPeers[r]){delete e.selectedPeers[r],e.selectedCount--;var l=e.selectedPeerIDs.indexOf(r);l>=0&&e.selectedPeerIDs.splice(l,1)}else e.selectedPeers[r]=i.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(i.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,i,a,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(a.getUserInput(e))}),i.invokeApi("messages.createChat",{title:e.group.name,users:r}).then(function(e){if(s.processUpdateMessage(e),e.updates&&e.updates.length){for(var i,a=0,r=e.updates.length;r>a;a++)if(i=e.updates[a],"updateNewMessage"==i._){n.$broadcast("history_focus",{peerString:o.getChatString(i.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,i,a,o,s){var r=o.getChat(e.chatID);e.group={name:r.title},e.updateGroup=function(){return e.group.name?e.group.name==r.title?t.close():(e.group.updating=!0,i.invokeApi("messages.editChatTitle",{chat_id:e.chatID,title:e.group.name}).then(function(t){s.processUpdateMessage(t);var i=o.getChatString(e.chatID);n.$broadcast("history_focus",{peerString:i})})["finally"](function(){delete e.group.updating})):void 0}}]).controller("ChatInviteLinkModalController",["_","$scope","$timeout","$modalInstance","AppChatsManager","ErrorService",function(e,t,n,i,a,o){function s(e){e&&(t.exportedInvite.revoking=!0),a.getChatInviteLink(t.chatID,e).then(function(e){t.exportedInvite={link:e},n(function(){t.$broadcast("ui_invite_select")},100)})["finally"](function(){delete t.exportedInvite.revoking})}t.exportedInvite={link:e("group_invite_link_loading_raw")},t.revokeLink=function(){o.confirm({type:"REVOKE_GROUP_INVITE_LINK"}).then(function(){s(!0)})},s()}]).controller("ImportContactModalController",["$scope","$modalInstance","$rootScope","AppUsersManager","ErrorService","PhonebookContactsService",function(e,t,n,i,a,o){void 0===e.importContact&&(e.importContact={}),e.phonebookAvailable=o.isAvailable(),e.doImport=function(){e.importContact&&e.importContact.phone&&(e.progress={enabled:!0},i.importContact(e.importContact.phone,e.importContact.first_name||"",e.importContact.last_name||"").then(function(e){e||a.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,i){e.search={},e.slice={limit:20,limitDelta:20};for(var a=SearchIndexManager.createIndex(),o=0;o<Config.CountryCodes.length;o++){var s=Config.CountryCodes[o][0];s+=" "+i(Config.CountryCodes[o][1]+"_raw"),s+=" "+Config.CountryCodes[o].slice(2).join(" "),SearchIndexManager.indexObject(o,s,a)}e.$watch("search.query",function(t){var n=!1,o={};angular.isString(t)&&t.length&&(n=!0,o=SearchIndexManager.search(t,a)),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:i(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,i,a,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 i=0;i<e.phonebook.length;i++)(!t||n[i])&&e.contacts.push(e.phonebook[i])}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(),c=!1;a.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),c=!0,s()},function(e){o.show({error:{code:403,type:"PHONEBOOK_GET_CONTACTS_FAILED",originalError:e}})}),e.$watch("search.query",function(){c&&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,i){n.push(e.phonebook[i])}),o.confirm({type:"CONTACTS_IMPORT_PERFORM"}).then(function(){e.progress.enabled=!0,i.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})})}}]),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: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){var i=e&&e.status&&e.status._||"userStatusEmpty";switch(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"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){var i=1e3*e,a=Math.abs(tsNow()-i),o="shortTime";return a>5184e5?o=n?"mediumDate":"shortDate":a>432e5&&(o=n?"EEEE":"EEE"),t(i,o)}}]).filter("time",["$filter",function(e){var t={},n=e("date"),i=Config.Mobile?"shortTime":"mediumTime";return function(e){return t[e]?t[e]:t[e]=n(1e3*e,i)}}]).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){var i=n(e.done,!0),a=i.split(" "),o=n(e.total),s=o.split(" ");return s[1]===a[1]?t("format_size_progress_mulitple",{done:a[0],total:s[0],parts:a[1]||""}):t("format_size_progress",{done:i,total:o})}}]).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"),i=t.pluralize("relative_time_pluralize_hours_ago"),a=e("dateOrTime");return function(e){var o=1e3*e,s=Math.abs(tsNow()-o);if(6e4>s)return t("relative_time_just_now");if(36e5>s){var r=Math.floor(s/6e4);return n(r)}if(864e5>s){var c=Math.floor(s/36e5);return i(c)}return a(e,!0)}}]),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 <a ng-click="download()" class="audio_player_title" ng-switch="::audio.file_name.length > 0">\n <span ng-switch-when="true" 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.media_unread || false" ng-show="message.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 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.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/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 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\n </div>\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: 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\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="chatFull.chat._ != \'chatForbidden\' &amp;&amp; !chatFull.chat.left" 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-chat-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">\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_link" ng-if="chatFull.chat._ != \'chatForbidden\'">\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.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.left && chatFull.isAdmin">\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="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>\n\n <div ng-if="chatFull.chat._ != \'chatForbidden\' &amp;&amp; !chatFull.chat.left &amp;&amp; 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 | 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-user-link="participant.user_id"></a>\n </div>\n <div class="md_modal_list_peer_description" my-user-status="::participant.user_id"></div>\n </div>\n\n </div>\n\n </div>\n\n </div>\n </div>\n\n\n</div>\n'),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 <span ng-switch-when="FILE_CLIPBOARD_PASTE" my-i18n="confirm_modal_clipboard_file_send"></span>\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="EXT_SHARE_PEER" my-i18n-format="confirm_modal_share_file_peer"></span>\n <my-i18n-param name="peer">\n <strong ng-switch="peer_id > 0">\n <span ng-switch-when="true" my-user-link="peer_id"></span>\n <span ng-switch-default my-chat-link="-peer_id"></span>\n </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="REVOKE_GROUP_INVITE_LINK" my-i18n="confirm_modal_revoke_group_link"></div>\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"/>\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-user-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"/>\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.id)">\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.out"\n ng-bind="dialogMessage.unreadCount"\n ></span>\n <i\n class="im_dialog_unread"\n ng-show="dialogMessage.out && dialogMessage.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" ng-switch="::dialogMessage.peerID > 0">\n <span class="im_dialog_user" ng-switch-when="true" my-user-link="dialogMessage.peerID"></span>\n <span class="im_dialog_chat" ng-switch-default my-chat-link="-dialogMessage.peerID"></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-user-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">\n <span ng-switch-when="true">\n <span class="im_dialog_chat_from_wrap" ng-if="dialogMessage.out">\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.out && dialogMessage._ != \'messageService\'">\n <span\n ng-switch-when="false"\n class="im_dialog_chat_from"\n my-user-link="dialogMessage.from_id" short="true" user-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 class="im_dialog_message_media" ng-if="dialogMessage.media" ng-switch="dialogMessage.media._">\n <span ng-switch-when="messageMediaPhoto" my-i18n="conversation_media_photo"></span>\n <span ng-switch-when="messageMediaVideo" my-i18n="conversation_media_video"></span>\n <span ng-switch-when="messageMediaDocument" ng-switch="::dialogMessage.media.document.sticker || false">\n <span ng-switch-when="1" my-i18n="conversation_media_sticker"></span>\n <span ng-switch-when="2">\n <span ng-bind-html="dialogMessage.media.document.stickerEmoji"></span>\n (<my-i18n msgid="conversation_media_sticker"></my-i18n>)\n </span>\n <span ng-switch-default ng-bind="dialogMessage.media.document.file_name"></span>\n </span>\n <span ng-switch-when="messageMediaAudio" my-i18n="conversation_media_audio"></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>\n\n <span class="im_dialog_message_service" ng-if="dialogMessage._ == \'messageService\'" ng-switch="dialogMessage.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\n <span ng-switch-when="messageActionChatAddUser" ng-switch="dialogMessage.from_id == dialogMessage.action.user_id">\n <span ng-switch-when="true" my-i18n="conversation_returned_to_group"></span>\n <span ng-switch-default my-i18n="conversation_invited_user">\n <my-i18n-param name="user"><span my-user-link="dialogMessage.action.user_id"></span></my-i18n-param>\n </span>\n </span>\n\n <span ng-switch-when="messageActionChatDeleteUser" ng-switch="dialogMessage.from_id == dialogMessage.action.user_id">\n <span ng-switch-when="true" my-i18n="conversation_left_group"></span>\n <span ng-switch-default my-i18n="conversation_kicked_user">\n <my-i18n-param name="user"><span my-user-link="dialogMessage.action.user_id"></span></my-i18n-param>\n </span>\n </span>\n\n <span ng-switch-when="messageActionChatJoinedByLink" my-i18n="conversation_joined_by_link"></span>\n\n </span>\n\n <span class="im_dialog_message_text" ng-if="dialogMessage.message.length" ng-bind-html="dialogMessage.richMessage"></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-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-user-link="document.user_id" user-watch="true"></a>\n </div>\n <div class="media_modal_date">\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\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\'}}\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/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" ng-switch="document.downloaded &amp;&amp; isActive">\n\n <img ng-switch-when="true" class="img_gif_image" ng-src="{{document.url}}" />\n <img ng-switch-default class="img_gif_thumb" my-load-thumb thumb="document.thumb" />\n\n </div>\n\n <div ng-show="!isActive" ng-switch="document.progress.enabled">\n\n <div ng-switch-when="true" class="img_gif_progress_wrap">\n <div class="img_gif_progress progress tg_progress">\n <div class="progress-bar progress-bar-success" ng-style="{width: document.progress.percent + \'%\'}"></div>\n </div>\n </div>\n\n <div ng-switch-default class="img_gif_info_wrap">\n <div class="img_gif_label pull-left">GIF</div>\n <div ng-if="!document.downloaded" class="img_gif_size pull-right" ng-bind="::document.size | formatSize"></div>\n </div>\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-switch="historyPeer.id > 0" ng-click="showPeerInfo()">\n <div class="tg_head_peer_info" ng-switch-when="true">\n <span class="tg_head_peer_title" my-user-link="historyPeer.id" user-watch="true" dir="auto"></span>\n <span class="tg_head_peer_status" my-user-status="historyPeer.id"></span>\n </div>\n <div class="tg_head_peer_info" ng-switch-default>\n <span class="tg_head_peer_title" my-chat-link="-historyPeer.id" chat-watch="true" dir="auto"></span>\n <span class="tg_head_peer_status" my-chat-status="-historyPeer.id"></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 has-tabs="{{search.query.length > 0}}">\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"/>\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.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-user-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="foundUsers.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="foundUser in foundUsers track by foundUser.userID" ng-class="{active: curDialog.peerID == foundUser.userID}">\n <a class="im_dialog" ng-mousedown="dialogSelect(foundUser.peerString)">\n <div class="im_dialog_photo pull-left" my-peer-photolink="foundUser.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-user-link="foundUser.userID"></span>\n </div>\n <div class="im_dialog_message" ng-switch="foundUser.user.username.length > 0">\n <span ng-switch-when="true" class="im_dialog_message_text" ng-bind="::\'@\' + foundUser.user.username"></span>\n <span ng-switch-default class="im_dialog_message_text" my-user-status="::foundUser.userID"></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.id" 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">\n\n <div ng-show="state.notSelected" 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 ng-show="!state.notSelected &amp;&amp; !state.loaded" class="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 ng-show="state.loaded">\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.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 class="im_history_typing_wrap">\n\n <div 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-user-link="historyState.typing[0]"></a></my-i18n-param>\n <my-i18n-param name="name2"><a class="im_history_typing_author" my-user-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.selectActions">\n <div class="im_edit_panel_border"></div>\n <a class="btn btn-md btn-md-primary im_edit_cancel_link" ng-click="selectedCancel()" my-i18n="modal_cancel"></a>\n <div 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>\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"></a>\n <a class="btn btn-primary im_edit_reply_btn" ng-click="selectedReply()" ng-show="selectedCount == 1"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" ng-hide="historyState.selectActions">\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">\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="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" class="im_send_form" ng-class="{im_send_form_empty: !draftMessage.text.length}">\n\n <div class="im_send_reply_wrap" ng-if="draftMessage.replyToMessage != null">\n <a class="im_send_reply_cancel" ng-click="draftMessage.replyClear()"><i class="icon icon-reply-bar"></i><i class="icon icon-reply-bar"></i></a>\n <div my-reply-message="draftMessage.replyToMessage"></div>\n </div>\n\n <div class="im_send_field_wrap">\n <a class="composer_emoji_insert_btn"><i class="icon icon-emoji"></i></a>\n\n <div class="im_send_dropbox_wrap" my-i18n="im_photos_drop_text"></div>\n <textarea ng-model="draftMessage.text" placeholder="{{\'im_message_field_placeholder\' | i18n}}" class="form-control im_message_field no_outline" dir="auto"></textarea>\n </div>\n\n <div class="clearfix">\n <button type="submit" class="btn btn-md im_submit" 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="true" 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="true" 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\n </div>\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>'),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/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 <div ng-switch="credentials.viaApp">\n <div ng-switch-when="true">\n <p class="login_smscode_lead" my-i18n="login_enter_code_label_md"></p>\n <p class="login_smscode_lead">\n <a ng-click="sendSms()" my-i18n="login_code_not_received"></a>\n </p>\n </div>\n <div ng-switch-default>\n <p class="login_smscode_lead" my-i18n="login_enter_sms_code_label_md"></p>\n\n <p class="login_smscode_lead">\n <span ng-show="callPending.remaining > 0" my-i18n="login_call_remaining">\n <my-i18n-param name="remaining">{{callPending.remaining | duration}}</my-i18n-param>\n </span>\n <span ng-show="!callPending.remaining &amp;&amp; !callPending.success" my-i18n="login_calling"></span>\n <span ng-show="!callPending.remaining &amp;&amp; callPending.success" my-i18n="login_number_dialed"></span>\n </p>\n </div>\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/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/message.html",'<div class="im_message_outer_wrap" ng-click="toggleMessage(historyMessage.id, $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">\n <div class="im_service_message">\n <a class="im_message_author" my-user-link="historyMessage.from_id" short="!historyMessage.to_id.chat_id" color="historyMessage.to_id.chat_id > 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\'" 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.out ? \'im_message_out\' : \'im_message_in\', historyMessage.fwd_from_id > 0 ? \'im_message_fwd\' : \'\']">\n <div class="im_content_message_select_area">\n <i class="icon icon-select-tick"></i>\n </div>\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="Try again"></i>\n </a>\n\n <i ng-if="::historyMessage.unread &amp;&amp; historyMessage.out || historyMessage.pending || false" class="icon-message-status" ng-class="{\'icon-message-status-unread\': historyMessage.unread, \'icon-message-status-pending\': historyMessage.pending}" ng-show="!historyMessage.error"></i>\n\n <a class="im_message_from_photo pull-left" my-peer-photolink="::historyMessage.from_id" img-class="im_message_from_photo"></a>\n\n <div class="im_message_meta pull-right text-right">\n <i class="icon-message-status-tick"></i>\n <span class="im_message_date" ng-bind="::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 <a class="im_message_author" my-user-link="historyMessage.from_id" short="!historyMessage.to_id.chat_id" color="historyMessage.to_id.chat_id > 0" no-watch="true"></a>\n\n <a class="im_message_reply_wrap" my-reply-message="historyMessage.reply_to_msg" ng-if="::historyMessage.reply_to_msg_id"></a>\n\n <div ng-if="::historyMessage.fwd_from_id > 0" class="im_message_fwd_from">\n <a class="im_message_fwd_photo pull-left" my-user-photolink="historyMessage.fwd_from_id" img-class="im_message_fwd_photo"></a>\n <div class="im_message_fwd_author_wrap">\n <a class="im_message_fwd_author" my-user-link="historyMessage.fwd_from_id" no-watch="true"></a><span class="im_message_fwd_date" ng-bind="::historyMessage.fwd_date | dateOrTime"></span>\n </div>\n </div>\n\n <div class="im_message_text" ng-if="::historyMessage.message.length || false" ng-bind-html="::historyMessage.richMessage" dir="auto"></div>\n <!-- <div class="im_message_external_embed_wrap" ng-if="::historyMessage.richUrlEmbed || false" my-external-embed="historyMessage.richUrlEmbed"></div> -->\n <div ng-if="::historyMessage.media || historyMessage.id < 0 ? true : false" class="im_message_media" ng-switch="historyMessage.media._">\n\n <div ng-switch-when="messageMediaPhoto" my-message-photo="historyMessage.media" message-id="historyMessage.id"></div>\n <div ng-switch-when="messageMediaVideo" my-message-video="historyMessage.media" message-id="historyMessage.id"></div>\n <div ng-switch-when="messageMediaDocument" my-message-document="historyMessage.media.document" message-id="historyMessage.id"></div>\n <div ng-switch-when="messageMediaAudio" class="im_message_audio" my-audio-player audio="historyMessage.media.audio" message="historyMessage"></div>\n <div ng-switch-when="messageMediaGeo" my-message-geo="historyMessage.media"></div>\n <div ng-switch-when="messageMediaVenue" my-message-venue="historyMessage.media"></div>\n <div ng-switch-when="messageMediaContact" class="im_message_contact" my-message-contact></div>\n <div ng-switch-when="messageMediaWebPage" class="im_message_webpage" my-message-webpage="historyMessage.media.webpage" message-id="historyMessage.id"></div>\n <div ng-switch-when="messageMediaPending" my-message-pending></div>\n <div ng-switch-when="messageMediaUnsupported">\n <div class="im_message_text">\n The message is not supported on your version of Telegram Web. Update the app to view: <a href="https://web.telegram.org">web.telegram.org</a>.\n </div>\n </div>\n\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>\n <a ng-if="historyMessage.media.user_id > 0" class="im_message_contact_photo pull-left" my-peer-photolink="historyMessage.media.user_id" img-class="im_message_contact_photo" user-override="historyMessage.media"></a>\n <div class="im_message_contact_name" ng-switch="historyMessage.media.user_id > 0">\n <a ng-switch-when="true" my-user-link="historyMessage.media.user_id" user-override="historyMessage.media"></a>\n <span ng-switch-default ng-bind-html="::historyMessage.media.rFullName"></span>\n </div>\n <div class="im_message_contact_phone" ng-bind="::historyMessage.media.phone_number | phoneNumber"></div>\n</div>'),e.put("partials/desktop/message_attach_document.html",'<div ng-switch="::document.isSpecial">\n\n <div ng-switch-when="gif" my-load-gif document="document"></div>\n\n <div ng-switch-when="sticker" my-load-sticker document="document"></div>\n\n <div ng-switch-when="audio" class="im_message_audio">\n <div my-audio-player audio="document"></div>\n </div>\n\n <div ng-switch-default class="im_message_document clearfix" ng-class="{im_message_document_thumbed: !!document.thumb, im_message_document_progress: document.progress.enabled}">\n\n <a ng-if="::!document.thumb" class="im_message_file_button" ng-click="docOpen()" ng-class="{im_message_file_button_dl_doc: document.downloaded}">\n <i class="im_message_file_button_icon"></i>\n </a>\n <a ng-if="::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="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="::document.file_name"></a>\n <span class="im_message_document_size" ng-if="!document.progress.enabled" ng-bind="::document.size | formatSize"></span>\n <span class="im_message_document_size" ng-if="document.progress.enabled" ng-bind="document.progress | formatSizeProgress"></span>\n </div>\n <div class="im_message_document_actions" ng-if="!document.progress.enabled" ng-switch="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="::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="document.progress.enabled">\n <a class="im_message_media_progress_cancel pull-right" ng-click="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: document.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n</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 />\n</a>'),e.put("partials/desktop/message_attach_pending.html",'<div class="im_message_document im_message_upload_file" ng-class="::\'im_message_upload_\' + historyMessage.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="::historyMessage.media.file_name"></span>\n <span class="im_message_document_size" ng-if="historyMessage.media.progress" ng-bind="historyMessage.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="historyMessage.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: historyMessage.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 />\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="{{::venue.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="venue.geo"\n width="100"\n height="100"\n />\n </a>\n\n <div class="im_message_venue_info">\n <div class="im_message_venue_title_wrap">\n <a ng-href="{{::venue.mapUrl}}" target="_blank" class="im_message_document_name" ng-bind="::venue.title"></a>\n </div>\n <div class="im_message_venue_address" ng-bind="::venue.address"></div>\n </div>\n\n</div>\n'),e.put("partials/desktop/message_attach_video.html",'<div class="im_message_video im_message_document_thumbed">\n <a class="im_message_video_thumb" ng-click="videoOpen()" ng-style="::{width: media.video.thumb.width + \'px\'}">\n <span class="im_message_video_duration" ng-bind="::media.video.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.video.thumb"\n />\n </a>\n\n <div class="im_message_document_info">\n <div class="im_message_document_name_wrap">\n <span class="im_message_document_name" my-i18n="message_attach_video_video"></span>\n <span class="im_message_document_size" ng-if="!media.video.progress.enabled" ng-bind="::media.video.size | formatSize"></span>\n <span class="im_message_document_size" ng-if="media.video.progress.enabled" ng-bind="media.video.progress | formatSizeProgress"></span>\n </div>\n <div class="im_message_document_actions" ng-if="!media.video.progress.enabled">\n <a href="" ng-click="videoSave()" ng-switch="media.video.downloaded">\n <span ng-switch-when="true" my-i18n="message_attach_video_save"></span>\n <span ng-switch-default my-i18n="message_attach_video_download"></span>\n </a>\n <a 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.video.progress.enabled">\n <a class="im_message_media_progress_cancel pull-right" ng-click="media.video.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.video.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div ng-if="::media.rCaption" class="im_message_video_caption" ng-bind-html="::media.rCaption"></div>'),e.put("partials/desktop/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 <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_site" ng-bind="webpage.site_name"></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 </div>\n</div>\n'),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="messageActionChatAddUser" ng-switch="::historyMessage.from_id != historyMessage.action.user_id">\n <span ng-switch-when="true" my-i18n="message_service_invited_user">\n <my-i18n-param name="user"><a my-user-link="historyMessage.action.user_id" color="true"></a></my-i18n-param>\n </span>\n <span ng-switch-default my-i18n="message_service_returned_to_group"></span>\n </span>\n <span ng-switch-when="messageActionChatDeleteUser" ng-switch="::historyMessage.from_id != historyMessage.action.user_id">\n <span ng-switch-when="true" my-i18n="message_service_kicked_user">\n <my-i18n-param name="user"><a my-user-link="historyMessage.action.user_id" color="true"></a></my-i18n-param>\n </span>\n <span ng-switch-default my-i18n="message_service_left_group"></span>\n </span>\n <span ng-switch-when="messageActionChatJoinedByLink" my-i18n="message_service_joined_by_link"></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/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>\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"/>\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="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-user-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>\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\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">\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-user-link="photo.user_id" user-watch="true"></a>\n </div>\n <div class="media_modal_date" 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/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_message.html",'<div class="im_message_reply clearfix" ng-class="{im_message_reply_thumbed: thumb != null}" 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 != null">\n <img\n class="im_message_reply_thumb"\n my-load-thumb\n thumb="thumb"\n />\n </div>\n <div class="im_message_reply_author" ng-switch-default>\n <span my-user-link="replyMessage.from_id"></span>\n </div>\n <div class="im_message_reply_body" ng-switch-default>\n <span class="im_reply_message_media" ng-if="replyMessage.media" ng-switch="replyMessage.media._">\n <span ng-switch-when="messageMediaPhoto" my-i18n="conversation_media_photo"></span>\n <span ng-switch-when="messageMediaVideo" my-i18n="conversation_media_video"></span>\n <span ng-switch-when="messageMediaDocument" ng-switch="::replyMessage.media.document.sticker || false">\n <span ng-switch-when="1" my-i18n="conversation_media_sticker"></span>\n <span ng-switch-when="2">\n <span ng-bind-html="replyMessage.media.document.stickerEmoji"></span>\n (<my-i18n msgid="conversation_media_sticker"></my-i18n>)\n </span>\n <span ng-switch-default ng-bind="replyMessage.media.document.file_name"></span>\n </span>\n <span ng-switch-when="messageMediaAudio" my-i18n="conversation_media_audio"></span>\n <span ng-switch-when="messageMediaGeo" my-i18n="conversation_media_location"></span>\n <span ng-switch-when="messageMediaContact" my-i18n="conversation_media_contact"></span>\n </span>\n\n <span class="im_reply_message_service" ng-if="replyMessage._ == \'messageService\'" ng-switch="replyMessage.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\n <span ng-switch-when="messageActionChatAddUser" ng-switch="replyMessage.from_id == replyMessage.action.user_id">\n <span ng-switch-when="true" my-i18n="conversation_returned_to_group"></span>\n <span ng-switch-default my-i18n="conversation_invited_user">\n <my-i18n-param name="user"><span my-user-link="replyMessage.action.user_id"></span></my-i18n-param>\n </span>\n </span>\n\n <span ng-switch-when="messageActionChatDeleteUser" ng-switch="replyMessage.from_id == replyMessage.action.user_id">\n <span ng-switch-when="true" my-i18n="conversation_left_group"></span>\n <span ng-switch-default my-i18n="conversation_kicked_user">\n <my-i18n-param name="user"><span my-user-link="replyMessage.action.user_id"></span></my-i18n-param>\n </span>\n </span>\n </span>\n\n <span class="im_reply_message_text" ng-if="replyMessage.message.length" ng-bind-html="replyMessage.richMessage"></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 ng-if="authorization.current">\n <h5 class="sessions_modal_sessions_header" my-i18n="sessions_modal_current_session"></h5>\n </div>\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_session_online"></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 btn btn-md" 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 <button class="btn btn-md btn-md-danger" ng-click="terminateAllSessions()" my-i18n="sessions_modal_terminate_all"></button>\n </div>\n\n <h5 class="sessions_modal_sessions_header" my-i18n="sessions_modal_active_sessions"></h5>\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-user-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">\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/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/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._ == \'userContact\'" 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-user-link="user.id"></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">\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_number" ng-if="user.phone || user.username">\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 </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.phone.length > 0 &amp;&amp; user._ != \'userContact\' &amp;&amp; user._ != \'userSelf\'">\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._ == \'userContact\'">\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._ != \'userSelf\'">\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-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-user-link="video.user_id" user-watch="true"></a>\n </div>\n <div class="media_modal_date">\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.file_name.length > 0">\n <span ng-switch-when="true" ng-bind="::audio.file_name"></span>\n <span ng-switch-default my-i18n="message_attach_audio_message"></span>\n </a>\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.4.4\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>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/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="chatFull.chat._ != \'chatForbidden\' &amp;&amp; !chatFull.chat.left">\n <a ng-click="deletePhoto()" my-i18n="group_modal_menu_delete_photo"></a>\n </li>\n <li ng-if="chatFull.chat._ != \'chatForbidden\' &amp;&amp; !chatFull.chat.left">\n <a ng-click="editTitle()" my-i18n="group_modal_menu_edit_group"></a>\n </li>\n <li ng-if="chatFull.chat._ != \'chatForbidden\' &amp;&amp; !chatFull.chat.left">\n <a ng-click="leaveGroup()" my-i18n="group_modal_menu_leave"></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 href="" ng-click="openPhoto(chatFull.chat_photo.id, {p: -chatFull.chat.id})" class="mobile_user_modal_image_wrap pull-left" ng-class="{disabled: !chatFull.chat.photo.photo_small}">\n <img\n class="mobile_user_modal_image mobile_chat_modal_image"\n my-load-thumb\n watch="true"\n thumb="chatFull.thumb"\n />\n </a>\n\n <div class="mobile_user_modal_info_wrap clearfix">\n <h4 class="mobile_user_modal_header" my-chat-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="!chatFull.chat.left &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\' &amp;&amp; chatFull.chat.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="chatFull.chat._ != \'chatForbidden\' &amp;&amp; !chatFull.chat.left &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\n <a class="chat_modal_participant_photo pull-left" my-user-photolink="participant.user_id" img-class="chat_modal_participant_photo" status="true"></a>\n\n <div class="chat_modal_participant_name">\n <a my-user-link="participant.user_id"></a>\n </div>\n <div class="chat_modal_participant_status" my-user-status="::participant.user_id"></div>\n </div>\n\n </div>\n\n <div class="chat_modal_members_forbidden" ng-if="chatFull.chat._ == \'chatForbidden\' || chatFull.chat.left" my-i18n="group_modal_members_unavailable"></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-user-photolink="contact.userID" status="true" img-class="contacts_modal_contact_photo"></div>\n <div class="contacts_modal_contact_name" my-user-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.id)">\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.out"\n ng-bind="dialogMessage.unreadCount"\n ></span>\n <i\n class="im_dialog_unread"\n ng-show="dialogMessage.out && dialogMessage.unread"\n ></i>\n </div>\n\n <div class="im_dialog_photo pull-left">\n <img\n class="im_dialog_photo"\n my-load-thumb\n watch="true"\n thumb="dialogMessage.peerPhoto"\n />\n </div>\n\n <div class="im_dialog_message_wrap">\n\n <div class="im_dialog_peer" ng-switch="::dialogMessage.peerID > 0">\n <span class="im_dialog_user" ng-switch-when="true" my-user-link="dialogMessage.peerID"></span>\n <span class="im_dialog_chat" ng-switch-default my-chat-link="-dialogMessage.peerID"></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-user-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">\n <span ng-switch-when="true">\n <span class="im_dialog_chat_from_wrap" ng-if="dialogMessage.out">\n <span\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 ng-switch-default>\n <span class="im_dialog_chat_from_wrap" ng-switch="dialogMessage.out && dialogMessage._ != \'messageService\'">\n <span\n ng-switch-when="false"\n class="im_dialog_chat_from"\n my-user-link="dialogMessage.from_id" short="true" user-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 class="im_dialog_message_media" ng-if="dialogMessage.media" ng-switch="dialogMessage.media._">\n <span ng-switch-when="messageMediaPhoto" my-i18n="conversation_media_photo"></span>\n <span ng-switch-when="messageMediaVideo" my-i18n="conversation_media_video"></span>\n <span ng-switch-when="messageMediaDocument" ng-switch="::dialogMessage.media.document.sticker || false">\n <span ng-switch-when="1" my-i18n="conversation_media_sticker"></span>\n <span ng-switch-when="2">\n <span ng-bind-html="dialogMessage.media.document.stickerEmoji"></span>\n (<my-i18n msgid="conversation_media_sticker"></my-i18n>)\n </span>\n <span ng-switch-default ng-bind="dialogMessage.media.document.file_name"></span>\n </span>\n <span ng-switch-when="messageMediaAudio" my-i18n="conversation_media_audio"></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>\n\n <span class="im_dialog_message_service" ng-if="dialogMessage._ == \'messageService\'" ng-switch="dialogMessage.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\n <span ng-switch-when="messageActionChatAddUser" ng-switch="dialogMessage.from_id == dialogMessage.action.user_id">\n <span ng-switch-when="true" my-i18n="conversation_returned_to_group"></span>\n <span ng-switch-default my-i18n="conversation_invited_user">\n <my-i18n-param name="user"><span my-user-link="dialogMessage.action.user_id"></span></my-i18n-param>\n </span>\n </span>\n\n <span ng-switch-when="messageActionChatDeleteUser" ng-switch="dialogMessage.from_id == dialogMessage.action.user_id">\n <span ng-switch-when="true" my-i18n="conversation_left_group"></span>\n <span ng-switch-default my-i18n="conversation_kicked_user">\n <my-i18n-param name="user"><span my-user-link="dialogMessage.action.user_id"></span></my-i18n-param>\n </span>\n </span>\n </span>\n\n <span ng-switch-when="messageActionChatJoinedByLink" my-i18n="conversation_joined_by_link"></span>\n\n <span class="im_dialog_message_text" ng-if="dialogMessage.message.length" ng-bind-html="dialogMessage.richMessage"></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" ng-switch="document.downloaded &amp;&amp; isActive">\n\n <img ng-switch-when="true" class="img_gif_image" ng-src="{{document.url}}" />\n <img ng-switch-default class="img_gif_thumb" my-load-thumb thumb="document.thumb" />\n\n </div>\n\n <div ng-show="!isActive" ng-switch="document.progress.enabled">\n\n <div ng-switch-when="true" class="img_gif_progress_wrap">\n <div class="img_gif_progress progress tg_progress">\n <div class="progress-bar progress-bar-success" ng-style="{width: document.progress.percent + \'%\'}"></div>\n </div>\n </div>\n\n <div ng-switch-default class="img_gif_info_wrap">\n <div class="img_gif_label pull-left">GIF</div>\n <div ng-if="!document.downloaded" class="img_gif_size pull-right" ng-bind="::document.size | formatSize"></div>\n </div>\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 <a class="navbar-peer-wrap" ng-click="showPeerInfo()">\n <img\n my-load-thumb\n watch="true"\n thumb="historyPeer.photo"\n />\n </a>\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 ng-if="!curDialog.peer" 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-if="curDialog.peer" 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 ng-show="curDialog.peer" 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="true" 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-user-link="historyPeer.id" user-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-chat-link="-historyPeer.id" chat-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-user-link="historyState.typing[0]" short="true"></span></my-i18n-param>\n <my-i18n-param name="name2"><span my-user-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 has-tabs="{{search.query.length > 0}}" class="im_dialogs_col_wrap">\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"/>\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-user-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-user-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="foundUsers.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="foundUser in foundUsers track by foundUser.userID" ng-class="{active: curDialog.peerID == foundUser.userID}">\n <a class="im_dialog" ng-mousedown="dialogSelect(foundUser.peerString)">\n <div class="im_dialog_photo pull-left" my-user-photolink="foundUser.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-user-link="foundUser.userID"></span>\n </div>\n <div class="im_dialog_message" ng-switch="foundUser.user.username.length > 0">\n <span ng-switch-when="true" class="im_dialog_message_text" ng-bind="::\'@\' + foundUser.user.username"></span>\n <span ng-switch-default class="im_dialog_message_text" my-user-status="::foundUser.userID"></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.id" ng-class="{active: curDialog.peerID == dialogMessage.peerID &amp;&amp; curDialog.messageID == dialogMessage.id}"></li>\n </ul>\n </div>\n\n </div>\n </div>\n\n <div class="im_history_col_wrap" ng-controller="AppImHistoryController">\n <div ng-show="!state.notSelected &amp;&amp; !state.loaded" class="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 ng-show="state.loaded">\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.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.selectActions">\n <div 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-danger im_edit_delete_btn" ng-click="selectedDelete()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" my-i18n-format="im_delete"></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-hide="historyState.selectActions">\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" class="im_send_form" ng-class="{im_send_form_empty: !draftMessage.text.length}">\n\n <div class="im_send_field_wrap">\n <div class="im_send_dropbox_wrap" my-i18n="im_photos_drop_text"></div>\n <textarea ng-model="draftMessage.text" placeholder="{{\'im_message_field_placeholder\' | i18n}}" class="form-control im_message_field no_outline" dir="auto"></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 </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>'),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 <div ng-switch="credentials.viaApp">\n <div ng-switch-when="true">\n <p class="login_smscode_lead" my-i18n="login_enter_code_label_md"></p>\n <p class="login_smscode_lead">\n <a ng-click="sendSms()" my-i18n="login_code_not_received"></a>\n </p>\n </div>\n <div ng-switch-default>\n <p class="login_smscode_lead" my-i18n="login_enter_sms_code_label_md"></p>\n\n <p class="login_smscode_lead">\n <span ng-show="callPending.remaining > 0" my-i18n="login_call_remaining">\n <my-i18n-param name="remaining">{{callPending.remaining | duration}}</my-i18n-param>\n </span>\n <span ng-show="!callPending.remaining &amp;&amp; !callPending.success" my-i18n="login_calling"></span>\n <span ng-show="!callPending.remaining &amp;&amp; callPending.success" my-i18n="login_number_dialed"></span>\n </p>\n </div>\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.id, $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">\n <div class="im_service_message">\n <a class="im_message_author" my-user-link="historyMessage.from_id" short="!historyMessage.to_id.chat_id" color="historyMessage.to_id.chat_id > 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\'" 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.out ? \'im_message_out\' : \'im_message_in\']">\n <i ng-if="::historyMessage.unread &amp;&amp; historyMessage.out || historyMessage.pending || false" class="icon-message-status" ng-class="{\'icon-message-status-unread\': historyMessage.unread, \'icon-message-status-pending\': historyMessage.pending}" ng-show="!historyMessage.error"></i>\n\n <a class="im_message_from_photo pull-left" my-user-photolink="historyMessage.from_id" img-class="im_message_from_photo"></a>\n\n <div class="im_message_meta">\n <i class="icon-message-status-tick"></i>\n <span class="im_message_date" ng-bind="::historyMessage.date | time"></span>\n </div>\n\n <div class="im_message_body" ng-class="::{im_message_body_media: !!historyMessage.media && !historyMessage.media.rCaption}">\n\n <a class="im_message_author" my-user-link="historyMessage.from_id" short="!historyMessage.to_id.chat_id" color="historyMessage.to_id.chat_id > 0" no-watch="true"></a>\n\n <a class="im_message_reply_wrap" my-reply-message="historyMessage.reply_to_msg" ng-if="::historyMessage.reply_to_msg_id"></a>\n\n <div ng-if="::historyMessage.fwd_from_id > 0 &amp;&amp; !historyMessage.media" class="im_message_fwd_header" my-i18n="message_forwarded_message_mobile">\n <a my-i18n-param="from" class="im_message_fwd_author" my-user-link="historyMessage.fwd_from_id" no-watch="true"></a>\n <span my-i18n-param="date" class="im_message_fwd_date" ng-bind="::historyMessage.fwd_date | dateOrTime"></span>\n </div>\n\n <div ng-if="::historyMessage.media || false" class="im_message_media" ng-switch="historyMessage.media._">\n\n <div ng-switch-when="messageMediaPhoto" my-message-photo="historyMessage.media" message-id="historyMessage.id"></div>\n <div ng-switch-when="messageMediaVideo" my-message-video="historyMessage.media" message-id="historyMessage.id"></div>\n <div ng-switch-when="messageMediaDocument" my-message-document="historyMessage.media.document" message-id="historyMessage.id"></div>\n <div ng-switch-when="messageMediaAudio" class="im_message_audio" my-audio-player audio="historyMessage.media.audio"></div>\n <div ng-switch-when="messageMediaGeo" my-message-geo="historyMessage.media"></div>\n <div ng-switch-when="messageMediaVenue" my-message-geo="historyMessage.media"></div>\n <div ng-switch-when="messageMediaContact" class="im_message_contact" my-message-contact></div>\n <div ng-switch-when="messageMediaPending" my-message-pending></div>\n <div ng-switch-when="messageMediaUnsupported">\n <div class="im_message_text">\n The message is not supported on your version of Telegram Web. Update the app to view: <a href="https://web.telegram.org">web.telegram.org</a>.\n </div>\n </div>\n\n </div>\n\n <div class="im_message_text" ng-if="::historyMessage.message.length || false" ng-bind-html="::historyMessage.richMessage" dir="auto"></div>\n </div>\n\n </div>\n </div>\n\n</div>\n\n'),e.put("partials/mobile/message_attach_contact.html",'<div>\n <a ng-if="historyMessage.media.user_id > 0" class="im_message_contact_photo pull-left" my-user-photolink="historyMessage.media.user_id" img-class="im_message_contact_photo" user-override="historyMessage.media"></a>\n <div class="im_message_contact_name" ng-switch="historyMessage.media.user_id > 0">\n <a ng-switch-when="true" my-user-link="historyMessage.media.user_id" user-override="historyMessage.media"></a>\n <span ng-switch-default ng-bind-html="::historyMessage.media.rFullName"></span>\n </div>\n <div class="im_message_contact_phone" ng-bind="::historyMessage.media.phone_number | phoneNumber"></div>\n</div>'),e.put("partials/mobile/message_attach_document.html",'<div ng-switch="::document.isSpecial">\n\n <div ng-switch-when="gif" my-load-gif document="document"></div>\n\n <div ng-switch-when="sticker" my-load-sticker document="document"></div>\n\n <div ng-switch-when="audio" class="im_message_audio">\n <div my-audio-player audio="document"></div>\n </div>\n\n <div ng-switch-default class="im_message_document clearfix" ng-class="{im_message_document_thumbed: !!document.thumb, im_message_document_progress: document.progress.enabled}">\n\n <a ng-if="::!document.thumb" class="im_message_file_button" ng-click="docOpen()" ng-class="{im_message_file_button_dl_doc: document.downloaded}">\n <i class="im_message_file_button_icon"></i>\n </a>\n <a ng-if="::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="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="::document.file_name"></a>\n <span class="im_message_document_size" ng-if="!document.progress.enabled" ng-bind="::document.size | formatSize"></span>\n <span class="im_message_document_size" ng-if="document.progress.enabled" ng-bind="document.progress | formatSizeProgress"></span>\n </div>\n <div class="im_message_document_actions" ng-if="!document.progress.enabled" ng-switch="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="::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="document.progress.enabled">\n <a class="im_message_media_progress_cancel pull-right" ng-click="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: document.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n</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_\' + historyMessage.media.type">\n <i class="icon" ng-class="::\'icon-\' + historyMessage.media.type"></i>\n <div class="im_message_document_info">\n <div class="im_message_document_name_wrap">\n <span class="im_message_document_name" ng-bind="::historyMessage.media.file_name"></span>\n <span class="im_message_document_size" ng-if="historyMessage.media.progress" ng-bind="historyMessage.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="historyMessage.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: historyMessage.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_video.html",'<div class="im_message_video im_message_document_thumbed">\n <a class="im_message_video_thumb" href="" ng-click="videoOpen()" ng-style="::{width: media.video.thumb.width + \'px\'}">\n <span class="im_message_video_duration" ng-bind="::media.video.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.video.thumb"\n />\n </a>\n</div>\n<div ng-if="::media.rCaption" class="im_message_video_caption" ng-bind-html="::media.rCaption"></div>'),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="messageActionChatAddUser" ng-switch="::historyMessage.from_id != historyMessage.action.user_id">\n <span ng-switch-when="true" my-i18n="message_service_invited_user">\n <my-i18n-param name="user"><a my-user-link="historyMessage.action.user_id" color="true"></a></my-i18n-param>\n </span>\n <span ng-switch-default my-i18n="message_service_returned_to_group"></span>\n </span>\n <span ng-switch-when="messageActionChatDeleteUser" ng-switch="::historyMessage.from_id != historyMessage.action.user_id">\n <span ng-switch-when="true" my-i18n="message_service_kicked_user">\n <my-i18n-param name="user"><a my-user-link="historyMessage.action.user_id" color="true"></a></my-i18n-param>\n </span>\n <span ng-switch-default my-i18n="message_service_left_group"></span>\n </span>\n\n <span ng-switch-when="messageActionChatJoinedByLink" my-i18n="message_service_joined_by_link"></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>\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"/>\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">\n <img\n class="im_dialog_photo"\n my-load-thumb\n thumb="contact.userPhoto"\n />\n </div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" my-user-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>\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"/>\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">\n <a class="media_modal_author" my-user-link="photo.user_id" user-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 ng-if="authorization.current">\n <h5 class="sessions_modal_sessions_header" my-i18n="sessions_modal_current_session"></h5>\n </div>\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_session_online"></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 btn btn-md" 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 <button class="btn btn-md btn-md-danger" ng-click="terminateAllSessions()" my-i18n="sessions_modal_terminate_all"></button>\n </div>\n\n <h5 class="sessions_modal_sessions_header" my-i18n="sessions_modal_active_sessions"></h5>\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 href="" ng-click="openPhoto(user.photo.photo_id, {u: profile.id})" class="mobile_user_modal_image_wrap pull-left" ng-class="{disabled: !user.photo.id}">\n <img\n class="mobile_user_modal_image"\n my-load-thumb\n watch="true"\n thumb="photo"\n />\n </a>\n\n <div class="mobile_user_modal_info_wrap clearfix">\n <h4 class="mobile_user_modal_header" my-user-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/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._ == \'userContact\'">\n <a ng-click="importContact(true)" my-i18n="user_modal_edit_contact"></a>\n </li>\n <li ng-if="user._ == \'userContact\'">\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._ != \'userContact\' &amp;&amp; user._ != \'userSelf\'">\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 href="" ng-click="openPhoto(user.photo.photo_id, {u: user.id})" class="mobile_user_modal_image_wrap pull-left" ng-class="{disabled: !user.photo.photo_id}">\n <img\n class="mobile_user_modal_image"\n my-load-thumb\n thumb="userPhoto"\n />\n </a>\n\n <div class="mobile_user_modal_info_wrap clearfix">\n <h4 class="mobile_user_modal_header" ng-bind="user | userName"></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_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">\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">\n <a class="media_modal_author" my-user-link="video.user_id" user-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,i){function a(e){ConfigStorage.get("emojis_popular",function(t){var n=[];if(t&&t.length){for(var i=0,a=t.length;a>i;i++)n.push({code:t[i][0],rate:t[i][1]});return void e(n)}ConfigStorage.get("emojis_recent",function(t){t=t||b||[];for(var i,a,o=0,s=t.length;s>o;o++)i=t[o],Array.isArray(i)&&(i=i[0]),i&&"string"==typeof i&&(":"==i.charAt(0)&&(i=i.substr(1,i.length-2)),(a=f[i])&&n.push({code:a,rate:1}));e(n)})})}function o(e){a(function(t){for(var n=!1,i=t.length,a=[],o=0;i>o;o++)t[o].code==e&&(n=!0,t[o].rate++),a.push([t[o].code,t[o].rate]);n?a.sort(function(e,t){return t[1]-e[1]}):(a.length>41&&(a=a.slice(0,41)),a.push([e,1])),ConfigStorage.set({emojis_popular:a})})}function s(){if(y===!1){y=SearchIndexManager.createIndex();var e;for(e in f)f.hasOwnProperty(e)&&SearchIndexManager.indexObject(f[e],e,y)}}function r(e){s();var t,n=SearchIndexManager.search(e,y),i=[];for(t in n)n.hasOwnProperty(t)&&i.push(t);return i}var c,l,d,u,p,m,h,g,t={},f={},_={},v={},y=!1,b="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(c=0,h=n.length;h>c;c++)for(m=i[c][1],l=0,g=n[c].length;g>l;l++)d=n[c][l],p=Config.Emoji[d],u=p[1][0],t[d]=[p[0],u],f[u]=d,_[d]=[c,l,Math.floor(l/m),l%m];e.EmojiHelper={emojis:t,shortcuts:f,spritesheetPositions:_,stickers:v,getPopularEmoji:a,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),200))},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()},400)}},EmojiTooltip.prototype.getScrollWidth=function(){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},EmojiTooltip.prototype.createTooltip=function(){if(this.tooltipEl)return!1;var e=this;this.tooltipEl=$('<div class="composer_emoji_tooltip noselect"><div class="composer_emoji_tooltip_tabs"></div><div class="composer_emoji_tooltip_content_wrap nano mobile_scrollable_wrap"><div class="composer_emoji_tooltip_content nano-content clearfix"></div></div><div class="composer_emoji_tooltip_footer"><a class="composer_emoji_tooltip_settings"></a></div><div class="composer_emoji_tooltip_tail"><i class="icon icon-tooltip-tail"></i></div></div>').appendTo(document.body),this.tabsEl=$(".composer_emoji_tooltip_tabs",this.tooltip),this.contentWrapEl=$(".composer_emoji_tooltip_content_wrap",this.tooltip),this.contentEl=$(".composer_emoji_tooltip_content",this.tooltip),this.footerEl=$(".composer_emoji_tooltip_footer",this.tooltip),this.settingsEl=$(".composer_emoji_tooltip_settings",this.tooltip);var t=this.getScrollWidth();return t>0&&this.tooltipEl.css({width:parseInt(this.tooltipEl.css("width"))+t}),angular.forEach(["recent","smile","flower","bell","car","grid","stickers"],function(t,n){var i=$('<a class="composer_emoji_tooltip_tab composer_emoji_tooltip_tab_'+t+'"></a>').on("mousedown",function(t){return e.selectTab(n),cancelEvent(t)}).appendTo(e.tabsEl);Config.Navigator.touch||i.on("mouseenter mouseleave",function(t){clearTimeout(e.selectTabTimeout),"mouseenter"==t.type&&(e.selectTabTimeout=setTimeout(function(){e.selectTab(n)},300))})}),Config.Mobile||this.contentWrapEl.nanoScroller({preventPageScrolling:!0,tabIndex:-1}),this.contentEl.on("mousedown",function(t){t=t.originalEvent||t;var n,i,a=$(t.target);return"A"!=a[0].tagName&&(a=$(a[0].parentNode)),(n=a.attr("data-code"))&&(e.onEmojiSelected&&e.onEmojiSelected(n),EmojiHelper.pushPopularEmoji(n)),(i=a.attr("data-sticker"))&&(e.onStickerSelected&&e.onStickerSelected(i),Config.Mobile&&e.hide()),cancelEvent(t)}),Config.Navigator.touch||this.tooltipEl.on("mouseenter mouseleave",function(t){"mouseenter"==t.type?e.onMouseEnter():e.onMouseLeave()}),this.selectTab(0),$(window).on("resize",this.updatePosition.bind(this)),!0},EmojiTooltip.prototype.selectTab=function(e){return this.tab===e?!1:($(".active",this.tabsEl).removeClass("active"),this.tab=e,$(this.tabsEl[0].childNodes[e]).addClass("active"),void this.updateTabContents())},EmojiTooltip.prototype.updateTabContents=function(){var e=[],t=this,n=Config.Mobile?26:20,i=function(){t.contentEl.html(e.join("")),Config.Mobile||(t.contentWrapEl.nanoScroller({scroll:"top"}),setTimeout(function(){t.contentWrapEl.nanoScroller()},100))};if(6==this.tab){var a=function(t){var n,a,o=t.length;for(a=0;o>a;a++)n=t[a],e.push('<a class="composer_sticker_btn" data-sticker="'+n.id+'"><img class="composer_sticker_image" src="'+encodeEntities(n.src)+'" /></a>');i()};this.getStickers(a)}else if(this.tab>0){var o,s,r,c,l,d=this.tab-1,u=Config.EmojiCategories[d],p=Config.EmojiCategorySpritesheetDimens[d][1],m=u.length;for(r=0;m>r;r++)o=u[r],s=Config.Emoji[o],c=n*(r%p),l=n*Math.floor(r/p),e.push('<a class="composer_emoji_btn" title=":'+encodeEntities(s[1][0])+':" data-code="'+encodeEntities(o)+'"><i class="emoji emoji-w'+n+" emoji-spritesheet-"+d+'" style="background-position: -'+c+"px -"+l+'px;"></i></a>');i()}else EmojiHelper.getPopularEmoji(function(t){var a,o,s,r,c,l,d,u,p=t.length;for(l=0;p>l;l++)a=t[l].code,(o=Config.Emoji[a])&&(s=EmojiHelper.spritesheetPositions[a],c=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(a)+'"><i class="emoji emoji-w'+n+" emoji-spritesheet-"+c+'" style="background-position: -'+d+"px -"+u+'px;"></i></a>'));i()})},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.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(i){var a,o,s,r,c,l,d,u,p=i.length;for(l=0;p>l;l++)a=i[l].code,(o=Config.Emoji[a])&&(s=EmojiHelper.spritesheetPositions[a],c=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(a)+'"><i class="emoji emoji-w20 emoji-spritesheet-'+c+'" style="background-position: -'+d+"px -"+u+'px;"></i></a>'));t.containerEl.html(e.join(""))})},MessageComposer.prototype.setUpInput=function(){"contentEditable"in document.body?this.setUpRich():this.setUpPlaintext(),this.autoCompleteRegEx=/(?:\s|^)(:|@)([A-Za-z0-9\-\+\*_]*)$/},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){if("keyup"==e.type){this.checkAutocomplete();var t=!1;if(this.richTextareaEl){clearTimeout(this.updateValueTO);var n=tsNow();void 0===this.keyupStarted&&(this.keyupStarted=n),n-this.keyupStarted>1e4?this.onChange():(t=this.richTextareaEl[0].textContent.length,this.wasEmpty!=!t?(this.wasEmpty=!this.wasEmpty,this.onChange()):this.updateValueTO=setTimeout(this.onChange.bind(this),1e3))}if(this.onTyping){var n=tsNow();n-this.lastTyping>5e3&&(t===!1&&(t=(this.richTextareaEl?this.richTextareaEl[0].textContent:this.textareaEl[0].value).length),t!=this.lastLength&&(this.lastTyping=n,this.lastLength=t,this.onTyping()))}}if("keydown"==e.type){var i=!this.autocompleteShown;if(this.autocompleteShown){if(38==e.keyCode||40==e.keyCode){var a=40==e.keyCode,o=$(this.autoCompleteEl).find(".composer_autocomplete_option_active");if(o.length){var s=o[0].parentNode,r=s[a?"nextSibling":"previousSibling"];if(o.removeClass("composer_autocomplete_option_active"),r)return $(r).find("a").addClass("composer_autocomplete_option_active"),cancelEvent(e)}var c=this.autoCompleteEl[0].childNodes,r=c[a?0:c.length-1];return $(r).find("a").addClass("composer_autocomplete_option_active"),cancelEvent(e)}if(13==e.keyCode||9==e.keyCode){var o=$(this.autoCompleteEl).find(".composer_autocomplete_option_active");o.length||9!=e.keyCode||(o=$(this.autoCompleteEl[0].childNodes[0]).find("a"));var l,d;if(l=o.attr("data-code"))return this.onEmojiSelected(l,!0),EmojiHelper.pushPopularEmoji(l),cancelEvent(e);if((d=o.attr("data-mention"))&&this.onMentionSelected)return this.onMentionSelected(d),cancelEvent(e);i=!0}}if(i&&13==e.keyCode){var u=!1,p=!0;if(this.getSendOnEnter&&!this.getSendOnEnter()&&(p=!1),p&&!e.shiftKey?u=!0:p||!e.ctrlKey&&!e.metaKey||(u=!0),u)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(){if(Config.Mobile)return!1;var e,t;if(this.richTextareaEl)var n=this.richTextareaEl[0],i=getRichValueWithCaret(n),t=i[0],e=i[1]>=0?i[1]:t.length;else var n=this.textareaEl[0],e=getFieldSelection(n),t=n.value;t=t.substr(0,e);var a=t.match(this.autoCompleteRegEx);if(a){if(this.previousQuery==a[0])return;this.previousQuery=a[0];var o=SearchIndexManager.cleanSearchText(a[2]);if("@"==a[1])if(this.mentions&&this.mentions.index){if(o.length)for(var s,r=SearchIndexManager.search(o,this.mentions.index),c=[],l=0,d=this.mentions.users.length;d>l;l++)s=this.mentions.users[l],r[s.id]&&c.push(s);else var c=this.mentions.users;c.length?this.showMentionSuggestions(c):this.hideSuggestions()}else this.hideSuggestions();else EmojiHelper.getPopularEmoji(function(e){if(o.length){var t=EmojiHelper.searchEmojis(o);if(t.length){for(var n,i,a=[],s=0,r=e.length;r>s&&(n=e[s].code,i=t.indexOf(n),!(i>=0)||(a.push(n),t.splice(i,1),t.length));s++);this.showEmojiSuggestions(a.concat(t))}else this.hideSuggestions()}else this.showEmojiSuggestions(e)}.bind(this))}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.hideSuggestions(),this.richTextareaEl&&document.execCommand("enableObjectResizing",!this.isActive,!this.isActive)},MessageComposer.prototype.onRichPaste=function(e){var t,n=(e.originalEvent||e).clipboardData,i=n&&n.items||[];for(t=0;t<i.length;t++)if("file"==i[t].kind)return e.preventDefault(),!0;try{var a=n.getData("text/plain")}catch(e){return!0}return setZeroTimeout(this.onChange.bind(this),0),a.length?(document.execCommand("insertText",!1,a),cancelEvent(e)):!0},MessageComposer.prototype.onRichPasteNode=function(e){var t=(e.originalEvent||e).target,n=(t||{}).src||"",i=!1;if("data:"==n.substr(0,5)){i=!0;var a=dataUrlToBlob(n);this.onFilePaste(a),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 i,a=getRichValueWithCaret(n),o=a[0],s=a[1]>=0?a[1]:o.length,r=o.substr(s),c=o.substr(0,s),l=c.match(/:([A-Za-z0-9\-\+\*_]*)$/),d=EmojiHelper.emojis[e];i=l&&l[0]?c.substr(0,l.index)+":"+d[1]+":":c+":"+d[1]+":",n.value=f,this.selId=(this.selId||0)+1;var u=this.getRichHtml(i)+'&nbsp;<span id="composer_sel'+this.selId+'"></span>'+this.getRichHtml(r);this.richTextareaEl.html(u),setRichFocus(n,$("#composer_sel"+this.selId)[0])}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 h=m.firstChild,g=p.getRangeAt(0);g.deleteContents(),g.insertNode(document.createTextNode(" ")),g.insertNode(h),g.setStart(h,0),setTimeout(function(){g=document.createRange(),g.setStartAfter(h),g.collapse(!0),p.removeAllRanges(),p.addRange(g)},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),c=o.substr(0,s),l=t&&c.match(/:([A-Za-z0-9\-\+\*_]*)$/),d=EmojiHelper.emojis[e];if(l&&l[0])var f=c.substr(0,l.index)+":"+d[1]+": "+r,_=l.index+d[1].length+3;else var f=c+":"+d[1]+": "+r,_=c.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,i=getRichValueWithCaret(t),a=i[0],o=i[1]>=0?i[1]:a.length,s=a.substr(o),r=a.substr(0,o),c=r.match(/@([A-Za-z0-9\-\+\*_]*)$/);n=c&&c[0]?r.substr(0,c.index)+"@"+e:r+"@"+e,t.value=d,this.selId=(this.selId||0)+1;var l=this.getRichHtml(n)+'&nbsp;<span id="composer_sel'+this.selId+'"></span>'+this.getRichHtml(s);this.richTextareaEl.html(l),setRichFocus(t,$("#composer_sel"+this.selId)[0])}else{var t=this.textareaEl[0],a=t.value,o=this.isActive?getFieldSelection(t):a.length,s=a.substr(o),r=a.substr(0,o),c=r.match(/@([A-Za-z0-9\-\+\*_]*)$/);if(c&&c[0])var d=r.substr(0,c.index)+"@"+e+" "+s,u=c.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.onChange=function(){this.richTextareaEl&&(delete this.keyupStarted,this.textareaEl.val(getRichValue(this.richTextareaEl[0])).trigger("change"))},MessageComposer.prototype.getEmojiHtml=function(e,t){t=t||EmojiHelper.emojis[e];var n=20,i=EmojiHelper.spritesheetPositions[e],a=i[0],o=(i[1],n*i[3]),s=n*i[2];return'<img src="img/blank.gif" alt=":'+encodeEntities(t[1])+':" data-code="'+encodeEntities(e)+'" class="emoji emoji-w20 emoji-spritesheet-'+a+'" 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.getRichHtml=function(e){return $("<div>").text(e).html().replace(/\n/g,"<br/>").replace(/:([A-Za-z0-9\-\+\*_]+?):/gi,function(e,t){var n=EmojiHelper.shortcuts[t];return void 0!==n?this.getEmojiHtml(n):e}.bind(this))},MessageComposer.prototype.focus=function(){this.richTextareaEl?setZeroTimeout(function(){setRichFocus(this.richTextareaEl[0])}.bind(this)):setFieldSelection(this.textareaEl[0])},MessageComposer.prototype.showEmojiSuggestions=function(e){var t,n,i,a,o,s,r,c,l=[],d=Config.Mobile?26:20,u=Math.min(5,e.length);for(s=0;u>s;s++)t=e[s],t.code&&(t=t.code),(n=Config.Emoji[t])&&(i=EmojiHelper.spritesheetPositions[t],o=i[0],a=i[1],r=d*i[3],c=d*i[2],l.push('<li><a class="composer_emoji_option" data-code="'+encodeEntities(t)+'"><i class="emoji emoji-w20 emoji-spritesheet-'+o+'" style="background-position: -'+r+"px -"+c+'px;"></i><span class="composer_emoji_shortcut">:'+encodeEntities(n[1][0])+":</span></a></li>"));this.autoCompleteEl.html(l.join("")),this.autoCompleteEl.show(),this.updatePosition(),this.autocompleteShown=!0},MessageComposer.prototype.showMentionSuggestions=function(e){var t,n,i=[],a=Math.min(5,e.length);for(n=0;a>n;n++)t=e[n],i.push('<li><a class="composer_mention_option" data-mention="'+t.username+'"><span class="composer_user_photo" data-user-id="'+t.id+'"></span><span class="composer_user_name">'+t.rFullName+'</span><span class="composer_user_mention">@'+t.username+"</span></a></li>");this.autoCompleteEl.html(i.join(""));var o=this;this.autoCompleteEl.find(".composer_user_photo").each(function(e,t){o.getPeerImage($(t),t.getAttribute("data-user-id"))}),this.autoCompleteEl.show(),this.updatePosition(),this.autocompleteShown=!0},MessageComposer.prototype.updatePosition=function(){var e=(this.richTextareaEl||this.textareaEl).offset(),t=this.autoCompleteEl.outerHeight(),n=(this.richTextareaEl||this.textareaEl).outerWidth();this.autoCompleteEl.css({top:e.top-t,left:e.left,width:n-2})},MessageComposer.prototype.hideSuggestions=function(){this.autoCompleteEl.hide(),delete this.autocompleteShown},MessageComposer.prototype.resetTyping=function(){this.lastTyping=0,this.lastLength=0},angular.module("myApp.directives",["myApp.filters"]).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,h=!1,g=!1,f=!1,_=!1,v=!1,y=function(){p!=(e.selectedMsgs[e.historyMessage.id]||!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=$(a),$(n[0].firstChild).text(i(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,i){i==e.historyMessage.id!=h&&(h=!h,t.toggleClass(r,h))});var w;if(!e.historyMessage.out&&(e.historyMessage.unread||e.historyMessage.unreadAfter)){var k=function(){e.peerHistory.peerID==e.historyPeer.id&&v!=(e.historyUnreadAfter==e.historyMessage.id)&&(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.unread&&e.historyMessage.out){t.addClass(c);var S=e.$on("messages_read",function(){e.historyMessage.unread||(t.removeClass(c),S(),w&&!v&&w())})}if(e.historyMessage.error||e.historyMessage.pending){var C=function(){f!=(e.historyMessage.pending||!1)&&(f=!f,t.toggleClass(d,f)),g!=(e.historyMessage.error||!1)&&(g=!g,t.toggleClass(l,g)),g||f||M()},M=e.$on("messages_pending",C);C()}}var i=e("myDate"),a='<div class="im_message_date_split im_service_message_wrap"><div class="im_service_message"></div></div>',o='<div class="im_message_unread_split">'+t("unread_messages_split")+"</div>",s="im_message_selected",r="im_message_focus",c="im_message_unread",l="im_message_error",d="im_message_pending";return{templateUrl:templateUrl("message"),link:n}}]).directive("myExternalEmbed",function(){function e(e,r,c){var l=e.$eval(c.myExternalEmbed);if(l){var d="",u=!1;switch(l[0]){case"youtube":var p=l[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=l[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=l[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 h=l[1];d='<div class="im_message_media_embed im_message_vine_embed"><'+s+' type="text/html" frameborder="0" src="https://vine.co/v/'+h+'/embed/simple"></'+s+"></div>";break;case"soundcloud":var g=l[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(g))+'&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=l[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="'+l[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<a.length;e++)a[e].$emit("ui_height");a=[]})}).attr("src","https://platform.twitter.com/widgets.js")),a.push(e)};break;case"facebook":d='<div class="im_message_facebook_embed"><div class="fb-post" data-href="'+l[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="'+l[1]+'"></div></div>',u=function(){i?window.gapi&&gapi.post.go(r[0]):(i=!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,i=!1,a=[],o=[],s=Config.Modes.chrome_packed?"webview":"iframe";return{link:e}}).directive("myServiceMessage",function(){return{templateUrl:templateUrl("message_service")}}).directive("myReplyMessage",["AppPhotosManager","AppMessagesManager","AppPeersManager","$rootScope",function(e,t,n,i){function a(e,n){var i=e.replyMessage;if(i.loading)var a=i.id,s=e.$on("messages_downloaded",function(i,r){-1!=r.indexOf(a)&&(e.replyMessage=t.wrapForDialog(a),o(e,n),s())});else o(e,n)}function o(a,o){var s=a.replyMessage;if(!s||s.deleted||!s.to_id)return void $(o).remove();var r,c=42,l=42;if(s.media)switch(s.media._){case"messageMediaPhoto":r=e.choosePhotoSize(s.media.photo,c,l);break;case"messageMediaDocument":r=s.media.document.thumb;break;case"messageMediaVideo":r=s.media.video.thumb}if(r&&"photoSizeEmpty"!=r._){var d=calcImageInBox(r.w,r.h,c,l,!0);a.thumb={width:d.w,height:d.h,location:r.location,size:r.size}}"A"==o[0].tagName&&o.on("click",function(){var e=t.getMessagePeer(s),a=n.getPeerString(e);i.$broadcast("history_focus",{peerString:a,messageID:s.id})})}return{templateUrl:templateUrl("reply_message"),scope:{replyMessage:"=myReplyMessage"},link:a}}]).directive("myMessagePhoto",["AppPhotosManager",function(e){return{scope:{media:"=myMessagePhoto",messageId:"=messageId"},templateUrl:templateUrl("message_attach_photo"),link:function(t){t.openPhoto=e.openPhoto}}}]).directive("myMessageVideo",["AppVideoManager",function(e){return{scope:{media:"=myMessageVideo",messageId:"=messageId"},templateUrl:templateUrl("message_attach_video"),link:function(t){e.updateVideoDownloaded(t.media.video.id),t.videoSave=function(){e.saveVideoFile(t.media.video.id)},t.videoOpen=function(){e.openVideo(t.media.video.id,t.messageId)}}}}]).directive("myMessageDocument",["AppDocsManager",function(e){return{scope:{document:"=myMessageDocument",messageId:"=messageId"},templateUrl:templateUrl("message_attach_document"),link:function(t){e.updateDocDownloaded(t.document.id),t.docSave=function(){e.saveDocFile(t.document.id)},t.docOpen=function(){return t.document.withPreview?void e.openDoc(t.document.id,t.messageId):t.docSave()}}}}]).directive("myMessageGeo",function(){return{scope:{media:"=myMessageGeo"},templateUrl:templateUrl("message_attach_geo")}}).directive("myMessageVenue",function(){return{scope:{venue:"=myMessageVenue"},templateUrl:templateUrl("message_attach_venue")}}).directive("myMessageContact",function(){return{templateUrl:templateUrl("message_attach_contact")}}).directive("myMessageWebpage",["AppWebPagesManager","AppPhotosManager",function(e,t){return{scope:{webpage:"=myMessageWebpage",messageId:"=messageId"},templateUrl:templateUrl("message_attach_webpage"),link:function(n){n.openPhoto=t.openPhoto,n.openEmbed=function(t){return n.webpage&&n.webpage.embed_url?(e.openEmbed(n.webpage.id,n.messageId),cancelEvent(t)):void 0},n.$on("webpage_updated",function(e,t){n.webpage&&n.webpage.id==t.id&&n.$emit("ui_height")})}}}]).directive("myMessagePending",function(){return{templateUrl:templateUrl("message_attach_pending")}}).directive("myDialogs",["$modalStack","$transition","$window","$timeout",function(e,t,n,i){function a(t,a,o){function s(n){if(!h&&e.getTop())return!0;if(36==n.keyCode&&!n.shiftKey&&!n.ctrlKey&&n.altKey){var i=$(l).find(".im_dialog_wrap a");return i.length&&($(i[0]).trigger("mousedown"),l.scrollTop=0,$(c).nanoScroller({flash:!0})),cancelEvent(n)}if(27==n.keyCode||9==n.keyCode&&n.shiftKey&&!n.ctrlKey&&!n.metaKey)return h?d.value?$(p).trigger("click"):(t.$emit("esc_no_more"),setTimeout(function(){d.blur(),d.focus()},100)):(setFieldSelection(d),d.value&&d.select()),cancelEvent(n);if(h&&13==n.keyCode){var i=$(l).find(".im_dialog_selected")[0]||$(l).find(".im_dialog_wrap a")[0];return i&&$(i).trigger("mousedown"),cancelEvent(n)}if(n.altKey&&n.shiftKey&&!n.ctrlKey&&!n.metaKey&&n.keyCode>=49&&n.keyCode<=57){var a=n.keyCode-49,o=$(l).find(".im_dialog_wrap"),s=o[a];return s&&($(s).find("a").trigger("mousedown"),r(s)),cancelEvent(n)}var u,m,g,f=Config.Modes.packed;if(40==n.keyCode||38==n.keyCode?(u=40==n.keyCode,m=!u,g=!n.shiftKey&&n.altKey):f&&9==n.keyCode&&n.ctrlKey&&!n.metaKey&&(u=!n.shiftKey,m=!u,g=!0),u||m){if(!g&&(!h||n.metaKey))return!0;var s,i=!g&&$(l).find(".im_dialog_selected")[0]||$(l).find(".active a.im_dialog")[0],_=i&&i.parentNode;if(_){var s=i[u?"nextSibling":"previousSibling"];if(!s||!s.className||-1==s.className.indexOf("im_dialog_wrap")){var o=$(l).find(".im_dialog_wrap"),v=o.index(i.parentNode),y=v+(u?1:-1);s=o[y]}}else{var o=$(l).find(".im_dialog_wrap");s=u?o[0]:o[o.length-1]}return g?s&&$(s).find("a").trigger("mousedown"):(_&&s&&$(_).find("a").removeClass("im_dialog_selected"),s&&$(s).find("a").addClass("im_dialog_selected")),s&&r(s),cancelEvent(n)}}function r(e){var t=e.offsetTop-15,n=e.offsetHeight+30,i=l.scrollTop,a=l.clientHeight;i>t?(l.scrollTop=t,$(c).nanoScroller({flash:!0})):t+n-a>i&&(l.scrollTop=t+n-a,$(c).nanoScroller({flash:!0}))}var c=$(".im_dialogs_wrap",a)[0],l=$(".im_dialogs_scrollable_wrap",a)[0],d=$(".im_dialogs_search_field",a)[0],u=$(".im_dialogs_panel",a)[0],p=$(".im_dialogs_search_clear",a)[0],m=$(".im_dialogs_tabs_wrap",a)[0],h=!1;$(d).on("focus blur",function(e){h="focus"==e.type,h||($(l).find(".im_dialog_selected").removeClass("im_dialog_selected"),d.value||t.$emit("ui_dialogs_search_clear"))}),t.$on("dialogs_search_toggle",function(){$(u).addClass("im_dialogs_panel_search"),t.$broadcast("ui_dialogs_search"),$(n).scrollTop(0),i(function(){setFieldSelection(d)})}),t.$on("search_clear",function(){$(u).removeClass("im_dialogs_panel_search"),t.$broadcast("ui_dialogs_search")}),o.$observe("hasTabs",function(e){e="true"==e,$(m).toggle(e),t.$broadcast("ui_dialogs_tabs",e)}),$(document).on("keydown",s),t.$on("$destroy",function(){$(document).off("keydown",s)}),t.$on("ui_dialogs_change",function(){onContentLoaded(function(){var e=$(l).find(".active a.im_dialog")[0];e&&r(e.parentNode)})})}return{link:a}}]).directive("myDialogsList",["$window","$timeout",function(e,t){function n(n,i,a){function o(){if(u&&u.offsetHeight||(u=$(d)[0]),a.modal){var t=$(e).height()-(u?u.offsetHeight:58)-(Config.Mobile?46:200);return t=Math.min(350,t),$(i).css({height:t}),void g()}l&&l.offsetHeight||(l=$(".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++,$(i).css({height:$(e).height()-n-(l?l.offsetHeight:48)-(u?u.offsetHeight:58)-parseInt($(r).css("paddingBottom")||0)}),g()}var s=$(".im_dialogs_wrap",i)[0],r=$(".im_dialogs_col_wrap")[0],c=$(".im_dialogs_scrollable_wrap",i)[0],l=$(".tg_page_head")[0],d=Config.Mobile&&a.modal?".mobile_modal_body .im_dialogs_panel":".im_dialogs_panel",u=$(d)[0],p=$(".footer_wrap")[0],m=!1,h=!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_tabs",function(e,t){m=t,o()}),n.$on("ui_dialogs_search",o),n.$on("ui_dialogs_update",o),n.$on("ui_dialogs_append",function(){onContentLoaded(function(){g(),h=!1,t(function(){$(c).trigger("scroll")})})}),n.$on("ui_dialogs_change",function(){onContentLoaded(function(){g(),h=!1,t(function(){$(c).trigger("scroll")})})}),$(c).on("scroll",function(){i.is(":visible")&&!h&&c.scrollTop>=c.scrollHeight-c.clientHeight-300&&(n.$emit("dialogs_need_more"),h=!0)}),$(e).on("resize",o),o(),setTimeout(o,1e3)}return{link:n}}]).directive("myContactsList",["$window","$timeout",function(e){function t(t,n){function i(){$(n).css({height:$(e).height()-(o&&o.offsetHeight||0)-(a&&a.offsetHeight||0)-(Config.Mobile?64:200)}),$(s).nanoScroller()}var a=$(".contacts_modal_search")[0],o=$(".contacts_modal_panel")[0],s=$(".contacts_wrap",n)[0];onContentLoaded(function(){$(s).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0}),i()}),$(e).on("resize",i),t.$on("contacts_change",function(){onContentLoaded(i)})}return{link:t}}]).directive("myCountriesList",["$window","$timeout",function(e){function t(t,n){function i(){$(n).css({height:$(e).height()-(o&&o.offsetHeight||0)-(a&&a.offsetHeight||0)-(Config.Mobile?64:200)}),$(s).nanoScroller()}var a=$(".countries_modal_search")[0],o=$(".countries_modal_panel")[0],s=$(".countries_wrap",n)[0];onContentLoaded(function(){$(s).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0}),i()}),$(e).on("resize",i),t.$on("contacts_change",function(){onContentLoaded(i)})}return{link:t}}]).directive("mySessionsList",["$window","$timeout",function(e){function t(t,n){function i(){$(n).css({height:$(e).height()-(Config.Mobile?64:200)}),$(a).nanoScroller()}var a=$(".sessions_wrap",n)[0];onContentLoaded(function(){$(a).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0}),i()
}),$(e).on("resize",i)}return{link:t}}]).directive("myHistory",["$window","$timeout","$rootScope","$transition",function(e,t,n,i){function a(a,o){function s(e){var n,i;if(!e&&(i=$(".im_message_focus:visible",u)[0])){var a=u.clientHeight,o=u.scrollTop,s=i.offsetTop,r=i.clientHeight;(!o||s>o+a||o>s+r)&&(u.scrollTop=Math.max(0,s-Math.floor(a/2)+26)),A=!1}else(n=$(".im_message_unread_split:visible",u)[0])?(u.scrollTop=Math.max(0,n.offsetTop-52),A=!1):(u.scrollTop=u.scrollHeight,A=!0);w(),t(function(){$(u).trigger("scroll"),x=u.scrollTop})}function r(t){if(o.is(":visible")||$(o[0].parentNode.parentNode).is(":visible")){$(h).is(":visible")&&$(h).css({height:$(_).height()}),g&&g.offsetHeight||(g=$(".tg_page_head")[0]),f&&f.offsetHeight||(f=$(".footer_wrap")[0]);var n=f?f.offsetHeight:0;n&&n++;var i=$(e).height()-m.offsetHeight-(g?g.offsetHeight:48)-n;$(l).css({height:i}),c(),t!==!0&&(A&&onContentLoaded(function(){u.scrollTop=u.scrollHeight,w()}),w(100))}}function c(){$(d).css({marginTop:0});var e=u.offsetHeight-d.offsetHeight-20-(Config.Mobile?0:39);d.offsetHeight>0&&e>0&&$(d).css({marginTop:e}),$(l).nanoScroller()}var l=$(".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_bottom_panel_wrap",o)[0],h=$(".im_send_form_wrap",o)[0],g=$(".tg_page_head")[0],f=$(".footer_wrap")[0],_=$(".im_send_form",o)[0],v=!1,y=!1;onContentLoaded(function(){u.scrollTop=u.scrollHeight}),$(l).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0});var b,w=function(e){t(function(){$(u).hasClass("im_history_to_bottom")||$(l).nanoScroller()},e||0)},k=!1,S=["transform","webkitTransform","MozTransform","msTransform","OTransform"];for(b=0;b<S.length;b++)if(S[b]in d.style){k=S[b];break}var C=!1,M=!1;a.$on("ui_history_append_new",function(e,t){if(!A&&!t.my)return void onContentLoaded(function(){$(l).nanoScroller()});if(t.idleScroll)return void onContentLoaded(function(){$(l).nanoScroller(),s(!0)});var a,o=C&&!n.idle.isIDLE&&d.clientHeight>0;if(o)a=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){M=!0,$(d).removeClass("im_history_appending"),u.scrollTop=u.scrollHeight,$(d).css(k,"translate(0px, "+(u.scrollHeight-a)+"px)"),$(l).nanoScroller();var e={};e[k]="translate(0px, 0px)",$(d).addClass("im_history_appending"),i($(d),e).then(function(){M=!1,$(d).removeClass("im_history_appending"),c()})}else $(u).removeClass("im_history_to_bottom"),$(p).css({bottom:"",paddingRight:0}),u.scrollTop=u.scrollHeight,c()})}),a.$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),v=!1,y=!1,s()})}),a.$on("ui_history_change_scroll",function(){onContentLoaded(s)}),a.$on("ui_history_focus",function(){A||(u.scrollTop=u.scrollHeight,w(),A=!0)}),a.$on("ui_history_prepend",function(){var e=u.scrollHeight,n=u.scrollTop,i=parseInt($(u).css("paddingRight")),o=u.clientHeight;$(u).addClass("im_history_to_bottom"),u.scrollHeight,$(p).css({bottom:-(e-n-o),paddingRight:i});var r=function(){$(u).removeClass("im_history_to_bottom"),$(p).css({bottom:"",paddingRight:""}),x>=0?s():u.scrollTop=n+u.scrollHeight-e,c(),v=!1,t(function(){u.scrollHeight!=e&&$(u).trigger("scroll")}),clearTimeout(l),d()},l=setTimeout(r,0),d=a.$on("$viewContentLoaded",r)}),a.$on("ui_history_append",function(){var e=u.scrollHeight;onContentLoaded(function(){A=!1,c(),y=!1,x>=0&&s(),t(function(){u.scrollHeight!=e&&$(u).trigger("scroll")})})}),a.$on("ui_panel_update",function(){onContentLoaded(function(){r(),a.$broadcast("ui_message_send"),t(function(){$(u).trigger("scroll")})})}),a.$on("ui_selection_clear",function(){window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty()}),a.$on("ui_editor_resize",r),a.$on("ui_height",function(){onContentLoaded(r)});var A=!0,x=-1;$(u).on("scroll",function(){if(o.is(":visible")&&!$(u).hasClass("im_history_to_bottom")&&!M){var e=u.scrollTop;A=e>=u.scrollHeight-u.clientHeight,x>=0&&x!=e&&(x=-1),!v&&300>=e?(v=!0,a.$emit("history_need_more")):!y&&e>=u.scrollHeight-u.clientHeight-300&&(y=!0,a.$emit("history_need_less"))}}),$(e).on("resize",r),r(),onContentLoaded(r)}return{link:a}}]).directive("mySendForm",["$timeout","$compile","$modalStack","$http","$interpolate","Storage","AppStickersManager","ErrorService",function(e,t,n,i,a,o,s,r){function c(e,i){function c(){o.get("send_ctrlenter").then(function(e){P=!e})}function l(t){return e.$apply(function(){d(),e.draftMessage.send(),I.resetTyping(),y&&y.update()}),cancelEvent(t)}function d(){D&&(I.onChange(),u())}function u(){var t=D.offsetHeight;N!=t&&(N=t,e.$emit("ui_editor_resize"))}function p(e){return 9!=e.keyCode||e.shiftKey||e.ctrlKey||e.metaKey||n.getTop()?void 0:(I.focus(),cancelEvent(e))}function m(){onContentLoaded(function(){I.focus()})}function h(t){r.confirm({type:"FILE_CLIPBOARD_PASTE"}).then(function(){e.draftMessage.files=[t],e.draftMessage.isMedia=!0})}function g(t){var n,i,a=(t.originalEvent||t).clipboardData,o=a&&a.items||[],s=[];for(i=0;i<o.length;i++)"file"==o[i].kind&&(n=o[i].getAsFile(),s.push(n));s.length>0&&r.confirm({type:"FILES_CLIPBOARD_PASTE",files:s}).then(function(){e.draftMessage.files=s,e.draftMessage.isMedia=!0})}function f(t){var n=!1;return _&&1!=_||(_=checkDragEvent(t)?2:1,n=!0),2==_&&(v&&setTimeout(function(){clearTimeout(v),v=!1},0),"dragenter"==t.type||"dragover"==t.type?n&&($(w).hide(),$(C).css({height:M.offsetHeight+2,width:M.offsetWidth}).show()):("drop"==t.type&&e.$apply(function(){e.draftMessage.files=Array.prototype.slice.call(t.originalEvent.dataTransfer.files),e.draftMessage.isMedia=!0}),v=setTimeout(function(){$(C).hide(),$(w).show(),_=!1,v=!1},300))),cancelEvent(t)}var _,v,y,b=$("textarea",i)[0],w=$(".composer_emoji_insert_btn",i)[0],k=$(".composer_emoji_panel",i)[0],S=$("input",i),C=$(".im_send_dropbox_wrap",i)[0],M=$(".im_send_field_wrap",i)[0],A=$(".im_submit",i)[0],x=new EmojiTooltip(w,{getStickers:function(e){s.getStickers().then(function(){s.getStickersImages().then(function(t){e(t)})})},onEmojiSelected:function(t){e.$apply(function(){I.onEmojiSelected(t)})},onStickerSelected:function(t){e.$apply(function(){e.draftMessage.sticker=t})}});k&&(y=new EmojiPanel(k,{onEmojiSelected:function(e){I.onEmojiSelected(e)}}));var E=t('<span class="composer_user_photo" my-peer-photolink="peerID" img-class="composer_user_photo"></span>'),T={},I=new MessageComposer(b,{onTyping:function(){e.$emit("ui_typing")},getSendOnEnter:function(){return P},getPeerImage:function(t,n){if(T[n])return void t.replaceWith(T[n]);var i=e.$new(!0);i.peerID=n,E(i,function(e){T[n]=e,t.replaceWith(e)})},mentions:e.mentions,onMessageSubmit:l,onFilePaste:h}),D=I.richTextareaEl[0];D&&$(D).attr("placeholder",a($(b).attr("placeholder"))(e)).on("keydown keyup",u),S.on("change",function(){var t=this;e.$apply(function(){e.draftMessage.files=Array.prototype.slice.call(t.files),e.draftMessage.isMedia=$(t).hasClass("im_media_attach_input")||Config.Mobile,setTimeout(function(){try{t.value=""}catch(e){}},1e3)})});var P=!0;e.$on("settings_changed",c),c(),$(A).on("mousedown touchstart",l);var N=D&&D.offsetHeight;$(document).on("keydown",p),$("body").on("dragenter dragleave dragover drop",f),$(document).on("paste",g),Config.Navigator.touch||(e.$on("ui_peer_change",m),e.$on("ui_history_focus",m),e.$on("ui_history_change",m)),e.$on("ui_peer_change",I.resetTyping.bind(I)),e.$on("ui_peer_draft",function(){D&&(I.setValue(e.draftMessage.text||""),u()),Config.Navigator.touch||I.focus(),x&&x.hide()}),e.$on("ui_peer_reply",function(){onContentLoaded(function(){e.$emit("ui_editor_resize"),Config.Navigator.touch||I.focus()})}),e.$on("mentions_update",function(){I.onMentionsUpdated()});var U=!1;e.$on("ui_message_before_send",function(){U=!0,d()}),e.$on("ui_message_send",function(){U=!1,Config.Navigator.touch||m()}),e.$on("$destroy",function(){$(document).off("paste",g),$(document).off("keydown",p),$("body").off("dragenter dragleave dragover drop",f),$(A).off("mousedown touchstart"),S.off("change")}),Config.Navigator.touch||m()}return{link:c,scope:{draftMessage:"=",mentions:"="}}}]).directive("myLoadThumb",["MtpApiFileManager","FileManager",function(e,t){function n(n,i,a){var o=0,s=e.getCachedFile(n.thumb&&n.thumb.location&&!n.thumb.location.empty&&n.thumb.location);s&&i.attr("src",t.getUrl(s,"image/jpeg")),n.thumb&&n.thumb.width&&n.thumb.height&&(i.attr("width",n.thumb.width),i.attr("height",n.thumb.height));var r=n.$watchCollection("thumb.location",function(a){n.thumb&&n.thumb.width&&n.thumb.height&&(i.attr("width",n.thumb.width),i.attr("height",n.thumb.height),n.$emit("ui_height"));var s=++o;if(!a||a.empty)return i.attr("src",n.thumb&&n.thumb.placeholder||"img/blank.gif"),void c();var r=e.getCachedFile(a);return r?(i.attr("src",t.getUrl(r,"image/jpeg")),void c()):(i.attr("src")||i.attr("src",n.thumb.placeholder||"img/blank.gif"),void e.downloadSmallFile(n.thumb.location).then(function(e){s==o&&(i.attr("src",t.getUrl(e,"image/jpeg")),c())},function(e){console.log("Download image failed",e,n.thumb.location,i[0]),s==o&&(i.attr("src",n.thumb.placeholder||"img/blank.gif"),c())}))}),c=a.watch?angular.noop:function(){setTimeout(function(){n.$destroy(),r()},0)}}return{link:n,scope:{thumb:"="}}}]).directive("myLoadFullPhoto",["MtpApiFileManager","FileManager","_",function(e,t,n){function i(i,a){var o=$("img",a)[0],s=$(".img_fullsize_with_progress_wrap",a).add(".img_fullsize_progress_wrap",a).add($(o)),r=function(){s.css({width:i.fullPhoto.width,height:i.fullPhoto.height}),i.$emit("ui_height",!0)},c=0;i.$watchCollection("fullPhoto.location",function(){var a=e.getCachedFile(i.thumbLocation),s=++c;if(a?(o.src=t.getUrl(a,"image/jpeg"),r()):o.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",i.fullPhoto.location){var l;if(i.fullPhoto.size){var d={_:"inputFileLocation",volume_id:i.fullPhoto.location.volume_id,local_id:i.fullPhoto.location.local_id,secret:i.fullPhoto.location.secret};l=e.downloadFile(i.fullPhoto.location.dc_id,d,i.fullPhoto.size)}else l=e.downloadSmallFile(i.fullPhoto.location);i.progress={enabled:!0,percent:0},l.then(function(e){s==c&&(i.progress.enabled=!1,o.src=t.getUrl(e,"image/jpeg"),r())},function(e){console.log("Download image failed",e,i.fullPhoto.location),i.progress.enabled=!1,i.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){i.progress.percent=Math.max(1,Math.floor(100*e.done/e.total))})}}),r()}return{link:i,transclude:!0,templateUrl:templateUrl("full_photo"),scope:{fullPhoto:"=",thumbLocation:"="}}}]).directive("myLoadVideo",["$sce","AppVideoManager","ErrorService","_",function(e,t,n,i){function a(e,a){var o=t.downloadVideo(e.video.id);o.then(function(){e.$emit("ui_height"),onContentLoaded(function(){var e=$("video",a)[0];if(e){var t=!1,i=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",i,!0),$(e).on("$destroy",function(){t=!0,e.removeEventListener("error",i)})}})},function(t){console.log("Download video failed",t,e.video),e.error=t&&"FS_BROWSER_UNSUPPORTED"==t.type?{html:i("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:i("error_video_download_failed"),error:t}}),e.$emit("ui_height"),e.$on("$destroy",function(){o.cancel()})}return{link:a,transclude:!0,templateUrl:templateUrl("full_video"),scope:{video:"="}}}]).directive("myLoadGif",["AppDocsManager",function(e){function t(t){var n=!1;t.isActive=!1,t.toggle=function(i){return checkClick(i,!0)?(e.saveDocFile(t.document.id),!1):t.document.url?(t.isActive=!t.isActive,void t.$emit("ui_height")):n?(n.cancel(),void(n=!1)):(n=e.downloadDoc(t.document.id),void n.then(function(){t.isActive=!0,t.$emit("ui_height")}))}}return{link:t,templateUrl:templateUrl("full_gif"),scope:{document:"="}}}]).directive("myLoadSticker",["MtpApiFileManager","FileManager",function(e,t){function n(n,a){var o=$("<img />").appendTo(a),s=function(e){return WebpManager.isWebpSupported()?void o.attr("src",t.getUrl(e,"image/webp")):void t.getByteArray(e).then(function(e){o.attr("src",WebpManager.getPngUrlFromData(e))})};o.css({width:n.document.thumb.width,height:n.document.thumb.height}),a.css({width:n.document.thumb.width,height:n.document.thumb.height});var r=n.document.thumb.location,c={_:"inputDocumentFileLocation",id:n.document.id,access_hash:n.document.access_hash,dc_id:n.document.dc_id},l=e.getCachedFile(c),d=!1;if(l?d=!0:l=e.getCachedFile(r),l){if(s(l),d)return}else o.attr("src",i);e.downloadFile(n.document.dc_id,c,n.document.size).then(function(e){s(e)},function(e){console.log("Download sticker failed",e,c)})}var i="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";return{link:n,scope:{document:"="}}}]).directive("myLoadDocument",["MtpApiFileManager","AppDocsManager","FileManager",function(e,t,n){function i(e,t){for(;e&&!$(e).hasClass("modal-dialog");)e=e.parentNode;e&&$(e).width(t+(Config.Mobile?0:32))}function a(a,o){var s=$(".document_fullsize_with_progress_wrap",o),r=$(".document_fullsize_wrap",o),c=$(".document_fullsize_img",o),l=$(window).width()-(Config.Mobile?20:32),d=$(window).height()-150;l>800&&(l-=208),a.imageWidth=l,a.imageHeight=d;var u=a.document.thumb;if(u&&"photoSizeEmpty"!=u._){var p=calcImageInBox(u.width,u.height,l,d);a.imageWidth=p.w,a.imageHeight=p.h;var m=e.getCachedFile(u.location);m&&(a.thumbSrc=n.getUrl(m,"image/jpeg"))}a.frameWidth=Math.max(a.imageWidth,Math.min(600,l)),a.frameHeight=a.imageHeight,onContentLoaded(function(){a.$emit("ui_height")}),i(o[0],a.frameWidth);var h,g,f;t.downloadDoc(a.document.id).then(function(e){var t=n.getUrl(e,a.document.mime_type),i=new Image,o=100,u=function(){if(i.height&&i.width||!--o){g=i.width,f=i.height,clearInterval(h);var e=calcImageInBox(i.width,i.height,l,d,!0),n={w:g,h:f};e.w>=n.w&&e.h>=n.h&&(n.w*=4,n.h*=4);var u=!0;a.toggleZoom=function(){u=!u;var t=(u?n:e).w,i=(u?n:e).h;c.css({width:t,height:i,marginTop:a.frameHeight>i?Math.floor((a.frameHeight-i)/2):0}),r.toggleClass("document_fullsize_zoomed",u)},a.toggleZoom(!1),c.attr("src",t),s.hide(),r.css({width:a.frameWidth,height:a.frameHeight}).show()}};h=setInterval(u,20),i.onload=u,i.src=t,setZeroTimeout(u)})}return{link:a,templateUrl:templateUrl("full_document"),scope:{document:"=myLoadDocument"}}}]).directive("myGeoPointMap",["ExternalResourcesManager",function(e){function t(t,n){var i=n.attr("width")||200,a=n.attr("height")||200;n.attr("src","img/blank.gif");var o=Config.ExtCredentials.gmaps.api_key,s="https://maps.googleapis.com/maps/api/staticmap?sensor=false&center="+t.point.lat+","+t.point["long"]+"&zoom=15&size="+i+"x"+a+"&scale=2&key="+o;e.downloadImage(s).then(function(e){n.attr("src",e)})}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,i="Webkit Moz O ms Khtml".split(" ");for(t=0;t<i.length;t++)if(void 0!==e.style[i[t]+"AnimationName"]){n=!0;break}}return n}return{link:e};var n}]).directive("myFocused",function(){return{link:function(e,t){return Config.Navigator.touch?!1:void setTimeout(function(){setFieldSelection(t[0])},100)}}}).directive("myFocusOn",function(){return{link:function(e,t,n){e.$on(n.myFocusOn,function(){return Config.Navigator.touch?!1:void onContentLoaded(function(){setFieldSelection(t[0])})})}}}).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 i=function(t){var i=t.target;if(!i||"INPUT"!=i.tagName&&"TEXTAREA"!=i.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",i),e.$on("$destroy",function(){$(document).off("keydown",i)})}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],i=!1;$(n).on("scroll",function(){t.is(":visible")&&!i&&n.scrollTop>=n.scrollHeight-n.clientHeight-300&&(i=!0,e.$apply(function(){e.slice.limit+=e.slice.limitDelta||20}),onContentLoaded(function(){i=!1,$(t).nanoScroller()}))})}return{link:e,scope:!0}}).directive("myModalPosition",["$window","$timeout",function(e,t){function n(n,i,a){var o=function(){if(!Config.Mobile||!$(i[0].parentNode.parentNode.parentNode).hasClass("mobile_modal")){var e=i[0].parentNode.offsetHeight,n=i[0].parentNode.parentNode.parentNode,o=$(".media_modal_bottom_panel_wrap",n)[0],s=n.offsetHeight-(o&&o.offsetHeight||0);s>e?$(i[0].parentNode).css("marginTop",(s-e)/2):$(i[0].parentNode).css("marginTop",""),"no"!=a.animation&&t(function(){$(i[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,i){var a="true"===i.padding,o=0,s=function(){var s=n[0].offsetHeight,r=s-(s&&a?2*o:0),c=i.myVerticalPosition&&parseFloat(i.myVerticalPosition)||.5,l=i.contHeight?t.$eval(i.contHeight):$(e).height(),d=l>r?parseInt((l-r)*c):"",u=a?{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("myUserLink",["$timeout","AppUsersManager",function(e,t){function n(e,n,i){var a,o=i.userOverride&&e.$eval(i.userOverride)||{},s=i.short&&e.$eval(i.short),r=function(){var r=t.getUser(a),c=s?"rFirstName":"rFullName";n.html((o[c]||r[c]||"").valueOf()),i.color&&e.$eval(i.color)&&n.addClass("user_color_"+r.num)};"A"==n[0].tagName&&n.on("click",function(){t.openUser(a,o)}),i.userWatch?e.$watch(i.myUserLink,function(e){a=e,r()}):(a=e.$eval(i.myUserLink),r()),i.noWatch||e.$on("user_update",function(e,t){a==t&&r()})}return{link:n}}]).directive("myUserStatus",["$filter","AppUsersManager",function(e,t){function n(){angular.forEach(s,function(e){e()})}function i(e,n,i){var r,c=o++,l=function(){var e=t.getUser(r);n.html(a(e)).toggleClass("status_online",e.status&&"userStatusOnline"==e.status._)};e.$watch(i.myUserStatus,function(e){r=e,l()}),e.$on("user_update",function(e,t){r==t&&l()}),s[c]=l,e.$on("$destroy",function(){delete s[c]})}var a=e("userStatus"),o=0,s={};return setInterval(n,9e4),{link:i}}]).directive("myChatLink",["$timeout","AppChatsManager",function(e,t){function n(e,n,i){var a,o=function(){var e=t.getChat(a);n.html((e.rTitle||"").valueOf())};"A"==n[0].tagName&&n.on("click",function(){t.openChat(a)}),i.chatWatch?e.$watch(i.myChatLink,function(e){a=e,o()}):(a=e.$eval(i.myChatLink),o()),e.$on("chat_update",function(e,t){a==t&&o()})}return{link:n}}]).directive("myChatStatus",["$rootScope","_","MtpApiManager","AppChatsManager","AppUsersManager",function(e,t,n,i,a){function o(){angular.forEach(c,function(e){e()})}function s(n,o,s){var p,m=r++,h=0,g={},f=function(){h=0,g={},p&&i.getChatFull(p).then(function(e){var t=(e.participants||{}).participants||[];h=t.length,angular.forEach(t,function(e){g[e.user_id]=!0}),_()})},_=function(){var e=l(h),n=0,i=!1;angular.forEach(g,function(e,t){var o=a.getUser(t);o.status&&"userStatusOnline"==o.status._&&(o.id==u&&(i=!0),n++)}),(n>1||1==n&&!i)&&(e=t("group_modal_participants",{total:e,online:d(n)})),n||h||(e=""),o.html(e)};n.$watch(s.myChatStatus,function(e){p=e,f()}),e.$on("chat_full_update",function(e,t){p==t&&f()}),e.$on("user_update",function(e,t){g[t]&&_()}),c[m]=_,n.$on("$destroy",function(){delete c[m]})}var r=0,c={},l=t.pluralize("group_modal_pluralize_participants"),d=t.pluralize("group_modal_pluralize_online_participants"),u=0;return n.getUserID().then(function(e){u=e}),setInterval(o,9e4),{link:s}}]).directive("myUserPhotolink",["AppUsersManager",function(e){function t(t,n,i){var a=t.$eval(i.myUserPhotolink);t.photo=e.getUserPhoto(a,"User"),(t.showStatus=i.status&&t.$eval(i.status))&&(t.user=e.getUser(a)),"A"==n[0].tagName&&n.on("click",function(){e.openUser(a,i.userOverride&&t.$eval(i.userOverride))}),i.imgClass&&$(n[0].firstChild).addClass(i.imgClass)}return{link:t,template:'<img my-load-thumb thumb="photo" /><i class="icon icon-online" ng-if="::showStatus || false" ng-show="user.status._ == \'userStatusOnline\'"></i>'}}]).directive("myPeerPhotolink",["AppPeersManager","AppUsersManager","AppChatsManager","MtpApiFileManager","FileManager",function(e,t,n,i,a){function o(o,s,r){s.addClass("peer_photo_init");var c,l,d,u=$('<img class="'+(r.imgClass||"")+'">'),p=$('<span class="peer_initials '+(r.imgClass||"")+'"></span>'),m=0,h=!1,g=function(t){if(c==t)return!1;c=t,l=e.getPeer(c);var n="user_bgcolor_"+(l.num||1);return n!=h&&(h&&p.removeClass(h),p.addClass(n),h=n),f(),!0},f=function(){var e=++m;d=l.photo&&angular.copy(l.photo.photo_small);var t=void 0!==d;if(t){var n=i.getCachedFile(l.photo.photo_small);if(n)return p.remove(),void u.prependTo(s).attr("src",a.getUrl(n,"image/jpeg"))}p.text(l.initials).prependTo(s),u.remove(),t&&i.downloadSmallFile(l.photo.photo_small).then(function(t){e==m&&(p.remove(),u.prependTo(s).attr("src",a.getUrl(t,"image/jpeg")))},function(e){console.log("Download image failed",e,l.photo.photo_small,s[0])})};"A"!=s[0].tagName||r.noOpen||s.on("click",function(){c>0?t.openUser(c,r.userOverride&&o.$eval(r.userOverride)):n.openChat(-c)}),o.$watch(r.myPeerPhotolink,g),r.watch&&(o.$on("user_update",function(e,t){c==t&&(angular.equals(l.photo&&l.photo.photo_small,d)||f())}),o.$on("chat_update",function(e,t){c==-t&&(angular.equals(l.photo&&l.photo.photo_small,d)||f())}))}return{link:o}}]).directive("myAudioPlayer",["$timeout","$q","Storage","AppAudioManager","AppDocsManager","AppMessagesManager","ErrorService",function(e,t,n,i,a,o,s){function r(e){return e===l?!1:(l&&l.pause(),void(l=e))}function c(e,t){"audio"==e.audio._?i.updateAudioDownloaded(e.audio.id):a.updateDocDownloaded(e.audio.id),e.volume=d,e.mediaPlayer={},e.download=function(){"audio"==e.audio._?i.saveAudioFile(e.audio.id):a.saveDocFile(e.audio.id)},e.togglePlay=function(){if(e.audio.url)r(e.mediaPlayer.player),e.mediaPlayer.player.playPause();else{if(e.audio.progress&&e.audio.progress.enabled)return;var n;n="audio"==e.audio._?i.downloadAudio(e.audio.id):a.downloadDoc(e.audio.id),n.then(function(){onContentLoaded(function(){var n=$("audio",t)[0]||t[0];if(n){var i=!1,a=function(e){i||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||(i=!0,s.show({error:{type:"MEDIA_TYPE_NOT_SUPPORTED",originalError:e.target&&e.target.error}}))};n.addEventListener("error",a,!0),e.$on("$destroy",function(){i=!0,n.removeEventListener("error",a)})}setTimeout(function(){r(e.mediaPlayer.player),e.mediaPlayer.player.setVolume(d),e.mediaPlayer.player.play(),e.message&&!e.message.out&&e.message.media_unread&&o.readMessages([e.message.id])},300)})})}},e.seek=function(t){e.mediaPlayer&&e.mediaPlayer.player?e.mediaPlayer.player.seek(t):e.togglePlay()},e.setVolume=function(t){d=t,n.set({audio_volume:t}),e.mediaPlayer&&e.mediaPlayer.player&&e.mediaPlayer.player.setVolume(t)}}var l=!1,d=.5;n.get("audio_volume").then(function(e){e>0&&1>=e&&(d=e)});return{link:c,scope:{audio:"=",message:"="},templateUrl:templateUrl("audio_player")}}]).directive("mySlider",["$window",function(e){function t(t,n,i){var a=$(".tg_slider_wrap",n),o=$(".tg_slider_track_fill",n),s=$(".tg_slider_thumb",n),r=a.width(),c=Math.ceil(s.width()),l=i.sliderModel,d=i.sliderOnchange,u=0,p=1,m=!1,h=!1;i.sliderMin&&t.$watch(i.sliderMin,function(e){u=e||0}),i.sliderMax&&t.$watch(i.sliderMax,function(e){p=e||1});var g=function(e){e=e.originalEvent||e;var n=(e.touches&&e.touches[0]?e.touches[0].pageX:e.pageX)-h;return n=Math.min(r,Math.max(0,n)),m=u+n/r*(p-u),d?t.$eval(d,{value:m}):t.$eval(l+"="+m),s.css("left",Math.max(0,n-c)),o.css("width",n),cancelEvent(e)},f=function(){$(e).off("mousemove touchmove",g),$(e).off("mouseup touchend touchcancel touchleave",f)};t.$watch(l,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-c)),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(i){if(!r&&(r=a.width(),!r))return console.error("empty width"),cancelEvent(i);f(),i=i.originalEvent||i;var _;if(i.touches&&i.touches[0])h=n.position().left,_=i.touches[0].pageX-h;else if(void 0!==i.offsetX)_=i.offsetX,h=i.pageX-_;else{if(void 0===i.layerX)return cancelEvent(i);_=i.layerX,h=i.pageX-_}return m=u+_/r*(p-u),d?t.$eval(d,{value:m}):t.$eval(l+"="+m),s.css("left",Math.max(0,_-c)),o.css("width",_),$(e).on("mousemove touchmove",g),$(e).on("mouseup touchend touchcancel touchleave",f),cancelEvent(i)})}return{link:t,templateUrl:templateUrl("slider")}}]).directive("myLabeledInput",function(){function e(e,t){var n=$(".md-input:first",t),i=($(".md-input-label:first",t),n[0]&&"SPAN"==n[0].tagName),a=!1,o=function(){i?t.toggleClass("md-input-has-value",n.html().length>0):t.toggleClass("md-input-has-value",a||n.val().length>0)};o(),onContentLoaded(function(){o(),setZeroTimeout(function(){t.addClass("md-input-animated")})}),i||n.on("blur focus change",function(e){a="focus"==e.type,t.toggleClass("md-input-focused",a),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("myScrollToOn",function(){return{link:function(e,t,n){var i=n.myScrollToOn,a=function(){onContentLoaded(function(){$("html, body").animate({scrollTop:t.offset().top},200)})};"$init"==i?a():e.$on(i,a)}}}),angular.module("myApp.directives").directive("myDialogsListMobile",["$window","$timeout",function(e,t){function n(n,i,a){function o(){return d&&d.offsetHeight||(d=$(l)[0]),a.modal?void $(i).css({height:$(e).height()-(d?d.offsetHeight:58)-46}):(c&&c.offsetHeight||(c=$(".tg_page_head")[0]),s&&s.offsetHeight||(s=$(".im_dialogs_col_wrap")[0]),void $(i).css({height:$(e).height()-(c?c.offsetHeight:46)-(d?d.offsetHeight:58)-parseInt($(s).css("paddingBottom")||0)}))}var s=$(".im_dialogs_col_wrap")[0],r=i[0],c=$(".tg_page_head")[0],l=a.modal?".mobile_modal_body .im_dialogs_panel":".im_dialogs_panel",d=$(l)[0],u=!1,p=!1;n.$on("ui_dialogs_tabs",function(e,t){u=t,o()}),n.$on("ui_dialogs_search",o),n.$on("ui_dialogs_update",o),n.$on("ui_dialogs_append",function(){onContentLoaded(function(){p=!1,t(function(){$(r).trigger("scroll")})})}),n.$on("ui_dialogs_change",function(){onContentLoaded(function(){p=!1,t(function(){$(r).trigger("scroll")})})}),$(r).on("scroll",function(){i.is(":visible")&&!p&&r.scrollTop>=r.scrollHeight-r.clientHeight-300&&(n.$emit("dialogs_need_more"),p=!0)}),$(e).on("resize",o),o(),setTimeout(o,1e3)}return{link:n}}]).directive("myHistoryMobile",["$window","$timeout","$rootScope","$transition",function(e,t){function n(n,i){function a(){var e,n;if(n=$(".im_message_focus:visible",c)[0]){var i=c.clientHeight,a=c.scrollTop,o=n.offsetTop,s=n.clientHeight;(!a||o>a+i||a>o+s)&&(c.scrollTop=Math.max(0,o-Math.floor(i/2)+26)),f=!1}else(e=$(".im_message_unread_split:visible",c)[0])?(c.scrollTop=Math.max(0,e.offsetTop-52),f=!1):(c.scrollTop=c.scrollHeight,f=!0);t(function(){$(c).trigger("scroll"),_=c.scrollTop})}function o(t){if(i.is(":visible")||$(i[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(){c.scrollTop=c.scrollHeight})}}function s(){return}var r=$(".im_history_wrap",i)[0],c=($(".im_history_messages",i)[0],$(".im_history_scrollable_wrap",i)[0]),l=$(".im_history_scrollable",i)[0],d=$(".im_bottom_panel_wrap",i)[0],u=$(".im_send_form_wrap",i)[0],p=$(".tg_page_head")[0],m=$(".im_send_form",i)[0],h=!1,g=!1;onContentLoaded(function(){c.scrollTop=c.scrollHeight}),n.$on("ui_history_append_new",function(e,t){if(f||t.my){var n=parseInt($(c).css("paddingRight"));$(c).addClass("im_history_to_bottom"),$(l).css({bottom:0,marginLeft:-Math.ceil(n/2)}),onContentLoaded(function(){$(c).removeClass("im_history_to_bottom"),$(l).css({bottom:"",marginLeft:""}),c.scrollTop=c.scrollHeight,s()})}}),n.$on("ui_history_change",function(){var e=parseInt($(c).css("paddingRight"));$(c).addClass("im_history_to_bottom"),$(l).css({bottom:0,marginLeft:-Math.ceil(e/2)}),onContentLoaded(function(){$(c).removeClass("im_history_to_bottom"),$(l).css({bottom:"",marginLeft:""}),o(!0),h=!1,g=!1,a()})}),n.$on("ui_history_change_scroll",function(){onContentLoaded(a)}),n.$on("ui_history_focus",function(){f||(c.scrollTop=c.scrollHeight,f=!0)}),n.$on("ui_history_prepend",function(){var e=c.scrollHeight,i=c.scrollTop,o=parseInt($(c).css("paddingRight")),r=c.clientHeight;$(c).addClass("im_history_to_bottom"),c.scrollHeight,$(l).css({bottom:-(e-i-r),marginLeft:-Math.ceil(o/2)});var d=function(){$(c).removeClass("im_history_to_bottom"),$(l).css({bottom:"",marginLeft:""}),_>=0?a():c.scrollTop=i+c.scrollHeight-e,s(),h=!1,t(function(){c.scrollHeight!=e&&$(c).trigger("scroll")}),clearTimeout(u),p()},u=setTimeout(d,0),p=n.$on("$viewContentLoaded",d)}),n.$on("ui_history_append",function(){var e=c.scrollHeight;onContentLoaded(function(){f=!1,s(),g=!1,_>=0&&a(),t(function(){c.scrollHeight!=e&&$(c).trigger("scroll")})})}),n.$on("ui_panel_update",function(){onContentLoaded(function(){o(),n.$broadcast("ui_message_send"),t(function(){$(c).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;$(c).on("scroll",function(){if(i.is(":visible")&&!$(c).hasClass("im_history_to_bottom")){var e=c.scrollTop;f=e>=c.scrollHeight-c.clientHeight,_>=0&&_!=e&&(_=-1),!h&&300>=e?(h=!0,n.$emit("history_need_more")):!g&&e>=c.scrollHeight-c.clientHeight-300&&(g=!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 i(){$(n).css({height:$(e).height()-(o&&o.offsetHeight||0)-(a&&a.offsetHeight||0)-64})}var a=$(".contacts_modal_search")[0],o=$(".contacts_modal_panel")[0];$(e).on("resize",i),t.$on("contacts_change",function(){onContentLoaded(i)}),onContentLoaded(i)}return{link:t}}]).directive("myCountriesListMobile",["$window","$timeout",function(e){function t(t,n){function i(){$(n).css({height:$(e).height()-(o&&o.offsetHeight||0)-(a&&a.offsetHeight||0)-64})}var a=$(".countries_modal_search")[0],o=$(".countries_modal_panel")[0];$(e).on("resize",i),onContentLoaded(i)}return{link:t}}]).directive("myInfiniteScrollerMobile",function(){function e(e,t){var n=t[0],i=!1;$(n).on("scroll",function(){t.is(":visible")&&!i&&n.scrollTop>=n.scrollHeight-n.clientHeight-300&&(i=!0,e.$apply(function(){e.slice.limit+=e.slice.limitDelta||20}),onContentLoaded(function(){i=!1}))})}return{link:e,scope:!0}});